diff mbox series

PCI: fix Sapphire PCI rebar quirk

Message ID 20250217151053.420882-1-alexander.deucher@amd.com (mailing list archive)
State Changes Requested
Delegated to: Bjorn Helgaas
Headers show
Series PCI: fix Sapphire PCI rebar quirk | expand

Commit Message

Alex Deucher Feb. 17, 2025, 3:10 p.m. UTC
There was a quirk added to add a workaround for a Sapphire
RX 5600 XT Pulse.  However, the quirk only checks the vendor
ids and not the subsystem ids.  The quirk really should
have checked the subsystem vendor and device ids as now
this quirk gets applied to all RX 5600 and it seems to
cause problems on some Dell laptops.  Add a subsystem vendor
id check to limit the quirk to Sapphire boards.

Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/1707
Fixes: 907830b0fc9e ("PCI: Add a REBAR size quirk for Sapphire RX 5600 XT Pulse")
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Nirmoy Das <nirmoy.aiemd@gmail.com>
---
 drivers/pci/pci.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Christian König Feb. 17, 2025, 3:30 p.m. UTC | #1
Am 17.02.25 um 16:10 schrieb Alex Deucher:
> There was a quirk added to add a workaround for a Sapphire
> RX 5600 XT Pulse.  However, the quirk only checks the vendor
> ids and not the subsystem ids.  The quirk really should
> have checked the subsystem vendor and device ids as now
> this quirk gets applied to all RX 5600 and it seems to
> cause problems on some Dell laptops.  Add a subsystem vendor
> id check to limit the quirk to Sapphire boards.

That's not correct. The issue is present on all RX 5600 boards, not just the Sapphire ones.

The problems with the Dell laptops are most likely the general instability of the RX 5600 again which this quirk just make more obvious because of the performance improvement.

Do you have a specific bug report for the Dell laptops?

Regards,
Christian.

>
> Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/1707
> Fixes: 907830b0fc9e ("PCI: Add a REBAR size quirk for Sapphire RX 5600 XT Pulse")
> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
> Cc: Christian König <christian.koenig@amd.com>
> Cc: Bjorn Helgaas <bhelgaas@google.com>
> Cc: Nirmoy Das <nirmoy.aiemd@gmail.com>
> ---
>  drivers/pci/pci.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index 225a6cd2e9ca3..dec917636974e 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -3766,6 +3766,7 @@ u32 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar)
>  
>  	/* Sapphire RX 5600 XT Pulse has an invalid cap dword for BAR 0 */
>  	if (pdev->vendor == PCI_VENDOR_ID_ATI && pdev->device == 0x731f &&
> +	    pdev->subsystem_vendor == 0x1da2 &&




>  	    bar == 0 && cap == 0x700)
>  		return 0x3f00;
>
Alex Deucher Feb. 17, 2025, 3:45 p.m. UTC | #2
On Mon, Feb 17, 2025 at 10:38 AM Christian König
<christian.koenig@amd.com> wrote:
>
> Am 17.02.25 um 16:10 schrieb Alex Deucher:
> > There was a quirk added to add a workaround for a Sapphire
> > RX 5600 XT Pulse.  However, the quirk only checks the vendor
> > ids and not the subsystem ids.  The quirk really should
> > have checked the subsystem vendor and device ids as now
> > this quirk gets applied to all RX 5600 and it seems to
> > cause problems on some Dell laptops.  Add a subsystem vendor
> > id check to limit the quirk to Sapphire boards.
>
> That's not correct. The issue is present on all RX 5600 boards, not just the Sapphire ones.

I suppose the alternative would be to disable resizing on the
problematic DELL systems only.

>
> The problems with the Dell laptops are most likely the general instability of the RX 5600 again which this quirk just make more obvious because of the performance improvement.
>
> Do you have a specific bug report for the Dell laptops?
>
> Regards,
> Christian.
>
> >
> > Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/1707

^^^ this bug report

Alex


