[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3] xen/x86/pvh: handle ACPI RSDT table in PVH Dom0 build
I sent v4 here: https://marc.info/?l=xen-devel&m=172610400409473 On Tue, 10 Sep 2024, Roger Pau Monné wrote: > Ping? > > I think this is a useful change, could we please have a new version > with the proposed adjustments? > > Thanks, Roger. > > On Wed, Apr 24, 2024 at 03:18:26PM -0400, Daniel P. Smith wrote: > > From: Stefano Stabellini <stefano.stabellini@xxxxxxx> > > > > Xen always generates as XSDT table even if the firmware provided an RSDT > > table. > > Copy the RSDT header from the firmware table, adjusting the signature, for > > the > > XSDT table when not provided by the firmware. > > > > Fixes: 1d74282c455f ('x86: setup PVHv2 Dom0 ACPI tables') > > Suggested-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> > > Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxx> > > Signed-off-by: Daniel P. Smith <dpsmith@xxxxxxxxxxxxxxxxxxxx> > > --- > > > > This patch is used for development and testing of hyperlaunch using the QEMU > > emulator. After dicussiong with Stefano, he was okay with me addressing > > Jan's > > comment regarding the table signature and reposting for acceptance. > > > > Changes in v3: > > - ensure the constructed XSDT table always has the correct signature > > > > --- > > xen/arch/x86/hvm/dom0_build.c | 14 +++++++++++++- > > 1 file changed, 13 insertions(+), 1 deletion(-) > > > > diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c > > index ac71d43a6b3f..781aac00fe72 100644 > > --- a/xen/arch/x86/hvm/dom0_build.c > > +++ b/xen/arch/x86/hvm/dom0_build.c > > @@ -1077,7 +1077,16 @@ static int __init pvh_setup_acpi_xsdt(struct domain > > *d, paddr_t madt_addr, > > rc = -EINVAL; > > goto out; > > } > > - xsdt_paddr = rsdp->xsdt_physical_address; > > + /* > > + * Note the header is the same for both RSDT and XSDT, so it's fine to > > + * copy the native RSDT header to the Xen crafted XSDT if no native > > + * XSDT is available. > > + */ > > + if ( rsdp->revision > 1 && rsdp->xsdt_physical_address ) > > + xsdt_paddr = rsdp->xsdt_physical_address; > > + else > > + xsdt_paddr = rsdp->rsdt_physical_address; > > + > > acpi_os_unmap_memory(rsdp, sizeof(*rsdp)); > > table = acpi_os_map_memory(xsdt_paddr, sizeof(*table)); > > if ( !table ) > > @@ -1089,6 +1098,9 @@ static int __init pvh_setup_acpi_xsdt(struct domain > > *d, paddr_t madt_addr, > > xsdt->header = *table; > > acpi_os_unmap_memory(table, sizeof(*table)); > > > > + /* In case the header is an RSDT copy, blindly ensure it has an XSDT > > sig */ > > + xsdt->header.signature[0] = 'X'; > > + > > /* Add the custom MADT. */ > > xsdt->table_offset_entry[0] = madt_addr; > > > > -- > > 2.30.2 > > >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |