----- Original Message ----- > From: "Samuel Holland" <samuel.holland@xxxxxxxxxx> > To: "Michael Ellerman" <mpe@xxxxxxxxxxxxxx> > Cc: "linux-kernel" <linux-kernel@xxxxxxxxxxxxxxx>, "amd-gfx" <amd-gfx@xxxxxxxxxxxxxxxxxxxxx>, "linux-arch" > <linux-arch@xxxxxxxxxxxxxxx>, "linux-arm-kernel" <linux-arm-kernel@xxxxxxxxxxxxxxxxxxx>, loongarch@xxxxxxxxxxxxxxx, > "linuxppc-dev" <linuxppc-dev@xxxxxxxxxxxxxxxx>, "x86" <x86@xxxxxxxxxx>, linux-riscv@xxxxxxxxxxxxxxxxxxx, "Christoph > Hellwig" <hch@xxxxxxxxxxxxx>, "Timothy Pearson" <tpearson@xxxxxxxxxxxxxxxxxxxxx> > Sent: Wednesday, December 13, 2023 7:03:20 PM > Subject: Re: [RFC PATCH 10/12] drm/amd/display: Use ARCH_HAS_KERNEL_FPU_SUPPORT > On 2023-12-11 6:23 AM, Michael Ellerman wrote: >> Hi Samuel, >> >> Thanks for trying to clean all this up. >> >> One problem below. >> >> Samuel Holland <samuel.holland@xxxxxxxxxx> writes: >>> Now that all previously-supported architectures select >>> ARCH_HAS_KERNEL_FPU_SUPPORT, this code can depend on that symbol instead >>> of the existing list of architectures. It can also take advantage of the >>> common kernel-mode FPU API and method of adjusting CFLAGS. >>> >>> Signed-off-by: Samuel Holland <samuel.holland@xxxxxxxxxx> >> ... >>> 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 4ae4720535a5..b64f917174ca 100644 >>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c >>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c >>> @@ -87,20 +78,9 @@ void dc_fpu_begin(const char *function_name, const int line) >>> WARN_ON_ONCE(!in_task()); >>> preempt_disable(); >>> depth = __this_cpu_inc_return(fpu_recursion_depth); >>> - >>> if (depth == 1) { >>> -#if defined(CONFIG_X86) || defined(CONFIG_LOONGARCH) >>> + BUG_ON(!kernel_fpu_available()); >>> kernel_fpu_begin(); >>> -#elif defined(CONFIG_PPC64) >>> - if (cpu_has_feature(CPU_FTR_VSX_COMP)) >>> - enable_kernel_vsx(); >>> - else if (cpu_has_feature(CPU_FTR_ALTIVEC_COMP)) >>> - enable_kernel_altivec(); >> >> Note altivec. >> >>> - else if (!cpu_has_feature(CPU_FTR_FPU_UNAVAILABLE)) >>> - enable_kernel_fp(); >>> -#elif defined(CONFIG_ARM64) >>> - kernel_neon_begin(); >>> -#endif >>> } >>> >>> TRACE_DCN_FPU(true, function_name, line, depth); >>> diff --git a/drivers/gpu/drm/amd/display/dc/dml/Makefile >>> b/drivers/gpu/drm/amd/display/dc/dml/Makefile >>> index ea7d60f9a9b4..5aad0f572ba3 100644 >>> --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile >>> +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile >>> @@ -25,40 +25,8 @@ >>> # It provides the general basic services required by other DAL >>> # subcomponents. >>> >>> -ifdef CONFIG_X86 >>> -dml_ccflags-$(CONFIG_CC_IS_GCC) := -mhard-float >>> -dml_ccflags := $(dml_ccflags-y) -msse >>> -endif >>> - >>> -ifdef CONFIG_PPC64 >>> -dml_ccflags := -mhard-float -maltivec >>> -endif >> >> And altivec is enabled in the flags there. >> >> That doesn't match your implementation for powerpc in patch 7, which >> only deals with float. >> >> I suspect the AMD driver actually doesn't need altivec enabled, but I >> don't know that for sure. It compiles without it, but I don't have a GPU >> to actually test. I've added Timothy on Cc who added the support for >> powerpc to the driver originally, hopefully he has a test system. If you would like me to test I'm happy to do so, but I am travelling until Friday so would need to wait until then. Thanks!