On Wed, Jun 5, 2013 at 2:56 PM, Sebastian Andrzej Siewior <sebastian@xxxxxxxxxxxxx> wrote: > On Mon, May 13, 2013 at 11:05:48AM +0200, Alexander Gordeev wrote: >> Note, although the existing 'msi_desc::multiple' field might seem >> redundant, in fact in does not. In general case the number of MSIs a >> PCI device is initialized with is not necessarily the closest power- >> of-two value of the number of MSIs the device will send. Thus, in >> theory it would not be always possible to derive the former from the >> latter and we need to keep them both, to stress this corner case. >> Besides, since 'msi_desc::multiple' is a bitfield, throwing it out >> would not save us any space. > > The last paragraph makes me curious. The only place where 'multiple' is set is > in do_setup_msi_irqs() and this uses the next power of two for it. And since a > device is not enabled twice, it is not overridden. > So it should be possible to compute 'multiple' out of 'nvec' but it saves > cycles not do to so. I agree to keep 'multiple' but your argument does not > seem to make sense. Alexander had an example device that advertised 16 vectors, but the driver knew that it could only generate 6. That's a case where we can't compute 'multiple' from 'nvec' (assuming the driver supplies 'nvec == 6'). If we just rounded up to compute 'multiple', I think we'd compute 8 instead of 16. > While nitpicking, 'nvec' might deserve a better comment than 'number of > messages' since it holds the number of allocated interrupts. :) I did change the name 'nvec' to 'nvec_used', which should help a bit. But I agree that it's still somewhat confusing. BTW, the patches actually in my tree are at http://git.kernel.org/cgit/linux/kernel/git/helgaas/pci.git/log/?h=pci/alexander-msi (I tweaked this name and some comments slightly). Bjorn -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html