Yinghai Lu wrote:
Please try the patch about using pci_intx.
it could use msi.
It can't cold boot with this one (with pci=routeirq or not)
The last visible boot messages are
Interrupt Link [AAZA] enabled at IRQ 20
Interrupt 0000:00:0e.1[B]->Link [AAZA] -> GSI 20 (level,low) -> IRQ 20
Olivier
YH
------------------------------------------------------------------------
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index e35cfd3..88b99ab 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -547,6 +547,7 @@ static unsigned int azx_rirb_get_respons
chip->msi = 0;
if (azx_acquire_irq(chip, 1) < 0)
return -1;
+ pci_intx(chip->pci, 1);
goto again;
}
@@ -1435,11 +1436,16 @@ static int azx_resume(struct pci_dev *pc
return -EIO;
}
pci_set_master(pci);
- if (chip->msi)
+ if (chip->msi) {
+ pci_intx(pci, 0);
if (pci_enable_msi(pci) < 0)
chip->msi = 0;
+ }
if (azx_acquire_irq(chip, 1) < 0)
return -EIO;
+
+ if (!chip->msi)
+ pci_intx(pci, 1);
azx_init_chip(chip);
snd_hda_resume(chip->bus);
snd_power_change_state(card, SNDRV_CTL_POWER_D0);
@@ -1531,7 +1537,8 @@ static int __devinit azx_create(struct s
chip->pci = pci;
chip->irq = -1;
chip->driver_type = driver_type;
- chip->msi = enable_msi;
+// chip->msi = enable_msi;
+ chip->msi = 1;
chip->position_fix = position_fix;
chip->single_cmd = single_cmd;
@@ -1561,14 +1568,19 @@ #endif
goto errout;
}
- if (chip->msi)
+ if (chip->msi) {
+ pci_intx(pci, 0);
if (pci_enable_msi(pci) < 0)
chip->msi = 0;
+ }
if (azx_acquire_irq(chip, 0) < 0) {
err = -EBUSY;
goto errout;
}
+
+ if(!chip->msi)
+ pci_intx(pci, 1);
pci_set_master(pci);
synchronize_irq(chip->irq);
--
Laudator temporis acti (Horace, 173)
Donner c'est donner, repeindre ses volets
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/