linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RESEND 0/1] drm/amd/display: add DCN support for ARM64
@ 2022-10-27  0:25 Ao Zhong
  2022-10-27  0:25 ` [PATCH RESEND 1/1] " Ao Zhong
  0 siblings, 1 reply; 15+ messages in thread
From: Ao Zhong @ 2022-10-27  0:25 UTC (permalink / raw)
  To: Harry Wentland, Leo Li, Rodrigo Siqueira, Arnd Bergmann,
	Nathan Chancellor, Alex Deucher, Stephen Rothwell
  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.

Ao Zhong (1):
  drm/amd/display: add DCN support for ARM64

 drivers/gpu/drm/amd/display/Kconfig           |  2 +-
 .../gpu/drm/amd/display/amdgpu_dm/dc_fpu.c    |  6 ++
 drivers/gpu/drm/amd/display/dc/dml/Makefile   | 64 ++++++++++++-------
 3 files changed, 49 insertions(+), 23 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] 15+ messages in thread

* [PATCH RESEND 1/1] drm/amd/display: add DCN support for ARM64
  2022-10-27  0:25 [PATCH RESEND 0/1] drm/amd/display: add DCN support for ARM64 Ao Zhong
@ 2022-10-27  0:25 ` Ao Zhong
  2022-10-27  6:41   ` Christian König
  2022-10-27 10:52   ` Arnd Bergmann
  0 siblings, 2 replies; 15+ messages in thread
From: Ao Zhong @ 2022-10-27  0:25 UTC (permalink / raw)
  To: Harry Wentland, Leo Li, Rodrigo Siqueira, Arnd Bergmann,
	Nathan Chancellor, Alex Deucher, Stephen Rothwell
  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           |  2 +-
 .../gpu/drm/amd/display/amdgpu_dm/dc_fpu.c    |  6 ++
 drivers/gpu/drm/amd/display/dc/dml/Makefile   | 64 ++++++++++++-------
 3 files changed, 49 insertions(+), 23 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/Kconfig b/drivers/gpu/drm/amd/display/Kconfig
index 0142affcdaa3..a7f1c4e51719 100644
--- a/drivers/gpu/drm/amd/display/Kconfig
+++ b/drivers/gpu/drm/amd/display/Kconfig
@@ -6,7 +6,7 @@ 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)
+	select DRM_AMD_DC_DCN if (X86 || PPC64 || (ARM64 && KERNEL_MODE_NEON))
 	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..3cdd109189e0 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/Makefile
+++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile
@@ -33,6 +33,12 @@ ifdef CONFIG_PPC64
 dml_ccflags := -mhard-float -maltivec
 endif
 
+ifdef CONFIG_ARM64
+ifdef CONFIG_DRM_AMD_DC_DCN
+dml_rcflags_arm64 := -mgeneral-regs-only
+endif
+endif
+
 ifdef CONFIG_CC_IS_GCC
 ifeq ($(call cc-ifversion, -lt, 0701, y), y)
 IS_OLD_GCC = 1
@@ -87,32 +93,46 @@ CFLAGS_$(AMDDALPATH)/dc/dml/dsc/rc_calc_fpu.o := $(dml_ccflags)
 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/display_mode_vba.o := $(dml_rcflags) $(dml_rcflags_arm64)
 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)
-CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_rq_dlg_calc_20v2.o := $(dml_rcflags)
-CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn21/display_mode_vba_21.o := $(dml_rcflags)
-CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn21/display_rq_dlg_calc_21.o := $(dml_rcflags)
-CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn30/display_mode_vba_30.o := $(dml_rcflags)
-CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn30/display_rq_dlg_calc_30.o := $(dml_rcflags)
-CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn31/display_mode_vba_31.o := $(dml_rcflags)
-CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn31/display_rq_dlg_calc_31.o := $(dml_rcflags)
-CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/display_mode_vba_32.o := $(dml_rcflags)
-CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/display_rq_dlg_calc_32.o := $(dml_rcflags)
-CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/display_mode_vba_util_32.o := $(dml_rcflags)
-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)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_mode_vba_20.o := $(dml_rcflags) $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_rq_dlg_calc_20.o := $(dml_rcflags) $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_mode_vba_20v2.o := $(dml_rcflags) $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_rq_dlg_calc_20v2.o := $(dml_rcflags) $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn21/display_mode_vba_21.o := $(dml_rcflags) $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn21/display_rq_dlg_calc_21.o := $(dml_rcflags) $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn30/display_mode_vba_30.o := $(dml_rcflags) $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn30/display_rq_dlg_calc_30.o := $(dml_rcflags) $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn31/display_mode_vba_31.o := $(dml_rcflags) $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn31/display_rq_dlg_calc_31.o := $(dml_rcflags) $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/display_mode_vba_32.o := $(dml_rcflags) $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/display_rq_dlg_calc_32.o := $(dml_rcflags) $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/display_mode_vba_util_32.o := $(dml_rcflags) $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn301/dcn301_fpu.o := $(dml_rcflags) $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/display_mode_lib.o := $(dml_rcflags) $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dsc/rc_calc_fpu.o  := $(dml_rcflags) $(dml_rcflags_arm64)
+ifdef CONFIG_ARM64
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn10/dcn10_fpu.o := $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/dcn20_fpu.o := $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn314/display_mode_vba_314.o := $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn314/display_rq_dlg_calc_314.o := $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn314/dcn314_fpu.o := $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn30/dcn30_fpu.o := $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/dcn32_fpu.o := $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn321/dcn321_fpu.o := $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn31/dcn31_fpu.o := $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn302/dcn302_fpu.o := $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn303/dcn303_fpu.o := $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_math.o := $(dml_rcflags_arm64)
+endif
 endif
 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)
-CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/display_rq_dlg_helpers.o := $(dml_rcflags)
-CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calcs.o := $(dml_rcflags)
-CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_auto.o := $(dml_rcflags)
-CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_math.o := $(dml_rcflags)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dml1_display_rq_dlg_calc.o := $(dml_rcflags) $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/display_rq_dlg_helpers.o := $(dml_rcflags) $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calcs.o := $(dml_rcflags) $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_auto.o := $(dml_rcflags) $(dml_rcflags_arm64)
+CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_math.o := $(dml_rcflags) $(dml_rcflags_arm64)
 
 DML = calcs/dce_calcs.o calcs/custom_float.o calcs/bw_fixed.o
 
-- 
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] 15+ messages in thread

* Re: [PATCH RESEND 1/1] drm/amd/display: add DCN support for ARM64
  2022-10-27  0:25 ` [PATCH RESEND 1/1] " Ao Zhong
@ 2022-10-27  6:41   ` Christian König
  2022-10-27 10:52   ` Arnd Bergmann
  1 sibling, 0 replies; 15+ messages in thread
From: Christian König @ 2022-10-27  6:41 UTC (permalink / raw)
  To: Ao Zhong, Harry Wentland, Leo Li, Rodrigo Siqueira, Arnd Bergmann,
	Nathan Chancellor, Alex Deucher, Stephen Rothwell
  Cc: linux-arm-kernel, amd-gfx

Am 27.10.22 um 02:25 schrieb 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.

It's nice to see that the FPU isolation work is so fruitful :)

> Signed-off-by: Ao Zhong <hacc1225@gmail.com>

Acked-by: Christian König <christian.koenig@amd.com>

> ---
>   drivers/gpu/drm/amd/display/Kconfig           |  2 +-
>   .../gpu/drm/amd/display/amdgpu_dm/dc_fpu.c    |  6 ++
>   drivers/gpu/drm/amd/display/dc/dml/Makefile   | 64 ++++++++++++-------
>   3 files changed, 49 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/Kconfig b/drivers/gpu/drm/amd/display/Kconfig
> index 0142affcdaa3..a7f1c4e51719 100644
> --- a/drivers/gpu/drm/amd/display/Kconfig
> +++ b/drivers/gpu/drm/amd/display/Kconfig
> @@ -6,7 +6,7 @@ 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)
> +	select DRM_AMD_DC_DCN if (X86 || PPC64 || (ARM64 && KERNEL_MODE_NEON))
>   	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..3cdd109189e0 100644
> --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile
> +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile
> @@ -33,6 +33,12 @@ ifdef CONFIG_PPC64
>   dml_ccflags := -mhard-float -maltivec
>   endif
>   
> +ifdef CONFIG_ARM64
> +ifdef CONFIG_DRM_AMD_DC_DCN
> +dml_rcflags_arm64 := -mgeneral-regs-only
> +endif
> +endif
> +
>   ifdef CONFIG_CC_IS_GCC
>   ifeq ($(call cc-ifversion, -lt, 0701, y), y)
>   IS_OLD_GCC = 1
> @@ -87,32 +93,46 @@ CFLAGS_$(AMDDALPATH)/dc/dml/dsc/rc_calc_fpu.o := $(dml_ccflags)
>   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/display_mode_vba.o := $(dml_rcflags) $(dml_rcflags_arm64)
>   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)
> -CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_rq_dlg_calc_20v2.o := $(dml_rcflags)
> -CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn21/display_mode_vba_21.o := $(dml_rcflags)
> -CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn21/display_rq_dlg_calc_21.o := $(dml_rcflags)
> -CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn30/display_mode_vba_30.o := $(dml_rcflags)
> -CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn30/display_rq_dlg_calc_30.o := $(dml_rcflags)
> -CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn31/display_mode_vba_31.o := $(dml_rcflags)
> -CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn31/display_rq_dlg_calc_31.o := $(dml_rcflags)
> -CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/display_mode_vba_32.o := $(dml_rcflags)
> -CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/display_rq_dlg_calc_32.o := $(dml_rcflags)
> -CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/display_mode_vba_util_32.o := $(dml_rcflags)
> -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)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_mode_vba_20.o := $(dml_rcflags) $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_rq_dlg_calc_20.o := $(dml_rcflags) $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_mode_vba_20v2.o := $(dml_rcflags) $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/display_rq_dlg_calc_20v2.o := $(dml_rcflags) $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn21/display_mode_vba_21.o := $(dml_rcflags) $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn21/display_rq_dlg_calc_21.o := $(dml_rcflags) $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn30/display_mode_vba_30.o := $(dml_rcflags) $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn30/display_rq_dlg_calc_30.o := $(dml_rcflags) $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn31/display_mode_vba_31.o := $(dml_rcflags) $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn31/display_rq_dlg_calc_31.o := $(dml_rcflags) $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/display_mode_vba_32.o := $(dml_rcflags) $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/display_rq_dlg_calc_32.o := $(dml_rcflags) $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/display_mode_vba_util_32.o := $(dml_rcflags) $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn301/dcn301_fpu.o := $(dml_rcflags) $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/display_mode_lib.o := $(dml_rcflags) $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dsc/rc_calc_fpu.o  := $(dml_rcflags) $(dml_rcflags_arm64)
> +ifdef CONFIG_ARM64
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn10/dcn10_fpu.o := $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn20/dcn20_fpu.o := $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn314/display_mode_vba_314.o := $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn314/display_rq_dlg_calc_314.o := $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn314/dcn314_fpu.o := $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn30/dcn30_fpu.o := $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn32/dcn32_fpu.o := $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn321/dcn321_fpu.o := $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn31/dcn31_fpu.o := $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn302/dcn302_fpu.o := $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dcn303/dcn303_fpu.o := $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_math.o := $(dml_rcflags_arm64)
> +endif
>   endif
>   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)
> -CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/display_rq_dlg_helpers.o := $(dml_rcflags)
> -CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calcs.o := $(dml_rcflags)
> -CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_auto.o := $(dml_rcflags)
> -CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_math.o := $(dml_rcflags)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/dml1_display_rq_dlg_calc.o := $(dml_rcflags) $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/display_rq_dlg_helpers.o := $(dml_rcflags) $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calcs.o := $(dml_rcflags) $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_auto.o := $(dml_rcflags) $(dml_rcflags_arm64)
> +CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml/calcs/dcn_calc_math.o := $(dml_rcflags) $(dml_rcflags_arm64)
>   
>   DML = calcs/dce_calcs.o calcs/custom_float.o calcs/bw_fixed.o
>   


_______________________________________________
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] 15+ messages in thread

* Re: [PATCH RESEND 1/1] drm/amd/display: add DCN support for ARM64
  2022-10-27  0:25 ` [PATCH RESEND 1/1] " Ao Zhong
  2022-10-27  6:41   ` Christian König
@ 2022-10-27 10:52   ` Arnd Bergmann
  2022-10-27 12:52     ` Christian König
                       ` (2 more replies)
  1 sibling, 3 replies; 15+ messages in thread
From: Arnd Bergmann @ 2022-10-27 10:52 UTC (permalink / raw)
  To: Ao Zhong, Harry Wentland, Leo Li, Rodrigo Siqueira,
	Nathan Chancellor, Alex Deucher, Stephen Rothwell
  Cc: amd-gfx, linux-arm-kernel

On Thu, Oct 27, 2022, at 02:25, 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>

There have been problems with stack frame overflows on this code
in the past, how much have you tested this with random configurations
to see if we still hit them in corner cases on arm64 that may not
show up on x86 or powerpc? I would expect to see a few more of them
for every new architecture port.

> index d0c6cf61c676..3cdd109189e0 100644
> --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile
> +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile
> @@ -33,6 +33,12 @@ ifdef CONFIG_PPC64
>  dml_ccflags := -mhard-float -maltivec
>  endif
> 
> +ifdef CONFIG_ARM64
> +ifdef CONFIG_DRM_AMD_DC_DCN
> +dml_rcflags_arm64 := -mgeneral-regs-only
> +endif
> +endif
> +

>  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/display_mode_vba.o := 
> $(dml_rcflags) $(dml_rcflags_arm64)

