From 3a464adcef8d20942f30ab146175e302088ce948 Mon Sep 17 00:00:00 2001 From: Len Brown Date: Mon, 26 Jan 2004 06:55:20 -0500 Subject: [PATCH] [ACPI] handle system with NULL DSDT and valid XDSDT from ia64 via Alex Williamson --- drivers/acpi/tables.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c index b9bb42f9e37ae..e997203d754b3 100644 --- a/drivers/acpi/tables.c +++ b/drivers/acpi/tables.c @@ -276,10 +276,17 @@ acpi_get_table_header_early ( /* Map the DSDT header via the pointer in the FADT */ if (id == ACPI_DSDT) { - struct acpi_table_fadt *fadt = (struct acpi_table_fadt *) *header; + struct fadt_descriptor_rev2 *fadt = (struct fadt_descriptor_rev2 *) *header; + + if (fadt->revision == 3 && fadt->Xdsdt) { + *header = (void *) __acpi_map_table(fadt->Xdsdt, + sizeof(struct acpi_table_header)); + } else if (fadt->V1_dsdt) { + *header = (void *) __acpi_map_table(fadt->V1_dsdt, + sizeof(struct acpi_table_header)); + } else + *header = 0; - *header = (void *) __acpi_map_table(fadt->dsdt_addr, - sizeof(struct acpi_table_header)); if (!*header) { printk(KERN_WARNING PREFIX "Unable to map DSDT\n"); return -ENODEV; -- 2.53.0