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/

Reply via email to