Message ID | 1478468563-5396-6-git-send-email-boris.ostrovsky@oracle.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sun, Nov 06, 2016 at 04:42:38PM -0500, Boris Ostrovsky wrote: > 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> > --- > tools/firmware/hvmloader/util.c | 3 ++- > tools/libacpi/build.c | 5 +++++ > tools/libacpi/libacpi.h | 1 + > 3 files changed, 8 insertions(+), 1 deletion(-) > > diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c > index 6e0cfe7..1d78973 100644 > --- a/tools/firmware/hvmloader/util.c > +++ b/tools/firmware/hvmloader/util.c > @@ -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; > > diff --git a/tools/libacpi/build.c b/tools/libacpi/build.c > index 47dae01..58822d3 100644 > --- a/tools/libacpi/build.c > +++ b/tools/libacpi/build.c > @@ -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 = 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); > diff --git a/tools/libacpi/libacpi.h b/tools/libacpi/libacpi.h > index 1d388f9..bda692e 100644 > --- a/tools/libacpi/libacpi.h > +++ b/tools/libacpi/libacpi.h > @@ -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 { > -- > 2.7.4 > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > https://lists.xen.org/xen-devel
diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c index 6e0cfe7..1d78973 100644 --- a/tools/firmware/hvmloader/util.c +++ b/tools/firmware/hvmloader/util.c @@ -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; diff --git a/tools/libacpi/build.c b/tools/libacpi/build.c index 47dae01..58822d3 100644 --- a/tools/libacpi/build.c +++ b/tools/libacpi/build.c @@ -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 = 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); diff --git a/tools/libacpi/libacpi.h b/tools/libacpi/libacpi.h index 1d388f9..bda692e 100644 --- a/tools/libacpi/libacpi.h +++ b/tools/libacpi/libacpi.h @@ -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 {
PM timer is not supported by PVH guests. Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> --- tools/firmware/hvmloader/util.c | 3 ++- tools/libacpi/build.c | 5 +++++ tools/libacpi/libacpi.h | 1 + 3 files changed, 8 insertions(+), 1 deletion(-)