From e4fd0475a08fda414da27c4e57b568f147cfc07e Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Fri, 20 May 2011 09:15:40 +0100 Subject: [PATCH] hvmloader: always include HPET table Windows SVVP tests require an HPET table even if the HPET is disabled. This makes sense since the HPET _is_ in the DSDT and, while the OS does not know that, in principle it's status may change. (For what it's worth SeaBIOS, in addition to doing this, totally ignores QEMU's -no-hpet flag and always reports 0x0f for the HPET's _STA method). Signed-off-by: Paolo Bonzini Signed-off-by: Keir Fraser --- tools/firmware/hvmloader/acpi/build.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/tools/firmware/hvmloader/acpi/build.c b/tools/firmware/hvmloader/acpi/build.c index 747aff69d41c..3a6acbeb09bf 100644 --- a/tools/firmware/hvmloader/acpi/build.c +++ b/tools/firmware/hvmloader/acpi/build.c @@ -189,13 +189,11 @@ static int construct_secondary_tables(uint8_t *buf, unsigned long *table_ptrs) table_ptrs[nr_tables++] = (unsigned long)madt; } - /* HPET. */ - if ( hpet_exists(ACPI_HPET_ADDRESS) ) - { - hpet = (struct acpi_20_hpet *)&buf[offset]; - offset += construct_hpet(hpet); - table_ptrs[nr_tables++] = (unsigned long)hpet; - } + /* HPET. Always included in DSDT, so always include it here too. */ + /* (And it's unconditionally required by Windows SVVP tests.) */ + hpet = (struct acpi_20_hpet *)&buf[offset]; + offset += construct_hpet(hpet); + table_ptrs[nr_tables++] = (unsigned long)hpet; if ( battery_port_exists() ) {