Messages in this thread | | | Date | Thu, 07 May 2009 13:44:38 +0300 | From | Avi Kivity <> | Subject | Re: [PATCH] msi-x: let drivers retry when not enough vectors |
| |
Michael Ellerman wrote: > Not to mention that there's no guarantee that you'll get as many > interrupts as the device supports, so you should really be coding to > cope with that anyway. Like the example in MSI-HOWTO.txt: > > 197 static int foo_driver_enable_msix(struct foo_adapter *adapter, int nvec) > 198 { > 199 while (nvec >= FOO_DRIVER_MINIMUM_NVEC) { > 200 rc = pci_enable_msix(adapter->pdev, > 201 adapter->msix_entries, nvec); > 202 if (rc > 0) > 203 nvec = rc; > 204 else > 205 return rc; > 206 } > 207 > 208 return -ENOSPC; > 209 } > > So I agree, this patch is an improvement. >
I imagine this loop is present in many drivers. So why not add a helper
static int pci_enable_msix_min(struct foo_adapter *adapter, int min_nvec) { int nvec = 2048;
while (nvec >= min_nvec) { rc = pci_enable_msix(adapter->pdev, adapter->msix_entries, nvec); if (rc == 0) return nvec; else if (rc > 0) nvec = rc; else return rc; } return -ENOSPC; }
-- error compiling committee.c: too many arguments to function
| |