Why do you need separate $(dml_rcflags) and $(dml_rcflags_arm64)
rather than adding -mgeneral-regs-only to $(dml_rcflags) directly?

    Arnd

_______________________________________________
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] 15+ messages in thread

* Re: [PATCH RESEND 1/1] drm/amd/display: add DCN support for ARM64
  2022-10-27 10:52   ` Arnd Bergmann
@ 2022-10-27 12:52     ` Christian König
  2022-10-27 13:38     ` Ao Zhong
  2022-10-27 14:29     ` Rodrigo Siqueira
  2 siblings, 0 replies; 15+ messages in thread
From: Christian König @ 2022-10-27 12:52 UTC (permalink / raw)
  To: Arnd Bergmann, Ao Zhong, Harry Wentland, Leo Li, Rodrigo Siqueira,
	Nathan Chancellor, Alex Deucher, Stephen Rothwell
  Cc: linux-arm-kernel, amd-gfx

Am 27.10.22 um 12:52 schrieb Arnd Bergmann:
> On Thu, Oct 27, 2022, at 02:25, 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>
> There have been problems with stack frame overflows on this code
> in the past, how much have you tested this with random configurations
> to see if we still hit them in corner cases on arm64 that may not
> show up on x86 or powerpc? I would expect to see a few more of them
> for every new architecture port.

Our display team has worked quite a bit on those.

For example instead of putting large structures used for temporary 
calculations on the stack we now either completely avoid or kmalloc them 
as part of the CRTC structure.

On the other hand I wouldn't put my hand into the fire that this has 
fixed all the problematic call paths. So keeping an eye open for this is 
certainly a good idea.

Christian.

>> index d0c6cf61c676..3cdd109189e0 100644
>> --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile
>> +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile
>> @@ -33,6 +33,12 @@ ifdef CONFIG_PPC64
>>   dml_ccflags := -mhard-float -maltivec
>>   endif
>>
>> +ifdef CONFIG_ARM64
>> +ifdef CONFIG_DRM_AMD_DC_DCN
>> +dml_rcflags_arm64 := -mgeneral-regs-only
>> +endif
>> +endif
>> +
>>   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/display_mode_vba.o :=
>> $(dml_rcflags) $(dml_rcflags_arm64)
> Why do you need separate $(dml_rcflags) and $(dml_rcflags_arm64)
> rather than adding -mgeneral-regs-only to $(dml_rcflags) directly?
>
>      Arnd


_______________________________________________
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] 15+ messages in thread

* Re: [PATCH RESEND 1/1] drm/amd/display: add DCN support for ARM64
  2022-10-27 10:52   ` Arnd Bergmann
  2022-10-27 12:52     ` Christian König
@ 2022-10-27 13:38     ` Ao Zhong
  2022-10-27 13:44       ` Arnd Bergmann
  2022-10-27 14:29     ` Rodrigo Siqueira
  2 siblings, 1 reply; 15+ messages in thread
From: Ao Zhong @ 2022-10-27 13:38 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Harry Wentland, Leo Li, Rodrigo Siqueira, Nathan Chancellor,
	Alex Deucher, Stephen Rothwell, amd-gfx, linux-arm-kernel

Am Do., 27. Okt. 2022 um 12:52 Uhr schrieb Arnd Bergmann <arnd@arndb.de>:
>
> On Thu, Oct 27, 2022, at 02:25, 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>
>
> There have been problems with stack frame overflows on this code
> in the past, how much have you tested this with random configurations
> to see if we still hit them in corner cases on arm64 that may not
> show up on x86 or powerpc? I would expect to see a few more of them
> for every new architecture port.

I just used this patch on my own Desktop and didn't test it much.

> > index d0c6cf61c676..3cdd109189e0 100644
> > --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile
> > +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile
> > @@ -33,6 +33,12 @@ ifdef CONFIG_PPC64
> >  dml_ccflags := -mhard-float -maltivec
> >  endif
> >
> > +ifdef CONFIG_ARM64
> > +ifdef CONFIG_DRM_AMD_DC_DCN
> > +dml_rcflags_arm64 := -mgeneral-regs-only
> > +endif
> > +endif
> > +
>
> >  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/display_mode_vba.o :=
> > $(dml_rcflags) $(dml_rcflags_arm64)
>
> Why do you need separate $(dml_rcflags) and $(dml_rcflags_arm64)
> rather than adding -mgeneral-regs-only to $(dml_rcflags) directly?
>
>     Arnd

I don't know if $(dml_rcflags) has any other use. I'm afraid my patch
will break something.

_______________________________________________
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] 15+ messages in thread

* Re: [PATCH RESEND 1/1] drm/amd/display: add DCN support for ARM64
  2022-10-27 13:38     ` Ao Zhong
@ 2022-10-27 13:44       ` Arnd Bergmann
  2022-10-27 13:49         ` Ao Zhong
  0 siblings, 1 reply; 15+ messages in thread
From: Arnd Bergmann @ 2022-10-27 13:44 UTC (permalink / raw)
  To: Ao Zhong
  Cc: Harry Wentland, Leo Li, Rodrigo Siqueira, Nathan Chancellor,
	Alex Deucher, Stephen Rothwell, amd-gfx, linux-arm-kernel

On Thu, Oct 27, 2022, at 15:38, Ao Zhong wrote:
> Am Do., 27. Okt. 2022 um 12:52 Uhr schrieb Arnd Bergmann <arnd@arndb.de>:
>
>> Why do you need separate $(dml_rcflags) and $(dml_rcflags_arm64)
>> rather than adding -mgeneral-regs-only to $(dml_rcflags) directly?
>
> I don't know if $(dml_rcflags) has any other use. I'm afraid my patch
> will break something.

From the git history, it looks like dml_rcflags was introduced for
arm64 support originally and left in place when this support got disabled.

       Arnd

_______________________________________________
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] 15+ messages in thread

* Re: [PATCH RESEND 1/1] drm/amd/display: add DCN support for ARM64
  2022-10-27 13:44       ` Arnd Bergmann
@ 2022-10-27 13:49         ` Ao Zhong
  0 siblings, 0 replies; 15+ messages in thread
From: Ao Zhong @ 2022-10-27 13:49 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Harry Wentland, Leo Li, Rodrigo Siqueira, Nathan Chancellor,
	Alex Deucher, Stephen Rothwell, amd-gfx, linux-arm-kernel

OK, I'll replace $(dml_rcflags_arm64) with $(dml_rcflags).

Am Do., 27. Okt. 2022 um 15:45 Uhr schrieb Arnd Bergmann <arnd@arndb.de>:
>
> On Thu, Oct 27, 2022, at 15:38, Ao Zhong wrote:
> > Am Do., 27. Okt. 2022 um 12:52 Uhr schrieb Arnd Bergmann <arnd@arndb.de>:
> >
> >> Why do you need separate $(dml_rcflags) and $(dml_rcflags_arm64)
> >> rather than adding -mgeneral-regs-only to $(dml_rcflags) directly?
> >
> > I don't know if $(dml_rcflags) has any other use. I'm afraid my patch
> > will break something.
>
> From the git history, it looks like dml_rcflags was introduced for
> arm64 support originally and left in place when this support got disabled.
>
>        Arnd

_______________________________________________
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] 15+ messages in thread

* Re: [PATCH RESEND 1/1] drm/amd/display: add DCN support for ARM64
  2022-10-27 10:52   ` Arnd Bergmann
  2022-10-27 12:52     ` Christian König
  2022-10-27 13:38     ` Ao Zhong
@ 2022-10-27 14:29     ` Rodrigo Siqueira
  2022-10-27 15:22       ` Nathan Chancellor
                         ` (4 more replies)
  2 siblings, 5 replies; 15+ messages in thread
From: Rodrigo Siqueira @ 2022-10-27 14:29 UTC (permalink / raw)
  To: Arnd Bergmann, Ao Zhong, Nathan Chancellor, Alex Deucher,
	Stephen Rothwell
  Cc: amd-gfx, linux-arm-kernel, Harry Wentland, Leo Li

Hi Ao/Arnd/Stephen/Nathan,

Ao,

Thanks a lot for this new patch.

Since you have an ARM64 + AMD GPU, could you also run a couple of tests 
in your setup? If so, this is a good set of tests imho:

1. Check plug and unplug displays (let says 5x)
2. Change resolutions
3. (most wanted test) Could you run some IGT tests?

About IGT, this is the official repository:

https://gitlab.freedesktop.org/drm/igt-gpu-tools

It should be easy to run IGT in your system. Follow a brief summary:

1. Install dependencies

(maybe I missed something)

Debian
apt install flex bison pkg-config x11proto-dri2-dev python-docutils 
valgrind peg libpciaccess-dev libkmod-dev libprocps-dev libunwind-dev 
libdw-dev zlib1g-dev liblzma-dev libcairo-dev libpixman-1-dev 
libudev-dev libgsl-dev libasound2-dev libjson-c-dev libcurl4-openssl-dev 
libxrandr-dev libxv-dev meson libdrm-dev qemu-user qemu-user-static

ArchLinux
pacman -S gcc flex bison pkg-config libpciaccess kmod procps-ng 
libunwind libdwarf zlib xz cairo pixman libudev0-shim gsl alsa-lib 
xmlrpc-c json-c curl libxrandr libxv xorgproto python-docutils valgrind 
peg meson libdrm libtool make autoconf automake gtk-doc python-docutils 
git vim sudo

2. Build IGT

meson build && ninja -C build

3. Turn off your GUI

(You must run IGT without any GUI)

sudo systemctl isolate multi-user.target

After run this command, you should see the TTY.

4. Try to run this IGT test

sudo ./build/tests/kms_flip

And let me know if this test looks ok for you.

On 10/27/22 06:52, Arnd Bergmann wrote:
> On Thu, Oct 27, 2022, at 02:25, 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.

I recommend you to add the following info in your commit:

1. System that you use to validate this change (CPU name, monitor, 
distro, wayland/X, etc).
2. Describe the set of tests that you tried.

>>
>> Signed-off-by: Ao Zhong <hacc1225@gmail.com>
> 
> There have been problems with stack frame overflows on this code
> in the past, how much have you tested this with random configurations
> to see if we still hit them in corner cases on arm64 that may not
> show up on x86 or powerpc? I would expect to see a few more of them
> for every new architecture port.

Hi Arnd,

We followed your suggestion to isolate all FPU code inside a single 
place (DML), and we recently completed most of this task. As a result, 
all FPU flags are only used in the DML code. I guess we might have 
issues in other non-x86 platforms, but this is something that we can 
improve over time, and from Ao message, it looks like that DCN is 
working on ARM.

At this point, my main concern is that enabling ARM64 may causes some 
compilation issues that we did not reproduce yet. I cross-compiled 
amd-staging-drm-next + this patch with aarch64-linux-gnu-gcc version 
12.2.0 and everything looks fine.

Nathan/Stephen,

Maybe I'm wrong, but I think you have access to some sort of CI that 
tests multiple builds with different compiles and configs, right? Is it 
possible to check this patch + amd-staging-drm-next in the CI to help us 
to anticipate any compilation issue if we merge this change?

Or should we merge it and wait until it gets merged on the mainline? In 
case of a problem, we can easily revert a small patch like this, right?

Thanks
Siqueira

>> index d0c6cf61c676..3cdd109189e0 100644
>> --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile
>> +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile
>> @@ -33,6 +33,12 @@ ifdef CONFIG_PPC64
>>   dml_ccflags := -mhard-float -maltivec
>>   endif
>>
>> +ifdef CONFIG_ARM64
>> +ifdef CONFIG_DRM_AMD_DC_DCN
>> +dml_rcflags_arm64 := -mgeneral-regs-only
>> +endif
>> +endif
>> +
> 
>>   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/display_mode_vba.o :=
>> $(dml_rcflags) $(dml_rcflags_arm64)
> 
> Why do you need separate $(dml_rcflags) and $(dml_rcflags_arm64)
> rather than adding -mgeneral-regs-only to $(dml_rcflags) directly?
> 
>      Arnd

_______________________________________________
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] 15+ messages in thread

* Re: [PATCH RESEND 1/1] drm/amd/display: add DCN support for ARM64
  2022-10-27 14:29     ` Rodrigo Siqueira
@ 2022-10-27 15:22       ` Nathan Chancellor
  2022-10-27 15:30         ` Rodrigo Siqueira
  2022-10-27 17:44       ` Ao Zhong
                         ` (3 subsequent siblings)
  4 siblings, 1 reply; 15+ messages in thread
From: Nathan Chancellor @ 2022-10-27 15:22 UTC (permalink / raw)
  To: Rodrigo Siqueira
  Cc: Arnd Bergmann, Ao Zhong, Alex Deucher, Stephen Rothwell, amd-gfx,
	linux-arm-kernel, Harry Wentland, Leo Li

Hi Rodrigo,

On Thu, Oct 27, 2022 at 10:29:33AM -0400, Rodrigo Siqueira wrote:
> Nathan/Stephen,
> 
> Maybe I'm wrong, but I think you have access to some sort of CI that tests
> multiple builds with different compiles and configs, right? Is it possible
> to check this patch + amd-staging-drm-next in the CI to help us to
> anticipate any compilation issue if we merge this change?

Yup, I have a build framework that I have developed for my
ClangBuiltLinux work that I was planning on putting this through to see
if there are any new warnings that show up in this code since it is
going to be built on a new architecture. I will report back on Ao's v2
(or v3 if it is available since Arnd had some comments on v2) when that
is done.

> Or should we merge it and wait until it gets merged on the mainline? In case
> of a problem, we can easily revert a small patch like this, right?

Sure, although if we can catch issues beforehand, that would be nice :)

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] 15+ messages in thread

* Re: [PATCH RESEND 1/1] drm/amd/display: add DCN support for ARM64
  2022-10-27 15:22       ` Nathan Chancellor
