MSI interrupts.

John Baldwin jhb at freebsd.org
Mon Apr 25 18:08:32 UTC 2011


On Thursday, April 21, 2011 7:51:32 am Bret Ketchum wrote:
>     As an experiment I made align equal to count in apic_alloc_vectors to
> mimic the way MSIX vectors are assigned and all my issue went away..

Hmm, it shouldn't be working then.  Rather, I think you are making the system
violate the spec. :)

When a PCI device uses MSI (not MSI-X) with multiple vectors, it is required
that the low N bits of the 'data' register all be zeros, and that the device
will set the low N bits to the individual message number.

Can you do 'show lapic' at a DDB prompt (you can just use Ctrl-Atl-Break or
the like to drop into the debugger) and reply with the output?  It's a bit odd
that you don't have an aligned block of 16 vectors available.

> On Tue, Apr 12, 2011 at 8:16 AM, Bret Ketchum <bcketchum at gmail.com> wrote:
> 
> >
> >     I've a roll-your-own driver for FreeBSD 8.x that uses MSI interrupts
> > for PCI-E HBAs where one or more will be installed in a off-the-shelf amd64
> > pizza box. The driver is using bus_setup_intr() and depending upon the slots
> > the HBAs are install I see log messages from apic_alloc_vectors(), for
> > example:
> >
> > Apr 12 06:44:15 mfsbsd kernel: xxxpci10: attempting to allocate 1 MSI
> > vectors (16 supported)
> > Apr 12 06:44:15 mfsbsd kernel: APIC: Couldn't find APIC vectors for 1 IRQs
> > Apr 12 06:44:15 mfsbsd kernel: ioapic1: routing intpin 13 (PCI IRQ 37) to
> > lapic 0 vector 59
> >
> >     Using vmstat -ia:
> >
> > interrupt                          total       rate
> > irq37: xxxpci10                       74          0
> >
> >     The problem appears to be that HBA interrupts are not being delivered
> > to the driver. If I swap cards around in slots I can eliminate the message
> > and:
> >
> > Apr 12 06:44:15 mfsbsd kernel: msi: routing MSI IRQ 266 to local APIC 0
> > vector 80
> >
> >     And interrupts appear to be delivered properly. Before I dive in, can
> > anyone explain this behavior?
> >
> >     Thanks in advance.
> >
> >     Dr.
> >
> _______________________________________________
> freebsd-drivers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-drivers
> To unsubscribe, send any mail to "freebsd-drivers-unsubscribe at freebsd.org"
> 

-- 
John Baldwin


More information about the freebsd-drivers mailing list