Re: [PATCH v1] drm/ci: uprev IGT
On 04/07/2024 06:22, Vignesh Raman wrote: Uprev IGT to the latest version, which includes a fix for the writeback tests issue on MSM devices. Enable debugging for igt-runner to log output such as 'Begin test' and 'End test'. This will help identify which test causes system freeze or hangs. Update xfails and add metadata header for each flake test. Signed-off-by: Vignesh Raman Applied to drm-misc-next. Thanks Helen --- v1: - https://gitlab.freedesktop.org/vigneshraman/linux/-/pipelines/1216850 --- drivers/gpu/drm/ci/gitlab-ci.yml | 2 +- drivers/gpu/drm/ci/igt_runner.sh | 1 + .../gpu/drm/ci/xfails/amdgpu-stoney-fails.txt | 1 + .../drm/ci/xfails/amdgpu-stoney-flakes.txt| 14 +- .../gpu/drm/ci/xfails/amdgpu-stoney-skips.txt | 4 +- drivers/gpu/drm/ci/xfails/i915-amly-fails.txt | 12 +- .../gpu/drm/ci/xfails/i915-amly-flakes.txt| 41 - drivers/gpu/drm/ci/xfails/i915-amly-skips.txt | 5 +- drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt | 2 +- drivers/gpu/drm/ci/xfails/i915-apl-skips.txt | 4 +- drivers/gpu/drm/ci/xfails/i915-cml-fails.txt | 14 +- drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt | 9 +- drivers/gpu/drm/ci/xfails/i915-cml-skips.txt | 5 +- drivers/gpu/drm/ci/xfails/i915-glk-fails.txt | 24 +-- drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt | 8 +- drivers/gpu/drm/ci/xfails/i915-glk-skips.txt | 4 +- drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt | 2 + drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt | 2 +- drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt | 4 +- drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt | 25 +-- drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt | 4 +- drivers/gpu/drm/ci/xfails/i915-whl-fails.txt | 17 +- drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt | 2 +- drivers/gpu/drm/ci/xfails/i915-whl-skips.txt | 5 +- .../drm/ci/xfails/mediatek-mt8173-fails.txt | 9 +- .../drm/ci/xfails/mediatek-mt8173-flakes.txt | 32 +++- .../drm/ci/xfails/mediatek-mt8173-skips.txt | 4 +- .../drm/ci/xfails/mediatek-mt8183-fails.txt | 2 +- .../drm/ci/xfails/mediatek-mt8183-skips.txt | 2 +- .../gpu/drm/ci/xfails/meson-g12b-fails.txt| 2 +- .../gpu/drm/ci/xfails/meson-g12b-skips.txt| 2 +- .../gpu/drm/ci/xfails/msm-apq8016-fails.txt | 5 +- .../gpu/drm/ci/xfails/msm-apq8016-skips.txt | 2 +- .../gpu/drm/ci/xfails/msm-apq8096-flakes.txt | 2 +- .../gpu/drm/ci/xfails/msm-apq8096-skips.txt | 4 +- .../msm-sc7180-trogdor-kingoftown-fails.txt | 145 -- .../msm-sc7180-trogdor-kingoftown-flakes.txt | 18 ++- .../msm-sc7180-trogdor-kingoftown-skips.txt | 5 +- ...sm-sc7180-trogdor-lazor-limozeen-fails.txt | 145 -- ...m-sc7180-trogdor-lazor-limozeen-flakes.txt | 11 +- ...sm-sc7180-trogdor-lazor-limozeen-skips.txt | 2 +- .../gpu/drm/ci/xfails/msm-sdm845-flakes.txt | 105 - .../gpu/drm/ci/xfails/msm-sdm845-skips.txt| 4 +- .../drm/ci/xfails/rockchip-rk3288-fails.txt | 2 +- .../drm/ci/xfails/rockchip-rk3288-skips.txt | 2 +- .../drm/ci/xfails/rockchip-rk3399-fails.txt | 2 +- .../drm/ci/xfails/rockchip-rk3399-flakes.txt | 4 +- .../drm/ci/xfails/rockchip-rk3399-skips.txt | 2 +- .../drm/ci/xfails/virtio_gpu-none-fails.txt | 64 .../drm/ci/xfails/virtio_gpu-none-skips.txt | 4 +- drivers/gpu/drm/ci/xfails/vkms-none-fails.txt | 4 - .../gpu/drm/ci/xfails/vkms-none-flakes.txt| 21 +++ drivers/gpu/drm/ci/xfails/vkms-none-skips.txt | 105 - 53 files changed, 527 insertions(+), 395 deletions(-) diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml index 80fb0f57ae46..b09976c3d2c2 100644 --- a/drivers/gpu/drm/ci/gitlab-ci.yml +++ b/drivers/gpu/drm/ci/gitlab-ci.yml @@ -5,7 +5,7 @@ variables: UPSTREAM_REPO: git://anongit.freedesktop.org/drm/drm TARGET_BRANCH: drm-next - IGT_VERSION: 0df7b9b97f9da0e364f5ee30fe331004b8c86b56 + IGT_VERSION: f13702b8e4e847c56da3ef6f0969065d686049c5 DEQP_RUNNER_GIT_URL: https://gitlab.freedesktop.org/anholt/deqp-runner.git DEQP_RUNNER_GIT_TAG: v0.15.0 diff --git a/drivers/gpu/drm/ci/igt_runner.sh b/drivers/gpu/drm/ci/igt_runner.sh index 79f41d7da772..37c724dba8cb 100755 --- a/drivers/gpu/drm/ci/igt_runner.sh +++ b/drivers/gpu/drm/ci/igt_runner.sh @@ -80,6 +80,7 @@ igt-runner \ --igt-folder /igt/libexec/igt-gpu-tools \ --caselist $TESTLIST \ --output /results \ +- \ $IGT_SKIPS \ $IGT_FLAKES \ $IGT_FAILS \ diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt index e8c2f4044a92..2f74880671ca 100644 --- a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt +++ b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt @@ -30,6 +30,7 @@ kms_cursor_crc@cursor-random-64x64,Fail kms_cursor_crc@cursor-size-change,Fail
Re: [PATCH v9 27/52] selftests-dyndbg: check KCONFIG_CONFIG to avoid silly fails
On 02/07/2024 18:57, Jim Cromie wrote: Several tests are dependent upon config choices. Lets avoid failing where that is noise. The KCONFIG_CONFIG var exists to convey the config-file around. If the var names a file, read it and extract the relevant CONFIG items, and use them to skip the dependent tests, thus avoiding the fails that would follow, and the disruption to whatever CI is running these selftests. If the envar doesn't name a config-file, ".config" is assumed. CONFIG_DYNAMIC_DEBUG=y: basic-tests() and comma-terminator-tests() test for the presence of the builtin pr_debugs in module/main.c, which I deemed stable and therefore safe to count. That said, the test fails if only CONFIG_DYNAMIC_DEBUG_CORE=y is set. It could be rewritten to test against test-dynamic-debug.ko, but that just trades one config dependence for another. CONFIG_TEST_DYNAMIC_DEBUG=m As written, test_percent_splitting() modprobes test_dynamic_debug, enables several classes, and count them. It could be re-written to work for the builtin module also, but builtin test modules are not a common or desirable build/config. CONFIG_TEST_DYNAMIC_DEBUG=m && CONFIG_TEST_DYNAMIC_DEBUG_SUBMOD=m test_mod_submod() recaps the bug found in DRM-CI where drivers werent If this fixes any but listed in drm/ci/xfails folder, please update it too. Regards, Helen enabled by drm.debug=. It modprobes both test_dynamic_debug & test_dynamic_debug_submod, so it depends on a loadable modules config. It could be rewritten to work in a builtin parent config; DRM=y is common enough to be pertinent, but testing that config also wouldn't really test anything more fully than all-loadable modules, since they default together. Signed-off-by: Jim Cromie fixup-kconfig --- .../dynamic_debug/dyndbg_selftest.sh | 45 ++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh b/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh index fccd2012b548..d09ef26b2308 100755 --- a/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh +++ b/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh @@ -11,6 +11,30 @@ CYAN="\033[0;36m" NC="\033[0;0m" error_msg="" +[ -e /proc/dynamic_debug/control ] || { +echo -e "${RED}: this test requires CONFIG_DYNAMIC_DEBUG=y ${NC}" +exit 0 # nothing to test here, no good reason to fail. +} + +# need info to avoid failures due to untestable configs + +[ -f "$KCONFIG_CONFIG" ] || KCONFIG_CONFIG=".config" +if [ -f "$KCONFIG_CONFIG" ]; then +echo "# consulting KCONFIG_CONFIG: $KCONFIG_CONFIG" +grep -q "CONFIG_DYNAMIC_DEBUG=y" $KCONFIG_CONFIG ; LACK_DD_BUILTIN=$? +grep -q "CONFIG_TEST_DYNAMIC_DEBUG=m" $KCONFIG_CONFIG ; LACK_TMOD=$? +grep -q "CONFIG_TEST_DYNAMIC_DEBUG_SUBMOD=m" $KCONFIG_CONFIG ; LACK_TMOD_SUBMOD=$? +if [ $V -eq 1 ]; then + echo LACK_DD_BUILTIN: $LACK_DD_BUILTIN + echo LACK_TMOD: $LACK_TMOD + echo LACK_TMOD_SUBMOD: $LACK_TMOD_SUBMOD +fi +else +LACK_DD_BUILTIN=0 +LACK_TMOD=0 +LACK_TMOD_SUBMOD=0 +fi + function vx () { echo $1 > /sys/module/dynamic_debug/parameters/verbose } @@ -192,6 +216,10 @@ function check_err_msg() { function basic_tests { echo -e "${GREEN}# BASIC_TESTS ${NC}" +if [ $LACK_DD_BUILTIN -eq 1 ]; then + echo "SKIP" + return +fi ddcmd =_ # zero everything (except class'd sites) check_match_ct =p 0 # there are several main's :-/ @@ -214,6 +242,10 @@ EOF function comma_terminator_tests { echo -e "${GREEN}# COMMA_TERMINATOR_TESTS ${NC}" +if [ $LACK_DD_BUILTIN -eq 1 ]; then + echo "SKIP" + return +fi # try combos of spaces & commas check_match_ct '\[params\]' 4 -r ddcmd module,params,=_# commas as spaces @@ -226,9 +258,12 @@ function comma_terminator_tests { ddcmd =_ } - function test_percent_splitting { echo -e "${GREEN}# TEST_PERCENT_SPLITTING - multi-command splitting on % ${NC}" +if [ $LACK_TMOD -eq 1 ]; then + echo "SKIP" + return +fi ifrmmod test_dynamic_debug_submod ifrmmod test_dynamic_debug ddcmd =_ @@ -248,6 +283,14 @@ function test_percent_splitting { function test_mod_submod { echo -e "${GREEN}# TEST_MOD_SUBMOD ${NC}" +if [ $LACK_TMOD -eq 1 ]; then + echo "SKIP" + return +fi +if [ $LACK_TMOD_SUBMOD -eq 1 ]; then + echo "SKIP" + return +fi ifrmmod test_dynamic_debug_submod ifrmmod test_dynamic_debug ddcmd =_
Re: [PATCH v3 0/6] drm/ci: uprev mesa/IGT and generate testlist
On 28/05/2024 23:40, Vignesh Raman wrote: Uprev mesa and IGT to the latest version and stop vendoring the testlist into the kernel. Instead, use the testlist from the IGT build to ensure we do not miss renamed or newly added tests. Update the xfails with the latest testlist run. Add farm variable and update device type variable. https://gitlab.freedesktop.org/vigneshraman/linux/-/pipelines/1187556 Vignesh Raman (6): drm/ci: uprev mesa version drm/ci: add farm variable drm/ci: generate testlist from build drm/ci: uprev IGT drm/ci: skip driver specific tests drm/ci: update xfails for the new testlist drivers/gpu/drm/ci/build-igt.sh | 41 +- drivers/gpu/drm/ci/build.sh |6 +- drivers/gpu/drm/ci/container.yml | 12 +- drivers/gpu/drm/ci/gitlab-ci.yml | 46 +- drivers/gpu/drm/ci/igt_runner.sh |9 +- drivers/gpu/drm/ci/image-tags.yml |2 +- drivers/gpu/drm/ci/lava-submit.sh |4 +- drivers/gpu/drm/ci/test.yml | 17 +- drivers/gpu/drm/ci/testlist.txt | 2761 - .../gpu/drm/ci/xfails/amdgpu-stoney-fails.txt | 41 +- .../drm/ci/xfails/amdgpu-stoney-flakes.txt|7 + .../gpu/drm/ci/xfails/amdgpu-stoney-skips.txt | 33 +- drivers/gpu/drm/ci/xfails/i915-amly-fails.txt | 31 + .../gpu/drm/ci/xfails/i915-amly-flakes.txt|9 + drivers/gpu/drm/ci/xfails/i915-amly-skips.txt | 22 +- drivers/gpu/drm/ci/xfails/i915-apl-fails.txt | 46 +- drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt |6 + drivers/gpu/drm/ci/xfails/i915-apl-skips.txt | 26 +- drivers/gpu/drm/ci/xfails/i915-cml-fails.txt | 38 + drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt |6 + drivers/gpu/drm/ci/xfails/i915-cml-skips.txt | 23 + drivers/gpu/drm/ci/xfails/i915-glk-fails.txt | 41 +- drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt |7 + drivers/gpu/drm/ci/xfails/i915-glk-skips.txt | 26 +- drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt | 42 +- drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt |7 +- drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt | 36 +- drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt | 77 +- drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt | 28 +- drivers/gpu/drm/ci/xfails/i915-whl-fails.txt | 63 +- drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt |6 + drivers/gpu/drm/ci/xfails/i915-whl-skips.txt | 22 +- .../drm/ci/xfails/mediatek-mt8173-fails.txt | 30 +- .../drm/ci/xfails/mediatek-mt8173-flakes.txt | 11 + .../drm/ci/xfails/mediatek-mt8173-skips.txt | 16 + .../drm/ci/xfails/mediatek-mt8183-fails.txt | 21 +- .../drm/ci/xfails/mediatek-mt8183-skips.txt | 18 + .../gpu/drm/ci/xfails/meson-g12b-fails.txt| 24 +- .../gpu/drm/ci/xfails/meson-g12b-skips.txt| 18 + .../gpu/drm/ci/xfails/msm-apq8016-fails.txt | 12 +- .../gpu/drm/ci/xfails/msm-apq8016-skips.txt | 15 + .../gpu/drm/ci/xfails/msm-apq8096-fails.txt |7 + .../gpu/drm/ci/xfails/msm-apq8096-flakes.txt |6 + .../gpu/drm/ci/xfails/msm-apq8096-skips.txt | 26 +- .../msm-sc7180-trogdor-kingoftown-fails.txt | 175 +- .../msm-sc7180-trogdor-kingoftown-flakes.txt |8 + .../msm-sc7180-trogdor-kingoftown-skips.txt | 19 + ...sm-sc7180-trogdor-lazor-limozeen-fails.txt | 175 +- ...m-sc7180-trogdor-lazor-limozeen-flakes.txt |6 + ...sm-sc7180-trogdor-lazor-limozeen-skips.txt | 16 + .../gpu/drm/ci/xfails/msm-sdm845-fails.txt| 38 +- .../gpu/drm/ci/xfails/msm-sdm845-flakes.txt | 25 +- .../gpu/drm/ci/xfails/msm-sdm845-skips.txt| 19 + .../drm/ci/xfails/rockchip-rk3288-fails.txt | 62 +- .../drm/ci/xfails/rockchip-rk3288-skips.txt | 21 +- .../drm/ci/xfails/rockchip-rk3399-fails.txt | 83 +- .../drm/ci/xfails/rockchip-rk3399-flakes.txt | 13 +- .../drm/ci/xfails/rockchip-rk3399-skips.txt | 19 + drivers/gpu/drm/ci/xfails/update-xfails.py|4 +- .../drm/ci/xfails/virtio_gpu-none-fails.txt | 94 +- .../drm/ci/xfails/virtio_gpu-none-skips.txt | 20 +- 61 files changed, 1348 insertions(+), 3194 deletions(-) delete mode 100644 drivers/gpu/drm/ci/testlist.txt create mode 100644 drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8173-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8173-skips.txt create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8183-skips.txt create mode 100644 drivers/gpu/drm/ci/xfails/meson-g12b-skips.txt create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8016-skips.txt create mode 100644
Re: [PATCH v3 6/6] drm/ci: update xfails for the new testlist
On 29/05/2024 06:49, Vignesh Raman wrote: Hi Dmitry, On 29/05/24 13:30, Dmitry Baryshkov wrote: On Wed, May 29, 2024 at 08:10:49AM +0530, Vignesh Raman wrote: Now the testlist is used from IGT build, so update xfails with the new testlist. Set the timeout of all i915 jobs to 1h30m since some jobs takes more than 1 hour to complete. Reviewed-by: Dmitry Baryshkov This had an explicit '# msm testlist' at the end. Please don't drop important parts of tags. I didn't review fails/flakes for other platforms. Sorry I missed it. Will ask Helen to add the tag back when she merges this. I'll add it Acked-by: Helen Koike Thanks. Helen Regards, Vignesh Signed-off-by: Vignesh Raman --- v2: - Set the timeout of all i915 jobs to 1h30m and updated expectations file. v3: - Add a link to the email reporting the flaky tests to the maintainers. --- drivers/gpu/drm/ci/test.yml | 6 +- .../gpu/drm/ci/xfails/amdgpu-stoney-fails.txt | 41 ++-- .../drm/ci/xfails/amdgpu-stoney-flakes.txt | 7 + .../gpu/drm/ci/xfails/amdgpu-stoney-skips.txt | 18 ++ drivers/gpu/drm/ci/xfails/i915-amly-fails.txt | 31 .../gpu/drm/ci/xfails/i915-amly-flakes.txt | 9 + drivers/gpu/drm/ci/xfails/i915-amly-skips.txt | 11 ++ drivers/gpu/drm/ci/xfails/i915-apl-fails.txt | 46 +++-- drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt | 6 + drivers/gpu/drm/ci/xfails/i915-apl-skips.txt | 15 ++ drivers/gpu/drm/ci/xfails/i915-cml-fails.txt | 38 drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt | 6 + drivers/gpu/drm/ci/xfails/i915-cml-skips.txt | 14 ++ drivers/gpu/drm/ci/xfails/i915-glk-fails.txt | 41 +++- drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt | 7 + drivers/gpu/drm/ci/xfails/i915-glk-skips.txt | 15 ++ drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt | 42 ++--- drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt | 7 +- drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt | 25 +++ drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt | 77 drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt | 17 ++ drivers/gpu/drm/ci/xfails/i915-whl-fails.txt | 63 --- drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt | 6 + drivers/gpu/drm/ci/xfails/i915-whl-skips.txt | 11 ++ .../drm/ci/xfails/mediatek-mt8173-fails.txt | 30 ++- .../drm/ci/xfails/mediatek-mt8173-flakes.txt | 11 ++ .../drm/ci/xfails/mediatek-mt8173-skips.txt | 4 + .../drm/ci/xfails/mediatek-mt8183-fails.txt | 21 +-- .../drm/ci/xfails/mediatek-mt8183-skips.txt | 4 + .../gpu/drm/ci/xfails/meson-g12b-fails.txt | 24 +-- .../gpu/drm/ci/xfails/meson-g12b-skips.txt | 4 + .../gpu/drm/ci/xfails/msm-apq8016-fails.txt | 12 +- .../gpu/drm/ci/xfails/msm-apq8016-skips.txt | 4 + .../gpu/drm/ci/xfails/msm-apq8096-fails.txt | 7 + .../gpu/drm/ci/xfails/msm-apq8096-flakes.txt | 6 + .../gpu/drm/ci/xfails/msm-apq8096-skips.txt | 12 ++ .../msm-sc7180-trogdor-kingoftown-fails.txt | 175 +- .../msm-sc7180-trogdor-kingoftown-flakes.txt | 8 + .../msm-sc7180-trogdor-kingoftown-skips.txt | 7 + ...sm-sc7180-trogdor-lazor-limozeen-fails.txt | 175 +- ...m-sc7180-trogdor-lazor-limozeen-flakes.txt | 6 + ...sm-sc7180-trogdor-lazor-limozeen-skips.txt | 4 + .../gpu/drm/ci/xfails/msm-sdm845-fails.txt | 38 +--- .../gpu/drm/ci/xfails/msm-sdm845-flakes.txt | 25 ++- .../gpu/drm/ci/xfails/msm-sdm845-skips.txt | 7 + .../drm/ci/xfails/rockchip-rk3288-fails.txt | 62 +-- .../drm/ci/xfails/rockchip-rk3288-skips.txt | 4 + .../drm/ci/xfails/rockchip-rk3399-fails.txt | 83 + .../drm/ci/xfails/rockchip-rk3399-flakes.txt | 13 +- .../drm/ci/xfails/rockchip-rk3399-skips.txt | 4 + drivers/gpu/drm/ci/xfails/update-xfails.py | 4 +- .../drm/ci/xfails/virtio_gpu-none-fails.txt | 94 +++--- .../drm/ci/xfails/virtio_gpu-none-skips.txt | 4 + 53 files changed, 1023 insertions(+), 388 deletions(-) create mode 100644 drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8173-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8096-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-flakes.txt diff --git a/drivers/gpu/drm/ci/test.yml b/drivers/gpu/drm/ci/test.yml index 2615f67f6aa3..322cce714657 100644 --- a/drivers/gpu/drm/ci/test.yml +++ b/drivers/gpu/drm/ci/test.yml @@ -191,6 +191,7 @@ rockchip:rk3399: extends: - .lava-igt:x86_64 stage: i915 + timeout: "1h30m"
Re: [PATCH v3 5/6] drm/ci: skip driver specific tests
On 28/05/2024 23:40, Vignesh Raman wrote: Skip driver specific tests and skip kms tests for panfrost driver since it is not a kms driver. Reviewed-by: Dmitry Baryshkov Signed-off-by: Vignesh Raman Acked-by: Helen Koike --- v2: - Skip xe tests for amdgpu and virtio. v3: - No changes. --- .../gpu/drm/ci/xfails/amdgpu-stoney-skips.txt | 15 ++- drivers/gpu/drm/ci/xfails/i915-amly-skips.txt | 11 ++- drivers/gpu/drm/ci/xfails/i915-apl-skips.txt| 11 ++- drivers/gpu/drm/ci/xfails/i915-cml-skips.txt| 9 + drivers/gpu/drm/ci/xfails/i915-glk-skips.txt| 11 ++- drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt| 11 ++- drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt| 11 ++- drivers/gpu/drm/ci/xfails/i915-whl-skips.txt| 11 ++- .../gpu/drm/ci/xfails/mediatek-mt8173-skips.txt | 12 .../gpu/drm/ci/xfails/mediatek-mt8183-skips.txt | 14 ++ drivers/gpu/drm/ci/xfails/meson-g12b-skips.txt | 14 ++ drivers/gpu/drm/ci/xfails/msm-apq8016-skips.txt | 11 +++ drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt | 14 +- .../msm-sc7180-trogdor-kingoftown-skips.txt | 12 .../msm-sc7180-trogdor-lazor-limozeen-skips.txt | 12 drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt | 12 .../gpu/drm/ci/xfails/rockchip-rk3288-skips.txt | 17 - .../gpu/drm/ci/xfails/rockchip-rk3399-skips.txt | 15 +++ .../gpu/drm/ci/xfails/virtio_gpu-none-skips.txt | 16 +++- 19 files changed, 229 insertions(+), 10 deletions(-) create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8173-skips.txt create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8183-skips.txt create mode 100644 drivers/gpu/drm/ci/xfails/meson-g12b-skips.txt create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8016-skips.txt diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt index e2c538a0f954..21d26d5e67c2 100644 --- a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt +++ b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt @@ -1,2 +1,15 @@ # Suspend to RAM seems to be broken on this machine -.*suspend.* \ No newline at end of file +.*suspend.* + +# Skip driver specific tests +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# Skip intel specific tests +gem_.* +i915_.* +xe_.* diff --git a/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt b/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt index fe55540a3f9a..1e80987cf584 100644 --- a/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt +++ b/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt @@ -1,4 +1,13 @@ # Suspend to RAM seems to be broken on this machine .*suspend.* # This is generating kernel oops with divide error -kms_plane_scaling@invalid-parameters \ No newline at end of file +kms_plane_scaling@invalid-parameters + +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* diff --git a/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt b/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt index 3430b215c06e..0104f2ffa8ba 100644 --- a/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt +++ b/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt @@ -3,4 +3,13 @@ # This is generating kernel oops with divide error kms_plane_scaling@invalid-parameters # This is cascading issues -kms_3d \ No newline at end of file +kms_3d + +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* diff --git a/drivers/gpu/drm/ci/xfails/i915-cml-skips.txt b/drivers/gpu/drm/ci/xfails/i915-cml-skips.txt index 6d3d7ddc377f..398ebe163ad0 100644 --- a/drivers/gpu/drm/ci/xfails/i915-cml-skips.txt +++ b/drivers/gpu/drm/ci/xfails/i915-cml-skips.txt @@ -1,2 +1,11 @@ # This is generating kernel oops with divide error kms_plane_scaling@invalid-parameters + +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* diff --git a/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt b/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt index 4c7d00ce14bc..4f5419d62170 100644 --- a/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt +++ b/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt @@ -2,4 +2,13 @@ .*suspend.* # This is generating kernel oops with divide error -kms_plane_scaling@invalid-parameters \ No newline at end of file +kms_plane_scaling@invalid-parameters + +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* diff --git a/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt b/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt index 4c7d00ce14bc..4f5419d62170 100644 --- a/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt +++ b/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt @@ -2,4 +2,13 @@ .*suspend.* # This is generating kernel oops with divide error -kms_plane_scaling@invalid-parameters
Re: [PATCH v3 4/6] drm/ci: uprev IGT
On 28/05/2024 23:40, Vignesh Raman wrote: test-list.txt and test-list-full.txt are not generated for cross-builds and they are required by drm-ci for testing arm32 targets. This is fixed in igt-gpu-tools. So uprev IGT to include the commit which fixes this issue. Also disable building xe driver tests for non-intel platforms. Reviewed-by: Dmitry Baryshkov Signed-off-by: Vignesh Raman Acked-by: Helen Koike --- v2: - Split IGT uprev to seperate patch. v3: - No changes. --- drivers/gpu/drm/ci/build-igt.sh | 4 drivers/gpu/drm/ci/gitlab-ci.yml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/ci/build-igt.sh b/drivers/gpu/drm/ci/build-igt.sh index b7d2a49a6db3..eddb5f782a5e 100644 --- a/drivers/gpu/drm/ci/build-igt.sh +++ b/drivers/gpu/drm/ci/build-igt.sh @@ -45,6 +45,10 @@ MESON_OPTIONS="-Doverlay=disabled\ -Dlibunwind=enabled \ -Dprefix=/igt" +if [[ "$KERNEL_ARCH" = "arm64" ]] || [[ "$KERNEL_ARCH" = "arm" ]]; then +MESON_OPTIONS="$MESON_OPTIONS -Dxe_driver=disabled" +fi + mkdir -p /igt meson build $MESON_OPTIONS $EXTRA_MESON_ARGS ninja -C build -j${FDO_CI_CONCURRENT:-4} || ninja -C build -j 1 diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml index 8f32de63d92e..1b29c3b6406b 100644 --- a/drivers/gpu/drm/ci/gitlab-ci.yml +++ b/drivers/gpu/drm/ci/gitlab-ci.yml @@ -5,7 +5,7 @@ variables: UPSTREAM_REPO: git://anongit.freedesktop.org/drm/drm TARGET_BRANCH: drm-next - IGT_VERSION: d2af13d9f5be5ce23d996e4afd3e45990f5ab977 + IGT_VERSION: 0df7b9b97f9da0e364f5ee30fe331004b8c86b56 DEQP_RUNNER_GIT_URL: https://gitlab.freedesktop.org/anholt/deqp-runner.git DEQP_RUNNER_GIT_TAG: v0.15.0
Re: [PATCH v3 2/6] drm/ci: add farm variable
On 28/05/2024 23:40, Vignesh Raman wrote: Mesa uses structured logs for logging and debug purpose, https://mesa.pages.freedesktop.org/-/mesa/-/jobs/59165650/artifacts/results/job_detail.json Since drm-ci uses the mesa scripts, add the farm variable and update the device type for missing jobs. Signed-off-by: Vignesh Raman Acked-by: Helen Koike --- v3: - New commit to add farm variable and update device type variable. --- drivers/gpu/drm/ci/test.yml | 11 +-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/ci/test.yml b/drivers/gpu/drm/ci/test.yml index 8bc63912fddb..2615f67f6aa3 100644 --- a/drivers/gpu/drm/ci/test.yml +++ b/drivers/gpu/drm/ci/test.yml @@ -24,6 +24,7 @@ variables: HWCI_TEST_SCRIPT: "/install/igt_runner.sh" DEBIAN_ARCH: "armhf" +FARM: collabora dependencies: - testing:arm32 needs: @@ -39,6 +40,7 @@ variables: HWCI_TEST_SCRIPT: "/install/igt_runner.sh" DEBIAN_ARCH: "arm64" +FARM: collabora dependencies: - testing:arm64 needs: @@ -54,6 +56,7 @@ variables: HWCI_TEST_SCRIPT: "/install/igt_runner.sh" DEBIAN_ARCH: "amd64" +FARM: collabora dependencies: - testing:x86_64 needs: @@ -74,6 +77,7 @@ S3_ARTIFACT_NAME: "arm64/kernel-files" BM_KERNEL: https://${PIPELINE_ARTIFACTS_BASE}/arm64/Image.gz BM_CMDLINE: "ip=dhcp console=ttyMSM0,115200n8 $BM_KERNEL_EXTRA_ARGS root=/dev/nfs rw nfsrootdebug nfsroot=,tcp,nfsvers=4.2 init=/init $BM_KERNELARGS" +FARM: google needs: - debian/arm64_test - job: testing:arm64 @@ -116,8 +120,9 @@ msm:apq8016: - .baremetal-igt-arm64 stage: msm variables: +DEVICE_TYPE: apq8016-sbc-usb-host DRIVER_NAME: msm -BM_DTB: https://${PIPELINE_ARTIFACTS_BASE}/arm64/apq8016-sbc-usb-host.dtb +BM_DTB: https://${PIPELINE_ARTIFACTS_BASE}/arm64/${DEVICE_TYPE}.dtb GPU_VERSION: apq8016 # disabling unused clocks congests with the MDSS runtime PM trying to # disable those clocks and causes boot to fail. @@ -132,9 +137,10 @@ msm:apq8096: - .baremetal-igt-arm64 stage: msm variables: +DEVICE_TYPE: apq8096-db820c DRIVER_NAME: msm BM_KERNEL_EXTRA_ARGS: maxcpus=2 -BM_DTB: https://${PIPELINE_ARTIFACTS_BASE}/arm64/apq8096-db820c.dtb +BM_DTB: https://${PIPELINE_ARTIFACTS_BASE}/arm64/${DEVICE_TYPE}.dtb GPU_VERSION: apq8096 RUNNER_TAG: google-freedreno-db820c script: @@ -146,6 +152,7 @@ msm:sdm845: stage: msm parallel: 6 variables: +DEVICE_TYPE: sdm845-cheza-r3 DRIVER_NAME: msm BM_KERNEL: https://${PIPELINE_ARTIFACTS_BASE}/arm64/cheza-kernel GPU_VERSION: sdm845
Re: [PATCH v3 1/6] drm/ci: uprev mesa version
On 28/05/2024 23:40, Vignesh Raman wrote: zlib.net is not allowing tarball download anymore and results in below error in kernel+rootfs_arm32 container build, urllib.error.HTTPError: HTTP Error 403: Forbidden urllib.error.HTTPError: HTTP Error 415: Unsupported Media Type Uprev mesa to latest version which includes a fix for this issue. https://gitlab.freedesktop.org/mesa/mesa/-/commit/908f444e Use id_tokens for JWT authentication. Since s3 bucket is migrated to mesa-rootfs, update the variables accordingly. Also copy helper scripts to install, so that the ci jobs can use these scripts for logging. Signed-off-by: Vignesh Raman Acked-by: Helen Koike --- v2: - Uprev to recent version and use id_tokens for JWT authentication v3: - Move adding farm variable and updating device type variable to seperate commit --- drivers/gpu/drm/ci/build-igt.sh | 2 +- drivers/gpu/drm/ci/build.sh | 6 +++-- drivers/gpu/drm/ci/container.yml | 12 +++-- drivers/gpu/drm/ci/gitlab-ci.yml | 44 +-- drivers/gpu/drm/ci/image-tags.yml | 2 +- drivers/gpu/drm/ci/lava-submit.sh | 4 +-- 6 files changed, 42 insertions(+), 28 deletions(-) diff --git a/drivers/gpu/drm/ci/build-igt.sh b/drivers/gpu/drm/ci/build-igt.sh index 500fa4f5c30a..7859554756c4 100644 --- a/drivers/gpu/drm/ci/build-igt.sh +++ b/drivers/gpu/drm/ci/build-igt.sh @@ -32,4 +32,4 @@ tar -cf artifacts/igt.tar /igt # Pass needed files to the test stage S3_ARTIFACT_NAME="igt.tar.gz" gzip -c artifacts/igt.tar > ${S3_ARTIFACT_NAME} -ci-fairy s3cp --token-file "${CI_JOB_JWT_FILE}" ${S3_ARTIFACT_NAME} https://${PIPELINE_ARTIFACTS_BASE}/${KERNEL_ARCH}/${S3_ARTIFACT_NAME} +ci-fairy s3cp --token-file "${S3_JWT_FILE}" ${S3_ARTIFACT_NAME} https://${PIPELINE_ARTIFACTS_BASE}/${KERNEL_ARCH}/${S3_ARTIFACT_NAME} diff --git a/drivers/gpu/drm/ci/build.sh b/drivers/gpu/drm/ci/build.sh index 106f2d40d222..a67871fdcd3f 100644 --- a/drivers/gpu/drm/ci/build.sh +++ b/drivers/gpu/drm/ci/build.sh @@ -128,6 +128,7 @@ fi # Pass needed files to the test stage mkdir -p install cp -rfv .gitlab-ci/* install/. +cp -rfv ci/* install/. cp -rfv install/common install/ci-common cp -rfv drivers/gpu/drm/ci/* install/. @@ -141,14 +142,15 @@ if [[ "$UPLOAD_TO_MINIO" = "1" ]]; then FILES_TO_UPLOAD="$FILES_TO_UPLOAD $(basename -a $DEVICE_TREES)" fi +ls -l "${S3_JWT_FILE}" for f in $FILES_TO_UPLOAD; do -ci-fairy s3cp --token-file "${CI_JOB_JWT_FILE}" /lava-files/$f \ +ci-fairy s3cp --token-file "${S3_JWT_FILE}" /lava-files/$f \ https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/$f done S3_ARTIFACT_NAME="kernel-files.tar.zst" tar --zstd -cf $S3_ARTIFACT_NAME install -ci-fairy s3cp --token-file "${CI_JOB_JWT_FILE}" ${S3_ARTIFACT_NAME} https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/${S3_ARTIFACT_NAME} +ci-fairy s3cp --token-file "${S3_JWT_FILE}" ${S3_ARTIFACT_NAME} https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/${S3_ARTIFACT_NAME} echo "Download vmlinux.xz from https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/vmlinux.xz; fi diff --git a/drivers/gpu/drm/ci/container.yml b/drivers/gpu/drm/ci/container.yml index 9764e7921a4f..d6edf3635b23 100644 --- a/drivers/gpu/drm/ci/container.yml +++ b/drivers/gpu/drm/ci/container.yml @@ -36,15 +36,15 @@ debian/android_build: rules: - when: never -debian/x86_64_test-android: +.debian/x86_64_test-android: rules: - when: never -windows_build_vs2019: +windows_build_msvc: rules: - when: never -windows_test_vs2019: +windows_test_msvc: rules: - when: never @@ -56,10 +56,6 @@ rustfmt: rules: - when: never -windows_vs2019: - rules: -- when: never - -clang-format: +windows_msvc: rules: - when: never \ No newline at end of file diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml index 084e3ff8e3f4..8f32de63d92e 100644 --- a/drivers/gpu/drm/ci/gitlab-ci.yml +++ b/drivers/gpu/drm/ci/gitlab-ci.yml @@ -1,6 +1,6 @@ variables: DRM_CI_PROJECT_PATH: mesa/mesa - DRM_CI_COMMIT_SHA: 9d162de9a05155e1c4041857a5848842749164cf + DRM_CI_COMMIT_SHA: e2b9c5a9e3e4f9b532067af8022eaef8d6fc6c00 UPSTREAM_REPO: git://anongit.freedesktop.org/drm/drm TARGET_BRANCH: drm-next @@ -19,33 +19,47 @@ variables: bash download-git-cache.sh rm download-git-cache.sh set +o xtrace + S3_JWT_FILE: /s3_jwt S3_HOST: s3.freedesktop.org + # This bucket is used to fetch the kernel image + S3_KERNEL_BUCKET: mesa-rootfs + # Bucket for git cache + S3_GITCACHE_BUCKET: git-cache + # Bucket for the pipeline artifacts pushed to S3 + S3_ARTIFACTS_BUCKET: artifacts # per-pipeline artifact storage on Min
Re: [PATCH v1 5/5] drm/ci: update xfails for the new testlist
On 30/04/2024 06:11, Vignesh Raman wrote: Now the testlist is used from IGT build, so update xfails with the new testlist. Signed-off-by: Vignesh Raman --- .../gpu/drm/ci/xfails/amdgpu-stoney-fails.txt | 47 +++ .../drm/ci/xfails/amdgpu-stoney-flakes.txt| 8 +- .../gpu/drm/ci/xfails/amdgpu-stoney-skips.txt | 15 drivers/gpu/drm/ci/xfails/i915-amly-fails.txt | 22 - .../gpu/drm/ci/xfails/i915-amly-flakes.txt| 8 ++ drivers/gpu/drm/ci/xfails/i915-amly-skips.txt | 8 ++ drivers/gpu/drm/ci/xfails/i915-apl-fails.txt | 45 +- drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt | 5 ++ drivers/gpu/drm/ci/xfails/i915-apl-skips.txt | 12 +++ drivers/gpu/drm/ci/xfails/i915-cml-fails.txt | 26 +- drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt | 6 ++ drivers/gpu/drm/ci/xfails/i915-cml-skips.txt | 8 ++ drivers/gpu/drm/ci/xfails/i915-glk-fails.txt | 28 +-- drivers/gpu/drm/ci/xfails/i915-glk-skips.txt | 12 +++ drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt | 39 - drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt | 10 ++- drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt | 21 + drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt | 75 + drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt | 13 +++ drivers/gpu/drm/ci/xfails/i915-whl-fails.txt | 46 +-- drivers/gpu/drm/ci/xfails/i915-whl-skips.txt | 8 ++ .../drm/ci/xfails/mediatek-mt8173-fails.txt | 47 +++ .../drm/ci/xfails/mediatek-mt8183-fails.txt | 17 +--- .../drm/ci/xfails/mediatek-mt8183-flakes.txt | 5 ++ .../gpu/drm/ci/xfails/meson-g12b-fails.txt| 20 + .../gpu/drm/ci/xfails/meson-g12b-flakes.txt | 5 ++ .../gpu/drm/ci/xfails/msm-apq8016-fails.txt | 26 ++ .../gpu/drm/ci/xfails/msm-apq8016-flakes.txt | 5 ++ .../gpu/drm/ci/xfails/msm-apq8096-fails.txt | 5 +- .../gpu/drm/ci/xfails/msm-apq8096-flakes.txt | 5 ++ .../gpu/drm/ci/xfails/msm-apq8096-skips.txt | 67 +++ .../msm-sc7180-trogdor-kingoftown-fails.txt | 34 .../msm-sc7180-trogdor-kingoftown-flakes.txt | 5 ++ ...sm-sc7180-trogdor-lazor-limozeen-fails.txt | 34 ...m-sc7180-trogdor-lazor-limozeen-flakes.txt | 5 ++ .../gpu/drm/ci/xfails/msm-sdm845-fails.txt| 75 - .../gpu/drm/ci/xfails/msm-sdm845-flakes.txt | 26 ++ .../drm/ci/xfails/rockchip-rk3288-fails.txt | 54 .../drm/ci/xfails/rockchip-rk3399-fails.txt | 80 ++ .../drm/ci/xfails/rockchip-rk3399-flakes.txt | 7 -- .../drm/ci/xfails/virtio_gpu-none-fails.txt | 82 +-- .../drm/ci/xfails/virtio_gpu-none-skips.txt | 3 + 42 files changed, 574 insertions(+), 495 deletions(-) create mode 100644 drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8183-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/meson-g12b-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8016-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8096-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-flakes.txt create mode 100644 drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3288-fails.txt delete mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3399-flakes.txt diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt index ea87dc46bc2b..a48df7880ec5 100644 --- a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt +++ b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt @@ -1,27 +1,46 @@ -kms_addfb_basic@bad-pitch-65536,Fail +amdgpu/amd_assr@assr-links,Fail +amdgpu/amd_assr@assr-links-dpms,Fail +amdgpu/amd_deadlock@amdgpu-deadlock-compute,Timeout +amdgpu/amd_ilr@ilr-policy,Fail +amdgpu/amd_mall@static-screen,Crash +amdgpu/amd_mode_switch@mode-switch-first-last-pipe-2,Crash +amdgpu/amd_pci_unplug@amdgpu_hotunplug_simple,Fail +amdgpu/amd_pci_unplug@amdgpu_hotunplug_with_cs,Fail +amdgpu/amd_pci_unplug@amdgpu_hotunplug_with_exported_bo,Fail +amdgpu/amd_plane@mpo-pan-nv12,Fail +amdgpu/amd_plane@mpo-pan-p010,Fail +amdgpu/amd_plane@mpo-pan-rgb,Crash +amdgpu/amd_plane@mpo-scale-nv12,Fail +amdgpu/amd_plane@mpo-scale-p010,Fail +amdgpu/amd_plane@mpo-scale-rgb,Crash +amdgpu/amd_plane@mpo-swizzle-toggle,Fail +amdgpu/amd_uvd_dec@amdgpu_uvd_decode,Fail +amdgpu/amd_vce_dec@amdgpu_cs_vce_destroy,Fail +amdgpu/amd_vce_dec@amdgpu_cs_vce_encode,Fail +amdgpu/amd_vm@amdgpu-vm-unaligned-map,Fail +amdgpu/amd_vrr_range@freesync-parsing,Timeout +device_reset@unbind-cold-reset-rebind,Fail +dumb_buffer@invalid-bpp,Fail kms_addfb_basic@bo-too-small,Fail kms_addfb_basic@too-high,Fail kms_async_flips@async-flip-with-page-flip-events,Fail
Re: [PATCH v1 4/5] drm/ci: skip driver specific tests
On 30/04/2024 06:11, Vignesh Raman wrote: Skip driver specific tests and skip kms tests for panfrost driver since it is not a kms driver. Signed-off-by: Vignesh Raman --- .../gpu/drm/ci/xfails/amdgpu-stoney-skips.txt | 14 +- drivers/gpu/drm/ci/xfails/i915-amly-skips.txt | 14 +- drivers/gpu/drm/ci/xfails/i915-apl-skips.txt| 14 +- drivers/gpu/drm/ci/xfails/i915-cml-skips.txt| 12 drivers/gpu/drm/ci/xfails/i915-glk-skips.txt| 14 +- drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt| 14 +- drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt| 14 +- drivers/gpu/drm/ci/xfails/i915-whl-skips.txt| 14 +- .../gpu/drm/ci/xfails/mediatek-mt8173-skips.txt | 12 .../gpu/drm/ci/xfails/mediatek-mt8183-skips.txt | 14 ++ drivers/gpu/drm/ci/xfails/meson-g12b-skips.txt | 14 ++ drivers/gpu/drm/ci/xfails/msm-apq8016-skips.txt | 14 ++ drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt | 14 +- .../msm-sc7180-trogdor-kingoftown-skips.txt | 15 +++ .../msm-sc7180-trogdor-lazor-limozeen-skips.txt | 15 +++ drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt | 15 +++ .../gpu/drm/ci/xfails/rockchip-rk3288-skips.txt | 17 - .../gpu/drm/ci/xfails/rockchip-rk3399-skips.txt | 15 +++ .../gpu/drm/ci/xfails/virtio_gpu-none-skips.txt | 15 ++- 19 files changed, 260 insertions(+), 10 deletions(-) create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8173-skips.txt create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8183-skips.txt create mode 100644 drivers/gpu/drm/ci/xfails/meson-g12b-skips.txt create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8016-skips.txt diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt index e2c538a0f954..70e2f925d06f 100644 --- a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt +++ b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt @@ -1,2 +1,14 @@ # Suspend to RAM seems to be broken on this machine -.*suspend.* \ No newline at end of file +.*suspend.* + +# Skip driver specific tests +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# Skip intel specific tests +gem_.* +i915_.* diff --git a/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt b/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt index fe55540a3f9a..59f8acfaa5ba 100644 --- a/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt +++ b/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt @@ -1,4 +1,16 @@ # Suspend to RAM seems to be broken on this machine .*suspend.* # This is generating kernel oops with divide error -kms_plane_scaling@invalid-parameters \ No newline at end of file +kms_plane_scaling@invalid-parameters + +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# GEM tests takes ~1000 hours, so skip it +gem_.* diff --git a/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt b/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt index 3430b215c06e..d97bc038b63a 100644 --- a/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt +++ b/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt @@ -3,4 +3,16 @@ # This is generating kernel oops with divide error kms_plane_scaling@invalid-parameters # This is cascading issues -kms_3d \ No newline at end of file +kms_3d + +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# GEM tests takes ~1000 hours, so skip it +gem_.* diff --git a/drivers/gpu/drm/ci/xfails/i915-cml-skips.txt b/drivers/gpu/drm/ci/xfails/i915-cml-skips.txt index 6d3d7ddc377f..92c0ffee8283 100644 --- a/drivers/gpu/drm/ci/xfails/i915-cml-skips.txt +++ b/drivers/gpu/drm/ci/xfails/i915-cml-skips.txt @@ -1,2 +1,14 @@ # This is generating kernel oops with divide error kms_plane_scaling@invalid-parameters + +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# GEM tests takes ~1000 hours, so skip it +gem_.* diff --git a/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt b/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt index 4c7d00ce14bc..a168722caf13 100644 --- a/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt +++ b/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt @@ -2,4 +2,16 @@ .*suspend.* # This is generating kernel oops with divide error -kms_plane_scaling@invalid-parameters \ No newline at end of file +kms_plane_scaling@invalid-parameters + +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# GEM tests takes ~1000 hours, so skip it +gem_.* diff --git a/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt b/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt index 4c7d00ce14bc..a168722caf13 100644 --- a/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt +++ b/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt @@ -2,4 +2,16 @@
Re: [PATCH v1 3/5] drm/ci: build virtual GPU driver as module
On 30/04/2024 06:11, Vignesh Raman wrote: With latest IGT, the tests tries to load the module and it fails. So build the virtual GPU driver for virtio as module. Signed-off-by: Vignesh Raman Acked-by: Helen Koike --- drivers/gpu/drm/ci/build.sh | 1 - drivers/gpu/drm/ci/igt_runner.sh | 6 +++--- drivers/gpu/drm/ci/image-tags.yml | 4 ++-- drivers/gpu/drm/ci/test.yml | 1 + drivers/gpu/drm/ci/x86_64.config | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/ci/build.sh b/drivers/gpu/drm/ci/build.sh index 8a3baa003904..95493df9cdc2 100644 --- a/drivers/gpu/drm/ci/build.sh +++ b/drivers/gpu/drm/ci/build.sh @@ -156,7 +156,6 @@ fi mkdir -p artifacts/install/lib mv install/* artifacts/install/. -rm -rf artifacts/install/modules ln -s common artifacts/install/ci-common cp .config artifacts/${CI_JOB_NAME}_config diff --git a/drivers/gpu/drm/ci/igt_runner.sh b/drivers/gpu/drm/ci/igt_runner.sh index 20026612a9bd..55532f79fbdc 100755 --- a/drivers/gpu/drm/ci/igt_runner.sh +++ b/drivers/gpu/drm/ci/igt_runner.sh @@ -30,10 +30,10 @@ case "$DRIVER_NAME" in export IGT_FORCE_DRIVER="panfrost" fi ;; -amdgpu) +amdgpu|virtio_gpu) # Cannot use HWCI_KERNEL_MODULES as at that point we don't have the module in /lib -mv /install/modules/lib/modules/* /lib/modules/. -modprobe amdgpu +mv /install/modules/lib/modules/* /lib/modules/. || true +modprobe --first-time $DRIVER_NAME ;; esac diff --git a/drivers/gpu/drm/ci/image-tags.yml b/drivers/gpu/drm/ci/image-tags.yml index d8f72b82c938..fd1cb6061166 100644 --- a/drivers/gpu/drm/ci/image-tags.yml +++ b/drivers/gpu/drm/ci/image-tags.yml @@ -4,9 +4,9 @@ variables: DEBIAN_BASE_TAG: "${CONTAINER_TAG}" DEBIAN_X86_64_BUILD_IMAGE_PATH: "debian/x86_64_build" - DEBIAN_BUILD_TAG: "2023-10-08-config" + DEBIAN_BUILD_TAG: "2024-04-22-virtio" - KERNEL_ROOTFS_TAG: "2023-10-06-amd" + KERNEL_ROOTFS_TAG: "2024-04-22-virtio" PKG_REPO_REV: "3cc12a2a" DEBIAN_X86_64_TEST_BASE_IMAGE: "debian/x86_64_test-base" diff --git a/drivers/gpu/drm/ci/test.yml b/drivers/gpu/drm/ci/test.yml index 612c9ede3507..864ac3809d84 100644 --- a/drivers/gpu/drm/ci/test.yml +++ b/drivers/gpu/drm/ci/test.yml @@ -350,6 +350,7 @@ virtio_gpu:none: script: - ln -sf $CI_PROJECT_DIR/install /install - mv install/bzImage /lava-files/bzImage +- mkdir -p /lib/modules - mkdir -p $CI_PROJECT_DIR/results - ln -sf $CI_PROJECT_DIR/results /results - install/crosvm-runner.sh install/igt_runner.sh diff --git a/drivers/gpu/drm/ci/x86_64.config b/drivers/gpu/drm/ci/x86_64.config index 1cbd49a5b23a..78479f063e8e 100644 --- a/drivers/gpu/drm/ci/x86_64.config +++ b/drivers/gpu/drm/ci/x86_64.config @@ -91,7 +91,7 @@ CONFIG_KVM=y CONFIG_KVM_GUEST=y CONFIG_VIRT_DRIVERS=y CONFIG_VIRTIO_FS=y -CONFIG_DRM_VIRTIO_GPU=y +CONFIG_DRM_VIRTIO_GPU=m CONFIG_SERIAL_8250_CONSOLE=y CONFIG_VIRTIO_NET=y CONFIG_VIRTIO_CONSOLE=y
Re: [PATCH v1 1/5] drm/ci: uprev mesa version
On 30/04/2024 06:11, Vignesh Raman wrote: zlib.net is not allowing tarball download anymore and results in below error in kernel+rootfs_arm32 container build, urllib.error.HTTPError: HTTP Error 403: Forbidden urllib.error.HTTPError: HTTP Error 415: Unsupported Media Type Uprev mesa to latest version which includes a fix for this issue. https://gitlab.freedesktop.org/mesa/mesa/-/commit/908f444e Also copy helper scripts to install, so that the ci jobs can use these scripts for logging. Signed-off-by: Vignesh Raman Acked-by: Helen Koike --- drivers/gpu/drm/ci/build.sh | 1 + drivers/gpu/drm/ci/container.yml | 12 drivers/gpu/drm/ci/gitlab-ci.yml | 11 --- drivers/gpu/drm/ci/image-tags.yml | 3 ++- drivers/gpu/drm/ci/test.yml | 2 ++ 5 files changed, 17 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/ci/build.sh b/drivers/gpu/drm/ci/build.sh index 106f2d40d222..8a3baa003904 100644 --- a/drivers/gpu/drm/ci/build.sh +++ b/drivers/gpu/drm/ci/build.sh @@ -128,6 +128,7 @@ fi # Pass needed files to the test stage mkdir -p install cp -rfv .gitlab-ci/* install/. +cp -rfv ci/* install/. cp -rfv install/common install/ci-common cp -rfv drivers/gpu/drm/ci/* install/. diff --git a/drivers/gpu/drm/ci/container.yml b/drivers/gpu/drm/ci/container.yml index 9764e7921a4f..d6edf3635b23 100644 --- a/drivers/gpu/drm/ci/container.yml +++ b/drivers/gpu/drm/ci/container.yml @@ -36,15 +36,15 @@ debian/android_build: rules: - when: never -debian/x86_64_test-android: +.debian/x86_64_test-android: rules: - when: never -windows_build_vs2019: +windows_build_msvc: rules: - when: never -windows_test_vs2019: +windows_test_msvc: rules: - when: never @@ -56,10 +56,6 @@ rustfmt: rules: - when: never -windows_vs2019: - rules: -- when: never - -clang-format: +windows_msvc: rules: - when: never \ No newline at end of file diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml index 084e3ff8e3f4..9bf5190604a7 100644 --- a/drivers/gpu/drm/ci/gitlab-ci.yml +++ b/drivers/gpu/drm/ci/gitlab-ci.yml @@ -1,6 +1,6 @@ variables: DRM_CI_PROJECT_PATH: mesa/mesa - DRM_CI_COMMIT_SHA: 9d162de9a05155e1c4041857a5848842749164cf + DRM_CI_COMMIT_SHA: e5f133ccc426a197c48a4e88f5377f943f078180 UPSTREAM_REPO: git://anongit.freedesktop.org/drm/drm TARGET_BRANCH: drm-next @@ -26,10 +26,13 @@ variables: JOB_ARTIFACTS_BASE: ${PIPELINE_ARTIFACTS_BASE}/${CI_JOB_ID} # default kernel for rootfs before injecting the current kernel tree KERNEL_REPO: "gfx-ci/linux" - KERNEL_TAG: "v6.6.4-for-mesa-ci-e4f4c500f7fb" + KERNEL_TAG: "v6.6.21-mesa-19fc" KERNEL_IMAGE_BASE: https://${S3_HOST}/mesa-lava/${KERNEL_REPO}/${KERNEL_TAG} LAVA_TAGS: subset-1-gfx LAVA_JOB_PRIORITY: 30 + ARTIFACTS_BASE_URL: https://${CI_PROJECT_ROOT_NAMESPACE}.${CI_PAGES_DOMAIN}/-/${CI_PROJECT_NAME}/-/jobs/${CI_JOB_ID}/artifacts + # Python scripts for structured logger + PYTHONPATH: "$PYTHONPATH:$CI_PROJECT_DIR/install" default: before_script: @@ -46,6 +49,7 @@ default: - cd $CI_PROJECT_DIR - curl --output - $DRM_CI_PROJECT_URL/-/archive/$DRM_CI_COMMIT_SHA/mesa-$DRM_CI_COMMIT_SHA.tar.gz | tar -xz - mv mesa-$DRM_CI_COMMIT_SHA/.gitlab-ci* . +- mv mesa-$DRM_CI_COMMIT_SHA/bin/ci . - rm -rf mesa-$DRM_CI_COMMIT_SHA/ - echo -e "\e[0Ksection_end:$(date +%s):drm_ci_download_section\r\e[0K" @@ -98,6 +102,7 @@ include: stages: - sanity - container + - code-validation - git-archive - build - amdgpu @@ -107,7 +112,6 @@ stages: - msm - rockchip - virtio-gpu - - lint # YAML anchors for rule conditions # @@ -218,6 +222,7 @@ make git archive: script: # Remove drm-ci files we just added - rm -rf .gitlab-ci.* +- rm -rf ci # Compactify the .git directory - git gc --aggressive diff --git a/drivers/gpu/drm/ci/image-tags.yml b/drivers/gpu/drm/ci/image-tags.yml index 7ab4f2514da8..d8f72b82c938 100644 --- a/drivers/gpu/drm/ci/image-tags.yml +++ b/drivers/gpu/drm/ci/image-tags.yml @@ -1,5 +1,5 @@ variables: - CONTAINER_TAG: "2023-10-11-mesa-uprev" + CONTAINER_TAG: "2024-04-22-mesa-uprev" DEBIAN_X86_64_BUILD_BASE_IMAGE: "debian/x86_64_build-base" DEBIAN_BASE_TAG: "${CONTAINER_TAG}" @@ -7,6 +7,7 @@ variables: DEBIAN_BUILD_TAG: "2023-10-08-config" KERNEL_ROOTFS_TAG: "2023-10-06-amd" + PKG_REPO_REV: "3cc12a2a" DEBIAN_X86_64_TEST_BASE_IMAGE: "debian/x86_64_test-base" DEBIAN_X86_64_TEST_IMAGE_GL_PATH: "debian/x86_64_test-gl" diff --git a/drivers/gpu/drm/ci/test.yml b/drivers/gpu/drm/ci/test.yml index 8bc63912fddb..612c9ede3507 100644 --- a/drivers/gpu
Re: [PATCH v3 3/9] drm/ci: mediatek: Add job to test panfrost and powervr GPU driver
On 19/02/2024 06:39, Vignesh Raman wrote: Hi Helen, On 09/02/24 23:51, Helen Koike wrote: On 30/01/2024 12:03, Vignesh Raman wrote: For mediatek mt8173, the GPU driver is powervr and for mediatek mt8183, the GPU driver is panfrost. So add support in drm-ci to test panfrost and powervr GPU driver for mediatek SOCs and update xfails. Powervr driver was merged in linux kernel, but there's no mediatek support yet. So disable the mt8173-gpu job which uses powervr driver. Add panfrost specific tests to testlist and skip KMS tests for panfrost driver since it is not a not a KMS driver. Also update the MAINTAINERS file to include xfails for panfrost driver. Signed-off-by: Vignesh Raman Hi Vignesh, thanks for your work. I'm still wondering about a few things, please check below. --- v2: - Add panfrost and PVR GPU jobs for mediatek SOC with new xfails, add xfail entry to MAINTAINERS. Maybe we should review how the xfails failes are named. I think they should start with the DRIVER_NAME instead of GPU_VERSION. For instance, consider the following job: mediatek:mt8183-gpu: extends: - .mt8183 variables: GPU_VERSION: mediatek-mt8183-gpu DRIVER_NAME: panfrost And we have mediatek-mt8183-gpu-skips.txt If there is an error, we want to notify the panfrost driver maintainers (and maybe not the mediatek driver maintainers), so MAINTAINERS file doesn't correspond to this. Agree. How about a naming __ ? powervr_mediatek-mt8173_gpu-skipts.txt mediatek_mediatek-mt8173_display-skipts.txt panfrost_mediatek-mt8183_gpu-skips.txt mediatek_mediatek-mt8183_display-skips.txt ... What do you think? Yes we can keep this naming. In this case do we still need gpu/display in the xfails file name? If you think this split is not required, then I'm fine dropping it. Regards, Helen Regards, Vignesh
Re: [PATCH v3 9/9] drm/ci: uprev IGT and update testlist
On 10/02/2024 15:20, Maíra Canal wrote: On 2/10/24 15:17, Maíra Canal wrote: On 1/30/24 12:03, Vignesh Raman wrote: Uprev IGT and add amd, v3d, vc4 and vgem specific tests to testlist. Have testlist.txt per driver and include a base testlist so that the driver specific tests will run only on those hardware. Signed-off-by: Vignesh Raman --- v3: - New patch in series to uprev IGT and update testlist. --- drivers/gpu/drm/ci/gitlab-ci.yml | 2 +- drivers/gpu/drm/ci/igt_runner.sh | 12 +- drivers/gpu/drm/ci/testlist-amdgpu.txt | 151 ++ drivers/gpu/drm/ci/testlist-msm.txt | 50 ++ drivers/gpu/drm/ci/testlist-panfrost.txt | 17 ++ drivers/gpu/drm/ci/testlist-v3d.txt | 73 + drivers/gpu/drm/ci/testlist-vc4.txt | 49 ++ drivers/gpu/drm/ci/testlist.txt | 100 .../gpu/drm/ci/xfails/amdgpu-stoney-fails.txt | 24 ++- .../drm/ci/xfails/amdgpu-stoney-flakes.txt | 9 +- .../gpu/drm/ci/xfails/amdgpu-stoney-skips.txt | 10 +- 11 files changed, 427 insertions(+), 70 deletions(-) create mode 100644 drivers/gpu/drm/ci/testlist-amdgpu.txt create mode 100644 drivers/gpu/drm/ci/testlist-msm.txt create mode 100644 drivers/gpu/drm/ci/testlist-panfrost.txt create mode 100644 drivers/gpu/drm/ci/testlist-v3d.txt create mode 100644 drivers/gpu/drm/ci/testlist-vc4.txt diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml index bc8cb3420476..e2b021616a8e 100644 --- a/drivers/gpu/drm/ci/gitlab-ci.yml +++ b/drivers/gpu/drm/ci/gitlab-ci.yml @@ -5,7 +5,7 @@ variables: UPSTREAM_REPO: git://anongit.freedesktop.org/drm/drm TARGET_BRANCH: drm-next - IGT_VERSION: d2af13d9f5be5ce23d996e4afd3e45990f5ab977 + IGT_VERSION: b0cc8160ebdc87ce08b7fd83bb3c99ff7a4d8610 DEQP_RUNNER_GIT_URL: https://gitlab.freedesktop.org/anholt/deqp-runner.git DEQP_RUNNER_GIT_TAG: v0.15.0 diff --git a/drivers/gpu/drm/ci/igt_runner.sh b/drivers/gpu/drm/ci/igt_runner.sh index f001e015d135..2fd09b9b7cf6 100755 --- a/drivers/gpu/drm/ci/igt_runner.sh +++ b/drivers/gpu/drm/ci/igt_runner.sh @@ -64,10 +64,20 @@ if ! grep -q "core_getversion" /install/testlist.txt; then fi set +e +if [ "$DRIVER_NAME" = "amdgpu" ]; then + TEST_LIST="/install/testlist-amdgpu.txt" +elif [ "$DRIVER_NAME" = "msm" ]; then + TEST_LIST="/install/testlist-msm.txt" +elif [ "$DRIVER_NAME" = "panfrost" ]; then + TEST_LIST="/install/testlist-panfrost.txt" +else + TEST_LIST="/install/testlist.txt" +fi + Isn't V3D and VC4 testlists missing? It would be nice if you could provide us a link to a working pipeline. Also, if possible, I would like to be CCed on the next version of this patch, as I have interest in the V3D/VC4 tests. Ah, one thing: it would be nice to add the testlists to the MAINTAINERS file. This way, maintainers can keep track of any changes. Make sense, +1 ^ Regards, Helen Best Regards, - Maíra igt-runner \ run \ --igt-folder /igt/libexec/igt-gpu-tools \ - --caselist /install/testlist.txt \ + --caselist $TEST_LIST \ --output /results \ $IGT_SKIPS \ $IGT_FLAKES \ diff --git a/drivers/gpu/drm/ci/testlist-amdgpu.txt b/drivers/gpu/drm/ci/testlist-amdgpu.txt new file mode 100644 index ..4486f86d340b --- /dev/null +++ b/drivers/gpu/drm/ci/testlist-amdgpu.txt @@ -0,0 +1,151 @@ +testlist.txt +amdgpu/amd_abm@dpms_cycle +amdgpu/amd_abm@backlight_monotonic_basic +amdgpu/amd_abm@backlight_monotonic_abm +amdgpu/amd_abm@abm_enabled +amdgpu/amd_abm@abm_gradual +amdgpu/amd_bo@amdgpu_bo_export_import +amdgpu/amd_bo@amdgpu_bo_metadata +amdgpu/amd_bo@amdgpu_bo_map_unmap +amdgpu/amd_bo@amdgpu_memory_alloc +amdgpu/amd_bo@amdgpu_mem_fail_alloc +amdgpu/amd_bo@amdgpu_bo_find_by_cpu_mapping +amdgpu/amd_cp_dma_misc@GTT_to_VRAM-AMDGPU_HW_IP_GFX0 +amdgpu/amd_cp_dma_misc@GTT_to_VRAM-AMDGPU_HW_IP_COMPUTE0 +amdgpu/amd_cp_dma_misc@VRAM_to_GTT-AMDGPU_HW_IP_GFX0 +amdgpu/amd_cp_dma_misc@VRAM_to_GTT-AMDGPU_HW_IP_COMPUTE0 +amdgpu/amd_cp_dma_misc@VRAM_to_VRAM-AMDGPU_HW_IP_GFX0 +amdgpu/amd_cp_dma_misc@VRAM_to_VRAM-AMDGPU_HW_IP_COMPUTE0 +amdgpu/amd_dispatch@amdgpu-dispatch-test-compute-with-IP-COMPUTE +amdgpu/amd_dispatch@amdgpu-dispatch-test-gfx-with-IP-GFX +amdgpu/amd_dispatch@amdgpu-dispatch-hang-test-gfx-with-IP-GFX +amdgpu/amd_dispatch@amdgpu-dispatch-hang-test-compute-with-IP-COMPUTE +amdgpu/amd_dispatch@amdgpu-reset-test-gfx-with-IP-GFX-and-COMPUTE +amdgpu/amd_hotplug@basic +amdgpu/amd_hotplug@basic-suspend +amdgpu/amd_jpeg_dec@amdgpu_cs_jpeg_decode +amdgpu/amd_max_bpc@4k-mode-max-bpc +amdgpu/amd_module_load@reload +amdgpu/amd_plane@test-mpo-4k +amdgpu/amd_plane@mpo-swizzle-toggle +amdgpu/amd_plane@mpo-swizzle-toggle-multihead +amdgpu/amd_plane@mpo-pan-rgb +amdgpu/amd_plane@mpo-pan-rgb-multihead +amdgpu/amd_plane@mpo-pan-nv12 +amdgpu/amd_plane@mpo-pan-nv12-multihead +amdgpu/amd_plane@mpo-pan-p010
Re: [PATCH v3 1/9] drm/ci: arm64.config: Enable CONFIG_DRM_ANALOGIX_ANX7625
On 30/01/2024 12:03, Vignesh Raman wrote: Enable CONFIG_DRM_ANALOGIX_ANX7625 in the arm64 defconfig to get display driver probed on the mt8183-kukui-jacuzzi-juniper machine. arch/arm64/configs/defconfig has CONFIG_DRM_ANALOGIX_ANX7625=m, but drm-ci don't have initrd with modules, so add CONFIG_DRM_ANALOGIX_ANX7625=y in CI arm64 config. Couldn't you load the module as it is done on https://cgit.freedesktop.org/drm/drm-misc/tree/drivers/gpu/drm/ci/igt_runner.sh#n35 ? This is not a blocker, in any case Acked-by: Helen Koike Thanks Helen Signed-off-by: Vignesh Raman --- v2: - No changes v3: - No changes --- drivers/gpu/drm/ci/arm64.config | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/ci/arm64.config b/drivers/gpu/drm/ci/arm64.config index 8dbce9919a57..37d23fd7a367 100644 --- a/drivers/gpu/drm/ci/arm64.config +++ b/drivers/gpu/drm/ci/arm64.config @@ -187,6 +187,7 @@ CONFIG_MTK_DEVAPC=y CONFIG_PWM_MTK_DISP=y CONFIG_MTK_CMDQ=y CONFIG_REGULATOR_DA9211=y +CONFIG_DRM_ANALOGIX_ANX7625=y # For nouveau. Note that DRM must be a module so that it's loaded after NFS is up to provide the firmware. CONFIG_ARCH_TEGRA=y
Re: [PATCH v3 3/9] drm/ci: mediatek: Add job to test panfrost and powervr GPU driver
On 30/01/2024 12:03, Vignesh Raman wrote: For mediatek mt8173, the GPU driver is powervr and for mediatek mt8183, the GPU driver is panfrost. So add support in drm-ci to test panfrost and powervr GPU driver for mediatek SOCs and update xfails. Powervr driver was merged in linux kernel, but there's no mediatek support yet. So disable the mt8173-gpu job which uses powervr driver. Add panfrost specific tests to testlist and skip KMS tests for panfrost driver since it is not a not a KMS driver. Also update the MAINTAINERS file to include xfails for panfrost driver. Signed-off-by: Vignesh Raman Hi Vignesh, thanks for your work. I'm still wondering about a few things, please check below. --- v2: - Add panfrost and PVR GPU jobs for mediatek SOC with new xfails, add xfail entry to MAINTAINERS. Maybe we should review how the xfails failes are named. I think they should start with the DRIVER_NAME instead of GPU_VERSION. For instance, consider the following job: mediatek:mt8183-gpu: extends: - .mt8183 variables: GPU_VERSION: mediatek-mt8183-gpu DRIVER_NAME: panfrost And we have mediatek-mt8183-gpu-skips.txt If there is an error, we want to notify the panfrost driver maintainers (and maybe not the mediatek driver maintainers), so MAINTAINERS file doesn't correspond to this. How about a naming __ ? powervr_mediatek-mt8173_gpu-skipts.txt mediatek_mediatek-mt8173_display-skipts.txt panfrost_mediatek-mt8183_gpu-skips.txt mediatek_mediatek-mt8183_display-skips.txt ... What do you think? Thanks Helen v3: - Add panfrost specific tests to testlist and skip KMS tests for panfrost driver since it is not a not a KMS driver and update xfails. Update the MAINTAINERS file to include xfails for panfrost driver. Add the job name in GPU_VERSION and use it for xfail file names instead of using DRIVER_NAME. --- MAINTAINERS| 1 + drivers/gpu/drm/ci/test.yml| 18 ++ drivers/gpu/drm/ci/testlist.txt| 16 .../ci/xfails/mediatek-mt8183-gpu-skips.txt| 2 ++ 4 files changed, 37 insertions(+) create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8183-gpu-skips.txt diff --git a/MAINTAINERS b/MAINTAINERS index 9d959a6881f7..bcdc17d1aa26 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1645,6 +1645,7 @@ L:dri-de...@lists.freedesktop.org S:Supported T:git git://anongit.freedesktop.org/drm/drm-misc F:Documentation/gpu/panfrost.rst +F: drivers/gpu/drm/ci/xfails/panfrost* F:drivers/gpu/drm/panfrost/ F:include/uapi/drm/panfrost_drm.h diff --git a/drivers/gpu/drm/ci/test.yml b/drivers/gpu/drm/ci/test.yml index 0cd44e6ea18b..e153c5a7ad80 100644 --- a/drivers/gpu/drm/ci/test.yml +++ b/drivers/gpu/drm/ci/test.yml @@ -299,6 +299,17 @@ amdgpu:stoney: DEVICE_TYPE: mt8183-kukui-jacuzzi-juniper-sku16 RUNNER_TAG: mesa-ci-x86-64-lava-mt8183-kukui-jacuzzi-juniper-sku16 +mediatek:mt8173-gpu: + extends: +- .mt8173 + variables: +GPU_VERSION: mediatek-mt8173-gpu +DRIVER_NAME: powervr + rules: +# TODO: powervr driver was merged in linux kernel, but there's no mediatek support yet +# Remove the rule once mediatek support is added for powervr +- when: never + mediatek:mt8173-display: extends: - .mt8173 @@ -306,6 +317,13 @@ mediatek:mt8173-display: GPU_VERSION: mediatek-mt8173-display DRIVER_NAME: mediatek +mediatek:mt8183-gpu: + extends: +- .mt8183 + variables: +GPU_VERSION: mediatek-mt8183-gpu +DRIVER_NAME: panfrost + mediatek:mt8183-display: extends: - .mt8183 diff --git a/drivers/gpu/drm/ci/testlist.txt b/drivers/gpu/drm/ci/testlist.txt index eaeb751bb0ad..772fc025b1f8 100644 --- a/drivers/gpu/drm/ci/testlist.txt +++ b/drivers/gpu/drm/ci/testlist.txt @@ -2959,3 +2959,19 @@ msm_submit@invalid-duplicate-bo-submit msm_submit@invalid-cmd-idx-submit msm_submit@invalid-cmd-type-submit msm_submit@valid-submit +panfrost_get_param@base-params +panfrost_get_param@get-bad-param +panfrost_get_param@get-bad-padding +panfrost_gem_new@gem-new-4096 +panfrost_gem_new@gem-new-0 +panfrost_gem_new@gem-new-zeroed +panfrost_prime@gem-prime-import +panfrost_submit@pan-submit +panfrost_submit@pan-submit-error-no-jc +panfrost_submit@pan-submit-error-bad-in-syncs +panfrost_submit@pan-submit-error-bad-bo-handles +panfrost_submit@pan-submit-error-bad-requirements +panfrost_submit@pan-submit-error-bad-out-sync +panfrost_submit@pan-reset +panfrost_submit@pan-submit-and-close +panfrost_submit@pan-unhandled-pagefault diff --git a/drivers/gpu/drm/ci/xfails/mediatek-mt8183-gpu-skips.txt b/drivers/gpu/drm/ci/xfails/mediatek-mt8183-gpu-skips.txt new file mode 100644 index ..2ea09d1648bc --- /dev/null +++ b/drivers/gpu/drm/ci/xfails/mediatek-mt8183-gpu-skips.txt @@ -0,0 +1,2 @@ +# Panfrost is not a KMS driver, so skip the KMS tests +kms_.*
[PATCH v3 05/10] drm/ci: clean up xfails (specially flakes list)
Since the script that collected the list of the expectation files was bogus and placing test to the flakes list incorrectly, restart the expectation files with the correct script. This reduces a lot the number of tests in the flakes list. Signed-off-by: Helen Koike Reviewed-by: David Heidelberg --- v2: - fix typo in the commit message - re-add kms_cursor_legacy@flip-vs-cursor-toggle back to msm-sdm845-flakes.txt - removed kms_async_flips@crc,Fail from i915-cml-fails.txt v3: - add kms_rmfb@close-fd,Fail to amdgpu-stoney-fails.txt - add kms_async_flips@crc to i915-kbl-flakes.txt Signed-off-by: Helen Koike --- .../gpu/drm/ci/xfails/amdgpu-stoney-fails.txt | 12 +- .../drm/ci/xfails/amdgpu-stoney-flakes.txt| 20 - drivers/gpu/drm/ci/xfails/i915-amly-fails.txt | 9 .../gpu/drm/ci/xfails/i915-amly-flakes.txt| 32 --- drivers/gpu/drm/ci/xfails/i915-apl-fails.txt | 11 - drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt | 1 - drivers/gpu/drm/ci/xfails/i915-cml-fails.txt | 14 ++- drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt | 38 - drivers/gpu/drm/ci/xfails/i915-glk-fails.txt | 17 drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt | 41 --- drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt | 7 drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt | 25 --- drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt | 1 - drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt | 5 --- drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt | 1 - .../drm/ci/xfails/mediatek-mt8173-flakes.txt | 0 .../drm/ci/xfails/mediatek-mt8183-fails.txt | 5 ++- .../drm/ci/xfails/mediatek-mt8183-flakes.txt | 14 --- .../gpu/drm/ci/xfails/meson-g12b-fails.txt| 14 --- .../gpu/drm/ci/xfails/meson-g12b-flakes.txt | 4 -- .../gpu/drm/ci/xfails/msm-apq8016-flakes.txt | 4 -- .../gpu/drm/ci/xfails/msm-apq8096-fails.txt | 2 + .../gpu/drm/ci/xfails/msm-apq8096-flakes.txt | 4 -- .../gpu/drm/ci/xfails/msm-sc7180-fails.txt| 15 --- .../gpu/drm/ci/xfails/msm-sc7180-flakes.txt | 24 +++ .../gpu/drm/ci/xfails/msm-sc7180-skips.txt| 18 +--- .../gpu/drm/ci/xfails/msm-sdm845-fails.txt| 9 +--- .../gpu/drm/ci/xfails/msm-sdm845-flakes.txt | 19 + .../drm/ci/xfails/rockchip-rk3288-fails.txt | 6 +++ .../drm/ci/xfails/rockchip-rk3288-flakes.txt | 9 .../drm/ci/xfails/rockchip-rk3399-fails.txt | 40 +- .../drm/ci/xfails/rockchip-rk3399-flakes.txt | 28 +++-- .../drm/ci/xfails/virtio_gpu-none-flakes.txt | 0 33 files changed, 162 insertions(+), 287 deletions(-) delete mode 100644 drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8173-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8183-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/meson-g12b-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8016-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8096-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3288-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/virtio_gpu-none-flakes.txt diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt index bd9392536e7c..ea87dc46bc2b 100644 --- a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt +++ b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt @@ -1,8 +1,14 @@ kms_addfb_basic@bad-pitch-65536,Fail kms_addfb_basic@bo-too-small,Fail +kms_addfb_basic@too-high,Fail +kms_async_flips@async-flip-with-page-flip-events,Fail +kms_async_flips@crc,Fail kms_async_flips@invalid-async-flip,Fail -kms_atomic@plane-immutable-zpos,Fail +kms_atomic_transition@plane-all-modeset-transition-internal-panels,Fail +kms_atomic_transition@plane-all-transition,Fail +kms_atomic_transition@plane-all-transition-nonblocking,Fail kms_atomic_transition@plane-toggle-modeset-transition,Fail +kms_atomic_transition@plane-use-after-nonblocking-unbind,Fail kms_bw@linear-tiling-1-displays-2560x1440p,Fail kms_bw@linear-tiling-1-displays-3840x2160p,Fail kms_bw@linear-tiling-2-displays-3840x2160p,Fail @@ -11,9 +17,11 @@ kms_color@degamma,Fail kms_cursor_crc@cursor-size-change,Fail kms_cursor_crc@pipe-A-cursor-size-change,Fail kms_cursor_crc@pipe-B-cursor-size-change,Fail -kms_cursor_legacy@forked-move,Fail +kms_flip@flip-vs-modeset-vs-hang,Fail +kms_flip@flip-vs-panning-vs-hang,Fail kms_hdr@bpc-switch,Fail kms_hdr@bpc-switch-dpms,Fail +kms_plane@pixel-format,Fail kms_plane_multiple@atomic-pipe-A-tiling-none,Fail kms_rmfb@close-fd,Fail
[PATCH v2 5/9] drm/ci: clean up xfails (specially flakes list)
Since the script that collected the list of the expectation files was bogus and placing test to the flakes list incorrectly, restart the expectation files with the correct script. This reduces a lot the number of tests in the flakes list. Signed-off-by: Helen Koike Reviewed-by: David Heidelberg --- v2: - fix typo in the commit message - re-add kms_cursor_legacy@flip-vs-cursor-toggle back to msm-sdm845-flakes.txt - removed kms_async_flips@crc,Fail from i915-cml-fails.txt --- .../gpu/drm/ci/xfails/amdgpu-stoney-fails.txt | 13 -- .../drm/ci/xfails/amdgpu-stoney-flakes.txt| 20 - drivers/gpu/drm/ci/xfails/i915-amly-fails.txt | 9 .../gpu/drm/ci/xfails/i915-amly-flakes.txt| 32 --- drivers/gpu/drm/ci/xfails/i915-apl-fails.txt | 11 - drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt | 1 - drivers/gpu/drm/ci/xfails/i915-cml-fails.txt | 14 ++- drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt | 38 - drivers/gpu/drm/ci/xfails/i915-glk-fails.txt | 17 drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt | 41 --- drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt | 7 drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt | 26 drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt | 1 - drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt | 5 --- drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt | 1 - .../drm/ci/xfails/mediatek-mt8173-flakes.txt | 0 .../drm/ci/xfails/mediatek-mt8183-fails.txt | 5 ++- .../drm/ci/xfails/mediatek-mt8183-flakes.txt | 14 --- .../gpu/drm/ci/xfails/meson-g12b-fails.txt| 14 --- .../gpu/drm/ci/xfails/meson-g12b-flakes.txt | 4 -- .../gpu/drm/ci/xfails/msm-apq8016-flakes.txt | 4 -- .../gpu/drm/ci/xfails/msm-apq8096-fails.txt | 2 + .../gpu/drm/ci/xfails/msm-apq8096-flakes.txt | 4 -- .../gpu/drm/ci/xfails/msm-sc7180-fails.txt| 15 --- .../gpu/drm/ci/xfails/msm-sc7180-flakes.txt | 24 +++ .../gpu/drm/ci/xfails/msm-sc7180-skips.txt| 18 +--- .../gpu/drm/ci/xfails/msm-sdm845-fails.txt| 9 +--- .../gpu/drm/ci/xfails/msm-sdm845-flakes.txt | 19 + .../drm/ci/xfails/rockchip-rk3288-fails.txt | 6 +++ .../drm/ci/xfails/rockchip-rk3288-flakes.txt | 9 .../drm/ci/xfails/rockchip-rk3399-fails.txt | 40 +- .../drm/ci/xfails/rockchip-rk3399-flakes.txt | 28 +++-- .../drm/ci/xfails/virtio_gpu-none-flakes.txt | 0 33 files changed, 162 insertions(+), 289 deletions(-) delete mode 100644 drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8173-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8183-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/meson-g12b-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8016-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8096-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3288-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/virtio_gpu-none-flakes.txt diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt index bd9392536e7c..aa57aaa8869b 100644 --- a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt +++ b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt @@ -1,8 +1,14 @@ kms_addfb_basic@bad-pitch-65536,Fail kms_addfb_basic@bo-too-small,Fail +kms_addfb_basic@too-high,Fail +kms_async_flips@async-flip-with-page-flip-events,Fail +kms_async_flips@crc,Fail kms_async_flips@invalid-async-flip,Fail -kms_atomic@plane-immutable-zpos,Fail +kms_atomic_transition@plane-all-modeset-transition-internal-panels,Fail +kms_atomic_transition@plane-all-transition,Fail +kms_atomic_transition@plane-all-transition-nonblocking,Fail kms_atomic_transition@plane-toggle-modeset-transition,Fail +kms_atomic_transition@plane-use-after-nonblocking-unbind,Fail kms_bw@linear-tiling-1-displays-2560x1440p,Fail kms_bw@linear-tiling-1-displays-3840x2160p,Fail kms_bw@linear-tiling-2-displays-3840x2160p,Fail @@ -11,9 +17,10 @@ kms_color@degamma,Fail kms_cursor_crc@cursor-size-change,Fail kms_cursor_crc@pipe-A-cursor-size-change,Fail kms_cursor_crc@pipe-B-cursor-size-change,Fail -kms_cursor_legacy@forked-move,Fail +kms_flip@flip-vs-modeset-vs-hang,Fail +kms_flip@flip-vs-panning-vs-hang,Fail kms_hdr@bpc-switch,Fail kms_hdr@bpc-switch-dpms,Fail +kms_plane@pixel-format,Fail kms_plane_multiple@atomic-pipe-A-tiling-none,Fail -kms_rmfb@close-fd,Fail kms_rotation_crc@primary-rotation-180,Fail diff --git a/drivers/gpu/drm/ci/xfails
Re: [PATCH v7 0/6] drm: Add support for atomic async page-flip
On 17/10/2023 06:28, André Almeida wrote: Hi, This work from me and Simon adds support for DRM_MODE_PAGE_FLIP_ASYNC through the atomic API. This feature is already available via the legacy API. The use case is to be able to present a new frame immediately (or as soon as possible), even if after missing a vblank. This might result in tearing, but it's useful when a high framerate is desired, such as for gaming. Differently from earlier versions, this one refuses to flip if any prop changes for async flips. The idea is that the fast path of immediate page flips doesn't play well with modeset changes, so only the fb_id can be changed. Thanks, André - User-space patch: https://github.com/Plagman/gamescope/pull/595 - IGT tests: https://gitlab.freedesktop.org/andrealmeid/igt-gpu-tools/-/tree/atomic_async_page_flip Changes from v6: - Dropped the exception to allow MODE_ID changes (Simon) - Clarify what happens when flipping with the same FB_ID (Pekka) v6: https://lore.kernel.org/dri-devel/20230815185710.159779-1-andrealm...@igalia.com/ Changes from v5: - Add note in the docs that not every redundant attribute will result in no-op, some might cause oversynchronization issues. v5: https://lore.kernel.org/dri-devel/20230707224059.305474-1-andrealm...@igalia.com/ Changes from v4: - Documentation rewrote by Pekka Paalanen v4: https://lore.kernel.org/dri-devel/20230701020917.143394-1-andrealm...@igalia.com/ Changes from v3: - Add new patch to reject prop changes - Add a documentation clarifying the KMS atomic state set v3: https://lore.kernel.org/dri-devel/20220929184307.258331-1-cont...@emersion.fr/ André Almeida (1): drm: Refuse to async flip with atomic prop changes Pekka Paalanen (1): drm/doc: Define KMS atomic state set Simon Ser (4): drm: allow DRM_MODE_PAGE_FLIP_ASYNC for atomic commits drm: introduce DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP drm: introduce drm_mode_config.atomic_async_page_flip_not_supported amd/display: indicate support for atomic async page-flips on DC Documentation/gpu/drm-uapi.rst| 47 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 1 + drivers/gpu/drm/drm_atomic_uapi.c | 75 +-- drivers/gpu/drm/drm_crtc_internal.h | 2 +- drivers/gpu/drm/drm_ioctl.c | 5 ++ drivers/gpu/drm/drm_mode_object.c | 2 +- .../drm/i915/display/intel_display_driver.c | 1 + drivers/gpu/drm/nouveau/nouveau_display.c | 1 + include/drm/drm_mode_config.h | 11 +++ include/uapi/drm/drm.h| 10 ++- include/uapi/drm/drm_mode.h | 9 +++ 11 files changed, 155 insertions(+), 9 deletions(-) Hello o/ Maybe it is not related (since there are a few years I don't work on this) but this reminds me of https://yhbt.net/lore/all/20190412125827.5877-1-helen.ko...@collabora.com/T/ (just sharing for the sake of communication flow) Regards, Helen
[PATCH 5/9] drm/ci: clean up xfails (specially flakes list)
Since the script that collected the list of the expectation files was bogus and placing test to the flakes list incorrectly, restart the expectation files with the correct script. This reduces a lot the number of tests in the flakes list. Signed-off-by: Helen Koike --- .../gpu/drm/ci/xfails/amdgpu-stoney-fails.txt | 13 -- .../drm/ci/xfails/amdgpu-stoney-flakes.txt| 20 - drivers/gpu/drm/ci/xfails/i915-amly-fails.txt | 9 .../gpu/drm/ci/xfails/i915-amly-flakes.txt| 32 --- drivers/gpu/drm/ci/xfails/i915-apl-fails.txt | 11 - drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt | 1 - drivers/gpu/drm/ci/xfails/i915-cml-fails.txt | 15 ++- drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt | 38 - drivers/gpu/drm/ci/xfails/i915-glk-fails.txt | 17 drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt | 41 --- drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt | 7 drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt | 26 drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt | 1 - drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt | 5 --- drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt | 1 - .../drm/ci/xfails/mediatek-mt8173-flakes.txt | 0 .../drm/ci/xfails/mediatek-mt8183-fails.txt | 5 ++- .../drm/ci/xfails/mediatek-mt8183-flakes.txt | 14 --- .../gpu/drm/ci/xfails/meson-g12b-fails.txt| 14 --- .../gpu/drm/ci/xfails/meson-g12b-flakes.txt | 4 -- .../gpu/drm/ci/xfails/msm-apq8016-flakes.txt | 4 -- .../gpu/drm/ci/xfails/msm-apq8096-fails.txt | 2 + .../gpu/drm/ci/xfails/msm-apq8096-flakes.txt | 4 -- .../gpu/drm/ci/xfails/msm-sc7180-fails.txt| 15 --- .../gpu/drm/ci/xfails/msm-sc7180-flakes.txt | 24 +++ .../gpu/drm/ci/xfails/msm-sc7180-skips.txt| 18 +--- .../gpu/drm/ci/xfails/msm-sdm845-fails.txt| 9 +--- .../gpu/drm/ci/xfails/msm-sdm845-flakes.txt | 20 - .../drm/ci/xfails/rockchip-rk3288-fails.txt | 6 +++ .../drm/ci/xfails/rockchip-rk3288-flakes.txt | 9 .../drm/ci/xfails/rockchip-rk3399-fails.txt | 40 +- .../drm/ci/xfails/rockchip-rk3399-flakes.txt | 28 +++-- .../drm/ci/xfails/virtio_gpu-none-flakes.txt | 0 33 files changed, 163 insertions(+), 290 deletions(-) delete mode 100644 drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8173-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8183-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/meson-g12b-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8016-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8096-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3288-flakes.txt delete mode 100644 drivers/gpu/drm/ci/xfails/virtio_gpu-none-flakes.txt diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt index bd9392536e7c..aa57aaa8869b 100644 --- a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt +++ b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt @@ -1,8 +1,14 @@ kms_addfb_basic@bad-pitch-65536,Fail kms_addfb_basic@bo-too-small,Fail +kms_addfb_basic@too-high,Fail +kms_async_flips@async-flip-with-page-flip-events,Fail +kms_async_flips@crc,Fail kms_async_flips@invalid-async-flip,Fail -kms_atomic@plane-immutable-zpos,Fail +kms_atomic_transition@plane-all-modeset-transition-internal-panels,Fail +kms_atomic_transition@plane-all-transition,Fail +kms_atomic_transition@plane-all-transition-nonblocking,Fail kms_atomic_transition@plane-toggle-modeset-transition,Fail +kms_atomic_transition@plane-use-after-nonblocking-unbind,Fail kms_bw@linear-tiling-1-displays-2560x1440p,Fail kms_bw@linear-tiling-1-displays-3840x2160p,Fail kms_bw@linear-tiling-2-displays-3840x2160p,Fail @@ -11,9 +17,10 @@ kms_color@degamma,Fail kms_cursor_crc@cursor-size-change,Fail kms_cursor_crc@pipe-A-cursor-size-change,Fail kms_cursor_crc@pipe-B-cursor-size-change,Fail -kms_cursor_legacy@forked-move,Fail +kms_flip@flip-vs-modeset-vs-hang,Fail +kms_flip@flip-vs-panning-vs-hang,Fail kms_hdr@bpc-switch,Fail kms_hdr@bpc-switch-dpms,Fail +kms_plane@pixel-format,Fail kms_plane_multiple@atomic-pipe-A-tiling-none,Fail -kms_rmfb@close-fd,Fail kms_rotation_crc@primary-rotation-180,Fail diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt index f8defa0f9e67..6faf75e667d3 100644 --- a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt +++ b/drivers/gpu/drm/ci/xfails/amdgpu
[PATCH] MAINTAINERS: drm/ci: add entries for xfail files
DRM CI keeps track of which tests are failing, flaking or being skipped by the ci in the expectations files. Add entries for those files to the corresponding driver maintainer, so they can be notified when they change. Signed-off-by: Helen Koike --- For reference: https://www.mail-archive.com/dri-devel@lists.freedesktop.org/msg463165.html MAINTAINERS | 7 +++ 1 file changed, 7 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 90f13281d297..740a2ce2689c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -6614,6 +6614,7 @@ S:Maintained B: https://gitlab.freedesktop.org/drm/msm/-/issues T: git https://gitlab.freedesktop.org/drm/msm.git F: Documentation/devicetree/bindings/display/msm/ +F: drivers/gpu/drm/ci/xfails/msm* F: drivers/gpu/drm/msm/ F: include/uapi/drm/msm_drm.h @@ -6886,6 +6887,7 @@ T:git git://anongit.freedesktop.org/drm/drm-misc F: Documentation/devicetree/bindings/display/amlogic,meson-dw-hdmi.yaml F: Documentation/devicetree/bindings/display/amlogic,meson-vpu.yaml F: Documentation/gpu/meson.rst +F: drivers/gpu/drm/ci/xfails/meson* F: drivers/gpu/drm/meson/ DRM DRIVERS FOR ATMEL HLCDC @@ -6994,6 +6996,7 @@ L:dri-de...@lists.freedesktop.org L: linux-media...@lists.infradead.org (moderated for non-subscribers) S: Supported F: Documentation/devicetree/bindings/display/mediatek/ +F: drivers/gpu/drm/ci/xfails/mediatek* F: drivers/gpu/drm/mediatek/ F: drivers/phy/mediatek/phy-mtk-dp.c F: drivers/phy/mediatek/phy-mtk-hdmi* @@ -7034,6 +7037,7 @@ L:dri-de...@lists.freedesktop.org S: Maintained T: git git://anongit.freedesktop.org/drm/drm-misc F: Documentation/devicetree/bindings/display/rockchip/ +F: drivers/gpu/drm/ci/xfails/rockchip* F: drivers/gpu/drm/rockchip/ DRM DRIVERS FOR STI @@ -10476,6 +10480,7 @@ C: irc://irc.oftc.net/intel-gfx T: git git://anongit.freedesktop.org/drm-intel F: Documentation/ABI/testing/sysfs-driver-intel-i915-hwmon F: Documentation/gpu/i915.rst +F: drivers/gpu/drm/ci/xfails/i915* F: drivers/gpu/drm/i915/ F: include/drm/i915* F: include/uapi/drm/i915_drm.h @@ -17862,6 +17867,7 @@ C: irc://irc.oftc.net/radeon T: git https://gitlab.freedesktop.org/agd5f/linux.git F: Documentation/gpu/amdgpu/ F: drivers/gpu/drm/amd/ +F: drivers/gpu/drm/ci/xfails/amd* F: drivers/gpu/drm/radeon/ F: include/uapi/drm/amdgpu_drm.h F: include/uapi/drm/radeon_drm.h @@ -22846,6 +22852,7 @@ L: dri-de...@lists.freedesktop.org L: virtualizat...@lists.linux-foundation.org S: Maintained T: git git://anongit.freedesktop.org/drm/drm-misc +F: drivers/gpu/drm/ci/xfails/virtio* F: drivers/gpu/drm/virtio/ F: include/uapi/linux/virtio_gpu.h -- 2.34.1
Re: [PATCH v2 0/2] Merge all debug module parameters
Hi André, Thanks for your patches. On 30/08/2023 19:08, André Almeida wrote: As suggested by Christian at [0], this patchset merges all debug modules parameters and creates a new one for disabling soft recovery: Maybe we can overload the amdgpu_gpu_recovery module option with this. Or even better merge all the developer module parameter into a amdgpu_debug option. This way it should be pretty obvious that this isn't meant to be used by someone who doesn't know how to use it. [0] https://lore.kernel.org/dri-devel/55f69184-1aa2-55d6-4a10-1560d75c7...@amd.com/ Would you mind to test your patchset with drm-ci ? There is an amdgpu test there and I would love to get your feedback of the ci. You basically just need to apply the ci patch which is available on https://cgit.freedesktop.org/drm/drm/commit/?h=topic/drm-ci=0119c894ab0dc468bcb03f28063239c0a4cf970f There are instruction on the docs, but in short: to configure it, you push your branch to gitlab.freedesktop.org, go to the settings and change the CI/CD configuration file from .gitlab-ci.yml to drivers/gpu/drm/ci/gitlab-ci.yml, and you can trigger a pipeline on your branch to get tests running. Thank you! Helen Changelog: - drop old module params - use BIT() macros - replace global var with adev-> vars v1: https://lore.kernel.org/lkml/20230824162505.173399-1-andrealm...@igalia.com/ André Almeida (2): drm/amdgpu: Merge debug module parameters drm/amdgpu: Create an option to disable soft recovery drivers/gpu/drm/amd/amdgpu/amdgpu.h | 5 +++ drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 54 +++- drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c | 6 ++- drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 2 +- drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 2 +- drivers/gpu/drm/amd/amdkfd/kfd_crat.c| 2 +- drivers/gpu/drm/amd/include/amd_shared.h | 9 9 files changed, 58 insertions(+), 26 deletions(-)
Re: [PATCH v3 0/7] GPU workload hints for better performance
On 28/08/2023 17:14, Yadav, Arvind wrote: On 8/28/2023 9:13 PM, Helen Mae Koike Fornazier wrote: On Monday, August 28, 2023 09:26 -03, Arvind Yadav wrote: AMDGPU SOCs supports dynamic workload based power profiles, which can provide fine-tuned performance for a particular type of workload. This patch series adds an interface to set/reset these power profiles based on the submitted job. The driver can dynamically switch the power profiles based on submitted job. This can optimize the power performance when the particular workload is on. Hi Arvind, Would you mind to test your patchset with drm-ci ? There is a amdgpu test there and I would love to get your feedback of the ci. You basically just need to apply the ci patch which is available on https://cgit.freedesktop.org/drm/drm/log/?h=topic/drm-ci There are instruction on the docs, but in short: to configure it, you push your branch to gitlab.freedesktop.org, go to the settings and change the CI/CD configuration file from .gitlab-ci.yml to drivers/gpu/drm/ci/gitlab-ci.yml, and you can trigger a pipeline on your branch to get tests running. (by the time of this writing, gitlab.fdo is under maintenance but should be up soonish). Hi Helen, I tried the steps as mentioned by you but looks like something is missing and build itself is failing. https://gitlab.freedesktop.org/ArvindYadav/drm-next/-/commits/smu_workload Thanks for your feedback! You need to apply this patch https://gitlab.freedesktop.org/ArvindYadav/drm-next/-/commit/cc6dcff192d07f9fe82645fbc4213c97e872156b This patch adds the file drivers/gpu/drm/ci/gitlab-ci.yml for you. And you can drop the patch where gitlab added the ci template. I replied here too https://gitlab.freedesktop.org/ArvindYadav/drm-next/-/commit/cc6dcff192d07f9fe82645fbc4213c97e872156b Could you try again with that patch? Thanks a lot! Helen Regards, ~Arvind Thank you! Helen v2: - Splitting workload_profile_set and workload_profile_put into two separate patches. - Addressed review comment. - Added new suspend function. - Added patch to switches the GPU workload mode for KFD. v3: - Addressed all review comment. - Changed the function name from *_set() to *_get(). - Now clearing all the profile in work handler. - Added *_clear_all function to clear all the power profile. Arvind Yadav (7): drm/amdgpu: Added init/fini functions for workload drm/amdgpu: Add new function to set GPU power profile drm/amdgpu: Add new function to put GPU power profile drm/amdgpu: Add suspend function to clear the GPU power profile. drm/amdgpu: Set/Reset GPU workload profile drm/amdgpu: switch workload context to/from compute Revert "drm/amd/amdgpu: switch on/off vcn power profile mode" drivers/gpu/drm/amd/amdgpu/Makefile | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 3 + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 8 +- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 6 + drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 5 + drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 14 +- drivers/gpu/drm/amd/amdgpu/amdgpu_workload.c | 226 ++ drivers/gpu/drm/amd/include/amdgpu_workload.h | 61 + 8 files changed, 309 insertions(+), 16 deletions(-) create mode 100644 drivers/gpu/drm/amd/amdgpu/amdgpu_workload.c create mode 100644 drivers/gpu/drm/amd/include/amdgpu_workload.h -- 2.34.1
Re: [PATCH v4 2/5] drm/amd: fix fb references in async update
On 6/3/19 1:56 PM, Helen Koike wrote: > Async update callbacks are expected to set the old_fb in the new_state > so prepare/cleanup framebuffers are balanced. > > Calling drm_atomic_set_fb_for_plane() (which gets a reference of the new > fb and put the old fb) is not required, as it's taken care by > drm_mode_cursor_universal() when calling drm_atomic_helper_update_plane(). > > Suggested-by: Boris Brezillon > Signed-off-by: Helen Koike > Reviewed-by: Nicholas Kazlauskas Cc: # v4.20+ Fixes: 674e78acae0d ("drm/amd/display: Add fast path for cursor plane updates") > > --- > > Changes in v4: None > Changes in v3: None > Changes in v2: > - added reviewed-by tag > > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > index 443b13ec268d..40624b2c630e 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > @@ -4347,8 +4347,7 @@ static void dm_plane_atomic_async_update(struct > drm_plane *plane, > struct drm_plane_state *old_state = > drm_atomic_get_old_plane_state(new_state->state, plane); > > - if (plane->state->fb != new_state->fb) > - drm_atomic_set_fb_for_plane(plane->state, new_state->fb); > + swap(plane->state->fb, new_state->fb); > > plane->state->src_x = new_state->src_x; > plane->state->src_y = new_state->src_y; >
[PATCH v4 5/5] drm: don't block fb changes for async plane updates
In the case of a normal sync update, the preparation of framebuffers (be it calling drm_atomic_helper_prepare_planes() or doing setups with drm_framebuffer_get()) are performed in the new_state and the respective cleanups are performed in the old_state. In the case of async updates, the preparation is also done in the new_state but the cleanups are done in the new_state (because updates are performed in place, i.e. in the current state). The current code blocks async udpates when the fb is changed, turning async updates into sync updates, slowing down cursor updates and introducing regressions in igt tests with errors of type: "CRITICAL: completed 97 cursor updated in a period of 30 flips, we expect to complete approximately 15360 updates, with the threshold set at 7680" Fb changes in async updates were prevented to avoid the following scenario: - Async update, oldfb = NULL, newfb = fb1, prepare fb1, cleanup fb1 - Async update, oldfb = fb1, newfb = fb2, prepare fb2, cleanup fb2 - Non-async commit, oldfb = fb2, newfb = fb1, prepare fb1, cleanup fb2 (wrong) Where we have a single call to prepare fb2 but double cleanup call to fb2. To solve the above problems, instead of blocking async fb changes, we place the old framebuffer in the new_state object, so when the code performs cleanups in the new_state it will cleanup the old_fb and we will have the following scenario instead: - Async update, oldfb = NULL, newfb = fb1, prepare fb1, no cleanup - Async update, oldfb = fb1, newfb = fb2, prepare fb2, cleanup fb1 - Non-async commit, oldfb = fb2, newfb = fb1, prepare fb1, cleanup fb2 Where calls to prepare/cleanup are balanced. Cc: # v4.14+ Fixes: 25dc194b34dd ("drm: Block fb changes for async plane updates") Suggested-by: Boris Brezillon Signed-off-by: Helen Koike Reviewed-by: Boris Brezillon Reviewed-by: Nicholas Kazlauskas --- Changes in v4: - update docs in atomic_async_update callback Changes in v3: - Add Reviewed-by tags - Add TODO in drm_atomic_helper_async_commit() Changes in v2: - Change the order of the patch in the series, add this as the last one. - Add documentation - s/ballanced/balanced drivers/gpu/drm/drm_atomic_helper.c | 22 -- include/drm/drm_modeset_helper_vtables.h | 8 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c index acf993cb8e52..ac81d8440b40 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -1610,15 +1610,6 @@ int drm_atomic_helper_async_check(struct drm_device *dev, old_plane_state->crtc != new_plane_state->crtc) return -EINVAL; - /* -* FIXME: Since prepare_fb and cleanup_fb are always called on -* the new_plane_state for async updates we need to block framebuffer -* changes. This prevents use of a fb that's been cleaned up and -* double cleanups from occuring. -*/ - if (old_plane_state->fb != new_plane_state->fb) - return -EINVAL; - funcs = plane->helper_private; if (!funcs->atomic_async_update) return -EINVAL; @@ -1649,6 +1640,8 @@ EXPORT_SYMBOL(drm_atomic_helper_async_check); * drm_atomic_async_check() succeeds. Async commits are not supposed to swap * the states like normal sync commits, but just do in-place changes on the * current state. + * + * TODO: Implement full swap instead of doing in-place changes. */ void drm_atomic_helper_async_commit(struct drm_device *dev, struct drm_atomic_state *state) @@ -1659,6 +1652,9 @@ void drm_atomic_helper_async_commit(struct drm_device *dev, int i; for_each_new_plane_in_state(state, plane, plane_state, i) { + struct drm_framebuffer *new_fb = plane_state->fb; + struct drm_framebuffer *old_fb = plane->state->fb; + funcs = plane->helper_private; funcs->atomic_async_update(plane, plane_state); @@ -1667,11 +1663,17 @@ void drm_atomic_helper_async_commit(struct drm_device *dev, * plane->state in-place, make sure at least common * properties have been properly updated. */ - WARN_ON_ONCE(plane->state->fb != plane_state->fb); + WARN_ON_ONCE(plane->state->fb != new_fb); WARN_ON_ONCE(plane->state->crtc_x != plane_state->crtc_x); WARN_ON_ONCE(plane->state->crtc_y != plane_state->crtc_y); WARN_ON_ONCE(plane->state->src_x != plane_state->src_x); WARN_ON_ONCE(plane->state->src_y != plane_state->src_y); + + /* +* Make sure the FBs have been swapped so that cleanups in the +* new_state performs a cleanup in the old F
[PATCH v4 2/5] drm/amd: fix fb references in async update
Async update callbacks are expected to set the old_fb in the new_state so prepare/cleanup framebuffers are balanced. Calling drm_atomic_set_fb_for_plane() (which gets a reference of the new fb and put the old fb) is not required, as it's taken care by drm_mode_cursor_universal() when calling drm_atomic_helper_update_plane(). Suggested-by: Boris Brezillon Signed-off-by: Helen Koike Reviewed-by: Nicholas Kazlauskas --- Changes in v4: None Changes in v3: None Changes in v2: - added reviewed-by tag drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 443b13ec268d..40624b2c630e 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -4347,8 +4347,7 @@ static void dm_plane_atomic_async_update(struct drm_plane *plane, struct drm_plane_state *old_state = drm_atomic_get_old_plane_state(new_state->state, plane); - if (plane->state->fb != new_state->fb) - drm_atomic_set_fb_for_plane(plane->state, new_state->fb); + swap(plane->state->fb, new_state->fb); plane->state->src_x = new_state->src_x; plane->state->src_y = new_state->src_y; -- 2.20.1
[PATCH v4 0/5] drm: Fix fb changes for async updates
Hello, I'm re-sending this series with the acked by in the msm patch and updating the docs in the last patch, the rest is the same. v3 link: https://patchwork.kernel.org/project/dri-devel/list/?series=91353 Thanks! Helen Changes in v4: - add acked by tag - update docs in atomic_async_update callback Changes in v3: - use swap() to swap old and new framebuffers in async_update - get the reference to old_fb and set the worker after vop_plane_atomic_update() - add a FIXME tag for when we have multiple fbs to be released when vblank happens. - update commit message - Add Reviewed-by tags - Add TODO in drm_atomic_helper_async_commit() Changes in v2: - added reviewed-by tag - update CC stable and Fixes tag - Added reviewed-by tag - updated CC stable and Fixes tag - Change the order of the patch in the series, add this as the last one. - Add documentation - s/ballanced/balanced Helen Koike (5): drm/rockchip: fix fb references in async update drm/amd: fix fb references in async update drm/msm: fix fb references in async update drm/vc4: fix fb references in async update drm: don't block fb changes for async plane updates .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 +- drivers/gpu/drm/drm_atomic_helper.c | 22 drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c| 4 ++ drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 51 ++- drivers/gpu/drm/vc4/vc4_plane.c | 2 +- include/drm/drm_modeset_helper_vtables.h | 8 +++ 6 files changed, 52 insertions(+), 38 deletions(-) -- 2.20.1 ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
Re: [PATCH v3 5/5] drm: don't block fb changes for async plane updates
On 5/7/19 5:18 PM, Sean Paul wrote: > On Wed, Mar 13, 2019 at 09:20:26PM -0300, Helen Koike wrote: >> In the case of a normal sync update, the preparation of framebuffers (be >> it calling drm_atomic_helper_prepare_planes() or doing setups with >> drm_framebuffer_get()) are performed in the new_state and the respective >> cleanups are performed in the old_state. >> >> In the case of async updates, the preparation is also done in the >> new_state but the cleanups are done in the new_state (because updates >> are performed in place, i.e. in the current state). >> >> The current code blocks async udpates when the fb is changed, turning >> async updates into sync updates, slowing down cursor updates and >> introducing regressions in igt tests with errors of type: >> >> "CRITICAL: completed 97 cursor updated in a period of 30 flips, we >> expect to complete approximately 15360 updates, with the threshold set >> at 7680" >> >> Fb changes in async updates were prevented to avoid the following scenario: >> >> - Async update, oldfb = NULL, newfb = fb1, prepare fb1, cleanup fb1 >> - Async update, oldfb = fb1, newfb = fb2, prepare fb2, cleanup fb2 >> - Non-async commit, oldfb = fb2, newfb = fb1, prepare fb1, cleanup fb2 >> (wrong) >> Where we have a single call to prepare fb2 but double cleanup call to fb2. >> >> To solve the above problems, instead of blocking async fb changes, we >> place the old framebuffer in the new_state object, so when the code >> performs cleanups in the new_state it will cleanup the old_fb and we >> will have the following scenario instead: >> >> - Async update, oldfb = NULL, newfb = fb1, prepare fb1, no cleanup >> - Async update, oldfb = fb1, newfb = fb2, prepare fb2, cleanup fb1 >> - Non-async commit, oldfb = fb2, newfb = fb1, prepare fb1, cleanup fb2 >> >> Where calls to prepare/cleanup are balanced. >> >> Cc: # v4.14+ > > I'm not convinced this should be cc: stable, seems more in the improvement > category than a bug fix. I'm cc'ing to stable because the commit mentioned below inserted a regression regarding the speed that cursors can be updated. > >> Fixes: 25dc194b34dd ("drm: Block fb changes for async plane updates") >> Suggested-by: Boris Brezillon >> Signed-off-by: Helen Koike >> Reviewed-by: Boris Brezillon >> Reviewed-by: Nicholas Kazlauskas >> >> --- >> Hello, >> >> I added a TODO in drm_atomic_helper_async_commit() regarding doing a >> full state swap(), Boris and Nicholas, let me know if this is ok and if >> I can keep your Reviewed-by tags) >> >> As mentioned in the cover letter, I tested in almost all platforms with >> igt plane_cursor_legacy and kms_cursor_legacy and I didn't see any >> regressions. But I couldn't test on MSM and AMD because I don't have >> the hardware I would appreciate if anyone could help me testing those. >> >> Thanks! >> Helen >> >> Changes in v3: >> - Add Reviewed-by tags >> - Add TODO in drm_atomic_helper_async_commit() >> >> Changes in v2: >> - Change the order of the patch in the series, add this as the last one. >> - Add documentation >> - s/ballanced/balanced >> >> drivers/gpu/drm/drm_atomic_helper.c | 22 -- >> include/drm/drm_modeset_helper_vtables.h | 5 + >> 2 files changed, 17 insertions(+), 10 deletions(-) >> >> diff --git a/drivers/gpu/drm/drm_atomic_helper.c >> b/drivers/gpu/drm/drm_atomic_helper.c >> index 2453678d1186..de5812c362b5 100644 >> --- a/drivers/gpu/drm/drm_atomic_helper.c >> +++ b/drivers/gpu/drm/drm_atomic_helper.c >> @@ -1608,15 +1608,6 @@ int drm_atomic_helper_async_check(struct drm_device >> *dev, >> old_plane_state->crtc != new_plane_state->crtc) >> return -EINVAL; >> >> -/* >> - * FIXME: Since prepare_fb and cleanup_fb are always called on >> - * the new_plane_state for async updates we need to block framebuffer >> - * changes. This prevents use of a fb that's been cleaned up and >> - * double cleanups from occuring. >> - */ >> -if (old_plane_state->fb != new_plane_state->fb) >> -return -EINVAL; >> - >> funcs = plane->helper_private; >> if (!funcs->atomic_async_update) >> return -EINVAL; >> @@ -1647,6 +1638,8 @@ EXPORT_SYMBOL(drm_atomic_helper_async_check); >> * drm_atomic_async_check() succeeds. Async commits are not supposed to swap >> * the states like normal sy
Re: [PATCH v3 2/4] drm/atomic: rename async_{update,check} to amend_{update,check}
Hi Boris, On 4/12/19 10:49 AM, Boris Brezillon wrote: > Hi Helen, > > On Fri, 12 Apr 2019 09:58:25 -0300 > Helen Koike wrote: > >> Asynchronous update is the ability change the hw state at any time, not >> only during vblank. >> >> Amend mode is the ability to perform 1000 commits to be applied as soon >> as possible without waiting for 1000 vblanks. >> >> async updates can be seen as amend, but the opposite is not true. >> >> _plane_helper_funcs.atomic_async_{update,check}() was being used by >> drivers to implement amend and not async. So rename them to amend. >> >> Also improve docs explaining the difference. >> >> If asynchronous is required, normal page flip can be performed using >> DRM_MODE_PAGE_FLIP_ASYNC flag. >> >> Signed-off-by: Helen Koike >> >> --- >> Hello, >> >> I would like to officially clarify what async update means by adding it >> in the docs. >> Please correct me if I am wrong, but the current async_{update,check} >> callbacks are being used to do amend (the legacy cursor behavior), i.e. >> to allow 1000 updates without waiting for 1000 vblanks. > > Right now, the semantic of async update is driver dependent. Some > drivers will amend the last commit touching that plane (amend semantic), > others will update the plane buffer immediately which might cause > tearing (async semantic). In my pov, async updates holds the properties of an amend update, so all async updates we have are amend, but the opposite is not true. > >> >> So I would like to clarify this in the docs and rename the current >> callbacks to reflect this behaviour. > > I'm all for this clarification, but I don't think renaming the async > hooks is a good idea, since some drivers will not do real 'amend'. So, > you're changing the name, but it's still confusing :-). > > How about adding new hooks (and/or flags) for the AMEND case, and > keeping the async path untouched. We can then let drivers that > currently implement async as amend implement the amend hooks instead. > Once you've done that, you can hook that up to the legacy cursor update > path so that it first tries one then the other and finally falls back > to a sync update if none of ASYNC/AMEND is possible. I kinda did this (I re-introduced async in the last patch in the series). I know this order is confusing, but as rockchip doesn't implement true async, I would have to do a bunch of modifs at once to keep the commits consistent, but I can re-work on that if it makes things clearer. > >> >> I also see that for real async updates, the flag >> DRM_MODE_PAGE_FLIP_ASYNC can be used in a normal sync update (it is >> already being used by some drivers actually, in the atomic path, not only >> in the legacy page flip, at least is what I understood from >> amdgpu_dm_atomic_commit_tail() implementation). > > Yes, right now, async does not necessarily imply non-block, but > Daniel seemed to think that most users want non-block when they do an > async page flip, so maybe it should be clarified too. users could combine NONBLOCK flag with PAGE_FLIP_ASYNC, no? (we need to add code for it of course). Thanks Helen > > Regards, > > Boris > ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
Re: [PATCH RFC v3 4/4] drm/atomic: hook atomic_async_{check,update} with PAGE_FLIP_ASYNC flag
On 4/12/19 9:58 AM, Helen Koike wrote: > Add atomic_async_{check,update} hooks in drm_plane_helper_funcs. > These hooks are called when userspace requests asyncronous page flip in > the atomic api through the flag DRM_MODE_PAGE_FLIP_ASYNC. > > Update those hooks in the drivers that implement async functions, except > for amdgpu who handles the flag in the normal path, and rockchip who > doesn't support async page flip. > > Signed-off-by: Helen Koike > > --- > Hi, > > This patch is an attempt to expose the implementation that already exist > for true async page flips updates through atomic api when the > DRM_MODE_PAGE_FLIP_ASYNC is used. > > In this commit I'm re-introducing the atomic_async_{check,update} hooks. > I know it is a bit weird to remove them first and them re-add them, but > I did this in the last commit to avoid any state of inconsistency > between commits, as rockchip doesn't support async page flip and they were > being used as amend. > So I reverted to amend first and then re-introced async again > tied to the DRM_MODE_PAGE_FLIP_ASYNC flag (I also think this is easier > to read). > > To use async, it is required to have > dev->mode_config.async_page_flip = true; > but I see that only amdgpu and vc4 have this, so this patch won't take > effect on mdp5. > Nouveau and radeon also have this flag, but they don't implement the > async hooks yet. > > Please let me know what you think. > > Thanks > Helen > > Changes in v3: None > Changes in v2: None > Changes in v1: None > > .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 5 +++ > drivers/gpu/drm/drm_atomic_helper.c | 31 > drivers/gpu/drm/drm_atomic_uapi.c | 3 +- > drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c| 2 + > drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 4 ++ > drivers/gpu/drm/vc4/vc4_plane.c | 2 + > include/drm/drm_atomic.h | 2 + > include/drm/drm_atomic_helper.h | 9 +++-- > include/drm/drm_modeset_helper_vtables.h | 37 +++ > 9 files changed, 83 insertions(+), 12 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > index 711e7715e112..bb8a5f1997d6 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > @@ -3785,6 +3785,11 @@ static const struct drm_plane_helper_funcs > dm_plane_helper_funcs = { >*/ > .atomic_amend_check = dm_plane_atomic_async_check, > .atomic_amend_update = dm_plane_atomic_async_update > + /* > + * Note: amdgpu takes care of DRM_MODE_PAGE_FLIP_ASYNC flag in the > + * normal commit path, thus .atomic_async_check and .atomic_async_update > + * are not provided here. > + */ > }; > > /* > diff --git a/drivers/gpu/drm/drm_atomic_helper.c > b/drivers/gpu/drm/drm_atomic_helper.c > index 9b0df08836c3..bfcf88359de5 100644 > --- a/drivers/gpu/drm/drm_atomic_helper.c > +++ b/drivers/gpu/drm/drm_atomic_helper.c > @@ -947,16 +947,31 @@ int drm_atomic_helper_check(struct drm_device *dev, > if (ret) > return ret; > > + /* > + * If async page flip was explicitly requested, but it is not possible, > + * return error instead of falling back to a normal commit. > + * If async_amend_check returns -EOPNOTSUPP, it means > + * ->atomic_async_update hook doesn't exist, so fallback to normal > + * commit and let the driver handle DRM_MODE_PAGE_FLIP_ASYNC flag > + * through normal commit code path. > + */ > + if (state->async_update) { > + ret = drm_atomic_helper_async_amend_check(dev, state, false); > + state->async_update = !ret; > + return !ret || ret == -EOPNOTSUPP ? 0 : ret; > + } > + > /* >* If amend was explicitly requested, but it is not possible, >* return error instead of falling back to a normal commit. >*/ > if (state->amend_update) > - return drm_atomic_helper_amend_check(dev, state); > + return drm_atomic_helper_async_amend_check(dev, state, true); > > /* Legacy mode falls back to a normal commit if amend isn't possible. */ > if (state->legacy_cursor_update) > - state->amend_update = !drm_atomic_helper_amend_check(dev, > state); > + state->amend_update = > + !drm_atomic_helper_async_amend_check(dev, state, true); > > return 0; > } > @@ -1651,8 +1666,9 @@ static void commit_work(struct work_str
[PATCH v3 0/4] async vs amend - UAPI
Hi, This patch series is an attempt to clarify some concepts and how things are hooked inside drm. There are two main concepts that are similar but different and are causing some confusion: - Asynchronous update: is the ability change the hw state at any time, not only during vblank. - Amend update: is the ability to perform 1000 commits to be applied as soon as possible without waiting for 1000 vblanks. async updates can be seen as amend, but the opposite is not true. Please see documentation on the commit "drm/atomic: rename async_{update,check} to amend_{update,check}" for a more detailed explanation. To perform an async update, we already have the DRM_MODE_PAGE_FLIP_ASYNC flag in the atomic API and it is already being used by amdgpu in the atomic path. The first two commits clarifies these differences. The last two are RFCs that exposes new async and amend features to userspace. We introduce in this series the flag DRM_MODE_ATOMIC_AMEND to expose the amend feature to userspace. The main reasons to expose this through atomic api is to avoid mixing legacy with modern/atomic API (since their interactions are not well defined) and to be able to explicitly manage the cursor plane. And the last commit hooks the current async implementations with the DRM_MODE_PAGE_FLIP_ASYNC flag. Please, see the message in each commit and the documentation that was added for more details and let me know what you think. Thanks Helen Changes in v3: - rebase tree - rebase on top of renaming async_update to amend_update - improve documentation - don't fall back to a normal commit if amend is not possible when requested through the atomic api Changes in v2: - rebase tree - do not fall back to a non-async update if if there isn't any pending commit to amend Changes in v1: - https://patchwork.freedesktop.org/patch/243088/ - Only enable it if userspace requests it. - Only allow async update for cursor type planes. - Rename ASYNC_UPDATE for ATOMIC_AMEND. Helen Koike (4): drm/uapi: add documentation for atomic flags drm/atomic: rename async_{update,check} to amend_{update,check} drm/atomic: add ATOMIC_AMEND flag to the Atomic IOCTL. drm/atomic: hook atomic_async_{check,update} with PAGE_FLIP_ASYNC flag Documentation/gpu/drm-kms-helpers.rst | 8 +- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 15 +- drivers/gpu/drm/drm_atomic_helper.c | 157 ++ drivers/gpu/drm/drm_atomic_uapi.c | 9 + drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c| 6 + drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 12 +- drivers/gpu/drm/vc4/vc4_kms.c | 4 +- drivers/gpu/drm/vc4/vc4_plane.c | 6 + include/drm/drm_atomic.h | 4 +- include/drm/drm_atomic_helper.h | 9 +- include/drm/drm_modeset_helper_vtables.h | 69 ++-- include/uapi/drm/drm_mode.h | 27 ++- 12 files changed, 264 insertions(+), 62 deletions(-) -- 2.20.1 ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
[PATCH RFC v3 4/4] drm/atomic: hook atomic_async_{check, update} with PAGE_FLIP_ASYNC flag
Add atomic_async_{check,update} hooks in drm_plane_helper_funcs. These hooks are called when userspace requests asyncronous page flip in the atomic api through the flag DRM_MODE_PAGE_FLIP_ASYNC. Update those hooks in the drivers that implement async functions, except for amdgpu who handles the flag in the normal path, and rockchip who doesn't support async page flip. Signed-off-by: Helen Koike --- Hi, This patch is an attempt to expose the implementation that already exist for true async page flips updates through atomic api when the DRM_MODE_PAGE_FLIP_ASYNC is used. In this commit I'm re-introducing the atomic_async_{check,update} hooks. I know it is a bit weird to remove them first and them re-add them, but I did this in the last commit to avoid any state of inconsistency between commits, as rockchip doesn't support async page flip and they were being used as amend. So I reverted to amend first and then re-introced async again tied to the DRM_MODE_PAGE_FLIP_ASYNC flag (I also think this is easier to read). To use async, it is required to have dev->mode_config.async_page_flip = true; but I see that only amdgpu and vc4 have this, so this patch won't take effect on mdp5. Nouveau and radeon also have this flag, but they don't implement the async hooks yet. Please let me know what you think. Thanks Helen Changes in v3: None Changes in v2: None Changes in v1: None .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 5 +++ drivers/gpu/drm/drm_atomic_helper.c | 31 drivers/gpu/drm/drm_atomic_uapi.c | 3 +- drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c| 2 + drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 4 ++ drivers/gpu/drm/vc4/vc4_plane.c | 2 + include/drm/drm_atomic.h | 2 + include/drm/drm_atomic_helper.h | 9 +++-- include/drm/drm_modeset_helper_vtables.h | 37 +++ 9 files changed, 83 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 711e7715e112..bb8a5f1997d6 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -3785,6 +3785,11 @@ static const struct drm_plane_helper_funcs dm_plane_helper_funcs = { */ .atomic_amend_check = dm_plane_atomic_async_check, .atomic_amend_update = dm_plane_atomic_async_update + /* +* Note: amdgpu takes care of DRM_MODE_PAGE_FLIP_ASYNC flag in the +* normal commit path, thus .atomic_async_check and .atomic_async_update +* are not provided here. +*/ }; /* diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c index 9b0df08836c3..bfcf88359de5 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -947,16 +947,31 @@ int drm_atomic_helper_check(struct drm_device *dev, if (ret) return ret; + /* +* If async page flip was explicitly requested, but it is not possible, +* return error instead of falling back to a normal commit. +* If async_amend_check returns -EOPNOTSUPP, it means +* ->atomic_async_update hook doesn't exist, so fallback to normal +* commit and let the driver handle DRM_MODE_PAGE_FLIP_ASYNC flag +* through normal commit code path. +*/ + if (state->async_update) { + ret = drm_atomic_helper_async_amend_check(dev, state, false); + state->async_update = !ret; + return !ret || ret == -EOPNOTSUPP ? 0 : ret; + } + /* * If amend was explicitly requested, but it is not possible, * return error instead of falling back to a normal commit. */ if (state->amend_update) - return drm_atomic_helper_amend_check(dev, state); + return drm_atomic_helper_async_amend_check(dev, state, true); /* Legacy mode falls back to a normal commit if amend isn't possible. */ if (state->legacy_cursor_update) - state->amend_update = !drm_atomic_helper_amend_check(dev, state); + state->amend_update = + !drm_atomic_helper_async_amend_check(dev, state, true); return 0; } @@ -1651,8 +1666,9 @@ static void commit_work(struct work_struct *work) * if not. Note that error just mean it can't be committed in amend mode, if it * fails the commit should be treated like a normal commit. */ -int drm_atomic_helper_amend_check(struct drm_device *dev, - struct drm_atomic_state *state) +int drm_atomic_helper_async_amend_check(struct drm_device *dev, + struct drm_atomic_state *state, + bool amend) { struct drm_crtc *crtc; struct drm_crtc_state *crtc_s
[PATCH v3 2/4] drm/atomic: rename async_{update, check} to amend_{update, check}
Asynchronous update is the ability change the hw state at any time, not only during vblank. Amend mode is the ability to perform 1000 commits to be applied as soon as possible without waiting for 1000 vblanks. async updates can be seen as amend, but the opposite is not true. _plane_helper_funcs.atomic_async_{update,check}() was being used by drivers to implement amend and not async. So rename them to amend. Also improve docs explaining the difference. If asynchronous is required, normal page flip can be performed using DRM_MODE_PAGE_FLIP_ASYNC flag. Signed-off-by: Helen Koike --- Hello, I would like to officially clarify what async update means by adding it in the docs. Please correct me if I am wrong, but the current async_{update,check} callbacks are being used to do amend (the legacy cursor behavior), i.e. to allow 1000 updates without waiting for 1000 vblanks. So I would like to clarify this in the docs and rename the current callbacks to reflect this behaviour. I also see that for real async updates, the flag DRM_MODE_PAGE_FLIP_ASYNC can be used in a normal sync update (it is already being used by some drivers actually, in the atomic path, not only in the legacy page flip, at least is what I understood from amdgpu_dm_atomic_commit_tail() implementation). Please, let me know if I misunderstood anything. Otherwise renaming and improving the docs would put us all in sync. Thanks! Helen Changes in v3: None Changes in v2: None Changes in v1: None Documentation/gpu/drm-kms-helpers.rst | 8 +- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 +- drivers/gpu/drm/drm_atomic_helper.c | 111 +- drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c| 8 +- drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 8 +- drivers/gpu/drm/vc4/vc4_kms.c | 4 +- drivers/gpu/drm/vc4/vc4_plane.c | 8 +- include/drm/drm_atomic.h | 4 +- include/drm/drm_atomic_helper.h | 4 +- include/drm/drm_modeset_helper_vtables.h | 38 +++--- 10 files changed, 139 insertions(+), 64 deletions(-) diff --git a/Documentation/gpu/drm-kms-helpers.rst b/Documentation/gpu/drm-kms-helpers.rst index 58b375e47615..c067a196902d 100644 --- a/Documentation/gpu/drm-kms-helpers.rst +++ b/Documentation/gpu/drm-kms-helpers.rst @@ -53,12 +53,18 @@ Overview .. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c :doc: overview -Implementing Asynchronous Atomic Commit +Implementing Nonblocking Atomic Commit --- .. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c :doc: implementing nonblocking commit +Amend Mode Atomic Commit + + +.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c + :doc: amend mode atomic commit + Helper Functions Reference -- diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 2f26581b93ff..711e7715e112 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -3779,8 +3779,12 @@ static const struct drm_plane_helper_funcs dm_plane_helper_funcs = { .prepare_fb = dm_plane_helper_prepare_fb, .cleanup_fb = dm_plane_helper_cleanup_fb, .atomic_check = dm_plane_atomic_check, - .atomic_async_check = dm_plane_atomic_async_check, - .atomic_async_update = dm_plane_atomic_async_update + /* +* FIXME: ideally, instead of hooking async updates to amend, +* we could avoid tearing by modifying the pending commit. +*/ + .atomic_amend_check = dm_plane_atomic_async_check, + .atomic_amend_update = dm_plane_atomic_async_update }; /* @@ -6140,7 +6144,7 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, * helper, check if it can be done asynchronously for better * performance. */ - state->async_update = !drm_atomic_helper_async_check(dev, state); + state->amend_update = !drm_atomic_helper_amend_check(dev, state); } /* Must be success */ diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c index 2453678d1186..eb5dcd84fea7 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -948,7 +948,7 @@ int drm_atomic_helper_check(struct drm_device *dev, return ret; if (state->legacy_cursor_update) - state->async_update = !drm_atomic_helper_async_check(dev, state); + state->amend_update = !drm_atomic_helper_amend_check(dev, state); return ret; } @@ -1569,19 +1569,68 @@ static void commit_work(struct work_struct *work) } /** - * drm_atomic_helper_async_check - check if state can be commited asynchronously + * DOC: amend mode atomic commit + * + * The amend feature provides a
[PATCH v3 5/5] drm: don't block fb changes for async plane updates
In the case of a normal sync update, the preparation of framebuffers (be it calling drm_atomic_helper_prepare_planes() or doing setups with drm_framebuffer_get()) are performed in the new_state and the respective cleanups are performed in the old_state. In the case of async updates, the preparation is also done in the new_state but the cleanups are done in the new_state (because updates are performed in place, i.e. in the current state). The current code blocks async udpates when the fb is changed, turning async updates into sync updates, slowing down cursor updates and introducing regressions in igt tests with errors of type: "CRITICAL: completed 97 cursor updated in a period of 30 flips, we expect to complete approximately 15360 updates, with the threshold set at 7680" Fb changes in async updates were prevented to avoid the following scenario: - Async update, oldfb = NULL, newfb = fb1, prepare fb1, cleanup fb1 - Async update, oldfb = fb1, newfb = fb2, prepare fb2, cleanup fb2 - Non-async commit, oldfb = fb2, newfb = fb1, prepare fb1, cleanup fb2 (wrong) Where we have a single call to prepare fb2 but double cleanup call to fb2. To solve the above problems, instead of blocking async fb changes, we place the old framebuffer in the new_state object, so when the code performs cleanups in the new_state it will cleanup the old_fb and we will have the following scenario instead: - Async update, oldfb = NULL, newfb = fb1, prepare fb1, no cleanup - Async update, oldfb = fb1, newfb = fb2, prepare fb2, cleanup fb1 - Non-async commit, oldfb = fb2, newfb = fb1, prepare fb1, cleanup fb2 Where calls to prepare/cleanup are balanced. Cc: # v4.14+ Fixes: 25dc194b34dd ("drm: Block fb changes for async plane updates") Suggested-by: Boris Brezillon Signed-off-by: Helen Koike Reviewed-by: Boris Brezillon Reviewed-by: Nicholas Kazlauskas --- Hello, I added a TODO in drm_atomic_helper_async_commit() regarding doing a full state swap(), Boris and Nicholas, let me know if this is ok and if I can keep your Reviewed-by tags) As mentioned in the cover letter, I tested in almost all platforms with igt plane_cursor_legacy and kms_cursor_legacy and I didn't see any regressions. But I couldn't test on MSM and AMD because I don't have the hardware I would appreciate if anyone could help me testing those. Thanks! Helen Changes in v3: - Add Reviewed-by tags - Add TODO in drm_atomic_helper_async_commit() Changes in v2: - Change the order of the patch in the series, add this as the last one. - Add documentation - s/ballanced/balanced drivers/gpu/drm/drm_atomic_helper.c | 22 -- include/drm/drm_modeset_helper_vtables.h | 5 + 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c index 2453678d1186..de5812c362b5 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -1608,15 +1608,6 @@ int drm_atomic_helper_async_check(struct drm_device *dev, old_plane_state->crtc != new_plane_state->crtc) return -EINVAL; - /* -* FIXME: Since prepare_fb and cleanup_fb are always called on -* the new_plane_state for async updates we need to block framebuffer -* changes. This prevents use of a fb that's been cleaned up and -* double cleanups from occuring. -*/ - if (old_plane_state->fb != new_plane_state->fb) - return -EINVAL; - funcs = plane->helper_private; if (!funcs->atomic_async_update) return -EINVAL; @@ -1647,6 +1638,8 @@ EXPORT_SYMBOL(drm_atomic_helper_async_check); * drm_atomic_async_check() succeeds. Async commits are not supposed to swap * the states like normal sync commits, but just do in-place changes on the * current state. + * + * TODO: Implement full swap instead of doing in-place changes. */ void drm_atomic_helper_async_commit(struct drm_device *dev, struct drm_atomic_state *state) @@ -1657,6 +1650,9 @@ void drm_atomic_helper_async_commit(struct drm_device *dev, int i; for_each_new_plane_in_state(state, plane, plane_state, i) { + struct drm_framebuffer *new_fb = plane_state->fb; + struct drm_framebuffer *old_fb = plane->state->fb; + funcs = plane->helper_private; funcs->atomic_async_update(plane, plane_state); @@ -1665,11 +1661,17 @@ void drm_atomic_helper_async_commit(struct drm_device *dev, * plane->state in-place, make sure at least common * properties have been properly updated. */ - WARN_ON_ONCE(plane->state->fb != plane_state->fb); + WARN_ON_ONCE(plane->state->fb != new_fb); WARN_ON_ONCE(plane->state->crtc_x != plane_state->c
[PATCH v3 0/5] drm: Fix fb changes for async updates
Hello, This series fixes the slow down in performance introduced by "[PATCH v2] drm: Block fb changes for async plane updates" where async update falls back to a sync update, causing igt failures of type: "CRITICAL: completed 97 cursor updated in a period of 30 flips, we expect to complete approximately 15360 updates, with the threshold set at 7680" Please read the commit message of "drm: don't block fb changes for async plane updates" to understand how it works. I tested on the rockchip, on i915 and on vc4 with igt plane_cursor_legacy and kms_cursor_legacy and I didn't see any regressions. I couldn't test on MSM and AMD because I don't have the hardware I would appreciate if anyone could help me testing those. v1 link: https://patchwork.kernel.org/cover/10837847/ Thanks! Helen Changes in v3: - use swap() to swap old and new framebuffers in async_update - get the reference to old_fb and set the worker after vop_plane_atomic_update() - add a FIXME tag for when we have multiple fbs to be released when vblank happens. - update commit message - Add Reviewed-by tags - Add TODO in drm_atomic_helper_async_commit() Changes in v2: - added reviewed-by tag - update CC stable and Fixes tag - Added reviewed-by tag - updated CC stable and Fixes tag - Change the order of the patch in the series, add this as the last one. - Add documentation - s/ballanced/balanced Helen Koike (5): drm/rockchip: fix fb references in async update drm/amd: fix fb references in async update drm/msm: fix fb references in async update drm/vc4: fix fb references in async update drm: don't block fb changes for async plane updates .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 +- drivers/gpu/drm/drm_atomic_helper.c | 22 drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c| 4 ++ drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 51 ++- drivers/gpu/drm/vc4/vc4_plane.c | 2 +- include/drm/drm_modeset_helper_vtables.h | 5 ++ 6 files changed, 49 insertions(+), 38 deletions(-) -- 2.20.1 ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
[PATCH v3 2/5] drm/amd: fix fb references in async update
Async update callbacks are expected to set the old_fb in the new_state so prepare/cleanup framebuffers are balanced. Calling drm_atomic_set_fb_for_plane() (which gets a reference of the new fb and put the old fb) is not required, as it's taken care by drm_mode_cursor_universal() when calling drm_atomic_helper_update_plane(). Suggested-by: Boris Brezillon Signed-off-by: Helen Koike Reviewed-by: Nicholas Kazlauskas --- Changes in v3: None Changes in v2: - added reviewed-by tag drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 2f26581b93ff..ce4ccd28ac5e 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -3760,8 +3760,7 @@ static void dm_plane_atomic_async_update(struct drm_plane *plane, struct drm_plane_state *old_state = drm_atomic_get_old_plane_state(new_state->state, plane); - if (plane->state->fb != new_state->fb) - drm_atomic_set_fb_for_plane(plane->state, new_state->fb); + swap(plane->state->fb, new_state->fb); plane->state->src_x = new_state->src_x; plane->state->src_y = new_state->src_y; -- 2.20.1 ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
[PATCH v2 5/5] drm: don't block fb changes for async plane updates
In the case of a normal sync update, the preparation of framebuffers (be it calling drm_atomic_helper_prepare_planes() or doing setups with drm_framebuffer_get()) are performed in the new_state and the respective cleanups are performed in the old_state. In the case of async updates, the preparation is also done in the new_state but the cleanups are done in the new_state (because updates are performed in place, i.e. in the current state). The current code blocks async udpates when the fb is changed, turning async updates into sync updates, slowing down cursor updates and introducing regressions in igt tests with errors of type: "CRITICAL: completed 97 cursor updated in a period of 30 flips, we expect to complete approximately 15360 updates, with the threshold set at 7680" Fb changes in async updates were prevented to avoid the following scenario: - Async update, oldfb = NULL, newfb = fb1, prepare fb1, cleanup fb1 - Async update, oldfb = fb1, newfb = fb2, prepare fb2, cleanup fb2 - Non-async commit, oldfb = fb2, newfb = fb1, prepare fb1, cleanup fb2 (wrong) Where we have a single call to prepare fb2 but double cleanup call to fb2. To solve the above problems, instead of blocking async fb changes, we place the old framebuffer in the new_state object, so when the code performs cleanups in the new_state it will cleanup the old_fb and we will have the following scenario instead: - Async update, oldfb = NULL, newfb = fb1, prepare fb1, no cleanup - Async update, oldfb = fb1, newfb = fb2, prepare fb2, cleanup fb1 - Non-async commit, oldfb = fb2, newfb = fb1, prepare fb1, cleanup fb2 Where calls to prepare/cleanup are balanced. Cc: # v4.14+ Fixes: 25dc194b34dd ("drm: Block fb changes for async plane updates") Suggested-by: Boris Brezillon Signed-off-by: Helen Koike --- Hello, As mentioned in the cover letter, I tested in almost all platforms with igt plane_cursor_legacy and kms_cursor_legacy and I didn't see any regressions. But I couldn't test on MSM and AMD because I don't have the hardware I would appreciate if anyone could help me testing those. Thanks! Helen Changes in v2: - Change the order of the patch in the series, add this as the last one. - Add documentation - s/ballanced/balanced drivers/gpu/drm/drm_atomic_helper.c | 20 ++-- include/drm/drm_modeset_helper_vtables.h | 5 + 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c index 540a77a2ade9..e7eb96f1efc2 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -1608,15 +1608,6 @@ int drm_atomic_helper_async_check(struct drm_device *dev, old_plane_state->crtc != new_plane_state->crtc) return -EINVAL; - /* -* FIXME: Since prepare_fb and cleanup_fb are always called on -* the new_plane_state for async updates we need to block framebuffer -* changes. This prevents use of a fb that's been cleaned up and -* double cleanups from occuring. -*/ - if (old_plane_state->fb != new_plane_state->fb) - return -EINVAL; - funcs = plane->helper_private; if (!funcs->atomic_async_update) return -EINVAL; @@ -1657,6 +1648,9 @@ void drm_atomic_helper_async_commit(struct drm_device *dev, int i; for_each_new_plane_in_state(state, plane, plane_state, i) { + struct drm_framebuffer *new_fb = plane_state->fb; + struct drm_framebuffer *old_fb = plane->state->fb; + funcs = plane->helper_private; funcs->atomic_async_update(plane, plane_state); @@ -1665,11 +1659,17 @@ void drm_atomic_helper_async_commit(struct drm_device *dev, * plane->state in-place, make sure at least common * properties have been properly updated. */ - WARN_ON_ONCE(plane->state->fb != plane_state->fb); + WARN_ON_ONCE(plane->state->fb != new_fb); WARN_ON_ONCE(plane->state->crtc_x != plane_state->crtc_x); WARN_ON_ONCE(plane->state->crtc_y != plane_state->crtc_y); WARN_ON_ONCE(plane->state->src_x != plane_state->src_x); WARN_ON_ONCE(plane->state->src_y != plane_state->src_y); + + /* +* Make sure the FBs have been swapped so that cleanups in the +* new_state performs a cleanup in the old FB. +*/ + WARN_ON_ONCE(plane_state->fb != old_fb); } } EXPORT_SYMBOL(drm_atomic_helper_async_commit); diff --git a/include/drm/drm_modeset_helper_vtables.h b/include/drm/drm_modeset_helper_vtables.h index cfb7be40bed7..ce582e8e8f2f 100644 --- a/include/drm/drm_modeset_helper_vtables.h +++ b/include/drm/drm_modeset_hel
[PATCH v2 2/5] drm/amd: fix fb references in async update
Async update callbacks are expected to set the old_fb in the new_state so prepare/cleanup framebuffers are balanced. Calling drm_atomic_set_fb_for_plane() (which gets a reference of the new fb and put the old fb) is not required, as it's taken care by drm_mode_cursor_universal() when calling drm_atomic_helper_update_plane(). Suggested-by: Boris Brezillon Signed-off-by: Helen Koike Reviewed-by: Nicholas Kazlauskas --- Changes in v2: - added reviewed-by tag drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 3a6f595f295e..bc02800254bf 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -3760,8 +3760,7 @@ static void dm_plane_atomic_async_update(struct drm_plane *plane, struct drm_plane_state *old_state = drm_atomic_get_old_plane_state(new_state->state, plane); - if (plane->state->fb != new_state->fb) - drm_atomic_set_fb_for_plane(plane->state, new_state->fb); + swap(plane->state->fb, new_state->fb); plane->state->src_x = new_state->src_x; plane->state->src_y = new_state->src_y; -- 2.20.1 ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
[PATCH v2 0/5] drm: Fix fb changes for async updates
Hello, This series fixes the slow down in performance introduced by "[PATCH v2] drm: Block fb changes for async plane updates" where async update falls back to a sync update, causing igt failures of type: "CRITICAL: completed 97 cursor updated in a period of 30 flips, we expect to complete approximately 15360 updates, with the threshold set at 7680" Please read the commit message of "drm: don't block fb changes for async plane updates" to understand how it works. I tested on the rockchip, on i915 and on vc4 with igt plane_cursor_legacy and kms_cursor_legacy and I didn't see any regressions. I couldn't test on MSM and AMD because I don't have the hardware I would appreciate if anyone could help me testing those. v1 link: https://patchwork.kernel.org/cover/10837847/ Thanks! Helen Changes in v2: - added reviewed-by tag - update CC stable and Fixes tag - Added reviewed-by tag - updated CC stable and Fixes tag - Change the order of the patch in the series, add this as the last one. - Add documentation - s/ballanced/balanced Helen Koike (5): drm/rockchip: fix fb references in async update drm/amd: fix fb references in async update drm/msm: fix fb references in async update drm/vc4: fix fb references in async update drm: don't block fb changes for async plane updates .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 +- drivers/gpu/drm/drm_atomic_helper.c | 20 - drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c| 4 ++ drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 42 +++ drivers/gpu/drm/vc4/vc4_plane.c | 2 +- include/drm/drm_modeset_helper_vtables.h | 5 +++ 6 files changed, 45 insertions(+), 31 deletions(-) -- 2.20.1 ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx