The PIIX4 ACPI controller prior to revision 0x3 contains a bug where
reading of the timer port is unreliable, so the kernel reads it three
times for consistency check.

QEMU does not suffer from that problem :)

The datasheet for PIIX4, PIIX4E, and PIIX4M is the same. I failed to
find any indication that the revision increase could affect anything
other than the PMTimer port read.

This reduces idle guest CPU consumption from 14% to 8% on 4-way KVM
guest.

--- kvm-userspace.orig/qemu/hw/acpi.c
+++ kvm-userspace/qemu/hw/acpi.c
@@ -486,7 +486,7 @@ i2c_bus *piix4_pm_init(PCIBus *bus, int
     pci_conf[0x03] = 0x71;
     pci_conf[0x06] = 0x80;
     pci_conf[0x07] = 0x02;
-    pci_conf[0x08] = 0x00; // revision number
+    pci_conf[0x08] = 0x03; // revision number
     pci_conf[0x09] = 0x00;
     pci_conf[0x0a] = 0x80; // other bridge device
     pci_conf[0x0b] = 0x06; // bridge device



Reply via email to