Re: Fw: ACPI bug causes cd-rom lock-ups (2.6.10-rc2)

Len Brown
2004-11-27T01:04:47Z

[-- Attachment #1: Type: text/plain, Size: 479 bytes --]

On Wed, 2004-11-24 at 13:12, Stas Sergeev wrote:
> Hello.
>
> Len Brown wrote:

> > Did 2.6.9 work correctly?
> Yes!

> > Any difference with CONFIG_PNP=n?
> Yes. The difference is that the problem
> disappears.

CONFIG_PNP_ACPI=n should workaround it too then, I expect.

Please apply this debug patch to the failing kernel
and send along the dmesg. It will tell us how we
messed up the irq penalties and improperly chose
IRQ15 for a PCI device on this system.

thanks,
-Len

[-- Attachment #2: link.patch --]
[-- Type: text/plain, Size: 1437 bytes --]

===== drivers/acpi/pci_link.c 1.36 vs edited =====
--- 1.36/drivers/acpi/pci_link.c 2004-11-23 00:02:39 -05:00
+++ edited/drivers/acpi/pci_link.c 2004-11-24 17:41:15 -05:00
@@ -468,6 +468,17 @@
/* >IRQ15 */
};

+void
+acpi_irq_penalty_dump(char *string)
+{
+ int i;
+
+ printk("ACPI %s: ", string);
+ for (i = 0; i < ACPI_MAX_ISA_IRQ; ++i) {
+ printk("%X ", acpi_irq_penalty[i]);
+ }
+ printk("\n");
+}
int __init
acpi_irq_penalty_init(void)
{
@@ -476,6 +487,7 @@
int i = 0;

ACPI_FUNCTION_TRACE("acpi_irq_penalty_init");
+ acpi_irq_penalty_dump("enter init");

/*
* Update penalties to facilitate IRQ balancing.
@@ -507,6 +519,7 @@
/* Add a penalty for the SCI */
acpi_irq_penalty[acpi_fadt.sci_int] += PIRQ_PENALTY_PCI_USING;

+ acpi_irq_penalty_dump("exit init");
return_VALUE(0);
}

@@ -547,6 +560,7 @@
irq = link->irq.possible[link->irq.possible_count - 1];
}

+acpi_irq_penalty_dump("allocate");
if (acpi_irq_balance || !link->irq.active) {
/*
* Select the best IRQ. This is done in reverse to promote
@@ -570,6 +584,7 @@
printk(PREFIX "%s [%s] enabled at IRQ %d\n",
acpi_device_name(link->device),
acpi_device_bid(link->device), link->irq.active);
+acpi_irq_penalty_dump("allocated");
}

link->irq.initialized = 1;
@@ -789,6 +804,7 @@
void acpi_penalize_isa_irq(int irq)
{
acpi_irq_penalty[irq] += PIRQ_PENALTY_ISA_USED;
+acpi_irq_penalty_dump("isa");
}

/*