@ 2022-10-27 15:30         ` Rodrigo Siqueira
  0 siblings, 0 replies; 15+ messages in thread
From: Rodrigo Siqueira @ 2022-10-27 15:30 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: Arnd Bergmann, Ao Zhong, Alex Deucher, Stephen Rothwell, amd-gfx,
	linux-arm-kernel, Harry Wentland, Leo Li



On 10/27/22 11:22, Nathan Chancellor wrote:
> Hi Rodrigo,
> 
> On Thu, Oct 27, 2022 at 10:29:33AM -0400, Rodrigo Siqueira wrote:
>> Nathan/Stephen,
>>
>> Maybe I'm wrong, but I think you have access to some sort of CI that tests
>> multiple builds with different compiles and configs, right? Is it possible
>> to check this patch + amd-staging-drm-next in the CI to help us to
>> anticipate any compilation issue if we merge this change?
> 
> Yup, I have a build framework that I have developed for my
> ClangBuiltLinux work that I was planning on putting this through to see
> if there are any new warnings that show up in this code since it is
> going to be built on a new architecture. I will report back on Ao's v2
> (or v3 if it is available since Arnd had some comments on v2) when that
> is done.
> 
>> Or should we merge it and wait until it gets merged on the mainline? In case
>> of a problem, we can easily revert a small patch like this, right?
> 
> Sure, although if we can catch issues beforehand, that would be nice :)

Hi Nathan,

Thanks a lot for checking this. Let's fix any issue that your CI reports 
before merging this patch.

Thanks
Siqueira

> 
> 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] 15+ messages in thread

* Re: [PATCH RESEND 1/1] drm/amd/display: add DCN support for ARM64
  2022-10-27 14:29     ` Rodrigo Siqueira
  2022-10-27 15:22       ` Nathan Chancellor
@ 2022-10-27 17:44       ` Ao Zhong
  2022-10-27 17:46       ` Ao Zhong
                         ` (2 subsequent siblings)
  4 siblings, 0 replies; 15+ messages in thread
From: Ao Zhong @ 2022-10-27 17:44 UTC (permalink / raw)
  To: Rodrigo Siqueira, Arnd Bergmann, Nathan Chancellor, Alex Deucher,
	Stephen Rothwell
  Cc: amd-gfx, linux-arm-kernel, Harry Wentland, Leo Li

Hi Rodrigo,

I have done these tests.

CPU: Kunpeng 920 3211k x24 TSV110 Core

GPU: AMD RX 6400

Monitor on DP: Mi Curved Gaming Monitor 34" (support FreeSync and 3440x1440 at 144Hz on DP)

Monitor on HDMI: a cheap 1080P HDMI capture card (ID: 534d:2109)

Distro: Gentoo with Linux 6.0.5 kernel

Desktop Environment: KDE Plasma

KDE-Plasma-Version: 5.25.5

KDE-Frameworks-Version: 5.99.0

Qt-Version: 5.15.5

Graphics Platform: wayland

I tried to plug and unplug the monitor frequently and quickly on both HDMI and DP port.

Both port works very well. I've also tried various different resolutions on my monitor with no issues.

But I can't set my monitor's refresh rate to 144Hz at 3440x1440. With X11, the 144Hz option won't show up

in the system settings, even xrandr won't show this mode. But with wayland, I can set the refresh rate to 144Hz,

but it results in a black screen. Interestingly, under wayland, if I set the refresh rate to 120Hz, the system works

fine, and the monitor shows that the current refresh rate is 120Hz, but if I restart the system, after re-entering the

desktop, the monitor shows that the current refresh rate is 144Hz. Under X11, the current refresh rate showed

by the monitor is the same as that in system settings. I don't know if that is a hardware limitation of the rx6400

or a software bug.

Am 27.10.22 um 16:29 schrieb Rodrigo Siqueira:
> Hi Ao/Arnd/Stephen/Nathan,
>
> Ao,
>
> Thanks a lot for this new patch.
>
> Since you have an ARM64 + AMD GPU, could you also run a couple of tests in your setup? If so, this is a good set of tests imho:
>
> 1. Check plug and unplug displays (let says 5x)
> 2. Change resolutions
> 3. (most wanted test) Could you run some IGT tests?
>
> About IGT, this is the official repository:
>
> https://gitlab.freedesktop.org/drm/igt-gpu-tools
>
> It should be easy to run IGT in your system. Follow a brief summary:
>
> 1. Install dependencies
>
> (maybe I missed something)
>
> Debian
> apt install flex bison pkg-config x11proto-dri2-dev python-docutils valgrind peg libpciaccess-dev libkmod-dev libprocps-dev libunwind-dev libdw-dev zlib1g-dev liblzma-dev libcairo-dev libpixman-1-dev libudev-dev libgsl-dev libasound2-dev libjson-c-dev libcurl4-openssl-dev libxrandr-dev libxv-dev meson libdrm-dev qemu-user qemu-user-static
>
> ArchLinux
> pacman -S gcc flex bison pkg-config libpciaccess kmod procps-ng libunwind libdwarf zlib xz cairo pixman libudev0-shim gsl alsa-lib xmlrpc-c json-c curl libxrandr libxv xorgproto python-docutils valgrind peg meson libdrm libtool make autoconf automake gtk-doc python-docutils git vim sudo
>
> 2. Build IGT
>
> meson build && ninja -C build
>
> 3. Turn off your GUI
>
> (You must run IGT without any GUI)
>
> sudo systemctl isolate multi-user.target
>
> After run this command, you should see the TTY.
>
> 4. Try to run this IGT test
>
> sudo ./build/tests/kms_flip
>
> And let me know if this test looks ok for you.
>
> On 10/27/22 06:52, Arnd Bergmann wrote:
>> On Thu, Oct 27, 2022, at 02:25, 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.
>
> I recommend you to add the following info in your commit:
>
> 1. System that you use to validate this change (CPU name, monitor, distro, wayland/X, etc).
> 2. Describe the set of tests that you tried.
>
>>>
>>> Signed-off-by: Ao Zhong <hacc1225@gmail.com>
>>
>> There have been problems with stack frame overflows on this code
>> in the past, how much have you tested this with random configurations
>> to see if we still hit them in corner cases on arm64 that may not
>> show up on x86 or powerpc? I would expect to see a few more of them
>> for every new architecture port.
>
> Hi Arnd,
>
> We followed your suggestion to isolate all FPU code inside a single place (DML), and we recently completed most of this task. As a result, all FPU flags are only used in the DML code. I guess we might have issues in other non-x86 platforms, but this is something that we can improve over time, and from Ao message, it looks like that DCN is working on ARM.
>
> At this point, my main concern is that enabling ARM64 may causes some compilation issues that we did not reproduce yet. I cross-compiled amd-staging-drm-next + this patch with aarch64-linux-gnu-gcc version 12.2.0 and everything looks fine.
>
> Nathan/Stephen,
>
> Maybe I'm wrong, but I think you have access to some sort of CI that tests multiple builds with different compiles and configs, right? Is it possible to check this patch + amd-staging-drm-next in the CI to help us to anticipate any compilation issue if we merge this change?
>
> Or should we merge it and wait until it gets merged on the mainline? In case of a problem, we can easily revert a small patch like this, right?
>
> Thanks
> Siqueira
>
>>> index d0c6cf61c676..3cdd109189e0 100644
>>> --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile
>>> +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile
>>> @@ -33,6 +33,12 @@ ifdef CONFIG_PPC64
>>>   dml_ccflags := -mhard-float -maltivec
>>>   endif
>>>
>>> +ifdef CONFIG_ARM64
>>> +ifdef CONFIG_DRM_AMD_DC_DCN
>>> +dml_rcflags_arm64 := -mgeneral-regs-only
>>> +endif
>>> +endif
>>> +
>>
>>>   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/display_mode_vba.o :=
>>> $(dml_rcflags) $(dml_rcflags_arm64)
>>
>> Why do you need separate $(dml_rcflags) and $(dml_rcflags_arm64)
>> rather than adding -mgeneral-regs-only to $(dml_rcflags) directly?
>>
>>      Arnd

_______________________________________________
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] 15+ messages in thread

* Re: [PATCH RESEND 1/1] drm/amd/display: add DCN support for ARM64
  2022-10-27 14:29     ` Rodrigo Siqueira
  2022-10-27 15:22       ` Nathan Chancellor
  2022-10-27 17:44       ` Ao Zhong
@ 2022-10-27 17:46       ` Ao Zhong
  2022-10-27 17:47       ` Ao Zhong
       [not found]       ` <d1157b52-c759-c765-8c74-aee43c23d6e2@estela.cn>
  4 siblings, 0 replies; 15+ messages in thread
From: Ao Zhong @ 2022-10-27 17:46 UTC (permalink / raw)
  To: Rodrigo Siqueira, Arnd Bergmann, Nathan Chancellor, Alex Deucher,
	Stephen Rothwell
  Cc: amd-gfx, linux-arm-kernel, Harry Wentland, Leo Li

Here are some lshw information:

