mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
hw/i386: Use Rev3 FADT (ACPI 2.0) instead of Rev1 to improve guest OS support.
This updates the FADT generated for x86/64 machine types from Revision 1 to 3. (Based on ACPI standard 2.0 instead of 1.0) The intention is to expose the reset register information to guest operating systems which require it, specifically OS X/macOS. Revision 1 FADTs do not contain the fields relating to the reset register. The new layout and contents remains backwards-compatible with operating systems which only support ACPI 1.0, as the existing fields are not modified by this change, as the 64-bit and 32-bit variants are allowed to co-exist according to the ACPI 2.0 standard. No regressions became apparent in tests with a range of Windows (XP-10) and Linux versions. The BIOS tables test suite's FADT checksum test has also been updated to reflect the new FADT layout and content. Signed-off-by: Phil Dennis-Jordan <phil@philjordan.eu> Message-Id: <1489558827-28971-2-git-send-email-phil@philjordan.eu> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
e619b14746
commit
77af8a2b95
4 changed files with 93 additions and 49 deletions
|
@ -87,6 +87,16 @@ typedef struct {
|
|||
g_assert_cmpstr(ACPI_ASSERT_CMP_str, ==, expected); \
|
||||
} while (0)
|
||||
|
||||
#define ACPI_READ_GENERIC_ADDRESS(field, addr) \
|
||||
do { \
|
||||
ACPI_READ_FIELD((field).space_id, addr); \
|
||||
ACPI_READ_FIELD((field).bit_width, addr); \
|
||||
ACPI_READ_FIELD((field).bit_offset, addr); \
|
||||
ACPI_READ_FIELD((field).access_width, addr); \
|
||||
ACPI_READ_FIELD((field).address, addr); \
|
||||
} while (0);
|
||||
|
||||
|
||||
uint8_t acpi_calc_checksum(const uint8_t *data, int len);
|
||||
uint32_t acpi_find_rsdp_address(void);
|
||||
void acpi_parse_rsdp_table(uint32_t addr, AcpiRsdpDescriptor *rsdp_table);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue