On Wed, Sep 18, 2013 at 09:22:31AM -0500, Tejun Heo wrote: > > > We have a small number of MSIs available, limited by hardware & > > > firmware, if we don't impose a quota then the first device that probes > > > will get most/all of the MSIs and other devices miss out. > > > > Out of curiosity - how pSeries has had done it without quotas before > > 448e2ca ("powerpc/pseries: Implement a quota system for MSIs")? > > Hmmm... do we need to treat this any differently? If the platform > can't allocate full range of requested MSIs, just failing should be > enough regardless of why such allocation can't be met, no? That depends from what "full range of requested MSIs" is. If that is a maximum number of MSIs the controller advertised, then no. As MSI design essentially allows devices to operate in lower-than-maximum modes it is responsibility of a caller to decide how many vectors to request. So in case of pSeries I think it is completely legitimate to request lessers to overcome the platform limitation and let all devices work. > I really think what we should do is > > * Determine the number of MSIs the controller wants. Don't worry > about quotas or limits or anything. Just determine the number > necessary to enable enhanced interrupt handling. Actually, I do not see much contradiction with what I proposed. The key words here "determine the number of MSIs the controller wants". In general case it is not what pci_msix_table_size() returns (or at least we should not limit ourselves to it) - there could be non- standard means to report number of MSIs: hardcoded, version-dependant, device-specific registers etc. Next, if we opt to determine the number of MSIs by non-MSI standard means then there is no reason not to call pci_get_msix_limit() (or whatever) at this step. The question how I see it - do we want pci_get_msix_limit() interface as part of the MSI framework or do we want it pSeries-specific? > * Try allocating that number of MSIs. If it fails, then just revert > to single interrupt mode. It's not the end of the world and mostly > guaranteed to work. Let's please not even try to do partial > multiple interrupts. I really don't think it's worth the risk or > complexity. Being Captain Obvious here, but it is up to the device driver to handle a failure. There could be no such option as single MSI mode after all :) > Thanks. > > -- > tejun -- Regards, Alexander Gordeev agordeev@xxxxxxxxxx -- 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