From: Jes Sorensen Add support for using the bit address for the DSDT table which we need on some of the systems. The old code only supported a 32 bit physical address. --- drivers/acpi/tables.c | 13 ++++++++++--- 1 files changed, 10 insertions(+), 3 deletions(-) diff -puN drivers/acpi/tables.c~acpi-support-FADT-rev3-XDSDT-table drivers/acpi/tables.c --- 25/drivers/acpi/tables.c~acpi-support-FADT-rev3-XDSDT-table 2004-01-23 01:24:20.000000000 -0800 +++ 25-akpm/drivers/acpi/tables.c 2004-01-23 01:24:20.000000000 -0800 @@ -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; _