if ( !strncmp(xenstore_read("platform/acpi_s4", "1"), "1", 1) )
config->table_flags |= ACPI_HAS_SSDT_S4;
- config->table_flags |= (ACPI_HAS_TCPA | ACPI_HAS_IOAPIC | ACPI_HAS_WAET);
+ config->table_flags |= (ACPI_HAS_TCPA | ACPI_HAS_IOAPIC |
+ ACPI_HAS_WAET | ACPI_HAS_PMTIMER);
config->tis_hdr = (uint16_t *)ACPI_TIS_HDR_ADDRESS;
fadt = ctxt->mem_ops.alloc(ctxt, sizeof(struct acpi_20_fadt), 16);
if (!fadt) goto oom;
+ if ( !(config->table_flags & ACPI_HAS_PMTIMER) )
+ {
+ Fadt.pm_tmr_blk = Fadt.pm_tmr_len = 0;
+ memset(&Fadt.x_pm_tmr_blk, 0, sizeof(Fadt.x_pm_tmr_blk));
+ }
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);
#define ACPI_HAS_TCPA (1<<7)
#define ACPI_HAS_IOAPIC (1<<8)
#define ACPI_HAS_WAET (1<<9)
+#define ACPI_HAS_PMTIMER (1<<10)
struct xen_vmemrange;
struct acpi_numa {