@@ -949,7 +949,8 @@ void hvmloader_acpi_build_tables(struct acpi_config *config,
config->table_flags |= ACPI_HAS_SSDT_S4;
config->table_flags |= (ACPI_HAS_TCPA | ACPI_HAS_IOAPIC |
- ACPI_HAS_WAET | ACPI_HAS_PMTIMER);
+ ACPI_HAS_WAET | ACPI_HAS_PMTIMER |
+ ACPI_HAS_BUTTONS);
config->tis_hdr = (uint16_t *)ACPI_TIS_HDR_ADDRESS;
@@ -579,6 +579,8 @@ int acpi_build_tables(struct acpi_ctxt *ctxt, struct acpi_config *config)
Fadt.pm_tmr_blk = Fadt.pm_tmr_len = 0;
memset(&Fadt.x_pm_tmr_blk, 0, sizeof(Fadt.x_pm_tmr_blk));
}
+ if ( !(config->table_flags & ACPI_HAS_BUTTONS) )
+ Fadt.flags |= (ACPI_PWR_BUTTON | ACPI_SLP_BUTTON);
memcpy(fadt, &Fadt, sizeof(struct acpi_20_fadt));
fadt->dsdt = ctxt->mem_ops.v2p(ctxt, dsdt);
fadt->x_dsdt = ctxt->mem_ops.v2p(ctxt, dsdt);
@@ -31,6 +31,7 @@
#define ACPI_HAS_IOAPIC (1<<8)
#define ACPI_HAS_WAET (1<<9)
#define ACPI_HAS_PMTIMER (1<<10)
+#define ACPI_HAS_BUTTONS (1<<11)
struct xen_vmemrange;
struct acpi_numa {