> > Fixes: 907830b0fc9e ("PCI: Add a REBAR size quirk for Sapphire RX 5600 XT Pulse")
> > Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
> > Cc: Christian König <christian.koenig@amd.com>
> > Cc: Bjorn Helgaas <bhelgaas@google.com>
> > Cc: Nirmoy Das <nirmoy.aiemd@gmail.com>
> > ---
> >  drivers/pci/pci.c | 1 +
> >  1 file changed, 1 insertion(+)
> >
> > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> > index 225a6cd2e9ca3..dec917636974e 100644
> > --- a/drivers/pci/pci.c
> > +++ b/drivers/pci/pci.c
> > @@ -3766,6 +3766,7 @@ u32 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar)
> >
> >       /* Sapphire RX 5600 XT Pulse has an invalid cap dword for BAR 0 */
> >       if (pdev->vendor == PCI_VENDOR_ID_ATI && pdev->device == 0x731f &&
> > +         pdev->subsystem_vendor == 0x1da2 &&
>
>
>
>
> >           bar == 0 && cap == 0x700)
> >               return 0x3f00;
> >
>
Alex Deucher Feb. 17, 2025, 4 p.m. UTC | #3
On Mon, Feb 17, 2025 at 10:45 AM Alex Deucher <alexdeucher@gmail.com> wrote:
>
> On Mon, Feb 17, 2025 at 10:38 AM Christian König
> <christian.koenig@amd.com> wrote:
> >
> > Am 17.02.25 um 16:10 schrieb Alex Deucher:
> > > There was a quirk added to add a workaround for a Sapphire
> > > RX 5600 XT Pulse.  However, the quirk only checks the vendor
> > > ids and not the subsystem ids.  The quirk really should
> > > have checked the subsystem vendor and device ids as now
> > > this quirk gets applied to all RX 5600 and it seems to
> > > cause problems on some Dell laptops.  Add a subsystem vendor
> > > id check to limit the quirk to Sapphire boards.
> >
> > That's not correct. The issue is present on all RX 5600 boards, not just the Sapphire ones.
>
> I suppose the alternative would be to disable resizing on the
> problematic DELL systems only.

How about this attached patch instead?

Alex

>
> >
> > The problems with the Dell laptops are most likely the general instability of the RX 5600 again which this quirk just make more obvious because of the performance improvement.
> >
> > Do you have a specific bug report for the Dell laptops?
> >
> > Regards,
> > Christian.
> >
> > >
> > > Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/1707
>
> ^^^ this bug report
>
> Alex
>
>
> > > Fixes: 907830b0fc9e ("PCI: Add a REBAR size quirk for Sapphire RX 5600 XT Pulse")
> > > Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
> > > Cc: Christian König <christian.koenig@amd.com>
> > > Cc: Bjorn Helgaas <bhelgaas@google.com>
> > > Cc: Nirmoy Das <nirmoy.aiemd@gmail.com>
> > > ---
> > >  drivers/pci/pci.c | 1 +
> > >  1 file changed, 1 insertion(+)
> > >
> > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> > > index 225a6cd2e9ca3..dec917636974e 100644
> > > --- a/drivers/pci/pci.c
> > > +++ b/drivers/pci/pci.c
> > > @@ -3766,6 +3766,7 @@ u32 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar)
> > >
> > >       /* Sapphire RX 5600 XT Pulse has an invalid cap dword for BAR 0 */
> > >       if (pdev->vendor == PCI_VENDOR_ID_ATI && pdev->device == 0x731f &&
> > > +         pdev->subsystem_vendor == 0x1da2 &&
> >
> >
> >
> >
> > >           bar == 0 && cap == 0x700)
> > >               return 0x3f00;
> > >
> >
Mario Limonciello Feb. 17, 2025, 4:04 p.m. UTC | #4
On 2/17/2025 10:00, Alex Deucher wrote:
> On Mon, Feb 17, 2025 at 10:45 AM Alex Deucher <alexdeucher@gmail.com> wrote:
>>
>> On Mon, Feb 17, 2025 at 10:38 AM Christian König
>> <christian.koenig@amd.com> wrote:
>>>
>>> Am 17.02.25 um 16:10 schrieb Alex Deucher:
>>>> There was a quirk added to add a workaround for a Sapphire
>>>> RX 5600 XT Pulse.  However, the quirk only checks the vendor
>>>> ids and not the subsystem ids.  The quirk really should
>>>> have checked the subsystem vendor and device ids as now
>>>> this quirk gets applied to all RX 5600 and it seems to
>>>> cause problems on some Dell laptops.  Add a subsystem vendor
>>>> id check to limit the quirk to Sapphire boards.
>>>
>>> That's not correct. The issue is present on all RX 5600 boards, not just the Sapphire ones.
>>
>> I suppose the alternative would be to disable resizing on the
>> problematic DELL systems only.
> 
> How about this attached patch instead?

