Date: Wed, 11 Mar 2009 14:47:20 +0100 From: "Arno J. Klaassen" <arno@heho.snv.jussieu.fr> To: Scott Long <scottl@samsco.org> Cc: pyunyh@gmail.com, current@freebsd.org, Robert Noland <rnoland@freebsd.org> Subject: Re: msi broken? Message-ID: <wpab7s6ujb.fsf@heho.snv.jussieu.fr> In-Reply-To: <49B700AD.7010500@samsco.org> (Scott Long's message of "Tue\, 10 Mar 2009 18\:07\:09 -0600") References: <wp1vt5bhc4.fsf@heho.snv.jussieu.fr> <200903101425.28608.jhb@freebsd.org> <wpab7tp5jj.fsf@heho.snv.jussieu.fr> <200903101637.31039.jhb@freebsd.org> <wpmybtj6h5.fsf@heho.snv.jussieu.fr> <1236728841.2091.5.camel@balrog.2hip.net> <49B700AD.7010500@samsco.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Scott Long <scottl@samsco.org> writes: > Robert Noland wrote: >> On Wed, 2009-03-11 at 00:36 +0100, Arno J. Klaassen wrote: >>> John Baldwin <jhb@freebsd.org> writes: >>> >>>> On Tuesday 10 March 2009 3:00:00 pm Arno J. Klaassen wrote: >>>>> John Baldwin <jhb@freebsd.org> writes: >>>>> >>>>>> On Tuesday 10 March 2009 10:08:59 am Arno J. Klaassen wrote: >>>>>>> Hello, >>>>>>> >>>>>>> when upgrading this morning from a March 1 -current, if_bge >>>>>>> stopped working (and irq256: bge0 not showing up in >>>>>>> vmstat -i ). Setting hw.pci.enable_msi="0" makes it work again. >>>>>> Can you get a verbose dmesg (boot -v) with MSI enabled? >>>> Ok, so you are getting MSI interrupts assigned and routed ok. Can >>>> you try disabling the code that sets the INTx_MASK flag in the PCI >>>> command register in sys/dev/pci/pci.c:pci_setup_intr()? >>> grr : "rid" sure is 1 for the if_bge interrupt. Please tell me which >>> lines of code set the INTx_MASK flag. Thanx, more tomorrow. >> >> if rid is 0, the chip should be using INTx. if rid > 0 then it should >> be using MSI. >> >> >> } >> mte->mte_handlers++; >> } >> #if 0 /* Comment this out/* >> /* Make sure that INTx is disabled if we are using MSI/MSIX */ >> pci_set_command_bit(dev, child, PCIM_CMD_INTxDIS); >> #endif >> bad: >> if (error) { >> (void)bus_generic_teardown_intr(dev, child, irq, >> cookie); >> return (error); >> >> robert. >> > > If this turns out to help this particular gentleman, yes it does ;) with otherwise clean sources sorry I did not understand directly what you asked me to do > then I'd like to > suggest a further test of having the bge driver explicitly reset the > the INTxDIS bit after calling bus_setup_intr(). If that works, then I > strongly suggest that we treat this as a localized quirk that drivers > will need to manage for themselves, and not something that the PCI layer > should try to control. It might be possible to set up some sort of > hint system for drivers to programatically tell the PCI layer to treat > this bit special for a particular device instance. What I don't want > to see is the PCI layer growing yet another hidden quirk table of > PCI IDs. This kind of quirk knowledge belongs in the driver. iff you'd like I can test things on this board for a while ... Thank you very much, Arno
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?wpab7s6ujb.fsf>