I just got a few more cards in and among them is a pair of CT4780s - one of which is now in my server and the other up for grabs Who wants it? On Wed, 2006-10-18 at 19:21 +0200, Takashi Iwai wrote: > At Wed, 18 Oct 2006 19:12:50 +0200, > I wrote: > > > > At Wed, 18 Oct 2006 10:02:19 -0700, > > Stephen Hemminger wrote: > > > > > > On Wed, 18 Oct 2006 12:24:54 +0200 > > > Takashi Iwai <tiwai@xxxxxxx> wrote: > > > > > > > At Tue, 17 Oct 2006 14:40:53 -0700, > > > > Stephen Hemminger wrote: > > > > > > > > > > On Tue, 17 Oct 2006 23:13:01 +0200 > > > > > Adrian Bunk <bunk@xxxxxxxxx> wrote: > > > > > > > > > > > On Thu, Oct 05, 2006 at 11:08:57PM +0200, Prakash Punnoor wrote: > > > > > > > Am Donnerstag 05 Oktober 2006 19:30 schrieb Fatih A????c??: > > > > > > > > 2006/10/5, Prakash Punnoor <prakash@xxxxxxxxxx>: > > > > > > > > > Hi, > > > > > > > > > > > > > > > > > > subjects say it all. Without irqpoll my nic doesn't work anymore. I added > > > > > > > > > Ingo > > > > > > > > > to cc, as my IRQs look different, so it may be a prob of APIC routing or > > > > > > > > > the > > > > > > > > > like. > > > > > > > > > > > > > > > > Can you try booting with pci=nomsi ? I have a similar problem with my > > > > > > > > > > > > > > I used snd-hda-intel.disable_msi=1 and this actually helped! Now the nforce > > > > > > > nic works w/o problems. So it was the audio driver causing havoc on the nic. > > > > > > >... > > > > > > > > > > > > Unless someone finds and fixes what causes such problems, I'd therefore > > > > > > suggest the patch below to let MSI support to be turned off by default. > > > > > > > > > > > > cu > > > > > > Adrian > > > > > > > > > > > > > > > > It shouldn't be that hard to write a small bit of code to force an interrupt > > > > > and catch it, that's what other drivers do to workaround the BIOS braindamage > > > > > that seems to be rampant (until M$ Vista comes out and supports MSI). > > > > > > > > OK, what about a patch like below? > > > > > > > > It's against the latest ALSA tree, so please pull alsa.git from > > > > git://kernel.org/pub/scm/linux/kernel/git/perex/alsa.git > > > > before applying it (this tree includes only patches to be pushed to > > > > 2.6.19). > > > > > > > > > > > > Takashi > > > > > > > > > > Don't you need to check return value from pci_enable_msi()? > > > > Yes, it would be better to check the value and reset chip->msi if > > not successful. But it's not a fatal error, so the current code > > should work. > > The below is the revised patch. > > > Takashi > > diff -r 74a0618b5f3e sound/pci/hda/hda_intel.c > --- a/sound/pci/hda/hda_intel.c Wed Oct 18 19:09:46 2006 +0200 > +++ b/sound/pci/hda/hda_intel.c Wed Oct 18 19:17:48 2006 +0200 > @@ -337,6 +337,7 @@ struct azx { > unsigned int initialized :1; > unsigned int single_cmd :1; > unsigned int polling_mode :1; > + unsigned int msi :1; > }; > > /* driver types */ > @@ -397,6 +398,7 @@ static char *driver_short_names[] __devi > */ > #define upper_32bit(addr) (sizeof(addr) > 4 ? (u32)((addr) >> 32) : (u32)0) > > +static int azx_acquire_irq(struct azx *chip, int do_disconnect); > > /* > * Interface for HD codec > @@ -535,6 +537,18 @@ static unsigned int azx_rirb_get_respons > return chip->rirb.res; /* the last value */ > schedule_timeout_interruptible(1); > } while (time_after_eq(timeout, jiffies)); > + > + if (chip->msi) { > + snd_printk(KERN_WARNING "hda_intel: No response from codec, " > + "disabling MSI...\n"); > + free_irq(chip->irq, chip); > + chip->irq = -1; > + pci_disable_msi(chip->pci); > + chip->msi = 0; > + if (azx_acquire_irq(chip, 1) < 0) > + return -1; > + goto again; > + } > > if (!chip->polling_mode) { > snd_printk(KERN_WARNING "hda_intel: azx_get_response timeout, " > @@ -1364,6 +1378,20 @@ static int __devinit azx_init_stream(str > return 0; > } > > +static int azx_acquire_irq(struct azx *chip, int do_disconnect) > +{ > + if (request_irq(chip->pci->irq, azx_interrupt, IRQF_DISABLED|IRQF_SHARED, > + "HDA Intel", chip)) { > + printk(KERN_ERR "hda-intel: unable to grab IRQ %d, " > + "disabling device\n", chip->pci->irq); > + if (do_disconnect) > + snd_card_disconnect(chip->card); > + return -1; > + } > + chip->irq = chip->pci->irq; > + return 0; > +} > + > > #ifdef CONFIG_PM > /* > @@ -1385,7 +1413,7 @@ static int azx_suspend(struct pci_dev *p > free_irq(chip->irq, chip); > chip->irq = -1; > } > - if (!disable_msi) > + if (chip->msi) > pci_disable_msi(chip->pci); > pci_disable_device(pci); > pci_save_state(pci); > @@ -1407,16 +1435,11 @@ static int azx_resume(struct pci_dev *pc > return -EIO; > } > pci_set_master(pci); > - if (!disable_msi) > - pci_enable_msi(pci); > - if (request_irq(pci->irq, azx_interrupt, IRQF_DISABLED|IRQF_SHARED, > - "HDA Intel", chip)) { > - printk(KERN_ERR "hda-intel: unable to grab IRQ %d, " > - "disabling device\n", pci->irq); > - snd_card_disconnect(card); > + if (chip->msi) > + if (pci_enable_msi(pci) < 0) > + chip->msi = 0; > + if (azx_acquire_irq(chip, 1) < 0) > return -EIO; > - } > - chip->irq = pci->irq; > azx_init_chip(chip); > snd_hda_resume(chip->bus); > snd_power_change_state(card, SNDRV_CTL_POWER_D0); > @@ -1452,7 +1475,7 @@ static int azx_free(struct azx *chip) > synchronize_irq(chip->irq); > free_irq(chip->irq, (void*)chip); > } > - if (!disable_msi) > + if (chip->msi) > pci_disable_msi(chip->pci); > if (chip->remap_addr) > iounmap(chip->remap_addr); > @@ -1508,6 +1531,7 @@ static int __devinit azx_create(struct s > chip->pci = pci; > chip->irq = -1; > chip->driver_type = driver_type; > + chip->msi = !disable_msi; > > chip->position_fix = position_fix; > chip->single_cmd = single_cmd; > @@ -1537,16 +1561,14 @@ static int __devinit azx_create(struct s > goto errout; > } > > - if (!disable_msi) > - pci_enable_msi(pci); > - > - if (request_irq(pci->irq, azx_interrupt, IRQF_DISABLED|IRQF_SHARED, > - "HDA Intel", (void*)chip)) { > - snd_printk(KERN_ERR SFX "unable to grab IRQ %d\n", pci->irq); > + if (chip->msi) > + if (pci_enable_msi(pci) < 0) > + chip->msi = 0; > + > + if (azx_acquire_irq(chip, 0) < 0) { > err = -EBUSY; > goto errout; > } > - chip->irq = pci->irq; > > pci_set_master(pci); > synchronize_irq(chip->irq); > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > Alsa-devel mailing list > Alsa-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.sourceforge.net/lists/listinfo/alsa-devel ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/alsa-devel