Re: [PATCH] msi-x: let drivers retry when not enough vectors

From: Avi Kivity
Date: Thu May 07 2009 - 06:46:10 EST


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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/