qemu-e2k/hw
Laszlo Ersek f070efa8d9 hw/i386: fill in the CENTURY field of the FADT (FACP) ACPI table
The ACPI specification (minimally versions 1.0b through 6.0) define the
FADT.CENTURY field as:

  The RTC CMOS RAM index to the century of data value (hundred and
  thousand year decimals). If this field contains a zero, then the RTC
  centenary feature is not supported. If this field has a non-zero value,
  then this field contains an index into RTC RAM space that OSPM can use
  to program the centenary field.

The x86 targets generate ACPI payload, emulate an RTC
(CONFIG_MC146818RTC), and that RTC supports the "centenary feature" (see
occurrences of RTC_CENTURY in cmos_ioport_write() and cmos_ioport_read()
in "hw/timer/mc146818rtc.c".)

However, FADT.CENTURY is left at zero currently:

  [06Ch 0108   1]            RTC Century Index : 00

which -- according to analysis done by Ruiyu Ni at Intel -- should cause
Linux and Windows 8+ to think the RTC centenary feature is unavailable,
and cause Windows 7 to (incorrectly) assume that the offset to use is
constant 0x32. (0x32 happens to be the right value on QEMU, but Windows 7
is wrong to assume anything at all).

Exposing the right nonzero offset in FADT.CENTURY informs Linux and
Windows 8+ about the right capabilities of the hardware, plus it retrofits
our FADT to Windows 7's behavior.

Regression tested with the following guests (all UEFI installs):
- i386 Q35: Fedora 21 ("Fedlet" edition)
- x86_64:
  - i440fx:
    - Fedora 21
    - RHEL 6 and 7
    - Windows 7 and 10
    - Windows Server 2008 R2 and 2012 R2
  - Q35:
    - Fedora 22
    - Windows 8.1

Cc: "Michael S. Tsirkin" <mst@redhat.com> (supporter:ACPI/SMBIOS)
Cc: Igor Mammedov <imammedo@redhat.com> (supporter:ACPI/SMBIOS)
Cc: Paolo Bonzini <pbonzini@redhat.com> (maintainer:X86)
Cc: Richard Henderson <rth@twiddle.net> (maintainer:X86)
Cc: Eduardo Habkost <ehabkost@redhat.com> (maintainer:X86)
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
2016-01-08 16:01:37 +02:00
..
9pfs virtio-9p: use accessor to get thread_pool 2015-12-23 10:56:58 +01:00
acpi nvdimm: fix header pointer in nvdimm_build_nfit() 2016-01-08 16:01:37 +02:00
alpha alpha: convert "naked" qemu_log to tracepoint 2015-12-17 17:33:47 +01:00
arm acpi: extend aml_and() to accept target argument 2015-12-22 18:39:21 +02:00
audio
block block: Rename BLOCK_OP_TYPE_MIRROR to BLOCK_OP_TYPE_MIRROR_SOURCE 2016-01-07 21:30:17 +01:00
bt bt: avoid unintended sign extension 2015-12-04 09:39:55 +03:00
char cris: avoid "naked" qemu_log 2015-12-17 17:33:47 +01:00
core pc: Move option_rom_has_mr/rom_file_has_mr globals to MachineClass 2015-12-22 17:45:12 +02:00
cpu
cris
display ui/curses: Fix color attribute of monitor for curses 2016-01-08 12:20:07 +01:00
dma arm: soc-dma: use hwaddr instead of target_ulong in printf 2015-12-17 13:37:13 +00:00
gpio i.MX: add support for lower and upper interrupt in GPIO. 2015-12-17 13:37:13 +00:00
i2c
i386 hw/i386: fill in the CENTURY field of the FADT (FACP) ACPI table 2016-01-08 16:01:37 +02:00
ide atapi: Fix code indentation 2015-11-24 14:56:49 -05:00
input qapi: Change munging of CamelCase enum values 2015-12-17 08:21:28 +01:00
intc kvm: x86: add support for KVM_CAP_SPLIT_IRQCHIP 2015-12-17 17:33:47 +01:00
ipack
ipmi ipmi: Add a force off function 2015-12-22 18:39:19 +02:00
isa
lm32
m68k
mem nvdimm: implement NVDIMM device abstract 2015-12-22 18:39:20 +02:00
microblaze petalogix-ml605: Set the MicroBlaze CPU version to 8.10.a 2016-01-07 14:57:26 +01:00
mips gt64xxx: fix decoding of ISD register 2015-12-04 09:39:55 +03:00
misc hw/misc: Hyper-V test device 'hyperv-testdev' 2015-12-17 15:24:35 +01:00
moxie
net -----BEGIN PGP SIGNATURE----- 2015-12-07 14:18:31 +00:00
nvram fw_cfg: replace ioport data read with generic method 2015-12-15 11:46:13 +01:00
openrisc
pci
pci-bridge hw/pxb: introduce pxb-pcie expander for PCIe machines 2015-12-22 17:45:13 +02:00
pci-host igd-passthrough: fix use of host_pci_config_read 2016-01-08 16:01:37 +02:00
pcmcia
ppc spapr_drc: Change value of property "fdt" from null back to {} 2015-12-04 16:50:59 +11:00
s390x virtio: handle non-virtio-1-capable backend for ccw 2015-12-02 19:34:11 +02:00
scsi scsi: always call notifier on async cancellation 2015-12-17 17:33:49 +01:00
sd sdhci: add optional quirk property to disable card insertion/removal interrupts 2015-12-22 16:34:26 +08:00
sh4
smbios
sparc
sparc64 sun4u: split NPT and INT_DIS accesses between timer and compare registers 2016-01-07 12:21:02 +00:00
ssi
timer i.MX: rename i.MX CCM get_clock() function and CLK ID enum names 2015-12-17 13:37:15 +00:00
tpm tpm: avoid clang shifting negative signed warning 2015-11-17 18:35:56 +08:00
tricore
unicore32
usb ohci: clear pending SOF on suspend 2016-01-08 09:29:24 +01:00
vfio
virtio virtio-pci: Set the QEMU_PCI_CAP_EXPRESS capability early in its DeviceClass realize method 2015-12-02 21:51:33 +02:00
watchdog
xen xen/pass-through: correctly deal with RW1C bits 2015-12-09 15:47:28 +00:00
xenpv xen: fix usage of xc_domain_create in domain builder 2015-11-13 17:38:06 +00:00
xtensa
Makefile.objs Add a base IPMI interface 2015-12-22 18:39:19 +02:00