]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
PCI: hv: Allow dynamic MSI-X vector allocation
authorShradha Gupta <shradhagupta@linux.microsoft.com>
Wed, 11 Jun 2025 14:10:15 +0000 (07:10 -0700)
committerShradha Gupta <shradhagupta@linux.microsoft.com>
Tue, 17 Jun 2025 06:15:14 +0000 (06:15 +0000)
Allow dynamic MSI-X vector allocation for pci_hyperv PCI controller
by adding support for the flag MSI_FLAG_PCI_MSIX_ALLOC_DYN and using
pci_msix_prepare_desc() to prepare the MSI-X descriptors.

Feature support added for both x86 and ARM64

Signed-off-by: Shradha Gupta <shradhagupta@linux.microsoft.com>
Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
Reviewed-by: Saurabh Sengar <ssengar@linux.microsoft.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/controller/pci-hyperv.c

index ef5d655a0052c3d6586c5461592721cc767b9c14..86ca041bf74a78810fc4910fd3988202ce326abf 100644 (file)
@@ -2119,6 +2119,7 @@ static struct irq_chip hv_msi_irq_chip = {
 static struct msi_domain_ops hv_msi_ops = {
        .msi_prepare    = hv_msi_prepare,
        .msi_free       = hv_msi_free,
+       .prepare_desc   = pci_msix_prepare_desc,
 };
 
 /**
@@ -2140,7 +2141,7 @@ static int hv_pcie_init_irq_domain(struct hv_pcibus_device *hbus)
        hbus->msi_info.ops = &hv_msi_ops;
        hbus->msi_info.flags = (MSI_FLAG_USE_DEF_DOM_OPS |
                MSI_FLAG_USE_DEF_CHIP_OPS | MSI_FLAG_MULTI_PCI_MSI |
-               MSI_FLAG_PCI_MSIX);
+               MSI_FLAG_PCI_MSIX | MSI_FLAG_PCI_MSIX_ALLOC_DYN);
        hbus->msi_info.handler = FLOW_HANDLER;
        hbus->msi_info.handler_name = FLOW_NAME;
        hbus->msi_info.data = hbus;