[PATCH] PCI/MSI: Initialize the prepare descriptor by default

Naman Jain posted 1 patch 3 months ago
drivers/pci/msi/irqdomain.c | 2 ++
1 file changed, 2 insertions(+)
[PATCH] PCI/MSI: Initialize the prepare descriptor by default
Posted by Naman Jain 3 months ago
Plug the default MSI-X prepare descriptor for non-implemented ops by
default to workaround the inability of Hyper-V vPCI module to setup
the MSI-X descriptors properly; especially for dynamically allocated
MSI-X.

Signed-off-by: Naman Jain <namjain@linux.microsoft.com>
---
 drivers/pci/msi/irqdomain.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/pci/msi/irqdomain.c b/drivers/pci/msi/irqdomain.c
index 765312c92d9b..655e99b9c8cc 100644
--- a/drivers/pci/msi/irqdomain.c
+++ b/drivers/pci/msi/irqdomain.c
@@ -84,6 +84,8 @@ static void pci_msi_domain_update_dom_ops(struct msi_domain_info *info)
 	} else {
 		if (ops->set_desc == NULL)
 			ops->set_desc = pci_msi_domain_set_desc;
+		if (ops->prepare_desc == NULL)
+			ops->prepare_desc = pci_msix_prepare_desc;
 	}
 }
 

base-commit: 26ffb3d6f02cd0935fb9fa3db897767beee1cb2a
-- 
2.34.1
Re: [PATCH] PCI/MSI: Initialize the prepare descriptor by default
Posted by Shradha Gupta 3 months ago
On Tue, Jul 08, 2025 at 10:48:48AM +0530, Naman Jain wrote:
> Plug the default MSI-X prepare descriptor for non-implemented ops by
> default to workaround the inability of Hyper-V vPCI module to setup
> the MSI-X descriptors properly; especially for dynamically allocated
> MSI-X.
> 
> Signed-off-by: Naman Jain <namjain@linux.microsoft.com>
> ---
>  drivers/pci/msi/irqdomain.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/pci/msi/irqdomain.c b/drivers/pci/msi/irqdomain.c
> index 765312c92d9b..655e99b9c8cc 100644
> --- a/drivers/pci/msi/irqdomain.c
> +++ b/drivers/pci/msi/irqdomain.c
> @@ -84,6 +84,8 @@ static void pci_msi_domain_update_dom_ops(struct msi_domain_info *info)
>  	} else {
>  		if (ops->set_desc == NULL)
>  			ops->set_desc = pci_msi_domain_set_desc;
> +		if (ops->prepare_desc == NULL)
> +			ops->prepare_desc = pci_msix_prepare_desc;
>  	}
>  }
>  
> 
> base-commit: 26ffb3d6f02cd0935fb9fa3db897767beee1cb2a
> -- 
> 2.34.1
>

Hey Naman,

can you please try your tests with this patch:
https://lore.kernel.org/all/1749651015-9668-1-git-send-email-shradhagupta@linux.microsoft.com/
I think this should help your use case

Regards,
Shradha.
Re: [PATCH] PCI/MSI: Initialize the prepare descriptor by default
Posted by Naman Jain 3 months ago

On 7/8/2025 3:32 PM, Shradha Gupta wrote:
> On Tue, Jul 08, 2025 at 10:48:48AM +0530, Naman Jain wrote:
>> Plug the default MSI-X prepare descriptor for non-implemented ops by
>> default to workaround the inability of Hyper-V vPCI module to setup
>> the MSI-X descriptors properly; especially for dynamically allocated
>> MSI-X.
>>
>> Signed-off-by: Naman Jain <namjain@linux.microsoft.com>
>> ---
>>   drivers/pci/msi/irqdomain.c | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/drivers/pci/msi/irqdomain.c b/drivers/pci/msi/irqdomain.c
>> index 765312c92d9b..655e99b9c8cc 100644
>> --- a/drivers/pci/msi/irqdomain.c
>> +++ b/drivers/pci/msi/irqdomain.c
>> @@ -84,6 +84,8 @@ static void pci_msi_domain_update_dom_ops(struct msi_domain_info *info)
>>   	} else {
>>   		if (ops->set_desc == NULL)
>>   			ops->set_desc = pci_msi_domain_set_desc;
>> +		if (ops->prepare_desc == NULL)
>> +			ops->prepare_desc = pci_msix_prepare_desc;
>>   	}
>>   }
>>   
>>
>> base-commit: 26ffb3d6f02cd0935fb9fa3db897767beee1cb2a
>> -- 
>> 2.34.1
>>
> 
> Hey Naman,
> 
> can you please try your tests with this patch:
> https://lore.kernel.org/all/1749651015-9668-1-git-send-email-shradhagupta@linux.microsoft.com/
> I think this should help your use case
> 
> Regards,
> Shradha.

Hey,
Thanks for sharing this, this works for me.

Closing this thread.

