Re: [PATCH 9/10] Vmi timer update.patch

From: Zachary Amsden
Date: Wed Apr 11 2007 - 21:22:26 EST


Chris Wright wrote:
* Zachary Amsden (zach@xxxxxxxxxx) wrote:
+void __init vmi_time_init(void)
+{
+ /* Disable PIT: BIOSes start PIT CH0 with 18.2hz peridic. */
+ outb_p(0x3a, PIT_MODE); /* binary, mode 5, LSB/MSB, ch 0 */
That shouldn't be necessary using clockevents.
Actually, I'm not so sure. If clockevents simply masks the PIT when disabling it, we still have overhead of keeping the latch in sync, which requires a timer at the PIT frequency. I can instrument to see how exactly the PIT gets disabled.

It should switch from pit to vmi-timer, and the switch should do the state
transistions on pit to go to unused mode.

Ok, here's why we need it: the reason is even more basic. PIT clockevents never get setup; the time_init paravirt-op makes it conditional whether the PIT or VMI timer get invoked. But our BIOS still sets it up to run at 18.2 HZ, like any good BIOS would. We need the disable hack, in fact it is actually a good thing to do for native hardware. Why leave the PIT enabled with junk programming from the BIOS once we are in the protected mode kernel? Eventually, on hardware that doesn't want to use the PIT at all, this might be wanted to conserve power (casually joking but potentially correct argument).

Zach
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/