]> xenbits.xensource.com Git - xen.git/commit
x86/timer: Fix boot on Intel systems using ITSSPRC static PIT clock gating
authorAndrew Cooper <andrew.cooper3@citrix.com>
Thu, 6 Aug 2020 12:00:07 +0000 (13:00 +0100)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Wed, 27 Jan 2021 19:15:19 +0000 (19:15 +0000)
commite1de4c196a2eb4fd5063c30a2e115adf144bdeef
tree9e6c99f25076592f1fcf8bde5002a5d623348272
parent75e1d599130a62f7ab04d384f22359b8e8274410
x86/timer: Fix boot on Intel systems using ITSSPRC static PIT clock gating

Recent Intel client devices have disabled the legacy PIT for powersaving
reasons, breaking compatibility with a traditional IBM PC.  Xen depends on a
legacy timer interrupt to check that the IO-APIC/PIC routing is configured
correctly, and fails to boot with:

  (XEN) *******************************
  (XEN) Panic on CPU 0:
  (XEN) IO-APIC + timer doesn't work!  Boot with apic_verbosity=debug and send report.  Then try booting with the `noapic` option
  (XEN) *******************************

While this setting can be undone by Xen, the details of how to differ by
chipset, and would be very short sighted for battery based devices.  See bit 2
"8254 Static Clock Gating Enable" in:

  https://edc.intel.com/content/www/us/en/design/products-and-solutions/processors-and-chipsets/comet-lake-u/intel-400-series-chipset-on-package-platform-controller-hub-register-database/itss-power-reduction-control-itssprc-offset-3300/

All impacted systems have an HPET, but there is no indication of the absence
of PIT functionality, nor a suitable way to probe for its absence.  As a short
term fix, reconfigure the HPET into legacy replacement mode.  A better
longterm fix would be to avoid the reliance on the timer interrupt entirely.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Tested-by: Jason Andryuk <jandryuk@gmail.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
xen/arch/x86/hpet.c