diff options
-rw-r--r-- | arch/ia64/kernel/acpi.c | 1 | ||||
-rw-r--r-- | arch/x86/kernel/acpi/boot.c | 3 | ||||
-rw-r--r-- | drivers/acpi/acpica/acglobal.h | 8 | ||||
-rw-r--r-- | drivers/acpi/acpica/tbutils.c | 10 | ||||
-rw-r--r-- | include/acpi/acpixf.h | 16 |
5 files changed, 22 insertions, 16 deletions
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index 59d52e3aef12..28dc6ba6690a 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
@@ -61,7 +61,6 @@ | |||
61 | 61 | ||
62 | #define PREFIX "ACPI: " | 62 | #define PREFIX "ACPI: " |
63 | 63 | ||
64 | u32 acpi_rsdt_forced; | ||
65 | unsigned int acpi_cpei_override; | 64 | unsigned int acpi_cpei_override; |
66 | unsigned int acpi_cpei_phys_cpuid; | 65 | unsigned int acpi_cpei_phys_cpuid; |
67 | 66 | ||
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 6c0b43bd024b..0b0b91b83d51 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
@@ -46,7 +46,6 @@ | |||
46 | 46 | ||
47 | #include "sleep.h" /* To include x86_acpi_suspend_lowlevel */ | 47 | #include "sleep.h" /* To include x86_acpi_suspend_lowlevel */ |
48 | static int __initdata acpi_force = 0; | 48 | static int __initdata acpi_force = 0; |
49 | u32 acpi_rsdt_forced; | ||
50 | int acpi_disabled; | 49 | int acpi_disabled; |
51 | EXPORT_SYMBOL(acpi_disabled); | 50 | EXPORT_SYMBOL(acpi_disabled); |
52 | 51 | ||
@@ -1564,7 +1563,7 @@ static int __init parse_acpi(char *arg) | |||
1564 | } | 1563 | } |
1565 | /* acpi=rsdt use RSDT instead of XSDT */ | 1564 | /* acpi=rsdt use RSDT instead of XSDT */ |
1566 | else if (strcmp(arg, "rsdt") == 0) { | 1565 | else if (strcmp(arg, "rsdt") == 0) { |
1567 | acpi_rsdt_forced = 1; | 1566 | acpi_gbl_do_not_use_xsdt = TRUE; |
1568 | } | 1567 | } |
1569 | /* "acpi=noirq" disables ACPI interrupt routing */ | 1568 | /* "acpi=noirq" disables ACPI interrupt routing */ |
1570 | else if (strcmp(arg, "noirq") == 0) { | 1569 | else if (strcmp(arg, "noirq") == 0) { |
diff --git a/drivers/acpi/acpica/acglobal.h b/drivers/acpi/acpica/acglobal.h index e9f1fc7f99c7..cffb45742aa5 100644 --- a/drivers/acpi/acpica/acglobal.h +++ b/drivers/acpi/acpica/acglobal.h | |||
@@ -119,6 +119,14 @@ bool ACPI_INIT_GLOBAL(acpi_gbl_enable_aml_debug_object, FALSE); | |||
119 | u8 ACPI_INIT_GLOBAL(acpi_gbl_copy_dsdt_locally, FALSE); | 119 | u8 ACPI_INIT_GLOBAL(acpi_gbl_copy_dsdt_locally, FALSE); |
120 | 120 | ||
121 | /* | 121 | /* |
122 | * Optionally ignore an XSDT if present and use the RSDT instead. | ||
123 | * Although the ACPI specification requires that an XSDT be used instead | ||
124 | * of the RSDT, the XSDT has been found to be corrupt or ill-formed on | ||
125 | * some machines. Default behavior is to use the XSDT if present. | ||
126 | */ | ||
127 | u8 ACPI_INIT_GLOBAL(acpi_gbl_do_not_use_xsdt, FALSE); | ||
128 | |||
129 | /* | ||
122 | * Optionally truncate I/O addresses to 16 bits. Provides compatibility | 130 | * Optionally truncate I/O addresses to 16 bits. Provides compatibility |
123 | * with other ACPI implementations. NOTE: During ACPICA initialization, | 131 | * with other ACPI implementations. NOTE: During ACPICA initialization, |
124 | * this value is set to TRUE if any Windows OSI strings have been | 132 | * this value is set to TRUE if any Windows OSI strings have been |
diff --git a/drivers/acpi/acpica/tbutils.c b/drivers/acpi/acpica/tbutils.c index ee6067062cdc..6412d3c301cb 100644 --- a/drivers/acpi/acpica/tbutils.c +++ b/drivers/acpi/acpica/tbutils.c | |||
@@ -478,10 +478,10 @@ acpi_status __init acpi_tb_parse_root_table(acpi_physical_address rsdp_address) | |||
478 | ACPI_CAST_PTR(struct acpi_table_header, | 478 | ACPI_CAST_PTR(struct acpi_table_header, |
479 | rsdp)); | 479 | rsdp)); |
480 | 480 | ||
481 | /* Differentiate between RSDT and XSDT root tables */ | 481 | /* Use XSDT if present and not overridden. Otherwise, use RSDT */ |
482 | 482 | ||
483 | if ((rsdp->revision > 1) && rsdp->xsdt_physical_address | 483 | if ((rsdp->revision > 1) && |
484 | && !acpi_rsdt_forced) { | 484 | rsdp->xsdt_physical_address && !acpi_gbl_do_not_use_xsdt) { |
485 | /* | 485 | /* |
486 | * RSDP contains an XSDT (64-bit physical addresses). We must use | 486 | * RSDP contains an XSDT (64-bit physical addresses). We must use |
487 | * the XSDT if the revision is > 1 and the XSDT pointer is present, | 487 | * the XSDT if the revision is > 1 and the XSDT pointer is present, |
@@ -503,8 +503,8 @@ acpi_status __init acpi_tb_parse_root_table(acpi_physical_address rsdp_address) | |||
503 | acpi_os_unmap_memory(rsdp, sizeof(struct acpi_table_rsdp)); | 503 | acpi_os_unmap_memory(rsdp, sizeof(struct acpi_table_rsdp)); |
504 | 504 | ||
505 | /* | 505 | /* |
506 | * If it is present, validate the XSDT for access/size and ensure | 506 | * If it is present and used, validate the XSDT for access/size |
507 | * that all table entries are at least non-NULL | 507 | * and ensure that all table entries are at least non-NULL |
508 | */ | 508 | */ |
509 | if (table_entry_size == ACPI_XSDT_ENTRY_SIZE) { | 509 | if (table_entry_size == ACPI_XSDT_ENTRY_SIZE) { |
510 | status = acpi_tb_validate_xsdt(address); | 510 | status = acpi_tb_validate_xsdt(address); |
diff --git a/include/acpi/acpixf.h b/include/acpi/acpixf.h index 4278aba96503..30b01f889538 100644 --- a/include/acpi/acpixf.h +++ b/include/acpi/acpixf.h | |||
@@ -54,7 +54,6 @@ | |||
54 | #include <acpi/acbuffer.h> | 54 | #include <acpi/acbuffer.h> |
55 | 55 | ||
56 | extern u8 acpi_gbl_permanent_mmap; | 56 | extern u8 acpi_gbl_permanent_mmap; |
57 | extern u32 acpi_rsdt_forced; | ||
58 | 57 | ||
59 | /* | 58 | /* |
60 | * Globals that are publically available | 59 | * Globals that are publically available |
@@ -72,17 +71,18 @@ extern u32 acpi_dbg_layer; | |||
72 | 71 | ||
73 | /* ACPICA runtime options */ | 72 | /* ACPICA runtime options */ |
74 | 73 | ||
75 | extern u8 acpi_gbl_enable_interpreter_slack; | ||
76 | extern u8 acpi_gbl_all_methods_serialized; | 74 | extern u8 acpi_gbl_all_methods_serialized; |
77 | extern u8 acpi_gbl_create_osi_method; | ||
78 | extern u8 acpi_gbl_use_default_register_widths; | ||
79 | extern acpi_name acpi_gbl_trace_method_name; | ||
80 | extern u32 acpi_gbl_trace_flags; | ||
81 | extern bool acpi_gbl_enable_aml_debug_object; | ||
82 | extern u8 acpi_gbl_copy_dsdt_locally; | 75 | extern u8 acpi_gbl_copy_dsdt_locally; |
83 | extern u8 acpi_gbl_truncate_io_addresses; | 76 | extern u8 acpi_gbl_create_osi_method; |
84 | extern u8 acpi_gbl_disable_auto_repair; | 77 | extern u8 acpi_gbl_disable_auto_repair; |
85 | extern u8 acpi_gbl_disable_ssdt_table_load; | 78 | extern u8 acpi_gbl_disable_ssdt_table_load; |
79 | extern u8 acpi_gbl_do_not_use_xsdt; | ||
80 | extern bool acpi_gbl_enable_aml_debug_object; | ||
81 | extern u8 acpi_gbl_enable_interpreter_slack; | ||
82 | extern u32 acpi_gbl_trace_flags; | ||
83 | extern acpi_name acpi_gbl_trace_method_name; | ||
84 | extern u8 acpi_gbl_truncate_io_addresses; | ||
85 | extern u8 acpi_gbl_use_default_register_widths; | ||
86 | 86 | ||
87 | /* | 87 | /* |
88 | * Hardware-reduced prototypes. All interfaces that use these macros will | 88 | * Hardware-reduced prototypes. All interfaces that use these macros will |