* [PATCH 3/3] x86: when acpi_noirq is set, use mptable instead of MADT
@ 2006-11-26 23:24 Yinghai Lu
2006-11-27 0:23 ` Andi Kleen
2006-11-27 5:37 ` Len Brown
0 siblings, 2 replies; 5+ messages in thread
From: Yinghai Lu @ 2006-11-26 23:24 UTC (permalink / raw)
To: Andrew Morton, Andi Kleen, Eric W. Biederman; +Cc: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 1 bytes --]
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: ai_3.diff --]
[-- Type: text/x-patch; name="ai_3.diff", Size: 1150 bytes --]
[PATCH 3/3] x86: when acpi_noirq is set, use mptable instead of MADT
When using pci=noacpi, or apci=noirq, acpi_noirq is set. We should skip
acpi_process_madt. Because it will set acpi_lapic and acpi_ioapic, at last
mptable is skipped, but we need io apic routing table in mptable.
Signed-off-by: Yinghai Lu <yinghai.lu@amd.com>
diff --git a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c
index d12fb97..6d62dd1 100644
--- a/arch/i386/kernel/acpi/boot.c
+++ b/arch/i386/kernel/acpi/boot.c
@@ -1242,7 +1242,15 @@ int __init acpi_boot_init(void)
/*
* Process the Multiple APIC Description Table (MADT), if present
*/
- acpi_process_madt();
+ /* with acpi_noirq we don't need to process madt, it will set
+ * acpi_lapic and acpi_ioapic, they will make get_smp_config aka.
+ * MPTABLE be skipped and mp_irqs will not include entries for
+ * irq routing for io apic, then pirq_enable_irq together with
+ * IO_APIC_get_PCI_irq_vector can not find irq in mp_irqs for
+ * devices that are using IOAPIC
+ */
+ if(!acpi_noirq && !acpi_pci_disabled)
+ acpi_process_madt();
acpi_table_parse(ACPI_HPET, acpi_parse_hpet);
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 3/3] x86: when acpi_noirq is set, use mptable instead of MADT
2006-11-26 23:24 [PATCH 3/3] x86: when acpi_noirq is set, use mptable instead of MADT Yinghai Lu
@ 2006-11-27 0:23 ` Andi Kleen
2006-11-27 5:37 ` Len Brown
1 sibling, 0 replies; 5+ messages in thread
From: Andi Kleen @ 2006-11-27 0:23 UTC (permalink / raw)
To: Yinghai Lu; +Cc: Andrew Morton, Eric W. Biederman, linux-kernel
On Sun, Nov 26, 2006 at 03:24:32PM -0800, Yinghai Lu wrote:
>
Can you resend that one cc len.brown@intel.com, linux-acpi@vger.kernel.org
please ?
-Andi
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 3/3] x86: when acpi_noirq is set, use mptable instead of MADT
2006-11-26 23:24 [PATCH 3/3] x86: when acpi_noirq is set, use mptable instead of MADT Yinghai Lu
2006-11-27 0:23 ` Andi Kleen
@ 2006-11-27 5:37 ` Len Brown
2006-11-27 7:37 ` Yinghai Lu
2006-11-28 5:09 ` Yinghai Lu
1 sibling, 2 replies; 5+ messages in thread
From: Len Brown @ 2006-11-27 5:37 UTC (permalink / raw)
To: Yinghai Lu; +Cc: Andrew Morton, Andi Kleen, Eric W. Biederman, linux-kernel
"acpi=noirq" and "pci=noacpi" are not reliable in IOAPIC mode --
as, by definition, they skip the processing of the ACPI interrupt itself.
On some systems this happens to work, and on some systems it doesn't --
depends on if there was an override for the SCI or if it appears as
a standard PCI interrupt.
So the bigger question is why you need these workarounds in the first place.
-Len
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 3/3] x86: when acpi_noirq is set, use mptable instead of MADT
2006-11-27 5:37 ` Len Brown
@ 2006-11-27 7:37 ` Yinghai Lu
2006-11-28 5:09 ` Yinghai Lu
1 sibling, 0 replies; 5+ messages in thread
From: Yinghai Lu @ 2006-11-27 7:37 UTC (permalink / raw)
To: Len Brown; +Cc: Andrew Morton, Andi Kleen, Eric W. Biederman, linux-kernel
On 11/26/06, Len Brown <len.brown@intel.com> wrote:
>
> So the bigger question is why you need these workarounds in the first place.
in the LinuxBIOS, acpi support is there including acpi tables and dsdt
for amd chipset.
but for other chipset, I can not put dsdt there. becase we need one
clean room implementation for dsdt with those chipset.
So I have all acpi tables (SRAT, SLIT, ...) but no dsdt.
We need to use mptable instead of MADT + dsdt for io apic irq routing.
I forget to remove MADT in one test, the kernel will skip the mptable.
After look at the kernel acpi code, it turns out that
acpi_process_madt will set acpi_lapic, and acpi_ioapic. So
get_smp_config will skip the mptable.
With normal BIOS, if there is problem with DSDT, and you are trying
acpi=noirq, it means you are going to PIC mode instead of APIC mode if
you are skipping mptable.
YH
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 3/3] x86: when acpi_noirq is set, use mptable instead of MADT
2006-11-27 5:37 ` Len Brown
2006-11-27 7:37 ` Yinghai Lu
@ 2006-11-28 5:09 ` Yinghai Lu
1 sibling, 0 replies; 5+ messages in thread
From: Yinghai Lu @ 2006-11-28 5:09 UTC (permalink / raw)
To: Len Brown; +Cc: Andrew Morton, Andi Kleen, Eric W. Biederman, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 32 bytes --]
Please check the updated patch.
[-- Attachment #2: ai_4.diff --]
[-- Type: text/x-patch, Size: 1178 bytes --]
[PATCH 3/3] x86: when acpi_noirq is set, use mptable instead of MADT
If no DSDT found, call acpi_disable_pci
When using pci=noacpi, or apci=noirq, acpi_noirq is set. We should skip
acpi_process_madt. So to avoid enumerate lapic two times.
Signed-off-by: Yinghai Lu <yinghai.lu@amd.com>
diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c
index bfb3bfc..f497d78 100644
--- a/drivers/acpi/tables.c
+++ b/drivers/acpi/tables.c
@@ -297,6 +297,7 @@ acpi_get_table_header_early(enum acpi_ta
if (!*header) {
printk(KERN_WARNING PREFIX "Unable to map DSDT\n");
+ acpi_disable_pci();
return -ENODEV;
}
}
diff --git a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c
index d12fb97..0d350d0 100644
--- a/arch/i386/kernel/acpi/boot.c
+++ b/arch/i386/kernel/acpi/boot.c
@@ -1242,7 +1242,11 @@ int __init acpi_boot_init(void)
/*
* Process the Multiple APIC Description Table (MADT), if present
*/
- acpi_process_madt();
+ /* with acpi_noirq we don't need to process madt, So don't need
+ * ennumerate lapic two times
+ */
+ if(!acpi_noirq && !acpi_pci_disabled)
+ acpi_process_madt();
acpi_table_parse(ACPI_HPET, acpi_parse_hpet);
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2006-11-28 5:09 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-11-26 23:24 [PATCH 3/3] x86: when acpi_noirq is set, use mptable instead of MADT Yinghai Lu
2006-11-27 0:23 ` Andi Kleen
2006-11-27 5:37 ` Len Brown
2006-11-27 7:37 ` Yinghai Lu
2006-11-28 5:09 ` Yinghai Lu
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.