> > What is going wrong? > > > > I don't know any 5708 hardware details but pci_alloc_msi() may have > failed. AFAIK just checking pci_alloc_msi() == 0 is not enough > and you may have to check count is 1 before proceeding to use MSI. > I've also noted that MSIX supports needs additional resource to > enable MSIX table/PBA on nfe(4) hardware. I'm not sure it's applicable > to you, though. The 5708 is a PCI-X controller behind a PCIe to PCI-X bridge. There are no known problems with MSI on the device and it works correctly when configured under Linx (and apparently under FreeBSD too). There's just this problem with releasing the MSI resource. MSI-X is not supported on this controller. > > I guess the following code could be changed from > if (count == 1 && pci_alloc_msi(dev, &count) == 0) { > rid = 1; > sc->bce_flags |= BCE_USING_MSI_FLAG; > } else > rid = 0; > > To: > if (count == 1 && pci_alloc_msi(dev, &count) == 0 && > count == 1) { > > ^^^^^^^^^^ > rid = 1; > sc->bce_flags |= BCE_USING_MSI_FLAG; > } else > rid = 0; > > It would be even better if you can provide a > tunable(hw.bce.msi_disable) > to disable MSI capability for bce(4). Thanks Pyun but that doesn't appear to be the problem. The call to pci_alloc_msi() is returning correctly with a count of 1. I can certainly add a sysctl to disable MSI but that just masks the problem without getting to the root cause. DaveReceived on Tue May 15 2007 - 15:08:18 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:10 UTC