[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <d8ccc4ea-385a-4def-bc71-574a99538e34@nvidia.com>
Date: Mon, 8 Jan 2024 17:28:31 +0530
From: Vidya Sagar <vidyas@...dia.com>
To: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@...ux.intel.com>,
bhelgaas@...gle.com, rdunlap@...radead.org, ilpo.jarvinen@...ux.intel.com,
tglx@...utronix.de
Cc: linux-pci@...r.kernel.org, linux-kernel@...r.kernel.org,
treding@...dia.com, jonathanh@...dia.com, sdonthineni@...dia.com,
kthota@...dia.com, mmaddireddy@...dia.com, sagar.tv@...il.com
Subject: Re: [PATCH V1] PCI/MSI: Fix MSI hwirq truncation
On 1/5/2024 10:32 PM, Kuppuswamy Sathyanarayanan wrote:
> External email: Use caution opening links or attachments
>
>
> On 1/5/2024 5:43 AM, Vidya Sagar wrote:
>> While calculating the hwirq number for an MSI interrupt, the higher
>> bits (i.e. from bit-5 onwards a.k.a domain_nr >= 32) of the PCI domain
>> number gets truncated because of the shifted value casting to u32. This
>> for example is resulting in same hwirq number for devices 0019:00:00.0
>> and 0039:00:00.0.
>>
>> So, cast the PCI domain number to u64 before left shifting it to
>> calculate hwirq number.
>
> This seems like a bug fix. Why not add Fixes: tag?
This doesn't seem to be introduced by any recent change as such. It has
been from the time the original change appeared in the mainline. I'll
give the commit ID of the original change for 'Fixes'.
>
> Is this issue detected in a platform test? Maybe including the relevant
> details about it will help reproduce the issue.
The issue is detected while running ARM's ACS test suite. But, I
couldn't give that info as there was some bug in the test suite itself
for which I raised an issue at
https://gitlab.arm.com/linux-arm/linux-acs/-/issues/2
>
>>
>> Signed-off-by: Vidya Sagar <vidyas@...dia.com>
>> ---
>> drivers/pci/msi/irqdomain.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/pci/msi/irqdomain.c b/drivers/pci/msi/irqdomain.c
>> index c8be056c248d..cfd84a899c82 100644
>> --- a/drivers/pci/msi/irqdomain.c
>> +++ b/drivers/pci/msi/irqdomain.c
>> @@ -61,7 +61,7 @@ static irq_hw_number_t pci_msi_domain_calc_hwirq(struct msi_desc *desc)
>>
>> return (irq_hw_number_t)desc->msi_index |
>> pci_dev_id(dev) << 11 |
>> - (pci_domain_nr(dev->bus) & 0xFFFFFFFF) << 27;
>> + ((irq_hw_number_t)(pci_domain_nr(dev->bus) & 0xFFFFFFFF)) << 27;
>> }
>>
>> static void pci_msi_domain_set_desc(msi_alloc_info_t *arg,
>
> --
> Sathyanarayanan Kuppuswamy
> Linux Kernel Developer
Powered by blists - more mailing lists