aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/i386/kernel/acpi/boot.c5
-rw-r--r--arch/x86_64/kernel/early-quirks.c4
-rw-r--r--arch/x86_64/pci/mmconfig.c4
-rw-r--r--drivers/acpi/numa.c6
-rw-r--r--drivers/acpi/tables.c13
5 files changed, 21 insertions, 11 deletions
diff --git a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c
index e94aff6888ca..7ac7b67b8519 100644
--- a/arch/i386/kernel/acpi/boot.c
+++ b/arch/i386/kernel/acpi/boot.c
@@ -865,10 +865,9 @@ static inline int acpi_parse_madt_ioapic_entries(void)
865static void __init acpi_process_madt(void) 865static void __init acpi_process_madt(void)
866{ 866{
867#ifdef CONFIG_X86_LOCAL_APIC 867#ifdef CONFIG_X86_LOCAL_APIC
868 int count, error; 868 int error;
869 869
870 count = acpi_table_parse(ACPI_SIG_MADT, acpi_parse_madt); 870 if (!acpi_table_parse(ACPI_SIG_MADT, acpi_parse_madt)) {
871 if (count >= 1) {
872 871
873 /* 872 /*
874 * Parse MADT LAPIC entries 873 * Parse MADT LAPIC entries
diff --git a/arch/x86_64/kernel/early-quirks.c b/arch/x86_64/kernel/early-quirks.c
index bd30d138113f..8047ea8c2ab2 100644
--- a/arch/x86_64/kernel/early-quirks.c
+++ b/arch/x86_64/kernel/early-quirks.c
@@ -53,7 +53,9 @@ static void nvidia_bugs(void)
53 return; 53 return;
54 54
55 nvidia_hpet_detected = 0; 55 nvidia_hpet_detected = 0;
56 acpi_table_parse(ACPI_SIG_HPET, nvidia_hpet_check); 56 if (acpi_table_parse(ACPI_SIG_HPET, nvidia_hpet_check))
57 return;
58
57 if (nvidia_hpet_detected == 0) { 59 if (nvidia_hpet_detected == 0) {
58 acpi_skip_timer_override = 1; 60 acpi_skip_timer_override = 1;
59 printk(KERN_INFO "Nvidia board " 61 printk(KERN_INFO "Nvidia board "
diff --git a/arch/x86_64/pci/mmconfig.c b/arch/x86_64/pci/mmconfig.c
index faabb6e87f12..98202cb50d8a 100644
--- a/arch/x86_64/pci/mmconfig.c
+++ b/arch/x86_64/pci/mmconfig.c
@@ -170,7 +170,9 @@ void __init pci_mmcfg_init(int type)
170 if ((pci_probe & PCI_PROBE_MMCONF) == 0) 170 if ((pci_probe & PCI_PROBE_MMCONF) == 0)
171 return; 171 return;
172 172
173 acpi_table_parse(ACPI_SIG_MCFG, acpi_parse_mcfg); 173 if (acpi_table_parse(ACPI_SIG_MCFG, acpi_parse_mcfg))
174 return;
175
174 if ((pci_mmcfg_config_num == 0) || 176 if ((pci_mmcfg_config_num == 0) ||
175 (pci_mmcfg_config == NULL) || 177 (pci_mmcfg_config == NULL) ||
176 (pci_mmcfg_config[0].address == 0)) 178 (pci_mmcfg_config[0].address == 0))
diff --git a/drivers/acpi/numa.c b/drivers/acpi/numa.c
index dcd58a446f4b..bb6caab24322 100644
--- a/drivers/acpi/numa.c
+++ b/drivers/acpi/numa.c
@@ -220,9 +220,7 @@ int __init acpi_numa_init(void)
220 int result; 220 int result;
221 221
222 /* SRAT: Static Resource Affinity Table */ 222 /* SRAT: Static Resource Affinity Table */
223 result = acpi_table_parse(ACPI_SIG_SRAT, acpi_parse_srat); 223 if (!acpi_table_parse(ACPI_SIG_SRAT, acpi_parse_srat)) {
224
225 if (result > 0) {
226 result = acpi_table_parse_srat(ACPI_SRAT_TYPE_CPU_AFFINITY, 224 result = acpi_table_parse_srat(ACPI_SRAT_TYPE_CPU_AFFINITY,
227 acpi_parse_processor_affinity, 225 acpi_parse_processor_affinity,
228 NR_CPUS); 226 NR_CPUS);
@@ -230,7 +228,7 @@ int __init acpi_numa_init(void)
230 } 228 }
231 229
232 /* SLIT: System Locality Information Table */ 230 /* SLIT: System Locality Information Table */
233 result = acpi_table_parse(ACPI_SIG_SLIT, acpi_parse_slit); 231 acpi_table_parse(ACPI_SIG_SLIT, acpi_parse_slit);
234 232
235 acpi_numa_arch_fixup(); 233 acpi_numa_arch_fixup();
236 return 0; 234 return 0;
diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c
index ba4cb200314a..2075ec7b827b 100644
--- a/drivers/acpi/tables.c
+++ b/drivers/acpi/tables.c
@@ -226,6 +226,15 @@ acpi_table_parse_madt(enum acpi_madt_type id,
226 handler, max_entries); 226 handler, max_entries);
227} 227}
228 228
229/**
230 * acpi_table_parse - find table with @id, run @handler on it
231 *
232 * @id: table id to find
233 * @handler: handler to run
234 *
235 * Scan the ACPI System Descriptor Table (STD) for a table matching @id,
236 * run @handler on it. Return 0 if table found, return on if not.
237 */
229int __init acpi_table_parse(char *id, acpi_table_handler handler) 238int __init acpi_table_parse(char *id, acpi_table_handler handler)
230{ 239{
231 struct acpi_table_header *table = NULL; 240 struct acpi_table_header *table = NULL;
@@ -235,9 +244,9 @@ int __init acpi_table_parse(char *id, acpi_table_handler handler)
235 acpi_get_table(id, 0, &table); 244 acpi_get_table(id, 0, &table);
236 if (table) { 245 if (table) {
237 handler(table); 246 handler(table);
238 return 1;
239 } else
240 return 0; 247 return 0;
248 } else
249 return 1;
241} 250}
242 251
243/* 252/*