From: Tantilov, E. S <emi...@in...> - 2010-06-29 19:52:02
|
Andre Detsch wrote: > Jeff, Peter, > > I've detected a regression in ixgbe MSI-X initialization when running > on a ppc64 machine with 2 cpu cores/threads. > > This was the patch that introduced the regression: > http://git.kernel.org/?p=linux/kernel/git/davem/net-2.6.git;a=commitdiff;h=342bde1b70c79bfc8509b017b3987f3c7541ff8e > > With the current code, MSI-X initialization fails. Thanks for reporting and apologies for the late reply. > The reason is that the firmware in power machines only allocate a > number of queues that is a power of 2. When a request is made for a > number of queues that is not a power of 2, the value is rounded down. I had no problem getting 3 vectors on G5 MAC (ppc64). While this is probably Not the best representation of PPC HW - looks like the `power of 2` rule does not apply to all PPC systems? > So, after the patch, a typical v_budget value on a system with > num_online_cpus==2 is 3. The ppc FW gets this request and allocates > only 2 queues (nearest power of 2 less than 3), which is less than the > minimum accepted inside the driver (MIN_MSIX_COUNT == 3), causing the > MSI-X initialization to fail. > Is there some acceptable way to avoid this problem? > A lower limit of 4 would have to be imposed to v_budget somehow. > > On a side note, it seems that, after the patch, MSI-X will never > succeed on any machine with only 1 cpu core/thread, since v_budget > will be no more than 2 (which is less than MIN_MSIX_COUNT). Is this > intentional? On systems with 1 CPU the driver will fall back to using MSI, which is OK. Thanks, Emil |