hacc-arm64-pc
    description: Desktop Computer
    product: HUAWEIPGU-WBY0 (C233)
    vendor: HUAWEI
    version: D1060
    serial:
    width: 64 bits
    capabilities: smbios-3.2.0 dmi-3.2.0 smp cp15_barrier setend swp tagged_addr_disabled
    configuration: chassis=desktop family=HUAWEI sku=C233 uuid=
  *-core
       description: Motherboard
       product: HUAWEIPGU-WBY0-PCB
       vendor: HUAWEI
       physical id: 0
       version: D1060
       serial:
       slot: Null
     *-firmware
          description: BIOS
          vendor: Byosoft
          physical id: 2
          version: 1.11
          date: 02/07/2020
          size: 128KiB
          capabilities: pci pnp upgrade cdboot bootselect edd acpi biosbootspecification uefi
     *-cache:0
          description: L1 cache
          physical id: 5
          slot: L1 Instruction Cache
          size: 1536KiB
          capacity: 1536KiB
          capabilities: synchronous internal write-back instruction
          configuration: level=1
     *-cache:1
          description: L1 cache
          physical id: 6
          slot: L1 Data Cache
          size: 1536KiB
          capacity: 1536KiB
          capabilities: synchronous internal write-back data
          configuration: level=1
     *-cache:2
          description: L2 cache
          physical id: 7
          slot: L2 Cache
          size: 12MiB
          capacity: 12MiB
          capabilities: synchronous internal varies unified
          configuration: level=2
     *-cache:3
          description: L3 cache
          physical id: 8
          slot: L3 Cache
          size: 24MiB
          capacity: 24MiB
          capabilities: synchronous internal varies unified
          configuration: level=3
     *-cpu
          description: CPU
          product: ARM (NULL)
          vendor: HISILICON
          physical id: 9
          bus info: cpu@0
          version: HUAWEI Kunpeng920 3211K
          serial: NULL
          slot: CPU0
          size: 2600MHz
          capacity: 2600MHz
          clock: 100MHz
          capabilities: lm
          configuration: cores=24 enabledcores=24 threads=24
     *-memory
          description: System Memory
          physical id: a
          slot: System board or motherboard
          size: 64GiB
        *-bank:0
             description: DIMM DDR4 Synchronous 3200 MHz (0,3 ns)
             product: F4-3200C22-32GRS
             vendor: Unknown
             physical id: 0
             serial:
             slot: SODIMM_B
             size: 32GiB
             width: 64 bits
             clock: 3200MHz (0.3ns)
        *-bank:1
             description: DIMM DDR4 Synchronous 3200 MHz (0,3 ns)
             product: F4-3200C22-32GRS
             vendor: Unknown
             physical id: 1
             serial:
             slot: SODIMM_A
             size: 32GiB
             width: 64 bits
             clock: 3200MHz (0.3ns)
     *-pci:0
          description: PCI bridge
          product: HiSilicon PCIe Root Port with Gen4
          vendor: Huawei Technologies Co., Ltd.
          physical id: 100
          bus info: pci@0000:00:00.0
          version: 21
          width: 32 bits
          clock: 33MHz
          capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
          configuration: driver=pcieport
          resources: irq:30 ioport:1000(size=4096) memory:e0c00000-e0efffff ioport:80080000000(size=6442450944)
        *-pci
             description: PCI bridge
             product: Navi 10 XL Upstream Port of PCI Express Switch
             vendor: Advanced Micro Devices, Inc. [AMD/ATI]
             physical id: 0
             bus info: pci@0000:01:00.0
             version: c7
             width: 32 bits
             clock: 33MHz
             capabilities: pci pm pciexpress msi normal_decode bus_master cap_list
             configuration: driver=pcieport
             resources: irq:29 memory:e0e00000-e0e03fff ioport:1000(size=4096) memory:e0c00000-e0dfffff ioport:80080000000(size=6442450944)
           *-pci
                description: PCI bridge
                product: Navi 10 XL Downstream Port of PCI Express Switch
                vendor: Advanced Micro Devices, Inc. [AMD/ATI]
                physical id: 0
                bus info: pci@0000:02:00.0
                version: 00
                width: 32 bits
                clock: 33MHz
                capabilities: pci pm pciexpress msi normal_decode bus_master cap_list
                configuration: driver=pcieport
                resources: irq:37 ioport:1000(size=4096) memory:e0c00000-e0dfffff ioport:80080000000(size=6442450944)
              *-display
                   description: VGA compatible controller
                   product: Navi 24 [Radeon RX 6400 / 6500 XT]
                   vendor: Advanced Micro Devices, Inc. [AMD/ATI]
                   physical id: 0
                   bus info: pci@0000:03:00.0
                   logical name: /dev/fb0
                   version: c7
                   width: 64 bits
                   clock: 33MHz
                   capabilities: pm pciexpress msi vga_controller bus_master cap_list rom fb
                   configuration: depth=32 driver=amdgpu latency=0 mode=3440x1440 resolution=3440,1440 visual=truecolor xres=3440 yres=1440
                   resources: iomemory:8010-800f iomemory:8000-7fff irq:250 memory:80100000000-801ffffffff memory:80080000000-800801fffff ioport:1000(size=256) memory:e0c00000-e0cfffff memory:e0d00000-e0d1ffff
              *-multimedia
                   description: Audio device
                   product: Navi 21/23 HDMI/DP Audio Controller
                   vendor: Advanced Micro Devices, Inc. [AMD/ATI]
                   physical id: 0.1
                   bus info: pci@0000:03:00.1
                   logical name: card0
                   logical name: /dev/snd/controlC0
                   logical name: /dev/snd/hwC0D0
                   logical name: /dev/snd/pcmC0D3p
                   logical name: /dev/snd/pcmC0D7p
                   version: 00
                   width: 32 bits
                   clock: 33MHz
                   capabilities: pm pciexpress msi bus_master cap_list
                   configuration: driver=snd_hda_intel latency=0
                   resources: irq:248 memory:e0d20000-e0d23fff
                 *-input:0
                      product: HDA ATI HDMI HDMI/DP,pcm=3
                      physical id: 0
                      logical name: input4
                      logical name: /dev/input/event4
                 *-input:1
                      product: HDA ATI HDMI HDMI/DP,pcm=7
                      physical id: 1
                      logical name: input5
                      logical name: /dev/input/event5
     *-pci:1
          description: PCI bridge
          product: HiSilicon PCIe Root Port with Gen4
          vendor: Huawei Technologies Co., Ltd.
          physical id: 101
          bus info: pci@0000:00:08.0
          version: 21
          width: 32 bits
          clock: 33MHz
          capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
          configuration: driver=pcieport
          resources: irq:31 ioport:2000(size=4096) memory:e0f00000-e10fffff ioport:80018000000(size=2097152)
        *-nvme
             description: NVMe device
             product: KINGSTON SNV2S1000G
             vendor: Kingston Technology Company, Inc.
             physical id: 0
             bus info: pci@0000:04:00.0
             logical name: /dev/nvme0
             version: SBI02102
             serial:
             width: 64 bits
             clock: 33MHz
             capabilities: nvme pm msi pciexpress msix nvm_express bus_master cap_list
             configuration: driver=nvme latency=0 nqn=nqn.2021-03.com.kingston:nvme:nvm-subsystem-sn- state=live
             resources: irq:29 memory:e0f00000-e0f03fff
           *-namespace:0
                description: NVMe disk
                physical id: 0
                logical name: hwmon1
           *-namespace:1
                description: NVMe disk
                physical id: 2
                logical name: /dev/ng0n1
           *-namespace:2
                description: NVMe disk
                physical id: 1
                bus info: nvme@0:1
                logical name: /dev/nvme0n1
                size: 931GiB (1TB)
                capabilities: gpt-1.00 partitioned partitioned:gpt
                configuration: guid= logicalsectorsize=512 sectorsize=512 wwid=eui.00000000000000000026b7784e21fbc5
              *-volume:0 UNCLAIMED
                   description: Windows FAT volume
                   vendor: mkfs.fat
                   physical id: 1
                   bus info: nvme@0:1,1
                   version: FAT32
                   serial:
                   size: 98MiB
                   capacity: 99MiB
                   capabilities: boot fat initialized
                   configuration: FATs=2 filesystem=fat
              *-volume:1
                   description: EFI partition
                   physical id: 2
                   bus info: nvme@0:1,2
                   logical name: /dev/nvme0n1p2
                   logical name: /
                   logical name: /home
                   serial:
                   capacity: 866GiB
                   configuration: mount.fstype=btrfs mount.options=rw,relatime,compress=zstd:1,ssd,discard=async,space_cache=v2,subvolid=257,subvol=/@home state=mounted
              *-volume:2
                   description: EFI partition
                   physical id: 3
                   bus info: nvme@0:1,3
                   logical name: /dev/nvme0n1p3
                   logical name: /boot
                   serial:
                   capacity: 1023MiB
                   configuration: mount.fstype=xfs mount.options=rw,relatime,attr2,discard,inode64,logbufs=8,logbsize=32k,noquota state=mounted
              *-volume:3
                   description: Linux swap volume
                   vendor: Linux
                   physical id: 4
                   bus info: nvme@0:1,4
                   logical name: /dev/nvme0n1p4
                   version: 1
                   serial:
                   size: 64GiB
                   capacity: 64GiB
                   capabilities: nofs swap initialized
                   configuration: filesystem=swap pagesize=4096
     *-pci:2
          description: PCI bridge
          product: HiSilicon PCIe Root Port with Gen4
          vendor: Huawei Technologies Co., Ltd.
          physical id: 102
          bus info: pci@0000:00:0a.0
          version: 21
          width: 32 bits
          clock: 33MHz
          capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
          configuration: driver=pcieport
          resources: irq:32 ioport:3000(size=4096) memory:e1100000-e12fffff ioport:80018200000(size=2097152)
        *-nvme
             description: NVMe device
             product: KXG60ZNV512G TOSHIBA
             vendor: Toshiba Corporation
             physical id: 0
             bus info: pci@0000:05:00.0
             logical name: /dev/nvme1
             version: AGXA4103
             serial:
             width: 64 bits
             clock: 33MHz
             capabilities: nvme pciexpress pm msi msix nvm_express bus_master cap_list
             configuration: driver=nvme latency=0 nqn=nqn.2017-03.jp.co.toshiba:KXG60ZNV512G TOSHIBA: state=live
             resources: irq:29 memory:e1100000-e1103fff
           *-namespace:0
                description: NVMe disk
                physical id: 0
                logical name: hwmon0
           *-namespace:1
                description: NVMe disk
                physical id: 2
                logical name: /dev/ng1n1
           *-namespace:2
                description: NVMe disk
                physical id: 1
                bus info: nvme@1:1
                logical name: /dev/nvme1n1
                size: 476GiB (512GB)
                capabilities: gpt-1.00 partitioned partitioned:gpt
                configuration: guid= logicalsectorsize=512 sectorsize=512 wwid=eui.00000000000000018ce38e0300176ffe
              *-volume
                   description: EFI partition
                   physical id: 1
                   bus info: nvme@1:1,1
                   logical name: /dev/nvme1n1p1
                   logical name: /mnt/SSD2
                   serial:
                   capacity: 476GiB
                   configuration: mount.fstype=btrfs mount.options=rw,relatime,compress=zstd:1,ssd,discard=async,space_cache=v2,subvolid=5,subvol=/ state=mounted
     *-pci:3
          description: PCI bridge
          product: HiSilicon PCIe Root Port with Gen4
          vendor: Huawei Technologies Co., Ltd.
          physical id: c
          bus info: pci@0000:00:0c.0
          version: 21
          width: 32 bits
          clock: 33MHz
          capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
          configuration: driver=pcieport
          resources: irq:33 ioport:4000(size=4096) memory:e0000000-e0bfffff ioport:80018400000(size=2097152)
        *-network UNCLAIMED
             description: Network controller
             product: Huawei Technologies Co., Ltd.
             vendor: Huawei Technologies Co., Ltd.
             physical id: 0
             bus info: pci@0000:06:00.0
             version: 02
             width: 64 bits
             clock: 33MHz
             capabilities: pm msi pciexpress cap_list
             configuration: latency=0
             resources: memory:e0000000-e07fffff memory:e0800000-e0803fff
     *-pci:4
          description: PCI bridge
          product: HiSilicon PCIe Root Port with Gen4
          vendor: Huawei Technologies Co., Ltd.
          physical id: d
          bus info: pci@0000:00:0d.0
          version: 21
          width: 32 bits
          clock: 33MHz
          capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
          configuration: driver=pcieport
          resources: irq:34 ioport:5000(size=4096) memory:e1300000-e14fffff ioport:80018600000(size=2097152)
        *-usb
             description: USB controller
             product: uPD720202 USB 3.0 Host Controller
             vendor: Renesas Technology Corp.
             physical id: 0
             bus info: pci@0000:07:00.0
             version: 02
             width: 64 bits
             clock: 33MHz
             capabilities: pm msi msix pciexpress xhci bus_master cap_list
             configuration: driver=xhci_hcd latency=0
             resources: irq:29 memory:e1300000-e1301fff
           *-usbhost:0
                product: xHCI Host Controller
                vendor: Linux 6.0.5-gentoo-arm64 xhci-hcd
                physical id: 0
                bus info: usb@2
                logical name: usb2
                version: 6.00
                capabilities: usb-2.00
                configuration: driver=hub slots=2 speed=480Mbit/s
              *-usb:0
                   description: USB hub
                   product: 4-Port USB 2.1 Hub
                   vendor: Generic
                   physical id: 1
                   bus info: usb@2:1
                   version: 1.01
                   capabilities: usb-2.10
                   configuration: driver=hub slots=4 speed=480Mbit/s
              *-usb:1 UNCLAIMED
                   description: Communication device
                   product: Goodix Fingerprint Device
                   vendor: Shenzhen Goodix Technology Co.,Ltd.
                   physical id: 2
                   bus info: usb@2:2
                   version: 2.00
                   capabilities: usb-2.00
                   configuration: maxpower=100mA speed=12Mbit/s
           *-usbhost:1
                product: xHCI Host Controller
                vendor: Linux 6.0.5-gentoo-arm64 xhci-hcd
                physical id: 1
                bus info: usb@3
                logical name: usb3
                version: 6.00
                capabilities: usb-3.00
                configuration: driver=hub slots=2 speed=5000Mbit/s
              *-usb
                   description: USB hub
                   product: 4-Port USB 3.1 Hub
                   vendor: Generic
                   physical id: 1
                   bus info: usb@3:1
                   version: 1.01
                   capabilities: usb-3.10
                   configuration: driver=hub slots=4 speed=5000Mbit/s
     *-pci:5
          description: PCI bridge
          product: HiSilicon PCIe Root Port with Gen4
          vendor: Huawei Technologies Co., Ltd.
          physical id: e
          bus info: pci@0000:00:0e.0
          version: 21
          width: 32 bits
          clock: 33MHz
          capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
          configuration: driver=pcieport
          resources: irq:35 ioport:6000(size=4096) memory:e1500000-e16fffff ioport:80018800000(size=2097152)
     *-pci:6
          description: PCI bridge
          product: HiSilicon PCIe Root Port with Gen4
          vendor: Huawei Technologies Co., Ltd.
          physical id: f
          bus info: pci@0000:00:0f.0
          version: 21
          width: 32 bits
          clock: 33MHz
          capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
          configuration: driver=pcieport
          resources: irq:36 ioport:7000(size=4096) memory:e1700000-e18fffff ioport:80018a00000(size=2097152)
     *-pci:7
          description: PCI bridge
          product: HiSilicon PCI-PCI Bridge
          vendor: Huawei Technologies Co., Ltd.
          physical id: 103
          bus info: pci@0000:74:00.0
          version: 20
          width: 64 bits
          clock: 33MHz
          capabilities: pci pciexpress pm normal_decode bus_master cap_list
          configuration: driver=pcieport
          resources: iomemory:1010-100f irq:0
     *-pci:8
          description: PCI bridge
          product: HiSilicon PCI-PCI Bridge
          vendor: Huawei Technologies Co., Ltd.
          physical id: 104
          bus info: pci@0000:74:01.0
          version: 20
          width: 64 bits
          clock: 33MHz
          capabilities: pci pciexpress pm normal_decode bus_master cap_list
          configuration: driver=pcieport
          resources: iomemory:1010-100f irq:0 ioport:141000000(size=8388608)
        *-generic UNCLAIMED
             description: Unassigned class
             product: SafeNet (wrong ID)
             vendor: SafeNet (wrong ID)
             physical id: 0
             bus info: pci@0000:76:00.0
             version: ff
             width: 32 bits
             clock: 66MHz
             capabilities: bus_master vga_palette cap_list
             configuration: latency=255 maxlatency=255 mingnt=255
             resources: memory:141000000-1413fffff memory:141400000-1417effff
     *-sas:0 UNCLAIMED
          description: Serial Attached SCSI controller
          product: HiSilicon SAS 3.0 HBA
          vendor: Huawei Technologies Co., Ltd.
          physical id: b
          bus info: pci@0000:74:02.0
          version: 21
          width: 32 bits
          clock: 33MHz
          capabilities: sas pciexpress msi pm cap_list
          configuration: latency=0
          resources: memory:a2000000-a2007fff
     *-sata
          description: SATA controller
          product: HiSilicon AHCI HBA
          vendor: Huawei Technologies Co., Ltd.
          physical id: 3
          bus info: pci@0000:74:03.0
          version: 21
          width: 32 bits
          clock: 33MHz
          capabilities: sata pciexpress msi pm ahci_1.0 bus_master cap_list
          configuration: driver=ahci latency=0
          resources: irq:235 memory:a2010000-a2010fff
     *-sas:1 UNCLAIMED
          description: Serial Attached SCSI controller
          product: HiSilicon SAS 3.0 HBA
          vendor: Huawei Technologies Co., Ltd.
          physical id: 4
          bus info: pci@0000:74:04.0
          version: 21
          width: 32 bits
          clock: 33MHz
          capabilities: sas pciexpress msi pm cap_list
          configuration: latency=0
          resources: memory:a2008000-a200ffff
     *-pci:9
          description: PCI bridge
          product: HiSilicon PCI-PCI Bridge
          vendor: Huawei Technologies Co., Ltd.
          physical id: 105
          bus info: pci@0000:78:00.0
          version: 20
          width: 32 bits
          clock: 33MHz
          capabilities: pci pciexpress pm normal_decode bus_master cap_list
          configuration: driver=pcieport
          resources: irq:0
     *-raid UNCLAIMED
          description: RAID bus controller
          product: HiSilicon RDE Engine
          vendor: Huawei Technologies Co., Ltd.
          physical id: 10
          bus info: pci@0000:78:01.0
          version: 21
          width: 64 bits
          clock: 33MHz
          capabilities: raid pciexpress msi pm cap_list
          configuration: latency=0
          resources: iomemory:20-1f memory:208000000-2083fffff
     *-usb:0
          description: USB controller
          product: HiSilicon USB 1.1 Host Controller
          vendor: Huawei Technologies Co., Ltd.
          physical id: 11
          bus info: pci@0000:7a:00.0
          version: 21
          width: 64 bits
          clock: 33MHz
          capabilities: pciexpress msi pm ohci bus_master cap_list
          configuration: driver=ohci-pci latency=0
          resources: iomemory:20-1f irq:249 memory:20c100000-20c100fff
        *-usbhost
             product: OHCI PCI host controller
             vendor: Linux 6.0.5-gentoo-arm64 ohci_hcd
             physical id: 1
             bus info: usb@6
             logical name: usb6
             version: 6.00
             capabilities: usb-1.10
             configuration: driver=hub slots=2 speed=12Mbit/s
     *-usb:1
          description: USB controller
          product: HiSilicon USB 2.0 2-port Host Controller
          vendor: Huawei Technologies Co., Ltd.
          physical id: 1
          bus info: pci@0000:7a:01.0
          version: 21
          width: 64 bits
          clock: 33MHz
          capabilities: pciexpress msi pm ehci bus_master cap_list
          configuration: driver=ehci-pci latency=0
          resources: iomemory:20-1f irq:237 memory:20c101000-20c101fff
        *-usbhost
             product: EHCI Host Controller
             vendor: Linux 6.0.5-gentoo-arm64 ehci_hcd
             physical id: 1
             bus info: usb@1
             logical name: usb1
             version: 6.00
             capabilities: usb-2.00
             configuration: driver=hub slots=2 speed=480Mbit/s
           *-usb
                description: Audio device
                product: Generic USB Audio
                vendor: Generic
                physical id: 1
                bus info: usb@1:1
                logical name: card1
                logical name: /dev/snd/controlC1
                logical name: /dev/snd/pcmC1D0c
                logical name: /dev/snd/pcmC1D0p
                logical name: /dev/snd/pcmC1D1c
                logical name: /dev/snd/pcmC1D1p
                logical name: /dev/snd/pcmC1D2c
                logical name: /dev/snd/pcmC1D2p
                logical name: input1
                logical name: /dev/input/event1
                version: 0.13
                capabilities: usb-2.00 audio-control usb
                configuration: driver=usbhid maxpower=100mA speed=480Mbit/s
     *-usb:2
          description: USB controller
          product: HiSilicon USB 3.0 Host Controller
          vendor: Huawei Technologies Co., Ltd.
          physical id: 12
          bus info: pci@0000:7a:02.0
          version: 21
          width: 64 bits
          clock: 33MHz
          capabilities: pciexpress msi pm xhci bus_master cap_list
          configuration: driver=xhci_hcd latency=0
          resources: iomemory:20-1f irq:246 memory:20c000000-20c0fffff
        *-usbhost:0
             product: xHCI Host Controller
             vendor: Linux 6.0.5-gentoo-arm64 xhci-hcd
             physical id: 0
             bus info: usb@4
             logical name: usb4
             version: 6.00
             capabilities: usb-2.00
             configuration: driver=hub slots=1 speed=480Mbit/s
           *-usb
                description: USB hub
                product: 4-Port USB 2.1 Hub
                vendor: Generic
                physical id: 1
                bus info: usb@4:1
                version: 1.01
                capabilities: usb-2.10
                configuration: driver=hub slots=4 speed=480Mbit/s
              *-usb:0
                   description: USB hub
                   product: USB2.1 Hub
                   vendor: GenesysLogic
                   physical id: 1
                   bus info: usb@4:1.1
                   version: 6.63
                   capabilities: usb-2.10
                   configuration: driver=hub maxpower=100mA slots=4 speed=480Mbit/s
                 *-usb:0
                      description: Bluetooth wireless interface
                      product: Bluetooth Radio
                      vendor: Realtek
                      physical id: 1
                      bus info: usb@4:1.1.1
                      version: 2.00
                      serial:
                      capabilities: bluetooth usb-1.10
                      configuration: driver=btusb maxpower=500mA speed=12Mbit/s
                 *-usb:1
                      description: Bluetooth wireless interface
                      product: Bluetooth Radio
                      vendor: Realtek
                      physical id: 2
                      bus info: usb@4:1.1.2
                      version: 2.00
                      serial:
                      capabilities: bluetooth usb-1.10
                      configuration: driver=btusb maxpower=500mA speed=12Mbit/s
                 *-usb:2
                      description: Video
                      product: FHD Camera Microphone: FHD Came
                      vendor: SunplusIT Inc
                      physical id: 3
                      bus info: usb@4:1.1.3
                      logical name: card3
                      logical name: /dev/snd/controlC3
                      logical name: /dev/snd/pcmC3D0c
                      logical name: input6
                      logical name: /dev/input/event6
                      version: 10.14
                      serial: 01.00.00
                      capabilities: usb-2.00 usb
                      configuration: driver=snd-usb-audio maxpower=500mA speed=480Mbit/s
                 *-usb:3
                      description: USB hub
                      product: HighSpeed Hub
                      vendor: NEC Corp.
                      physical id: 4
                      bus info: usb@4:1.1.4
                      version: 1.00
                      capabilities: usb-2.00
                      configuration: driver=hub maxpower=100mA slots=3 speed=480Mbit/s
                    *-usb
                         description: Keyboard
                         product: Topre Corporation HHKB Professional
                         vendor: Topre Corporation
                         physical id: 1
                         bus info: usb@4:1.1.4.1
                         logical name: input3
                         logical name: /dev/input/event3
                         logical name: input3::capslock
                         logical name: input3::compose
                         logical name: input3::kana
                         logical name: input3::numlock
                         logical name: input3::scrolllock
                         version: 1.02
                         capabilities: usb-1.10 usb
                         configuration: driver=usbhid maxpower=100mA speed=12Mbit/s
              *-usb:1
                   description: Human interface device
                   product: SAVITECH Bravo-X USB Audio
                   vendor: SAVITECH
                   physical id: 2
                   bus info: usb@4:1.2
                   logical name: card2
                   logical name: /dev/snd/controlC2
                   logical name: /dev/snd/pcmC2D0p
                   logical name: /dev/snd/pcmC2D1p
                   logical name: input2
                   logical name: /dev/input/event2
                   version: 0.01
                   capabilities: usb-1.10 usb
                   configuration: driver=snd-usb-audio maxpower=100mA speed=12Mbit/s
        *-usbhost:1
             product: xHCI Host Controller
             vendor: Linux 6.0.5-gentoo-arm64 xhci-hcd
             physical id: 1
             bus info: usb@5
             logical name: usb5
             version: 6.00
             capabilities: usb-3.00
             configuration: driver=hub slots=1 speed=5000Mbit/s
           *-usb
                description: USB hub
                product: 4-Port USB 3.1 Hub
                vendor: Generic
                physical id: 1
                bus info: usb@5:1
                version: 1.01
                capabilities: usb-3.10
                configuration: driver=hub slots=4 speed=5000Mbit/s
              *-usb
                   description: USB hub
                   product: USB3.1 Hub
                   vendor: GenesysLogic
                   physical id: 1
                   bus info: usb@5:1.1
                   version: 6.63
                   capabilities: usb-3.20
                   configuration: driver=hub slots=4 speed=5000Mbit/s
     *-generic
          description: System peripheral
          product: HiSilicon Embedded DMA Engine
          vendor: Huawei Technologies Co., Ltd.
          physical id: 13
          bus info: pci@0000:7b:00.0
          version: 21
          width: 64 bits
          clock: 33MHz
          capabilities: pciexpress msi pm bus_master cap_list
          configuration: driver=hisi_dma latency=0
          resources: iomemory:10-f irq:39 memory:148800000-148803fff
     *-pci:10
          description: PCI bridge
          product: HiSilicon PCI-PCI Bridge
          vendor: Huawei Technologies Co., Ltd.
          physical id: 0
          bus info: pci@0000:7c:00.0
          version: 20
          width: 64 bits
          clock: 33MHz
          capabilities: pci pciexpress pm normal_decode bus_master cap_list
          configuration: driver=pcieport
          resources: iomemory:1010-100f irq:0 ioport:120000000(size=2097152)
        *-network
             description: Ethernet interface
             product: HNS GE/10GE/25GE RDMA Network Controller
             vendor: Huawei Technologies Co., Ltd.
             physical id: 0
             bus info: pci@0000:7d:00.0
             logical name: enp125s0f0
             version: 21
             serial:
             size: 1Gbit/s
             capacity: 1Gbit/s
             width: 64 bits
             clock: 33MHz
             capabilities: pciexpress msix pm bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
             configuration: autonegotiation=on broadcast=yes driver=hns3 driverversion=6.0.5-gentoo-arm64 duplex=full firmware=1.8.15.0 ip=192.168.1.150 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s
             resources: iomemory:10-f iomemory:10-f irq:0 memory:120100000-12010ffff memory:120000000-1200fffff
     *-pnp00:00
          product: 16550A-compatible COM port
          physical id: 14
          capabilities: pnp
          configuration: driver=serial
  *-input:0
       product: Power Button
       physical id: 1
       logical name: input0
       logical name: /dev/input/event0
       capabilities: platform
  *-input:1
       product: MX Vertical Mouse
       physical id: 2
       logical name: input7
       logical name: /dev/input/event7
       logical name: /dev/input/mouse0
       capabilities: bluetooth

