2022-04-08 17:22:47

by Gong, Richard

[permalink] [raw]
Subject: Re: [PATCH] drm/amdgpu: disable ASPM for legacy products that don't support ASPM


On 4/8/2022 10:47 AM, Limonciello, Mario wrote:
> [Public]
>
>
>
>> -----Original Message-----
>> From: Gong, Richard <[email protected]>
>> Sent: Friday, April 8, 2022 10:45
>> To: Deucher, Alexander <[email protected]>; Koenig, Christian
>> <[email protected]>; Pan, Xinhui <[email protected]>;
>> [email protected]; [email protected]
>> Cc: [email protected]; [email protected]; linux-
>> [email protected]; Limonciello, Mario <[email protected]>;
>> Gong, Richard <[email protected]>
>> Subject: [PATCH] drm/amdgpu: disable ASPM for legacy products that don't
>> support ASPM
>>
>> Active State Power Management (ASPM) feature is enabled since kernel
>> 5.14.
>> However there are some legacy products (WX3200 and RX640 are examples)
>> that
>> do not support ASPM. Use them as video/display output and system would
>> hang
>> during suspend/resume.
>>
>> Add extra check to disable ASPM for old products that don't have
>> ASPM support.
>>
>> Signed-off-by: Richard Gong <[email protected]>
>> Link: https://gitlab.freedesktop.org/drm/amd/-/issues/1885
>> ---
>> drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 4 ++++
>> 1 file changed, 4 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
>> index bb1c025d9001..8987107f41ee 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
>> @@ -2012,6 +2012,10 @@ static int amdgpu_pci_probe(struct pci_dev
>> *pdev,
>> if (amdgpu_aspm == -1 && !pcie_aspm_enabled(pdev))
>> amdgpu_aspm = 0;
>>
>> + /* disable ASPM for the legacy products that don't support ASPM */
>> + if ((flags & AMD_ASIC_MASK) == CHIP_POLARIS12)
>> + amdgpu_aspm = 0;
>> +
> I think it's problematic to disable it for the entire driver. There might be multiple
> AMDGPUs in the system, and others may support ASPM.

The "problem" are WX3200 and RX640, both are from the same POLARIS12 family.

> Can it be done just as part of probe for Polaris?
>
>> if (amdgpu_virtual_display ||
>> amdgpu_device_asic_has_dc_support(flags & AMD_ASIC_MASK))
>> supports_atomic = true;
>> --
>> 2.25.1


2022-04-12 00:52:08

by Mario Limonciello

[permalink] [raw]
Subject: RE: [PATCH] drm/amdgpu: disable ASPM for legacy products that don't support ASPM

[Public]



> -----Original Message-----
> From: Gong, Richard <[email protected]>
> Sent: Friday, April 8, 2022 11:20
> To: Limonciello, Mario <[email protected]>; Deucher, Alexander
> <[email protected]>; Koenig, Christian
> <[email protected]>; Pan, Xinhui <[email protected]>;
> [email protected]; [email protected]
> Cc: [email protected]; [email protected]; linux-
> [email protected]
> Subject: Re: [PATCH] drm/amdgpu: disable ASPM for legacy products that
> don't support ASPM
>
>
> On 4/8/2022 10:47 AM, Limonciello, Mario wrote:
> > [Public]
> >
> >
> >
> >> -----Original Message-----
> >> From: Gong, Richard <[email protected]>
> >> Sent: Friday, April 8, 2022 10:45
> >> To: Deucher, Alexander <[email protected]>; Koenig,
> Christian
> >> <[email protected]>; Pan, Xinhui <[email protected]>;
> >> [email protected]; [email protected]
> >> Cc: [email protected]; [email protected];
> linux-
> >> [email protected]; Limonciello, Mario
> <[email protected]>;
> >> Gong, Richard <[email protected]>
> >> Subject: [PATCH] drm/amdgpu: disable ASPM for legacy products that
> don't
> >> support ASPM
> >>
> >> Active State Power Management (ASPM) feature is enabled since kernel
> >> 5.14.
> >> However there are some legacy products (WX3200 and RX640 are
> examples)
> >> that
> >> do not support ASPM. Use them as video/display output and system
> would
> >> hang
> >> during suspend/resume.
> >>
> >> Add extra check to disable ASPM for old products that don't have
> >> ASPM support.
> >>
> >> Signed-off-by: Richard Gong <[email protected]>
> >> Link: https://gitlab.freedesktop.org/drm/amd/-/issues/1885
> >> ---
> >> drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 4 ++++
> >> 1 file changed, 4 insertions(+)
> >>
> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> >> index bb1c025d9001..8987107f41ee 100644
> >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> >> @@ -2012,6 +2012,10 @@ static int amdgpu_pci_probe(struct pci_dev
> >> *pdev,
> >> if (amdgpu_aspm == -1 && !pcie_aspm_enabled(pdev))
> >> amdgpu_aspm = 0;
> >>
> >> + /* disable ASPM for the legacy products that don't support ASPM */
> >> + if ((flags & AMD_ASIC_MASK) == CHIP_POLARIS12)
> >> + amdgpu_aspm = 0;
> >> +
> > I think it's problematic to disable it for the entire driver. There might be
> multiple
> > AMDGPUs in the system, and others may support ASPM.
>
> The "problem" are WX3200 and RX640, both are from the same POLARIS12
> family.
>

Right but what if some other "working" cards are included in the system too?
Then ASPM gets disabled for them too. It should only be disabled for the pci_dev
corresponding to problematic GPUs in problematic situations.

> > Can it be done just as part of probe for Polaris?
> >
> >> if (amdgpu_virtual_display ||
> >> amdgpu_device_asic_has_dc_support(flags & AMD_ASIC_MASK))
> >> supports_atomic = true;
> >> --
> >> 2.25.1