@@ -508,6 +508,8 @@ static int acpi_irq_get_penalty(int irq)
penalty += PIRQ_PENALTY_ISA_ALWAYS;
else
penalty += PIRQ_PENALTY_PCI_USING;
+
+ pr_info("%s:%d adding SCI penalty: 0x%x \n", __func__, __LINE__, penalty);
}
if (irq < ACPI_MAX_ISA_IRQS)
@@ -592,6 +594,10 @@ static int acpi_pci_link_allocate(struct acpi_pci_link *link)
else
irq = link->irq.possible[link->irq.possible_count - 1];
+ pr_info("irq : %d\n", irq);
+ pr_info("acpi_irq_balance : %d\n", acpi_irq_balance);
+ pr_info("link->irq.active : %d\n", link->irq.active);
+ pr_info("acpi_gbl_FADT.sci_interrupt : %d\n", acpi_gbl_FADT.sci_interrupt);
if (acpi_irq_balance || !link->irq.active) {
/*
* Select the best IRQ. This is done in reverse to promote
@@ -599,11 +605,22 @@ static int acpi_pci_link_allocate(struct acpi_pci_link *link)
*/
for (i = (link->irq.possible_count - 1); i >= 0; i--) {
if (acpi_irq_get_penalty(irq) >
- acpi_irq_get_penalty(link->irq.possible[i]))
+ acpi_irq_get_penalty(link->irq.possible[i])) {
+ pr_info("acpi_irq_get_penalty(%d) : 0x%x\n", link->irq.possible[i], acpi_irq_get_penalty(link->irq.possible[i]));
+ pr_info("acpi_irq_get_penalty(%d) : 0x%x\n", irq, acpi_irq_get_penalty(irq));
irq = link->irq.possible[i];
+ }
}
}
if (acpi_irq_get_penalty(irq) >= PIRQ_PENALTY_ISA_ALWAYS) {
+ for (i = (link->irq.possible_count - 1); i >= 0; i--) {
+ pr_info("penalty[%d] = 0x%x\n",
+ link->irq.possible[i],
+ acpi_irq_get_penalty(link->irq.possible[i]));
+ }
+ pr_info("irq : %d\n", irq);
+ pr_info("acpi_gbl_FADT.sci_interrupt : %d\n", acpi_gbl_FADT.sci_interrupt);
+
printk(KERN_ERR PREFIX "No IRQ available for %s [%s]. "
"Try pci=noacpi or acpi=off\n",
acpi_device_name(link->device),
@@ -870,9 +887,12 @@ static int __init acpi_irq_penalty_update(char *str, int used)
*/
void acpi_penalize_isa_irq(int irq, int active)
{
- if ((irq >= 0) && (irq < ARRAY_SIZE(acpi_isa_irq_penalty)))
+ if ((irq >= 0) && (irq < ARRAY_SIZE(acpi_isa_irq_penalty))) {
acpi_isa_irq_penalty[irq] = acpi_irq_get_penalty(irq) +
(active ? PIRQ_PENALTY_ISA_USED : PIRQ_PENALTY_PCI_USING);
+ pr_info("%s:%d acpi_isa_irq_penalty[%d]=0x%x active = %d\n", __func__,
+ __LINE__, irq, acpi_irq_get_penalty(irq), active);
+ }
}
bool acpi_isa_irq_available(int irq)