Am 27.10.22 um 16:29 schrieb Rodrigo Siqueira:
> Hi Ao/Arnd/Stephen/Nathan,
>
> Ao,
>
> Thanks a lot for this new patch.
>
> Since you have an ARM64 + AMD GPU, could you also run a couple of tests in your setup? If so, this is a good set of tests imho:
>
> 1. Check plug and unplug displays (let says 5x)
> 2. Change resolutions
> 3. (most wanted test) Could you run some IGT tests?
>
> About IGT, this is the official repository:
>
> https://gitlab.freedesktop.org/drm/igt-gpu-tools
>
> It should be easy to run IGT in your system. Follow a brief summary:
>
> 1. Install dependencies
>
> (maybe I missed something)
>
> Debian
> apt install flex bison pkg-config x11proto-dri2-dev python-docutils valgrind peg libpciaccess-dev libkmod-dev libprocps-dev libunwind-dev libdw-dev zlib1g-dev liblzma-dev libcairo-dev libpixman-1-dev libudev-dev libgsl-dev libasound2-dev libjson-c-dev libcurl4-openssl-dev libxrandr-dev libxv-dev meson libdrm-dev qemu-user qemu-user-static
>
> ArchLinux
> pacman -S gcc flex bison pkg-config libpciaccess kmod procps-ng libunwind libdwarf zlib xz cairo pixman libudev0-shim gsl alsa-lib xmlrpc-c json-c curl libxrandr libxv xorgproto python-docutils valgrind peg meson libdrm libtool make autoconf automake gtk-doc python-docutils git vim sudo
>
> 2. Build IGT
>
> meson build && ninja -C build
>
> 3. Turn off your GUI
>
> (You must run IGT without any GUI)
>
> sudo systemctl isolate multi-user.target
>
> After run this command, you should see the TTY.
>
> 4. Try to run this IGT test
>
> sudo ./build/tests/kms_flip
>
> And let me know if this test looks ok for you.
>
> On 10/27/22 06:52, Arnd Bergmann wrote:
>> On Thu, Oct 27, 2022, at 02:25, 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.
>
> I recommend you to add the following info in your commit:
>
> 1. System that you use to validate this change (CPU name, monitor, distro, wayland/X, etc).
> 2. Describe the set of tests that you tried.
>
>>>
>>> Signed-off-by: Ao Zhong <hacc1225@gmail.com>
>>
>> There have been problems with stack frame overflows on this code
>> in the past, how much have you tested this with random configurations
>> to see if we still hit them in corner cases on arm64 that may not
>> show up on x86 or powerpc? I would expect to see a few more of them
>> for every new architecture port.
>
> Hi Arnd,
>
> We followed your suggestion to isolate all FPU code inside a single place (DML), and we recently completed most of this task. As a result, all FPU flags are only used in the DML code. I guess we might have issues in other non-x86 platforms, but this is something that we can improve over time, and from Ao message, it looks like that DCN is working on ARM.
>
> At this point, my main concern is that enabling ARM64 may causes some compilation issues that we did not reproduce yet. I cross-compiled amd-staging-drm-next + this patch with aarch64-linux-gnu-gcc version 12.2.0 and everything looks fine.
>
> Nathan/Stephen,
>
> Maybe I'm wrong, but I think you have access to some sort of CI that tests multiple builds with different compiles and configs, right? Is it possible to check this patch + amd-staging-drm-next in the CI to help us to anticipate any compilation issue if we merge this change?
>
> Or should we merge it and wait until it gets merged on the mainline? In case of a problem, we can easily revert a small patch like this, right?
>
> Thanks
> Siqueira
>
>>> index d0c6cf61c676..3cdd109189e0 100644
>>> --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile
>>> +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile
>>> @@ -33,6 +33,12 @@ ifdef CONFIG_PPC64
>>>   dml_ccflags := -mhard-float -maltivec
>>>   endif
>>>
>>> +ifdef CONFIG_ARM64
>>> +ifdef CONFIG_DRM_AMD_DC_DCN
>>> +dml_rcflags_arm64 := -mgeneral-regs-only
>>> +endif
>>> +endif
>>> +
>>
>>>   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/display_mode_vba.o :=
>>> $(dml_rcflags) $(dml_rcflags_arm64)
>>
>> Why do you need separate $(dml_rcflags) and $(dml_rcflags_arm64)
>> rather than adding -mgeneral-regs-only to $(dml_rcflags) directly?
>>
>>      Arnd

