hv: vacpi: add fadt table support

Add FADT table support to support guest S5 setting.

According to ACPI 6.3 Spec, OSPM must ignored the DSDT and FACS fields if them're zero.
However, Linux kernel seems not to abide by the protocol, it will check DSDT still.
So add an empty DSDT to meet it.

Tracked-On: #4623
Signed-off-by: Li Fei1 <fei1.li@intel.com>
This commit is contained in:
Li Fei1
2020-04-21 11:52:41 +08:00
committed by wenlingz
parent 9f036cff6a
commit 4eb3f5a0c7
3 changed files with 79 additions and 7 deletions

View File

@@ -34,13 +34,17 @@
* ------
* RSDP -> 0xf2400 (36 bytes fixed)
* XSDT -> 0xf2480 (36 bytes + 8*7 table addrs, 4 used)
* MADT -> 0xf2500 (depends on #CPUs)
* FADT -> 0xf2500 (244 bytes fixed for ACPI 2.0)
* DSDT -> 0xf2600 (36 bytes fixed for an empty DSDT)
* MADT -> 0xf2740 (depends on #CPUs)
*/
#define ACPI_BASE 0xf2400U
#define ACPI_RSDP_ADDR (ACPI_BASE + 0x0U)
#define ACPI_XSDT_ADDR (ACPI_BASE + 0x080U)
#define ACPI_MADT_ADDR (ACPI_BASE + 0x100U)
#define ACPI_FADT_ADDR (ACPI_BASE + 0x100U)
#define ACPI_DSDT_ADDR (ACPI_BASE + 0x200U)
#define ACPI_MADT_ADDR (ACPI_BASE + 0x340U)
#define ACPI_OEM_ID "ACRN "
#define ACPI_ASL_COMPILER_ID "INTL"
@@ -52,6 +56,8 @@ struct acpi_table_info {
struct acpi_table_xsdt xsdt;
struct {
struct acpi_table_fadt fadt;
struct acpi_table_header dsdt; /* an empty DSDT */
struct acpi_table_madt madt;
struct acpi_madt_local_apic_nmi lapic_nmi;
struct acpi_madt_local_apic lapic_array[MAX_PCPU_NUM];