* [PATCH v4 0/1] drm/amd/display: add DCN support for ARM64 @ 2022-10-31 19:37 Ao Zhong 2022-10-31 19:37 ` [PATCH v4 1/1] " Ao Zhong 0 siblings, 1 reply; 5+ messages in thread From: Ao Zhong @ 2022-10-31 19:37 UTC (permalink / raw) To: Harry Wentland, Leo Li, Rodrigo Siqueira, Arnd Bergmann, Nathan Chancellor, Alex Deucher, Stephen Rothwell, Christian König Cc: amd-gfx, linux-arm-kernel, Ao Zhong Hello everyone, Recently I got a SBSA ARM64 workstation, and try to use it as my daily drive machine after installing an AMD RX6400 graphics card. Since the newer AMD GPUs require DCN (Display Core Next) support to work properly, DCN is not supported on ARM64 platforms. Because some code in DCN needs to use FPU, and aarch64 has no soft floating-point toolchain. Displaycore developers have started isolating code that needs to use FPU, and most of the code has been isolated. In the process of trying to enable DCN support for the ARM64 platform, I found that there are two remaining code blocks that are not isolated. Due to -mgeneral-regs-only is enabled by default to compile the kernel on the ARM64 platform, these two code blocks will cause the compilation to fail after enabling DCN support. I have submitted two patches to isolate the remaining two code blocks that need to use the FPU. Links: https://patchwork.freedesktop.org/patch/508813/ Links: https://patchwork.freedesktop.org/patch/508816/ After merging these two patches, we can enable DCN support for ARM64 platform. I removed -mgeneral-regs-only CFLAG in the dml/Makefile for the code that needs to use hardware FPU, and add a control mechanism in amdgpu_dm/dc_fpu.c for ARM Neon. Change Since V3: - Check if CC_IS_CLANG is disabled, since current DCN build with clang on ARM64 is broken Change Since V2: - Drop CONFIG_DRM_AMD_DC_DCN check when initializing the dml_rcflags for ARM64 - Drop CONFIG_ARM64 and CONFIG_DRM_AMD_DC_DCN check for the per-file cflags list entirely Change Since V1: - replace $(dml_rcflags_arm64) with $(dml_rcflags) in dml/Makefile Ao Zhong (1): drm/amd/display: add DCN support for ARM64 drivers/gpu/drm/amd/display/Kconfig | 3 ++- .../gpu/drm/amd/display/amdgpu_dm/dc_fpu.c | 6 ++++++ drivers/gpu/drm/amd/display/dc/dml/Makefile | 20 +++++++++++++++---- 3 files changed, 24 insertions(+), 5 deletions(-) -- 2.37.4 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v4 1/1] drm/amd/display: add DCN support for ARM64 2022-10-31 19:37 [PATCH v4 0/1] drm/amd/display: add DCN support for ARM64 Ao Zhong @ 2022-10-31 19:37 ` Ao Zhong 2022-11-01 14:36 ` Rodrigo Siqueira Jordao 0 siblings, 1 reply; 5+ messages in thread From: Ao Zhong @ 2022-10-31 19:37 UTC (permalink / raw) To: Harry Wentland, Leo Li, Rodrigo Siqueira, Arnd Bergmann, Nathan Chancellor, Alex Deucher, Stephen Rothwell, Christian König Cc: amd-gfx, linux-arm-kernel, Ao Zhong After moving all FPU code to the DML folder, we can enable DCN support for the ARM64 platform. Remove the -mgeneral-regs-only CFLAG from the code in the DML folder that needs to use hardware FPU, and add a control mechanism for ARM Neon. Signed-off-by: Ao Zhong <hacc1225@gmail.com> --- drivers/gpu/drm/amd/display/Kconfig | 3 ++- .../gpu/drm/amd/display/amdgpu_dm/dc_fpu.c | 6 ++++++ drivers/gpu/drm/amd/display/dc/dml/Makefile | 20 +++++++++++++++---- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/amd/display/Kconfig b/drivers/gpu/drm/amd/display/Kconfig index 0142affcdaa3..843a55a6a3ac 100644 --- a/drivers/gpu/drm/amd/display/Kconfig +++ b/drivers/gpu/drm/amd/display/Kconfig @@ -6,7 +6,8 @@ config DRM_AMD_DC bool "AMD DC - Enable new display engine" default y select SND_HDA_COMPONENT if SND_HDA_CORE - select DRM_AMD_DC_DCN if (X86 || PPC64) + # !CC_IS_CLANG: https://github.com/ClangBuiltLinux/linux/issues/1752 + select DRM_AMD_DC_DCN if (X86 || PPC64 || (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 ab0c6d191038..1743ca0a3641 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c @@ -31,6 +31,8 @@ #elif defined(CONFIG_PPC64) #include <asm/switch_to.h> #include <asm/cputable.h> +#elif defined(CONFIG_ARM64) +#include <asm/neon.h> #endif /** @@ -99,6 +101,8 @@ void dc_fpu_begin(const char *function_name, const int line) preempt_disable(); enable_kernel_fp(); } +#elif defined(CONFIG_ARM64) + kernel_neon_begin(); #endif } @@ -136,6 +140,8 @@ void dc_fpu_end(const char *function_name, const int line) disable_kernel_fp(); preempt_enable(); } +#elif defined(CONFIG_ARM64) + kernel_neon_end(); #endif } diff --git a/drivers/gpu/drm/amd/display/dc/dml/Makefile b/drivers/gpu/drm/amd/display/dc/dml/Makefile index d0c6cf61c676..d4e93bed1c8e 100644 --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile @@ -33,6 +33,10 @@ ifdef CONFIG_PPC64 dml_ccflags := -mhard-float -maltivec endif +ifdef CONFIG_ARM64 +dml_rcflags := -mgeneral-regs-only +endif + ifdef CONFIG_CC_IS_GCC ifeq ($(call cc-ifversion, -lt, 0701, y), y) IS_OLD_GCC = 1 @@ -55,8 +59,6 @@ frame_warn_flag := -Wframe-larger-than=2048 endif CFLAGS_$(AMDDALPATH)/dc/dml/display_mode_lib.o := $(dml_ccflags) - -ifdef CONFIG_DRM_AMD_DC_DCN CFLAGS_$(AMDDALPATH)/dc/dml/display_mode_vba.o := $(dml_ccflags) CFLAGS_$(AMDDALPATH)/dc/dml/dcn10/dcn10_fpu.o := $(dml_ccflags) CFLAGS_$(AMDDALPATH)/dc/dml/dcn20/dcn20_fpu.o := $(dml_ccflags) @@ -88,7 +90,6 @@ CFLAGS_$(AMDDALPATH)/dc/dml/calcs/dcn_calcs.o := $(dml_ccflags) CFLAGS_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_auto.o := $(dml_ccflags) CFLAGS_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_math.o := $(dml_ccflags) -Wno-tautological-compare CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/display_mode_vba.o := $(dml_rcflags) -CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn2x/dcn2x.o := $(dml_rcflags) CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_mode_vba_20.o := $(dml_rcflags) CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_rq_dlg_calc_20.o := $(dml_rcflags) CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_mode_vba_20v2.o := $(dml_rcflags) @@ -105,7 +106,18 @@ CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/display_mode_vba_util_32.o := $(dml_rcf CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn301/dcn301_fpu.o := $(dml_rcflags) CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/display_mode_lib.o := $(dml_rcflags) CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dsc/rc_calc_fpu.o := $(dml_rcflags) -endif +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn10/dcn10_fpu.o := $(dml_rcflags) +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/dcn20_fpu.o := $(dml_rcflags) +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn314/display_mode_vba_314.o := $(dml_rcflags) +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn314/display_rq_dlg_calc_314.o := $(dml_rcflags) +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn314/dcn314_fpu.o := $(dml_rcflags) +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn30/dcn30_fpu.o := $(dml_rcflags) +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/dcn32_fpu.o := $(dml_rcflags) +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn321/dcn321_fpu.o := $(dml_rcflags) +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn31/dcn31_fpu.o := $(dml_rcflags) +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn302/dcn302_fpu.o := $(dml_rcflags) +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn303/dcn303_fpu.o := $(dml_rcflags) +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_math.o := $(dml_rcflags) CFLAGS_$(AMDDALPATH)/dc/dml/dml1_display_rq_dlg_calc.o := $(dml_ccflags) CFLAGS_$(AMDDALPATH)/dc/dml/display_rq_dlg_helpers.o := $(dml_ccflags) CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dml1_display_rq_dlg_calc.o := $(dml_rcflags) -- 2.37.4 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v4 1/1] drm/amd/display: add DCN support for ARM64 2022-10-31 19:37 ` [PATCH v4 1/1] " Ao Zhong @ 2022-11-01 14:36 ` Rodrigo Siqueira Jordao 2022-11-01 16:31 ` Nathan Chancellor 0 siblings, 1 reply; 5+ messages in thread From: Rodrigo Siqueira Jordao @ 2022-11-01 14:36 UTC (permalink / raw) To: Ao Zhong, Nathan Chancellor Cc: amd-gfx, linux-arm-kernel, Harry Wentland, Leo Li, Arnd Bergmann, Alex Deucher, Stephen Rothwell, Christian König On 2022-10-31 15:37, Ao Zhong wrote: > After moving all FPU code to the DML folder, we can enable DCN support > for the ARM64 platform. Remove the -mgeneral-regs-only CFLAG from the > code in the DML folder that needs to use hardware FPU, and add a control > mechanism for ARM Neon. > > Signed-off-by: Ao Zhong <hacc1225@gmail.com> > --- > drivers/gpu/drm/amd/display/Kconfig | 3 ++- > .../gpu/drm/amd/display/amdgpu_dm/dc_fpu.c | 6 ++++++ > drivers/gpu/drm/amd/display/dc/dml/Makefile | 20 +++++++++++++++---- > 3 files changed, 24 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/Kconfig b/drivers/gpu/drm/amd/display/Kconfig > index 0142affcdaa3..843a55a6a3ac 100644 > --- a/drivers/gpu/drm/amd/display/Kconfig > +++ b/drivers/gpu/drm/amd/display/Kconfig > @@ -6,7 +6,8 @@ config DRM_AMD_DC > bool "AMD DC - Enable new display engine" > default y > select SND_HDA_COMPONENT if SND_HDA_CORE > - select DRM_AMD_DC_DCN if (X86 || PPC64) > + # !CC_IS_CLANG: https://github.com/ClangBuiltLinux/linux/issues/1752 > + select DRM_AMD_DC_DCN if (X86 || PPC64 || (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 ab0c6d191038..1743ca0a3641 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c > @@ -31,6 +31,8 @@ > #elif defined(CONFIG_PPC64) > #include <asm/switch_to.h> > #include <asm/cputable.h> > +#elif defined(CONFIG_ARM64) > +#include <asm/neon.h> > #endif > > /** > @@ -99,6 +101,8 @@ void dc_fpu_begin(const char *function_name, const int line) > preempt_disable(); > enable_kernel_fp(); > } > +#elif defined(CONFIG_ARM64) > + kernel_neon_begin(); > #endif > } > > @@ -136,6 +140,8 @@ void dc_fpu_end(const char *function_name, const int line) > disable_kernel_fp(); > preempt_enable(); > } > +#elif defined(CONFIG_ARM64) > + kernel_neon_end(); > #endif > } > > diff --git a/drivers/gpu/drm/amd/display/dc/dml/Makefile b/drivers/gpu/drm/amd/display/dc/dml/Makefile > index d0c6cf61c676..d4e93bed1c8e 100644 > --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile > +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile > @@ -33,6 +33,10 @@ ifdef CONFIG_PPC64 > dml_ccflags := -mhard-float -maltivec > endif > > +ifdef CONFIG_ARM64 > +dml_rcflags := -mgeneral-regs-only > +endif > + > ifdef CONFIG_CC_IS_GCC > ifeq ($(call cc-ifversion, -lt, 0701, y), y) > IS_OLD_GCC = 1 > @@ -55,8 +59,6 @@ frame_warn_flag := -Wframe-larger-than=2048 > endif > > CFLAGS_$(AMDDALPATH)/dc/dml/display_mode_lib.o := $(dml_ccflags) > - > -ifdef CONFIG_DRM_AMD_DC_DCN > CFLAGS_$(AMDDALPATH)/dc/dml/display_mode_vba.o := $(dml_ccflags) > CFLAGS_$(AMDDALPATH)/dc/dml/dcn10/dcn10_fpu.o := $(dml_ccflags) > CFLAGS_$(AMDDALPATH)/dc/dml/dcn20/dcn20_fpu.o := $(dml_ccflags) > @@ -88,7 +90,6 @@ CFLAGS_$(AMDDALPATH)/dc/dml/calcs/dcn_calcs.o := $(dml_ccflags) > CFLAGS_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_auto.o := $(dml_ccflags) > CFLAGS_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_math.o := $(dml_ccflags) -Wno-tautological-compare > CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/display_mode_vba.o := $(dml_rcflags) > -CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn2x/dcn2x.o := $(dml_rcflags) > CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_mode_vba_20.o := $(dml_rcflags) > CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_rq_dlg_calc_20.o := $(dml_rcflags) > CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_mode_vba_20v2.o := $(dml_rcflags) > @@ -105,7 +106,18 @@ CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/display_mode_vba_util_32.o := $(dml_rcf > CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn301/dcn301_fpu.o := $(dml_rcflags) > CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/display_mode_lib.o := $(dml_rcflags) > CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dsc/rc_calc_fpu.o := $(dml_rcflags) > -endif > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn10/dcn10_fpu.o := $(dml_rcflags) > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/dcn20_fpu.o := $(dml_rcflags) > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn314/display_mode_vba_314.o := $(dml_rcflags) > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn314/display_rq_dlg_calc_314.o := $(dml_rcflags) > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn314/dcn314_fpu.o := $(dml_rcflags) > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn30/dcn30_fpu.o := $(dml_rcflags) > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/dcn32_fpu.o := $(dml_rcflags) > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn321/dcn321_fpu.o := $(dml_rcflags) > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn31/dcn31_fpu.o := $(dml_rcflags) > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn302/dcn302_fpu.o := $(dml_rcflags) > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn303/dcn303_fpu.o := $(dml_rcflags) > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_math.o := $(dml_rcflags) > CFLAGS_$(AMDDALPATH)/dc/dml/dml1_display_rq_dlg_calc.o := $(dml_ccflags) > CFLAGS_$(AMDDALPATH)/dc/dml/display_rq_dlg_helpers.o := $(dml_ccflags) > CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dml1_display_rq_dlg_calc.o := $(dml_rcflags) lgtm, Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> Nathan, If it is ok for you, I can merge this change. Thanks Siqueira _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v4 1/1] drm/amd/display: add DCN support for ARM64 2022-11-01 14:36 ` Rodrigo Siqueira Jordao @ 2022-11-01 16:31 ` Nathan Chancellor 2022-11-03 14:21 ` Rodrigo Siqueira Jordao 0 siblings, 1 reply; 5+ messages in thread From: Nathan Chancellor @ 2022-11-01 16:31 UTC (permalink / raw) To: Rodrigo Siqueira Jordao Cc: Ao Zhong, amd-gfx, linux-arm-kernel, Harry Wentland, Leo Li, Arnd Bergmann, Alex Deucher, Stephen Rothwell, Christian König On Tue, Nov 01, 2022 at 10:36:08AM -0400, Rodrigo Siqueira Jordao wrote: > > > On 2022-10-31 15:37, Ao Zhong wrote: > > After moving all FPU code to the DML folder, we can enable DCN support > > for the ARM64 platform. Remove the -mgeneral-regs-only CFLAG from the > > code in the DML folder that needs to use hardware FPU, and add a control > > mechanism for ARM Neon. > > > > Signed-off-by: Ao Zhong <hacc1225@gmail.com> > > --- > > drivers/gpu/drm/amd/display/Kconfig | 3 ++- > > .../gpu/drm/amd/display/amdgpu_dm/dc_fpu.c | 6 ++++++ > > drivers/gpu/drm/amd/display/dc/dml/Makefile | 20 +++++++++++++++---- > > 3 files changed, 24 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/gpu/drm/amd/display/Kconfig b/drivers/gpu/drm/amd/display/Kconfig > > index 0142affcdaa3..843a55a6a3ac 100644 > > --- a/drivers/gpu/drm/amd/display/Kconfig > > +++ b/drivers/gpu/drm/amd/display/Kconfig > > @@ -6,7 +6,8 @@ config DRM_AMD_DC > > bool "AMD DC - Enable new display engine" > > default y > > select SND_HDA_COMPONENT if SND_HDA_CORE > > - select DRM_AMD_DC_DCN if (X86 || PPC64) > > + # !CC_IS_CLANG: https://github.com/ClangBuiltLinux/linux/issues/1752 > > + select DRM_AMD_DC_DCN if (X86 || PPC64 || (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 ab0c6d191038..1743ca0a3641 100644 > > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c > > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c > > @@ -31,6 +31,8 @@ > > #elif defined(CONFIG_PPC64) > > #include <asm/switch_to.h> > > #include <asm/cputable.h> > > +#elif defined(CONFIG_ARM64) > > +#include <asm/neon.h> > > #endif > > /** > > @@ -99,6 +101,8 @@ void dc_fpu_begin(const char *function_name, const int line) > > preempt_disable(); > > enable_kernel_fp(); > > } > > +#elif defined(CONFIG_ARM64) > > + kernel_neon_begin(); > > #endif > > } > > @@ -136,6 +140,8 @@ void dc_fpu_end(const char *function_name, const int line) > > disable_kernel_fp(); > > preempt_enable(); > > } > > +#elif defined(CONFIG_ARM64) > > + kernel_neon_end(); > > #endif > > } > > diff --git a/drivers/gpu/drm/amd/display/dc/dml/Makefile b/drivers/gpu/drm/amd/display/dc/dml/Makefile > > index d0c6cf61c676..d4e93bed1c8e 100644 > > --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile > > +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile > > @@ -33,6 +33,10 @@ ifdef CONFIG_PPC64 > > dml_ccflags := -mhard-float -maltivec > > endif > > +ifdef CONFIG_ARM64 > > +dml_rcflags := -mgeneral-regs-only > > +endif > > + > > ifdef CONFIG_CC_IS_GCC > > ifeq ($(call cc-ifversion, -lt, 0701, y), y) > > IS_OLD_GCC = 1 > > @@ -55,8 +59,6 @@ frame_warn_flag := -Wframe-larger-than=2048 > > endif > > CFLAGS_$(AMDDALPATH)/dc/dml/display_mode_lib.o := $(dml_ccflags) > > - > > -ifdef CONFIG_DRM_AMD_DC_DCN > > CFLAGS_$(AMDDALPATH)/dc/dml/display_mode_vba.o := $(dml_ccflags) > > CFLAGS_$(AMDDALPATH)/dc/dml/dcn10/dcn10_fpu.o := $(dml_ccflags) > > CFLAGS_$(AMDDALPATH)/dc/dml/dcn20/dcn20_fpu.o := $(dml_ccflags) > > @@ -88,7 +90,6 @@ CFLAGS_$(AMDDALPATH)/dc/dml/calcs/dcn_calcs.o := $(dml_ccflags) > > CFLAGS_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_auto.o := $(dml_ccflags) > > CFLAGS_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_math.o := $(dml_ccflags) -Wno-tautological-compare > > CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/display_mode_vba.o := $(dml_rcflags) > > -CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn2x/dcn2x.o := $(dml_rcflags) > > CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_mode_vba_20.o := $(dml_rcflags) > > CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_rq_dlg_calc_20.o := $(dml_rcflags) > > CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_mode_vba_20v2.o := $(dml_rcflags) > > @@ -105,7 +106,18 @@ CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/display_mode_vba_util_32.o := $(dml_rcf > > CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn301/dcn301_fpu.o := $(dml_rcflags) > > CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/display_mode_lib.o := $(dml_rcflags) > > CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dsc/rc_calc_fpu.o := $(dml_rcflags) > > -endif > > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn10/dcn10_fpu.o := $(dml_rcflags) > > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/dcn20_fpu.o := $(dml_rcflags) > > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn314/display_mode_vba_314.o := $(dml_rcflags) > > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn314/display_rq_dlg_calc_314.o := $(dml_rcflags) > > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn314/dcn314_fpu.o := $(dml_rcflags) > > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn30/dcn30_fpu.o := $(dml_rcflags) > > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/dcn32_fpu.o := $(dml_rcflags) > > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn321/dcn321_fpu.o := $(dml_rcflags) > > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn31/dcn31_fpu.o := $(dml_rcflags) > > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn302/dcn302_fpu.o := $(dml_rcflags) > > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn303/dcn303_fpu.o := $(dml_rcflags) > > +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_math.o := $(dml_rcflags) > > CFLAGS_$(AMDDALPATH)/dc/dml/dml1_display_rq_dlg_calc.o := $(dml_ccflags) > > CFLAGS_$(AMDDALPATH)/dc/dml/display_rq_dlg_helpers.o := $(dml_ccflags) > > CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dml1_display_rq_dlg_calc.o := $(dml_rcflags) > > lgtm, > > Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> > > Nathan, > > If it is ok for you, I can merge this change. Yes, this version looks good to me, as the code can no longer be built for arm64 when using clang. Cheers, Nathan _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v4 1/1] drm/amd/display: add DCN support for ARM64 2022-11-01 16:31 ` Nathan Chancellor @ 2022-11-03 14:21 ` Rodrigo Siqueira Jordao 0 siblings, 0 replies; 5+ messages in thread From: Rodrigo Siqueira Jordao @ 2022-11-03 14:21 UTC (permalink / raw) To: Nathan Chancellor, Ao Zhong, Alex Deucher Cc: amd-gfx, linux-arm-kernel, Harry Wentland, Leo Li, Arnd Bergmann, Stephen Rothwell, Christian König On 2022-11-01 12:31, Nathan Chancellor wrote: > On Tue, Nov 01, 2022 at 10:36:08AM -0400, Rodrigo Siqueira Jordao wrote: >> >> >> On 2022-10-31 15:37, Ao Zhong wrote: >>> After moving all FPU code to the DML folder, we can enable DCN support >>> for the ARM64 platform. Remove the -mgeneral-regs-only CFLAG from the >>> code in the DML folder that needs to use hardware FPU, and add a control >>> mechanism for ARM Neon. >>> >>> Signed-off-by: Ao Zhong <hacc1225@gmail.com> >>> --- >>> drivers/gpu/drm/amd/display/Kconfig | 3 ++- >>> .../gpu/drm/amd/display/amdgpu_dm/dc_fpu.c | 6 ++++++ >>> drivers/gpu/drm/amd/display/dc/dml/Makefile | 20 +++++++++++++++---- >>> 3 files changed, 24 insertions(+), 5 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/amd/display/Kconfig b/drivers/gpu/drm/amd/display/Kconfig >>> index 0142affcdaa3..843a55a6a3ac 100644 >>> --- a/drivers/gpu/drm/amd/display/Kconfig >>> +++ b/drivers/gpu/drm/amd/display/Kconfig >>> @@ -6,7 +6,8 @@ config DRM_AMD_DC >>> bool "AMD DC - Enable new display engine" >>> default y >>> select SND_HDA_COMPONENT if SND_HDA_CORE >>> - select DRM_AMD_DC_DCN if (X86 || PPC64) >>> + # !CC_IS_CLANG: https://github.com/ClangBuiltLinux/linux/issues/1752>>>> + select DRM_AMD_DC_DCN if (X86 || PPC64 || (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 ab0c6d191038..1743ca0a3641 100644 >>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c >>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/dc_fpu.c >>> @@ -31,6 +31,8 @@ >>> #elif defined(CONFIG_PPC64) >>> #include <asm/switch_to.h> >>> #include <asm/cputable.h> >>> +#elif defined(CONFIG_ARM64) >>> +#include <asm/neon.h> >>> #endif >>> /** >>> @@ -99,6 +101,8 @@ void dc_fpu_begin(const char *function_name, const int line) >>> preempt_disable(); >>> enable_kernel_fp(); >>> } >>> +#elif defined(CONFIG_ARM64) >>> + kernel_neon_begin(); >>> #endif >>> } >>> @@ -136,6 +140,8 @@ void dc_fpu_end(const char *function_name, const int line) >>> disable_kernel_fp(); >>> preempt_enable(); >>> } >>> +#elif defined(CONFIG_ARM64) >>> + kernel_neon_end(); >>> #endif >>> } >>> diff --git a/drivers/gpu/drm/amd/display/dc/dml/Makefile b/drivers/gpu/drm/amd/display/dc/dml/Makefile >>> index d0c6cf61c676..d4e93bed1c8e 100644 >>> --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile >>> +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile >>> @@ -33,6 +33,10 @@ ifdef CONFIG_PPC64 >>> dml_ccflags := -mhard-float -maltivec >>> endif >>> +ifdef CONFIG_ARM64 >>> +dml_rcflags := -mgeneral-regs-only >>> +endif >>> + >>> ifdef CONFIG_CC_IS_GCC >>> ifeq ($(call cc-ifversion, -lt, 0701, y), y) >>> IS_OLD_GCC = 1 >>> @@ -55,8 +59,6 @@ frame_warn_flag := -Wframe-larger-than=2048 >>> endif >>> CFLAGS_$(AMDDALPATH)/dc/dml/display_mode_lib.o := $(dml_ccflags) >>> - >>> -ifdef CONFIG_DRM_AMD_DC_DCN >>> CFLAGS_$(AMDDALPATH)/dc/dml/display_mode_vba.o := $(dml_ccflags) >>> CFLAGS_$(AMDDALPATH)/dc/dml/dcn10/dcn10_fpu.o := $(dml_ccflags) >>> CFLAGS_$(AMDDALPATH)/dc/dml/dcn20/dcn20_fpu.o := $(dml_ccflags) >>> @@ -88,7 +90,6 @@ CFLAGS_$(AMDDALPATH)/dc/dml/calcs/dcn_calcs.o := $(dml_ccflags) >>> CFLAGS_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_auto.o := $(dml_ccflags) >>> CFLAGS_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_math.o := $(dml_ccflags) -Wno-tautological-compare >>> CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/display_mode_vba.o := $(dml_rcflags) >>> -CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn2x/dcn2x.o := $(dml_rcflags) >>> CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_mode_vba_20.o := $(dml_rcflags) >>> CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_rq_dlg_calc_20.o := $(dml_rcflags) >>> CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_mode_vba_20v2.o := $(dml_rcflags) >>> @@ -105,7 +106,18 @@ CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/display_mode_vba_util_32.o := $(dml_rcf >>> CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn301/dcn301_fpu.o := $(dml_rcflags) >>> CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/display_mode_lib.o := $(dml_rcflags) >>> CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dsc/rc_calc_fpu.o := $(dml_rcflags) >>> -endif >>> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn10/dcn10_fpu.o := $(dml_rcflags) >>> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/dcn20_fpu.o := $(dml_rcflags) >>> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn314/display_mode_vba_314.o := $(dml_rcflags) >>> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn314/display_rq_dlg_calc_314.o := $(dml_rcflags) >>> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn314/dcn314_fpu.o := $(dml_rcflags) >>> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn30/dcn30_fpu.o := $(dml_rcflags) >>> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/dcn32_fpu.o := $(dml_rcflags) >>> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn321/dcn321_fpu.o := $(dml_rcflags) >>> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn31/dcn31_fpu.o := $(dml_rcflags) >>> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn302/dcn302_fpu.o := $(dml_rcflags) >>> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn303/dcn303_fpu.o := $(dml_rcflags) >>> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_math.o := $(dml_rcflags) >>> CFLAGS_$(AMDDALPATH)/dc/dml/dml1_display_rq_dlg_calc.o := $(dml_ccflags) >>> CFLAGS_$(AMDDALPATH)/dc/dml/display_rq_dlg_helpers.o := $(dml_ccflags) >>> CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dml1_display_rq_dlg_calc.o := $(dml_rcflags) >> >> lgtm, >> >> Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> >> >> Nathan, >> >> If it is ok for you, I can merge this change. > > Yes, this version looks good to me, as the code can no longer be built > for arm64 when using clang. > > Cheers, > Nathan I just merged this patch to amd-staging-drm-next. Thanks Siqueira _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-11-03 14:22 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-10-31 19:37 [PATCH v4 0/1] drm/amd/display: add DCN support for ARM64 Ao Zhong 2022-10-31 19:37 ` [PATCH v4 1/1] " Ao Zhong 2022-11-01 14:36 ` Rodrigo Siqueira Jordao 2022-11-01 16:31 ` Nathan Chancellor 2022-11-03 14:21 ` Rodrigo Siqueira Jordao
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).