The pseries firmware currently refuses any non power of two MSI-X request. Unfortunately most network drivers end up asking for that because they want a power of two for RX queues and one or two extra for everything else.
This patch rounds up the firmware request to the next power of two if the quota allows it. Signed-off-by: Anton Blanchard <an...@samba.org> --- Index: linux-build/arch/powerpc/platforms/pseries/msi.c =================================================================== --- linux-build.orig/arch/powerpc/platforms/pseries/msi.c 2012-06-03 20:49:29.082280031 +1000 +++ linux-build/arch/powerpc/platforms/pseries/msi.c 2012-06-04 09:06:55.909732276 +1000 @@ -402,6 +402,18 @@ static int rtas_setup_msi_irqs(struct pc return -EINVAL; /* + * Firmware currently refuse any non power of two allocation + * so we round up if the quota will allow it. + */ + if (type == PCI_CAP_ID_MSIX) { + int m = roundup_pow_of_two(nvec); + int quota = msi_quota_for_device(pdev, m); + + if (quota >= m) + nvec = m; + } + + /* * Try the new more explicit firmware interface, if that fails fall * back to the old interface. The old interface is known to never * return MSI-Xs. _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev