From: Boris Ostrovsky Date: Thu, 9 Nov 2017 15:37:53 +0000 (-0500) Subject: x86/pvh: Do not add DSDT and FACS to PVH dom0 XSDT X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~977 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=aced70a211bb3233ac024ac991ca3a470d9f9294;p=xen.git x86/pvh: Do not add DSDT and FACS to PVH dom0 XSDT These tables are pointed to from FADT. Adding them will result in duplicate entries in the guest's tables. Signed-off-by: Boris Ostrovsky Reviewed-by: Jan Beulich Reviewed-by: Roger Pau Monné --- diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c index a67071c739..4338965bf6 100644 --- a/xen/arch/x86/hvm/dom0_build.c +++ b/xen/arch/x86/hvm/dom0_build.c @@ -818,6 +818,17 @@ static bool __init pvh_acpi_table_allowed(const char *sig) return true; } +static bool __init pvh_acpi_xsdt_table_allowed(const char *sig) +{ + /* + * DSDT and FACS are pointed to from FADT and thus don't belong + * in XSDT. + */ + return (pvh_acpi_table_allowed(sig) && + strncmp(sig, ACPI_SIG_DSDT, ACPI_NAME_SIZE) && + strncmp(sig, ACPI_SIG_FACS, ACPI_NAME_SIZE)); +} + static int __init pvh_setup_acpi_xsdt(struct domain *d, paddr_t madt_addr, paddr_t *addr) { @@ -841,7 +852,7 @@ static int __init pvh_setup_acpi_xsdt(struct domain *d, paddr_t madt_addr, { const char *sig = acpi_gbl_root_table_list.tables[i].signature.ascii; - if ( pvh_acpi_table_allowed(sig) ) + if ( pvh_acpi_xsdt_table_allowed(sig) ) num_tables++; } @@ -888,7 +899,7 @@ static int __init pvh_setup_acpi_xsdt(struct domain *d, paddr_t madt_addr, { const char *sig = acpi_gbl_root_table_list.tables[i].signature.ascii; - if ( pvh_acpi_table_allowed(sig) ) + if ( pvh_acpi_xsdt_table_allowed(sig) ) xsdt->table_offset_entry[j++] = acpi_gbl_root_table_list.tables[i].address; }