JFYI Typo in the commit message:

s,casused,caused,

> 
> Alex
> 
>>
>>>
>>> The problems with the Dell laptops are most likely the general instability of the RX 5600 again which this quirk just make more obvious because of the performance improvement.
>>>
>>> Do you have a specific bug report for the Dell laptops?
>>>
>>> Regards,
>>> Christian.
>>>
>>>>
>>>> Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/1707
>>
>> ^^^ this bug report
>>
>> Alex
>>
>>
>>>> Fixes: 907830b0fc9e ("PCI: Add a REBAR size quirk for Sapphire RX 5600 XT Pulse")
>>>> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
>>>> Cc: Christian König <christian.koenig@amd.com>
>>>> Cc: Bjorn Helgaas <bhelgaas@google.com>
>>>> Cc: Nirmoy Das <nirmoy.aiemd@gmail.com>
>>>> ---
>>>>   drivers/pci/pci.c | 1 +
>>>>   1 file changed, 1 insertion(+)
>>>>
>>>> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
>>>> index 225a6cd2e9ca3..dec917636974e 100644
>>>> --- a/drivers/pci/pci.c
>>>> +++ b/drivers/pci/pci.c
>>>> @@ -3766,6 +3766,7 @@ u32 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar)
>>>>
>>>>        /* Sapphire RX 5600 XT Pulse has an invalid cap dword for BAR 0 */
>>>>        if (pdev->vendor == PCI_VENDOR_ID_ATI && pdev->device == 0x731f &&
>>>> +         pdev->subsystem_vendor == 0x1da2 &&
>>>
>>>
>>>
>>>
>>>>            bar == 0 && cap == 0x700)
>>>>                return 0x3f00;
>>>>
>>>
Christian König Feb. 18, 2025, 8:03 a.m. UTC | #5
Am 17.02.25 um 17:04 schrieb Mario Limonciello:
> On 2/17/2025 10:00, Alex Deucher wrote:
>> On Mon, Feb 17, 2025 at 10:45 AM Alex Deucher <alexdeucher@gmail.com> wrote:
>>>
>>> On Mon, Feb 17, 2025 at 10:38 AM Christian König
>>> <christian.koenig@amd.com> wrote:
>>>>
>>>> Am 17.02.25 um 16:10 schrieb Alex Deucher:
>>>>> There was a quirk added to add a workaround for a Sapphire
>>>>> RX 5600 XT Pulse.  However, the quirk only checks the vendor
>>>>> ids and not the subsystem ids.  The quirk really should
>>>>> have checked the subsystem vendor and device ids as now
>>>>> this quirk gets applied to all RX 5600 and it seems to
>>>>> cause problems on some Dell laptops.  Add a subsystem vendor
>>>>> id check to limit the quirk to Sapphire boards.
>>>>
>>>> That's not correct. The issue is present on all RX 5600 boards, not just the Sapphire ones.
>>>
>>> I suppose the alternative would be to disable resizing on the
>>> problematic DELL systems only.
>>
>> How about this attached patch instead?
>
> JFYI Typo in the commit message:
>
> s,casused,caused,

With that fixed feel free to add my rb. It's just that the Dell systems are unstable even without the resizing.

The resizing just makes it more likely to hit the issue because ti massively improves performance on the RX 5600 boards.

Regards,
Christian.

