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

Alex Deucher alexdeucher at gmail.com
Fri Apr 8 15:56:23 UTC 2022


On Fri, Apr 8, 2022 at 11:54 AM Alex Deucher <alexdeucher at gmail.com> wrote:
>
> On Fri, Apr 8, 2022 at 11:47 AM Limonciello, Mario
> <Mario.Limonciello at amd.com> wrote:
> >
> > [Public]
> >
> >
> >
> > > -----Original Message-----
> > > From: Gong, Richard <Richard.Gong at amd.com>
> > > Sent: Friday, April 8, 2022 10:45
> > > To: Deucher, Alexander <Alexander.Deucher at amd.com>; Koenig, Christian
> > > <Christian.Koenig at amd.com>; Pan, Xinhui <Xinhui.Pan at amd.com>;
> > > airlied at linux.ie; daniel at ffwll.ch
> > > Cc: amd-gfx at lists.freedesktop.org; dri-devel at lists.freedesktop.org; linux-
> > > kernel at vger.kernel.org; Limonciello, Mario <Mario.Limonciello at amd.com>;
> > > Gong, Richard <Richard.Gong at amd.com>
> > > 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.
>
> The patch description is incorrect.  ASPM works just fine on these
> GPUs.  It's more of an issue with whether the underlying platform
> supports ASPM or not.  Rather than disabling a chip family, I would
> prefer to add a check for problematic platforms and disable ASPM on
> those platforms.

For example, see intel_core_rkl_chk() in smu7_hwmgr.c.  We disable
PCIe DPM on RKL platforms due to compatibility issues with that
particular platform.

Alex

>
> Alex
>
> > >
> > > Signed-off-by: Richard Gong <richard.gong at amd.com>
> > > 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.
> >
> > 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


More information about the amd-gfx mailing list