Hi Matthew,
Matthew Wilcox wrote:
Not sure where the problem lies on this one ...
On an hp rx4640, at shutdown of an unmodified 2.6.11-rc5 kernel, I get:
Rebooting... ACPI: PCI interrupt for device 0000:a1:04.0 disabled iosapic_unregister_intr(4294967295) unbalanced Badness in iosapic_unregister_intr at arch/ia64/kernel/iosapic.c:636 ACPI: PCI interrupt for device 0000:a1:04.1 disabled iosapic_unregister_intr(4294967295) unbalanced Badness in iosapic_unregister_intr at arch/ia64/kernel/iosapic.c:636 ACPI: PCI interrupt for device 0000:a1:06.0 disabled iosapic_unregister_intr(4294967295) unbalanced Badness in iosapic_unregister_intr at arch/ia64/kernel/iosapic.c:636 ACPI: PCI interrupt for device 0000:a1:06.1 disabled iosapic_unregister_intr(4294967295) unbalanced Badness in iosapic_unregister_intr at arch/ia64/kernel/iosapic.c:636
Anyone else seeing it? I wonder if it only happens for devices behind a PCI-PCI bridge:
0000:a0:02.0 PCI bridge: IBM PCI-X to PCI-X Bridge (rev 02) 0000:a1:04.0 Ethernet controller: Intel Corp. 82546EB Gigabit Ethernet Controller (rev 01) 0000:a1:04.1 Ethernet controller: Intel Corp. 82546EB Gigabit Ethernet Controller (rev 01) 0000:a1:06.0 Ethernet controller: Intel Corp. 82546EB Gigabit Ethernet Controller (rev 01) 0000:a1:06.1 Ethernet controller: Intel Corp. 82546EB Gigabit Ethernet Controller (rev 01)
I think the following patch will fix this problem. Could you try it?
Thanks, Kenji Kaneshige --
This patch fix the error check in acpi_pci_irq_disable().
Signed-off-by: Kenji Kaneshige <[EMAIL PROTECTED]>
---
linux-2.6.11-rc5-kanesige/drivers/acpi/pci_irq.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
diff -puN drivers/acpi/pci_irq.c~fix_acpi_pci_irq_disable drivers/acpi/pci_irq.c
--- linux-2.6.11-rc5/drivers/acpi/pci_irq.c~fix_acpi_pci_irq_disable
2005-03-01 13:50:24.000000000 +0900
+++ linux-2.6.11-rc5-kanesige/drivers/acpi/pci_irq.c 2005-03-01
13:50:24.000000000 +0900
@@ -460,7 +460,7 @@ void
acpi_pci_irq_disable (
struct pci_dev *dev)
{
- u32 gsi = 0;
+ int gsi = 0;
u8 pin = 0;
int edge_level = ACPI_LEVEL_SENSITIVE;
int active_high_low = ACPI_ACTIVE_LOW;
@@ -487,10 +487,10 @@ acpi_pci_irq_disable (
* If no PRT entry was found, we'll try to derive an IRQ from the
* device's parent bridge.
*/
- if (!gsi)
+ if (gsi < 0)
gsi = acpi_pci_irq_derive(dev, pin,
&edge_level, &active_high_low);
- if (!gsi)
+ if (gsi < 0)
return_VOID;/*
_
- To unsubscribe from this list: send the line "unsubscribe linux-ia64" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
