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