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 _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/virtualization