In Stian's system, if link device is enabled in IOAPIC mode, pci device
will connect to link device and link device connect to IOAPIC pin. That
is the device's interrupt is decided by link's irq. If link device is
disabled, pci device is connected to IOAPIC pin.
There are two devices who share one link device in pic mode, but in
IOAPIC mode, _PRT table reported one device connected to IOAPIC pin and
the other connected to the link device. If the link device is enabled,
the device connected to IOAPIC pin directly will break as _PRT reported
interrupt for the device doesn't reflect the case link device is
enabled. If we leave the link device disabled, the device which
connected to the link device doesn't break. It appears the link device
is just used to get an interrupt number instead of for real interrupt
routing. So in this patch, if current irq model is IOAPIC, we will leave
link device disabled and just use its active irq number.

Signed-off-by: Shaohua Li<[EMAIL PROTECTED]>

diff --git a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
index d53bd98..655bb49 100644
--- a/drivers/acpi/pci_link.c
+++ b/drivers/acpi/pci_link.c
@@ -527,6 +527,10 @@ static int acpi_pci_link_allocate(struct
        int i;
 
 
+       if (acpi_irq_model == ACPI_IRQ_MODEL_IOAPIC && link->irq.active) {
+               link->irq.initialized = 1;
+               return 0;
+       }
        if (link->irq.initialized) {
                if (link->refcnt == 0)
                        /* This means the link is disabled but initialized */
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to