>
>>
>> Alex
>>
>>>
>>>>
>>>> The problems with the Dell laptops are most likely the general instability of the RX 5600 again which this quirk just make more obvious because of the performance improvement.
>>>>
>>>> Do you have a specific bug report for the Dell laptops?
>>>>
>>>> Regards,
>>>> Christian.
>>>>
>>>>>
>>>>> Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/1707
>>>
>>> ^^^ this bug report
>>>
>>> Alex
>>>
>>>
>>>>> Fixes: 907830b0fc9e ("PCI: Add a REBAR size quirk for Sapphire RX 5600 XT Pulse")
>>>>> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
>>>>> Cc: Christian König <christian.koenig@amd.com>
>>>>> Cc: Bjorn Helgaas <bhelgaas@google.com>
>>>>> Cc: Nirmoy Das <nirmoy.aiemd@gmail.com>
>>>>> ---
>>>>>   drivers/pci/pci.c | 1 +
>>>>>   1 file changed, 1 insertion(+)
>>>>>
>>>>> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
>>>>> index 225a6cd2e9ca3..dec917636974e 100644
>>>>> --- a/drivers/pci/pci.c
>>>>> +++ b/drivers/pci/pci.c
>>>>> @@ -3766,6 +3766,7 @@ u32 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar)
>>>>>
>>>>>        /* Sapphire RX 5600 XT Pulse has an invalid cap dword for BAR 0 */
>>>>>        if (pdev->vendor == PCI_VENDOR_ID_ATI && pdev->device == 0x731f &&
>>>>> +         pdev->subsystem_vendor == 0x1da2 &&
>>>>
>>>>
>>>>
>>>>
>>>>>            bar == 0 && cap == 0x700)
>>>>>                return 0x3f00;
>>>>>
>>>>
>
Lazar, Lijo Feb. 18, 2025, 9:58 a.m. UTC | #6
On 2/18/2025 1:33 PM, Christian König wrote:
> Am 17.02.25 um 17:04 schrieb Mario Limonciello:
>> On 2/17/2025 10:00, Alex Deucher wrote:
>>> On Mon, Feb 17, 2025 at 10:45 AM Alex Deucher <alexdeucher@gmail.com> wrote:
>>>>
>>>> On Mon, Feb 17, 2025 at 10:38 AM Christian König
>>>> <christian.koenig@amd.com> wrote:
>>>>>
>>>>> Am 17.02.25 um 16:10 schrieb Alex Deucher:
>>>>>> There was a quirk added to add a workaround for a Sapphire
>>>>>> RX 5600 XT Pulse.  However, the quirk only checks the vendor
>>>>>> ids and not the subsystem ids.  The quirk really should
>>>>>> have checked the subsystem vendor and device ids as now
>>>>>> this quirk gets applied to all RX 5600 and it seems to
>>>>>> cause problems on some Dell laptops.  Add a subsystem vendor
>>>>>> id check to limit the quirk to Sapphire boards.
>>>>>
>>>>> That's not correct. The issue is present on all RX 5600 boards, not just the Sapphire ones.
>>>>
>>>> I suppose the alternative would be to disable resizing on the
>>>> problematic DELL systems only.
>>>
>>> How about this attached patch instead?
>>
>> JFYI Typo in the commit message:
>>
>> s,casused,caused,
> 
> With that fixed feel free to add my rb. It's just that the Dell systems are unstable even without the resizing.
> 
> The resizing just makes it more likely to hit the issue because ti massively improves performance on the RX 5600 boards.
> 

As a workaround, from the thread, the most reliable one seems to be to
disable runpm on the device.

Thanks,
Lijo

> Regards,
> Christian.
> 
>>
>>>
>>> Alex
>>>
>>>>
>>>>>
>>>>> The problems with the Dell laptops are most likely the general instability of the RX 5600 again which this quirk just make more obvious because of the performance improvement.
>>>>>
>>>>> Do you have a specific bug report for the Dell laptops?
>>>>>
>>>>> Regards,
>>>>> Christian.
>>>>>
>>>>>>
>>>>>> Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/1707
>>>>
>>>> ^^^ this bug report
>>>>
>>>> Alex
>>>>
>>>>
>>>>>> Fixes: 907830b0fc9e ("PCI: Add a REBAR size quirk for Sapphire RX 5600 XT Pulse")
>>>>>> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
>>>>>> Cc: Christian König <christian.koenig@amd.com>
>>>>>> Cc: Bjorn Helgaas <bhelgaas@google.com>
>>>>>> Cc: Nirmoy Das <nirmoy.aiemd@gmail.com>
>>>>>> ---
>>>>>>   drivers/pci/pci.c | 1 +
>>>>>>   1 file changed, 1 insertion(+)
>>>>>>
>>>>>> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
>>>>>> index 225a6cd2e9ca3..dec917636974e 100644
>>>>>> --- a/drivers/pci/pci.c
>>>>>> +++ b/drivers/pci/pci.c
>>>>>> @@ -3766,6 +3766,7 @@ u32 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar)
>>>>>>
>>>>>>        /* Sapphire RX 5600 XT Pulse has an invalid cap dword for BAR 0 */
>>>>>>        if (pdev->vendor == PCI_VENDOR_ID_ATI && pdev->device == 0x731f &&
>>>>>> +         pdev->subsystem_vendor == 0x1da2 &&
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>>            bar == 0 && cap == 0x700)
>>>>>>                return 0x3f00;
>>>>>>
>>>>>
>>
>
Christian König Feb. 18, 2025, 11:31 a.m. UTC | #7
Am 18.02.25 um 10:58 schrieb Lazar, Lijo:
> On 2/18/2025 1:33 PM, Christian König wrote:
>> Am 17.02.25 um 17:04 schrieb Mario Limonciello:
>>> On 2/17/2025 10:00, Alex Deucher wrote:
>>>> On Mon, Feb 17, 2025 at 10:45 AM Alex Deucher <alexdeucher@gmail.com> wrote:
>>>>> On Mon, Feb 17, 2025 at 10:38 AM Christian König
>>>>> <christian.koenig@amd.com> wrote:
>>>>>> Am 17.02.25 um 16:10 schrieb Alex Deucher:
>>>>>>> There was a quirk added to add a workaround for a Sapphire
>>>>>>> RX 5600 XT Pulse.  However, the quirk only checks the vendor
>>>>>>> ids and not the subsystem ids.  The quirk really should
>>>>>>> have checked the subsystem vendor and device ids as now
>>>>>>> this quirk gets applied to all RX 5600 and it seems to
>>>>>>> cause problems on some Dell laptops.  Add a subsystem vendor
>>>>>>> id check to limit the quirk to Sapphire boards.
>>>>>> That's not correct. The issue is present on all RX 5600 boards, not just the Sapphire ones.
>>>>> I suppose the alternative would be to disable resizing on the
>>>>> problematic DELL systems only.
>>>> How about this attached patch instead?
>>> JFYI Typo in the commit message:
>>>
>>> s,casused,caused,
>> With that fixed feel free to add my rb. It's just that the Dell systems are unstable even without the resizing.
>>
>> The resizing just makes it more likely to hit the issue because ti massively improves performance on the RX 5600 boards.
>>
> As a workaround, from the thread, the most reliable one seems to be to
> disable runpm on the device.

