diff options
author | Yinghai Lu <yhlu.kernel@gmail.com> | 2008-09-14 02:33:14 -0700 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-10-13 10:21:07 +0200 |
commit | a73aaedd95703bd49f4c3f9df06fb7b7373ba905 (patch) | |
tree | e912ceecc93975d59a3c95f20ec26b1ba8e01fc0 /arch/x86/mach-generic/es7000.c | |
parent | a32ad4626776f09b30ef98a872a5f6fb64fe6607 (diff) | |
download | op-kernel-dev-a73aaedd95703bd49f4c3f9df06fb7b7373ba905.zip op-kernel-dev-a73aaedd95703bd49f4c3f9df06fb7b7373ba905.tar.gz |
x86: check dsdt before find oem table for es7000, v2
v2: use __acpi_unmap_table()
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/mach-generic/es7000.c')
-rw-r--r-- | arch/x86/mach-generic/es7000.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/arch/x86/mach-generic/es7000.c b/arch/x86/mach-generic/es7000.c index 520cca0..6513d41 100644 --- a/arch/x86/mach-generic/es7000.c +++ b/arch/x86/mach-generic/es7000.c @@ -47,16 +47,26 @@ static __init int mps_oem_check(struct mp_config_table *mpc, char *oem, /* Hook from generic ACPI tables.c */ static int __init acpi_madt_oem_check(char *oem_id, char *oem_table_id) { - unsigned long oem_addr; + unsigned long oem_addr = 0; + int check_dsdt; + int ret = 0; + + /* check dsdt at first to avoid clear fix_map for oem_addr */ + check_dsdt = es7000_check_dsdt(); + if (!find_unisys_acpi_oem_table(&oem_addr)) { - if (es7000_check_dsdt()) - return parse_unisys_oem((char *)oem_addr); + if (check_dsdt) + ret = parse_unisys_oem((char *)oem_addr); else { setup_unisys(); - return 1; + ret = 1; } + /* + * we need to unmap it + */ + unmap_unisys_acpi_oem_table(oem_addr); } - return 0; + return ret; } #else static int __init acpi_madt_oem_check(char *oem_id, char *oem_table_id) |