Unfortunately, the storm is still there with this patch. On 2015-5-15, at 18:28, Roger Pau Monné <roger....@citrix.com> wrote: > > El 15/05/15 a les 16.42, Eggert, Lars ha escrit: >> On 2015-5-15, at 16:35, Roger Pau Monné <roger....@citrix.com> wrote: >>> >>> Yes, but I've realized that isci for example passes an uint32_t instead >>> of an int, so it might be best to set it to 0. >> >> Here is what I see now: >> >> isci0: <Intel(R) C600 Series Chipset SAS Controller (SATA mode)> port >> 0x6000-0x60ff mem 0xde07c000-0xde07ffff,0xddc00000-0xddffffff irq 16 at >> device 0.0 on pci10 >> isci0: attempting to allocate 2 MSI-X vectors (2 supported) >> ISCI: isci->num_interrupts: 2 max_msix_messages: 2 >> isci: 1:000089 ISCI bus_alloc_resource failed >> >> The storm is still there. > > Yes, after looking at the code, isci really needs to check for the > return value of pci_alloc_msix, because num_interrupts is not updated > if the allocation fails. Following patch should hopefully fix it, > please give it a try. > > Roger. > --- > diff --git a/sys/dev/isci/isci_interrupt.c b/sys/dev/isci/isci_interrupt.c > index 52c64f7..f331f3c 100644 > --- a/sys/dev/isci/isci_interrupt.c > +++ b/sys/dev/isci/isci_interrupt.c > @@ -128,6 +128,7 @@ isci_interrupt_setup(struct isci_softc *isci) > isci->controller_count; > BOOL use_msix = FALSE; > uint32_t force_legacy_interrupts = 0; > + int rc; > > TUNABLE_INT_FETCH("hw.isci.force_legacy_interrupts", > &force_legacy_interrupts); > @@ -136,8 +137,8 @@ isci_interrupt_setup(struct isci_softc *isci) > pci_msix_count(isci->device) >= max_msix_messages) { > > isci->num_interrupts = max_msix_messages; > - pci_alloc_msix(isci->device, &isci->num_interrupts); > - if (isci->num_interrupts == max_msix_messages) > + rc = pci_alloc_msix(isci->device, &isci->num_interrupts); > + if (rc == 0 && isci->num_interrupts == max_msix_messages) > use_msix = TRUE; > } > >
signature.asc
Description: Message signed with OpenPGP using GPGMail