[PATCH V2] drm/amdgpu/display: Enable DC_FP for LoongArch

Alex Deucher alexdeucher at gmail.com
Fri May 5 18:00:54 UTC 2023


On Fri, May 5, 2023 at 1:57 PM WANG Xuerui <kernel at xen0n.name> wrote:
>
> Hi,
>
> On 5/5/23 21:39, Hamza Mahfooz wrote:
> >
> > Hey Huacai,
> >
> > On 5/5/23 07:32, Huacai Chen wrote:
> >> Now LoongArch provides kernel_fpu_begin() and kernel_fpu_end() in commit
> >> 2b3bd32ea3a22ea2d ("LoongArch: Provide kernel fpu functions"), so we can
> >> enable DC_FP for DCN devices.
> >
> > Have you had the chance to test how well this is working on actual
> > hardware, or was it only compile tested? If it was only compile tested,
> > it would be great if you could run some tests. Please see the following
> > for more details:
> > https://lore.kernel.org/amd-gfx/8eb69dfb-ae35-dbf2-3f82-e8cc00e5389a@amd.com/
> >
> >
> Thanks for the helpful link!
>
> I did test an earlier version of this patch along with the
> arch/loongarch kernel FPU bits before that patch got upstreamed, with a
> RX 6400 (BEIGE_GOBY) on a Loongson 3A5000 + LS7A1000 system (by far the
> most popular combination for LoongArch desktops). Things like Plasma
> Wayland session or glmark2 work just fine, although I didn't go for the
> more complete testing as detailed in the mail you linked to. I'll try
> going through that procedure in the next 1~2 days when I have time & get
> physical access to that box.
>
> On a side note, I had to modprobe amdgpu with runpm=0, otherwise my
> dmesg gets flooded with PSP getting resumed every 8~10 seconds or so. I
> currently have none of the connectors plugged in. I didn't notice any
> similar reports on the Internet so I don't know if it's due to platform
> quirks or not.

That might just be part of the normal suspend/resume process.  If it
happens at regular intervals, it sounds like something is waking the
GPU at a regular interval.  We should probably remove that message to
avoid it being too chatty, but you may want to check what is waking it
so much as doing so sort of negates the value of runtime power
management.

Alex

>
> >>
> >> Signed-off-by: WANG Xuerui <kernel at xen0n.name>
> >> Signed-off-by: Huacai Chen <chenhuacai at loongson.cn>
> >> ---
> >> V2: Update commit message to add the commit which provides kernel fpu
> >>      functions.
> >>
> >>   drivers/gpu/drm/amd/display/Kconfig            | 2 +-
> >>   drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c | 6 ++++--
> >>   drivers/gpu/drm/amd/display/dc/dml/Makefile    | 5 +++++
> >>   3 files changed, 10 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/amd/display/Kconfig
> >> b/drivers/gpu/drm/amd/display/Kconfig
> >> index 2d8e55e29637..49df073962d5 100644
> >> --- a/drivers/gpu/drm/amd/display/Kconfig
> >> +++ b/drivers/gpu/drm/amd/display/Kconfig
> >> @@ -8,7 +8,7 @@ config DRM_AMD_DC
> >>       depends on BROKEN || !CC_IS_CLANG || X86_64 || SPARC64 || ARM64
> >>       select SND_HDA_COMPONENT if SND_HDA_CORE
> >>       # !CC_IS_CLANG:
> >> https://github.com/ClangBuiltLinux/linux/issues/1752
> >> -    select DRM_AMD_DC_FP if (X86 || (PPC64 && ALTIVEC) || (ARM64 &&
> >> KERNEL_MODE_NEON && !CC_IS_CLANG))
> >> +    select DRM_AMD_DC_FP if (X86 || LOONGARCH || (PPC64 && ALTIVEC)
> >> || (ARM64 && KERNEL_MODE_NEON && !CC_IS_CLANG))
> >>       help
> >>         Choose this option if you want to use the new display engine
> >>         support for AMDGPU. This adds required support for Vega and
> >> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c
> >> b/drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c
> >> index 1743ca0a3641..86f4c0e04654 100644
> >> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c
> >> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c
> >> @@ -33,6 +33,8 @@
> >>   #include <asm/cputable.h>
> >>   #elif defined(CONFIG_ARM64)
> >>   #include <asm/neon.h>
> >> +#elif defined(CONFIG_LOONGARCH)
> >> +#include <asm/fpu.h>
> >>   #endif
> >>     /**
> >> @@ -88,7 +90,7 @@ void dc_fpu_begin(const char *function_name, const
> >> int line)
> >>       *pcpu += 1;
> >>         if (*pcpu == 1) {
> >> -#if defined(CONFIG_X86)
> >> +#if defined(CONFIG_X86) || defined(CONFIG_LOONGARCH)
> >>           kernel_fpu_begin();
> This is going to conflict with commit b1bcdd409d2d ("drm/amd/display:
> Disable migration to ensure consistency of per-CPU variable"), which is
> present in next-20230505. Resolution is trivial though.
> >>   #elif defined(CONFIG_PPC64)
> >>           if (cpu_has_feature(CPU_FTR_VSX_COMP)) {
> >> @@ -127,7 +129,7 @@ void dc_fpu_end(const char *function_name, const
> >> int line)
> >>       pcpu = get_cpu_ptr(&fpu_recursion_depth);
> >>       *pcpu -= 1;
> >>       if (*pcpu <= 0) {
> >> -#if defined(CONFIG_X86)
> >> +#if defined(CONFIG_X86) || defined(CONFIG_LOONGARCH)
> >>           kernel_fpu_end();
> >>   #elif defined(CONFIG_PPC64)
> >>           if (cpu_has_feature(CPU_FTR_VSX_COMP)) {
> >> diff --git a/drivers/gpu/drm/amd/display/dc/dml/Makefile
> >> b/drivers/gpu/drm/amd/display/dc/dml/Makefile
> >> index 01db035589c5..542962a93e8f 100644
> >> --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile
> >> +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile
> >> @@ -38,6 +38,11 @@ ifdef CONFIG_ARM64
> >>   dml_rcflags := -mgeneral-regs-only
> >>   endif
> >>   +ifdef CONFIG_LOONGARCH
> >> +dml_ccflags := -mfpu=64
> >> +dml_rcflags := -msoft-float
> >> +endif
> >> +
> >>   ifdef CONFIG_CC_IS_GCC
> >>   ifneq ($(call gcc-min-version, 70100),y)
> >>   IS_OLD_GCC = 1
>
> --
> WANG "xen0n" Xuerui
>
> Linux/LoongArch mailing list: https://lore.kernel.org/loongarch/
>


More information about the amd-gfx mailing list