]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blobdiff - drivers/irqchip/irq-gic-v3-its-pci-msi.c
irqchip/gic-v3-its: Move minimum LPI requirements to individual busses
[mirror_ubuntu-hirsute-kernel.git] / drivers / irqchip / irq-gic-v3-its-pci-msi.c
index 25a98de5cfb2831fa61d33fd3be3ef30d3f4e534..75c3cafabc6a59b49ba542d8028876b776eca4b1 100644 (file)
@@ -86,8 +86,10 @@ static int its_pci_msi_prepare(struct irq_domain *domain, struct device *dev,
        /* ITS specific DeviceID, as the core ITS ignores dev. */
        info->scratchpad[0].ul = pci_msi_domain_get_msi_rid(domain, pdev);
 
-       return msi_info->ops->msi_prepare(domain->parent,
-                                         dev, max(nvec, alias_count), info);
+       /* Allocate at least 32 MSIs, and always as a power of 2 */
+       nvec = max(nvec, alias_count);
+       nvec = max_t(int, 32, roundup_pow_of_two(nvec));
+       return msi_info->ops->msi_prepare(domain->parent, dev, nvec, info);
 }
 
 static struct msi_domain_ops its_pci_msi_ops = {