Regards,
Naman
Re: [PATCH] PCI/MSI: Initialize the prepare descriptor by default
Posted by Bjorn Helgaas 3 months ago
On Tue, Jul 08, 2025 at 03:45:05PM +0530, Naman Jain wrote:
> On 7/8/2025 3:32 PM, Shradha Gupta wrote:
> > On Tue, Jul 08, 2025 at 10:48:48AM +0530, Naman Jain wrote:
> > > Plug the default MSI-X prepare descriptor for non-implemented ops by
> > > default to workaround the inability of Hyper-V vPCI module to setup
> > > the MSI-X descriptors properly; especially for dynamically allocated
> > > MSI-X.
> > > 
> > > Signed-off-by: Naman Jain <namjain@linux.microsoft.com>
> > > ---
> > >   drivers/pci/msi/irqdomain.c | 2 ++
> > >   1 file changed, 2 insertions(+)
> > > 
> > > diff --git a/drivers/pci/msi/irqdomain.c b/drivers/pci/msi/irqdomain.c
> > > index 765312c92d9b..655e99b9c8cc 100644
> > > --- a/drivers/pci/msi/irqdomain.c
> > > +++ b/drivers/pci/msi/irqdomain.c
> > > @@ -84,6 +84,8 @@ static void pci_msi_domain_update_dom_ops(struct msi_domain_info *info)
> > >   	} else {
> > >   		if (ops->set_desc == NULL)
> > >   			ops->set_desc = pci_msi_domain_set_desc;
> > > +		if (ops->prepare_desc == NULL)
> > > +			ops->prepare_desc = pci_msix_prepare_desc;
> > >   	}
> > >   }
> > > 
> > > base-commit: 26ffb3d6f02cd0935fb9fa3db897767beee1cb2a
> > > -- 
> > > 2.34.1
> > > 
> > 
> > Hey Naman,
> > 
> > can you please try your tests with this patch:
> > https://lore.kernel.org/all/1749651015-9668-1-git-send-email-shradhagupta@linux.microsoft.com/
> > I think this should help your use case
> 
> Hey,
> Thanks for sharing this, this works for me.
> 
> Closing this thread.

I guess this means we should ignore this patch?  If it turns out that
we do need this patch, I'd like to add some details in the commit log
about what this problem looks like to users.

Bjorn
Re: [PATCH] PCI/MSI: Initialize the prepare descriptor by default
Posted by Naman Jain 3 months ago

On 7/8/2025 9:38 PM, Bjorn Helgaas wrote:
> On Tue, Jul 08, 2025 at 03:45:05PM +0530, Naman Jain wrote:
>> On 7/8/2025 3:32 PM, Shradha Gupta wrote:
>>> On Tue, Jul 08, 2025 at 10:48:48AM +0530, Naman Jain wrote:
>>>> Plug the default MSI-X prepare descriptor for non-implemented ops by
>>>> default to workaround the inability of Hyper-V vPCI module to setup
>>>> the MSI-X descriptors properly; especially for dynamically allocated
>>>> MSI-X.
>>>>
>>>> Signed-off-by: Naman Jain <namjain@linux.microsoft.com>
>>>> ---
>>>>    drivers/pci/msi/irqdomain.c | 2 ++
>>>>    1 file changed, 2 insertions(+)
>>>>
>>>> diff --git a/drivers/pci/msi/irqdomain.c b/drivers/pci/msi/irqdomain.c
>>>> index 765312c92d9b..655e99b9c8cc 100644
>>>> --- a/drivers/pci/msi/irqdomain.c
>>>> +++ b/drivers/pci/msi/irqdomain.c
>>>> @@ -84,6 +84,8 @@ static void pci_msi_domain_update_dom_ops(struct msi_domain_info *info)
>>>>    	} else {
>>>>    		if (ops->set_desc == NULL)
>>>>    			ops->set_desc = pci_msi_domain_set_desc;
>>>> +		if (ops->prepare_desc == NULL)
>>>> +			ops->prepare_desc = pci_msix_prepare_desc;
>>>>    	}
>>>>    }
>>>>
>>>> base-commit: 26ffb3d6f02cd0935fb9fa3db897767beee1cb2a
>>>> -- 
>>>> 2.34.1
>>>>
>>>
>>> Hey Naman,
>>>
>>> can you please try your tests with this patch:
>>> https://lore.kernel.org/all/1749651015-9668-1-git-send-email-shradhagupta@linux.microsoft.com/
>>> I think this should help your use case
>>
>> Hey,
>> Thanks for sharing this, this works for me.
>>
>> Closing this thread.
> 
> I guess this means we should ignore this patch?  If it turns out that
> we do need this patch, I'd like to add some details in the commit log
> about what this problem looks like to users.
> 
> Bjorn

Yes, my patch is no longer required, since it was doing the same thing
that Shradha's patch (1-2) were doing, but in a different way. Shradha's
patch is better and would suffice for the use case. Please ignore this
patch.

Thanks.
Regards,
Naman