aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/acpi
diff options
context:
space:
mode:
authorAlexey Starikovskiy <astarikovskiy@suse.de>2008-05-22 04:26:15 -0400
committerThomas Gleixner <tglx@linutronix.de>2008-05-25 04:55:13 -0400
commitaafbdf71f1d3aeffd679b1a86e1b28f71515856c (patch)
tree17fcd8490f0e3c7355459726422515f148ab2aaf /arch/x86/kernel/acpi
parent59f4519ad7ade61123e90085b0dadb2ea197bd87 (diff)
x86: fix mpparse/acpi interaction
Sitsofe Wheeler reported boot problems on linux-next. It looks like the same issue as found by Soeren Sandman in 7575217f656a93, "x86: initialize all fields of mp_irqs[mp_irq_entries]". But his fix is also not complete, as dstapic is used before it assigned. Reported-by: Sitsofe Wheeler <sitsofe@yahoo.com> Bisected-by: Sitsofe Wheeler <sitsofe@yahoo.com> Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/kernel/acpi')
-rw-r--r--arch/x86/kernel/acpi/boot.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 6170c6aeaf79..2ddfabae382b 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -1019,6 +1019,11 @@ void __init mp_config_acpi_legacy_irqs(void)
1019 for (i = 0; i < 16; i++) { 1019 for (i = 0; i < 16; i++) {
1020 int idx; 1020 int idx;
1021 1021
1022 mp_irqs[mp_irq_entries].mp_type = MP_INTSRC;
1023 mp_irqs[mp_irq_entries].mp_irqflag = 0; /* Conforming */
1024 mp_irqs[mp_irq_entries].mp_srcbus = MP_ISA_BUS;
1025 mp_irqs[mp_irq_entries].mp_dstapic = mp_ioapics[ioapic].mp_apicid;
1026
1022 for (idx = 0; idx < mp_irq_entries; idx++) { 1027 for (idx = 0; idx < mp_irq_entries; idx++) {
1023 struct mp_config_intsrc *irq = mp_irqs + idx; 1028 struct mp_config_intsrc *irq = mp_irqs + idx;
1024 1029
@@ -1039,10 +1044,6 @@ void __init mp_config_acpi_legacy_irqs(void)
1039 continue; /* IRQ already used */ 1044 continue; /* IRQ already used */
1040 } 1045 }
1041 1046
1042 mp_irqs[mp_irq_entries].mp_type = MP_INTSRC;
1043 mp_irqs[mp_irq_entries].mp_irqflag = 0; /* Conforming */
1044 mp_irqs[mp_irq_entries].mp_srcbus = MP_ISA_BUS;
1045 mp_irqs[mp_irq_entries].mp_dstapic = mp_ioapics[ioapic].mp_apicid;
1046 mp_irqs[mp_irq_entries].mp_irqtype = mp_INT; 1047 mp_irqs[mp_irq_entries].mp_irqtype = mp_INT;
1047 mp_irqs[mp_irq_entries].mp_srcbusirq = i; /* Identity mapped */ 1048 mp_irqs[mp_irq_entries].mp_srcbusirq = i; /* Identity mapped */
1048 mp_irqs[mp_irq_entries].mp_dstirq = i; 1049 mp_irqs[mp_irq_entries].mp_dstirq = i;