From: Eric W. Biederman <[email protected]>

Avinash Kurup reported:

 |
 |      I get the following errors while booting into 2.6.35-rc1. I did not
 |  get these in 2.6.34. The computer however boots and works fine, so its not
 |  serious but the following errors are displayed in dmesg:
 |
 | [    0.089969] ERROR: Unable to locate IOAPIC for GSI 13
 | [    0.090556] ERROR: Unable to locate IOAPIC for GSI 8
 | [    0.091104] ERROR: Unable to locate IOAPIC for GSI 12
 | [    0.091375] ERROR: Unable to locate IOAPIC for GSI 1
 | [    0.093195] ERROR: Unable to locate IOAPIC for GSI 4
 | [    0.094342] ERROR: Unable to locate IOAPIC for GSI 10
 | [    0.096335] ERROR: Unable to locate IOAPIC for GSI 6
 |

The new warning originates from acpi_get_override_irq(), which I
recently changed to use helper functions:

  9a0a91bb56d2: x86, acpi/irq: Teach acpi_get_override_irq to take a gsi not an 
isa_irq

These helper functions have the side-effect that they warn when
they fail harmlessly.

When IOAPICs and ACPI are enabled in a kernel and run on ACPI
hardware that doesn't use the ioapics the pnp acpi code calls
this function, looking for ACPI irq overrides.  ACPI irq
overrides exist only in the ioapic case so this function will
never succeed.

So make the function fail quickly and silently so we don't call
into help functions that legitimately complain when they fail.

Reference: https://bugzilla.kernel.org/show_bug.cgi?id=17772
Reported-and-Tested-by: Avinash Kurup <[email protected]>
Tested-by: [email protected]
Signed-off-by: "Eric W. Biederman" <[email protected]>
Signed-off-by: Florian Mickler <[email protected]>
[ ported to tip/x86/devel -Florian]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: <[email protected]> # .34+
LKML-Reference: <[email protected]>
---
[v2: adding ifdefs]
[v3: porting to tip/x86/devel makes those ifdefs obsolete again]


Hi Ingo,

in tip/x86/devel there is already a big ifdef CONFIG_ACPI in 
arch/x86/kernel/io_apic.c .. I don't think it makes sense to factor 
acpi_get_override_irq out to acpi.c in that case? 

If I did that, I would end up renaming io_apic.c:acpi_get_override_irq 
to io_apic.c:io_apic_get_irq and introducing pci/acpi.c:acpi_get_override_irq
which would check the below and then call io_apic_get_irq plus the added
header churn...

Regards,
Flo

p.s.: I'm not seeing commit 678301ecadec24ff77ab310eebf8a32ccddb1850 
("x86, ioapic: Don't warn about non-existing IOAPICs if we have none")
in tip/x86/devel... so I couldn't revert that here, but this patch 
replaces that one. 

 arch/x86/kernel/io_apic.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/arch/x86/kernel/io_apic.c b/arch/x86/kernel/io_apic.c
index b764d74..34b5aa2 100644
--- a/arch/x86/kernel/io_apic.c
+++ b/arch/x86/kernel/io_apic.c
@@ -3733,6 +3733,9 @@ int acpi_get_override_irq(int bus_irq, int *trigger, int 
*polarity)
 {
        int i;
 
+       if (acpi_irq_model != ACPI_IRQ_MODEL_IOAPIC)
+               return -1;
+
        if (skip_ioapic_setup)
                return -1;
 
-- 
1.7.4.1

_______________________________________________
stable mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/stable

Reply via email to