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

Huacai Chen chenhuacai at kernel.org
Sat May 6 09:43:59 UTC 2023


Hi, Hamza,

On Fri, May 5, 2023 at 9:37 PM Hamza Mahfooz <hamza.mahfooz at amd.com> 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/
I have tested hotplug, resolution changing and kms_flip in IGT, all of
them works fine.

Huacai
>
> >
> > 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();
> >   #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
> --
> Hamza
>


More information about the amd-gfx mailing list