Yeah, really good point. Actually trying to fix the underlying issue is my strong preference as well.

Regards,
Christian.

>
> Thanks,
> Lijo
>
>> Regards,
>> Christian.
>>
>>>> Alex
>>>>
>>>>>> The problems with the Dell laptops are most likely the general instability of the RX 5600 again which this quirk just make more obvious because of the performance improvement.
>>>>>>
>>>>>> Do you have a specific bug report for the Dell laptops?
>>>>>>
>>>>>> Regards,
>>>>>> Christian.
>>>>>>
>>>>>>> Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/1707
>>>>> ^^^ this bug report
>>>>>
>>>>> Alex
>>>>>
>>>>>
>>>>>>> Fixes: 907830b0fc9e ("PCI: Add a REBAR size quirk for Sapphire RX 5600 XT Pulse")
>>>>>>> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
>>>>>>> Cc: Christian König <christian.koenig@amd.com>
>>>>>>> Cc: Bjorn Helgaas <bhelgaas@google.com>
>>>>>>> Cc: Nirmoy Das <nirmoy.aiemd@gmail.com>
>>>>>>> ---
>>>>>>>   drivers/pci/pci.c | 1 +
>>>>>>>   1 file changed, 1 insertion(+)
>>>>>>>
>>>>>>> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
>>>>>>> index 225a6cd2e9ca3..dec917636974e 100644
>>>>>>> --- a/drivers/pci/pci.c
>>>>>>> +++ b/drivers/pci/pci.c
>>>>>>> @@ -3766,6 +3766,7 @@ u32 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar)
>>>>>>>
>>>>>>>        /* Sapphire RX 5600 XT Pulse has an invalid cap dword for BAR 0 */
>>>>>>>        if (pdev->vendor == PCI_VENDOR_ID_ATI && pdev->device == 0x731f &&
>>>>>>> +         pdev->subsystem_vendor == 0x1da2 &&
>>>>>>
>>>>>>
>>>>>>
>>>>>>>            bar == 0 && cap == 0x700)
>>>>>>>                return 0x3f00;
>>>>>>>
diff mbox series

Patch

diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 225a6cd2e9ca3..dec917636974e 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -3766,6 +3766,7 @@  u32 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar)
 
 	/* Sapphire RX 5600 XT Pulse has an invalid cap dword for BAR 0 */
 	if (pdev->vendor == PCI_VENDOR_ID_ATI && pdev->device == 0x731f &&
+	    pdev->subsystem_vendor == 0x1da2 &&
 	    bar == 0 && cap == 0x700)
 		return 0x3f00;