This is a multi-part message in MIME format.
Please apply the attached patch for the next Gutsy kernel update.
This issue can sometimes result in the virtual PIT firing when the
kernel doesn't really want it -- it's not fatal, but suboptimal. The
patch affects code that executes only when booted on a VMI hypervisor.
Thanks,
Dan
Initialize the vmi clocksource at late_time_init time rather than initcall time.
Otherwise, the PIT clocksource can have a chance to run as either the main
clocksource or the watchdog. This is problematic because the PIT clocksource
read routine, pit_read(), can have side effects -- it can cause the PIT to
be reprogrammed into periodic mode.
Signed-off-by: Dan Hecht <dhecht@xxxxxxxxxx>
===================================================================
--- a/arch/i386/kernel/vmiclock.c 2007-08-10 16:26:16.000000000 -0700
+++ b/arch/i386/kernel/vmiclock.c 2007-10-25 13:56:34.000000000 -0700
@@ -41,6 +41,8 @@
static DEFINE_PER_CPU(struct clock_event_device, local_events);
+static int __init init_vmi_clocksource(void);
+
static inline u32 vmi_counter(u32 flags)
{
/* Given VMI_ONESHOT or VMI_PERIODIC, return the corresponding
@@ -238,6 +240,7 @@
/* Disable PIT: BIOSes start PIT CH0 with 18.2hz peridic. */
outb_p(0x3a, PIT_MODE); /* binary, mode 5, LSB/MSB, ch 0 */
+ init_vmi_clocksource();
vmi_time_init_clockevent();
setup_irq(0, &vmi_clock_action);
}
@@ -315,4 +318,3 @@
return clocksource_register(&clocksource_vmi);
}
-module_init(init_vmi_clocksource);
|