]> xenbits.xensource.com Git - xen.git/commitdiff
acpi: make pmtimer optional in FADT
authorBoris Ostrovsky <boris.ostrovsky@oracle.com>
Fri, 2 Dec 2016 17:06:06 +0000 (18:06 +0100)
committerJan Beulich <jbeulich@suse.com>
Fri, 2 Dec 2016 17:06:06 +0000 (18:06 +0100)
PM timer is not supported by PVH guests.

Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
tools/firmware/hvmloader/util.c
tools/libacpi/build.c
tools/libacpi/libacpi.h

index 6e0cfe74d15339f496a0fa6fee600ef410339a68..1d789736c851d5940cc76b04f14175ac84b2bfac 100644 (file)
@@ -948,7 +948,8 @@ void hvmloader_acpi_build_tables(struct acpi_config *config,
     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;
 
index 47dae01ce6b58c55d45fd8345d63d97dbadc31a9..e1fd381cb151a01118ed7cc84c5eac7a6eb762ec 100644 (file)
@@ -574,6 +574,11 @@ int acpi_build_tables(struct acpi_ctxt *ctxt, struct acpi_config *config)
 
     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);
index 1d388f9e550d808ca75e2da6bb1bd13ca348fcce..bda692ebfa088c29676f58ec9748af271bfaae2b 100644 (file)
@@ -30,6 +30,7 @@
 #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 {