MSI interrupts.

Bret Ketchum bcketchum at gmail.com
Tue Apr 12 13:43:45 UTC 2011


    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.


More information about the freebsd-drivers mailing list