_______________________________________________
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] 15+ messages in thread

* Re: [PATCH RESEND 1/1] drm/amd/display: add DCN support for ARM64
  2022-10-27 14:29     ` Rodrigo Siqueira
                         ` (2 preceding siblings ...)
  2022-10-27 17:46       ` Ao Zhong
@ 2022-10-27 17:47       ` Ao Zhong
       [not found]       ` <d1157b52-c759-c765-8c74-aee43c23d6e2@estela.cn>
  4 siblings, 0 replies; 15+ messages in thread
From: Ao Zhong @ 2022-10-27 17:47 UTC (permalink / raw)
  To: Rodrigo Siqueira, Arnd Bergmann, Nathan Chancellor, Alex Deucher,
	Stephen Rothwell
  Cc: amd-gfx, linux-arm-kernel, Harry Wentland, Leo Li

Here is the output from kms_flip:

IGT-Version: 1.26-NO-GIT (aarch64) (Linux: 6.0.5-gentoo-arm64 aarch64)
Using monotonic timestamps
Starting subtest: nonblocking-read
Subtest nonblocking-read: SUCCESS (0.000s)
Starting subtest: wf_vblank-ts-check
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest A-DP1: SUCCESS (8.475s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest B-DP1: SUCCESS (8.230s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest A-HDMI-A1: SUCCESS (7.932s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest B-HDMI-A1: SUCCESS (7.932s)
Subtest wf_vblank-ts-check: SUCCESS (32.569s)
Starting subtest: 2x-wf_vblank-ts-check
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Expected frametime: 16667us; measured 16666.8us +- 0.447us accuracy 0.01%
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (30.672s)
Subtest 2x-wf_vblank-ts-check: SUCCESS (30.673s)
Starting subtest: blocking-wf_vblank
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.0us +- 0.000us accuracy 0.00%
Dynamic subtest A-DP1: SUCCESS (8.242s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest B-DP1: SUCCESS (8.230s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest A-HDMI-A1: SUCCESS (7.932s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.8us +- 0.447us accuracy 0.01%
Dynamic subtest B-HDMI-A1: SUCCESS (7.932s)
Subtest blocking-wf_vblank: SUCCESS (32.337s)
Starting subtest: 2x-blocking-wf_vblank
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (30.688s)
Subtest 2x-blocking-wf_vblank: SUCCESS (30.689s)
Starting subtest: absolute-wf_vblank
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (7.902s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (7.890s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (7.648s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (7.648s)
Subtest absolute-wf_vblank: SUCCESS (31.090s)
Starting subtest: 2x-absolute-wf_vblank
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (30.389s)
Subtest 2x-absolute-wf_vblank: SUCCESS (30.389s)
Starting subtest: blocking-absolute-wf_vblank
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (7.902s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (7.890s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (7.651s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (7.651s)
Subtest blocking-absolute-wf_vblank: SUCCESS (31.096s)
Starting subtest: 2x-blocking-absolute-wf_vblank
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (30.389s)
Subtest 2x-blocking-absolute-wf_vblank: SUCCESS (30.389s)
Starting subtest: basic-plain-flip
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (0.822s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (0.790s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (0.665s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (0.648s)
Subtest basic-plain-flip: SUCCESS (2.926s)
Starting subtest: 2x-plain-flip
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (2.390s)
Subtest 2x-plain-flip: SUCCESS (2.390s)
Starting subtest: busy-flip
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (0.822s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (0.810s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (0.648s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (0.648s)
Subtest busy-flip: SUCCESS (2.929s)
Starting subtest: 2x-busy-flip
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (1.388s)
Subtest 2x-busy-flip: SUCCESS (1.388s)
Starting subtest: flip-vs-fences
Test requirement not met in function run_test, file ../igt-gpu-tools-1.26/tests/kms_flip.c:1444:
Test requirement: !(flags & TEST_FENCE_STRESS) || gem_available_fences(drm_fd)
Subtest flip-vs-fences: SKIP (0.000s)
Starting subtest: 2x-flip-vs-fences
Test requirement not met in function run_pair, file ../igt-gpu-tools-1.26/tests/kms_flip.c:1499:
Test requirement: !(flags & TEST_FENCE_STRESS) || gem_available_fences(drm_fd)
Subtest 2x-flip-vs-fences: SKIP (0.000s)
Starting subtest: plain-flip-ts-check
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest A-DP1: SUCCESS (8.142s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest B-DP1: SUCCESS (8.150s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.8us +- 0.447us accuracy 0.01%
Dynamic subtest A-HDMI-A1: SUCCESS (7.932s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest B-HDMI-A1: SUCCESS (7.931s)
Subtest plain-flip-ts-check: SUCCESS (32.156s)
Starting subtest: 2x-plain-flip-ts-check
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Expected frametime: 16667us; measured 16666.8us +- 0.447us accuracy 0.01%
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (30.672s)
Subtest 2x-plain-flip-ts-check: SUCCESS (30.672s)
Starting subtest: plain-flip-fb-recreate
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest A-DP1: SUCCESS (8.142s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest B-DP1: SUCCESS (8.130s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest A-HDMI-A1: SUCCESS (7.932s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.447us accuracy 0.01%
Dynamic subtest B-HDMI-A1: SUCCESS (7.931s)
Subtest plain-flip-fb-recreate: SUCCESS (32.136s)
Starting subtest: 2x-plain-flip-fb-recreate
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Expected frametime: 16667us; measured 16666.8us +- 0.447us accuracy 0.01%
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (30.689s)
Subtest 2x-plain-flip-fb-recreate: SUCCESS (30.689s)
Starting subtest: flip-vs-rmfb
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (7.711s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (7.638s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (7.679s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (7.679s)
Subtest flip-vs-rmfb: SUCCESS (30.708s)
Starting subtest: 2x-flip-vs-rmfb
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (30.549s)
Subtest 2x-flip-vs-rmfb: SUCCESS (30.549s)
Starting subtest: basic-flip-vs-dpms
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (0.884s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (0.852s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (0.709s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (0.712s)
Subtest basic-flip-vs-dpms: SUCCESS (3.157s)
Starting subtest: 2x-flip-vs-dpms
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (2.535s)
Subtest 2x-flip-vs-dpms: SUCCESS (2.536s)
Starting subtest: flip-vs-panning
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (7.839s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (7.841s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (7.663s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (7.662s)
Subtest flip-vs-panning: SUCCESS (31.005s)
Starting subtest: 2x-flip-vs-panning
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (30.437s)
Subtest 2x-flip-vs-panning: SUCCESS (30.437s)
Starting subtest: basic-flip-vs-modeset
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (0.865s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (0.872s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (0.658s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (0.658s)
Subtest basic-flip-vs-modeset: SUCCESS (3.054s)
Starting subtest: 2x-flip-vs-modeset
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (2.435s)
Subtest 2x-flip-vs-modeset: SUCCESS (2.435s)
Starting subtest: flip-vs-expired-vblank
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (7.790s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (7.790s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (7.648s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (7.665s)
Subtest flip-vs-expired-vblank: SUCCESS (30.893s)
Starting subtest: 2x-flip-vs-expired-vblank
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (30.388s)
Subtest 2x-flip-vs-expired-vblank: SUCCESS (30.389s)
Starting subtest: flip-vs-absolute-wf_vblank
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.342us accuracy 0.01%
Dynamic subtest A-DP1: SUCCESS (8.242s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.342us accuracy 0.01%
Dynamic subtest B-DP1: SUCCESS (8.230s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.447us accuracy 0.01%
Dynamic subtest A-HDMI-A1: SUCCESS (7.932s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.8us +- 0.447us accuracy 0.01%
Dynamic subtest B-HDMI-A1: SUCCESS (7.931s)
Subtest flip-vs-absolute-wf_vblank: SUCCESS (32.336s)
Starting subtest: 2x-flip-vs-absolute-wf_vblank
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Expected frametime: 16667us; measured 16666.7us +- 0.447us accuracy 0.01%
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (30.689s)
Subtest 2x-flip-vs-absolute-wf_vblank: SUCCESS (30.689s)
Starting subtest: basic-flip-vs-wf_vblank
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.342us accuracy 0.01%
Dynamic subtest A-DP1: SUCCESS (1.242s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest B-DP1: SUCCESS (1.230s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.447us accuracy 0.01%
Dynamic subtest A-HDMI-A1: SUCCESS (0.931s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.447us accuracy 0.01%
Dynamic subtest B-HDMI-A1: SUCCESS (0.931s)
Subtest basic-flip-vs-wf_vblank: SUCCESS (4.335s)
Starting subtest: 2x-flip-vs-wf_vblank
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Expected frametime: 16667us; measured 16666.8us +- 0.447us accuracy 0.01%
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (2.672s)
Subtest 2x-flip-vs-wf_vblank: SUCCESS (2.672s)
Starting subtest: flip-vs-blocking-wf-vblank
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.342us accuracy 0.01%
Dynamic subtest A-DP1: SUCCESS (8.242s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest B-DP1: SUCCESS (8.230s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.447us accuracy 0.01%
Dynamic subtest A-HDMI-A1: SUCCESS (7.935s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.8us +- 0.447us accuracy 0.01%
Dynamic subtest B-HDMI-A1: SUCCESS (7.931s)
Subtest flip-vs-blocking-wf-vblank: SUCCESS (32.339s)
Starting subtest: 2x-flip-vs-blocking-wf-vblank
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Expected frametime: 16667us; measured 16666.7us +- 0.447us accuracy 0.01%
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (30.671s)
Subtest 2x-flip-vs-blocking-wf-vblank: SUCCESS (30.671s)
Starting subtest: flip-vs-modeset-vs-hang
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Test requirement not met in function gem_require_ring, file ../igt-gpu-tools-1.26/lib/ioctl_wrappers.c:1073:
Test requirement: gem_has_ring(fd, ring)
Dynamic subtest A-DP1: SKIP (0.162s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Test requirement not met in function gem_require_ring, file ../igt-gpu-tools-1.26/lib/ioctl_wrappers.c:1073:
Test requirement: gem_has_ring(fd, ring)
Dynamic subtest B-DP1: SKIP (0.582s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Test requirement not met in function gem_require_ring, file ../igt-gpu-tools-1.26/lib/ioctl_wrappers.c:1073:
Test requirement: gem_has_ring(fd, ring)
Dynamic subtest A-HDMI-A1: SKIP (0.249s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Test requirement not met in function gem_require_ring, file ../igt-gpu-tools-1.26/lib/ioctl_wrappers.c:1073:
Test requirement: gem_has_ring(fd, ring)
Dynamic subtest B-HDMI-A1: SKIP (0.153s)
Subtest flip-vs-modeset-vs-hang: SUCCESS (1.146s)
Starting subtest: 2x-flip-vs-modeset-vs-hang
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Test requirement not met in function gem_require_ring, file ../igt-gpu-tools-1.26/lib/ioctl_wrappers.c:1073:
Test requirement: gem_has_ring(fd, ring)
Dynamic subtest AB-DP1-HDMI-A1: SKIP (0.320s)
Subtest 2x-flip-vs-modeset-vs-hang: SUCCESS (0.321s)
Starting subtest: flip-vs-panning-vs-hang
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Test requirement not met in function gem_require_ring, file ../igt-gpu-tools-1.26/lib/ioctl_wrappers.c:1073:
Test requirement: gem_has_ring(fd, ring)
Dynamic subtest A-DP1: SKIP (0.365s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Test requirement not met in function gem_require_ring, file ../igt-gpu-tools-1.26/lib/ioctl_wrappers.c:1073:
Test requirement: gem_has_ring(fd, ring)
Dynamic subtest B-DP1: SKIP (0.582s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Test requirement not met in function gem_require_ring, file ../igt-gpu-tools-1.26/lib/ioctl_wrappers.c:1073:
Test requirement: gem_has_ring(fd, ring)
Dynamic subtest A-HDMI-A1: SKIP (0.232s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Test requirement not met in function gem_require_ring, file ../igt-gpu-tools-1.26/lib/ioctl_wrappers.c:1073:
Test requirement: gem_has_ring(fd, ring)
Dynamic subtest B-HDMI-A1: SKIP (0.153s)
Subtest flip-vs-panning-vs-hang: SUCCESS (1.333s)
Starting subtest: 2x-flip-vs-panning-vs-hang
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Test requirement not met in function gem_require_ring, file ../igt-gpu-tools-1.26/lib/ioctl_wrappers.c:1073:
Test requirement: gem_has_ring(fd, ring)
Dynamic subtest AB-DP1-HDMI-A1: SKIP (0.337s)
Subtest 2x-flip-vs-panning-vs-hang: SUCCESS (0.337s)
Starting subtest: flip-vs-dpms-off-vs-modeset
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (1.573s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (1.354s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (0.641s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (0.642s)
Subtest flip-vs-dpms-off-vs-modeset: SUCCESS (4.210s)
Starting subtest: 2x-flip-vs-dpms-off-vs-modeset
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (1.226s)
Subtest 2x-flip-vs-dpms-off-vs-modeset: SUCCESS (1.226s)
Starting subtest: single-buffer-flip-vs-dpms-off-vs-modeset
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (1.355s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (1.355s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (0.641s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (0.642s)
Subtest single-buffer-flip-vs-dpms-off-vs-modeset: SUCCESS (3.993s)
Starting subtest: 2x-single-buffer-flip-vs-dpms-off-vs-modeset
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (1.226s)
Subtest 2x-single-buffer-flip-vs-dpms-off-vs-modeset: SUCCESS (1.226s)
Starting subtest: dpms-off-confusion
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (7.790s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (7.790s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (7.648s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (7.648s)
Subtest dpms-off-confusion: SUCCESS (30.877s)
Starting subtest: nonexisting-fb
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (0.791s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (0.791s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (0.648s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (0.648s)
Subtest nonexisting-fb: SUCCESS (2.879s)
Starting subtest: 2x-nonexisting-fb
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (0.889s)
Subtest 2x-nonexisting-fb: SUCCESS (0.889s)
Starting subtest: dpms-vs-vblank-race
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest A-DP1: SUCCESS (3.453s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest B-DP1: SUCCESS (3.461s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.8us +- 0.447us accuracy 0.01%
Dynamic subtest A-HDMI-A1: SUCCESS (2.879s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.8us +- 0.447us accuracy 0.01%
Dynamic subtest B-HDMI-A1: SUCCESS (2.880s)
Subtest dpms-vs-vblank-race: SUCCESS (12.674s)
Starting subtest: 2x-dpms-vs-vblank-race
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Expected frametime: 16667us; measured 16666.8us +- 0.447us accuracy 0.01%
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (10.867s)
Subtest 2x-dpms-vs-vblank-race: SUCCESS (10.867s)
Starting subtest: modeset-vs-vblank-race
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.342us accuracy 0.01%
Dynamic subtest A-DP1: SUCCESS (3.361s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest B-DP1: SUCCESS (3.360s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.447us accuracy 0.01%
Dynamic subtest A-HDMI-A1: SUCCESS (3.016s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.8us +- 0.447us accuracy 0.01%
Dynamic subtest B-HDMI-A1: SUCCESS (3.016s)
Subtest modeset-vs-vblank-race: SUCCESS (12.754s)
Starting subtest: 2x-modeset-vs-vblank-race
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Expected frametime: 16667us; measured 16666.8us +- 0.447us accuracy 0.01%
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (10.708s)
Subtest 2x-modeset-vs-vblank-race: SUCCESS (10.708s)
Starting subtest: bo-too-big
Starting dynamic subtest: A-DP1
Stack trace:
Dynamic subtest A-DP1: FAIL (0.003s)
Starting dynamic subtest: B-DP1
Stack trace:
Dynamic subtest B-DP1: FAIL (0.002s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (0.634s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (0.635s)
Subtest bo-too-big: FAIL (1.275s)
Starting subtest: flip-vs-suspend
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Test requirement not met in function suspend_via_rtcwake, file ../igt-gpu-tools-1.26/lib/igt_aux.c:769:
Test requirement: ret == 0
rtcwake test failed with 1
This failure could mean that something is wrong with the rtcwake tool or how your distro is set up.
Dynamic subtest A-DP1: SKIP (0.133s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Stack trace:
Dynamic subtest B-DP1: FAIL (0.542s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Stack trace:
Dynamic subtest A-HDMI-A1: FAIL (0.214s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Stack trace:
Dynamic subtest B-HDMI-A1: FAIL (0.119s)
Subtest flip-vs-suspend: FAIL (1.009s)
Starting subtest: 2x-flip-vs-suspend
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Stack trace:
Dynamic subtest AB-DP1-HDMI-A1: FAIL (0.285s)
Subtest 2x-flip-vs-suspend: FAIL (0.285s)
Starting subtest: wf_vblank-ts-check-interruptible
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Stack trace:
Dynamic subtest A-DP1: FAIL (3.651s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Stack trace:
Dynamic subtest B-DP1: FAIL (3.862s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Stack trace:
Dynamic subtest A-HDMI-A1: FAIL (3.482s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Stack trace:
Dynamic subtest B-HDMI-A1: FAIL (3.386s)
Subtest wf_vblank-ts-check-interruptible: FAIL (14.382s)
Starting subtest: 2x-wf_vblank-ts-check-interruptible
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Stack trace:
Dynamic subtest AB-DP1-HDMI-A1: FAIL (3.537s)
Subtest 2x-wf_vblank-ts-check-interruptible: FAIL (3.537s)
Starting subtest: absolute-wf_vblank-interruptible
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: CRASH (0.326s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (8.300s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (7.648s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (7.648s)
Subtest absolute-wf_vblank-interruptible: SUCCESS (23.924s)
Starting subtest: 2x-absolute-wf_vblank-interruptible
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (30.389s)
Subtest 2x-absolute-wf_vblank-interruptible: SUCCESS (30.389s)
Starting subtest: blocking-absolute-wf_vblank-interruptible
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (7.903s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (7.890s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (7.651s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (7.648s)
Subtest blocking-absolute-wf_vblank-interruptible: SUCCESS (31.093s)
Starting subtest: 2x-blocking-absolute-wf_vblank-interruptible
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (30.389s)
Subtest 2x-blocking-absolute-wf_vblank-interruptible: SUCCESS (30.389s)
Starting subtest: plain-flip-interruptible
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (0.802s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (0.790s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (0.648s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (0.648s)
Subtest plain-flip-interruptible: SUCCESS (2.890s)
Starting subtest: 2x-plain-flip-interruptible
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (2.387s)
Subtest 2x-plain-flip-interruptible: SUCCESS (2.388s)
Starting subtest: flip-vs-fences-interruptible
Test requirement not met in function run_test, file ../igt-gpu-tools-1.26/tests/kms_flip.c:1444:
Test requirement: !(flags & TEST_FENCE_STRESS) || gem_available_fences(drm_fd)
Subtest flip-vs-fences-interruptible: SKIP (0.000s)
Starting subtest: 2x-flip-vs-fences-interruptible
Test requirement not met in function run_pair, file ../igt-gpu-tools-1.26/tests/kms_flip.c:1499:
Test requirement: !(flags & TEST_FENCE_STRESS) || gem_available_fences(drm_fd)
Subtest 2x-flip-vs-fences-interruptible: SKIP (0.000s)
Starting subtest: plain-flip-ts-check-interruptible
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest A-DP1: SUCCESS (8.142s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest B-DP1: SUCCESS (8.130s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest A-HDMI-A1: SUCCESS (7.935s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.447us accuracy 0.01%
Dynamic subtest B-HDMI-A1: SUCCESS (7.931s)
Subtest plain-flip-ts-check-interruptible: SUCCESS (32.140s)
Starting subtest: 2x-plain-flip-ts-check-interruptible
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Expected frametime: 16667us; measured 16666.7us +- 0.447us accuracy 0.01%
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (30.672s)
Subtest 2x-plain-flip-ts-check-interruptible: SUCCESS (30.672s)
Starting subtest: plain-flip-fb-recreate-interruptible
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest A-DP1: SUCCESS (8.142s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.342us accuracy 0.01%
Dynamic subtest B-DP1: SUCCESS (8.130s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest A-HDMI-A1: SUCCESS (7.931s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest B-HDMI-A1: SUCCESS (7.935s)
Subtest plain-flip-fb-recreate-interruptible: SUCCESS (32.140s)
Starting subtest: 2x-plain-flip-fb-recreate-interruptible
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Expected frametime: 16667us; measured 16666.8us +- 0.447us accuracy 0.01%
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (30.689s)
Subtest 2x-plain-flip-fb-recreate-interruptible: SUCCESS (30.689s)
Starting subtest: flip-vs-rmfb-interruptible
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (7.651s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (7.679s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (7.679s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (7.682s)
Subtest flip-vs-rmfb-interruptible: SUCCESS (30.692s)
Starting subtest: 2x-flip-vs-rmfb-interruptible
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (30.242s)
Subtest 2x-flip-vs-rmfb-interruptible: SUCCESS (30.242s)
Starting subtest: flip-vs-panning-interruptible
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (7.852s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (7.840s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (7.662s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (7.662s)
Subtest flip-vs-panning-interruptible: SUCCESS (31.018s)
Starting subtest: 2x-flip-vs-panning-interruptible
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (30.438s)
Subtest 2x-flip-vs-panning-interruptible: SUCCESS (30.438s)
Starting subtest: flip-vs-expired-vblank-interruptible
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (7.802s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (7.790s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (7.648s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (7.648s)
Subtest flip-vs-expired-vblank-interruptible: SUCCESS (30.890s)
Starting subtest: 2x-flip-vs-expired-vblank-interruptible
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (30.389s)
Subtest 2x-flip-vs-expired-vblank-interruptible: SUCCESS (30.389s)
Starting subtest: flip-vs-absolute-wf_vblank-interruptible
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.342us accuracy 0.01%
Dynamic subtest A-DP1: SUCCESS (8.242s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest B-DP1: SUCCESS (8.230s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest A-HDMI-A1: SUCCESS (7.932s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest B-HDMI-A1: SUCCESS (7.931s)
Subtest flip-vs-absolute-wf_vblank-interruptible: SUCCESS (32.337s)
Starting subtest: 2x-flip-vs-absolute-wf_vblank-interruptible
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (30.672s)
Subtest 2x-flip-vs-absolute-wf_vblank-interruptible: SUCCESS (30.672s)
Starting subtest: flip-vs-wf_vblank-interruptible
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest A-DP1: SUCCESS (1.242s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest B-DP1: SUCCESS (1.230s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest A-HDMI-A1: SUCCESS (0.934s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.447us accuracy 0.01%
Dynamic subtest B-HDMI-A1: SUCCESS (0.931s)
Subtest flip-vs-wf_vblank-interruptible: SUCCESS (4.338s)
Starting subtest: 2x-flip-vs-wf_vblank-interruptible
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (2.688s)
Subtest 2x-flip-vs-wf_vblank-interruptible: SUCCESS (2.688s)
Starting subtest: flip-vs-dpms-off-vs-modeset-interruptible
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (1.367s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (1.354s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (0.642s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (0.641s)
Subtest flip-vs-dpms-off-vs-modeset-interruptible: SUCCESS (4.005s)
Starting subtest: 2x-flip-vs-dpms-off-vs-modeset-interruptible
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (1.226s)
Subtest 2x-flip-vs-dpms-off-vs-modeset-interruptible: SUCCESS (1.226s)
Starting subtest: single-buffer-flip-vs-dpms-off-vs-modeset-interruptible
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (1.354s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (1.394s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (0.641s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (0.642s)
Subtest single-buffer-flip-vs-dpms-off-vs-modeset-interruptible: SUCCESS (4.031s)
Starting subtest: 2x-single-buffer-flip-vs-dpms-off-vs-modeset-interruptible
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (1.227s)
Subtest 2x-single-buffer-flip-vs-dpms-off-vs-modeset-interruptible: SUCCESS (1.227s)
Starting subtest: dpms-off-confusion-interruptible
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (7.790s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (7.789s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (7.647s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (7.647s)
Subtest dpms-off-confusion-interruptible: SUCCESS (30.875s)
Starting subtest: nonexisting-fb-interruptible
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest A-DP1: SUCCESS (0.791s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Dynamic subtest B-DP1: SUCCESS (0.790s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (0.647s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (0.648s)
Subtest nonexisting-fb-interruptible: SUCCESS (2.877s)
Starting subtest: 2x-nonexisting-fb-interruptible
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (0.888s)
Subtest 2x-nonexisting-fb-interruptible: SUCCESS (0.889s)
Starting subtest: dpms-vs-vblank-race-interruptible
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest A-DP1: SUCCESS (3.453s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.342us accuracy 0.01%
Dynamic subtest B-DP1: SUCCESS (3.442s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest A-HDMI-A1: SUCCESS (2.880s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest B-HDMI-A1: SUCCESS (2.883s)
Subtest dpms-vs-vblank-race-interruptible: SUCCESS (12.659s)
Starting subtest: 2x-dpms-vs-vblank-race-interruptible
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (10.834s)
Subtest 2x-dpms-vs-vblank-race-interruptible: SUCCESS (10.834s)
Starting subtest: modeset-vs-vblank-race-interruptible
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest A-DP1: SUCCESS (3.341s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Expected frametime: 20000us; measured 20000.1us +- 0.250us accuracy 0.00%
Dynamic subtest B-DP1: SUCCESS (3.400s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest A-HDMI-A1: SUCCESS (3.015s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest B-HDMI-A1: SUCCESS (3.015s)
Subtest modeset-vs-vblank-race-interruptible: SUCCESS (12.772s)
Starting subtest: 2x-modeset-vs-vblank-race-interruptible
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Expected frametime: 16667us; measured 16666.7us +- 0.479us accuracy 0.01%
Dynamic subtest AB-DP1-HDMI-A1: SUCCESS (10.708s)
Subtest 2x-modeset-vs-vblank-race-interruptible: SUCCESS (10.708s)
Starting subtest: bo-too-big-interruptible
Starting dynamic subtest: A-DP1
Stack trace:
Dynamic subtest A-DP1: FAIL (0.003s)
Starting dynamic subtest: B-DP1
Stack trace:
Dynamic subtest B-DP1: FAIL (0.002s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest A-HDMI-A1: SUCCESS (0.634s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Dynamic subtest B-HDMI-A1: SUCCESS (0.635s)
Subtest bo-too-big-interruptible: FAIL (1.275s)
Starting subtest: flip-vs-suspend-interruptible
Starting dynamic subtest: A-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Test requirement not met in function suspend_via_rtcwake, file ../igt-gpu-tools-1.26/lib/igt_aux.c:769:
Test requirement: ret == 0
rtcwake test failed with 1
This failure could mean that something is wrong with the rtcwake tool or how your distro is set up.
Dynamic subtest A-DP1: SKIP (0.134s)
Starting dynamic subtest: B-DP1
  3440x1440 50 3440 3488 3520 3600 1440 1443 1448 1481 0x9 0x48 266580
Stack trace:
Dynamic subtest B-DP1: FAIL (0.543s)
Starting dynamic subtest: A-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Stack trace:
Dynamic subtest A-HDMI-A1: FAIL (0.214s)
Starting dynamic subtest: B-HDMI-A1
  1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 0x5 0x48 148500
Stack trace:
Dynamic subtest B-HDMI-A1: FAIL (0.119s)
Subtest flip-vs-suspend-interruptible: FAIL (1.010s)
Starting subtest: 2x-flip-vs-suspend-interruptible
Starting dynamic subtest: AB-DP1-HDMI-A1
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
  3840x2160 60 3840 4016 4104 4400 2160 2168 2178 2250 0x5 0x40 594000
Stack trace:
Dynamic subtest AB-DP1-HDMI-A1: FAIL (0.285s)
Subtest 2x-flip-vs-suspend-interruptible: FAIL (0.285s)

Am 27.10.22 um 16:29 schrieb Rodrigo Siqueira:
> Hi Ao/Arnd/Stephen/Nathan,
>
> Ao,
>
> Thanks a lot for this new patch.
>
> Since you have an ARM64 + AMD GPU, could you also run a couple of tests in your setup? If so, this is a good set of tests imho:
>
> 1. Check plug and unplug displays (let says 5x)
> 2. Change resolutions
> 3. (most wanted test) Could you run some IGT tests?
>
> About IGT, this is the official repository:
>
> https://gitlab.freedesktop.org/drm/igt-gpu-tools
>
> It should be easy to run IGT in your system. Follow a brief summary:
>
> 1. Install dependencies
>
> (maybe I missed something)
>
> Debian
> apt install flex bison pkg-config x11proto-dri2-dev python-docutils valgrind peg libpciaccess-dev libkmod-dev libprocps-dev libunwind-dev libdw-dev zlib1g-dev liblzma-dev libcairo-dev libpixman-1-dev libudev-dev libgsl-dev libasound2-dev libjson-c-dev libcurl4-openssl-dev libxrandr-dev libxv-dev meson libdrm-dev qemu-user qemu-user-static
>
> ArchLinux
> pacman -S gcc flex bison pkg-config libpciaccess kmod procps-ng libunwind libdwarf zlib xz cairo pixman libudev0-shim gsl alsa-lib xmlrpc-c json-c curl libxrandr libxv xorgproto python-docutils valgrind peg meson libdrm libtool make autoconf automake gtk-doc python-docutils git vim sudo
>
> 2. Build IGT
>
> meson build && ninja -C build
>
> 3. Turn off your GUI
>
> (You must run IGT without any GUI)
>
> sudo systemctl isolate multi-user.target
>
> After run this command, you should see the TTY.
>
> 4. Try to run this IGT test
>
> sudo ./build/tests/kms_flip
>
> And let me know if this test looks ok for you.
>
> On 10/27/22 06:52, Arnd Bergmann wrote:
>> On Thu, Oct 27, 2022, at 02:25, 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.
>
> I recommend you to add the following info in your commit:
>
> 1. System that you use to validate this change (CPU name, monitor, distro, wayland/X, etc).
> 2. Describe the set of tests that you tried.
>
>>>
>>> Signed-off-by: Ao Zhong <hacc1225@gmail.com>
>>
>> There have been problems with stack frame overflows on this code
>> in the past, how much have you tested this with random configurations
>> to see if we still hit them in corner cases on arm64 that may not
>> show up on x86 or powerpc? I would expect to see a few more of them
>> for every new architecture port.
>
> Hi Arnd,
>
> We followed your suggestion to isolate all FPU code inside a single place (DML), and we recently completed most of this task. As a result, all FPU flags are only used in the DML code. I guess we might have issues in other non-x86 platforms, but this is something that we can improve over time, and from Ao message, it looks like that DCN is working on ARM.
>
> At this point, my main concern is that enabling ARM64 may causes some compilation issues that we did not reproduce yet. I cross-compiled amd-staging-drm-next + this patch with aarch64-linux-gnu-gcc version 12.2.0 and everything looks fine.
>
> Nathan/Stephen,
>
> Maybe I'm wrong, but I think you have access to some sort of CI that tests multiple builds with different compiles and configs, right? Is it possible to check this patch + amd-staging-drm-next in the CI to help us to anticipate any compilation issue if we merge this change?
>
> Or should we merge it and wait until it gets merged on the mainline? In case of a problem, we can easily revert a small patch like this, right?
>
> Thanks
> Siqueira
>
>>> index d0c6cf61c676..3cdd109189e0 100644
>>> --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile
>>> +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile
>>> @@ -33,6 +33,12 @@ ifdef CONFIG_PPC64
>>>   dml_ccflags := -mhard-float -maltivec
>>>   endif
>>>
>>> +ifdef CONFIG_ARM64
>>> +ifdef CONFIG_DRM_AMD_DC_DCN
>>> +dml_rcflags_arm64 := -mgeneral-regs-only
>>> +endif
>>> +endif
>>> +
>>
>>>   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/display_mode_vba.o :=
>>> $(dml_rcflags) $(dml_rcflags_arm64)
>>
>> Why do you need separate $(dml_rcflags) and $(dml_rcflags_arm64)
>> rather than adding -mgeneral-regs-only to $(dml_rcflags) directly?
>>
>>      Arnd

_______________________________________________
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] 15+ messages in thread

* Re: [PATCH RESEND 1/1] drm/amd/display: add DCN support for ARM64
       [not found]       ` <d1157b52-c759-c765-8c74-aee43c23d6e2@estela.cn>
