On Mon, Nov 21 2022 at 03:42, Kevin Tian wrote: >> From: Thomas Gleixner <tglx@xxxxxxxxxxxxx> >> On Fri, Nov 18 2022 at 08:53, Kevin Tian wrote: >> > Out of curiosity. Why don't we provide an unlocked version of >> > msi_domain_alloc_irqs_all()? >> >> -ENOUSER > > msi_domain_alloc_irqs() and msi_domain_alloc_irqs_descs_locked() > are a pair. Sure, but if there is no use case why should we provide the interface? > What I didn't get was why the unlocked invocation in this patch > is replaced by a range-based helper while the locked invocation > in previous patch16 was replaced by an all-based helper: > > if (domain && irq_domain_is_hierarchy(domain)) > - return msi_domain_alloc_irqs_descs_locked(domain, &dev->dev, nvec); > + return msi_domain_alloc_irqs_all_locked(&dev->dev, MSI_DEFAULT_DOMAIN, nvec); > > The reason could probably be marked out in the commit msg. The point is that range based is obviously the better choice because it's precise. Especially for domains which let the core code allocate the MSI descriptors a precise range is required. The old interface was kinda blury there. In case of PCI/MSI[-X] the MSI descriptors are allocated by the PCI core upfront and there are allocations which have gaps in the indices, so the range is not well defined and we just keep using the existing scan all mechanism. Thanks, tglx