From: Jiang, Yunhong Date: Fri, 28 Oct 2016 23:29:05 +0000 (+0000) Subject: Merge "Fix imprecise timer interrupts by eliminating TSC clockevents frequency round... X-Git-Tag: danube.1.0~28 X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=commitdiff_plain;h=f2e379228d244be691bee350da1cb3d820cb6dfb;hp=c0946a21d3e299d73620b6fee2327f5f0f6ebb32;p=kvmfornfv.git Merge "Fix imprecise timer interrupts by eliminating TSC clockevents frequency roundoff error" --- diff --git a/kernel/arch/x86/kernel/apic/apic.c b/kernel/arch/x86/kernel/apic/apic.c index 2f69e3b18..d2eee3e1b 100644 --- a/kernel/arch/x86/kernel/apic/apic.c +++ b/kernel/arch/x86/kernel/apic/apic.c @@ -305,7 +305,7 @@ int lapic_get_maxlvt(void) /* Clock divisor */ #define APIC_DIVISOR 16 -#define TSC_DIVISOR 32 +#define TSC_DIVISOR 8 /* * This function sets up the local APIC timer, with a timeout of @@ -557,7 +557,7 @@ static void setup_APIC_timer(void) CLOCK_EVT_FEAT_DUMMY); levt->set_next_event = lapic_next_deadline; clockevents_config_and_register(levt, - (tsc_khz / TSC_DIVISOR) * 1000, + tsc_khz * (1000 / TSC_DIVISOR), 0xF, ~0UL); } else clockevents_register_device(levt);