@ 2022-10-28 15:50         ` Rodrigo Siqueira Jordao
  0 siblings, 0 replies; 15+ messages in thread
From: Rodrigo Siqueira Jordao @ 2022-10-28 15:50 UTC (permalink / raw)
  To: Estela ad Astra, Ao Zhong
  Cc: Leo Li, Harry Wentland, linux-arm-kernel, amd-gfx, Arnd Bergmann,
	Nathan Chancellor, Alex Deucher, Stephen Rothwell



On 2022-10-27 15:24, Estela ad Astra wrote:
> Hello.
> 
> I have tested it on a Phytium D2000 platform with RX 5500 XT.
> 
> Distro: Arch Linux ARM
> 
> Kernel: Linux 6.0.5-1-phytium aarch64 (patched, 
> https://github.com/saeziae/pkgbuild-linux-phytium )
> 
> Plug and unplug: OK on all ports.
> 
> Resolutions tested:  3840x2160@60Hz, 2560x1440@60Hz, 1920*1080@60Hz
> 
> Dual-screen: 3840x2160@60Hz on DP plus 2560x1440@60Hz on HDMI.
> 
> Graphic applications: glxgears. 1080P video on MPV (VAAPI). Minecraft.
> 
> IGT test:
> 
> Most tests went well, with a few error logs.
> 
>      > cat kms_flip.log| grep FAIL
>     Dynamic subtest A-HDMI-A1: FAIL (0.201s)
>     Subtest absolute-wf_vblank: FAIL (29.571s)
>     Dynamic subtest A-HDMI-A1: FAIL (0.172s)
>     Subtest blocking-absolute-wf_vblank: FAIL (29.537s)
>     Dynamic subtest A-HDMI-A1: FAIL (0.257s)
>     Subtest blocking-absolute-wf_vblank-interruptible: FAIL (29.458s)
> 
> Photos and video clips: https://t.me/esteladaily/334
> 
> Thank you for all you guys' excellent work.


Hi Estela/Ao,

Thanks a lot for running those tests. I'm glad to see that DCN is 
working with ARM in general.

Estela,

Could you share more details about your test system? I'm trying to 
understand your system and Ao, so we can try to add one ARM64 system to 
our CI.

Thanks
Siqueira

> 
> On 27/10/2022 22:29, Rodrigo Siqueira wrote:
>> Hi Ao/Arnd/Stephen/Nathan,
>>
>> Ao,
>>
>> Thanks a lot for this new patch.
>>
>> Since you have an ARM64 + AMD GPU, could you also run a couple of 
>> tests in your setup? If so, this is a good set of tests imho:
>>
>> 1. Check plug and unplug displays (let says 5x)
>> 2. Change resolutions
>> 3. (most wanted test) Could you run some IGT tests?
>>
>> About IGT, this is the official repository:
>>
>> https://gitlab.freedesktop.org/drm/igt-gpu-tools
>>
>> It should be easy to run IGT in your system. Follow a brief summary:
>>
>> 1. Install dependencies
>>
>> (maybe I missed something)
>>
>> Debian
>> apt install flex bison pkg-config x11proto-dri2-dev python-docutils 
>> valgrind peg libpciaccess-dev libkmod-dev libprocps-dev libunwind-dev 
>> libdw-dev zlib1g-dev liblzma-dev libcairo-dev libpixman-1-dev 
>> libudev-dev libgsl-dev libasound2-dev libjson-c-dev 
>> libcurl4-openssl-dev libxrandr-dev libxv-dev meson libdrm-dev 
>> qemu-user qemu-user-static
>>
>> ArchLinux
>> pacman -S gcc flex bison pkg-config libpciaccess kmod procps-ng 
>> libunwind libdwarf zlib xz cairo pixman libudev0-shim gsl alsa-lib 
>> xmlrpc-c json-c curl libxrandr libxv xorgproto python-docutils 
>> valgrind peg meson libdrm libtool make autoconf automake gtk-doc 
>> python-docutils git vim sudo
>>
>> 2. Build IGT
>>
>> meson build && ninja -C build
>>
>> 3. Turn off your GUI
>>
>> (You must run IGT without any GUI)
>>
>> sudo systemctl isolate multi-user.target
>>
>> After run this command, you should see the TTY.
>>
>> 4. Try to run this IGT test
>>
>> sudo ./build/tests/kms_flip
>>
>> And let me know if this test looks ok for you.
>>
>> On 10/27/22 06:52, Arnd Bergmann wrote:
>>> On Thu, Oct 27, 2022, at 02:25, 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.
>>
>> I recommend you to add the following info in your commit:
>>
>> 1. System that you use to validate this change (CPU name, monitor, 
>> distro, wayland/X, etc).
>> 2. Describe the set of tests that you tried.
>>
>>>>
>>>> Signed-off-by: Ao Zhong <hacc1225@gmail.com>
>>>
>>> There have been problems with stack frame overflows on this code
>>> in the past, how much have you tested this with random configurations
>>> to see if we still hit them in corner cases on arm64 that may not
>>> show up on x86 or powerpc? I would expect to see a few more of them
>>> for every new architecture port.
>>
>> Hi Arnd,
>>
>> We followed your suggestion to isolate all FPU code inside a single 
>> place (DML), and we recently completed most of this task. As a result, 
>> all FPU flags are only used in the DML code. I guess we might have 
>> issues in other non-x86 platforms, but this is something that we can 
>> improve over time, and from Ao message, it looks like that DCN is 
>> working on ARM.
>>
>> At this point, my main concern is that enabling ARM64 may causes some 
>> compilation issues that we did not reproduce yet. I cross-compiled 
>> amd-staging-drm-next + this patch with aarch64-linux-gnu-gcc version 
>> 12.2.0 and everything looks fine.
>>
>> Nathan/Stephen,
>>
>> Maybe I'm wrong, but I think you have access to some sort of CI that 
>> tests multiple builds with different compiles and configs, right? Is 
>> it possible to check this patch + amd-staging-drm-next in the CI to 
>> help us to anticipate any compilation issue if we merge this change?
>>
>> Or should we merge it and wait until it gets merged on the mainline? 
>> In case of a problem, we can easily revert a small patch like this, 
>> right?
>>
>> Thanks
>> Siqueira
>>
>>>> index d0c6cf61c676..3cdd109189e0 100644
>>>> --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile
>>>> +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile
>>>> @@ -33,6 +33,12 @@ ifdef CONFIG_PPC64
>>>>   dml_ccflags := -mhard-float -maltivec
>>>>   endif
>>>>
>>>> +ifdef CONFIG_ARM64
>>>> +ifdef CONFIG_DRM_AMD_DC_DCN
>>>> +dml_rcflags_arm64 := -mgeneral-regs-only
>>>> +endif
>>>> +endif
>>>> +
>>>
>>>> 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/display_mode_vba.o :=
>>>> $(dml_rcflags) $(dml_rcflags_arm64)
>>>
>>> Why do you need separate $(dml_rcflags) and $(dml_rcflags_arm64)
>>> rather than adding -mgeneral-regs-only to $(dml_rcflags) directly?
>>>
>>>      Arnd
>>
>>


_______________________________________________
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] 15+ messages in thread

end of thread, other threads:[~2022-10-28 15:58 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-10-27  0:25 [PATCH RESEND 0/1] drm/amd/display: add DCN support for ARM64 Ao Zhong
2022-10-27  0:25 ` [PATCH RESEND 1/1] " Ao Zhong
2022-10-27  6:41   ` Christian König
2022-10-27 10:52   ` Arnd Bergmann
2022-10-27 12:52     ` Christian König
2022-10-27 13:38     ` Ao Zhong
2022-10-27 13:44       ` Arnd Bergmann
2022-10-27 13:49         ` Ao Zhong
2022-10-27 14:29     ` Rodrigo Siqueira
2022-10-27 15:22       ` Nathan Chancellor
2022-10-27 15:30         ` Rodrigo Siqueira
2022-10-27 17:44       ` Ao Zhong
2022-10-27 17:46       ` Ao Zhong
2022-10-27 17:47       ` Ao Zhong
     [not found]       ` <d1157b52-c759-c765-8c74-aee43c23d6e2@estela.cn>
2022-10-28 15:50         ` 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).