Re: [PATCH v6 2/5] PCI: hv: Allow dynamic MSI-X vector allocation

Bjorn Helgaas
2025-06-13T22:03:42Z

On Wed, Jun 11, 2025 at 07:10:15AM -0700, Shradha Gupta wrote:
> 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>

Again, if you need it:

Acked-by: Bjorn Helgaas <bhelgaas@google.com>

> ---
> Changes in v4:
> * use the same prepare_desc() callback for arm and x86
> ---
> Changes in v3:
> * Add arm64 support
> ---
> Changes in v2:
> * split the patch to keep changes in PCI and pci_hyperv controller
> seperate
> * replace strings "pci vectors" by "MSI-X vectors"
> ---
> drivers/pci/controller/pci-hyperv.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c
> index ef5d655a0052..86ca041bf74a 100644
> --- a/drivers/pci/controller/pci-hyperv.c
> +++ b/drivers/pci/controller/pci-hyperv.c
> @@ -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;
> --
> 2.34.1
>