pci_alloc_msi error

John Baldwin jhb at freebsd.org
Fri Dec 9 16:04:24 UTC 2011


On Friday, December 09, 2011 9:31:04 am lixin.pang at emc.com wrote:
> Thanks John,  It turned that it's blacklisted.  The reason is that some how 
it does not recognizes it as pcie or pcix chipset.  
> 
> I noticed that the MSI_CAP_NXT ptr is null for our PCI device, is that the 
reason why it doesn't recognize it as pcie or pcix?  I looked at the code, 
pci_read_extcap is the only place that the pcie_chipset and pcix_chipset got 
set.  

It wants that set on at least some device somewhere in the system.  I can look 
at your pciconf -lc output if that is something you are able to share.

> I changed the parameter pci_honor_msi_blacklist to 0 and everything worked.

I think there is a tunable and sysctl to let you do this as well: 
'hw.pci.honor_msi_blacklist'.

> Lixin
> 
> -----Original Message-----
> From: John Baldwin [mailto:jhb at freebsd.org] 
> Sent: Friday, December 09, 2011 8:02 AM
> To: freebsd-drivers at freebsd.org
> Cc: pang, lixin
> Subject: Re: pci_alloc_msi error
> 
> On Thursday, December 08, 2011 8:56:39 pm lixin.pang at emc.com wrote:
> > I'm writing a PCI device driver for freebsd 7.3.  In the driver attach
> function,
> > 
> > pci_enable_busmaster(dev) returns 0,
> > 
> > pci_msi_count(dev) returns 1,
> > 
> > however, error = pci_alloc_msi(dev, &msi) failed with error == 6 
> > (device not
> configured).
> 
> I assume you set msi to 1 before you called it?  (It is both an input and 
output parameter.)
> 
> > Am I missing any steps before calling pci_alloc_msi?
> 
> I don't believe so.  The reasons I see that pci_alloc_msi() will fail with 
ENXIO are:
> 
> - the driver has allocated its INTx IRQ via bus_alloc_resource() of rid 0
>   of the SYS_RES_IRQ type
> - the driver has already allocated MSI or MSI-X IRQs
> - MSI is blacklisted for the system or for a parent PCI-PCI bridge
> - APIC mode is disabled or your system has an unsupported CPU (only
>   Intel, AMD, and certain VIA CPUs are known to work, other CPUs
>   might work, we just haven't heard of it).
> - The system is completely out of MSI IRQ tokens (there are 512 of
>   these, so this is doubtful)
> 
> --
> John Baldwin
> 
> 

-- 
John Baldwin


More information about the freebsd-drivers mailing list