dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [RFC] drm/msm: Add initial ci/ subdirectory
@ 2022-05-10  7:01 Tomeu Vizoso
  2022-05-10 14:13 ` [RFC v2] " Tomeu Vizoso
  2022-05-11 14:26 ` [RFC] drm/msm: " Jani Nikula
  0 siblings, 2 replies; 49+ messages in thread
From: Tomeu Vizoso @ 2022-05-10  7:01 UTC (permalink / raw)
  To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
	David Airlie, Daniel Vetter, Jonathan Corbet, Rob Clark,
	Sean Paul, Abhinav Kumar
  Cc: Tomeu Vizoso, linux-doc, linux-arm-msm, linux-kernel, dri-devel,
	freedreno

And use it to store expectations about what the drm/msm driver is
supposed to pass in the IGT test suite.

Also include a configuration file that points to the out-of-tree CI
scripts.

By storing the test expectations along the code we can make sure both
stay in sync with each other, and so we can know when a code change
breaks those expectations.

This will allow all contributors to drm/msm to reuse the infrastructure
already in gitlab.freedesktop.org to test the driver on several
generations of the hardware.

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
---
 Documentation/gpu/msm_automated_testing.rst |  70 ++++
 drivers/gpu/drm/msm/ci/gitlab-ci.yml        |  11 +
 drivers/gpu/drm/msm/ci/msm.testlist         | 429 ++++++++++++++++++++
 drivers/gpu/drm/msm/ci/msm_a360_results.txt | 421 +++++++++++++++++++
 drivers/gpu/drm/msm/ci/msm_a530_results.txt | 421 +++++++++++++++++++
 drivers/gpu/drm/msm/ci/msm_a618_results.txt | 422 +++++++++++++++++++
 drivers/gpu/drm/msm/ci/msm_a630_results.txt | 422 +++++++++++++++++++
 7 files changed, 2196 insertions(+)
 create mode 100644 Documentation/gpu/msm_automated_testing.rst
 create mode 100644 drivers/gpu/drm/msm/ci/gitlab-ci.yml
 create mode 100644 drivers/gpu/drm/msm/ci/msm.testlist
 create mode 100644 drivers/gpu/drm/msm/ci/msm_a360_results.txt
 create mode 100644 drivers/gpu/drm/msm/ci/msm_a530_results.txt
 create mode 100644 drivers/gpu/drm/msm/ci/msm_a618_results.txt
 create mode 100644 drivers/gpu/drm/msm/ci/msm_a630_results.txt

diff --git a/Documentation/gpu/msm_automated_testing.rst b/Documentation/gpu/msm_automated_testing.rst
new file mode 100644
index 000000000000..fe59474569c2
--- /dev/null
+++ b/Documentation/gpu/msm_automated_testing.rst
@@ -0,0 +1,70 @@
+.. SPDX-License-Identifier: GPL-2.0+
+
+=========================================
+Automated testing of MSM DRM driver
+=========================================
+
+
+Introduction
+============
+
+Making sure that changes to a driver don't introduce regressions can be very time consuming when lots of different hardware configurations need to be tested. Moreover, it isn't practical for each person interested in this testing to have to acquire and maintain what can be a considerable amount of hardware.
+
+Also, it is desirable for developers to check for regressions in their code by themselves, instead of relying on the maintainer finding them and then reporting back.
+
+There are facilities in gitlab.freedesktop.org to automatically test Mesa that can be used as well for testing DRM drivers such as drm/msm. This document explains how people interested in testing the drm/msm driver can use this shared infrastructure to save quite some time and effort.
+
+
+Relevant files
+==============
+
+drivers/gpu/drm/msm/ci/gitlab-ci.yml
+------------------------------------
+
+Specifies the specific version of the scripts to be used. GitLab CI will use the values defined in this file to fetch the right scripts.
+
+
+drivers/gpu/drm/msm/ci/msm.testlist
+-----------------------------------
+
+Specifies the tests that the current code is expected to be able to reliably run. These tests are expected to not hang the DUT (device under testing) when running on the revision they belong to, and to give consistent results.
+
+
+drivers/gpu/drm/msm/ci/msm_*_results.txt
+----------------------------------------
+
+Specifies the expected results of running this specific kernel revision on a given hardware configuration.
+
+
+How to enable automated testing on your tree
+============================================
+
+1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one yet
+
+2. In your kernel repo's configuration (eg. https://gitlab.freedesktop.org/tomeu/linux/-/settings/ci_cd), change the CI/CD configuration file from .gitlab-ci.yml to drivers/gpu/drm/msm/ci/gitlab-ci.yml.
+
+3. Next time you push to this repository, you will see a CI pipeline being created (eg. https://gitlab.freedesktop.org/tomeu/linux/-/pipelines)
+
+4. The various jobs will be run and when the pipeline is finished, all jobs should be green unless a regression has been found.
+
+
+How to update test expectations
+===============================
+
+If your changes to the code fix any tests, you will have to update one or more of the files in drivers/gpu/drm/msm/ci/msm_*_results.txt, for each of the test platforms affected by the change.
+
+If you have run a pipeline and it failed because of a mismatched test result, you will have been offered a patch at the end of the run that you can apply after reviewing it.
+
+
+How to expand coverage
+======================
+
+If your code changes makes it possible to run more tests (by solving reliability issues, for example), more tests can be added to this list, and then the expected results updated with the patch file that will be printed at the end of each job.
+
+If there is a need for updating the version of IGT being used (maybe you have added more tests to it), follow the instructions at https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/tree/msm#upreving-igt.
+
+
+How to test your changes to the scripts
+==========================================
+
+For testing changes to the scripts in the drm-ci repo, change the DRM_CI_PROJECT_PATH variable in drivers/gpu/drm/msm/ci/gitlab-ci.yml to match your fork of the project (eg. tomeu/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
\ No newline at end of file
diff --git a/drivers/gpu/drm/msm/ci/gitlab-ci.yml b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
new file mode 100644
index 000000000000..9b7caa7fcab2
--- /dev/null
+++ b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
@@ -0,0 +1,11 @@
+variables:
+  # Change this to use your fork of drm-ci
+  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
+  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha msm
+
+include:
+  - project: *drm-ci-project-path
+    ref: *drm-ci-commit-sha
+    file:
+      - '.msm-gitlab-ci.yml'
+      - '.gitlab-ci.yml'
diff --git a/drivers/gpu/drm/msm/ci/msm.testlist b/drivers/gpu/drm/msm/ci/msm.testlist
new file mode 100644
index 000000000000..7c771471dfa2
--- /dev/null
+++ b/drivers/gpu/drm/msm/ci/msm.testlist
@@ -0,0 +1,429 @@
+# Keep alphabetically sorted by default
+
+igt@core_auth@getclient-simple
+igt@core_auth@getclient-master-drop
+igt@core_auth@basic-auth
+igt@core_auth@many-magics
+igt@core_getclient
+igt@core_getstats
+igt@core_getversion
+igt@core_setmaster_vs_auth
+igt@drm_read@invalid-buffer
+igt@drm_read@fault-buffer
+igt@drm_read@empty-block
+igt@drm_read@empty-nonblock
+igt@drm_read@short-buffer-block
+igt@drm_read@short-buffer-nonblock
+igt@drm_read@short-buffer-wakeup
+igt@kms_addfb_basic@unused-handle
+igt@kms_addfb_basic@unused-pitches
+igt@kms_addfb_basic@unused-offsets
+igt@kms_addfb_basic@unused-modifier
+igt@kms_addfb_basic@clobberred-modifier
+igt@kms_addfb_basic@invalid-smem-bo-on-discrete
+igt@kms_addfb_basic@legacy-format
+igt@kms_addfb_basic@no-handle
+igt@kms_addfb_basic@basic
+igt@kms_addfb_basic@bad-pitch-0
+igt@kms_addfb_basic@bad-pitch-32
+igt@kms_addfb_basic@bad-pitch-63
+igt@kms_addfb_basic@bad-pitch-128
+igt@kms_addfb_basic@bad-pitch-256
+igt@kms_addfb_basic@bad-pitch-1024
+igt@kms_addfb_basic@bad-pitch-999
+igt@kms_addfb_basic@bad-pitch-65536
+igt@kms_addfb_basic@size-max
+igt@kms_addfb_basic@too-wide
+igt@kms_addfb_basic@too-high
+igt@kms_addfb_basic@bo-too-small
+igt@kms_addfb_basic@small-bo
+igt@kms_addfb_basic@bo-too-small-due-to-tiling
+igt@kms_addfb_basic@addfb25-modifier-no-flag
+igt@kms_addfb_basic@addfb25-bad-modifier
+igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy
+igt@kms_addfb_basic@addfb25-x-tiled-legacy
+igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling
+igt@kms_addfb_basic@addfb25-y-tiled-legacy
+igt@kms_addfb_basic@addfb25-yf-tiled-legacy
+igt@kms_addfb_basic@addfb25-y-tiled-small-legacy
+igt@kms_addfb_basic@addfb25-4-tiled
+igt@kms_addfb_basic@basic-x-tiled-legacy
+igt@kms_addfb_basic@framebuffer-vs-set-tiling
+igt@kms_addfb_basic@tile-pitch-mismatch
+igt@kms_addfb_basic@basic-y-tiled-legacy
+igt@kms_addfb_basic@invalid-get-prop-any
+igt@kms_addfb_basic@invalid-get-prop
+igt@kms_addfb_basic@invalid-set-prop-any
+igt@kms_addfb_basic@invalid-set-prop
+igt@kms_addfb_basic@master-rmfb
+igt@kms_atomic@plane-overlay-legacy
+igt@kms_atomic@plane-primary-legacy
+igt@kms_atomic@plane-primary-overlay-mutable-zpos
+igt@kms_atomic@plane-immutable-zpos
+igt@kms_atomic@test-only
+igt@kms_atomic@plane-cursor-legacy
+igt@kms_atomic@plane-invalid-params
+igt@kms_atomic@plane-invalid-params-fence
+igt@kms_atomic@crtc-invalid-params
+igt@kms_atomic@crtc-invalid-params-fence
+igt@kms_atomic@atomic-invalid-params
+igt@kms_atomic@atomic_plane_damage
+igt@kms_atomic_interruptible@legacy-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@atomic-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-dpms@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-pageflip@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-cursor@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-primary@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-cursor@pipe-a-edp-1
+igt@kms_content_protection@legacy
+igt@kms_content_protection@atomic
+igt@kms_content_protection@atomic-dpms
+igt@kms_content_protection@LIC
+igt@kms_content_protection@type1
+igt@kms_content_protection@mei_interface
+igt@kms_content_protection@content_type_change
+igt@kms_content_protection@uevent
+igt@kms_content_protection@srm
+igt@kms_content_protection@dp-mst-type-0
+igt@kms_content_protection@dp-mst-lic-type-0
+igt@kms_content_protection@dp-mst-type-1
+igt@kms_content_protection@dp-mst-lic-type-1
+igt@kms_dp_aux_dev
+igt@kms_flip_event_leak
+igt@kms_getfb@getfb-handle-zero
+igt@kms_getfb@getfb-handle-valid
+igt@kms_getfb@getfb-handle-closed
+igt@kms_getfb@getfb-handle-not-fb
+igt@kms_getfb@getfb-addfb-different-handles
+igt@kms_getfb@getfb-repeated-different-handles
+igt@kms_getfb@getfb-reject-ccs
+igt@kms_getfb@getfb2-handle-zero
+igt@kms_getfb@getfb2-handle-closed
+igt@kms_getfb@getfb2-handle-not-fb
+igt@kms_getfb@getfb2-accept-ccs
+igt@kms_getfb@getfb2-into-addfb2
+igt@kms_getfb@getfb-handle-protection
+igt@kms_getfb@getfb2-handle-protection
+igt@kms_hdmi_inject@inject-4k
+igt@kms_hdmi_inject@inject-audio
+igt@kms_hdr@bpc-switch
+igt@kms_hdr@bpc-switch-dpms
+igt@kms_hdr@static-toggle
+igt@kms_hdr@static-toggle-dpms
+igt@kms_hdr@static-swap
+igt@kms_multipipe_modeset@basic-max-pipe-crc-check
+igt@kms_pipe_crc_basic@bad-source
+igt@kms_pipe_crc_basic@read-crc-pipe-a
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-a
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a
+igt@kms_pipe_crc_basic@read-crc-pipe-b
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-b
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b
+igt@kms_pipe_crc_basic@read-crc-pipe-c
+igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c-frame-sequence
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-c
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-c
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c
+igt@kms_pipe_crc_basic@read-crc-pipe-d
+igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d-frame-sequence
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-d
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d
+igt@kms_pipe_crc_basic@read-crc-pipe-e
+igt@kms_pipe_crc_basic@read-crc-pipe-e-frame-sequence
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e-frame-sequence
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-e
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-e
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-e
+igt@kms_pipe_crc_basic@read-crc-pipe-f
+igt@kms_pipe_crc_basic@read-crc-pipe-f-frame-sequence
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f-frame-sequence
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-f
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-f
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-f
+igt@kms_plane_lowres@pipe-a-tiling-none
+igt@kms_plane_lowres@pipe-a-tiling-x
+igt@kms_plane_lowres@pipe-a-tiling-y
+igt@kms_plane_lowres@pipe-a-tiling-yf
+igt@kms_plane_lowres@pipe-a-tiling-4
+igt@kms_plane_lowres@pipe-b-tiling-none
+igt@kms_plane_lowres@pipe-b-tiling-x
+igt@kms_plane_lowres@pipe-b-tiling-y
+igt@kms_plane_lowres@pipe-b-tiling-yf
+igt@kms_plane_lowres@pipe-b-tiling-4
+igt@kms_plane_lowres@pipe-c-tiling-none
+igt@kms_plane_lowres@pipe-c-tiling-x
+igt@kms_plane_lowres@pipe-c-tiling-y
+igt@kms_plane_lowres@pipe-c-tiling-yf
+igt@kms_plane_lowres@pipe-c-tiling-4
+igt@kms_plane_lowres@pipe-d-tiling-none
+igt@kms_plane_lowres@pipe-d-tiling-x
+igt@kms_plane_lowres@pipe-d-tiling-y
+igt@kms_plane_lowres@pipe-d-tiling-yf
+igt@kms_plane_lowres@pipe-d-tiling-4
+igt@kms_plane_lowres@pipe-e-tiling-none
+igt@kms_plane_lowres@pipe-e-tiling-x
+igt@kms_plane_lowres@pipe-e-tiling-y
+igt@kms_plane_lowres@pipe-e-tiling-yf
+igt@kms_plane_lowres@pipe-e-tiling-4
+igt@kms_plane_lowres@pipe-f-tiling-none
+igt@kms_plane_lowres@pipe-f-tiling-x
+igt@kms_plane_lowres@pipe-f-tiling-y
+igt@kms_plane_lowres@pipe-f-tiling-yf
+igt@kms_plane_lowres@pipe-f-tiling-4
+igt@kms_prop_blob@basic
+igt@kms_prop_blob@blob-prop-core
+igt@kms_prop_blob@blob-prop-validate
+igt@kms_prop_blob@blob-prop-lifetime
+igt@kms_prop_blob@blob-multiple
+igt@kms_prop_blob@invalid-get-prop-any
+igt@kms_prop_blob@invalid-get-prop
+igt@kms_prop_blob@invalid-set-prop-any
+igt@kms_prop_blob@invalid-set-prop
+igt@kms_rmfb@rmfb-ioctl
+igt@kms_rmfb@close-fd
+igt@kms_rotation_crc@primary-rotation-90
+igt@kms_rotation_crc@primary-rotation-180
+igt@kms_rotation_crc@primary-rotation-270
+igt@kms_rotation_crc@sprite-rotation-90
+igt@kms_rotation_crc@sprite-rotation-180
+igt@kms_rotation_crc@sprite-rotation-270
+igt@kms_rotation_crc@cursor-rotation-180
+igt@kms_rotation_crc@sprite-rotation-90-pos-100-0
+igt@kms_rotation_crc@bad-pixel-format
+igt@kms_rotation_crc@bad-tiling
+igt@kms_rotation_crc@primary-x-tiled-reflect-x-0
+igt@kms_rotation_crc@primary-x-tiled-reflect-x-180
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-0
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-90
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-180
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-270
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270
+igt@kms_rotation_crc@primary-4-tiled-reflect-x-0
+igt@kms_rotation_crc@primary-4-tiled-reflect-x-180
+igt@kms_rotation_crc@multiplane-rotation
+igt@kms_rotation_crc@multiplane-rotation-cropping-top
+igt@kms_rotation_crc@multiplane-rotation-cropping-bottom
+igt@kms_rotation_crc@exhaust-fences
+igt@kms_selftest@all
+igt@kms_setmode@basic@pipe-a-edp-1
+igt@kms_setmode@basic@pipe-b-edp-1
+igt@kms_setmode@basic-clone-single-crtc
+igt@kms_setmode@invalid-clone-single-crtc
+igt@kms_setmode@invalid-clone-exclusive-crtc
+igt@kms_setmode@clone-exclusive-crtc
+igt@kms_setmode@invalid-clone-single-crtc-stealing
+
+# Flakes on a530 with:
+# arm-smmu b40000.iommu: Unhandled context fault: fsr=0x408, iova=0x01003000, fsynr=0x13, cbfrsynra=0x0, cb=0
+# igt@msm_mapping@ring
+
+igt@msm_mapping@sqefw
+igt@msm_mapping@shadow
+igt@msm_recovery@hangcheck
+igt@msm_recovery@gpu-fault
+igt@msm_recovery@iova-fault
+igt@msm_submit@empty-submit
+igt@msm_submit@invalid-queue-submit
+igt@msm_submit@invalid-flags-submit
+igt@msm_submit@invalid-in-fence-submit
+igt@msm_submit@invalid-duplicate-bo-submit
+igt@msm_submit@invalid-cmd-idx-submit
+igt@msm_submit@invalid-cmd-type-submit
+igt@msm_submit@valid-submit
+igt@kms_sysfs_edid_timing
+igt@kms_universal_plane@universal-plane-pipe-a-functional
+igt@kms_universal_plane@universal-plane-pipe-a-sanity
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a
+igt@kms_universal_plane@cursor-fb-leak-pipe-a
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-a
+igt@kms_universal_plane@universal-plane-pipe-b-functional
+igt@kms_universal_plane@universal-plane-pipe-b-sanity
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b
+igt@kms_universal_plane@cursor-fb-leak-pipe-b
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-b
+igt@kms_universal_plane@universal-plane-pipe-c-functional
+igt@kms_universal_plane@universal-plane-pipe-c-sanity
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-c
+igt@kms_universal_plane@cursor-fb-leak-pipe-c
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-c
+igt@kms_universal_plane@universal-plane-pipe-d-functional
+igt@kms_universal_plane@universal-plane-pipe-d-sanity
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-d
+igt@kms_universal_plane@cursor-fb-leak-pipe-d
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-d
+igt@kms_universal_plane@universal-plane-pipe-e-functional
+igt@kms_universal_plane@universal-plane-pipe-e-sanity
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-e
+igt@kms_universal_plane@cursor-fb-leak-pipe-e
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-e
+igt@kms_universal_plane@universal-plane-pipe-f-functional
+igt@kms_universal_plane@universal-plane-pipe-f-sanity
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-f
+igt@kms_universal_plane@cursor-fb-leak-pipe-f
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-f
+igt@kms_vblank@invalid
+igt@kms_vblank@crtc-id
+igt@kms_vblank@pipe-a-query-idle
+igt@kms_vblank@pipe-a-query-idle-hang
+igt@kms_vblank@pipe-a-query-forked
+igt@kms_vblank@pipe-a-query-forked-hang
+igt@kms_vblank@pipe-a-query-busy
+igt@kms_vblank@pipe-a-query-busy-hang
+igt@kms_vblank@pipe-a-query-forked-busy
+igt@kms_vblank@pipe-a-query-forked-busy-hang
+igt@kms_vblank@pipe-a-wait-idle
+igt@kms_vblank@pipe-a-wait-idle-hang
+igt@kms_vblank@pipe-a-wait-forked
+igt@kms_vblank@pipe-a-wait-forked-hang
+igt@kms_vblank@pipe-a-wait-busy
+igt@kms_vblank@pipe-a-wait-busy-hang
+igt@kms_vblank@pipe-a-wait-forked-busy
+igt@kms_vblank@pipe-a-wait-forked-busy-hang
+igt@kms_vblank@pipe-a-ts-continuation-idle
+igt@kms_vblank@pipe-a-ts-continuation-idle-hang
+igt@kms_vblank@pipe-a-ts-continuation-dpms-rpm
+igt@kms_vblank@pipe-a-ts-continuation-modeset
+igt@kms_vblank@pipe-a-ts-continuation-modeset-hang
+igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm
+igt@kms_vblank@pipe-b-accuracy-idle
+igt@kms_vblank@pipe-b-query-idle
+igt@kms_vblank@pipe-b-query-idle-hang
+igt@kms_vblank@pipe-b-query-forked
+igt@kms_vblank@pipe-b-query-forked-hang
+igt@kms_vblank@pipe-b-query-busy
+igt@kms_vblank@pipe-b-query-busy-hang
+igt@kms_vblank@pipe-b-query-forked-busy
+igt@kms_vblank@pipe-b-query-forked-busy-hang
+igt@kms_vblank@pipe-b-wait-idle
+igt@kms_vblank@pipe-b-wait-idle-hang
+igt@kms_vblank@pipe-b-wait-forked
+igt@kms_vblank@pipe-b-wait-forked-hang
+igt@kms_vblank@pipe-b-wait-busy
+igt@kms_vblank@pipe-b-wait-busy-hang
+igt@kms_vblank@pipe-b-wait-forked-busy
+igt@kms_vblank@pipe-b-wait-forked-busy-hang
+igt@kms_vblank@pipe-b-ts-continuation-idle
+igt@kms_vblank@pipe-b-ts-continuation-idle-hang
+igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm
+igt@kms_vblank@pipe-b-ts-continuation-modeset
+igt@kms_vblank@pipe-b-ts-continuation-modeset-hang
+igt@kms_vblank@pipe-b-ts-continuation-modeset-rpm
+igt@kms_vblank@pipe-c-accuracy-idle
+igt@kms_vblank@pipe-c-query-idle
+igt@kms_vblank@pipe-c-query-idle-hang
+igt@kms_vblank@pipe-c-query-forked
+igt@kms_vblank@pipe-c-query-forked-hang
+igt@kms_vblank@pipe-c-query-busy
+igt@kms_vblank@pipe-c-query-busy-hang
+igt@kms_vblank@pipe-c-query-forked-busy
+igt@kms_vblank@pipe-c-query-forked-busy-hang
+igt@kms_vblank@pipe-c-wait-idle
+igt@kms_vblank@pipe-c-wait-idle-hang
+igt@kms_vblank@pipe-c-wait-forked
+igt@kms_vblank@pipe-c-wait-forked-hang
+igt@kms_vblank@pipe-c-wait-busy
+igt@kms_vblank@pipe-c-wait-busy-hang
+igt@kms_vblank@pipe-c-wait-forked-busy
+igt@kms_vblank@pipe-c-wait-forked-busy-hang
+igt@kms_vblank@pipe-c-ts-continuation-idle
+igt@kms_vblank@pipe-c-ts-continuation-idle-hang
+igt@kms_vblank@pipe-c-ts-continuation-dpms-rpm
+igt@kms_vblank@pipe-c-ts-continuation-modeset
+igt@kms_vblank@pipe-c-ts-continuation-modeset-hang
+igt@kms_vblank@pipe-c-ts-continuation-modeset-rpm
+igt@kms_vblank@pipe-d-accuracy-idle
+igt@kms_vblank@pipe-d-query-idle
+igt@kms_vblank@pipe-d-query-idle-hang
+igt@kms_vblank@pipe-d-query-forked
+igt@kms_vblank@pipe-d-query-forked-hang
+igt@kms_vblank@pipe-d-query-busy
+igt@kms_vblank@pipe-d-query-busy-hang
+igt@kms_vblank@pipe-d-query-forked-busy
+igt@kms_vblank@pipe-d-query-forked-busy-hang
+igt@kms_vblank@pipe-d-wait-idle
+igt@kms_vblank@pipe-d-wait-idle-hang
+igt@kms_vblank@pipe-d-wait-forked
+igt@kms_vblank@pipe-d-wait-forked-hang
+igt@kms_vblank@pipe-d-wait-busy
+igt@kms_vblank@pipe-d-wait-busy-hang
+igt@kms_vblank@pipe-d-wait-forked-busy
+igt@kms_vblank@pipe-d-wait-forked-busy-hang
+igt@kms_vblank@pipe-d-ts-continuation-idle
+igt@kms_vblank@pipe-d-ts-continuation-idle-hang
+igt@kms_vblank@pipe-d-ts-continuation-dpms-rpm
+igt@kms_vblank@pipe-d-ts-continuation-modeset
+igt@kms_vblank@pipe-d-ts-continuation-modeset-hang
+igt@kms_vblank@pipe-d-ts-continuation-modeset-rpm
+igt@kms_vblank@pipe-e-accuracy-idle
+igt@kms_vblank@pipe-e-query-idle
+igt@kms_vblank@pipe-e-query-idle-hang
+igt@kms_vblank@pipe-e-query-forked
+igt@kms_vblank@pipe-e-query-forked-hang
+igt@kms_vblank@pipe-e-query-busy
+igt@kms_vblank@pipe-e-query-busy-hang
+igt@kms_vblank@pipe-e-query-forked-busy
+igt@kms_vblank@pipe-e-query-forked-busy-hang
+igt@kms_vblank@pipe-e-wait-idle
+igt@kms_vblank@pipe-e-wait-idle-hang
+igt@kms_vblank@pipe-e-wait-forked
+igt@kms_vblank@pipe-e-wait-forked-hang
+igt@kms_vblank@pipe-e-wait-busy
+igt@kms_vblank@pipe-e-wait-busy-hang
+igt@kms_vblank@pipe-e-wait-forked-busy
+igt@kms_vblank@pipe-e-wait-forked-busy-hang
+igt@kms_vblank@pipe-e-ts-continuation-idle
+igt@kms_vblank@pipe-e-ts-continuation-idle-hang
+igt@kms_vblank@pipe-e-ts-continuation-dpms-rpm
+igt@kms_vblank@pipe-e-ts-continuation-modeset
+igt@kms_vblank@pipe-e-ts-continuation-modeset-hang
+igt@kms_vblank@pipe-e-ts-continuation-modeset-rpm
+igt@kms_vblank@pipe-f-accuracy-idle
+igt@kms_vblank@pipe-f-query-idle
+igt@kms_vblank@pipe-f-query-idle-hang
+igt@kms_vblank@pipe-f-query-forked
+igt@kms_vblank@pipe-f-query-forked-hang
+igt@kms_vblank@pipe-f-query-busy
+igt@kms_vblank@pipe-f-query-busy-hang
+igt@kms_vblank@pipe-f-query-forked-busy
+igt@kms_vblank@pipe-f-query-forked-busy-hang
+igt@kms_vblank@pipe-f-wait-idle
+igt@kms_vblank@pipe-f-wait-idle-hang
+igt@kms_vblank@pipe-f-wait-forked
+igt@kms_vblank@pipe-f-wait-forked-hang
+igt@kms_vblank@pipe-f-wait-busy
+igt@kms_vblank@pipe-f-wait-busy-hang
+igt@kms_vblank@pipe-f-wait-forked-busy
+igt@kms_vblank@pipe-f-wait-forked-busy-hang
+igt@kms_vblank@pipe-f-ts-continuation-idle
+igt@kms_vblank@pipe-f-ts-continuation-idle-hang
+igt@kms_vblank@pipe-f-ts-continuation-dpms-rpm
+igt@kms_vblank@pipe-f-ts-continuation-modeset
+igt@kms_vblank@pipe-f-ts-continuation-modeset-hang
+igt@kms_vblank@pipe-f-ts-continuation-modeset-rpm
+igt@kms_vrr@flip-basic
+igt@kms_vrr@flip-dpms
+igt@kms_vrr@flipline
+igt@kms_async_flip@async-flip-with-page-flip-events
+igt@kms_async_flip@alternate-sync-async-flip
+igt@kms_async_flip@test-time-stamp
+igt@kms_async_flip@test-cursor
+igt@kms_async_flip@invalid-async-flip
+igt@kms_async_flip@crc
diff --git a/drivers/gpu/drm/msm/ci/msm_a360_results.txt b/drivers/gpu/drm/msm/ci/msm_a360_results.txt
new file mode 100644
index 000000000000..fd80d2bf2bcb
--- /dev/null
+++ b/drivers/gpu/drm/msm/ci/msm_a360_results.txt
@@ -0,0 +1,421 @@
+igt@core_auth@getclient-simple,pass
+igt@core_auth@getclient-master-drop,pass
+igt@core_auth@basic-auth,pass
+igt@core_auth@many-magics,pass
+igt@core_getclient,pass
+igt@core_getstats,pass
+igt@core_getversion,pass
+igt@core_setmaster_vs_auth,pass
+igt@drm_read@invalid-buffer,skip
+igt@drm_read@fault-buffer,skip
+igt@drm_read@empty-block,skip
+igt@drm_read@empty-nonblock,skip
+igt@drm_read@short-buffer-block,skip
+igt@drm_read@short-buffer-nonblock,skip
+igt@drm_read@short-buffer-wakeup,skip
+igt@kms_addfb_basic@unused-handle,pass
+igt@kms_addfb_basic@unused-pitches,pass
+igt@kms_addfb_basic@unused-offsets,pass
+igt@kms_addfb_basic@unused-modifier,pass
+igt@kms_addfb_basic@clobberred-modifier,skip
+igt@kms_addfb_basic@invalid-smem-bo-on-discrete,skip
+igt@kms_addfb_basic@legacy-format,dmesg-warn
+igt@kms_addfb_basic@no-handle,pass
+igt@kms_addfb_basic@basic,pass
+igt@kms_addfb_basic@bad-pitch-0,pass
+igt@kms_addfb_basic@bad-pitch-32,pass
+igt@kms_addfb_basic@bad-pitch-63,pass
+igt@kms_addfb_basic@bad-pitch-128,pass
+igt@kms_addfb_basic@bad-pitch-256,pass
+igt@kms_addfb_basic@bad-pitch-1024,pass
+igt@kms_addfb_basic@bad-pitch-999,pass
+igt@kms_addfb_basic@bad-pitch-65536,pass
+igt@kms_addfb_basic@size-max,pass
+igt@kms_addfb_basic@too-wide,pass
+igt@kms_addfb_basic@too-high,dmesg-warn
+igt@kms_addfb_basic@bo-too-small,pass
+igt@kms_addfb_basic@small-bo,pass
+igt@kms_addfb_basic@bo-too-small-due-to-tiling,skip
+igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
+igt@kms_addfb_basic@addfb25-bad-modifier,fail
+igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy,skip
+igt@kms_addfb_basic@addfb25-x-tiled-legacy,skip
+igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling,skip
+igt@kms_addfb_basic@addfb25-y-tiled-legacy,skip
+igt@kms_addfb_basic@addfb25-yf-tiled-legacy,skip
+igt@kms_addfb_basic@addfb25-y-tiled-small-legacy,skip
+igt@kms_addfb_basic@addfb25-4-tiled,skip
+igt@kms_addfb_basic@basic-x-tiled-legacy,skip
+igt@kms_addfb_basic@framebuffer-vs-set-tiling,skip
+igt@kms_addfb_basic@tile-pitch-mismatch,skip
+igt@kms_addfb_basic@basic-y-tiled-legacy,skip
+igt@kms_addfb_basic@invalid-get-prop-any,pass
+igt@kms_addfb_basic@invalid-get-prop,pass
+igt@kms_addfb_basic@invalid-set-prop-any,pass
+igt@kms_addfb_basic@invalid-set-prop,pass
+igt@kms_addfb_basic@master-rmfb,pass
+igt@kms_atomic@plane-overlay-legacy,skip
+igt@kms_atomic@plane-primary-legacy,skip
+igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
+igt@kms_atomic@plane-immutable-zpos,skip
+igt@kms_atomic@test-only,skip
+igt@kms_atomic@plane-cursor-legacy,skip
+igt@kms_atomic@plane-invalid-params,skip
+igt@kms_atomic@plane-invalid-params-fence,skip
+igt@kms_atomic@crtc-invalid-params,skip
+igt@kms_atomic@crtc-invalid-params-fence,skip
+igt@kms_atomic@atomic-invalid-params,skip
+igt@kms_atomic@atomic_plane_damage,skip
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@legacy,skip
+igt@kms_content_protection@atomic,skip
+igt@kms_content_protection@atomic-dpms,skip
+igt@kms_content_protection@lic,skip
+igt@kms_content_protection@type1,skip
+igt@kms_content_protection@mei_interface,skip
+igt@kms_content_protection@content_type_change,skip
+igt@kms_content_protection@uevent,skip
+igt@kms_content_protection@srm,skip
+igt@kms_content_protection@dp-mst-type-0,skip
+igt@kms_content_protection@dp-mst-lic-type-0,skip
+igt@kms_content_protection@dp-mst-type-1,skip
+igt@kms_content_protection@dp-mst-lic-type-1,skip
+igt@kms_dp_aux_dev,skip
+igt@kms_flip_event_leak,skip
+igt@kms_getfb@getfb-handle-zero,pass
+igt@kms_getfb@getfb-handle-valid,pass
+igt@kms_getfb@getfb-handle-closed,pass
+igt@kms_getfb@getfb-handle-not-fb,pass
+igt@kms_getfb@getfb-addfb-different-handles,pass
+igt@kms_getfb@getfb-repeated-different-handles,pass
+igt@kms_getfb@getfb-reject-ccs,skip
+igt@kms_getfb@getfb2-handle-zero,pass
+igt@kms_getfb@getfb2-handle-closed,pass
+igt@kms_getfb@getfb2-handle-not-fb,pass
+igt@kms_getfb@getfb2-accept-ccs,skip
+igt@kms_getfb@getfb2-into-addfb2,pass
+igt@kms_getfb@getfb-handle-protection,pass
+igt@kms_getfb@getfb2-handle-protection,pass
+igt@kms_hdmi_inject@inject-4k,fail
+igt@kms_hdmi_inject@inject-audio,skip
+igt@kms_hdr@bpc-switch,skip
+igt@kms_hdr@bpc-switch-dpms,skip
+igt@kms_hdr@static-toggle,skip
+igt@kms_hdr@static-toggle-dpms,skip
+igt@kms_hdr@static-swap,skip
+igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
+igt@kms_pipe_crc_basic@bad-source,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-c,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-c,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-c,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-d,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-d,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-e,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-e-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-e,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-e,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-e,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-f,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-f-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-f,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-f,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-f,skip
+igt@kms_plane_lowres@pipe-a-tiling-none,skip
+igt@kms_plane_lowres@pipe-a-tiling-x,skip
+igt@kms_plane_lowres@pipe-a-tiling-y,skip
+igt@kms_plane_lowres@pipe-a-tiling-yf,skip
+igt@kms_plane_lowres@pipe-a-tiling-4,skip
+igt@kms_plane_lowres@pipe-b-tiling-none,skip
+igt@kms_plane_lowres@pipe-b-tiling-x,skip
+igt@kms_plane_lowres@pipe-b-tiling-y,skip
+igt@kms_plane_lowres@pipe-b-tiling-yf,skip
+igt@kms_plane_lowres@pipe-b-tiling-4,skip
+igt@kms_plane_lowres@pipe-c-tiling-none,skip
+igt@kms_plane_lowres@pipe-c-tiling-x,skip
+igt@kms_plane_lowres@pipe-c-tiling-y,skip
+igt@kms_plane_lowres@pipe-c-tiling-yf,skip
+igt@kms_plane_lowres@pipe-c-tiling-4,skip
+igt@kms_plane_lowres@pipe-d-tiling-none,skip
+igt@kms_plane_lowres@pipe-d-tiling-x,skip
+igt@kms_plane_lowres@pipe-d-tiling-y,skip
+igt@kms_plane_lowres@pipe-d-tiling-yf,skip
+igt@kms_plane_lowres@pipe-d-tiling-4,skip
+igt@kms_plane_lowres@pipe-e-tiling-none,skip
+igt@kms_plane_lowres@pipe-e-tiling-x,skip
+igt@kms_plane_lowres@pipe-e-tiling-y,skip
+igt@kms_plane_lowres@pipe-e-tiling-yf,skip
+igt@kms_plane_lowres@pipe-e-tiling-4,skip
+igt@kms_plane_lowres@pipe-f-tiling-none,skip
+igt@kms_plane_lowres@pipe-f-tiling-x,skip
+igt@kms_plane_lowres@pipe-f-tiling-y,skip
+igt@kms_plane_lowres@pipe-f-tiling-yf,skip
+igt@kms_plane_lowres@pipe-f-tiling-4,skip
+igt@kms_prop_blob@basic,pass
+igt@kms_prop_blob@blob-prop-core,pass
+igt@kms_prop_blob@blob-prop-validate,pass
+igt@kms_prop_blob@blob-prop-lifetime,pass
+igt@kms_prop_blob@blob-multiple,pass
+igt@kms_prop_blob@invalid-get-prop-any,pass
+igt@kms_prop_blob@invalid-get-prop,pass
+igt@kms_prop_blob@invalid-set-prop-any,pass
+igt@kms_prop_blob@invalid-set-prop,pass
+igt@kms_rmfb@rmfb-ioctl,skip
+igt@kms_rmfb@close-fd,skip
+igt@kms_rotation_crc@primary-rotation-90,skip
+igt@kms_rotation_crc@primary-rotation-180,skip
+igt@kms_rotation_crc@primary-rotation-270,skip
+igt@kms_rotation_crc@sprite-rotation-90,skip
+igt@kms_rotation_crc@sprite-rotation-180,skip
+igt@kms_rotation_crc@sprite-rotation-270,skip
+igt@kms_rotation_crc@cursor-rotation-180,skip
+igt@kms_rotation_crc@sprite-rotation-90-pos-100-0,skip
+igt@kms_rotation_crc@bad-pixel-format,skip
+igt@kms_rotation_crc@bad-tiling,skip
+igt@kms_rotation_crc@primary-x-tiled-reflect-x-0,skip
+igt@kms_rotation_crc@primary-x-tiled-reflect-x-180,skip
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-0,skip
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-90,skip
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-180,skip
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-270,skip
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0,skip
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90,skip
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180,skip
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270,skip
+igt@kms_rotation_crc@primary-4-tiled-reflect-x-0,skip
+igt@kms_rotation_crc@primary-4-tiled-reflect-x-180,skip
+igt@kms_rotation_crc@multiplane-rotation,skip
+igt@kms_rotation_crc@multiplane-rotation-cropping-top,skip
+igt@kms_rotation_crc@multiplane-rotation-cropping-bottom,skip
+igt@kms_rotation_crc@exhaust-fences,skip
+igt@kms_selftest@all,skip
+igt@kms_setmode@basic,skip
+igt@kms_setmode@basic-clone-single-crtc,skip
+igt@kms_setmode@invalid-clone-single-crtc,skip
+igt@kms_setmode@invalid-clone-exclusive-crtc,skip
+igt@kms_setmode@clone-exclusive-crtc,skip
+igt@kms_setmode@invalid-clone-single-crtc-stealing,skip
+igt@msm_mapping@sqefw,skip
+igt@msm_mapping@shadow,skip
+igt@msm_recovery@hangcheck,skip
+igt@msm_recovery@gpu-fault,skip
+igt@msm_recovery@iova-fault,skip
+igt@msm_submit@empty-submit,pass
+igt@msm_submit@invalid-queue-submit,pass
+igt@msm_submit@invalid-flags-submit,pass
+igt@msm_submit@invalid-in-fence-submit,pass
+igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
+igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
+igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
+igt@msm_submit@valid-submit,pass
+igt@kms_sysfs_edid_timing,pass
+igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-a-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-a,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-a,skip
+igt@kms_universal_plane@universal-plane-pipe-b-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-b-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-b,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-b,skip
+igt@kms_universal_plane@universal-plane-pipe-c-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-c-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-c,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-c,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-c,skip
+igt@kms_universal_plane@universal-plane-pipe-d-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-d-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-d,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-d,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-d,skip
+igt@kms_universal_plane@universal-plane-pipe-e-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-e-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-e,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-e,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-e,skip
+igt@kms_universal_plane@universal-plane-pipe-f-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-f-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-f,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-f,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-f,skip
+igt@kms_vblank@invalid,skip
+igt@kms_vblank@crtc-id,skip
+igt@kms_vblank@pipe-a-query-idle,skip
+igt@kms_vblank@pipe-a-query-idle-hang,skip
+igt@kms_vblank@pipe-a-query-forked,skip
+igt@kms_vblank@pipe-a-query-forked-hang,skip
+igt@kms_vblank@pipe-a-query-busy,skip
+igt@kms_vblank@pipe-a-query-busy-hang,skip
+igt@kms_vblank@pipe-a-query-forked-busy,skip
+igt@kms_vblank@pipe-a-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-a-wait-idle,skip
+igt@kms_vblank@pipe-a-wait-idle-hang,skip
+igt@kms_vblank@pipe-a-wait-forked,skip
+igt@kms_vblank@pipe-a-wait-forked-hang,skip
+igt@kms_vblank@pipe-a-wait-busy,skip
+igt@kms_vblank@pipe-a-wait-busy-hang,skip
+igt@kms_vblank@pipe-a-wait-forked-busy,skip
+igt@kms_vblank@pipe-a-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-a-ts-continuation-idle,skip
+igt@kms_vblank@pipe-a-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-a-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-a-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-b-accuracy-idle,skip
+igt@kms_vblank@pipe-b-query-idle,skip
+igt@kms_vblank@pipe-b-query-idle-hang,skip
+igt@kms_vblank@pipe-b-query-forked,skip
+igt@kms_vblank@pipe-b-query-forked-hang,skip
+igt@kms_vblank@pipe-b-query-busy,skip
+igt@kms_vblank@pipe-b-query-busy-hang,skip
+igt@kms_vblank@pipe-b-query-forked-busy,skip
+igt@kms_vblank@pipe-b-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-b-wait-idle,skip
+igt@kms_vblank@pipe-b-wait-idle-hang,skip
+igt@kms_vblank@pipe-b-wait-forked,skip
+igt@kms_vblank@pipe-b-wait-forked-hang,skip
+igt@kms_vblank@pipe-b-wait-busy,skip
+igt@kms_vblank@pipe-b-wait-busy-hang,skip
+igt@kms_vblank@pipe-b-wait-forked-busy,skip
+igt@kms_vblank@pipe-b-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-b-ts-continuation-idle,skip
+igt@kms_vblank@pipe-b-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-c-accuracy-idle,skip
+igt@kms_vblank@pipe-c-query-idle,skip
+igt@kms_vblank@pipe-c-query-idle-hang,skip
+igt@kms_vblank@pipe-c-query-forked,skip
+igt@kms_vblank@pipe-c-query-forked-hang,skip
+igt@kms_vblank@pipe-c-query-busy,skip
+igt@kms_vblank@pipe-c-query-busy-hang,skip
+igt@kms_vblank@pipe-c-query-forked-busy,skip
+igt@kms_vblank@pipe-c-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-c-wait-idle,skip
+igt@kms_vblank@pipe-c-wait-idle-hang,skip
+igt@kms_vblank@pipe-c-wait-forked,skip
+igt@kms_vblank@pipe-c-wait-forked-hang,skip
+igt@kms_vblank@pipe-c-wait-busy,skip
+igt@kms_vblank@pipe-c-wait-busy-hang,skip
+igt@kms_vblank@pipe-c-wait-forked-busy,skip
+igt@kms_vblank@pipe-c-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-c-ts-continuation-idle,skip
+igt@kms_vblank@pipe-c-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-c-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-c-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-c-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-c-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-d-accuracy-idle,skip
+igt@kms_vblank@pipe-d-query-idle,skip
+igt@kms_vblank@pipe-d-query-idle-hang,skip
+igt@kms_vblank@pipe-d-query-forked,skip
+igt@kms_vblank@pipe-d-query-forked-hang,skip
+igt@kms_vblank@pipe-d-query-busy,skip
+igt@kms_vblank@pipe-d-query-busy-hang,skip
+igt@kms_vblank@pipe-d-query-forked-busy,skip
+igt@kms_vblank@pipe-d-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-d-wait-idle,skip
+igt@kms_vblank@pipe-d-wait-idle-hang,skip
+igt@kms_vblank@pipe-d-wait-forked,skip
+igt@kms_vblank@pipe-d-wait-forked-hang,skip
+igt@kms_vblank@pipe-d-wait-busy,skip
+igt@kms_vblank@pipe-d-wait-busy-hang,skip
+igt@kms_vblank@pipe-d-wait-forked-busy,skip
+igt@kms_vblank@pipe-d-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-d-ts-continuation-idle,skip
+igt@kms_vblank@pipe-d-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-d-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-d-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-d-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-d-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-e-accuracy-idle,skip
+igt@kms_vblank@pipe-e-query-idle,skip
+igt@kms_vblank@pipe-e-query-idle-hang,skip
+igt@kms_vblank@pipe-e-query-forked,skip
+igt@kms_vblank@pipe-e-query-forked-hang,skip
+igt@kms_vblank@pipe-e-query-busy,skip
+igt@kms_vblank@pipe-e-query-busy-hang,skip
+igt@kms_vblank@pipe-e-query-forked-busy,skip
+igt@kms_vblank@pipe-e-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-e-wait-idle,skip
+igt@kms_vblank@pipe-e-wait-idle-hang,skip
+igt@kms_vblank@pipe-e-wait-forked,skip
+igt@kms_vblank@pipe-e-wait-forked-hang,skip
+igt@kms_vblank@pipe-e-wait-busy,skip
+igt@kms_vblank@pipe-e-wait-busy-hang,skip
+igt@kms_vblank@pipe-e-wait-forked-busy,skip
+igt@kms_vblank@pipe-e-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-e-ts-continuation-idle,skip
+igt@kms_vblank@pipe-e-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-e-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-e-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-e-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-e-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-f-accuracy-idle,skip
+igt@kms_vblank@pipe-f-query-idle,skip
+igt@kms_vblank@pipe-f-query-idle-hang,skip
+igt@kms_vblank@pipe-f-query-forked,skip
+igt@kms_vblank@pipe-f-query-forked-hang,skip
+igt@kms_vblank@pipe-f-query-busy,skip
+igt@kms_vblank@pipe-f-query-busy-hang,skip
+igt@kms_vblank@pipe-f-query-forked-busy,skip
+igt@kms_vblank@pipe-f-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-f-wait-idle,skip
+igt@kms_vblank@pipe-f-wait-idle-hang,skip
+igt@kms_vblank@pipe-f-wait-forked,skip
+igt@kms_vblank@pipe-f-wait-forked-hang,skip
+igt@kms_vblank@pipe-f-wait-busy,skip
+igt@kms_vblank@pipe-f-wait-busy-hang,skip
+igt@kms_vblank@pipe-f-wait-forked-busy,skip
+igt@kms_vblank@pipe-f-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-f-ts-continuation-idle,skip
+igt@kms_vblank@pipe-f-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-f-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-f-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-f-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-f-ts-continuation-modeset-rpm,skip
+igt@kms_vrr@flip-basic,skip
+igt@kms_vrr@flip-dpms,skip
+igt@kms_vrr@flipline,skip
+igt@kms_async_flip@async-flip-with-page-flip-events,skip
+igt@kms_async_flip@alternate-sync-async-flip,skip
+igt@kms_async_flip@test-time-stamp,skip
+igt@kms_async_flip@test-cursor,skip
+igt@kms_async_flip@invalid-async-flip,skip
+igt@kms_async_flip@crc,skip
diff --git a/drivers/gpu/drm/msm/ci/msm_a530_results.txt b/drivers/gpu/drm/msm/ci/msm_a530_results.txt
new file mode 100644
index 000000000000..d5bf402f830c
--- /dev/null
+++ b/drivers/gpu/drm/msm/ci/msm_a530_results.txt
@@ -0,0 +1,421 @@
+igt@core_auth@getclient-simple,pass
+igt@core_auth@getclient-master-drop,pass
+igt@core_auth@basic-auth,pass
+igt@core_auth@many-magics,pass
+igt@core_getclient,pass
+igt@core_getstats,pass
+igt@core_getversion,pass
+igt@core_setmaster_vs_auth,pass
+igt@drm_read@invalid-buffer,skip
+igt@drm_read@fault-buffer,skip
+igt@drm_read@empty-block,skip
+igt@drm_read@empty-nonblock,skip
+igt@drm_read@short-buffer-block,skip
+igt@drm_read@short-buffer-nonblock,skip
+igt@drm_read@short-buffer-wakeup,skip
+igt@kms_addfb_basic@unused-handle,pass
+igt@kms_addfb_basic@unused-pitches,pass
+igt@kms_addfb_basic@unused-offsets,pass
+igt@kms_addfb_basic@unused-modifier,pass
+igt@kms_addfb_basic@clobberred-modifier,skip
+igt@kms_addfb_basic@invalid-smem-bo-on-discrete,skip
+igt@kms_addfb_basic@legacy-format,dmesg-warn
+igt@kms_addfb_basic@no-handle,pass
+igt@kms_addfb_basic@basic,pass
+igt@kms_addfb_basic@bad-pitch-0,pass
+igt@kms_addfb_basic@bad-pitch-32,pass
+igt@kms_addfb_basic@bad-pitch-63,pass
+igt@kms_addfb_basic@bad-pitch-128,pass
+igt@kms_addfb_basic@bad-pitch-256,pass
+igt@kms_addfb_basic@bad-pitch-1024,pass
+igt@kms_addfb_basic@bad-pitch-999,pass
+igt@kms_addfb_basic@bad-pitch-65536,pass
+igt@kms_addfb_basic@size-max,pass
+igt@kms_addfb_basic@too-wide,pass
+igt@kms_addfb_basic@too-high,dmesg-warn
+igt@kms_addfb_basic@bo-too-small,pass
+igt@kms_addfb_basic@small-bo,pass
+igt@kms_addfb_basic@bo-too-small-due-to-tiling,skip
+igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
+igt@kms_addfb_basic@addfb25-bad-modifier,fail
+igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy,skip
+igt@kms_addfb_basic@addfb25-x-tiled-legacy,skip
+igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling,skip
+igt@kms_addfb_basic@addfb25-y-tiled-legacy,skip
+igt@kms_addfb_basic@addfb25-yf-tiled-legacy,skip
+igt@kms_addfb_basic@addfb25-y-tiled-small-legacy,skip
+igt@kms_addfb_basic@addfb25-4-tiled,skip
+igt@kms_addfb_basic@basic-x-tiled-legacy,skip
+igt@kms_addfb_basic@framebuffer-vs-set-tiling,skip
+igt@kms_addfb_basic@tile-pitch-mismatch,skip
+igt@kms_addfb_basic@basic-y-tiled-legacy,skip
+igt@kms_addfb_basic@invalid-get-prop-any,pass
+igt@kms_addfb_basic@invalid-get-prop,pass
+igt@kms_addfb_basic@invalid-set-prop-any,pass
+igt@kms_addfb_basic@invalid-set-prop,pass
+igt@kms_addfb_basic@master-rmfb,pass
+igt@kms_atomic@plane-overlay-legacy,skip
+igt@kms_atomic@plane-primary-legacy,skip
+igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
+igt@kms_atomic@plane-immutable-zpos,skip
+igt@kms_atomic@test-only,skip
+igt@kms_atomic@plane-cursor-legacy,skip
+igt@kms_atomic@plane-invalid-params,skip
+igt@kms_atomic@plane-invalid-params-fence,skip
+igt@kms_atomic@crtc-invalid-params,skip
+igt@kms_atomic@crtc-invalid-params-fence,skip
+igt@kms_atomic@atomic-invalid-params,skip
+igt@kms_atomic@atomic_plane_damage,skip
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@legacy,skip
+igt@kms_content_protection@atomic,skip
+igt@kms_content_protection@atomic-dpms,skip
+igt@kms_content_protection@lic,skip
+igt@kms_content_protection@type1,skip
+igt@kms_content_protection@mei_interface,skip
+igt@kms_content_protection@content_type_change,skip
+igt@kms_content_protection@uevent,skip
+igt@kms_content_protection@srm,skip
+igt@kms_content_protection@dp-mst-type-0,skip
+igt@kms_content_protection@dp-mst-lic-type-0,skip
+igt@kms_content_protection@dp-mst-type-1,skip
+igt@kms_content_protection@dp-mst-lic-type-1,skip
+igt@kms_dp_aux_dev,skip
+igt@kms_flip_event_leak,skip
+igt@kms_getfb@getfb-handle-zero,pass
+igt@kms_getfb@getfb-handle-valid,pass
+igt@kms_getfb@getfb-handle-closed,pass
+igt@kms_getfb@getfb-handle-not-fb,pass
+igt@kms_getfb@getfb-addfb-different-handles,pass
+igt@kms_getfb@getfb-repeated-different-handles,pass
+igt@kms_getfb@getfb-reject-ccs,skip
+igt@kms_getfb@getfb2-handle-zero,pass
+igt@kms_getfb@getfb2-handle-closed,pass
+igt@kms_getfb@getfb2-handle-not-fb,pass
+igt@kms_getfb@getfb2-accept-ccs,skip
+igt@kms_getfb@getfb2-into-addfb2,pass
+igt@kms_getfb@getfb-handle-protection,pass
+igt@kms_getfb@getfb2-handle-protection,pass
+igt@kms_hdmi_inject@inject-4k,dmesg-warn
+igt@kms_hdmi_inject@inject-audio,skip
+igt@kms_hdr@bpc-switch,skip
+igt@kms_hdr@bpc-switch-dpms,skip
+igt@kms_hdr@static-toggle,skip
+igt@kms_hdr@static-toggle-dpms,skip
+igt@kms_hdr@static-swap,skip
+igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
+igt@kms_pipe_crc_basic@bad-source,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-c,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-c,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-c,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-d,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-d,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-e,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-e-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-e,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-e,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-e,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-f,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-f-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-f,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-f,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-f,skip
+igt@kms_plane_lowres@pipe-a-tiling-none,skip
+igt@kms_plane_lowres@pipe-a-tiling-x,skip
+igt@kms_plane_lowres@pipe-a-tiling-y,skip
+igt@kms_plane_lowres@pipe-a-tiling-yf,skip
+igt@kms_plane_lowres@pipe-a-tiling-4,skip
+igt@kms_plane_lowres@pipe-b-tiling-none,skip
+igt@kms_plane_lowres@pipe-b-tiling-x,skip
+igt@kms_plane_lowres@pipe-b-tiling-y,skip
+igt@kms_plane_lowres@pipe-b-tiling-yf,skip
+igt@kms_plane_lowres@pipe-b-tiling-4,skip
+igt@kms_plane_lowres@pipe-c-tiling-none,skip
+igt@kms_plane_lowres@pipe-c-tiling-x,skip
+igt@kms_plane_lowres@pipe-c-tiling-y,skip
+igt@kms_plane_lowres@pipe-c-tiling-yf,skip
+igt@kms_plane_lowres@pipe-c-tiling-4,skip
+igt@kms_plane_lowres@pipe-d-tiling-none,skip
+igt@kms_plane_lowres@pipe-d-tiling-x,skip
+igt@kms_plane_lowres@pipe-d-tiling-y,skip
+igt@kms_plane_lowres@pipe-d-tiling-yf,skip
+igt@kms_plane_lowres@pipe-d-tiling-4,skip
+igt@kms_plane_lowres@pipe-e-tiling-none,skip
+igt@kms_plane_lowres@pipe-e-tiling-x,skip
+igt@kms_plane_lowres@pipe-e-tiling-y,skip
+igt@kms_plane_lowres@pipe-e-tiling-yf,skip
+igt@kms_plane_lowres@pipe-e-tiling-4,skip
+igt@kms_plane_lowres@pipe-f-tiling-none,skip
+igt@kms_plane_lowres@pipe-f-tiling-x,skip
+igt@kms_plane_lowres@pipe-f-tiling-y,skip
+igt@kms_plane_lowres@pipe-f-tiling-yf,skip
+igt@kms_plane_lowres@pipe-f-tiling-4,skip
+igt@kms_prop_blob@basic,pass
+igt@kms_prop_blob@blob-prop-core,pass
+igt@kms_prop_blob@blob-prop-validate,pass
+igt@kms_prop_blob@blob-prop-lifetime,pass
+igt@kms_prop_blob@blob-multiple,pass
+igt@kms_prop_blob@invalid-get-prop-any,pass
+igt@kms_prop_blob@invalid-get-prop,pass
+igt@kms_prop_blob@invalid-set-prop-any,pass
+igt@kms_prop_blob@invalid-set-prop,pass
+igt@kms_rmfb@rmfb-ioctl,skip
+igt@kms_rmfb@close-fd,skip
+igt@kms_rotation_crc@primary-rotation-90,skip
+igt@kms_rotation_crc@primary-rotation-180,skip
+igt@kms_rotation_crc@primary-rotation-270,skip
+igt@kms_rotation_crc@sprite-rotation-90,skip
+igt@kms_rotation_crc@sprite-rotation-180,skip
+igt@kms_rotation_crc@sprite-rotation-270,skip
+igt@kms_rotation_crc@cursor-rotation-180,skip
+igt@kms_rotation_crc@sprite-rotation-90-pos-100-0,skip
+igt@kms_rotation_crc@bad-pixel-format,skip
+igt@kms_rotation_crc@bad-tiling,skip
+igt@kms_rotation_crc@primary-x-tiled-reflect-x-0,skip
+igt@kms_rotation_crc@primary-x-tiled-reflect-x-180,skip
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-0,skip
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-90,skip
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-180,skip
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-270,skip
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0,skip
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90,skip
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180,skip
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270,skip
+igt@kms_rotation_crc@primary-4-tiled-reflect-x-0,skip
+igt@kms_rotation_crc@primary-4-tiled-reflect-x-180,skip
+igt@kms_rotation_crc@multiplane-rotation,skip
+igt@kms_rotation_crc@multiplane-rotation-cropping-top,skip
+igt@kms_rotation_crc@multiplane-rotation-cropping-bottom,skip
+igt@kms_rotation_crc@exhaust-fences,skip
+igt@kms_selftest@all,skip
+igt@kms_setmode@basic,skip
+igt@kms_setmode@basic-clone-single-crtc,skip
+igt@kms_setmode@invalid-clone-single-crtc,skip
+igt@kms_setmode@invalid-clone-exclusive-crtc,skip
+igt@kms_setmode@clone-exclusive-crtc,skip
+igt@kms_setmode@invalid-clone-single-crtc-stealing,skip
+igt@msm_mapping@sqefw,skip
+igt@msm_mapping@shadow,skip
+igt@msm_recovery@hangcheck,skip
+igt@msm_recovery@gpu-fault,skip
+igt@msm_recovery@iova-fault,skip
+igt@msm_submit@empty-submit,pass
+igt@msm_submit@invalid-queue-submit,pass
+igt@msm_submit@invalid-flags-submit,pass
+igt@msm_submit@invalid-in-fence-submit,pass
+igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
+igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
+igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
+igt@msm_submit@valid-submit,pass
+igt@kms_sysfs_edid_timing,pass
+igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-a-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-a,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-a,skip
+igt@kms_universal_plane@universal-plane-pipe-b-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-b-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-b,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-b,skip
+igt@kms_universal_plane@universal-plane-pipe-c-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-c-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-c,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-c,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-c,skip
+igt@kms_universal_plane@universal-plane-pipe-d-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-d-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-d,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-d,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-d,skip
+igt@kms_universal_plane@universal-plane-pipe-e-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-e-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-e,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-e,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-e,skip
+igt@kms_universal_plane@universal-plane-pipe-f-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-f-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-f,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-f,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-f,skip
+igt@kms_vblank@invalid,skip
+igt@kms_vblank@crtc-id,skip
+igt@kms_vblank@pipe-a-query-idle,skip
+igt@kms_vblank@pipe-a-query-idle-hang,skip
+igt@kms_vblank@pipe-a-query-forked,skip
+igt@kms_vblank@pipe-a-query-forked-hang,skip
+igt@kms_vblank@pipe-a-query-busy,skip
+igt@kms_vblank@pipe-a-query-busy-hang,skip
+igt@kms_vblank@pipe-a-query-forked-busy,skip
+igt@kms_vblank@pipe-a-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-a-wait-idle,skip
+igt@kms_vblank@pipe-a-wait-idle-hang,skip
+igt@kms_vblank@pipe-a-wait-forked,skip
+igt@kms_vblank@pipe-a-wait-forked-hang,skip
+igt@kms_vblank@pipe-a-wait-busy,skip
+igt@kms_vblank@pipe-a-wait-busy-hang,skip
+igt@kms_vblank@pipe-a-wait-forked-busy,skip
+igt@kms_vblank@pipe-a-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-a-ts-continuation-idle,skip
+igt@kms_vblank@pipe-a-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-a-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-a-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-b-accuracy-idle,skip
+igt@kms_vblank@pipe-b-query-idle,skip
+igt@kms_vblank@pipe-b-query-idle-hang,skip
+igt@kms_vblank@pipe-b-query-forked,skip
+igt@kms_vblank@pipe-b-query-forked-hang,skip
+igt@kms_vblank@pipe-b-query-busy,skip
+igt@kms_vblank@pipe-b-query-busy-hang,skip
+igt@kms_vblank@pipe-b-query-forked-busy,skip
+igt@kms_vblank@pipe-b-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-b-wait-idle,skip
+igt@kms_vblank@pipe-b-wait-idle-hang,skip
+igt@kms_vblank@pipe-b-wait-forked,skip
+igt@kms_vblank@pipe-b-wait-forked-hang,skip
+igt@kms_vblank@pipe-b-wait-busy,skip
+igt@kms_vblank@pipe-b-wait-busy-hang,skip
+igt@kms_vblank@pipe-b-wait-forked-busy,skip
+igt@kms_vblank@pipe-b-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-b-ts-continuation-idle,skip
+igt@kms_vblank@pipe-b-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-c-accuracy-idle,skip
+igt@kms_vblank@pipe-c-query-idle,skip
+igt@kms_vblank@pipe-c-query-idle-hang,skip
+igt@kms_vblank@pipe-c-query-forked,skip
+igt@kms_vblank@pipe-c-query-forked-hang,skip
+igt@kms_vblank@pipe-c-query-busy,skip
+igt@kms_vblank@pipe-c-query-busy-hang,skip
+igt@kms_vblank@pipe-c-query-forked-busy,skip
+igt@kms_vblank@pipe-c-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-c-wait-idle,skip
+igt@kms_vblank@pipe-c-wait-idle-hang,skip
+igt@kms_vblank@pipe-c-wait-forked,skip
+igt@kms_vblank@pipe-c-wait-forked-hang,skip
+igt@kms_vblank@pipe-c-wait-busy,skip
+igt@kms_vblank@pipe-c-wait-busy-hang,skip
+igt@kms_vblank@pipe-c-wait-forked-busy,skip
+igt@kms_vblank@pipe-c-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-c-ts-continuation-idle,skip
+igt@kms_vblank@pipe-c-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-c-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-c-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-c-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-c-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-d-accuracy-idle,skip
+igt@kms_vblank@pipe-d-query-idle,skip
+igt@kms_vblank@pipe-d-query-idle-hang,skip
+igt@kms_vblank@pipe-d-query-forked,skip
+igt@kms_vblank@pipe-d-query-forked-hang,skip
+igt@kms_vblank@pipe-d-query-busy,skip
+igt@kms_vblank@pipe-d-query-busy-hang,skip
+igt@kms_vblank@pipe-d-query-forked-busy,skip
+igt@kms_vblank@pipe-d-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-d-wait-idle,skip
+igt@kms_vblank@pipe-d-wait-idle-hang,skip
+igt@kms_vblank@pipe-d-wait-forked,skip
+igt@kms_vblank@pipe-d-wait-forked-hang,skip
+igt@kms_vblank@pipe-d-wait-busy,skip
+igt@kms_vblank@pipe-d-wait-busy-hang,skip
+igt@kms_vblank@pipe-d-wait-forked-busy,skip
+igt@kms_vblank@pipe-d-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-d-ts-continuation-idle,skip
+igt@kms_vblank@pipe-d-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-d-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-d-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-d-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-d-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-e-accuracy-idle,skip
+igt@kms_vblank@pipe-e-query-idle,skip
+igt@kms_vblank@pipe-e-query-idle-hang,skip
+igt@kms_vblank@pipe-e-query-forked,skip
+igt@kms_vblank@pipe-e-query-forked-hang,skip
+igt@kms_vblank@pipe-e-query-busy,skip
+igt@kms_vblank@pipe-e-query-busy-hang,skip
+igt@kms_vblank@pipe-e-query-forked-busy,skip
+igt@kms_vblank@pipe-e-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-e-wait-idle,skip
+igt@kms_vblank@pipe-e-wait-idle-hang,skip
+igt@kms_vblank@pipe-e-wait-forked,skip
+igt@kms_vblank@pipe-e-wait-forked-hang,skip
+igt@kms_vblank@pipe-e-wait-busy,skip
+igt@kms_vblank@pipe-e-wait-busy-hang,skip
+igt@kms_vblank@pipe-e-wait-forked-busy,skip
+igt@kms_vblank@pipe-e-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-e-ts-continuation-idle,skip
+igt@kms_vblank@pipe-e-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-e-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-e-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-e-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-e-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-f-accuracy-idle,skip
+igt@kms_vblank@pipe-f-query-idle,skip
+igt@kms_vblank@pipe-f-query-idle-hang,skip
+igt@kms_vblank@pipe-f-query-forked,skip
+igt@kms_vblank@pipe-f-query-forked-hang,skip
+igt@kms_vblank@pipe-f-query-busy,skip
+igt@kms_vblank@pipe-f-query-busy-hang,skip
+igt@kms_vblank@pipe-f-query-forked-busy,skip
+igt@kms_vblank@pipe-f-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-f-wait-idle,skip
+igt@kms_vblank@pipe-f-wait-idle-hang,skip
+igt@kms_vblank@pipe-f-wait-forked,skip
+igt@kms_vblank@pipe-f-wait-forked-hang,skip
+igt@kms_vblank@pipe-f-wait-busy,skip
+igt@kms_vblank@pipe-f-wait-busy-hang,skip
+igt@kms_vblank@pipe-f-wait-forked-busy,skip
+igt@kms_vblank@pipe-f-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-f-ts-continuation-idle,skip
+igt@kms_vblank@pipe-f-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-f-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-f-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-f-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-f-ts-continuation-modeset-rpm,skip
+igt@kms_vrr@flip-basic,skip
+igt@kms_vrr@flip-dpms,skip
+igt@kms_vrr@flipline,skip
+igt@kms_async_flip@async-flip-with-page-flip-events,skip
+igt@kms_async_flip@alternate-sync-async-flip,skip
+igt@kms_async_flip@test-time-stamp,skip
+igt@kms_async_flip@test-cursor,skip
+igt@kms_async_flip@invalid-async-flip,skip
+igt@kms_async_flip@crc,skip
diff --git a/drivers/gpu/drm/msm/ci/msm_a618_results.txt b/drivers/gpu/drm/msm/ci/msm_a618_results.txt
new file mode 100644
index 000000000000..6e42262bf61b
--- /dev/null
+++ b/drivers/gpu/drm/msm/ci/msm_a618_results.txt
@@ -0,0 +1,422 @@
+igt@core_auth@getclient-simple,dmesg-warn
+igt@core_auth@getclient-master-drop,pass
+igt@core_auth@basic-auth,pass
+igt@core_auth@many-magics,pass
+igt@core_getclient,pass
+igt@core_getstats,pass
+igt@core_getversion,pass
+igt@core_setmaster_vs_auth,pass
+igt@drm_read@invalid-buffer,pass
+igt@drm_read@fault-buffer,pass
+igt@drm_read@empty-block,pass
+igt@drm_read@empty-nonblock,pass
+igt@drm_read@short-buffer-block,pass
+igt@drm_read@short-buffer-nonblock,pass
+igt@drm_read@short-buffer-wakeup,pass
+igt@kms_addfb_basic@unused-handle,pass
+igt@kms_addfb_basic@unused-pitches,pass
+igt@kms_addfb_basic@unused-offsets,pass
+igt@kms_addfb_basic@unused-modifier,pass
+igt@kms_addfb_basic@clobberred-modifier,skip
+igt@kms_addfb_basic@invalid-smem-bo-on-discrete,skip
+igt@kms_addfb_basic@legacy-format,dmesg-warn
+igt@kms_addfb_basic@no-handle,pass
+igt@kms_addfb_basic@basic,pass
+igt@kms_addfb_basic@bad-pitch-0,pass
+igt@kms_addfb_basic@bad-pitch-32,pass
+igt@kms_addfb_basic@bad-pitch-63,pass
+igt@kms_addfb_basic@bad-pitch-128,pass
+igt@kms_addfb_basic@bad-pitch-256,pass
+igt@kms_addfb_basic@bad-pitch-1024,pass
+igt@kms_addfb_basic@bad-pitch-999,pass
+igt@kms_addfb_basic@bad-pitch-65536,pass
+igt@kms_addfb_basic@size-max,pass
+igt@kms_addfb_basic@too-wide,pass
+igt@kms_addfb_basic@too-high,dmesg-warn
+igt@kms_addfb_basic@bo-too-small,pass
+igt@kms_addfb_basic@small-bo,pass
+igt@kms_addfb_basic@bo-too-small-due-to-tiling,skip
+igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
+igt@kms_addfb_basic@addfb25-bad-modifier,dmesg-warn
+igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy,skip
+igt@kms_addfb_basic@addfb25-x-tiled-legacy,skip
+igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling,skip
+igt@kms_addfb_basic@addfb25-y-tiled-legacy,skip
+igt@kms_addfb_basic@addfb25-yf-tiled-legacy,skip
+igt@kms_addfb_basic@addfb25-y-tiled-small-legacy,skip
+igt@kms_addfb_basic@addfb25-4-tiled,skip
+igt@kms_addfb_basic@basic-x-tiled-legacy,skip
+igt@kms_addfb_basic@framebuffer-vs-set-tiling,skip
+igt@kms_addfb_basic@tile-pitch-mismatch,skip
+igt@kms_addfb_basic@basic-y-tiled-legacy,skip
+igt@kms_addfb_basic@invalid-get-prop-any,pass
+igt@kms_addfb_basic@invalid-get-prop,pass
+igt@kms_addfb_basic@invalid-set-prop-any,pass
+igt@kms_addfb_basic@invalid-set-prop,pass
+igt@kms_addfb_basic@master-rmfb,pass
+igt@kms_atomic@plane-overlay-legacy,skip
+igt@kms_atomic@plane-primary-legacy,pass
+igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
+igt@kms_atomic@plane-immutable-zpos,pass
+igt@kms_atomic@test-only,pass
+igt@kms_atomic@plane-cursor-legacy,pass
+igt@kms_atomic@plane-invalid-params,pass
+igt@kms_atomic@plane-invalid-params-fence,skip
+igt@kms_atomic@crtc-invalid-params,pass
+igt@kms_atomic@crtc-invalid-params-fence,skip
+igt@kms_atomic@atomic-invalid-params,pass
+igt@kms_atomic@atomic_plane_damage,pass
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@legacy,skip
+igt@kms_content_protection@atomic,skip
+igt@kms_content_protection@atomic-dpms,skip
+igt@kms_content_protection@lic,skip
+igt@kms_content_protection@type1,skip
+igt@kms_content_protection@mei_interface,skip
+igt@kms_content_protection@content_type_change,skip
+igt@kms_content_protection@uevent,skip
+igt@kms_content_protection@srm,skip
+igt@kms_content_protection@dp-mst-type-0,skip
+igt@kms_content_protection@dp-mst-lic-type-0,skip
+igt@kms_content_protection@dp-mst-type-1,skip
+igt@kms_content_protection@dp-mst-lic-type-1,skip
+igt@kms_dp_aux_dev,skip
+igt@kms_flip_event_leak,pass
+igt@kms_getfb@getfb-handle-zero,pass
+igt@kms_getfb@getfb-handle-valid,pass
+igt@kms_getfb@getfb-handle-closed,pass
+igt@kms_getfb@getfb-handle-not-fb,pass
+igt@kms_getfb@getfb-addfb-different-handles,pass
+igt@kms_getfb@getfb-repeated-different-handles,pass
+igt@kms_getfb@getfb-reject-ccs,skip
+igt@kms_getfb@getfb2-handle-zero,pass
+igt@kms_getfb@getfb2-handle-closed,pass
+igt@kms_getfb@getfb2-handle-not-fb,pass
+igt@kms_getfb@getfb2-accept-ccs,skip
+igt@kms_getfb@getfb2-into-addfb2,pass
+igt@kms_getfb@getfb-handle-protection,pass
+igt@kms_getfb@getfb2-handle-protection,pass
+igt@kms_hdmi_inject@inject-4k,skip
+igt@kms_hdmi_inject@inject-audio,skip
+igt@kms_hdr@bpc-switch,skip
+igt@kms_hdr@bpc-switch-dpms,skip
+igt@kms_hdr@static-toggle,skip
+igt@kms_hdr@static-toggle-dpms,skip
+igt@kms_hdr@static-swap,skip
+igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
+igt@kms_pipe_crc_basic@bad-source,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-a,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,pass
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,pass
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,pass
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,pass
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-b,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,pass
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,pass
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,pass
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,pass
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-c,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-c,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-c,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-d,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-d,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-e,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-e-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-e,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-e,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-e,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-f,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-f-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-f,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-f,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-f,skip
+igt@kms_plane_lowres@pipe-a-tiling-none,skip
+igt@kms_plane_lowres@pipe-a-tiling-x,skip
+igt@kms_plane_lowres@pipe-a-tiling-y,skip
+igt@kms_plane_lowres@pipe-a-tiling-yf,skip
+igt@kms_plane_lowres@pipe-a-tiling-4,skip
+igt@kms_plane_lowres@pipe-b-tiling-none,skip
+igt@kms_plane_lowres@pipe-b-tiling-x,skip
+igt@kms_plane_lowres@pipe-b-tiling-y,skip
+igt@kms_plane_lowres@pipe-b-tiling-yf,skip
+igt@kms_plane_lowres@pipe-b-tiling-4,skip
+igt@kms_plane_lowres@pipe-c-tiling-none,skip
+igt@kms_plane_lowres@pipe-c-tiling-x,skip
+igt@kms_plane_lowres@pipe-c-tiling-y,skip
+igt@kms_plane_lowres@pipe-c-tiling-yf,skip
+igt@kms_plane_lowres@pipe-c-tiling-4,skip
+igt@kms_plane_lowres@pipe-d-tiling-none,skip
+igt@kms_plane_lowres@pipe-d-tiling-x,skip
+igt@kms_plane_lowres@pipe-d-tiling-y,skip
+igt@kms_plane_lowres@pipe-d-tiling-yf,skip
+igt@kms_plane_lowres@pipe-d-tiling-4,skip
+igt@kms_plane_lowres@pipe-e-tiling-none,skip
+igt@kms_plane_lowres@pipe-e-tiling-x,skip
+igt@kms_plane_lowres@pipe-e-tiling-y,skip
+igt@kms_plane_lowres@pipe-e-tiling-yf,skip
+igt@kms_plane_lowres@pipe-e-tiling-4,skip
+igt@kms_plane_lowres@pipe-f-tiling-none,skip
+igt@kms_plane_lowres@pipe-f-tiling-x,skip
+igt@kms_plane_lowres@pipe-f-tiling-y,skip
+igt@kms_plane_lowres@pipe-f-tiling-yf,skip
+igt@kms_plane_lowres@pipe-f-tiling-4,skip
+igt@kms_prop_blob@basic,pass
+igt@kms_prop_blob@blob-prop-core,pass
+igt@kms_prop_blob@blob-prop-validate,pass
+igt@kms_prop_blob@blob-prop-lifetime,pass
+igt@kms_prop_blob@blob-multiple,pass
+igt@kms_prop_blob@invalid-get-prop-any,pass
+igt@kms_prop_blob@invalid-get-prop,pass
+igt@kms_prop_blob@invalid-set-prop-any,pass
+igt@kms_prop_blob@invalid-set-prop,pass
+igt@kms_rmfb@rmfb-ioctl,pass
+igt@kms_rmfb@close-fd,fail
+igt@kms_rotation_crc@primary-rotation-90,skip
+igt@kms_rotation_crc@primary-rotation-180,skip
+igt@kms_rotation_crc@primary-rotation-270,skip
+igt@kms_rotation_crc@sprite-rotation-90,skip
+igt@kms_rotation_crc@sprite-rotation-180,skip
+igt@kms_rotation_crc@sprite-rotation-270,skip
+igt@kms_rotation_crc@cursor-rotation-180,skip
+igt@kms_rotation_crc@sprite-rotation-90-pos-100-0,skip
+igt@kms_rotation_crc@bad-pixel-format,skip
+igt@kms_rotation_crc@bad-tiling,skip
+igt@kms_rotation_crc@primary-x-tiled-reflect-x-0,skip
+igt@kms_rotation_crc@primary-x-tiled-reflect-x-180,skip
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-0,skip
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-90,skip
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-180,skip
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-270,skip
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0,skip
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90,skip
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180,skip
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270,skip
+igt@kms_rotation_crc@primary-4-tiled-reflect-x-0,skip
+igt@kms_rotation_crc@primary-4-tiled-reflect-x-180,skip
+igt@kms_rotation_crc@multiplane-rotation,skip
+igt@kms_rotation_crc@multiplane-rotation-cropping-top,skip
+igt@kms_rotation_crc@multiplane-rotation-cropping-bottom,skip
+igt@kms_rotation_crc@exhaust-fences,skip
+igt@kms_selftest@all,skip
+igt@kms_setmode@basic@pipe-a-edp-1,pass
+igt@kms_setmode@basic@pipe-b-edp-1,pass
+igt@kms_setmode@basic-clone-single-crtc,skip
+igt@kms_setmode@invalid-clone-single-crtc,skip
+igt@kms_setmode@invalid-clone-exclusive-crtc,skip
+igt@kms_setmode@clone-exclusive-crtc,skip
+igt@kms_setmode@invalid-clone-single-crtc-stealing,skip
+igt@msm_mapping@sqefw,dmesg-fail
+igt@msm_mapping@shadow,dmesg-fail
+igt@msm_recovery@hangcheck,dmesg-warn
+igt@msm_recovery@gpu-fault,dmesg-warn
+igt@msm_recovery@iova-fault,dmesg-warn
+igt@msm_submit@empty-submit,pass
+igt@msm_submit@invalid-queue-submit,pass
+igt@msm_submit@invalid-flags-submit,pass
+igt@msm_submit@invalid-in-fence-submit,pass
+igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
+igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
+igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
+igt@msm_submit@valid-submit,pass
+igt@kms_sysfs_edid_timing,pass
+igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-a-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,pass
+igt@kms_universal_plane@cursor-fb-leak-pipe-a,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-a,skip
+igt@kms_universal_plane@universal-plane-pipe-b-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-b-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,fail
+igt@kms_universal_plane@cursor-fb-leak-pipe-b,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-b,skip
+igt@kms_universal_plane@universal-plane-pipe-c-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-c-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-c,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-c,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-c,skip
+igt@kms_universal_plane@universal-plane-pipe-d-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-d-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-d,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-d,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-d,skip
+igt@kms_universal_plane@universal-plane-pipe-e-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-e-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-e,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-e,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-e,skip
+igt@kms_universal_plane@universal-plane-pipe-f-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-f-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-f,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-f,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-f,skip
+igt@kms_vblank@invalid,pass
+igt@kms_vblank@crtc-id,pass
+igt@kms_vblank@pipe-a-query-idle,pass
+igt@kms_vblank@pipe-a-query-idle-hang,skip
+igt@kms_vblank@pipe-a-query-forked,pass
+igt@kms_vblank@pipe-a-query-forked-hang,skip
+igt@kms_vblank@pipe-a-query-busy,pass
+igt@kms_vblank@pipe-a-query-busy-hang,skip
+igt@kms_vblank@pipe-a-query-forked-busy,pass
+igt@kms_vblank@pipe-a-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-a-wait-idle,pass
+igt@kms_vblank@pipe-a-wait-idle-hang,skip
+igt@kms_vblank@pipe-a-wait-forked,pass
+igt@kms_vblank@pipe-a-wait-forked-hang,skip
+igt@kms_vblank@pipe-a-wait-busy,pass
+igt@kms_vblank@pipe-a-wait-busy-hang,skip
+igt@kms_vblank@pipe-a-wait-forked-busy,pass
+igt@kms_vblank@pipe-a-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-a-ts-continuation-idle,pass
+igt@kms_vblank@pipe-a-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-a-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-a-ts-continuation-modeset,pass
+igt@kms_vblank@pipe-a-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-b-accuracy-idle,pass
+igt@kms_vblank@pipe-b-query-idle,pass
+igt@kms_vblank@pipe-b-query-idle-hang,skip
+igt@kms_vblank@pipe-b-query-forked,pass
+igt@kms_vblank@pipe-b-query-forked-hang,skip
+igt@kms_vblank@pipe-b-query-busy,pass
+igt@kms_vblank@pipe-b-query-busy-hang,skip
+igt@kms_vblank@pipe-b-query-forked-busy,pass
+igt@kms_vblank@pipe-b-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-b-wait-idle,pass
+igt@kms_vblank@pipe-b-wait-idle-hang,skip
+igt@kms_vblank@pipe-b-wait-forked,pass
+igt@kms_vblank@pipe-b-wait-forked-hang,skip
+igt@kms_vblank@pipe-b-wait-busy,pass
+igt@kms_vblank@pipe-b-wait-busy-hang,skip
+igt@kms_vblank@pipe-b-wait-forked-busy,pass
+igt@kms_vblank@pipe-b-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-b-ts-continuation-idle,pass
+igt@kms_vblank@pipe-b-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset,pass
+igt@kms_vblank@pipe-b-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-c-accuracy-idle,skip
+igt@kms_vblank@pipe-c-query-idle,skip
+igt@kms_vblank@pipe-c-query-idle-hang,skip
+igt@kms_vblank@pipe-c-query-forked,skip
+igt@kms_vblank@pipe-c-query-forked-hang,skip
+igt@kms_vblank@pipe-c-query-busy,skip
+igt@kms_vblank@pipe-c-query-busy-hang,skip
+igt@kms_vblank@pipe-c-query-forked-busy,skip
+igt@kms_vblank@pipe-c-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-c-wait-idle,skip
+igt@kms_vblank@pipe-c-wait-idle-hang,skip
+igt@kms_vblank@pipe-c-wait-forked,skip
+igt@kms_vblank@pipe-c-wait-forked-hang,skip
+igt@kms_vblank@pipe-c-wait-busy,skip
+igt@kms_vblank@pipe-c-wait-busy-hang,skip
+igt@kms_vblank@pipe-c-wait-forked-busy,skip
+igt@kms_vblank@pipe-c-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-c-ts-continuation-idle,skip
+igt@kms_vblank@pipe-c-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-c-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-c-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-c-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-c-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-d-accuracy-idle,skip
+igt@kms_vblank@pipe-d-query-idle,skip
+igt@kms_vblank@pipe-d-query-idle-hang,skip
+igt@kms_vblank@pipe-d-query-forked,skip
+igt@kms_vblank@pipe-d-query-forked-hang,skip
+igt@kms_vblank@pipe-d-query-busy,skip
+igt@kms_vblank@pipe-d-query-busy-hang,skip
+igt@kms_vblank@pipe-d-query-forked-busy,skip
+igt@kms_vblank@pipe-d-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-d-wait-idle,skip
+igt@kms_vblank@pipe-d-wait-idle-hang,skip
+igt@kms_vblank@pipe-d-wait-forked,skip
+igt@kms_vblank@pipe-d-wait-forked-hang,skip
+igt@kms_vblank@pipe-d-wait-busy,skip
+igt@kms_vblank@pipe-d-wait-busy-hang,skip
+igt@kms_vblank@pipe-d-wait-forked-busy,skip
+igt@kms_vblank@pipe-d-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-d-ts-continuation-idle,skip
+igt@kms_vblank@pipe-d-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-d-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-d-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-d-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-d-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-e-accuracy-idle,skip
+igt@kms_vblank@pipe-e-query-idle,skip
+igt@kms_vblank@pipe-e-query-idle-hang,skip
+igt@kms_vblank@pipe-e-query-forked,skip
+igt@kms_vblank@pipe-e-query-forked-hang,skip
+igt@kms_vblank@pipe-e-query-busy,skip
+igt@kms_vblank@pipe-e-query-busy-hang,skip
+igt@kms_vblank@pipe-e-query-forked-busy,skip
+igt@kms_vblank@pipe-e-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-e-wait-idle,skip
+igt@kms_vblank@pipe-e-wait-idle-hang,skip
+igt@kms_vblank@pipe-e-wait-forked,skip
+igt@kms_vblank@pipe-e-wait-forked-hang,skip
+igt@kms_vblank@pipe-e-wait-busy,skip
+igt@kms_vblank@pipe-e-wait-busy-hang,skip
+igt@kms_vblank@pipe-e-wait-forked-busy,skip
+igt@kms_vblank@pipe-e-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-e-ts-continuation-idle,skip
+igt@kms_vblank@pipe-e-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-e-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-e-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-e-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-e-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-f-accuracy-idle,skip
+igt@kms_vblank@pipe-f-query-idle,skip
+igt@kms_vblank@pipe-f-query-idle-hang,skip
+igt@kms_vblank@pipe-f-query-forked,skip
+igt@kms_vblank@pipe-f-query-forked-hang,skip
+igt@kms_vblank@pipe-f-query-busy,skip
+igt@kms_vblank@pipe-f-query-busy-hang,skip
+igt@kms_vblank@pipe-f-query-forked-busy,skip
+igt@kms_vblank@pipe-f-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-f-wait-idle,skip
+igt@kms_vblank@pipe-f-wait-idle-hang,skip
+igt@kms_vblank@pipe-f-wait-forked,skip
+igt@kms_vblank@pipe-f-wait-forked-hang,skip
+igt@kms_vblank@pipe-f-wait-busy,skip
+igt@kms_vblank@pipe-f-wait-busy-hang,skip
+igt@kms_vblank@pipe-f-wait-forked-busy,skip
+igt@kms_vblank@pipe-f-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-f-ts-continuation-idle,skip
+igt@kms_vblank@pipe-f-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-f-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-f-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-f-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-f-ts-continuation-modeset-rpm,skip
+igt@kms_vrr@flip-basic,skip
+igt@kms_vrr@flip-dpms,skip
+igt@kms_vrr@flipline,skip
+igt@kms_async_flip@async-flip-with-page-flip-events,skip
+igt@kms_async_flip@alternate-sync-async-flip,skip
+igt@kms_async_flip@test-time-stamp,skip
+igt@kms_async_flip@test-cursor,skip
+igt@kms_async_flip@invalid-async-flip,skip
+igt@kms_async_flip@crc,skip
diff --git a/drivers/gpu/drm/msm/ci/msm_a630_results.txt b/drivers/gpu/drm/msm/ci/msm_a630_results.txt
new file mode 100644
index 000000000000..18ebfae09f1a
--- /dev/null
+++ b/drivers/gpu/drm/msm/ci/msm_a630_results.txt
@@ -0,0 +1,422 @@
+igt@core_auth@getclient-simple,dmesg-warn
+igt@core_auth@getclient-master-drop,pass
+igt@core_auth@basic-auth,pass
+igt@core_auth@many-magics,pass
+igt@core_getclient,pass
+igt@core_getstats,pass
+igt@core_getversion,pass
+igt@core_setmaster_vs_auth,pass
+igt@drm_read@invalid-buffer,pass
+igt@drm_read@fault-buffer,pass
+igt@drm_read@empty-block,pass
+igt@drm_read@empty-nonblock,pass
+igt@drm_read@short-buffer-block,pass
+igt@drm_read@short-buffer-nonblock,pass
+igt@drm_read@short-buffer-wakeup,pass
+igt@kms_addfb_basic@unused-handle,pass
+igt@kms_addfb_basic@unused-pitches,pass
+igt@kms_addfb_basic@unused-offsets,pass
+igt@kms_addfb_basic@unused-modifier,pass
+igt@kms_addfb_basic@clobberred-modifier,skip
+igt@kms_addfb_basic@invalid-smem-bo-on-discrete,skip
+igt@kms_addfb_basic@legacy-format,dmesg-warn
+igt@kms_addfb_basic@no-handle,pass
+igt@kms_addfb_basic@basic,pass
+igt@kms_addfb_basic@bad-pitch-0,pass
+igt@kms_addfb_basic@bad-pitch-32,pass
+igt@kms_addfb_basic@bad-pitch-63,pass
+igt@kms_addfb_basic@bad-pitch-128,pass
+igt@kms_addfb_basic@bad-pitch-256,pass
+igt@kms_addfb_basic@bad-pitch-1024,pass
+igt@kms_addfb_basic@bad-pitch-999,pass
+igt@kms_addfb_basic@bad-pitch-65536,pass
+igt@kms_addfb_basic@size-max,pass
+igt@kms_addfb_basic@too-wide,pass
+igt@kms_addfb_basic@too-high,dmesg-warn
+igt@kms_addfb_basic@bo-too-small,pass
+igt@kms_addfb_basic@small-bo,pass
+igt@kms_addfb_basic@bo-too-small-due-to-tiling,skip
+igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
+igt@kms_addfb_basic@addfb25-bad-modifier,dmesg-warn
+igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy,skip
+igt@kms_addfb_basic@addfb25-x-tiled-legacy,skip
+igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling,skip
+igt@kms_addfb_basic@addfb25-y-tiled-legacy,skip
+igt@kms_addfb_basic@addfb25-yf-tiled-legacy,skip
+igt@kms_addfb_basic@addfb25-y-tiled-small-legacy,skip
+igt@kms_addfb_basic@addfb25-4-tiled,skip
+igt@kms_addfb_basic@basic-x-tiled-legacy,skip
+igt@kms_addfb_basic@framebuffer-vs-set-tiling,skip
+igt@kms_addfb_basic@tile-pitch-mismatch,skip
+igt@kms_addfb_basic@basic-y-tiled-legacy,skip
+igt@kms_addfb_basic@invalid-get-prop-any,pass
+igt@kms_addfb_basic@invalid-get-prop,pass
+igt@kms_addfb_basic@invalid-set-prop-any,pass
+igt@kms_addfb_basic@invalid-set-prop,pass
+igt@kms_addfb_basic@master-rmfb,pass
+igt@kms_atomic@plane-overlay-legacy,dmesg-warn
+igt@kms_atomic@plane-primary-legacy,dmesg-warn
+igt@kms_atomic@plane-primary-overlay-mutable-zpos,dmesg-warn
+igt@kms_atomic@plane-immutable-zpos,dmesg-warn
+igt@kms_atomic@test-only,dmesg-warn
+igt@kms_atomic@plane-cursor-legacy,dmesg-warn
+igt@kms_atomic@plane-invalid-params,dmesg-warn
+igt@kms_atomic@plane-invalid-params-fence,skip
+igt@kms_atomic@crtc-invalid-params,dmesg-warn
+igt@kms_atomic@crtc-invalid-params-fence,skip
+igt@kms_atomic@atomic-invalid-params,dmesg-warn
+igt@kms_atomic@atomic_plane_damage,dmesg-warn
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@legacy,skip
+igt@kms_content_protection@atomic,skip
+igt@kms_content_protection@atomic-dpms,skip
+igt@kms_content_protection@lic,skip
+igt@kms_content_protection@type1,skip
+igt@kms_content_protection@mei_interface,skip
+igt@kms_content_protection@content_type_change,skip
+igt@kms_content_protection@uevent,skip
+igt@kms_content_protection@srm,skip
+igt@kms_content_protection@dp-mst-type-0,skip
+igt@kms_content_protection@dp-mst-lic-type-0,skip
+igt@kms_content_protection@dp-mst-type-1,skip
+igt@kms_content_protection@dp-mst-lic-type-1,skip
+igt@kms_dp_aux_dev,skip
+igt@kms_flip_event_leak,dmesg-warn
+igt@kms_getfb@getfb-handle-zero,pass
+igt@kms_getfb@getfb-handle-valid,pass
+igt@kms_getfb@getfb-handle-closed,pass
+igt@kms_getfb@getfb-handle-not-fb,pass
+igt@kms_getfb@getfb-addfb-different-handles,pass
+igt@kms_getfb@getfb-repeated-different-handles,pass
+igt@kms_getfb@getfb-reject-ccs,skip
+igt@kms_getfb@getfb2-handle-zero,pass
+igt@kms_getfb@getfb2-handle-closed,pass
+igt@kms_getfb@getfb2-handle-not-fb,pass
+igt@kms_getfb@getfb2-accept-ccs,skip
+igt@kms_getfb@getfb2-into-addfb2,pass
+igt@kms_getfb@getfb-handle-protection,pass
+igt@kms_getfb@getfb2-handle-protection,pass
+igt@kms_hdmi_inject@inject-4k,skip
+igt@kms_hdmi_inject@inject-audio,skip
+igt@kms_hdr@bpc-switch,skip
+igt@kms_hdr@bpc-switch-dpms,skip
+igt@kms_hdr@static-toggle,skip
+igt@kms_hdr@static-toggle-dpms,skip
+igt@kms_hdr@static-swap,skip
+igt@kms_multipipe_modeset@basic-max-pipe-crc-check,pass
+igt@kms_pipe_crc_basic@bad-source,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-a,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,pass
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,pass
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,pass
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,dmesg-warn
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,dmesg-warn
+igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-c,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-c,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-c,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-d,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-d,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-e,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-e-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-e,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-e,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-e,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-f,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-f-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-f,skip
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-f,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-f,skip
+igt@kms_plane_lowres@pipe-a-tiling-none,skip
+igt@kms_plane_lowres@pipe-a-tiling-x,skip
+igt@kms_plane_lowres@pipe-a-tiling-y,skip
+igt@kms_plane_lowres@pipe-a-tiling-yf,skip
+igt@kms_plane_lowres@pipe-a-tiling-4,skip
+igt@kms_plane_lowres@pipe-b-tiling-none,skip
+igt@kms_plane_lowres@pipe-b-tiling-x,skip
+igt@kms_plane_lowres@pipe-b-tiling-y,skip
+igt@kms_plane_lowres@pipe-b-tiling-yf,skip
+igt@kms_plane_lowres@pipe-b-tiling-4,skip
+igt@kms_plane_lowres@pipe-c-tiling-none,skip
+igt@kms_plane_lowres@pipe-c-tiling-x,skip
+igt@kms_plane_lowres@pipe-c-tiling-y,skip
+igt@kms_plane_lowres@pipe-c-tiling-yf,skip
+igt@kms_plane_lowres@pipe-c-tiling-4,skip
+igt@kms_plane_lowres@pipe-d-tiling-none,skip
+igt@kms_plane_lowres@pipe-d-tiling-x,skip
+igt@kms_plane_lowres@pipe-d-tiling-y,skip
+igt@kms_plane_lowres@pipe-d-tiling-yf,skip
+igt@kms_plane_lowres@pipe-d-tiling-4,skip
+igt@kms_plane_lowres@pipe-e-tiling-none,skip
+igt@kms_plane_lowres@pipe-e-tiling-x,skip
+igt@kms_plane_lowres@pipe-e-tiling-y,skip
+igt@kms_plane_lowres@pipe-e-tiling-yf,skip
+igt@kms_plane_lowres@pipe-e-tiling-4,skip
+igt@kms_plane_lowres@pipe-f-tiling-none,skip
+igt@kms_plane_lowres@pipe-f-tiling-x,skip
+igt@kms_plane_lowres@pipe-f-tiling-y,skip
+igt@kms_plane_lowres@pipe-f-tiling-yf,skip
+igt@kms_plane_lowres@pipe-f-tiling-4,skip
+igt@kms_prop_blob@basic,pass
+igt@kms_prop_blob@blob-prop-core,pass
+igt@kms_prop_blob@blob-prop-validate,pass
+igt@kms_prop_blob@blob-prop-lifetime,pass
+igt@kms_prop_blob@blob-multiple,pass
+igt@kms_prop_blob@invalid-get-prop-any,pass
+igt@kms_prop_blob@invalid-get-prop,pass
+igt@kms_prop_blob@invalid-set-prop-any,pass
+igt@kms_prop_blob@invalid-set-prop,pass
+igt@kms_rmfb@rmfb-ioctl,pass
+igt@kms_rmfb@close-fd,fail
+igt@kms_rotation_crc@primary-rotation-90,skip
+igt@kms_rotation_crc@primary-rotation-180,skip
+igt@kms_rotation_crc@primary-rotation-270,skip
+igt@kms_rotation_crc@sprite-rotation-90,skip
+igt@kms_rotation_crc@sprite-rotation-180,skip
+igt@kms_rotation_crc@sprite-rotation-270,skip
+igt@kms_rotation_crc@cursor-rotation-180,skip
+igt@kms_rotation_crc@sprite-rotation-90-pos-100-0,skip
+igt@kms_rotation_crc@bad-pixel-format,skip
+igt@kms_rotation_crc@bad-tiling,skip
+igt@kms_rotation_crc@primary-x-tiled-reflect-x-0,skip
+igt@kms_rotation_crc@primary-x-tiled-reflect-x-180,skip
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-0,skip
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-90,skip
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-180,skip
+igt@kms_rotation_crc@primary-y-tiled-reflect-x-270,skip
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0,skip
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90,skip
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180,skip
+igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270,skip
+igt@kms_rotation_crc@primary-4-tiled-reflect-x-0,skip
+igt@kms_rotation_crc@primary-4-tiled-reflect-x-180,skip
+igt@kms_rotation_crc@multiplane-rotation,skip
+igt@kms_rotation_crc@multiplane-rotation-cropping-top,skip
+igt@kms_rotation_crc@multiplane-rotation-cropping-bottom,skip
+igt@kms_rotation_crc@exhaust-fences,skip
+igt@kms_selftest@all,skip
+igt@kms_setmode@basic@pipe-a-edp-1,dmesg-warn
+igt@kms_setmode@basic,skip
+igt@kms_setmode@basic-clone-single-crtc,skip
+igt@kms_setmode@invalid-clone-single-crtc,skip
+igt@kms_setmode@invalid-clone-exclusive-crtc,skip
+igt@kms_setmode@clone-exclusive-crtc,skip
+igt@kms_setmode@invalid-clone-single-crtc-stealing,skip
+igt@msm_mapping@sqefw,dmesg-fail
+igt@msm_mapping@shadow,dmesg-fail
+igt@msm_recovery@hangcheck,dmesg-warn
+igt@msm_recovery@gpu-fault,dmesg-warn
+igt@msm_recovery@iova-fault,dmesg-warn
+igt@msm_submit@empty-submit,pass
+igt@msm_submit@invalid-queue-submit,pass
+igt@msm_submit@invalid-flags-submit,pass
+igt@msm_submit@invalid-in-fence-submit,pass
+igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
+igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
+igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
+igt@msm_submit@valid-submit,pass
+igt@kms_sysfs_edid_timing,pass
+igt@kms_universal_plane@universal-plane-pipe-a-functional,dmesg-fail
+igt@kms_universal_plane@universal-plane-pipe-a-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,dmesg-warn
+igt@kms_universal_plane@cursor-fb-leak-pipe-a,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-a,skip
+igt@kms_universal_plane@universal-plane-pipe-b-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-b-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-b,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-b,skip
+igt@kms_universal_plane@universal-plane-pipe-c-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-c-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-c,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-c,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-c,skip
+igt@kms_universal_plane@universal-plane-pipe-d-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-d-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-d,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-d,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-d,skip
+igt@kms_universal_plane@universal-plane-pipe-e-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-e-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-e,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-e,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-e,skip
+igt@kms_universal_plane@universal-plane-pipe-f-functional,skip
+igt@kms_universal_plane@universal-plane-pipe-f-sanity,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-f,skip
+igt@kms_universal_plane@cursor-fb-leak-pipe-f,skip
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-f,skip
+igt@kms_vblank@invalid,dmesg-warn
+igt@kms_vblank@crtc-id,dmesg-warn
+igt@kms_vblank@pipe-a-query-idle,dmesg-warn
+igt@kms_vblank@pipe-a-query-idle-hang,skip
+igt@kms_vblank@pipe-a-query-forked,dmesg-warn
+igt@kms_vblank@pipe-a-query-forked-hang,skip
+igt@kms_vblank@pipe-a-query-busy,dmesg-warn
+igt@kms_vblank@pipe-a-query-busy-hang,skip
+igt@kms_vblank@pipe-a-query-forked-busy,dmesg-warn
+igt@kms_vblank@pipe-a-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-a-wait-idle,dmesg-warn
+igt@kms_vblank@pipe-a-wait-idle-hang,skip
+igt@kms_vblank@pipe-a-wait-forked,dmesg-warn
+igt@kms_vblank@pipe-a-wait-forked-hang,skip
+igt@kms_vblank@pipe-a-wait-busy,dmesg-warn
+igt@kms_vblank@pipe-a-wait-busy-hang,skip
+igt@kms_vblank@pipe-a-wait-forked-busy,dmesg-warn
+igt@kms_vblank@pipe-a-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-a-ts-continuation-idle,dmesg-warn
+igt@kms_vblank@pipe-a-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-a-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-a-ts-continuation-modeset,dmesg-warn
+igt@kms_vblank@pipe-a-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-b-accuracy-idle,skip
+igt@kms_vblank@pipe-b-query-idle,skip
+igt@kms_vblank@pipe-b-query-idle-hang,skip
+igt@kms_vblank@pipe-b-query-forked,skip
+igt@kms_vblank@pipe-b-query-forked-hang,skip
+igt@kms_vblank@pipe-b-query-busy,skip
+igt@kms_vblank@pipe-b-query-busy-hang,skip
+igt@kms_vblank@pipe-b-query-forked-busy,skip
+igt@kms_vblank@pipe-b-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-b-wait-idle,skip
+igt@kms_vblank@pipe-b-wait-idle-hang,skip
+igt@kms_vblank@pipe-b-wait-forked,skip
+igt@kms_vblank@pipe-b-wait-forked-hang,skip
+igt@kms_vblank@pipe-b-wait-busy,skip
+igt@kms_vblank@pipe-b-wait-busy-hang,skip
+igt@kms_vblank@pipe-b-wait-forked-busy,skip
+igt@kms_vblank@pipe-b-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-b-ts-continuation-idle,skip
+igt@kms_vblank@pipe-b-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-c-accuracy-idle,skip
+igt@kms_vblank@pipe-c-query-idle,skip
+igt@kms_vblank@pipe-c-query-idle-hang,skip
+igt@kms_vblank@pipe-c-query-forked,skip
+igt@kms_vblank@pipe-c-query-forked-hang,skip
+igt@kms_vblank@pipe-c-query-busy,skip
+igt@kms_vblank@pipe-c-query-busy-hang,skip
+igt@kms_vblank@pipe-c-query-forked-busy,skip
+igt@kms_vblank@pipe-c-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-c-wait-idle,skip
+igt@kms_vblank@pipe-c-wait-idle-hang,skip
+igt@kms_vblank@pipe-c-wait-forked,skip
+igt@kms_vblank@pipe-c-wait-forked-hang,skip
+igt@kms_vblank@pipe-c-wait-busy,skip
+igt@kms_vblank@pipe-c-wait-busy-hang,skip
+igt@kms_vblank@pipe-c-wait-forked-busy,skip
+igt@kms_vblank@pipe-c-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-c-ts-continuation-idle,skip
+igt@kms_vblank@pipe-c-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-c-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-c-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-c-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-c-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-d-accuracy-idle,skip
+igt@kms_vblank@pipe-d-query-idle,skip
+igt@kms_vblank@pipe-d-query-idle-hang,skip
+igt@kms_vblank@pipe-d-query-forked,skip
+igt@kms_vblank@pipe-d-query-forked-hang,skip
+igt@kms_vblank@pipe-d-query-busy,skip
+igt@kms_vblank@pipe-d-query-busy-hang,skip
+igt@kms_vblank@pipe-d-query-forked-busy,skip
+igt@kms_vblank@pipe-d-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-d-wait-idle,skip
+igt@kms_vblank@pipe-d-wait-idle-hang,skip
+igt@kms_vblank@pipe-d-wait-forked,skip
+igt@kms_vblank@pipe-d-wait-forked-hang,skip
+igt@kms_vblank@pipe-d-wait-busy,skip
+igt@kms_vblank@pipe-d-wait-busy-hang,skip
+igt@kms_vblank@pipe-d-wait-forked-busy,skip
+igt@kms_vblank@pipe-d-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-d-ts-continuation-idle,skip
+igt@kms_vblank@pipe-d-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-d-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-d-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-d-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-d-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-e-accuracy-idle,skip
+igt@kms_vblank@pipe-e-query-idle,skip
+igt@kms_vblank@pipe-e-query-idle-hang,skip
+igt@kms_vblank@pipe-e-query-forked,skip
+igt@kms_vblank@pipe-e-query-forked-hang,skip
+igt@kms_vblank@pipe-e-query-busy,skip
+igt@kms_vblank@pipe-e-query-busy-hang,skip
+igt@kms_vblank@pipe-e-query-forked-busy,skip
+igt@kms_vblank@pipe-e-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-e-wait-idle,skip
+igt@kms_vblank@pipe-e-wait-idle-hang,skip
+igt@kms_vblank@pipe-e-wait-forked,skip
+igt@kms_vblank@pipe-e-wait-forked-hang,skip
+igt@kms_vblank@pipe-e-wait-busy,skip
+igt@kms_vblank@pipe-e-wait-busy-hang,skip
+igt@kms_vblank@pipe-e-wait-forked-busy,skip
+igt@kms_vblank@pipe-e-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-e-ts-continuation-idle,skip
+igt@kms_vblank@pipe-e-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-e-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-e-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-e-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-e-ts-continuation-modeset-rpm,skip
+igt@kms_vblank@pipe-f-accuracy-idle,skip
+igt@kms_vblank@pipe-f-query-idle,skip
+igt@kms_vblank@pipe-f-query-idle-hang,skip
+igt@kms_vblank@pipe-f-query-forked,skip
+igt@kms_vblank@pipe-f-query-forked-hang,skip
+igt@kms_vblank@pipe-f-query-busy,skip
+igt@kms_vblank@pipe-f-query-busy-hang,skip
+igt@kms_vblank@pipe-f-query-forked-busy,skip
+igt@kms_vblank@pipe-f-query-forked-busy-hang,skip
+igt@kms_vblank@pipe-f-wait-idle,skip
+igt@kms_vblank@pipe-f-wait-idle-hang,skip
+igt@kms_vblank@pipe-f-wait-forked,skip
+igt@kms_vblank@pipe-f-wait-forked-hang,skip
+igt@kms_vblank@pipe-f-wait-busy,skip
+igt@kms_vblank@pipe-f-wait-busy-hang,skip
+igt@kms_vblank@pipe-f-wait-forked-busy,skip
+igt@kms_vblank@pipe-f-wait-forked-busy-hang,skip
+igt@kms_vblank@pipe-f-ts-continuation-idle,skip
+igt@kms_vblank@pipe-f-ts-continuation-idle-hang,skip
+igt@kms_vblank@pipe-f-ts-continuation-dpms-rpm,skip
+igt@kms_vblank@pipe-f-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-f-ts-continuation-modeset-hang,skip
+igt@kms_vblank@pipe-f-ts-continuation-modeset-rpm,skip
+igt@kms_vrr@flip-basic,skip
+igt@kms_vrr@flip-dpms,skip
+igt@kms_vrr@flipline,skip
+igt@kms_async_flip@async-flip-with-page-flip-events,skip
+igt@kms_async_flip@alternate-sync-async-flip,skip
+igt@kms_async_flip@test-time-stamp,skip
+igt@kms_async_flip@test-cursor,skip
+igt@kms_async_flip@invalid-async-flip,skip
+igt@kms_async_flip@crc,skip
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 49+ messages in thread

* [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-10  7:01 [RFC] drm/msm: Add initial ci/ subdirectory Tomeu Vizoso
@ 2022-05-10 14:13 ` Tomeu Vizoso
  2022-05-10 19:39   ` [Freedreno] " Jessica Zhang
                     ` (2 more replies)
  2022-05-11 14:26 ` [RFC] drm/msm: " Jani Nikula
  1 sibling, 3 replies; 49+ messages in thread
From: Tomeu Vizoso @ 2022-05-10 14:13 UTC (permalink / raw)
  To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
	David Airlie, Daniel Vetter, Jonathan Corbet, Rob Clark,
	Sean Paul, Abhinav Kumar
  Cc: Tomeu Vizoso, linux-doc, linux-arm-msm, linux-kernel, dri-devel,
	freedreno

And use it to store expectations about what the drm/msm driver is
supposed to pass in the IGT test suite.

Also include a configuration file that points to the out-of-tree CI
scripts.

By storing the test expectations along the code we can make sure both
stay in sync with each other, and so we can know when a code change
breaks those expectations.

This will allow all contributors to drm/msm to reuse the infrastructure
already in gitlab.freedesktop.org to test the driver on several
generations of the hardware.

v2:
  - Fix names of result expectation files to match SoC
  - Don't execute tests that are going to skip on all boards

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
---
 Documentation/gpu/msm_automated_testing.rst   |  70 +++++++++
 drivers/gpu/drm/msm/ci/gitlab-ci.yml          |  11 ++
 drivers/gpu/drm/msm/ci/msm.testlist           | 148 ++++++++++++++++++
 .../gpu/drm/msm/ci/msm_apq8016_results.txt    | 140 +++++++++++++++++
 .../gpu/drm/msm/ci/msm_apq8096_results.txt    | 140 +++++++++++++++++
 drivers/gpu/drm/msm/ci/msm_sc7180_results.txt | 141 +++++++++++++++++
 drivers/gpu/drm/msm/ci/msm_sdm845_results.txt | 141 +++++++++++++++++
 7 files changed, 791 insertions(+)
 create mode 100644 Documentation/gpu/msm_automated_testing.rst
 create mode 100644 drivers/gpu/drm/msm/ci/gitlab-ci.yml
 create mode 100644 drivers/gpu/drm/msm/ci/msm.testlist
 create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
 create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
 create mode 100644 drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
 create mode 100644 drivers/gpu/drm/msm/ci/msm_sdm845_results.txt

diff --git a/Documentation/gpu/msm_automated_testing.rst b/Documentation/gpu/msm_automated_testing.rst
new file mode 100644
index 000000000000..fe59474569c2
--- /dev/null
+++ b/Documentation/gpu/msm_automated_testing.rst
@@ -0,0 +1,70 @@
+.. SPDX-License-Identifier: GPL-2.0+
+
+=========================================
+Automated testing of MSM DRM driver
+=========================================
+
+
+Introduction
+============
+
+Making sure that changes to a driver don't introduce regressions can be very time consuming when lots of different hardware configurations need to be tested. Moreover, it isn't practical for each person interested in this testing to have to acquire and maintain what can be a considerable amount of hardware.
+
+Also, it is desirable for developers to check for regressions in their code by themselves, instead of relying on the maintainer finding them and then reporting back.
+
+There are facilities in gitlab.freedesktop.org to automatically test Mesa that can be used as well for testing DRM drivers such as drm/msm. This document explains how people interested in testing the drm/msm driver can use this shared infrastructure to save quite some time and effort.
+
+
+Relevant files
+==============
+
+drivers/gpu/drm/msm/ci/gitlab-ci.yml
+------------------------------------
+
+Specifies the specific version of the scripts to be used. GitLab CI will use the values defined in this file to fetch the right scripts.
+
+
+drivers/gpu/drm/msm/ci/msm.testlist
+-----------------------------------
+
+Specifies the tests that the current code is expected to be able to reliably run. These tests are expected to not hang the DUT (device under testing) when running on the revision they belong to, and to give consistent results.
+
+
+drivers/gpu/drm/msm/ci/msm_*_results.txt
+----------------------------------------
+
+Specifies the expected results of running this specific kernel revision on a given hardware configuration.
+
+
+How to enable automated testing on your tree
+============================================
+
+1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one yet
+
+2. In your kernel repo's configuration (eg. https://gitlab.freedesktop.org/tomeu/linux/-/settings/ci_cd), change the CI/CD configuration file from .gitlab-ci.yml to drivers/gpu/drm/msm/ci/gitlab-ci.yml.
+
+3. Next time you push to this repository, you will see a CI pipeline being created (eg. https://gitlab.freedesktop.org/tomeu/linux/-/pipelines)
+
+4. The various jobs will be run and when the pipeline is finished, all jobs should be green unless a regression has been found.
+
+
+How to update test expectations
+===============================
+
+If your changes to the code fix any tests, you will have to update one or more of the files in drivers/gpu/drm/msm/ci/msm_*_results.txt, for each of the test platforms affected by the change.
+
+If you have run a pipeline and it failed because of a mismatched test result, you will have been offered a patch at the end of the run that you can apply after reviewing it.
+
+
+How to expand coverage
+======================
+
+If your code changes makes it possible to run more tests (by solving reliability issues, for example), more tests can be added to this list, and then the expected results updated with the patch file that will be printed at the end of each job.
+
+If there is a need for updating the version of IGT being used (maybe you have added more tests to it), follow the instructions at https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/tree/msm#upreving-igt.
+
+
+How to test your changes to the scripts
+==========================================
+
+For testing changes to the scripts in the drm-ci repo, change the DRM_CI_PROJECT_PATH variable in drivers/gpu/drm/msm/ci/gitlab-ci.yml to match your fork of the project (eg. tomeu/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
\ No newline at end of file
diff --git a/drivers/gpu/drm/msm/ci/gitlab-ci.yml b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
new file mode 100644
index 000000000000..9b7caa7fcab2
--- /dev/null
+++ b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
@@ -0,0 +1,11 @@
+variables:
+  # Change this to use your fork of drm-ci
+  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
+  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha msm
+
+include:
+  - project: *drm-ci-project-path
+    ref: *drm-ci-commit-sha
+    file:
+      - '.msm-gitlab-ci.yml'
+      - '.gitlab-ci.yml'
diff --git a/drivers/gpu/drm/msm/ci/msm.testlist b/drivers/gpu/drm/msm/ci/msm.testlist
new file mode 100644
index 000000000000..8805a3bc7316
--- /dev/null
+++ b/drivers/gpu/drm/msm/ci/msm.testlist
@@ -0,0 +1,148 @@
+# Keep alphabetically sorted by default
+
+igt@core_auth@getclient-simple
+igt@core_auth@getclient-master-drop
+igt@core_auth@basic-auth
+igt@core_auth@many-magics
+igt@core_getclient
+igt@core_getstats
+igt@core_getversion
+igt@core_setmaster_vs_auth
+igt@drm_read@invalid-buffer
+igt@drm_read@fault-buffer
+igt@drm_read@empty-block
+igt@drm_read@empty-nonblock
+igt@drm_read@short-buffer-block
+igt@drm_read@short-buffer-nonblock
+igt@drm_read@short-buffer-wakeup
+igt@kms_addfb_basic@unused-handle
+igt@kms_addfb_basic@unused-pitches
+igt@kms_addfb_basic@unused-offsets
+igt@kms_addfb_basic@unused-modifier
+igt@kms_addfb_basic@legacy-format
+igt@kms_addfb_basic@no-handle
+igt@kms_addfb_basic@basic
+igt@kms_addfb_basic@bad-pitch-0
+igt@kms_addfb_basic@bad-pitch-32
+igt@kms_addfb_basic@bad-pitch-63
+igt@kms_addfb_basic@bad-pitch-128
+igt@kms_addfb_basic@bad-pitch-256
+igt@kms_addfb_basic@bad-pitch-1024
+igt@kms_addfb_basic@bad-pitch-999
+igt@kms_addfb_basic@bad-pitch-65536
+igt@kms_addfb_basic@size-max
+igt@kms_addfb_basic@too-wide
+igt@kms_addfb_basic@too-high
+igt@kms_addfb_basic@bo-too-small
+igt@kms_addfb_basic@small-bo
+igt@kms_addfb_basic@addfb25-modifier-no-flag
+igt@kms_addfb_basic@addfb25-bad-modifier
+igt@kms_addfb_basic@invalid-get-prop-any
+igt@kms_addfb_basic@invalid-get-prop
+igt@kms_addfb_basic@invalid-set-prop-any
+igt@kms_addfb_basic@invalid-set-prop
+igt@kms_addfb_basic@master-rmfb
+igt@kms_atomic@plane-overlay-legacy
+igt@kms_atomic@plane-primary-legacy
+igt@kms_atomic@plane-primary-overlay-mutable-zpos
+igt@kms_atomic@plane-immutable-zpos
+igt@kms_atomic@test-only
+igt@kms_atomic@plane-cursor-legacy
+igt@kms_atomic@plane-invalid-params
+igt@kms_atomic@crtc-invalid-params
+igt@kms_atomic@atomic-invalid-params
+igt@kms_atomic@atomic_plane_damage
+igt@kms_atomic_interruptible@legacy-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@atomic-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-dpms@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-pageflip@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-cursor@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-primary@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-cursor@pipe-a-edp-1
+igt@kms_content_protection@LIC
+igt@kms_flip_event_leak
+igt@kms_getfb@getfb-handle-zero
+igt@kms_getfb@getfb-handle-valid
+igt@kms_getfb@getfb-handle-closed
+igt@kms_getfb@getfb-handle-not-fb
+igt@kms_getfb@getfb-addfb-different-handles
+igt@kms_getfb@getfb-repeated-different-handles
+igt@kms_getfb@getfb2-handle-zero
+igt@kms_getfb@getfb2-handle-closed
+igt@kms_getfb@getfb2-handle-not-fb
+igt@kms_getfb@getfb2-into-addfb2
+igt@kms_getfb@getfb-handle-protection
+igt@kms_getfb@getfb2-handle-protection
+igt@kms_hdmi_inject@inject-4k
+igt@kms_multipipe_modeset@basic-max-pipe-crc-check
+igt@kms_pipe_crc_basic@bad-source
+igt@kms_pipe_crc_basic@read-crc-pipe-a
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a
+igt@kms_pipe_crc_basic@read-crc-pipe-b
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b
+igt@kms_prop_blob@basic
+igt@kms_prop_blob@blob-prop-core
+igt@kms_prop_blob@blob-prop-validate
+igt@kms_prop_blob@blob-prop-lifetime
+igt@kms_prop_blob@blob-multiple
+igt@kms_prop_blob@invalid-get-prop-any
+igt@kms_prop_blob@invalid-get-prop
+igt@kms_prop_blob@invalid-set-prop-any
+igt@kms_prop_blob@invalid-set-prop
+igt@kms_rmfb@rmfb-ioctl
+igt@kms_rmfb@close-fd
+igt@kms_setmode@basic@pipe-a-edp-1
+igt@kms_setmode@basic@pipe-b-edp-1
+
+# Flakes on a530 with:
+# arm-smmu b40000.iommu: Unhandled context fault: fsr=0x408, iova=0x01003000, fsynr=0x13, cbfrsynra=0x0, cb=0
+# igt@msm_mapping@ring
+
+igt@msm_mapping@sqefw
+igt@msm_mapping@shadow
+igt@msm_recovery@hangcheck
+igt@msm_recovery@gpu-fault
+igt@msm_recovery@iova-fault
+igt@msm_submit@empty-submit
+igt@msm_submit@invalid-queue-submit
+igt@msm_submit@invalid-flags-submit
+igt@msm_submit@invalid-in-fence-submit
+igt@msm_submit@invalid-duplicate-bo-submit
+igt@msm_submit@invalid-cmd-idx-submit
+igt@msm_submit@invalid-cmd-type-submit
+igt@msm_submit@valid-submit
+igt@kms_sysfs_edid_timing
+igt@kms_universal_plane@universal-plane-pipe-a-functional
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b
+igt@kms_vblank@invalid
+igt@kms_vblank@crtc-id
+igt@kms_vblank@pipe-a-query-idle
+igt@kms_vblank@pipe-a-query-forked
+igt@kms_vblank@pipe-a-query-busy
+igt@kms_vblank@pipe-a-query-forked-busy
+igt@kms_vblank@pipe-a-wait-idle
+igt@kms_vblank@pipe-a-wait-forked
+igt@kms_vblank@pipe-a-wait-busy
+igt@kms_vblank@pipe-a-wait-forked-busy
+igt@kms_vblank@pipe-a-ts-continuation-idle
+igt@kms_vblank@pipe-a-ts-continuation-modeset
+igt@kms_vblank@pipe-b-accuracy-idle
+igt@kms_vblank@pipe-b-query-idle
+igt@kms_vblank@pipe-b-query-forked
+igt@kms_vblank@pipe-b-query-busy
+igt@kms_vblank@pipe-b-query-forked-busy
+igt@kms_vblank@pipe-b-wait-idle
+igt@kms_vblank@pipe-b-wait-forked
+igt@kms_vblank@pipe-b-wait-busy
+igt@kms_vblank@pipe-b-wait-forked-busy
+igt@kms_vblank@pipe-b-ts-continuation-idle
+igt@kms_vblank@pipe-b-ts-continuation-modeset
diff --git a/drivers/gpu/drm/msm/ci/msm_apq8016_results.txt b/drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
new file mode 100644
index 000000000000..2cad61d89faf
--- /dev/null
+++ b/drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
@@ -0,0 +1,140 @@
+igt@core_auth@getclient-simple,pass
+igt@core_auth@getclient-master-drop,pass
+igt@core_auth@basic-auth,pass
+igt@core_auth@many-magics,pass
+igt@core_getclient,pass
+igt@core_getstats,pass
+igt@core_getversion,pass
+igt@core_setmaster_vs_auth,pass
+igt@drm_read@invalid-buffer,skip
+igt@drm_read@fault-buffer,skip
+igt@drm_read@empty-block,skip
+igt@drm_read@empty-nonblock,skip
+igt@drm_read@short-buffer-block,skip
+igt@drm_read@short-buffer-nonblock,skip
+igt@drm_read@short-buffer-wakeup,skip
+igt@kms_addfb_basic@unused-handle,pass
+igt@kms_addfb_basic@unused-pitches,pass
+igt@kms_addfb_basic@unused-offsets,pass
+igt@kms_addfb_basic@unused-modifier,pass
+igt@kms_addfb_basic@legacy-format,dmesg-warn
+igt@kms_addfb_basic@no-handle,pass
+igt@kms_addfb_basic@basic,pass
+igt@kms_addfb_basic@bad-pitch-0,pass
+igt@kms_addfb_basic@bad-pitch-32,pass
+igt@kms_addfb_basic@bad-pitch-63,pass
+igt@kms_addfb_basic@bad-pitch-128,pass
+igt@kms_addfb_basic@bad-pitch-256,pass
+igt@kms_addfb_basic@bad-pitch-1024,pass
+igt@kms_addfb_basic@bad-pitch-999,pass
+igt@kms_addfb_basic@bad-pitch-65536,pass
+igt@kms_addfb_basic@size-max,pass
+igt@kms_addfb_basic@too-wide,pass
+igt@kms_addfb_basic@too-high,dmesg-warn
+igt@kms_addfb_basic@bo-too-small,pass
+igt@kms_addfb_basic@small-bo,pass
+igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
+igt@kms_addfb_basic@addfb25-bad-modifier,fail
+igt@kms_addfb_basic@invalid-get-prop-any,pass
+igt@kms_addfb_basic@invalid-get-prop,pass
+igt@kms_addfb_basic@invalid-set-prop-any,pass
+igt@kms_addfb_basic@invalid-set-prop,pass
+igt@kms_addfb_basic@master-rmfb,pass
+igt@kms_atomic@plane-overlay-legacy,skip
+igt@kms_atomic@plane-primary-legacy,skip
+igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
+igt@kms_atomic@plane-immutable-zpos,skip
+igt@kms_atomic@test-only,skip
+igt@kms_atomic@plane-cursor-legacy,skip
+igt@kms_atomic@plane-invalid-params,skip
+igt@kms_atomic@crtc-invalid-params,skip
+igt@kms_atomic@atomic-invalid-params,skip
+igt@kms_atomic@atomic_plane_damage,skip
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_flip_event_leak,skip
+igt@kms_getfb@getfb-handle-zero,pass
+igt@kms_getfb@getfb-handle-valid,pass
+igt@kms_getfb@getfb-handle-closed,pass
+igt@kms_getfb@getfb-handle-not-fb,pass
+igt@kms_getfb@getfb-addfb-different-handles,pass
+igt@kms_getfb@getfb-repeated-different-handles,pass
+igt@kms_getfb@getfb2-handle-zero,pass
+igt@kms_getfb@getfb2-handle-closed,pass
+igt@kms_getfb@getfb2-handle-not-fb,pass
+igt@kms_getfb@getfb2-into-addfb2,pass
+igt@kms_getfb@getfb-handle-protection,pass
+igt@kms_getfb@getfb2-handle-protection,pass
+igt@kms_hdmi_inject@inject-4k,fail
+igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
+igt@kms_pipe_crc_basic@bad-source,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
+igt@kms_prop_blob@basic,pass
+igt@kms_prop_blob@blob-prop-core,pass
+igt@kms_prop_blob@blob-prop-validate,pass
+igt@kms_prop_blob@blob-prop-lifetime,pass
+igt@kms_prop_blob@blob-multiple,pass
+igt@kms_prop_blob@invalid-get-prop-any,pass
+igt@kms_prop_blob@invalid-get-prop,pass
+igt@kms_prop_blob@invalid-set-prop-any,pass
+igt@kms_prop_blob@invalid-set-prop,pass
+igt@kms_rmfb@rmfb-ioctl,skip
+igt@kms_rmfb@close-fd,skip
+igt@kms_setmode@basic,skip
+igt@msm_mapping@sqefw,skip
+igt@msm_mapping@shadow,skip
+igt@msm_recovery@hangcheck,skip
+igt@msm_recovery@gpu-fault,skip
+igt@msm_recovery@iova-fault,skip
+igt@msm_submit@empty-submit,pass
+igt@msm_submit@invalid-queue-submit,pass
+igt@msm_submit@invalid-flags-submit,pass
+igt@msm_submit@invalid-in-fence-submit,pass
+igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
+igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
+igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
+igt@msm_submit@valid-submit,pass
+igt@kms_sysfs_edid_timing,pass
+igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
+igt@kms_vblank@invalid,skip
+igt@kms_vblank@crtc-id,skip
+igt@kms_vblank@pipe-a-query-idle,skip
+igt@kms_vblank@pipe-a-query-forked,skip
+igt@kms_vblank@pipe-a-query-busy,skip
+igt@kms_vblank@pipe-a-query-forked-busy,skip
+igt@kms_vblank@pipe-a-wait-idle,skip
+igt@kms_vblank@pipe-a-wait-forked,skip
+igt@kms_vblank@pipe-a-wait-busy,skip
+igt@kms_vblank@pipe-a-wait-forked-busy,skip
+igt@kms_vblank@pipe-a-ts-continuation-idle,skip
+igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-b-accuracy-idle,skip
+igt@kms_vblank@pipe-b-query-idle,skip
+igt@kms_vblank@pipe-b-query-forked,skip
+igt@kms_vblank@pipe-b-query-busy,skip
+igt@kms_vblank@pipe-b-query-forked-busy,skip
+igt@kms_vblank@pipe-b-wait-idle,skip
+igt@kms_vblank@pipe-b-wait-forked,skip
+igt@kms_vblank@pipe-b-wait-busy,skip
+igt@kms_vblank@pipe-b-wait-forked-busy,skip
+igt@kms_vblank@pipe-b-ts-continuation-idle,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
diff --git a/drivers/gpu/drm/msm/ci/msm_apq8096_results.txt b/drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
new file mode 100644
index 000000000000..6f10941e5626
--- /dev/null
+++ b/drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
@@ -0,0 +1,140 @@
+igt@core_auth@getclient-simple,pass
+igt@core_auth@getclient-master-drop,pass
+igt@core_auth@basic-auth,pass
+igt@core_auth@many-magics,pass
+igt@core_getclient,pass
+igt@core_getstats,pass
+igt@core_getversion,pass
+igt@core_setmaster_vs_auth,pass
+igt@drm_read@invalid-buffer,skip
+igt@drm_read@fault-buffer,skip
+igt@drm_read@empty-block,skip
+igt@drm_read@empty-nonblock,skip
+igt@drm_read@short-buffer-block,skip
+igt@drm_read@short-buffer-nonblock,skip
+igt@drm_read@short-buffer-wakeup,skip
+igt@kms_addfb_basic@unused-handle,pass
+igt@kms_addfb_basic@unused-pitches,pass
+igt@kms_addfb_basic@unused-offsets,pass
+igt@kms_addfb_basic@unused-modifier,pass
+igt@kms_addfb_basic@legacy-format,dmesg-warn
+igt@kms_addfb_basic@no-handle,pass
+igt@kms_addfb_basic@basic,pass
+igt@kms_addfb_basic@bad-pitch-0,pass
+igt@kms_addfb_basic@bad-pitch-32,pass
+igt@kms_addfb_basic@bad-pitch-63,pass
+igt@kms_addfb_basic@bad-pitch-128,pass
+igt@kms_addfb_basic@bad-pitch-256,pass
+igt@kms_addfb_basic@bad-pitch-1024,pass
+igt@kms_addfb_basic@bad-pitch-999,pass
+igt@kms_addfb_basic@bad-pitch-65536,pass
+igt@kms_addfb_basic@size-max,pass
+igt@kms_addfb_basic@too-wide,pass
+igt@kms_addfb_basic@too-high,dmesg-warn
+igt@kms_addfb_basic@bo-too-small,pass
+igt@kms_addfb_basic@small-bo,pass
+igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
+igt@kms_addfb_basic@addfb25-bad-modifier,fail
+igt@kms_addfb_basic@invalid-get-prop-any,pass
+igt@kms_addfb_basic@invalid-get-prop,pass
+igt@kms_addfb_basic@invalid-set-prop-any,pass
+igt@kms_addfb_basic@invalid-set-prop,pass
+igt@kms_addfb_basic@master-rmfb,pass
+igt@kms_atomic@plane-overlay-legacy,skip
+igt@kms_atomic@plane-primary-legacy,skip
+igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
+igt@kms_atomic@plane-immutable-zpos,skip
+igt@kms_atomic@test-only,skip
+igt@kms_atomic@plane-cursor-legacy,skip
+igt@kms_atomic@plane-invalid-params,skip
+igt@kms_atomic@crtc-invalid-params,skip
+igt@kms_atomic@atomic-invalid-params,skip
+igt@kms_atomic@atomic_plane_damage,skip
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_flip_event_leak,skip
+igt@kms_getfb@getfb-handle-zero,pass
+igt@kms_getfb@getfb-handle-valid,pass
+igt@kms_getfb@getfb-handle-closed,pass
+igt@kms_getfb@getfb-handle-not-fb,pass
+igt@kms_getfb@getfb-addfb-different-handles,pass
+igt@kms_getfb@getfb-repeated-different-handles,pass
+igt@kms_getfb@getfb2-handle-zero,pass
+igt@kms_getfb@getfb2-handle-closed,pass
+igt@kms_getfb@getfb2-handle-not-fb,pass
+igt@kms_getfb@getfb2-into-addfb2,pass
+igt@kms_getfb@getfb-handle-protection,pass
+igt@kms_getfb@getfb2-handle-protection,pass
+igt@kms_hdmi_inject@inject-4k,dmesg-warn
+igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
+igt@kms_pipe_crc_basic@bad-source,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
+igt@kms_prop_blob@basic,pass
+igt@kms_prop_blob@blob-prop-core,pass
+igt@kms_prop_blob@blob-prop-validate,pass
+igt@kms_prop_blob@blob-prop-lifetime,pass
+igt@kms_prop_blob@blob-multiple,pass
+igt@kms_prop_blob@invalid-get-prop-any,pass
+igt@kms_prop_blob@invalid-get-prop,pass
+igt@kms_prop_blob@invalid-set-prop-any,pass
+igt@kms_prop_blob@invalid-set-prop,pass
+igt@kms_rmfb@rmfb-ioctl,skip
+igt@kms_rmfb@close-fd,skip
+igt@kms_setmode@basic,skip
+igt@msm_mapping@sqefw,skip
+igt@msm_mapping@shadow,skip
+igt@msm_recovery@hangcheck,skip
+igt@msm_recovery@gpu-fault,skip
+igt@msm_recovery@iova-fault,skip
+igt@msm_submit@empty-submit,pass
+igt@msm_submit@invalid-queue-submit,pass
+igt@msm_submit@invalid-flags-submit,pass
+igt@msm_submit@invalid-in-fence-submit,pass
+igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
+igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
+igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
+igt@msm_submit@valid-submit,pass
+igt@kms_sysfs_edid_timing,pass
+igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
+igt@kms_vblank@invalid,skip
+igt@kms_vblank@crtc-id,skip
+igt@kms_vblank@pipe-a-query-idle,skip
+igt@kms_vblank@pipe-a-query-forked,skip
+igt@kms_vblank@pipe-a-query-busy,skip
+igt@kms_vblank@pipe-a-query-forked-busy,skip
+igt@kms_vblank@pipe-a-wait-idle,skip
+igt@kms_vblank@pipe-a-wait-forked,skip
+igt@kms_vblank@pipe-a-wait-busy,skip
+igt@kms_vblank@pipe-a-wait-forked-busy,skip
+igt@kms_vblank@pipe-a-ts-continuation-idle,skip
+igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-b-accuracy-idle,skip
+igt@kms_vblank@pipe-b-query-idle,skip
+igt@kms_vblank@pipe-b-query-forked,skip
+igt@kms_vblank@pipe-b-query-busy,skip
+igt@kms_vblank@pipe-b-query-forked-busy,skip
+igt@kms_vblank@pipe-b-wait-idle,skip
+igt@kms_vblank@pipe-b-wait-forked,skip
+igt@kms_vblank@pipe-b-wait-busy,skip
+igt@kms_vblank@pipe-b-wait-forked-busy,skip
+igt@kms_vblank@pipe-b-ts-continuation-idle,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
diff --git a/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
new file mode 100644
index 000000000000..01f7b4b399b5
--- /dev/null
+++ b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
@@ -0,0 +1,141 @@
+igt@core_auth@getclient-simple,dmesg-warn
+igt@core_auth@getclient-master-drop,pass
+igt@core_auth@basic-auth,pass
+igt@core_auth@many-magics,pass
+igt@core_getclient,pass
+igt@core_getstats,pass
+igt@core_getversion,pass
+igt@core_setmaster_vs_auth,pass
+igt@drm_read@invalid-buffer,pass
+igt@drm_read@fault-buffer,pass
+igt@drm_read@empty-block,pass
+igt@drm_read@empty-nonblock,pass
+igt@drm_read@short-buffer-block,pass
+igt@drm_read@short-buffer-nonblock,pass
+igt@drm_read@short-buffer-wakeup,pass
+igt@kms_addfb_basic@unused-handle,pass
+igt@kms_addfb_basic@unused-pitches,pass
+igt@kms_addfb_basic@unused-offsets,pass
+igt@kms_addfb_basic@unused-modifier,pass
+igt@kms_addfb_basic@legacy-format,dmesg-warn
+igt@kms_addfb_basic@no-handle,pass
+igt@kms_addfb_basic@basic,pass
+igt@kms_addfb_basic@bad-pitch-0,pass
+igt@kms_addfb_basic@bad-pitch-32,pass
+igt@kms_addfb_basic@bad-pitch-63,pass
+igt@kms_addfb_basic@bad-pitch-128,pass
+igt@kms_addfb_basic@bad-pitch-256,pass
+igt@kms_addfb_basic@bad-pitch-1024,pass
+igt@kms_addfb_basic@bad-pitch-999,pass
+igt@kms_addfb_basic@bad-pitch-65536,pass
+igt@kms_addfb_basic@size-max,pass
+igt@kms_addfb_basic@too-wide,pass
+igt@kms_addfb_basic@too-high,dmesg-warn
+igt@kms_addfb_basic@bo-too-small,pass
+igt@kms_addfb_basic@small-bo,pass
+igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
+igt@kms_addfb_basic@addfb25-bad-modifier,dmesg-warn
+igt@kms_addfb_basic@invalid-get-prop-any,pass
+igt@kms_addfb_basic@invalid-get-prop,pass
+igt@kms_addfb_basic@invalid-set-prop-any,pass
+igt@kms_addfb_basic@invalid-set-prop,pass
+igt@kms_addfb_basic@master-rmfb,pass
+igt@kms_atomic@plane-overlay-legacy,skip
+igt@kms_atomic@plane-primary-legacy,pass
+igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
+igt@kms_atomic@plane-immutable-zpos,pass
+igt@kms_atomic@test-only,pass
+igt@kms_atomic@plane-cursor-legacy,pass
+igt@kms_atomic@plane-invalid-params,pass
+igt@kms_atomic@crtc-invalid-params,pass
+igt@kms_atomic@atomic-invalid-params,pass
+igt@kms_atomic@atomic_plane_damage,pass
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_flip_event_leak,pass
+igt@kms_getfb@getfb-handle-zero,pass
+igt@kms_getfb@getfb-handle-valid,pass
+igt@kms_getfb@getfb-handle-closed,pass
+igt@kms_getfb@getfb-handle-not-fb,pass
+igt@kms_getfb@getfb-addfb-different-handles,pass
+igt@kms_getfb@getfb-repeated-different-handles,pass
+igt@kms_getfb@getfb2-handle-zero,pass
+igt@kms_getfb@getfb2-handle-closed,pass
+igt@kms_getfb@getfb2-handle-not-fb,pass
+igt@kms_getfb@getfb2-into-addfb2,pass
+igt@kms_getfb@getfb-handle-protection,pass
+igt@kms_getfb@getfb2-handle-protection,pass
+igt@kms_hdmi_inject@inject-4k,skip
+igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
+igt@kms_pipe_crc_basic@bad-source,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-a,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,pass
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,pass
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,pass
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,pass
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-b,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,pass
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,pass
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,pass
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,pass
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,pass
+igt@kms_prop_blob@basic,pass
+igt@kms_prop_blob@blob-prop-core,pass
+igt@kms_prop_blob@blob-prop-validate,pass
+igt@kms_prop_blob@blob-prop-lifetime,pass
+igt@kms_prop_blob@blob-multiple,pass
+igt@kms_prop_blob@invalid-get-prop-any,pass
+igt@kms_prop_blob@invalid-get-prop,pass
+igt@kms_prop_blob@invalid-set-prop-any,pass
+igt@kms_prop_blob@invalid-set-prop,pass
+igt@kms_rmfb@rmfb-ioctl,pass
+igt@kms_rmfb@close-fd,fail
+igt@kms_setmode@basic@pipe-a-edp-1,pass
+igt@kms_setmode@basic@pipe-b-edp-1,pass
+igt@msm_mapping@sqefw,dmesg-fail
+igt@msm_mapping@shadow,dmesg-fail
+igt@msm_recovery@hangcheck,dmesg-warn
+igt@msm_recovery@gpu-fault,dmesg-warn
+igt@msm_recovery@iova-fault,dmesg-warn
+igt@msm_submit@empty-submit,pass
+igt@msm_submit@invalid-queue-submit,pass
+igt@msm_submit@invalid-flags-submit,pass
+igt@msm_submit@invalid-in-fence-submit,pass
+igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
+igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
+igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
+igt@msm_submit@valid-submit,pass
+igt@kms_sysfs_edid_timing,pass
+igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,pass
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,fail
+igt@kms_vblank@invalid,pass
+igt@kms_vblank@crtc-id,pass
+igt@kms_vblank@pipe-a-query-idle,pass
+igt@kms_vblank@pipe-a-query-forked,pass
+igt@kms_vblank@pipe-a-query-busy,pass
+igt@kms_vblank@pipe-a-query-forked-busy,pass
+igt@kms_vblank@pipe-a-wait-idle,pass
+igt@kms_vblank@pipe-a-wait-forked,pass
+igt@kms_vblank@pipe-a-wait-busy,pass
+igt@kms_vblank@pipe-a-wait-forked-busy,pass
+igt@kms_vblank@pipe-a-ts-continuation-idle,pass
+igt@kms_vblank@pipe-a-ts-continuation-modeset,pass
+igt@kms_vblank@pipe-b-accuracy-idle,pass
+igt@kms_vblank@pipe-b-query-idle,pass
+igt@kms_vblank@pipe-b-query-forked,pass
+igt@kms_vblank@pipe-b-query-busy,pass
+igt@kms_vblank@pipe-b-query-forked-busy,pass
+igt@kms_vblank@pipe-b-wait-idle,pass
+igt@kms_vblank@pipe-b-wait-forked,pass
+igt@kms_vblank@pipe-b-wait-busy,pass
+igt@kms_vblank@pipe-b-wait-forked-busy,pass
+igt@kms_vblank@pipe-b-ts-continuation-idle,pass
+igt@kms_vblank@pipe-b-ts-continuation-modeset,pass
diff --git a/drivers/gpu/drm/msm/ci/msm_sdm845_results.txt b/drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
new file mode 100644
index 000000000000..3df1e5ef6d80
--- /dev/null
+++ b/drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
@@ -0,0 +1,141 @@
+igt@core_auth@getclient-simple,dmesg-warn
+igt@core_auth@getclient-master-drop,pass
+igt@core_auth@basic-auth,pass
+igt@core_auth@many-magics,pass
+igt@core_getclient,pass
+igt@core_getstats,pass
+igt@core_getversion,pass
+igt@core_setmaster_vs_auth,pass
+igt@drm_read@invalid-buffer,pass
+igt@drm_read@fault-buffer,pass
+igt@drm_read@empty-block,pass
+igt@drm_read@empty-nonblock,pass
+igt@drm_read@short-buffer-block,pass
+igt@drm_read@short-buffer-nonblock,pass
+igt@drm_read@short-buffer-wakeup,pass
+igt@kms_addfb_basic@unused-handle,pass
+igt@kms_addfb_basic@unused-pitches,pass
+igt@kms_addfb_basic@unused-offsets,pass
+igt@kms_addfb_basic@unused-modifier,pass
+igt@kms_addfb_basic@legacy-format,dmesg-warn
+igt@kms_addfb_basic@no-handle,pass
+igt@kms_addfb_basic@basic,pass
+igt@kms_addfb_basic@bad-pitch-0,pass
+igt@kms_addfb_basic@bad-pitch-32,pass
+igt@kms_addfb_basic@bad-pitch-63,pass
+igt@kms_addfb_basic@bad-pitch-128,pass
+igt@kms_addfb_basic@bad-pitch-256,pass
+igt@kms_addfb_basic@bad-pitch-1024,pass
+igt@kms_addfb_basic@bad-pitch-999,pass
+igt@kms_addfb_basic@bad-pitch-65536,pass
+igt@kms_addfb_basic@size-max,pass
+igt@kms_addfb_basic@too-wide,pass
+igt@kms_addfb_basic@too-high,dmesg-warn
+igt@kms_addfb_basic@bo-too-small,pass
+igt@kms_addfb_basic@small-bo,pass
+igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
+igt@kms_addfb_basic@addfb25-bad-modifier,dmesg-warn
+igt@kms_addfb_basic@invalid-get-prop-any,pass
+igt@kms_addfb_basic@invalid-get-prop,pass
+igt@kms_addfb_basic@invalid-set-prop-any,pass
+igt@kms_addfb_basic@invalid-set-prop,pass
+igt@kms_addfb_basic@master-rmfb,pass
+igt@kms_atomic@plane-overlay-legacy,dmesg-warn
+igt@kms_atomic@plane-primary-legacy,dmesg-warn
+igt@kms_atomic@plane-primary-overlay-mutable-zpos,dmesg-warn
+igt@kms_atomic@plane-immutable-zpos,dmesg-warn
+igt@kms_atomic@test-only,dmesg-warn
+igt@kms_atomic@plane-cursor-legacy,dmesg-warn
+igt@kms_atomic@plane-invalid-params,dmesg-warn
+igt@kms_atomic@crtc-invalid-params,dmesg-warn
+igt@kms_atomic@atomic-invalid-params,dmesg-warn
+igt@kms_atomic@atomic_plane_damage,dmesg-warn
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_flip_event_leak,dmesg-warn
+igt@kms_getfb@getfb-handle-zero,pass
+igt@kms_getfb@getfb-handle-valid,pass
+igt@kms_getfb@getfb-handle-closed,pass
+igt@kms_getfb@getfb-handle-not-fb,pass
+igt@kms_getfb@getfb-addfb-different-handles,pass
+igt@kms_getfb@getfb-repeated-different-handles,pass
+igt@kms_getfb@getfb2-handle-zero,pass
+igt@kms_getfb@getfb2-handle-closed,pass
+igt@kms_getfb@getfb2-handle-not-fb,pass
+igt@kms_getfb@getfb2-into-addfb2,pass
+igt@kms_getfb@getfb-handle-protection,pass
+igt@kms_getfb@getfb2-handle-protection,pass
+igt@kms_hdmi_inject@inject-4k,skip
+igt@kms_multipipe_modeset@basic-max-pipe-crc-check,pass
+igt@kms_pipe_crc_basic@bad-source,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-a,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,pass
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,pass
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,pass
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,dmesg-warn
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,dmesg-warn
+igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
+igt@kms_prop_blob@basic,pass
+igt@kms_prop_blob@blob-prop-core,pass
+igt@kms_prop_blob@blob-prop-validate,pass
+igt@kms_prop_blob@blob-prop-lifetime,pass
+igt@kms_prop_blob@blob-multiple,pass
+igt@kms_prop_blob@invalid-get-prop-any,pass
+igt@kms_prop_blob@invalid-get-prop,pass
+igt@kms_prop_blob@invalid-set-prop-any,pass
+igt@kms_prop_blob@invalid-set-prop,pass
+igt@kms_rmfb@rmfb-ioctl,pass
+igt@kms_rmfb@close-fd,fail
+igt@kms_setmode@basic@pipe-a-edp-1,dmesg-warn
+igt@kms_setmode@basic,skip
+igt@msm_mapping@sqefw,dmesg-fail
+igt@msm_mapping@shadow,dmesg-fail
+igt@msm_recovery@hangcheck,dmesg-warn
+igt@msm_recovery@gpu-fault,dmesg-warn
+igt@msm_recovery@iova-fault,dmesg-warn
+igt@msm_submit@empty-submit,pass
+igt@msm_submit@invalid-queue-submit,pass
+igt@msm_submit@invalid-flags-submit,pass
+igt@msm_submit@invalid-in-fence-submit,pass
+igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
+igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
+igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
+igt@msm_submit@valid-submit,pass
+igt@kms_sysfs_edid_timing,pass
+igt@kms_universal_plane@universal-plane-pipe-a-functional,dmesg-fail
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,dmesg-warn
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
+igt@kms_vblank@invalid,dmesg-warn
+igt@kms_vblank@crtc-id,dmesg-warn
+igt@kms_vblank@pipe-a-query-idle,dmesg-warn
+igt@kms_vblank@pipe-a-query-forked,dmesg-warn
+igt@kms_vblank@pipe-a-query-busy,dmesg-warn
+igt@kms_vblank@pipe-a-query-forked-busy,dmesg-warn
+igt@kms_vblank@pipe-a-wait-idle,dmesg-warn
+igt@kms_vblank@pipe-a-wait-forked,dmesg-warn
+igt@kms_vblank@pipe-a-wait-busy,dmesg-warn
+igt@kms_vblank@pipe-a-wait-forked-busy,dmesg-warn
+igt@kms_vblank@pipe-a-ts-continuation-idle,dmesg-warn
+igt@kms_vblank@pipe-a-ts-continuation-modeset,dmesg-warn
+igt@kms_vblank@pipe-b-accuracy-idle,skip
+igt@kms_vblank@pipe-b-query-idle,skip
+igt@kms_vblank@pipe-b-query-forked,skip
+igt@kms_vblank@pipe-b-query-busy,skip
+igt@kms_vblank@pipe-b-query-forked-busy,skip
+igt@kms_vblank@pipe-b-wait-idle,skip
+igt@kms_vblank@pipe-b-wait-forked,skip
+igt@kms_vblank@pipe-b-wait-busy,skip
+igt@kms_vblank@pipe-b-wait-forked-busy,skip
+igt@kms_vblank@pipe-b-ts-continuation-idle,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 49+ messages in thread

* Re: [Freedreno] [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-10 14:13 ` [RFC v2] " Tomeu Vizoso
@ 2022-05-10 19:39   ` Jessica Zhang
  2022-05-10 20:25     ` Rob Clark
  2022-05-11  4:25     ` Tomeu Vizoso
  2022-05-11  5:06   ` Adding CI results to the kernel tree was " Dave Airlie
  2022-05-11  6:15   ` [RFC v3] " Tomeu Vizoso
  2 siblings, 2 replies; 49+ messages in thread
From: Jessica Zhang @ 2022-05-10 19:39 UTC (permalink / raw)
  To: Tomeu Vizoso
  Cc: freedreno, linux-doc, David Airlie, linux-arm-msm,
	Jonathan Corbet, Abhinav Kumar, linux-kernel, dri-devel,
	Thomas Zimmermann, Sean Paul



On 5/10/2022 7:13 AM, Tomeu Vizoso wrote:
> And use it to store expectations about what the drm/msm driver is
> supposed to pass in the IGT test suite.
> 
> Also include a configuration file that points to the out-of-tree CI
> scripts.
> 
> By storing the test expectations along the code we can make sure both
> stay in sync with each other, and so we can know when a code change
> breaks those expectations.
> 
> This will allow all contributors to drm/msm to reuse the infrastructure
> already in gitlab.freedesktop.org to test the driver on several
> generations of the hardware.
> 
> v2:
>    - Fix names of result expectation files to match SoC
>    - Don't execute tests that are going to skip on all boards
> 
> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> ---
>   Documentation/gpu/msm_automated_testing.rst   |  70 +++++++++
>   drivers/gpu/drm/msm/ci/gitlab-ci.yml          |  11 ++
>   drivers/gpu/drm/msm/ci/msm.testlist           | 148 ++++++++++++++++++
>   .../gpu/drm/msm/ci/msm_apq8016_results.txt    | 140 +++++++++++++++++
>   .../gpu/drm/msm/ci/msm_apq8096_results.txt    | 140 +++++++++++++++++
>   drivers/gpu/drm/msm/ci/msm_sc7180_results.txt | 141 +++++++++++++++++
>   drivers/gpu/drm/msm/ci/msm_sdm845_results.txt | 141 +++++++++++++++++
>   7 files changed, 791 insertions(+)
>   create mode 100644 Documentation/gpu/msm_automated_testing.rst
>   create mode 100644 drivers/gpu/drm/msm/ci/gitlab-ci.yml
>   create mode 100644 drivers/gpu/drm/msm/ci/msm.testlist
>   create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
>   create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
>   create mode 100644 drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
>   create mode 100644 drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
> 
> diff --git a/Documentation/gpu/msm_automated_testing.rst b/Documentation/gpu/msm_automated_testing.rst
> new file mode 100644
> index 000000000000..fe59474569c2
> --- /dev/null
> +++ b/Documentation/gpu/msm_automated_testing.rst
> @@ -0,0 +1,70 @@
> +.. SPDX-License-Identifier: GPL-2.0+
> +
> +=========================================
> +Automated testing of MSM DRM driver
> +=========================================

Hey Tomeu,

I like the overall idea of having this in as part of the repo, but just 
have a few questions on some details.

> +
> +
> +Introduction
> +============
> +
> +Making sure that changes to a driver don't introduce regressions can be very time consuming when lots of different hardware configurations need to be tested. Moreover, it isn't practical for each person interested in this testing to have to acquire and maintain what can be a considerable amount of hardware.
> +
> +Also, it is desirable for developers to check for regressions in their code by themselves, instead of relying on the maintainer finding them and then reporting back.
> +
> +There are facilities in gitlab.freedesktop.org to automatically test Mesa that can be used as well for testing DRM drivers such as drm/msm. This document explains how people interested in testing the drm/msm driver can use this shared infrastructure to save quite some time and effort.
> +
> +
> +Relevant files
> +==============
> +
> +drivers/gpu/drm/msm/ci/gitlab-ci.yml
> +------------------------------------
> +
> +Specifies the specific version of the scripts to be used. GitLab CI will use the values defined in this file to fetch the right scripts.
> +
> +
> +drivers/gpu/drm/msm/ci/msm.testlist
> +-----------------------------------
> +
> +Specifies the tests that the current code is expected to be able to reliably run. These tests are expected to not hang the DUT (device under testing) when running on the revision they belong to, and to give consistent results.
> +
> +
> +drivers/gpu/drm/msm/ci/msm_*_results.txt
> +----------------------------------------
> +
> +Specifies the expected results of running this specific kernel revision on a given hardware configuration.
> +
> +
> +How to enable automated testing on your tree
> +============================================
> +
> +1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one yet
> +
> +2. In your kernel repo's configuration (eg. https://gitlab.freedesktop.org/tomeu/linux/-/settings/ci_cd), change the CI/CD configuration file from .gitlab-ci.yml to drivers/gpu/drm/msm/ci/gitlab-ci.yml.
> +
> +3. Next time you push to this repository, you will see a CI pipeline being created (eg. https://gitlab.freedesktop.org/tomeu/linux/-/pipelines)
> +
> +4. The various jobs will be run and when the pipeline is finished, all jobs should be green unless a regression has been found.
> +
> +
> +How to update test expectations
> +===============================
> +
> +If your changes to the code fix any tests, you will have to update one or more of the files in drivers/gpu/drm/msm/ci/msm_*_results.txt, for each of the test platforms affected by the change.
> +
> +If you have run a pipeline and it failed because of a mismatched test result, you will have been offered a patch at the end of the run that you can apply after reviewing it.
> +
> +
> +How to expand coverage
> +======================
> +
> +If your code changes makes it possible to run more tests (by solving reliability issues, for example), more tests can be added to this list, and then the expected results updated with the patch file that will be printed at the end of each job.
> +
> +If there is a need for updating the version of IGT being used (maybe you have added more tests to it), follow the instructions at https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/tree/msm#upreving-igt.
> +
> +
> +How to test your changes to the scripts
> +==========================================
> +
> +For testing changes to the scripts in the drm-ci repo, change the DRM_CI_PROJECT_PATH variable in drivers/gpu/drm/msm/ci/gitlab-ci.yml to match your fork of the project (eg. tomeu/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/msm/ci/gitlab-ci.yml b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
> new file mode 100644
> index 000000000000..9b7caa7fcab2
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
> @@ -0,0 +1,11 @@
> +variables:
> +  # Change this to use your fork of drm-ci
> +  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
> +  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha msm
> +
> +include:
> +  - project: *drm-ci-project-path
> +    ref: *drm-ci-commit-sha
> +    file:
> +      - '.msm-gitlab-ci.yml'
> +      - '.gitlab-ci.yml'
> diff --git a/drivers/gpu/drm/msm/ci/msm.testlist b/drivers/gpu/drm/msm/ci/msm.testlist
> new file mode 100644
> index 000000000000..8805a3bc7316
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/ci/msm.testlist
> @@ -0,0 +1,148 @@
> +# Keep alphabetically sorted by default
> +
> +igt@core_auth@getclient-simple
> +igt@core_auth@getclient-master-drop
> +igt@core_auth@basic-auth
> +igt@core_auth@many-magics
> +igt@core_getclient
> +igt@core_getstats
> +igt@core_getversion
> +igt@core_setmaster_vs_auth
> +igt@drm_read@invalid-buffer
> +igt@drm_read@fault-buffer
> +igt@drm_read@empty-block
> +igt@drm_read@empty-nonblock
> +igt@drm_read@short-buffer-block
> +igt@drm_read@short-buffer-nonblock
> +igt@drm_read@short-buffer-wakeup
> +igt@kms_addfb_basic@unused-handle
> +igt@kms_addfb_basic@unused-pitches
> +igt@kms_addfb_basic@unused-offsets
> +igt@kms_addfb_basic@unused-modifier
> +igt@kms_addfb_basic@legacy-format
> +igt@kms_addfb_basic@no-handle
> +igt@kms_addfb_basic@basic
> +igt@kms_addfb_basic@bad-pitch-0
> +igt@kms_addfb_basic@bad-pitch-32
> +igt@kms_addfb_basic@bad-pitch-63
> +igt@kms_addfb_basic@bad-pitch-128
> +igt@kms_addfb_basic@bad-pitch-256
> +igt@kms_addfb_basic@bad-pitch-1024
> +igt@kms_addfb_basic@bad-pitch-999
> +igt@kms_addfb_basic@bad-pitch-65536
> +igt@kms_addfb_basic@size-max
> +igt@kms_addfb_basic@too-wide
> +igt@kms_addfb_basic@too-high
> +igt@kms_addfb_basic@bo-too-small
> +igt@kms_addfb_basic@small-bo
> +igt@kms_addfb_basic@addfb25-modifier-no-flag
> +igt@kms_addfb_basic@addfb25-bad-modifier
> +igt@kms_addfb_basic@invalid-get-prop-any
> +igt@kms_addfb_basic@invalid-get-prop
> +igt@kms_addfb_basic@invalid-set-prop-any
> +igt@kms_addfb_basic@invalid-set-prop
> +igt@kms_addfb_basic@master-rmfb
> +igt@kms_atomic@plane-overlay-legacy
> +igt@kms_atomic@plane-primary-legacy
> +igt@kms_atomic@plane-primary-overlay-mutable-zpos
> +igt@kms_atomic@plane-immutable-zpos
> +igt@kms_atomic@test-only
> +igt@kms_atomic@plane-cursor-legacy
> +igt@kms_atomic@plane-invalid-params
> +igt@kms_atomic@crtc-invalid-params
> +igt@kms_atomic@atomic-invalid-params
> +igt@kms_atomic@atomic_plane_damage
> +igt@kms_atomic_interruptible@legacy-setmode@pipe-a-edp-1
> +igt@kms_atomic_interruptible@atomic-setmode@pipe-a-edp-1
> +igt@kms_atomic_interruptible@legacy-dpms@pipe-a-edp-1
> +igt@kms_atomic_interruptible@legacy-pageflip@pipe-a-edp-1
> +igt@kms_atomic_interruptible@legacy-cursor@pipe-a-edp-1
> +igt@kms_atomic_interruptible@universal-setplane-primary@pipe-a-edp-1
> +igt@kms_atomic_interruptible@universal-setplane-cursor@pipe-a-edp-1

I see that there are some KMS subtests/tests are missing such as 
kms_atomic_transition -- are they unstable across all boards?

 From what I've seen, kms_atomic_transition is unstable only on Trogdor, 
but has stable results on other boards.

> +igt@kms_content_protection@LIC > +igt@kms_flip_event_leak
> +igt@kms_getfb@getfb-handle-zero
> +igt@kms_getfb@getfb-handle-valid
> +igt@kms_getfb@getfb-handle-closed
> +igt@kms_getfb@getfb-handle-not-fb
> +igt@kms_getfb@getfb-addfb-different-handles
> +igt@kms_getfb@getfb-repeated-different-handles
> +igt@kms_getfb@getfb2-handle-zero
> +igt@kms_getfb@getfb2-handle-closed
> +igt@kms_getfb@getfb2-handle-not-fb
> +igt@kms_getfb@getfb2-into-addfb2
> +igt@kms_getfb@getfb-handle-protection
> +igt@kms_getfb@getfb2-handle-protection
> +igt@kms_hdmi_inject@inject-4k > +igt@kms_multipipe_modeset@basic-max-pipe-crc-check
> +igt@kms_pipe_crc_basic@bad-source
> +igt@kms_pipe_crc_basic@read-crc-pipe-a
> +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a
> +igt@kms_pipe_crc_basic@read-crc-pipe-b
> +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b
> +igt@kms_prop_blob@basic
> +igt@kms_prop_blob@blob-prop-core
> +igt@kms_prop_blob@blob-prop-validate
> +igt@kms_prop_blob@blob-prop-lifetime
> +igt@kms_prop_blob@blob-multiple
> +igt@kms_prop_blob@invalid-get-prop-any
> +igt@kms_prop_blob@invalid-get-prop
> +igt@kms_prop_blob@invalid-set-prop-any
> +igt@kms_prop_blob@invalid-set-prop
> +igt@kms_rmfb@rmfb-ioctl
> +igt@kms_rmfb@close-fd
> +igt@kms_setmode@basic@pipe-a-edp-1
> +igt@kms_setmode@basic@pipe-b-edp-1
> +
> +# Flakes on a530 with:
> +# arm-smmu b40000.iommu: Unhandled context fault: fsr=0x408, iova=0x01003000, fsynr=0x13, cbfrsynra=0x0, cb=0
> +# igt@msm_mapping@ring
> +
> +igt@msm_mapping@sqefw
> +igt@msm_mapping@shadow
> +igt@msm_recovery@hangcheck
> +igt@msm_recovery@gpu-fault
> +igt@msm_recovery@iova-fault
> +igt@msm_submit@empty-submit
> +igt@msm_submit@invalid-queue-submit
> +igt@msm_submit@invalid-flags-submit
> +igt@msm_submit@invalid-in-fence-submit
> +igt@msm_submit@invalid-duplicate-bo-submit
> +igt@msm_submit@invalid-cmd-idx-submit
> +igt@msm_submit@invalid-cmd-type-submit
> +igt@msm_submit@valid-submit
> +igt@kms_sysfs_edid_timing
> +igt@kms_universal_plane@universal-plane-pipe-a-functional
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b
> +igt@kms_vblank@invalid
> +igt@kms_vblank@crtc-id
> +igt@kms_vblank@pipe-a-query-idle
> +igt@kms_vblank@pipe-a-query-forked
> +igt@kms_vblank@pipe-a-query-busy
> +igt@kms_vblank@pipe-a-query-forked-busy
> +igt@kms_vblank@pipe-a-wait-idle
> +igt@kms_vblank@pipe-a-wait-forked
> +igt@kms_vblank@pipe-a-wait-busy
> +igt@kms_vblank@pipe-a-wait-forked-busy
> +igt@kms_vblank@pipe-a-ts-continuation-idle
> +igt@kms_vblank@pipe-a-ts-continuation-modeset
> +igt@kms_vblank@pipe-b-accuracy-idle
> +igt@kms_vblank@pipe-b-query-idle
> +igt@kms_vblank@pipe-b-query-forked
> +igt@kms_vblank@pipe-b-query-busy
> +igt@kms_vblank@pipe-b-query-forked-busy
> +igt@kms_vblank@pipe-b-wait-idle
> +igt@kms_vblank@pipe-b-wait-forked
> +igt@kms_vblank@pipe-b-wait-busy
> +igt@kms_vblank@pipe-b-wait-forked-busy
> +igt@kms_vblank@pipe-b-ts-continuation-idle
> +igt@kms_vblank@pipe-b-ts-continuation-modeset
> diff --git a/drivers/gpu/drm/msm/ci/msm_apq8016_results.txt b/drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
> new file mode 100644
> index 000000000000..2cad61d89faf
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
> @@ -0,0 +1,140 @@
> +igt@core_auth@getclient-simple,pass
> +igt@core_auth@getclient-master-drop,pass
> +igt@core_auth@basic-auth,pass
> +igt@core_auth@many-magics,pass
> +igt@core_getclient,pass
> +igt@core_getstats,pass
> +igt@core_getversion,pass
> +igt@core_setmaster_vs_auth,pass
> +igt@drm_read@invalid-buffer,skip
> +igt@drm_read@fault-buffer,skip
> +igt@drm_read@empty-block,skip
> +igt@drm_read@empty-nonblock,skip
> +igt@drm_read@short-buffer-block,skip
> +igt@drm_read@short-buffer-nonblock,skip
> +igt@drm_read@short-buffer-wakeup,skip
> +igt@kms_addfb_basic@unused-handle,pass
> +igt@kms_addfb_basic@unused-pitches,pass
> +igt@kms_addfb_basic@unused-offsets,pass
> +igt@kms_addfb_basic@unused-modifier,pass
> +igt@kms_addfb_basic@legacy-format,dmesg-warn
> +igt@kms_addfb_basic@no-handle,pass
> +igt@kms_addfb_basic@basic,pass
> +igt@kms_addfb_basic@bad-pitch-0,pass
> +igt@kms_addfb_basic@bad-pitch-32,pass
> +igt@kms_addfb_basic@bad-pitch-63,pass
> +igt@kms_addfb_basic@bad-pitch-128,pass
> +igt@kms_addfb_basic@bad-pitch-256,pass
> +igt@kms_addfb_basic@bad-pitch-1024,pass
> +igt@kms_addfb_basic@bad-pitch-999,pass
> +igt@kms_addfb_basic@bad-pitch-65536,pass
> +igt@kms_addfb_basic@size-max,pass
> +igt@kms_addfb_basic@too-wide,pass
> +igt@kms_addfb_basic@too-high,dmesg-warn
> +igt@kms_addfb_basic@bo-too-small,pass
> +igt@kms_addfb_basic@small-bo,pass
> +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> +igt@kms_addfb_basic@addfb25-bad-modifier,fail
> +igt@kms_addfb_basic@invalid-get-prop-any,pass
> +igt@kms_addfb_basic@invalid-get-prop,pass
> +igt@kms_addfb_basic@invalid-set-prop-any,pass
> +igt@kms_addfb_basic@invalid-set-prop,pass
> +igt@kms_addfb_basic@master-rmfb,pass
> +igt@kms_atomic@plane-overlay-legacy,skip
> +igt@kms_atomic@plane-primary-legacy,skip
> +igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
> +igt@kms_atomic@plane-immutable-zpos,skip
> +igt@kms_atomic@test-only,skip
> +igt@kms_atomic@plane-cursor-legacy,skip
> +igt@kms_atomic@plane-invalid-params,skip
> +igt@kms_atomic@crtc-invalid-params,skip
> +igt@kms_atomic@atomic-invalid-params,skip
> +igt@kms_atomic@atomic_plane_damage,skip
> +igt@kms_atomic_interruptible@legacy-setmode,skip
> +igt@kms_atomic_interruptible@atomic-setmode,skip
> +igt@kms_atomic_interruptible@legacy-dpms,skip
> +igt@kms_atomic_interruptible@legacy-pageflip,skip
> +igt@kms_atomic_interruptible@legacy-cursor,skip
> +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> +igt@kms_content_protection@lic,skip
> +igt@kms_flip_event_leak,skip
> +igt@kms_getfb@getfb-handle-zero,pass
> +igt@kms_getfb@getfb-handle-valid,pass
> +igt@kms_getfb@getfb-handle-closed,pass
> +igt@kms_getfb@getfb-handle-not-fb,pass
> +igt@kms_getfb@getfb-addfb-different-handles,pass
> +igt@kms_getfb@getfb-repeated-different-handles,pass
> +igt@kms_getfb@getfb2-handle-zero,pass
> +igt@kms_getfb@getfb2-handle-closed,pass
> +igt@kms_getfb@getfb2-handle-not-fb,pass
> +igt@kms_getfb@getfb2-into-addfb2,pass
> +igt@kms_getfb@getfb-handle-protection,pass
> +igt@kms_getfb@getfb2-handle-protection,pass
> +igt@kms_hdmi_inject@inject-4k,fail
> +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
> +igt@kms_pipe_crc_basic@bad-source,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
> +igt@kms_prop_blob@basic,pass
> +igt@kms_prop_blob@blob-prop-core,pass
> +igt@kms_prop_blob@blob-prop-validate,pass
> +igt@kms_prop_blob@blob-prop-lifetime,pass
> +igt@kms_prop_blob@blob-multiple,pass
> +igt@kms_prop_blob@invalid-get-prop-any,pass
> +igt@kms_prop_blob@invalid-get-prop,pass
> +igt@kms_prop_blob@invalid-set-prop-any,pass
> +igt@kms_prop_blob@invalid-set-prop,pass
> +igt@kms_rmfb@rmfb-ioctl,skip
> +igt@kms_rmfb@close-fd,skip
> +igt@kms_setmode@basic,skip
> +igt@msm_mapping@sqefw,skip
> +igt@msm_mapping@shadow,skip
> +igt@msm_recovery@hangcheck,skip
> +igt@msm_recovery@gpu-fault,skip
> +igt@msm_recovery@iova-fault,skip
> +igt@msm_submit@empty-submit,pass
> +igt@msm_submit@invalid-queue-submit,pass
> +igt@msm_submit@invalid-flags-submit,pass
> +igt@msm_submit@invalid-in-fence-submit,pass
> +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> +igt@msm_submit@valid-submit,pass
> +igt@kms_sysfs_edid_timing,pass
> +igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
> +igt@kms_vblank@invalid,skip
> +igt@kms_vblank@crtc-id,skip
> +igt@kms_vblank@pipe-a-query-idle,skip
> +igt@kms_vblank@pipe-a-query-forked,skip
> +igt@kms_vblank@pipe-a-query-busy,skip
> +igt@kms_vblank@pipe-a-query-forked-busy,skip
> +igt@kms_vblank@pipe-a-wait-idle,skip
> +igt@kms_vblank@pipe-a-wait-forked,skip
> +igt@kms_vblank@pipe-a-wait-busy,skip
> +igt@kms_vblank@pipe-a-wait-forked-busy,skip
> +igt@kms_vblank@pipe-a-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-b-accuracy-idle,skip
> +igt@kms_vblank@pipe-b-query-idle,skip
> +igt@kms_vblank@pipe-b-query-forked,skip
> +igt@kms_vblank@pipe-b-query-busy,skip
> +igt@kms_vblank@pipe-b-query-forked-busy,skip
> +igt@kms_vblank@pipe-b-wait-idle,skip
> +igt@kms_vblank@pipe-b-wait-forked,skip
> +igt@kms_vblank@pipe-b-wait-busy,skip
> +igt@kms_vblank@pipe-b-wait-forked-busy,skip
> +igt@kms_vblank@pipe-b-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
> diff --git a/drivers/gpu/drm/msm/ci/msm_apq8096_results.txt b/drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
> new file mode 100644
> index 000000000000..6f10941e5626
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
> @@ -0,0 +1,140 @@
> +igt@core_auth@getclient-simple,pass
> +igt@core_auth@getclient-master-drop,pass
> +igt@core_auth@basic-auth,pass
> +igt@core_auth@many-magics,pass
> +igt@core_getclient,pass
> +igt@core_getstats,pass
> +igt@core_getversion,pass
> +igt@core_setmaster_vs_auth,pass
> +igt@drm_read@invalid-buffer,skip
> +igt@drm_read@fault-buffer,skip
> +igt@drm_read@empty-block,skip
> +igt@drm_read@empty-nonblock,skip
> +igt@drm_read@short-buffer-block,skip
> +igt@drm_read@short-buffer-nonblock,skip
> +igt@drm_read@short-buffer-wakeup,skip
> +igt@kms_addfb_basic@unused-handle,pass
> +igt@kms_addfb_basic@unused-pitches,pass
> +igt@kms_addfb_basic@unused-offsets,pass
> +igt@kms_addfb_basic@unused-modifier,pass
> +igt@kms_addfb_basic@legacy-format,dmesg-warn
> +igt@kms_addfb_basic@no-handle,pass
> +igt@kms_addfb_basic@basic,pass
> +igt@kms_addfb_basic@bad-pitch-0,pass
> +igt@kms_addfb_basic@bad-pitch-32,pass
> +igt@kms_addfb_basic@bad-pitch-63,pass
> +igt@kms_addfb_basic@bad-pitch-128,pass
> +igt@kms_addfb_basic@bad-pitch-256,pass
> +igt@kms_addfb_basic@bad-pitch-1024,pass
> +igt@kms_addfb_basic@bad-pitch-999,pass
> +igt@kms_addfb_basic@bad-pitch-65536,pass
> +igt@kms_addfb_basic@size-max,pass
> +igt@kms_addfb_basic@too-wide,pass
> +igt@kms_addfb_basic@too-high,dmesg-warn
> +igt@kms_addfb_basic@bo-too-small,pass
> +igt@kms_addfb_basic@small-bo,pass
> +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> +igt@kms_addfb_basic@addfb25-bad-modifier,fail
> +igt@kms_addfb_basic@invalid-get-prop-any,pass
> +igt@kms_addfb_basic@invalid-get-prop,pass
> +igt@kms_addfb_basic@invalid-set-prop-any,pass
> +igt@kms_addfb_basic@invalid-set-prop,pass
> +igt@kms_addfb_basic@master-rmfb,pass
> +igt@kms_atomic@plane-overlay-legacy,skip
> +igt@kms_atomic@plane-primary-legacy,skip
> +igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
> +igt@kms_atomic@plane-immutable-zpos,skip
> +igt@kms_atomic@test-only,skip
> +igt@kms_atomic@plane-cursor-legacy,skip
> +igt@kms_atomic@plane-invalid-params,skip
> +igt@kms_atomic@crtc-invalid-params,skip
> +igt@kms_atomic@atomic-invalid-params,skip
> +igt@kms_atomic@atomic_plane_damage,skip
> +igt@kms_atomic_interruptible@legacy-setmode,skip
> +igt@kms_atomic_interruptible@atomic-setmode,skip
> +igt@kms_atomic_interruptible@legacy-dpms,skip
> +igt@kms_atomic_interruptible@legacy-pageflip,skip
> +igt@kms_atomic_interruptible@legacy-cursor,skip
> +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> +igt@kms_content_protection@lic,skip
> +igt@kms_flip_event_leak,skip
> +igt@kms_getfb@getfb-handle-zero,pass
> +igt@kms_getfb@getfb-handle-valid,pass
> +igt@kms_getfb@getfb-handle-closed,pass
> +igt@kms_getfb@getfb-handle-not-fb,pass
> +igt@kms_getfb@getfb-addfb-different-handles,pass
> +igt@kms_getfb@getfb-repeated-different-handles,pass
> +igt@kms_getfb@getfb2-handle-zero,pass
> +igt@kms_getfb@getfb2-handle-closed,pass
> +igt@kms_getfb@getfb2-handle-not-fb,pass
> +igt@kms_getfb@getfb2-into-addfb2,pass
> +igt@kms_getfb@getfb-handle-protection,pass
> +igt@kms_getfb@getfb2-handle-protection,pass
> +igt@kms_hdmi_inject@inject-4k,dmesg-warn
> +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
> +igt@kms_pipe_crc_basic@bad-source,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
> +igt@kms_prop_blob@basic,pass
> +igt@kms_prop_blob@blob-prop-core,pass
> +igt@kms_prop_blob@blob-prop-validate,pass
> +igt@kms_prop_blob@blob-prop-lifetime,pass
> +igt@kms_prop_blob@blob-multiple,pass
> +igt@kms_prop_blob@invalid-get-prop-any,pass
> +igt@kms_prop_blob@invalid-get-prop,pass
> +igt@kms_prop_blob@invalid-set-prop-any,pass
> +igt@kms_prop_blob@invalid-set-prop,pass
> +igt@kms_rmfb@rmfb-ioctl,skip
> +igt@kms_rmfb@close-fd,skip
> +igt@kms_setmode@basic,skip
> +igt@msm_mapping@sqefw,skip
> +igt@msm_mapping@shadow,skip
> +igt@msm_recovery@hangcheck,skip
> +igt@msm_recovery@gpu-fault,skip
> +igt@msm_recovery@iova-fault,skip
> +igt@msm_submit@empty-submit,pass
> +igt@msm_submit@invalid-queue-submit,pass
> +igt@msm_submit@invalid-flags-submit,pass
> +igt@msm_submit@invalid-in-fence-submit,pass
> +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> +igt@msm_submit@valid-submit,pass
> +igt@kms_sysfs_edid_timing,pass
> +igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
> +igt@kms_vblank@invalid,skip
> +igt@kms_vblank@crtc-id,skip
> +igt@kms_vblank@pipe-a-query-idle,skip
> +igt@kms_vblank@pipe-a-query-forked,skip
> +igt@kms_vblank@pipe-a-query-busy,skip
> +igt@kms_vblank@pipe-a-query-forked-busy,skip
> +igt@kms_vblank@pipe-a-wait-idle,skip
> +igt@kms_vblank@pipe-a-wait-forked,skip
> +igt@kms_vblank@pipe-a-wait-busy,skip
> +igt@kms_vblank@pipe-a-wait-forked-busy,skip
> +igt@kms_vblank@pipe-a-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-b-accuracy-idle,skip
> +igt@kms_vblank@pipe-b-query-idle,skip
> +igt@kms_vblank@pipe-b-query-forked,skip
> +igt@kms_vblank@pipe-b-query-busy,skip
> +igt@kms_vblank@pipe-b-query-forked-busy,skip
> +igt@kms_vblank@pipe-b-wait-idle,skip
> +igt@kms_vblank@pipe-b-wait-forked,skip
> +igt@kms_vblank@pipe-b-wait-busy,skip
> +igt@kms_vblank@pipe-b-wait-forked-busy,skip
> +igt@kms_vblank@pipe-b-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
> diff --git a/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> new file mode 100644
> index 000000000000..01f7b4b399b5
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> @@ -0,0 +1,141 @@
> +igt@core_auth@getclient-simple,dmesg-warn
> +igt@core_auth@getclient-master-drop,pass
> +igt@core_auth@basic-auth,pass
> +igt@core_auth@many-magics,pass
> +igt@core_getclient,pass
> +igt@core_getstats,pass
> +igt@core_getversion,pass
> +igt@core_setmaster_vs_auth,pass
> +igt@drm_read@invalid-buffer,pass
> +igt@drm_read@fault-buffer,pass
> +igt@drm_read@empty-block,pass
> +igt@drm_read@empty-nonblock,pass
> +igt@drm_read@short-buffer-block,pass
> +igt@drm_read@short-buffer-nonblock,pass
> +igt@drm_read@short-buffer-wakeup,pass
> +igt@kms_addfb_basic@unused-handle,pass
> +igt@kms_addfb_basic@unused-pitches,pass
> +igt@kms_addfb_basic@unused-offsets,pass
> +igt@kms_addfb_basic@unused-modifier,pass
> +igt@kms_addfb_basic@legacy-format,dmesg-warn
> +igt@kms_addfb_basic@no-handle,pass
> +igt@kms_addfb_basic@basic,pass
> +igt@kms_addfb_basic@bad-pitch-0,pass
> +igt@kms_addfb_basic@bad-pitch-32,pass
> +igt@kms_addfb_basic@bad-pitch-63,pass
> +igt@kms_addfb_basic@bad-pitch-128,pass
> +igt@kms_addfb_basic@bad-pitch-256,pass
> +igt@kms_addfb_basic@bad-pitch-1024,pass
> +igt@kms_addfb_basic@bad-pitch-999,pass
> +igt@kms_addfb_basic@bad-pitch-65536,pass
> +igt@kms_addfb_basic@size-max,pass
> +igt@kms_addfb_basic@too-wide,pass
> +igt@kms_addfb_basic@too-high,dmesg-warn

For test results on Trogdor, is is possible to have them be 
success/fail/skip only?

Results such as dmesg-warn/dmesg-fail are igt_runner specific and 
because there isn't support for igt_runner on ChromeOS, they will be 
difficult to replicate and debug.

> +igt@kms_addfb_basic@bo-too-small,pass
> +igt@kms_addfb_basic@small-bo,pass
> +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> +igt@kms_addfb_basic@addfb25-bad-modifier,dmesg-warn
> +igt@kms_addfb_basic@invalid-get-prop-any,pass
> +igt@kms_addfb_basic@invalid-get-prop,pass
> +igt@kms_addfb_basic@invalid-set-prop-any,pass
> +igt@kms_addfb_basic@invalid-set-prop,pass
> +igt@kms_addfb_basic@master-rmfb,pass
> +igt@kms_atomic@plane-overlay-legacy,skip
> +igt@kms_atomic@plane-primary-legacy,pass
> +igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
> +igt@kms_atomic@plane-immutable-zpos,pass
> +igt@kms_atomic@test-only,pass
> +igt@kms_atomic@plane-cursor-legacy,pass
> +igt@kms_atomic@plane-invalid-params,pass
> +igt@kms_atomic@crtc-invalid-params,pass
> +igt@kms_atomic@atomic-invalid-params,pass
> +igt@kms_atomic@atomic_plane_damage,pass
> +igt@kms_atomic_interruptible@legacy-setmode,skip
> +igt@kms_atomic_interruptible@atomic-setmode,skip
> +igt@kms_atomic_interruptible@legacy-dpms,skip
> +igt@kms_atomic_interruptible@legacy-pageflip,skip
> +igt@kms_atomic_interruptible@legacy-cursor,skip
> +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> +igt@kms_content_protection@lic,skip
> +igt@kms_flip_event_leak,pass
> +igt@kms_getfb@getfb-handle-zero,pass
> +igt@kms_getfb@getfb-handle-valid,pass
> +igt@kms_getfb@getfb-handle-closed,pass
> +igt@kms_getfb@getfb-handle-not-fb,pass
> +igt@kms_getfb@getfb-addfb-different-handles,pass
> +igt@kms_getfb@getfb-repeated-different-handles,pass
> +igt@kms_getfb@getfb2-handle-zero,pass
> +igt@kms_getfb@getfb2-handle-closed,pass
> +igt@kms_getfb@getfb2-handle-not-fb,pass
> +igt@kms_getfb@getfb2-into-addfb2,pass
> +igt@kms_getfb@getfb-handle-protection,pass
> +igt@kms_getfb@getfb2-handle-protection,pass
> +igt@kms_hdmi_inject@inject-4k,skip
> +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
> +igt@kms_pipe_crc_basic@bad-source,pass
> +igt@kms_pipe_crc_basic@read-crc-pipe-a,pass
> +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,pass
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,pass
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,pass
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,pass
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,pass
> +igt@kms_pipe_crc_basic@read-crc-pipe-b,pass
> +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,pass
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,pass
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,pass
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,pass
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,pass
> +igt@kms_prop_blob@basic,pass
> +igt@kms_prop_blob@blob-prop-core,pass
> +igt@kms_prop_blob@blob-prop-validate,pass
> +igt@kms_prop_blob@blob-prop-lifetime,pass
> +igt@kms_prop_blob@blob-multiple,pass
> +igt@kms_prop_blob@invalid-get-prop-any,pass
> +igt@kms_prop_blob@invalid-get-prop,pass
> +igt@kms_prop_blob@invalid-set-prop-any,pass
> +igt@kms_prop_blob@invalid-set-prop,pass
> +igt@kms_rmfb@rmfb-ioctl,pass
> +igt@kms_rmfb@close-fd,fail
> +igt@kms_setmode@basic@pipe-a-edp-1,pass
> +igt@kms_setmode@basic@pipe-b-edp-1,pass
> +igt@msm_mapping@sqefw,dmesg-fail
> +igt@msm_mapping@shadow,dmesg-fail
> +igt@msm_recovery@hangcheck,dmesg-warn
> +igt@msm_recovery@gpu-fault,dmesg-warn
> +igt@msm_recovery@iova-fault,dmesg-warn
> +igt@msm_submit@empty-submit,pass
> +igt@msm_submit@invalid-queue-submit,pass
> +igt@msm_submit@invalid-flags-submit,pass
> +igt@msm_submit@invalid-in-fence-submit,pass
> +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> +igt@msm_submit@valid-submit,pass
> +igt@kms_sysfs_edid_timing,pass
> +igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,pass
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,fail

We could probably skip checking the results for kms_universal_plane on 
Trogdor for now, since this is a test affected by the hack regression. 
There is an IGT patch in the works for fixing the 
disable-primary-vs-flip-pipe-b failure, so it should be updated pretty 
soon too.

Thanks,
Jessica Zhang

> +igt@kms_vblank@invalid,pass
> +igt@kms_vblank@crtc-id,pass
> +igt@kms_vblank@pipe-a-query-idle,pass
> +igt@kms_vblank@pipe-a-query-forked,pass
> +igt@kms_vblank@pipe-a-query-busy,pass
> +igt@kms_vblank@pipe-a-query-forked-busy,pass
> +igt@kms_vblank@pipe-a-wait-idle,pass
> +igt@kms_vblank@pipe-a-wait-forked,pass
> +igt@kms_vblank@pipe-a-wait-busy,pass
> +igt@kms_vblank@pipe-a-wait-forked-busy,pass
> +igt@kms_vblank@pipe-a-ts-continuation-idle,pass
> +igt@kms_vblank@pipe-a-ts-continuation-modeset,pass
> +igt@kms_vblank@pipe-b-accuracy-idle,pass
> +igt@kms_vblank@pipe-b-query-idle,pass
> +igt@kms_vblank@pipe-b-query-forked,pass
> +igt@kms_vblank@pipe-b-query-busy,pass
> +igt@kms_vblank@pipe-b-query-forked-busy,pass
> +igt@kms_vblank@pipe-b-wait-idle,pass
> +igt@kms_vblank@pipe-b-wait-forked,pass
> +igt@kms_vblank@pipe-b-wait-busy,pass
> +igt@kms_vblank@pipe-b-wait-forked-busy,pass
> +igt@kms_vblank@pipe-b-ts-continuation-idle,pass
> +igt@kms_vblank@pipe-b-ts-continuation-modeset,pass
> diff --git a/drivers/gpu/drm/msm/ci/msm_sdm845_results.txt b/drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
> new file mode 100644
> index 000000000000..3df1e5ef6d80
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
> @@ -0,0 +1,141 @@
> +igt@core_auth@getclient-simple,dmesg-warn
> +igt@core_auth@getclient-master-drop,pass
> +igt@core_auth@basic-auth,pass
> +igt@core_auth@many-magics,pass
> +igt@core_getclient,pass
> +igt@core_getstats,pass
> +igt@core_getversion,pass
> +igt@core_setmaster_vs_auth,pass
> +igt@drm_read@invalid-buffer,pass
> +igt@drm_read@fault-buffer,pass
> +igt@drm_read@empty-block,pass
> +igt@drm_read@empty-nonblock,pass
> +igt@drm_read@short-buffer-block,pass
> +igt@drm_read@short-buffer-nonblock,pass
> +igt@drm_read@short-buffer-wakeup,pass
> +igt@kms_addfb_basic@unused-handle,pass
> +igt@kms_addfb_basic@unused-pitches,pass
> +igt@kms_addfb_basic@unused-offsets,pass
> +igt@kms_addfb_basic@unused-modifier,pass
> +igt@kms_addfb_basic@legacy-format,dmesg-warn
> +igt@kms_addfb_basic@no-handle,pass
> +igt@kms_addfb_basic@basic,pass
> +igt@kms_addfb_basic@bad-pitch-0,pass
> +igt@kms_addfb_basic@bad-pitch-32,pass
> +igt@kms_addfb_basic@bad-pitch-63,pass
> +igt@kms_addfb_basic@bad-pitch-128,pass
> +igt@kms_addfb_basic@bad-pitch-256,pass
> +igt@kms_addfb_basic@bad-pitch-1024,pass
> +igt@kms_addfb_basic@bad-pitch-999,pass
> +igt@kms_addfb_basic@bad-pitch-65536,pass
> +igt@kms_addfb_basic@size-max,pass
> +igt@kms_addfb_basic@too-wide,pass
> +igt@kms_addfb_basic@too-high,dmesg-warn
> +igt@kms_addfb_basic@bo-too-small,pass
> +igt@kms_addfb_basic@small-bo,pass
> +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> +igt@kms_addfb_basic@addfb25-bad-modifier,dmesg-warn
> +igt@kms_addfb_basic@invalid-get-prop-any,pass
> +igt@kms_addfb_basic@invalid-get-prop,pass
> +igt@kms_addfb_basic@invalid-set-prop-any,pass
> +igt@kms_addfb_basic@invalid-set-prop,pass
> +igt@kms_addfb_basic@master-rmfb,pass
> +igt@kms_atomic@plane-overlay-legacy,dmesg-warn
> +igt@kms_atomic@plane-primary-legacy,dmesg-warn
> +igt@kms_atomic@plane-primary-overlay-mutable-zpos,dmesg-warn
> +igt@kms_atomic@plane-immutable-zpos,dmesg-warn
> +igt@kms_atomic@test-only,dmesg-warn
> +igt@kms_atomic@plane-cursor-legacy,dmesg-warn
> +igt@kms_atomic@plane-invalid-params,dmesg-warn
> +igt@kms_atomic@crtc-invalid-params,dmesg-warn
> +igt@kms_atomic@atomic-invalid-params,dmesg-warn
> +igt@kms_atomic@atomic_plane_damage,dmesg-warn
> +igt@kms_atomic_interruptible@legacy-setmode,skip
> +igt@kms_atomic_interruptible@atomic-setmode,skip
> +igt@kms_atomic_interruptible@legacy-dpms,skip
> +igt@kms_atomic_interruptible@legacy-pageflip,skip
> +igt@kms_atomic_interruptible@legacy-cursor,skip
> +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> +igt@kms_content_protection@lic,skip
> +igt@kms_flip_event_leak,dmesg-warn
> +igt@kms_getfb@getfb-handle-zero,pass
> +igt@kms_getfb@getfb-handle-valid,pass
> +igt@kms_getfb@getfb-handle-closed,pass
> +igt@kms_getfb@getfb-handle-not-fb,pass
> +igt@kms_getfb@getfb-addfb-different-handles,pass
> +igt@kms_getfb@getfb-repeated-different-handles,pass
> +igt@kms_getfb@getfb2-handle-zero,pass
> +igt@kms_getfb@getfb2-handle-closed,pass
> +igt@kms_getfb@getfb2-handle-not-fb,pass
> +igt@kms_getfb@getfb2-into-addfb2,pass
> +igt@kms_getfb@getfb-handle-protection,pass
> +igt@kms_getfb@getfb2-handle-protection,pass
> +igt@kms_hdmi_inject@inject-4k,skip
> +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,pass
> +igt@kms_pipe_crc_basic@bad-source,pass
> +igt@kms_pipe_crc_basic@read-crc-pipe-a,pass
> +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,pass
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,pass
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,pass
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,dmesg-warn
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,dmesg-warn
> +igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
> +igt@kms_prop_blob@basic,pass
> +igt@kms_prop_blob@blob-prop-core,pass
> +igt@kms_prop_blob@blob-prop-validate,pass
> +igt@kms_prop_blob@blob-prop-lifetime,pass
> +igt@kms_prop_blob@blob-multiple,pass
> +igt@kms_prop_blob@invalid-get-prop-any,pass
> +igt@kms_prop_blob@invalid-get-prop,pass
> +igt@kms_prop_blob@invalid-set-prop-any,pass
> +igt@kms_prop_blob@invalid-set-prop,pass
> +igt@kms_rmfb@rmfb-ioctl,pass
> +igt@kms_rmfb@close-fd,fail
> +igt@kms_setmode@basic@pipe-a-edp-1,dmesg-warn
> +igt@kms_setmode@basic,skip
> +igt@msm_mapping@sqefw,dmesg-fail
> +igt@msm_mapping@shadow,dmesg-fail
> +igt@msm_recovery@hangcheck,dmesg-warn
> +igt@msm_recovery@gpu-fault,dmesg-warn
> +igt@msm_recovery@iova-fault,dmesg-warn
> +igt@msm_submit@empty-submit,pass
> +igt@msm_submit@invalid-queue-submit,pass
> +igt@msm_submit@invalid-flags-submit,pass
> +igt@msm_submit@invalid-in-fence-submit,pass
> +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> +igt@msm_submit@valid-submit,pass
> +igt@kms_sysfs_edid_timing,pass
> +igt@kms_universal_plane@universal-plane-pipe-a-functional,dmesg-fail
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,dmesg-warn
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
> +igt@kms_vblank@invalid,dmesg-warn
> +igt@kms_vblank@crtc-id,dmesg-warn
> +igt@kms_vblank@pipe-a-query-idle,dmesg-warn
> +igt@kms_vblank@pipe-a-query-forked,dmesg-warn
> +igt@kms_vblank@pipe-a-query-busy,dmesg-warn
> +igt@kms_vblank@pipe-a-query-forked-busy,dmesg-warn
> +igt@kms_vblank@pipe-a-wait-idle,dmesg-warn
> +igt@kms_vblank@pipe-a-wait-forked,dmesg-warn
> +igt@kms_vblank@pipe-a-wait-busy,dmesg-warn
> +igt@kms_vblank@pipe-a-wait-forked-busy,dmesg-warn
> +igt@kms_vblank@pipe-a-ts-continuation-idle,dmesg-warn
> +igt@kms_vblank@pipe-a-ts-continuation-modeset,dmesg-warn
> +igt@kms_vblank@pipe-b-accuracy-idle,skip
> +igt@kms_vblank@pipe-b-query-idle,skip
> +igt@kms_vblank@pipe-b-query-forked,skip
> +igt@kms_vblank@pipe-b-query-busy,skip
> +igt@kms_vblank@pipe-b-query-forked-busy,skip
> +igt@kms_vblank@pipe-b-wait-idle,skip
> +igt@kms_vblank@pipe-b-wait-forked,skip
> +igt@kms_vblank@pipe-b-wait-busy,skip
> +igt@kms_vblank@pipe-b-wait-forked-busy,skip
> +igt@kms_vblank@pipe-b-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
> -- 
> 2.31.1
> 

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [Freedreno] [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-10 19:39   ` [Freedreno] " Jessica Zhang
@ 2022-05-10 20:25     ` Rob Clark
  2022-05-11 17:12       ` Daniel Vetter
  2022-05-11  4:25     ` Tomeu Vizoso
  1 sibling, 1 reply; 49+ messages in thread
From: Rob Clark @ 2022-05-10 20:25 UTC (permalink / raw)
  To: Jessica Zhang
  Cc: freedreno, Tomeu Vizoso, linux-doc, David Airlie, linux-arm-msm,
	Jonathan Corbet, Abhinav Kumar, Linux Kernel Mailing List,
	dri-devel, Thomas Zimmermann, Sean Paul

On Tue, May 10, 2022 at 12:39 PM Jessica Zhang
<quic_jesszhan@quicinc.com> wrote:
>
>
>
> On 5/10/2022 7:13 AM, Tomeu Vizoso wrote:
> > And use it to store expectations about what the drm/msm driver is
> > supposed to pass in the IGT test suite.
> >
> > Also include a configuration file that points to the out-of-tree CI
> > scripts.
> >
> > By storing the test expectations along the code we can make sure both
> > stay in sync with each other, and so we can know when a code change
> > breaks those expectations.
> >
> > This will allow all contributors to drm/msm to reuse the infrastructure
> > already in gitlab.freedesktop.org to test the driver on several
> > generations of the hardware.
> >
> > v2:
> >    - Fix names of result expectation files to match SoC
> >    - Don't execute tests that are going to skip on all boards
> >
> > Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> > ---
> >   Documentation/gpu/msm_automated_testing.rst   |  70 +++++++++
> >   drivers/gpu/drm/msm/ci/gitlab-ci.yml          |  11 ++
> >   drivers/gpu/drm/msm/ci/msm.testlist           | 148 ++++++++++++++++++
> >   .../gpu/drm/msm/ci/msm_apq8016_results.txt    | 140 +++++++++++++++++
> >   .../gpu/drm/msm/ci/msm_apq8096_results.txt    | 140 +++++++++++++++++
> >   drivers/gpu/drm/msm/ci/msm_sc7180_results.txt | 141 +++++++++++++++++
> >   drivers/gpu/drm/msm/ci/msm_sdm845_results.txt | 141 +++++++++++++++++
> >   7 files changed, 791 insertions(+)
> >   create mode 100644 Documentation/gpu/msm_automated_testing.rst
> >   create mode 100644 drivers/gpu/drm/msm/ci/gitlab-ci.yml
> >   create mode 100644 drivers/gpu/drm/msm/ci/msm.testlist
> >   create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
> >   create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
> >   create mode 100644 drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> >   create mode 100644 drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
> >
> > diff --git a/Documentation/gpu/msm_automated_testing.rst b/Documentation/gpu/msm_automated_testing.rst
> > new file mode 100644
> > index 000000000000..fe59474569c2
> > --- /dev/null
> > +++ b/Documentation/gpu/msm_automated_testing.rst
> > @@ -0,0 +1,70 @@
> > +.. SPDX-License-Identifier: GPL-2.0+
> > +
> > +=========================================
> > +Automated testing of MSM DRM driver
> > +=========================================
>
> Hey Tomeu,
>
> I like the overall idea of having this in as part of the repo, but just
> have a few questions on some details.
>
> > +
> > +
> > +Introduction
> > +============
> > +
> > +Making sure that changes to a driver don't introduce regressions can be very time consuming when lots of different hardware configurations need to be tested. Moreover, it isn't practical for each person interested in this testing to have to acquire and maintain what can be a considerable amount of hardware.
> > +
> > +Also, it is desirable for developers to check for regressions in their code by themselves, instead of relying on the maintainer finding them and then reporting back.
> > +
> > +There are facilities in gitlab.freedesktop.org to automatically test Mesa that can be used as well for testing DRM drivers such as drm/msm. This document explains how people interested in testing the drm/msm driver can use this shared infrastructure to save quite some time and effort.
> > +
> > +
> > +Relevant files
> > +==============
> > +
> > +drivers/gpu/drm/msm/ci/gitlab-ci.yml
> > +------------------------------------
> > +
> > +Specifies the specific version of the scripts to be used. GitLab CI will use the values defined in this file to fetch the right scripts.
> > +
> > +
> > +drivers/gpu/drm/msm/ci/msm.testlist
> > +-----------------------------------
> > +
> > +Specifies the tests that the current code is expected to be able to reliably run. These tests are expected to not hang the DUT (device under testing) when running on the revision they belong to, and to give consistent results.
> > +
> > +
> > +drivers/gpu/drm/msm/ci/msm_*_results.txt
> > +----------------------------------------
> > +
> > +Specifies the expected results of running this specific kernel revision on a given hardware configuration.
> > +
> > +
> > +How to enable automated testing on your tree
> > +============================================
> > +
> > +1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one yet
> > +
> > +2. In your kernel repo's configuration (eg. https://gitlab.freedesktop.org/tomeu/linux/-/settings/ci_cd), change the CI/CD configuration file from .gitlab-ci.yml to drivers/gpu/drm/msm/ci/gitlab-ci.yml.
> > +
> > +3. Next time you push to this repository, you will see a CI pipeline being created (eg. https://gitlab.freedesktop.org/tomeu/linux/-/pipelines)
> > +
> > +4. The various jobs will be run and when the pipeline is finished, all jobs should be green unless a regression has been found.
> > +
> > +
> > +How to update test expectations
> > +===============================
> > +
> > +If your changes to the code fix any tests, you will have to update one or more of the files in drivers/gpu/drm/msm/ci/msm_*_results.txt, for each of the test platforms affected by the change.
> > +
> > +If you have run a pipeline and it failed because of a mismatched test result, you will have been offered a patch at the end of the run that you can apply after reviewing it.
> > +
> > +
> > +How to expand coverage
> > +======================
> > +
> > +If your code changes makes it possible to run more tests (by solving reliability issues, for example), more tests can be added to this list, and then the expected results updated with the patch file that will be printed at the end of each job.
> > +
> > +If there is a need for updating the version of IGT being used (maybe you have added more tests to it), follow the instructions at https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/tree/msm#upreving-igt.
> > +
> > +
> > +How to test your changes to the scripts
> > +==========================================
> > +
> > +For testing changes to the scripts in the drm-ci repo, change the DRM_CI_PROJECT_PATH variable in drivers/gpu/drm/msm/ci/gitlab-ci.yml to match your fork of the project (eg. tomeu/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/msm/ci/gitlab-ci.yml b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
> > new file mode 100644
> > index 000000000000..9b7caa7fcab2
> > --- /dev/null
> > +++ b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
> > @@ -0,0 +1,11 @@
> > +variables:
> > +  # Change this to use your fork of drm-ci
> > +  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
> > +  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha msm
> > +
> > +include:
> > +  - project: *drm-ci-project-path
> > +    ref: *drm-ci-commit-sha
> > +    file:
> > +      - '.msm-gitlab-ci.yml'
> > +      - '.gitlab-ci.yml'
> > diff --git a/drivers/gpu/drm/msm/ci/msm.testlist b/drivers/gpu/drm/msm/ci/msm.testlist
> > new file mode 100644
> > index 000000000000..8805a3bc7316
> > --- /dev/null
> > +++ b/drivers/gpu/drm/msm/ci/msm.testlist
> > @@ -0,0 +1,148 @@
> > +# Keep alphabetically sorted by default
> > +
> > +igt@core_auth@getclient-simple
> > +igt@core_auth@getclient-master-drop
> > +igt@core_auth@basic-auth
> > +igt@core_auth@many-magics
> > +igt@core_getclient
> > +igt@core_getstats
> > +igt@core_getversion
> > +igt@core_setmaster_vs_auth
> > +igt@drm_read@invalid-buffer
> > +igt@drm_read@fault-buffer
> > +igt@drm_read@empty-block
> > +igt@drm_read@empty-nonblock
> > +igt@drm_read@short-buffer-block
> > +igt@drm_read@short-buffer-nonblock
> > +igt@drm_read@short-buffer-wakeup
> > +igt@kms_addfb_basic@unused-handle
> > +igt@kms_addfb_basic@unused-pitches
> > +igt@kms_addfb_basic@unused-offsets
> > +igt@kms_addfb_basic@unused-modifier
> > +igt@kms_addfb_basic@legacy-format
> > +igt@kms_addfb_basic@no-handle
> > +igt@kms_addfb_basic@basic
> > +igt@kms_addfb_basic@bad-pitch-0
> > +igt@kms_addfb_basic@bad-pitch-32
> > +igt@kms_addfb_basic@bad-pitch-63
> > +igt@kms_addfb_basic@bad-pitch-128
> > +igt@kms_addfb_basic@bad-pitch-256
> > +igt@kms_addfb_basic@bad-pitch-1024
> > +igt@kms_addfb_basic@bad-pitch-999
> > +igt@kms_addfb_basic@bad-pitch-65536
> > +igt@kms_addfb_basic@size-max
> > +igt@kms_addfb_basic@too-wide
> > +igt@kms_addfb_basic@too-high
> > +igt@kms_addfb_basic@bo-too-small
> > +igt@kms_addfb_basic@small-bo
> > +igt@kms_addfb_basic@addfb25-modifier-no-flag
> > +igt@kms_addfb_basic@addfb25-bad-modifier
> > +igt@kms_addfb_basic@invalid-get-prop-any
> > +igt@kms_addfb_basic@invalid-get-prop
> > +igt@kms_addfb_basic@invalid-set-prop-any
> > +igt@kms_addfb_basic@invalid-set-prop
> > +igt@kms_addfb_basic@master-rmfb
> > +igt@kms_atomic@plane-overlay-legacy
> > +igt@kms_atomic@plane-primary-legacy
> > +igt@kms_atomic@plane-primary-overlay-mutable-zpos
> > +igt@kms_atomic@plane-immutable-zpos
> > +igt@kms_atomic@test-only
> > +igt@kms_atomic@plane-cursor-legacy
> > +igt@kms_atomic@plane-invalid-params
> > +igt@kms_atomic@crtc-invalid-params
> > +igt@kms_atomic@atomic-invalid-params
> > +igt@kms_atomic@atomic_plane_damage
> > +igt@kms_atomic_interruptible@legacy-setmode@pipe-a-edp-1
> > +igt@kms_atomic_interruptible@atomic-setmode@pipe-a-edp-1
> > +igt@kms_atomic_interruptible@legacy-dpms@pipe-a-edp-1
> > +igt@kms_atomic_interruptible@legacy-pageflip@pipe-a-edp-1
> > +igt@kms_atomic_interruptible@legacy-cursor@pipe-a-edp-1
> > +igt@kms_atomic_interruptible@universal-setplane-primary@pipe-a-edp-1
> > +igt@kms_atomic_interruptible@universal-setplane-cursor@pipe-a-edp-1
>
> I see that there are some KMS subtests/tests are missing such as
> kms_atomic_transition -- are they unstable across all boards?
>
>  From what I've seen, kms_atomic_transition is unstable only on Trogdor,
> but has stable results on other boards.
>
> > +igt@kms_content_protection@LIC > +igt@kms_flip_event_leak
> > +igt@kms_getfb@getfb-handle-zero
> > +igt@kms_getfb@getfb-handle-valid
> > +igt@kms_getfb@getfb-handle-closed
> > +igt@kms_getfb@getfb-handle-not-fb
> > +igt@kms_getfb@getfb-addfb-different-handles
> > +igt@kms_getfb@getfb-repeated-different-handles
> > +igt@kms_getfb@getfb2-handle-zero
> > +igt@kms_getfb@getfb2-handle-closed
> > +igt@kms_getfb@getfb2-handle-not-fb
> > +igt@kms_getfb@getfb2-into-addfb2
> > +igt@kms_getfb@getfb-handle-protection
> > +igt@kms_getfb@getfb2-handle-protection
> > +igt@kms_hdmi_inject@inject-4k > +igt@kms_multipipe_modeset@basic-max-pipe-crc-check
> > +igt@kms_pipe_crc_basic@bad-source
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b
> > +igt@kms_prop_blob@basic
> > +igt@kms_prop_blob@blob-prop-core
> > +igt@kms_prop_blob@blob-prop-validate
> > +igt@kms_prop_blob@blob-prop-lifetime
> > +igt@kms_prop_blob@blob-multiple
> > +igt@kms_prop_blob@invalid-get-prop-any
> > +igt@kms_prop_blob@invalid-get-prop
> > +igt@kms_prop_blob@invalid-set-prop-any
> > +igt@kms_prop_blob@invalid-set-prop
> > +igt@kms_rmfb@rmfb-ioctl
> > +igt@kms_rmfb@close-fd
> > +igt@kms_setmode@basic@pipe-a-edp-1
> > +igt@kms_setmode@basic@pipe-b-edp-1
> > +
> > +# Flakes on a530 with:
> > +# arm-smmu b40000.iommu: Unhandled context fault: fsr=0x408, iova=0x01003000, fsynr=0x13, cbfrsynra=0x0, cb=0
> > +# igt@msm_mapping@ring
> > +
> > +igt@msm_mapping@sqefw
> > +igt@msm_mapping@shadow
> > +igt@msm_recovery@hangcheck
> > +igt@msm_recovery@gpu-fault
> > +igt@msm_recovery@iova-fault
> > +igt@msm_submit@empty-submit
> > +igt@msm_submit@invalid-queue-submit
> > +igt@msm_submit@invalid-flags-submit
> > +igt@msm_submit@invalid-in-fence-submit
> > +igt@msm_submit@invalid-duplicate-bo-submit
> > +igt@msm_submit@invalid-cmd-idx-submit
> > +igt@msm_submit@invalid-cmd-type-submit
> > +igt@msm_submit@valid-submit
> > +igt@kms_sysfs_edid_timing
> > +igt@kms_universal_plane@universal-plane-pipe-a-functional
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b
> > +igt@kms_vblank@invalid
> > +igt@kms_vblank@crtc-id
> > +igt@kms_vblank@pipe-a-query-idle
> > +igt@kms_vblank@pipe-a-query-forked
> > +igt@kms_vblank@pipe-a-query-busy
> > +igt@kms_vblank@pipe-a-query-forked-busy
> > +igt@kms_vblank@pipe-a-wait-idle
> > +igt@kms_vblank@pipe-a-wait-forked
> > +igt@kms_vblank@pipe-a-wait-busy
> > +igt@kms_vblank@pipe-a-wait-forked-busy
> > +igt@kms_vblank@pipe-a-ts-continuation-idle
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset
> > +igt@kms_vblank@pipe-b-accuracy-idle
> > +igt@kms_vblank@pipe-b-query-idle
> > +igt@kms_vblank@pipe-b-query-forked
> > +igt@kms_vblank@pipe-b-query-busy
> > +igt@kms_vblank@pipe-b-query-forked-busy
> > +igt@kms_vblank@pipe-b-wait-idle
> > +igt@kms_vblank@pipe-b-wait-forked
> > +igt@kms_vblank@pipe-b-wait-busy
> > +igt@kms_vblank@pipe-b-wait-forked-busy
> > +igt@kms_vblank@pipe-b-ts-continuation-idle
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset
> > diff --git a/drivers/gpu/drm/msm/ci/msm_apq8016_results.txt b/drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
> > new file mode 100644
> > index 000000000000..2cad61d89faf
> > --- /dev/null
> > +++ b/drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
> > @@ -0,0 +1,140 @@
> > +igt@core_auth@getclient-simple,pass
> > +igt@core_auth@getclient-master-drop,pass
> > +igt@core_auth@basic-auth,pass
> > +igt@core_auth@many-magics,pass
> > +igt@core_getclient,pass
> > +igt@core_getstats,pass
> > +igt@core_getversion,pass
> > +igt@core_setmaster_vs_auth,pass
> > +igt@drm_read@invalid-buffer,skip
> > +igt@drm_read@fault-buffer,skip
> > +igt@drm_read@empty-block,skip
> > +igt@drm_read@empty-nonblock,skip
> > +igt@drm_read@short-buffer-block,skip
> > +igt@drm_read@short-buffer-nonblock,skip
> > +igt@drm_read@short-buffer-wakeup,skip
> > +igt@kms_addfb_basic@unused-handle,pass
> > +igt@kms_addfb_basic@unused-pitches,pass
> > +igt@kms_addfb_basic@unused-offsets,pass
> > +igt@kms_addfb_basic@unused-modifier,pass
> > +igt@kms_addfb_basic@legacy-format,dmesg-warn
> > +igt@kms_addfb_basic@no-handle,pass
> > +igt@kms_addfb_basic@basic,pass
> > +igt@kms_addfb_basic@bad-pitch-0,pass
> > +igt@kms_addfb_basic@bad-pitch-32,pass
> > +igt@kms_addfb_basic@bad-pitch-63,pass
> > +igt@kms_addfb_basic@bad-pitch-128,pass
> > +igt@kms_addfb_basic@bad-pitch-256,pass
> > +igt@kms_addfb_basic@bad-pitch-1024,pass
> > +igt@kms_addfb_basic@bad-pitch-999,pass
> > +igt@kms_addfb_basic@bad-pitch-65536,pass
> > +igt@kms_addfb_basic@size-max,pass
> > +igt@kms_addfb_basic@too-wide,pass
> > +igt@kms_addfb_basic@too-high,dmesg-warn
> > +igt@kms_addfb_basic@bo-too-small,pass
> > +igt@kms_addfb_basic@small-bo,pass
> > +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> > +igt@kms_addfb_basic@addfb25-bad-modifier,fail
> > +igt@kms_addfb_basic@invalid-get-prop-any,pass
> > +igt@kms_addfb_basic@invalid-get-prop,pass
> > +igt@kms_addfb_basic@invalid-set-prop-any,pass
> > +igt@kms_addfb_basic@invalid-set-prop,pass
> > +igt@kms_addfb_basic@master-rmfb,pass
> > +igt@kms_atomic@plane-overlay-legacy,skip
> > +igt@kms_atomic@plane-primary-legacy,skip
> > +igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
> > +igt@kms_atomic@plane-immutable-zpos,skip
> > +igt@kms_atomic@test-only,skip
> > +igt@kms_atomic@plane-cursor-legacy,skip
> > +igt@kms_atomic@plane-invalid-params,skip
> > +igt@kms_atomic@crtc-invalid-params,skip
> > +igt@kms_atomic@atomic-invalid-params,skip
> > +igt@kms_atomic@atomic_plane_damage,skip
> > +igt@kms_atomic_interruptible@legacy-setmode,skip
> > +igt@kms_atomic_interruptible@atomic-setmode,skip
> > +igt@kms_atomic_interruptible@legacy-dpms,skip
> > +igt@kms_atomic_interruptible@legacy-pageflip,skip
> > +igt@kms_atomic_interruptible@legacy-cursor,skip
> > +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> > +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> > +igt@kms_content_protection@lic,skip
> > +igt@kms_flip_event_leak,skip
> > +igt@kms_getfb@getfb-handle-zero,pass
> > +igt@kms_getfb@getfb-handle-valid,pass
> > +igt@kms_getfb@getfb-handle-closed,pass
> > +igt@kms_getfb@getfb-handle-not-fb,pass
> > +igt@kms_getfb@getfb-addfb-different-handles,pass
> > +igt@kms_getfb@getfb-repeated-different-handles,pass
> > +igt@kms_getfb@getfb2-handle-zero,pass
> > +igt@kms_getfb@getfb2-handle-closed,pass
> > +igt@kms_getfb@getfb2-handle-not-fb,pass
> > +igt@kms_getfb@getfb2-into-addfb2,pass
> > +igt@kms_getfb@getfb-handle-protection,pass
> > +igt@kms_getfb@getfb2-handle-protection,pass
> > +igt@kms_hdmi_inject@inject-4k,fail
> > +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
> > +igt@kms_pipe_crc_basic@bad-source,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
> > +igt@kms_prop_blob@basic,pass
> > +igt@kms_prop_blob@blob-prop-core,pass
> > +igt@kms_prop_blob@blob-prop-validate,pass
> > +igt@kms_prop_blob@blob-prop-lifetime,pass
> > +igt@kms_prop_blob@blob-multiple,pass
> > +igt@kms_prop_blob@invalid-get-prop-any,pass
> > +igt@kms_prop_blob@invalid-get-prop,pass
> > +igt@kms_prop_blob@invalid-set-prop-any,pass
> > +igt@kms_prop_blob@invalid-set-prop,pass
> > +igt@kms_rmfb@rmfb-ioctl,skip
> > +igt@kms_rmfb@close-fd,skip
> > +igt@kms_setmode@basic,skip
> > +igt@msm_mapping@sqefw,skip
> > +igt@msm_mapping@shadow,skip
> > +igt@msm_recovery@hangcheck,skip
> > +igt@msm_recovery@gpu-fault,skip
> > +igt@msm_recovery@iova-fault,skip
> > +igt@msm_submit@empty-submit,pass
> > +igt@msm_submit@invalid-queue-submit,pass
> > +igt@msm_submit@invalid-flags-submit,pass
> > +igt@msm_submit@invalid-in-fence-submit,pass
> > +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> > +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> > +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> > +igt@msm_submit@valid-submit,pass
> > +igt@kms_sysfs_edid_timing,pass
> > +igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
> > +igt@kms_vblank@invalid,skip
> > +igt@kms_vblank@crtc-id,skip
> > +igt@kms_vblank@pipe-a-query-idle,skip
> > +igt@kms_vblank@pipe-a-query-forked,skip
> > +igt@kms_vblank@pipe-a-query-busy,skip
> > +igt@kms_vblank@pipe-a-query-forked-busy,skip
> > +igt@kms_vblank@pipe-a-wait-idle,skip
> > +igt@kms_vblank@pipe-a-wait-forked,skip
> > +igt@kms_vblank@pipe-a-wait-busy,skip
> > +igt@kms_vblank@pipe-a-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-b-accuracy-idle,skip
> > +igt@kms_vblank@pipe-b-query-idle,skip
> > +igt@kms_vblank@pipe-b-query-forked,skip
> > +igt@kms_vblank@pipe-b-query-busy,skip
> > +igt@kms_vblank@pipe-b-query-forked-busy,skip
> > +igt@kms_vblank@pipe-b-wait-idle,skip
> > +igt@kms_vblank@pipe-b-wait-forked,skip
> > +igt@kms_vblank@pipe-b-wait-busy,skip
> > +igt@kms_vblank@pipe-b-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
> > diff --git a/drivers/gpu/drm/msm/ci/msm_apq8096_results.txt b/drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
> > new file mode 100644
> > index 000000000000..6f10941e5626
> > --- /dev/null
> > +++ b/drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
> > @@ -0,0 +1,140 @@
> > +igt@core_auth@getclient-simple,pass
> > +igt@core_auth@getclient-master-drop,pass
> > +igt@core_auth@basic-auth,pass
> > +igt@core_auth@many-magics,pass
> > +igt@core_getclient,pass
> > +igt@core_getstats,pass
> > +igt@core_getversion,pass
> > +igt@core_setmaster_vs_auth,pass
> > +igt@drm_read@invalid-buffer,skip
> > +igt@drm_read@fault-buffer,skip
> > +igt@drm_read@empty-block,skip
> > +igt@drm_read@empty-nonblock,skip
> > +igt@drm_read@short-buffer-block,skip
> > +igt@drm_read@short-buffer-nonblock,skip
> > +igt@drm_read@short-buffer-wakeup,skip
> > +igt@kms_addfb_basic@unused-handle,pass
> > +igt@kms_addfb_basic@unused-pitches,pass
> > +igt@kms_addfb_basic@unused-offsets,pass
> > +igt@kms_addfb_basic@unused-modifier,pass
> > +igt@kms_addfb_basic@legacy-format,dmesg-warn
> > +igt@kms_addfb_basic@no-handle,pass
> > +igt@kms_addfb_basic@basic,pass
> > +igt@kms_addfb_basic@bad-pitch-0,pass
> > +igt@kms_addfb_basic@bad-pitch-32,pass
> > +igt@kms_addfb_basic@bad-pitch-63,pass
> > +igt@kms_addfb_basic@bad-pitch-128,pass
> > +igt@kms_addfb_basic@bad-pitch-256,pass
> > +igt@kms_addfb_basic@bad-pitch-1024,pass
> > +igt@kms_addfb_basic@bad-pitch-999,pass
> > +igt@kms_addfb_basic@bad-pitch-65536,pass
> > +igt@kms_addfb_basic@size-max,pass
> > +igt@kms_addfb_basic@too-wide,pass
> > +igt@kms_addfb_basic@too-high,dmesg-warn
> > +igt@kms_addfb_basic@bo-too-small,pass
> > +igt@kms_addfb_basic@small-bo,pass
> > +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> > +igt@kms_addfb_basic@addfb25-bad-modifier,fail
> > +igt@kms_addfb_basic@invalid-get-prop-any,pass
> > +igt@kms_addfb_basic@invalid-get-prop,pass
> > +igt@kms_addfb_basic@invalid-set-prop-any,pass
> > +igt@kms_addfb_basic@invalid-set-prop,pass
> > +igt@kms_addfb_basic@master-rmfb,pass
> > +igt@kms_atomic@plane-overlay-legacy,skip
> > +igt@kms_atomic@plane-primary-legacy,skip
> > +igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
> > +igt@kms_atomic@plane-immutable-zpos,skip
> > +igt@kms_atomic@test-only,skip
> > +igt@kms_atomic@plane-cursor-legacy,skip
> > +igt@kms_atomic@plane-invalid-params,skip
> > +igt@kms_atomic@crtc-invalid-params,skip
> > +igt@kms_atomic@atomic-invalid-params,skip
> > +igt@kms_atomic@atomic_plane_damage,skip
> > +igt@kms_atomic_interruptible@legacy-setmode,skip
> > +igt@kms_atomic_interruptible@atomic-setmode,skip
> > +igt@kms_atomic_interruptible@legacy-dpms,skip
> > +igt@kms_atomic_interruptible@legacy-pageflip,skip
> > +igt@kms_atomic_interruptible@legacy-cursor,skip
> > +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> > +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> > +igt@kms_content_protection@lic,skip
> > +igt@kms_flip_event_leak,skip
> > +igt@kms_getfb@getfb-handle-zero,pass
> > +igt@kms_getfb@getfb-handle-valid,pass
> > +igt@kms_getfb@getfb-handle-closed,pass
> > +igt@kms_getfb@getfb-handle-not-fb,pass
> > +igt@kms_getfb@getfb-addfb-different-handles,pass
> > +igt@kms_getfb@getfb-repeated-different-handles,pass
> > +igt@kms_getfb@getfb2-handle-zero,pass
> > +igt@kms_getfb@getfb2-handle-closed,pass
> > +igt@kms_getfb@getfb2-handle-not-fb,pass
> > +igt@kms_getfb@getfb2-into-addfb2,pass
> > +igt@kms_getfb@getfb-handle-protection,pass
> > +igt@kms_getfb@getfb2-handle-protection,pass
> > +igt@kms_hdmi_inject@inject-4k,dmesg-warn
> > +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
> > +igt@kms_pipe_crc_basic@bad-source,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
> > +igt@kms_prop_blob@basic,pass
> > +igt@kms_prop_blob@blob-prop-core,pass
> > +igt@kms_prop_blob@blob-prop-validate,pass
> > +igt@kms_prop_blob@blob-prop-lifetime,pass
> > +igt@kms_prop_blob@blob-multiple,pass
> > +igt@kms_prop_blob@invalid-get-prop-any,pass
> > +igt@kms_prop_blob@invalid-get-prop,pass
> > +igt@kms_prop_blob@invalid-set-prop-any,pass
> > +igt@kms_prop_blob@invalid-set-prop,pass
> > +igt@kms_rmfb@rmfb-ioctl,skip
> > +igt@kms_rmfb@close-fd,skip
> > +igt@kms_setmode@basic,skip
> > +igt@msm_mapping@sqefw,skip
> > +igt@msm_mapping@shadow,skip
> > +igt@msm_recovery@hangcheck,skip
> > +igt@msm_recovery@gpu-fault,skip
> > +igt@msm_recovery@iova-fault,skip
> > +igt@msm_submit@empty-submit,pass
> > +igt@msm_submit@invalid-queue-submit,pass
> > +igt@msm_submit@invalid-flags-submit,pass
> > +igt@msm_submit@invalid-in-fence-submit,pass
> > +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> > +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> > +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> > +igt@msm_submit@valid-submit,pass
> > +igt@kms_sysfs_edid_timing,pass
> > +igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
> > +igt@kms_vblank@invalid,skip
> > +igt@kms_vblank@crtc-id,skip
> > +igt@kms_vblank@pipe-a-query-idle,skip
> > +igt@kms_vblank@pipe-a-query-forked,skip
> > +igt@kms_vblank@pipe-a-query-busy,skip
> > +igt@kms_vblank@pipe-a-query-forked-busy,skip
> > +igt@kms_vblank@pipe-a-wait-idle,skip
> > +igt@kms_vblank@pipe-a-wait-forked,skip
> > +igt@kms_vblank@pipe-a-wait-busy,skip
> > +igt@kms_vblank@pipe-a-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-b-accuracy-idle,skip
> > +igt@kms_vblank@pipe-b-query-idle,skip
> > +igt@kms_vblank@pipe-b-query-forked,skip
> > +igt@kms_vblank@pipe-b-query-busy,skip
> > +igt@kms_vblank@pipe-b-query-forked-busy,skip
> > +igt@kms_vblank@pipe-b-wait-idle,skip
> > +igt@kms_vblank@pipe-b-wait-forked,skip
> > +igt@kms_vblank@pipe-b-wait-busy,skip
> > +igt@kms_vblank@pipe-b-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
> > diff --git a/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > new file mode 100644
> > index 000000000000..01f7b4b399b5
> > --- /dev/null
> > +++ b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > @@ -0,0 +1,141 @@
> > +igt@core_auth@getclient-simple,dmesg-warn
> > +igt@core_auth@getclient-master-drop,pass
> > +igt@core_auth@basic-auth,pass
> > +igt@core_auth@many-magics,pass
> > +igt@core_getclient,pass
> > +igt@core_getstats,pass
> > +igt@core_getversion,pass
> > +igt@core_setmaster_vs_auth,pass
> > +igt@drm_read@invalid-buffer,pass
> > +igt@drm_read@fault-buffer,pass
> > +igt@drm_read@empty-block,pass
> > +igt@drm_read@empty-nonblock,pass
> > +igt@drm_read@short-buffer-block,pass
> > +igt@drm_read@short-buffer-nonblock,pass
> > +igt@drm_read@short-buffer-wakeup,pass
> > +igt@kms_addfb_basic@unused-handle,pass
> > +igt@kms_addfb_basic@unused-pitches,pass
> > +igt@kms_addfb_basic@unused-offsets,pass
> > +igt@kms_addfb_basic@unused-modifier,pass
> > +igt@kms_addfb_basic@legacy-format,dmesg-warn
> > +igt@kms_addfb_basic@no-handle,pass
> > +igt@kms_addfb_basic@basic,pass
> > +igt@kms_addfb_basic@bad-pitch-0,pass
> > +igt@kms_addfb_basic@bad-pitch-32,pass
> > +igt@kms_addfb_basic@bad-pitch-63,pass
> > +igt@kms_addfb_basic@bad-pitch-128,pass
> > +igt@kms_addfb_basic@bad-pitch-256,pass
> > +igt@kms_addfb_basic@bad-pitch-1024,pass
> > +igt@kms_addfb_basic@bad-pitch-999,pass
> > +igt@kms_addfb_basic@bad-pitch-65536,pass
> > +igt@kms_addfb_basic@size-max,pass
> > +igt@kms_addfb_basic@too-wide,pass
> > +igt@kms_addfb_basic@too-high,dmesg-warn
>
> For test results on Trogdor, is is possible to have them be
> success/fail/skip only?
>
> Results such as dmesg-warn/dmesg-fail are igt_runner specific and
> because there isn't support for igt_runner on ChromeOS, they will be
> difficult to replicate and debug.

Actually, I wonder if it would be better to just treat
dmesg-warn/dmesg-fail as pass/fail?  I'd noticed some flakes on
rockchip which looked just like unrelated dmesg msg which just
happened to show up while the test was running.

Additionally, some of the tests, like msm_recovery, are *expected* to
generate some dmesg spam since they are intentionally triggering GPU
hangs to test the recovery mechanism.

BR,
-R

> > +igt@kms_addfb_basic@bo-too-small,pass
> > +igt@kms_addfb_basic@small-bo,pass
> > +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> > +igt@kms_addfb_basic@addfb25-bad-modifier,dmesg-warn
> > +igt@kms_addfb_basic@invalid-get-prop-any,pass
> > +igt@kms_addfb_basic@invalid-get-prop,pass
> > +igt@kms_addfb_basic@invalid-set-prop-any,pass
> > +igt@kms_addfb_basic@invalid-set-prop,pass
> > +igt@kms_addfb_basic@master-rmfb,pass
> > +igt@kms_atomic@plane-overlay-legacy,skip
> > +igt@kms_atomic@plane-primary-legacy,pass
> > +igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
> > +igt@kms_atomic@plane-immutable-zpos,pass
> > +igt@kms_atomic@test-only,pass
> > +igt@kms_atomic@plane-cursor-legacy,pass
> > +igt@kms_atomic@plane-invalid-params,pass
> > +igt@kms_atomic@crtc-invalid-params,pass
> > +igt@kms_atomic@atomic-invalid-params,pass
> > +igt@kms_atomic@atomic_plane_damage,pass
> > +igt@kms_atomic_interruptible@legacy-setmode,skip
> > +igt@kms_atomic_interruptible@atomic-setmode,skip
> > +igt@kms_atomic_interruptible@legacy-dpms,skip
> > +igt@kms_atomic_interruptible@legacy-pageflip,skip
> > +igt@kms_atomic_interruptible@legacy-cursor,skip
> > +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> > +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> > +igt@kms_content_protection@lic,skip
> > +igt@kms_flip_event_leak,pass
> > +igt@kms_getfb@getfb-handle-zero,pass
> > +igt@kms_getfb@getfb-handle-valid,pass
> > +igt@kms_getfb@getfb-handle-closed,pass
> > +igt@kms_getfb@getfb-handle-not-fb,pass
> > +igt@kms_getfb@getfb-addfb-different-handles,pass
> > +igt@kms_getfb@getfb-repeated-different-handles,pass
> > +igt@kms_getfb@getfb2-handle-zero,pass
> > +igt@kms_getfb@getfb2-handle-closed,pass
> > +igt@kms_getfb@getfb2-handle-not-fb,pass
> > +igt@kms_getfb@getfb2-into-addfb2,pass
> > +igt@kms_getfb@getfb-handle-protection,pass
> > +igt@kms_getfb@getfb2-handle-protection,pass
> > +igt@kms_hdmi_inject@inject-4k,skip
> > +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
> > +igt@kms_pipe_crc_basic@bad-source,pass
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a,pass
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,pass
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,pass
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,pass
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,pass
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,pass
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b,pass
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,pass
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,pass
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,pass
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,pass
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,pass
> > +igt@kms_prop_blob@basic,pass
> > +igt@kms_prop_blob@blob-prop-core,pass
> > +igt@kms_prop_blob@blob-prop-validate,pass
> > +igt@kms_prop_blob@blob-prop-lifetime,pass
> > +igt@kms_prop_blob@blob-multiple,pass
> > +igt@kms_prop_blob@invalid-get-prop-any,pass
> > +igt@kms_prop_blob@invalid-get-prop,pass
> > +igt@kms_prop_blob@invalid-set-prop-any,pass
> > +igt@kms_prop_blob@invalid-set-prop,pass
> > +igt@kms_rmfb@rmfb-ioctl,pass
> > +igt@kms_rmfb@close-fd,fail
> > +igt@kms_setmode@basic@pipe-a-edp-1,pass
> > +igt@kms_setmode@basic@pipe-b-edp-1,pass
> > +igt@msm_mapping@sqefw,dmesg-fail
> > +igt@msm_mapping@shadow,dmesg-fail
> > +igt@msm_recovery@hangcheck,dmesg-warn
> > +igt@msm_recovery@gpu-fault,dmesg-warn
> > +igt@msm_recovery@iova-fault,dmesg-warn
> > +igt@msm_submit@empty-submit,pass
> > +igt@msm_submit@invalid-queue-submit,pass
> > +igt@msm_submit@invalid-flags-submit,pass
> > +igt@msm_submit@invalid-in-fence-submit,pass
> > +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> > +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> > +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> > +igt@msm_submit@valid-submit,pass
> > +igt@kms_sysfs_edid_timing,pass
> > +igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,pass
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,fail
>
> We could probably skip checking the results for kms_universal_plane on
> Trogdor for now, since this is a test affected by the hack regression.
> There is an IGT patch in the works for fixing the
> disable-primary-vs-flip-pipe-b failure, so it should be updated pretty
> soon too.
>
> Thanks,
> Jessica Zhang
>
> > +igt@kms_vblank@invalid,pass
> > +igt@kms_vblank@crtc-id,pass
> > +igt@kms_vblank@pipe-a-query-idle,pass
> > +igt@kms_vblank@pipe-a-query-forked,pass
> > +igt@kms_vblank@pipe-a-query-busy,pass
> > +igt@kms_vblank@pipe-a-query-forked-busy,pass
> > +igt@kms_vblank@pipe-a-wait-idle,pass
> > +igt@kms_vblank@pipe-a-wait-forked,pass
> > +igt@kms_vblank@pipe-a-wait-busy,pass
> > +igt@kms_vblank@pipe-a-wait-forked-busy,pass
> > +igt@kms_vblank@pipe-a-ts-continuation-idle,pass
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset,pass
> > +igt@kms_vblank@pipe-b-accuracy-idle,pass
> > +igt@kms_vblank@pipe-b-query-idle,pass
> > +igt@kms_vblank@pipe-b-query-forked,pass
> > +igt@kms_vblank@pipe-b-query-busy,pass
> > +igt@kms_vblank@pipe-b-query-forked-busy,pass
> > +igt@kms_vblank@pipe-b-wait-idle,pass
> > +igt@kms_vblank@pipe-b-wait-forked,pass
> > +igt@kms_vblank@pipe-b-wait-busy,pass
> > +igt@kms_vblank@pipe-b-wait-forked-busy,pass
> > +igt@kms_vblank@pipe-b-ts-continuation-idle,pass
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset,pass
> > diff --git a/drivers/gpu/drm/msm/ci/msm_sdm845_results.txt b/drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
> > new file mode 100644
> > index 000000000000..3df1e5ef6d80
> > --- /dev/null
> > +++ b/drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
> > @@ -0,0 +1,141 @@
> > +igt@core_auth@getclient-simple,dmesg-warn
> > +igt@core_auth@getclient-master-drop,pass
> > +igt@core_auth@basic-auth,pass
> > +igt@core_auth@many-magics,pass
> > +igt@core_getclient,pass
> > +igt@core_getstats,pass
> > +igt@core_getversion,pass
> > +igt@core_setmaster_vs_auth,pass
> > +igt@drm_read@invalid-buffer,pass
> > +igt@drm_read@fault-buffer,pass
> > +igt@drm_read@empty-block,pass
> > +igt@drm_read@empty-nonblock,pass
> > +igt@drm_read@short-buffer-block,pass
> > +igt@drm_read@short-buffer-nonblock,pass
> > +igt@drm_read@short-buffer-wakeup,pass
> > +igt@kms_addfb_basic@unused-handle,pass
> > +igt@kms_addfb_basic@unused-pitches,pass
> > +igt@kms_addfb_basic@unused-offsets,pass
> > +igt@kms_addfb_basic@unused-modifier,pass
> > +igt@kms_addfb_basic@legacy-format,dmesg-warn
> > +igt@kms_addfb_basic@no-handle,pass
> > +igt@kms_addfb_basic@basic,pass
> > +igt@kms_addfb_basic@bad-pitch-0,pass
> > +igt@kms_addfb_basic@bad-pitch-32,pass
> > +igt@kms_addfb_basic@bad-pitch-63,pass
> > +igt@kms_addfb_basic@bad-pitch-128,pass
> > +igt@kms_addfb_basic@bad-pitch-256,pass
> > +igt@kms_addfb_basic@bad-pitch-1024,pass
> > +igt@kms_addfb_basic@bad-pitch-999,pass
> > +igt@kms_addfb_basic@bad-pitch-65536,pass
> > +igt@kms_addfb_basic@size-max,pass
> > +igt@kms_addfb_basic@too-wide,pass
> > +igt@kms_addfb_basic@too-high,dmesg-warn
> > +igt@kms_addfb_basic@bo-too-small,pass
> > +igt@kms_addfb_basic@small-bo,pass
> > +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> > +igt@kms_addfb_basic@addfb25-bad-modifier,dmesg-warn
> > +igt@kms_addfb_basic@invalid-get-prop-any,pass
> > +igt@kms_addfb_basic@invalid-get-prop,pass
> > +igt@kms_addfb_basic@invalid-set-prop-any,pass
> > +igt@kms_addfb_basic@invalid-set-prop,pass
> > +igt@kms_addfb_basic@master-rmfb,pass
> > +igt@kms_atomic@plane-overlay-legacy,dmesg-warn
> > +igt@kms_atomic@plane-primary-legacy,dmesg-warn
> > +igt@kms_atomic@plane-primary-overlay-mutable-zpos,dmesg-warn
> > +igt@kms_atomic@plane-immutable-zpos,dmesg-warn
> > +igt@kms_atomic@test-only,dmesg-warn
> > +igt@kms_atomic@plane-cursor-legacy,dmesg-warn
> > +igt@kms_atomic@plane-invalid-params,dmesg-warn
> > +igt@kms_atomic@crtc-invalid-params,dmesg-warn
> > +igt@kms_atomic@atomic-invalid-params,dmesg-warn
> > +igt@kms_atomic@atomic_plane_damage,dmesg-warn
> > +igt@kms_atomic_interruptible@legacy-setmode,skip
> > +igt@kms_atomic_interruptible@atomic-setmode,skip
> > +igt@kms_atomic_interruptible@legacy-dpms,skip
> > +igt@kms_atomic_interruptible@legacy-pageflip,skip
> > +igt@kms_atomic_interruptible@legacy-cursor,skip
> > +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> > +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> > +igt@kms_content_protection@lic,skip
> > +igt@kms_flip_event_leak,dmesg-warn
> > +igt@kms_getfb@getfb-handle-zero,pass
> > +igt@kms_getfb@getfb-handle-valid,pass
> > +igt@kms_getfb@getfb-handle-closed,pass
> > +igt@kms_getfb@getfb-handle-not-fb,pass
> > +igt@kms_getfb@getfb-addfb-different-handles,pass
> > +igt@kms_getfb@getfb-repeated-different-handles,pass
> > +igt@kms_getfb@getfb2-handle-zero,pass
> > +igt@kms_getfb@getfb2-handle-closed,pass
> > +igt@kms_getfb@getfb2-handle-not-fb,pass
> > +igt@kms_getfb@getfb2-into-addfb2,pass
> > +igt@kms_getfb@getfb-handle-protection,pass
> > +igt@kms_getfb@getfb2-handle-protection,pass
> > +igt@kms_hdmi_inject@inject-4k,skip
> > +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,pass
> > +igt@kms_pipe_crc_basic@bad-source,pass
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a,pass
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,pass
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,pass
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,pass
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,dmesg-warn
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,dmesg-warn
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
> > +igt@kms_prop_blob@basic,pass
> > +igt@kms_prop_blob@blob-prop-core,pass
> > +igt@kms_prop_blob@blob-prop-validate,pass
> > +igt@kms_prop_blob@blob-prop-lifetime,pass
> > +igt@kms_prop_blob@blob-multiple,pass
> > +igt@kms_prop_blob@invalid-get-prop-any,pass
> > +igt@kms_prop_blob@invalid-get-prop,pass
> > +igt@kms_prop_blob@invalid-set-prop-any,pass
> > +igt@kms_prop_blob@invalid-set-prop,pass
> > +igt@kms_rmfb@rmfb-ioctl,pass
> > +igt@kms_rmfb@close-fd,fail
> > +igt@kms_setmode@basic@pipe-a-edp-1,dmesg-warn
> > +igt@kms_setmode@basic,skip
> > +igt@msm_mapping@sqefw,dmesg-fail
> > +igt@msm_mapping@shadow,dmesg-fail
> > +igt@msm_recovery@hangcheck,dmesg-warn
> > +igt@msm_recovery@gpu-fault,dmesg-warn
> > +igt@msm_recovery@iova-fault,dmesg-warn
> > +igt@msm_submit@empty-submit,pass
> > +igt@msm_submit@invalid-queue-submit,pass
> > +igt@msm_submit@invalid-flags-submit,pass
> > +igt@msm_submit@invalid-in-fence-submit,pass
> > +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> > +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> > +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> > +igt@msm_submit@valid-submit,pass
> > +igt@kms_sysfs_edid_timing,pass
> > +igt@kms_universal_plane@universal-plane-pipe-a-functional,dmesg-fail
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,dmesg-warn
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
> > +igt@kms_vblank@invalid,dmesg-warn
> > +igt@kms_vblank@crtc-id,dmesg-warn
> > +igt@kms_vblank@pipe-a-query-idle,dmesg-warn
> > +igt@kms_vblank@pipe-a-query-forked,dmesg-warn
> > +igt@kms_vblank@pipe-a-query-busy,dmesg-warn
> > +igt@kms_vblank@pipe-a-query-forked-busy,dmesg-warn
> > +igt@kms_vblank@pipe-a-wait-idle,dmesg-warn
> > +igt@kms_vblank@pipe-a-wait-forked,dmesg-warn
> > +igt@kms_vblank@pipe-a-wait-busy,dmesg-warn
> > +igt@kms_vblank@pipe-a-wait-forked-busy,dmesg-warn
> > +igt@kms_vblank@pipe-a-ts-continuation-idle,dmesg-warn
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset,dmesg-warn
> > +igt@kms_vblank@pipe-b-accuracy-idle,skip
> > +igt@kms_vblank@pipe-b-query-idle,skip
> > +igt@kms_vblank@pipe-b-query-forked,skip
> > +igt@kms_vblank@pipe-b-query-busy,skip
> > +igt@kms_vblank@pipe-b-query-forked-busy,skip
> > +igt@kms_vblank@pipe-b-wait-idle,skip
> > +igt@kms_vblank@pipe-b-wait-forked,skip
> > +igt@kms_vblank@pipe-b-wait-busy,skip
> > +igt@kms_vblank@pipe-b-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
> > --
> > 2.31.1
> >

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [Freedreno] [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-10 19:39   ` [Freedreno] " Jessica Zhang
  2022-05-10 20:25     ` Rob Clark
@ 2022-05-11  4:25     ` Tomeu Vizoso
  1 sibling, 0 replies; 49+ messages in thread
From: Tomeu Vizoso @ 2022-05-11  4:25 UTC (permalink / raw)
  To: Jessica Zhang
  Cc: freedreno, linux-doc, David Airlie, linux-arm-msm,
	Jonathan Corbet, Abhinav Kumar, linux-kernel, dri-devel,
	Thomas Zimmermann, Sean Paul

On 5/10/22 9:39 PM, Jessica Zhang wrote:
> 
> 
> On 5/10/2022 7:13 AM, Tomeu Vizoso wrote:
>> +igt@kms_atomic_interruptible@legacy-setmode@pipe-a-edp-1
>> +igt@kms_atomic_interruptible@atomic-setmode@pipe-a-edp-1
>> +igt@kms_atomic_interruptible@legacy-dpms@pipe-a-edp-1
>> +igt@kms_atomic_interruptible@legacy-pageflip@pipe-a-edp-1
>> +igt@kms_atomic_interruptible@legacy-cursor@pipe-a-edp-1
>> +igt@kms_atomic_interruptible@universal-setplane-primary@pipe-a-edp-1
>> +igt@kms_atomic_interruptible@universal-setplane-cursor@pipe-a-edp-1
> 
> I see that there are some KMS subtests/tests are missing such as 
> kms_atomic_transition -- are they unstable across all boards?
> 
>  From what I've seen, kms_atomic_transition is unstable only on Trogdor, 
> but has stable results on other boards.

I don't know of a good reason for not having the tests in this list. 
Developers can follow the instructions at "How to expand coverage" to 
add tests if the driver can consistently pass (or fail) them.

There is ongoing work to have a test runner that will better handle 
flaky tests, which will make it possible to expand the list without 
having to resort to per-soc test lists.

>> +igt@kms_addfb_basic@size-max,pass
>> +igt@kms_addfb_basic@too-wide,pass
>> +igt@kms_addfb_basic@too-high,dmesg-warn
> 
> For test results on Trogdor, is is possible to have them be 
> success/fail/skip only?
> 
> Results such as dmesg-warn/dmesg-fail are igt_runner specific and 
> because there isn't support for igt_runner on ChromeOS, they will be 
> difficult to replicate and debug.

As Rob said later, it's probably better to drop that distinction. Maybe 
at some future point we will want to track expected kmsg output but I 
think there are lots of work to do before that makes sense.

Will do that in a v3.

>> +igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
>> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,pass
>> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,fail
> 
> We could probably skip checking the results for kms_universal_plane on 
> Trogdor for now, since this is a test affected by the hack regression. 
> There is an IGT patch in the works for fixing the 
> disable-primary-vs-flip-pipe-b failure, so it should be updated pretty 
> soon too.

So, how this should work is for the patch that fixes that bug to update 
also the expectation files (see "How to update test expectations" in the 
docs). In this case though, the fix is likely to land before this patch, 
so I will just update the expectations once I rebase and the fix is 
brought into my branch.

Thanks for the feedback!

Tomeu

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Adding CI results to the kernel tree was Re: [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-10 14:13 ` [RFC v2] " Tomeu Vizoso
  2022-05-10 19:39   ` [Freedreno] " Jessica Zhang
@ 2022-05-11  5:06   ` Dave Airlie
  2022-05-11  6:22     ` Greg Kroah-Hartman
  2022-05-11 17:33     ` Linus Torvalds
  2022-05-11  6:15   ` [RFC v3] " Tomeu Vizoso
  2 siblings, 2 replies; 49+ messages in thread
From: Dave Airlie @ 2022-05-11  5:06 UTC (permalink / raw)
  To: Tomeu Vizoso, Linus Torvalds, Greg Kroah-Hartman
  Cc: freedreno, Thomas Zimmermann, Jonathan Corbet, linux-arm-msm,
	open list:DOCUMENTATION, Abhinav Kumar, LKML, dri-devel,
	Sean Paul

> And use it to store expectations about what the drm/msm driver is
> supposed to pass in the IGT test suite.

I wanted to loop in Linus/Greg to see if there are any issues raised
by adding CI results file to the tree in their minds, or if any other
subsystem has done this already, and it's all fine.

I think this is a good thing after our Mesa experience, but Mesa has a
lot tighter integration here, so I want to get some more opinions
outside the group.

Dave.

>
> Also include a configuration file that points to the out-of-tree CI
> scripts.
>
> By storing the test expectations along the code we can make sure both
> stay in sync with each other, and so we can know when a code change
> breaks those expectations.
>
> This will allow all contributors to drm/msm to reuse the infrastructure
> already in gitlab.freedesktop.org to test the driver on several
> generations of the hardware.
>
> v2:
>   - Fix names of result expectation files to match SoC
>   - Don't execute tests that are going to skip on all boards
>
> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> ---
>  Documentation/gpu/msm_automated_testing.rst   |  70 +++++++++
>  drivers/gpu/drm/msm/ci/gitlab-ci.yml          |  11 ++
>  drivers/gpu/drm/msm/ci/msm.testlist           | 148 ++++++++++++++++++
>  .../gpu/drm/msm/ci/msm_apq8016_results.txt    | 140 +++++++++++++++++
>  .../gpu/drm/msm/ci/msm_apq8096_results.txt    | 140 +++++++++++++++++
>  drivers/gpu/drm/msm/ci/msm_sc7180_results.txt | 141 +++++++++++++++++
>  drivers/gpu/drm/msm/ci/msm_sdm845_results.txt | 141 +++++++++++++++++
>  7 files changed, 791 insertions(+)
>  create mode 100644 Documentation/gpu/msm_automated_testing.rst
>  create mode 100644 drivers/gpu/drm/msm/ci/gitlab-ci.yml
>  create mode 100644 drivers/gpu/drm/msm/ci/msm.testlist
>  create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
>  create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
>  create mode 100644 drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
>  create mode 100644 drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
>
> diff --git a/Documentation/gpu/msm_automated_testing.rst b/Documentation/gpu/msm_automated_testing.rst
> new file mode 100644
> index 000000000000..fe59474569c2
> --- /dev/null
> +++ b/Documentation/gpu/msm_automated_testing.rst
> @@ -0,0 +1,70 @@
> +.. SPDX-License-Identifier: GPL-2.0+
> +
> +=========================================
> +Automated testing of MSM DRM driver
> +=========================================
> +
> +
> +Introduction
> +============
> +
> +Making sure that changes to a driver don't introduce regressions can be very time consuming when lots of different hardware configurations need to be tested. Moreover, it isn't practical for each person interested in this testing to have to acquire and maintain what can be a considerable amount of hardware.
> +
> +Also, it is desirable for developers to check for regressions in their code by themselves, instead of relying on the maintainer finding them and then reporting back.
> +
> +There are facilities in gitlab.freedesktop.org to automatically test Mesa that can be used as well for testing DRM drivers such as drm/msm. This document explains how people interested in testing the drm/msm driver can use this shared infrastructure to save quite some time and effort.
> +
> +
> +Relevant files
> +==============
> +
> +drivers/gpu/drm/msm/ci/gitlab-ci.yml
> +------------------------------------
> +
> +Specifies the specific version of the scripts to be used. GitLab CI will use the values defined in this file to fetch the right scripts.
> +
> +
> +drivers/gpu/drm/msm/ci/msm.testlist
> +-----------------------------------
> +
> +Specifies the tests that the current code is expected to be able to reliably run. These tests are expected to not hang the DUT (device under testing) when running on the revision they belong to, and to give consistent results.
> +
> +
> +drivers/gpu/drm/msm/ci/msm_*_results.txt
> +----------------------------------------
> +
> +Specifies the expected results of running this specific kernel revision on a given hardware configuration.
> +
> +
> +How to enable automated testing on your tree
> +============================================
> +
> +1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one yet
> +
> +2. In your kernel repo's configuration (eg. https://gitlab.freedesktop.org/tomeu/linux/-/settings/ci_cd), change the CI/CD configuration file from .gitlab-ci.yml to drivers/gpu/drm/msm/ci/gitlab-ci.yml.
> +
> +3. Next time you push to this repository, you will see a CI pipeline being created (eg. https://gitlab.freedesktop.org/tomeu/linux/-/pipelines)
> +
> +4. The various jobs will be run and when the pipeline is finished, all jobs should be green unless a regression has been found.
> +
> +
> +How to update test expectations
> +===============================
> +
> +If your changes to the code fix any tests, you will have to update one or more of the files in drivers/gpu/drm/msm/ci/msm_*_results.txt, for each of the test platforms affected by the change.
> +
> +If you have run a pipeline and it failed because of a mismatched test result, you will have been offered a patch at the end of the run that you can apply after reviewing it.
> +
> +
> +How to expand coverage
> +======================
> +
> +If your code changes makes it possible to run more tests (by solving reliability issues, for example), more tests can be added to this list, and then the expected results updated with the patch file that will be printed at the end of each job.
> +
> +If there is a need for updating the version of IGT being used (maybe you have added more tests to it), follow the instructions at https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/tree/msm#upreving-igt.
> +
> +
> +How to test your changes to the scripts
> +==========================================
> +
> +For testing changes to the scripts in the drm-ci repo, change the DRM_CI_PROJECT_PATH variable in drivers/gpu/drm/msm/ci/gitlab-ci.yml to match your fork of the project (eg. tomeu/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/msm/ci/gitlab-ci.yml b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
> new file mode 100644
> index 000000000000..9b7caa7fcab2
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
> @@ -0,0 +1,11 @@
> +variables:
> +  # Change this to use your fork of drm-ci
> +  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
> +  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha msm
> +
> +include:
> +  - project: *drm-ci-project-path
> +    ref: *drm-ci-commit-sha
> +    file:
> +      - '.msm-gitlab-ci.yml'
> +      - '.gitlab-ci.yml'
> diff --git a/drivers/gpu/drm/msm/ci/msm.testlist b/drivers/gpu/drm/msm/ci/msm.testlist
> new file mode 100644
> index 000000000000..8805a3bc7316
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/ci/msm.testlist
> @@ -0,0 +1,148 @@
> +# Keep alphabetically sorted by default
> +
> +igt@core_auth@getclient-simple
> +igt@core_auth@getclient-master-drop
> +igt@core_auth@basic-auth
> +igt@core_auth@many-magics
> +igt@core_getclient
> +igt@core_getstats
> +igt@core_getversion
> +igt@core_setmaster_vs_auth
> +igt@drm_read@invalid-buffer
> +igt@drm_read@fault-buffer
> +igt@drm_read@empty-block
> +igt@drm_read@empty-nonblock
> +igt@drm_read@short-buffer-block
> +igt@drm_read@short-buffer-nonblock
> +igt@drm_read@short-buffer-wakeup
> +igt@kms_addfb_basic@unused-handle
> +igt@kms_addfb_basic@unused-pitches
> +igt@kms_addfb_basic@unused-offsets
> +igt@kms_addfb_basic@unused-modifier
> +igt@kms_addfb_basic@legacy-format
> +igt@kms_addfb_basic@no-handle
> +igt@kms_addfb_basic@basic
> +igt@kms_addfb_basic@bad-pitch-0
> +igt@kms_addfb_basic@bad-pitch-32
> +igt@kms_addfb_basic@bad-pitch-63
> +igt@kms_addfb_basic@bad-pitch-128
> +igt@kms_addfb_basic@bad-pitch-256
> +igt@kms_addfb_basic@bad-pitch-1024
> +igt@kms_addfb_basic@bad-pitch-999
> +igt@kms_addfb_basic@bad-pitch-65536
> +igt@kms_addfb_basic@size-max
> +igt@kms_addfb_basic@too-wide
> +igt@kms_addfb_basic@too-high
> +igt@kms_addfb_basic@bo-too-small
> +igt@kms_addfb_basic@small-bo
> +igt@kms_addfb_basic@addfb25-modifier-no-flag
> +igt@kms_addfb_basic@addfb25-bad-modifier
> +igt@kms_addfb_basic@invalid-get-prop-any
> +igt@kms_addfb_basic@invalid-get-prop
> +igt@kms_addfb_basic@invalid-set-prop-any
> +igt@kms_addfb_basic@invalid-set-prop
> +igt@kms_addfb_basic@master-rmfb
> +igt@kms_atomic@plane-overlay-legacy
> +igt@kms_atomic@plane-primary-legacy
> +igt@kms_atomic@plane-primary-overlay-mutable-zpos
> +igt@kms_atomic@plane-immutable-zpos
> +igt@kms_atomic@test-only
> +igt@kms_atomic@plane-cursor-legacy
> +igt@kms_atomic@plane-invalid-params
> +igt@kms_atomic@crtc-invalid-params
> +igt@kms_atomic@atomic-invalid-params
> +igt@kms_atomic@atomic_plane_damage
> +igt@kms_atomic_interruptible@legacy-setmode@pipe-a-edp-1
> +igt@kms_atomic_interruptible@atomic-setmode@pipe-a-edp-1
> +igt@kms_atomic_interruptible@legacy-dpms@pipe-a-edp-1
> +igt@kms_atomic_interruptible@legacy-pageflip@pipe-a-edp-1
> +igt@kms_atomic_interruptible@legacy-cursor@pipe-a-edp-1
> +igt@kms_atomic_interruptible@universal-setplane-primary@pipe-a-edp-1
> +igt@kms_atomic_interruptible@universal-setplane-cursor@pipe-a-edp-1
> +igt@kms_content_protection@LIC
> +igt@kms_flip_event_leak
> +igt@kms_getfb@getfb-handle-zero
> +igt@kms_getfb@getfb-handle-valid
> +igt@kms_getfb@getfb-handle-closed
> +igt@kms_getfb@getfb-handle-not-fb
> +igt@kms_getfb@getfb-addfb-different-handles
> +igt@kms_getfb@getfb-repeated-different-handles
> +igt@kms_getfb@getfb2-handle-zero
> +igt@kms_getfb@getfb2-handle-closed
> +igt@kms_getfb@getfb2-handle-not-fb
> +igt@kms_getfb@getfb2-into-addfb2
> +igt@kms_getfb@getfb-handle-protection
> +igt@kms_getfb@getfb2-handle-protection
> +igt@kms_hdmi_inject@inject-4k
> +igt@kms_multipipe_modeset@basic-max-pipe-crc-check
> +igt@kms_pipe_crc_basic@bad-source
> +igt@kms_pipe_crc_basic@read-crc-pipe-a
> +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a
> +igt@kms_pipe_crc_basic@read-crc-pipe-b
> +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b
> +igt@kms_prop_blob@basic
> +igt@kms_prop_blob@blob-prop-core
> +igt@kms_prop_blob@blob-prop-validate
> +igt@kms_prop_blob@blob-prop-lifetime
> +igt@kms_prop_blob@blob-multiple
> +igt@kms_prop_blob@invalid-get-prop-any
> +igt@kms_prop_blob@invalid-get-prop
> +igt@kms_prop_blob@invalid-set-prop-any
> +igt@kms_prop_blob@invalid-set-prop
> +igt@kms_rmfb@rmfb-ioctl
> +igt@kms_rmfb@close-fd
> +igt@kms_setmode@basic@pipe-a-edp-1
> +igt@kms_setmode@basic@pipe-b-edp-1
> +
> +# Flakes on a530 with:
> +# arm-smmu b40000.iommu: Unhandled context fault: fsr=0x408, iova=0x01003000, fsynr=0x13, cbfrsynra=0x0, cb=0
> +# igt@msm_mapping@ring
> +
> +igt@msm_mapping@sqefw
> +igt@msm_mapping@shadow
> +igt@msm_recovery@hangcheck
> +igt@msm_recovery@gpu-fault
> +igt@msm_recovery@iova-fault
> +igt@msm_submit@empty-submit
> +igt@msm_submit@invalid-queue-submit
> +igt@msm_submit@invalid-flags-submit
> +igt@msm_submit@invalid-in-fence-submit
> +igt@msm_submit@invalid-duplicate-bo-submit
> +igt@msm_submit@invalid-cmd-idx-submit
> +igt@msm_submit@invalid-cmd-type-submit
> +igt@msm_submit@valid-submit
> +igt@kms_sysfs_edid_timing
> +igt@kms_universal_plane@universal-plane-pipe-a-functional
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b
> +igt@kms_vblank@invalid
> +igt@kms_vblank@crtc-id
> +igt@kms_vblank@pipe-a-query-idle
> +igt@kms_vblank@pipe-a-query-forked
> +igt@kms_vblank@pipe-a-query-busy
> +igt@kms_vblank@pipe-a-query-forked-busy
> +igt@kms_vblank@pipe-a-wait-idle
> +igt@kms_vblank@pipe-a-wait-forked
> +igt@kms_vblank@pipe-a-wait-busy
> +igt@kms_vblank@pipe-a-wait-forked-busy
> +igt@kms_vblank@pipe-a-ts-continuation-idle
> +igt@kms_vblank@pipe-a-ts-continuation-modeset
> +igt@kms_vblank@pipe-b-accuracy-idle
> +igt@kms_vblank@pipe-b-query-idle
> +igt@kms_vblank@pipe-b-query-forked
> +igt@kms_vblank@pipe-b-query-busy
> +igt@kms_vblank@pipe-b-query-forked-busy
> +igt@kms_vblank@pipe-b-wait-idle
> +igt@kms_vblank@pipe-b-wait-forked
> +igt@kms_vblank@pipe-b-wait-busy
> +igt@kms_vblank@pipe-b-wait-forked-busy
> +igt@kms_vblank@pipe-b-ts-continuation-idle
> +igt@kms_vblank@pipe-b-ts-continuation-modeset
> diff --git a/drivers/gpu/drm/msm/ci/msm_apq8016_results.txt b/drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
> new file mode 100644
> index 000000000000..2cad61d89faf
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
> @@ -0,0 +1,140 @@
> +igt@core_auth@getclient-simple,pass
> +igt@core_auth@getclient-master-drop,pass
> +igt@core_auth@basic-auth,pass
> +igt@core_auth@many-magics,pass
> +igt@core_getclient,pass
> +igt@core_getstats,pass
> +igt@core_getversion,pass
> +igt@core_setmaster_vs_auth,pass
> +igt@drm_read@invalid-buffer,skip
> +igt@drm_read@fault-buffer,skip
> +igt@drm_read@empty-block,skip
> +igt@drm_read@empty-nonblock,skip
> +igt@drm_read@short-buffer-block,skip
> +igt@drm_read@short-buffer-nonblock,skip
> +igt@drm_read@short-buffer-wakeup,skip
> +igt@kms_addfb_basic@unused-handle,pass
> +igt@kms_addfb_basic@unused-pitches,pass
> +igt@kms_addfb_basic@unused-offsets,pass
> +igt@kms_addfb_basic@unused-modifier,pass
> +igt@kms_addfb_basic@legacy-format,dmesg-warn
> +igt@kms_addfb_basic@no-handle,pass
> +igt@kms_addfb_basic@basic,pass
> +igt@kms_addfb_basic@bad-pitch-0,pass
> +igt@kms_addfb_basic@bad-pitch-32,pass
> +igt@kms_addfb_basic@bad-pitch-63,pass
> +igt@kms_addfb_basic@bad-pitch-128,pass
> +igt@kms_addfb_basic@bad-pitch-256,pass
> +igt@kms_addfb_basic@bad-pitch-1024,pass
> +igt@kms_addfb_basic@bad-pitch-999,pass
> +igt@kms_addfb_basic@bad-pitch-65536,pass
> +igt@kms_addfb_basic@size-max,pass
> +igt@kms_addfb_basic@too-wide,pass
> +igt@kms_addfb_basic@too-high,dmesg-warn
> +igt@kms_addfb_basic@bo-too-small,pass
> +igt@kms_addfb_basic@small-bo,pass
> +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> +igt@kms_addfb_basic@addfb25-bad-modifier,fail
> +igt@kms_addfb_basic@invalid-get-prop-any,pass
> +igt@kms_addfb_basic@invalid-get-prop,pass
> +igt@kms_addfb_basic@invalid-set-prop-any,pass
> +igt@kms_addfb_basic@invalid-set-prop,pass
> +igt@kms_addfb_basic@master-rmfb,pass
> +igt@kms_atomic@plane-overlay-legacy,skip
> +igt@kms_atomic@plane-primary-legacy,skip
> +igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
> +igt@kms_atomic@plane-immutable-zpos,skip
> +igt@kms_atomic@test-only,skip
> +igt@kms_atomic@plane-cursor-legacy,skip
> +igt@kms_atomic@plane-invalid-params,skip
> +igt@kms_atomic@crtc-invalid-params,skip
> +igt@kms_atomic@atomic-invalid-params,skip
> +igt@kms_atomic@atomic_plane_damage,skip
> +igt@kms_atomic_interruptible@legacy-setmode,skip
> +igt@kms_atomic_interruptible@atomic-setmode,skip
> +igt@kms_atomic_interruptible@legacy-dpms,skip
> +igt@kms_atomic_interruptible@legacy-pageflip,skip
> +igt@kms_atomic_interruptible@legacy-cursor,skip
> +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> +igt@kms_content_protection@lic,skip
> +igt@kms_flip_event_leak,skip
> +igt@kms_getfb@getfb-handle-zero,pass
> +igt@kms_getfb@getfb-handle-valid,pass
> +igt@kms_getfb@getfb-handle-closed,pass
> +igt@kms_getfb@getfb-handle-not-fb,pass
> +igt@kms_getfb@getfb-addfb-different-handles,pass
> +igt@kms_getfb@getfb-repeated-different-handles,pass
> +igt@kms_getfb@getfb2-handle-zero,pass
> +igt@kms_getfb@getfb2-handle-closed,pass
> +igt@kms_getfb@getfb2-handle-not-fb,pass
> +igt@kms_getfb@getfb2-into-addfb2,pass
> +igt@kms_getfb@getfb-handle-protection,pass
> +igt@kms_getfb@getfb2-handle-protection,pass
> +igt@kms_hdmi_inject@inject-4k,fail
> +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
> +igt@kms_pipe_crc_basic@bad-source,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
> +igt@kms_prop_blob@basic,pass
> +igt@kms_prop_blob@blob-prop-core,pass
> +igt@kms_prop_blob@blob-prop-validate,pass
> +igt@kms_prop_blob@blob-prop-lifetime,pass
> +igt@kms_prop_blob@blob-multiple,pass
> +igt@kms_prop_blob@invalid-get-prop-any,pass
> +igt@kms_prop_blob@invalid-get-prop,pass
> +igt@kms_prop_blob@invalid-set-prop-any,pass
> +igt@kms_prop_blob@invalid-set-prop,pass
> +igt@kms_rmfb@rmfb-ioctl,skip
> +igt@kms_rmfb@close-fd,skip
> +igt@kms_setmode@basic,skip
> +igt@msm_mapping@sqefw,skip
> +igt@msm_mapping@shadow,skip
> +igt@msm_recovery@hangcheck,skip
> +igt@msm_recovery@gpu-fault,skip
> +igt@msm_recovery@iova-fault,skip
> +igt@msm_submit@empty-submit,pass
> +igt@msm_submit@invalid-queue-submit,pass
> +igt@msm_submit@invalid-flags-submit,pass
> +igt@msm_submit@invalid-in-fence-submit,pass
> +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> +igt@msm_submit@valid-submit,pass
> +igt@kms_sysfs_edid_timing,pass
> +igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
> +igt@kms_vblank@invalid,skip
> +igt@kms_vblank@crtc-id,skip
> +igt@kms_vblank@pipe-a-query-idle,skip
> +igt@kms_vblank@pipe-a-query-forked,skip
> +igt@kms_vblank@pipe-a-query-busy,skip
> +igt@kms_vblank@pipe-a-query-forked-busy,skip
> +igt@kms_vblank@pipe-a-wait-idle,skip
> +igt@kms_vblank@pipe-a-wait-forked,skip
> +igt@kms_vblank@pipe-a-wait-busy,skip
> +igt@kms_vblank@pipe-a-wait-forked-busy,skip
> +igt@kms_vblank@pipe-a-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-b-accuracy-idle,skip
> +igt@kms_vblank@pipe-b-query-idle,skip
> +igt@kms_vblank@pipe-b-query-forked,skip
> +igt@kms_vblank@pipe-b-query-busy,skip
> +igt@kms_vblank@pipe-b-query-forked-busy,skip
> +igt@kms_vblank@pipe-b-wait-idle,skip
> +igt@kms_vblank@pipe-b-wait-forked,skip
> +igt@kms_vblank@pipe-b-wait-busy,skip
> +igt@kms_vblank@pipe-b-wait-forked-busy,skip
> +igt@kms_vblank@pipe-b-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
> diff --git a/drivers/gpu/drm/msm/ci/msm_apq8096_results.txt b/drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
> new file mode 100644
> index 000000000000..6f10941e5626
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
> @@ -0,0 +1,140 @@
> +igt@core_auth@getclient-simple,pass
> +igt@core_auth@getclient-master-drop,pass
> +igt@core_auth@basic-auth,pass
> +igt@core_auth@many-magics,pass
> +igt@core_getclient,pass
> +igt@core_getstats,pass
> +igt@core_getversion,pass
> +igt@core_setmaster_vs_auth,pass
> +igt@drm_read@invalid-buffer,skip
> +igt@drm_read@fault-buffer,skip
> +igt@drm_read@empty-block,skip
> +igt@drm_read@empty-nonblock,skip
> +igt@drm_read@short-buffer-block,skip
> +igt@drm_read@short-buffer-nonblock,skip
> +igt@drm_read@short-buffer-wakeup,skip
> +igt@kms_addfb_basic@unused-handle,pass
> +igt@kms_addfb_basic@unused-pitches,pass
> +igt@kms_addfb_basic@unused-offsets,pass
> +igt@kms_addfb_basic@unused-modifier,pass
> +igt@kms_addfb_basic@legacy-format,dmesg-warn
> +igt@kms_addfb_basic@no-handle,pass
> +igt@kms_addfb_basic@basic,pass
> +igt@kms_addfb_basic@bad-pitch-0,pass
> +igt@kms_addfb_basic@bad-pitch-32,pass
> +igt@kms_addfb_basic@bad-pitch-63,pass
> +igt@kms_addfb_basic@bad-pitch-128,pass
> +igt@kms_addfb_basic@bad-pitch-256,pass
> +igt@kms_addfb_basic@bad-pitch-1024,pass
> +igt@kms_addfb_basic@bad-pitch-999,pass
> +igt@kms_addfb_basic@bad-pitch-65536,pass
> +igt@kms_addfb_basic@size-max,pass
> +igt@kms_addfb_basic@too-wide,pass
> +igt@kms_addfb_basic@too-high,dmesg-warn
> +igt@kms_addfb_basic@bo-too-small,pass
> +igt@kms_addfb_basic@small-bo,pass
> +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> +igt@kms_addfb_basic@addfb25-bad-modifier,fail
> +igt@kms_addfb_basic@invalid-get-prop-any,pass
> +igt@kms_addfb_basic@invalid-get-prop,pass
> +igt@kms_addfb_basic@invalid-set-prop-any,pass
> +igt@kms_addfb_basic@invalid-set-prop,pass
> +igt@kms_addfb_basic@master-rmfb,pass
> +igt@kms_atomic@plane-overlay-legacy,skip
> +igt@kms_atomic@plane-primary-legacy,skip
> +igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
> +igt@kms_atomic@plane-immutable-zpos,skip
> +igt@kms_atomic@test-only,skip
> +igt@kms_atomic@plane-cursor-legacy,skip
> +igt@kms_atomic@plane-invalid-params,skip
> +igt@kms_atomic@crtc-invalid-params,skip
> +igt@kms_atomic@atomic-invalid-params,skip
> +igt@kms_atomic@atomic_plane_damage,skip
> +igt@kms_atomic_interruptible@legacy-setmode,skip
> +igt@kms_atomic_interruptible@atomic-setmode,skip
> +igt@kms_atomic_interruptible@legacy-dpms,skip
> +igt@kms_atomic_interruptible@legacy-pageflip,skip
> +igt@kms_atomic_interruptible@legacy-cursor,skip
> +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> +igt@kms_content_protection@lic,skip
> +igt@kms_flip_event_leak,skip
> +igt@kms_getfb@getfb-handle-zero,pass
> +igt@kms_getfb@getfb-handle-valid,pass
> +igt@kms_getfb@getfb-handle-closed,pass
> +igt@kms_getfb@getfb-handle-not-fb,pass
> +igt@kms_getfb@getfb-addfb-different-handles,pass
> +igt@kms_getfb@getfb-repeated-different-handles,pass
> +igt@kms_getfb@getfb2-handle-zero,pass
> +igt@kms_getfb@getfb2-handle-closed,pass
> +igt@kms_getfb@getfb2-handle-not-fb,pass
> +igt@kms_getfb@getfb2-into-addfb2,pass
> +igt@kms_getfb@getfb-handle-protection,pass
> +igt@kms_getfb@getfb2-handle-protection,pass
> +igt@kms_hdmi_inject@inject-4k,dmesg-warn
> +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
> +igt@kms_pipe_crc_basic@bad-source,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
> +igt@kms_prop_blob@basic,pass
> +igt@kms_prop_blob@blob-prop-core,pass
> +igt@kms_prop_blob@blob-prop-validate,pass
> +igt@kms_prop_blob@blob-prop-lifetime,pass
> +igt@kms_prop_blob@blob-multiple,pass
> +igt@kms_prop_blob@invalid-get-prop-any,pass
> +igt@kms_prop_blob@invalid-get-prop,pass
> +igt@kms_prop_blob@invalid-set-prop-any,pass
> +igt@kms_prop_blob@invalid-set-prop,pass
> +igt@kms_rmfb@rmfb-ioctl,skip
> +igt@kms_rmfb@close-fd,skip
> +igt@kms_setmode@basic,skip
> +igt@msm_mapping@sqefw,skip
> +igt@msm_mapping@shadow,skip
> +igt@msm_recovery@hangcheck,skip
> +igt@msm_recovery@gpu-fault,skip
> +igt@msm_recovery@iova-fault,skip
> +igt@msm_submit@empty-submit,pass
> +igt@msm_submit@invalid-queue-submit,pass
> +igt@msm_submit@invalid-flags-submit,pass
> +igt@msm_submit@invalid-in-fence-submit,pass
> +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> +igt@msm_submit@valid-submit,pass
> +igt@kms_sysfs_edid_timing,pass
> +igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
> +igt@kms_vblank@invalid,skip
> +igt@kms_vblank@crtc-id,skip
> +igt@kms_vblank@pipe-a-query-idle,skip
> +igt@kms_vblank@pipe-a-query-forked,skip
> +igt@kms_vblank@pipe-a-query-busy,skip
> +igt@kms_vblank@pipe-a-query-forked-busy,skip
> +igt@kms_vblank@pipe-a-wait-idle,skip
> +igt@kms_vblank@pipe-a-wait-forked,skip
> +igt@kms_vblank@pipe-a-wait-busy,skip
> +igt@kms_vblank@pipe-a-wait-forked-busy,skip
> +igt@kms_vblank@pipe-a-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-b-accuracy-idle,skip
> +igt@kms_vblank@pipe-b-query-idle,skip
> +igt@kms_vblank@pipe-b-query-forked,skip
> +igt@kms_vblank@pipe-b-query-busy,skip
> +igt@kms_vblank@pipe-b-query-forked-busy,skip
> +igt@kms_vblank@pipe-b-wait-idle,skip
> +igt@kms_vblank@pipe-b-wait-forked,skip
> +igt@kms_vblank@pipe-b-wait-busy,skip
> +igt@kms_vblank@pipe-b-wait-forked-busy,skip
> +igt@kms_vblank@pipe-b-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
> diff --git a/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> new file mode 100644
> index 000000000000..01f7b4b399b5
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> @@ -0,0 +1,141 @@
> +igt@core_auth@getclient-simple,dmesg-warn
> +igt@core_auth@getclient-master-drop,pass
> +igt@core_auth@basic-auth,pass
> +igt@core_auth@many-magics,pass
> +igt@core_getclient,pass
> +igt@core_getstats,pass
> +igt@core_getversion,pass
> +igt@core_setmaster_vs_auth,pass
> +igt@drm_read@invalid-buffer,pass
> +igt@drm_read@fault-buffer,pass
> +igt@drm_read@empty-block,pass
> +igt@drm_read@empty-nonblock,pass
> +igt@drm_read@short-buffer-block,pass
> +igt@drm_read@short-buffer-nonblock,pass
> +igt@drm_read@short-buffer-wakeup,pass
> +igt@kms_addfb_basic@unused-handle,pass
> +igt@kms_addfb_basic@unused-pitches,pass
> +igt@kms_addfb_basic@unused-offsets,pass
> +igt@kms_addfb_basic@unused-modifier,pass
> +igt@kms_addfb_basic@legacy-format,dmesg-warn
> +igt@kms_addfb_basic@no-handle,pass
> +igt@kms_addfb_basic@basic,pass
> +igt@kms_addfb_basic@bad-pitch-0,pass
> +igt@kms_addfb_basic@bad-pitch-32,pass
> +igt@kms_addfb_basic@bad-pitch-63,pass
> +igt@kms_addfb_basic@bad-pitch-128,pass
> +igt@kms_addfb_basic@bad-pitch-256,pass
> +igt@kms_addfb_basic@bad-pitch-1024,pass
> +igt@kms_addfb_basic@bad-pitch-999,pass
> +igt@kms_addfb_basic@bad-pitch-65536,pass
> +igt@kms_addfb_basic@size-max,pass
> +igt@kms_addfb_basic@too-wide,pass
> +igt@kms_addfb_basic@too-high,dmesg-warn
> +igt@kms_addfb_basic@bo-too-small,pass
> +igt@kms_addfb_basic@small-bo,pass
> +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> +igt@kms_addfb_basic@addfb25-bad-modifier,dmesg-warn
> +igt@kms_addfb_basic@invalid-get-prop-any,pass
> +igt@kms_addfb_basic@invalid-get-prop,pass
> +igt@kms_addfb_basic@invalid-set-prop-any,pass
> +igt@kms_addfb_basic@invalid-set-prop,pass
> +igt@kms_addfb_basic@master-rmfb,pass
> +igt@kms_atomic@plane-overlay-legacy,skip
> +igt@kms_atomic@plane-primary-legacy,pass
> +igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
> +igt@kms_atomic@plane-immutable-zpos,pass
> +igt@kms_atomic@test-only,pass
> +igt@kms_atomic@plane-cursor-legacy,pass
> +igt@kms_atomic@plane-invalid-params,pass
> +igt@kms_atomic@crtc-invalid-params,pass
> +igt@kms_atomic@atomic-invalid-params,pass
> +igt@kms_atomic@atomic_plane_damage,pass
> +igt@kms_atomic_interruptible@legacy-setmode,skip
> +igt@kms_atomic_interruptible@atomic-setmode,skip
> +igt@kms_atomic_interruptible@legacy-dpms,skip
> +igt@kms_atomic_interruptible@legacy-pageflip,skip
> +igt@kms_atomic_interruptible@legacy-cursor,skip
> +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> +igt@kms_content_protection@lic,skip
> +igt@kms_flip_event_leak,pass
> +igt@kms_getfb@getfb-handle-zero,pass
> +igt@kms_getfb@getfb-handle-valid,pass
> +igt@kms_getfb@getfb-handle-closed,pass
> +igt@kms_getfb@getfb-handle-not-fb,pass
> +igt@kms_getfb@getfb-addfb-different-handles,pass
> +igt@kms_getfb@getfb-repeated-different-handles,pass
> +igt@kms_getfb@getfb2-handle-zero,pass
> +igt@kms_getfb@getfb2-handle-closed,pass
> +igt@kms_getfb@getfb2-handle-not-fb,pass
> +igt@kms_getfb@getfb2-into-addfb2,pass
> +igt@kms_getfb@getfb-handle-protection,pass
> +igt@kms_getfb@getfb2-handle-protection,pass
> +igt@kms_hdmi_inject@inject-4k,skip
> +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
> +igt@kms_pipe_crc_basic@bad-source,pass
> +igt@kms_pipe_crc_basic@read-crc-pipe-a,pass
> +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,pass
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,pass
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,pass
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,pass
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,pass
> +igt@kms_pipe_crc_basic@read-crc-pipe-b,pass
> +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,pass
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,pass
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,pass
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,pass
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,pass
> +igt@kms_prop_blob@basic,pass
> +igt@kms_prop_blob@blob-prop-core,pass
> +igt@kms_prop_blob@blob-prop-validate,pass
> +igt@kms_prop_blob@blob-prop-lifetime,pass
> +igt@kms_prop_blob@blob-multiple,pass
> +igt@kms_prop_blob@invalid-get-prop-any,pass
> +igt@kms_prop_blob@invalid-get-prop,pass
> +igt@kms_prop_blob@invalid-set-prop-any,pass
> +igt@kms_prop_blob@invalid-set-prop,pass
> +igt@kms_rmfb@rmfb-ioctl,pass
> +igt@kms_rmfb@close-fd,fail
> +igt@kms_setmode@basic@pipe-a-edp-1,pass
> +igt@kms_setmode@basic@pipe-b-edp-1,pass
> +igt@msm_mapping@sqefw,dmesg-fail
> +igt@msm_mapping@shadow,dmesg-fail
> +igt@msm_recovery@hangcheck,dmesg-warn
> +igt@msm_recovery@gpu-fault,dmesg-warn
> +igt@msm_recovery@iova-fault,dmesg-warn
> +igt@msm_submit@empty-submit,pass
> +igt@msm_submit@invalid-queue-submit,pass
> +igt@msm_submit@invalid-flags-submit,pass
> +igt@msm_submit@invalid-in-fence-submit,pass
> +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> +igt@msm_submit@valid-submit,pass
> +igt@kms_sysfs_edid_timing,pass
> +igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,pass
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,fail
> +igt@kms_vblank@invalid,pass
> +igt@kms_vblank@crtc-id,pass
> +igt@kms_vblank@pipe-a-query-idle,pass
> +igt@kms_vblank@pipe-a-query-forked,pass
> +igt@kms_vblank@pipe-a-query-busy,pass
> +igt@kms_vblank@pipe-a-query-forked-busy,pass
> +igt@kms_vblank@pipe-a-wait-idle,pass
> +igt@kms_vblank@pipe-a-wait-forked,pass
> +igt@kms_vblank@pipe-a-wait-busy,pass
> +igt@kms_vblank@pipe-a-wait-forked-busy,pass
> +igt@kms_vblank@pipe-a-ts-continuation-idle,pass
> +igt@kms_vblank@pipe-a-ts-continuation-modeset,pass
> +igt@kms_vblank@pipe-b-accuracy-idle,pass
> +igt@kms_vblank@pipe-b-query-idle,pass
> +igt@kms_vblank@pipe-b-query-forked,pass
> +igt@kms_vblank@pipe-b-query-busy,pass
> +igt@kms_vblank@pipe-b-query-forked-busy,pass
> +igt@kms_vblank@pipe-b-wait-idle,pass
> +igt@kms_vblank@pipe-b-wait-forked,pass
> +igt@kms_vblank@pipe-b-wait-busy,pass
> +igt@kms_vblank@pipe-b-wait-forked-busy,pass
> +igt@kms_vblank@pipe-b-ts-continuation-idle,pass
> +igt@kms_vblank@pipe-b-ts-continuation-modeset,pass
> diff --git a/drivers/gpu/drm/msm/ci/msm_sdm845_results.txt b/drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
> new file mode 100644
> index 000000000000..3df1e5ef6d80
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
> @@ -0,0 +1,141 @@
> +igt@core_auth@getclient-simple,dmesg-warn
> +igt@core_auth@getclient-master-drop,pass
> +igt@core_auth@basic-auth,pass
> +igt@core_auth@many-magics,pass
> +igt@core_getclient,pass
> +igt@core_getstats,pass
> +igt@core_getversion,pass
> +igt@core_setmaster_vs_auth,pass
> +igt@drm_read@invalid-buffer,pass
> +igt@drm_read@fault-buffer,pass
> +igt@drm_read@empty-block,pass
> +igt@drm_read@empty-nonblock,pass
> +igt@drm_read@short-buffer-block,pass
> +igt@drm_read@short-buffer-nonblock,pass
> +igt@drm_read@short-buffer-wakeup,pass
> +igt@kms_addfb_basic@unused-handle,pass
> +igt@kms_addfb_basic@unused-pitches,pass
> +igt@kms_addfb_basic@unused-offsets,pass
> +igt@kms_addfb_basic@unused-modifier,pass
> +igt@kms_addfb_basic@legacy-format,dmesg-warn
> +igt@kms_addfb_basic@no-handle,pass
> +igt@kms_addfb_basic@basic,pass
> +igt@kms_addfb_basic@bad-pitch-0,pass
> +igt@kms_addfb_basic@bad-pitch-32,pass
> +igt@kms_addfb_basic@bad-pitch-63,pass
> +igt@kms_addfb_basic@bad-pitch-128,pass
> +igt@kms_addfb_basic@bad-pitch-256,pass
> +igt@kms_addfb_basic@bad-pitch-1024,pass
> +igt@kms_addfb_basic@bad-pitch-999,pass
> +igt@kms_addfb_basic@bad-pitch-65536,pass
> +igt@kms_addfb_basic@size-max,pass
> +igt@kms_addfb_basic@too-wide,pass
> +igt@kms_addfb_basic@too-high,dmesg-warn
> +igt@kms_addfb_basic@bo-too-small,pass
> +igt@kms_addfb_basic@small-bo,pass
> +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> +igt@kms_addfb_basic@addfb25-bad-modifier,dmesg-warn
> +igt@kms_addfb_basic@invalid-get-prop-any,pass
> +igt@kms_addfb_basic@invalid-get-prop,pass
> +igt@kms_addfb_basic@invalid-set-prop-any,pass
> +igt@kms_addfb_basic@invalid-set-prop,pass
> +igt@kms_addfb_basic@master-rmfb,pass
> +igt@kms_atomic@plane-overlay-legacy,dmesg-warn
> +igt@kms_atomic@plane-primary-legacy,dmesg-warn
> +igt@kms_atomic@plane-primary-overlay-mutable-zpos,dmesg-warn
> +igt@kms_atomic@plane-immutable-zpos,dmesg-warn
> +igt@kms_atomic@test-only,dmesg-warn
> +igt@kms_atomic@plane-cursor-legacy,dmesg-warn
> +igt@kms_atomic@plane-invalid-params,dmesg-warn
> +igt@kms_atomic@crtc-invalid-params,dmesg-warn
> +igt@kms_atomic@atomic-invalid-params,dmesg-warn
> +igt@kms_atomic@atomic_plane_damage,dmesg-warn
> +igt@kms_atomic_interruptible@legacy-setmode,skip
> +igt@kms_atomic_interruptible@atomic-setmode,skip
> +igt@kms_atomic_interruptible@legacy-dpms,skip
> +igt@kms_atomic_interruptible@legacy-pageflip,skip
> +igt@kms_atomic_interruptible@legacy-cursor,skip
> +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> +igt@kms_content_protection@lic,skip
> +igt@kms_flip_event_leak,dmesg-warn
> +igt@kms_getfb@getfb-handle-zero,pass
> +igt@kms_getfb@getfb-handle-valid,pass
> +igt@kms_getfb@getfb-handle-closed,pass
> +igt@kms_getfb@getfb-handle-not-fb,pass
> +igt@kms_getfb@getfb-addfb-different-handles,pass
> +igt@kms_getfb@getfb-repeated-different-handles,pass
> +igt@kms_getfb@getfb2-handle-zero,pass
> +igt@kms_getfb@getfb2-handle-closed,pass
> +igt@kms_getfb@getfb2-handle-not-fb,pass
> +igt@kms_getfb@getfb2-into-addfb2,pass
> +igt@kms_getfb@getfb-handle-protection,pass
> +igt@kms_getfb@getfb2-handle-protection,pass
> +igt@kms_hdmi_inject@inject-4k,skip
> +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,pass
> +igt@kms_pipe_crc_basic@bad-source,pass
> +igt@kms_pipe_crc_basic@read-crc-pipe-a,pass
> +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,pass
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,pass
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,pass
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,dmesg-warn
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,dmesg-warn
> +igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
> +igt@kms_prop_blob@basic,pass
> +igt@kms_prop_blob@blob-prop-core,pass
> +igt@kms_prop_blob@blob-prop-validate,pass
> +igt@kms_prop_blob@blob-prop-lifetime,pass
> +igt@kms_prop_blob@blob-multiple,pass
> +igt@kms_prop_blob@invalid-get-prop-any,pass
> +igt@kms_prop_blob@invalid-get-prop,pass
> +igt@kms_prop_blob@invalid-set-prop-any,pass
> +igt@kms_prop_blob@invalid-set-prop,pass
> +igt@kms_rmfb@rmfb-ioctl,pass
> +igt@kms_rmfb@close-fd,fail
> +igt@kms_setmode@basic@pipe-a-edp-1,dmesg-warn
> +igt@kms_setmode@basic,skip
> +igt@msm_mapping@sqefw,dmesg-fail
> +igt@msm_mapping@shadow,dmesg-fail
> +igt@msm_recovery@hangcheck,dmesg-warn
> +igt@msm_recovery@gpu-fault,dmesg-warn
> +igt@msm_recovery@iova-fault,dmesg-warn
> +igt@msm_submit@empty-submit,pass
> +igt@msm_submit@invalid-queue-submit,pass
> +igt@msm_submit@invalid-flags-submit,pass
> +igt@msm_submit@invalid-in-fence-submit,pass
> +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> +igt@msm_submit@valid-submit,pass
> +igt@kms_sysfs_edid_timing,pass
> +igt@kms_universal_plane@universal-plane-pipe-a-functional,dmesg-fail
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,dmesg-warn
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
> +igt@kms_vblank@invalid,dmesg-warn
> +igt@kms_vblank@crtc-id,dmesg-warn
> +igt@kms_vblank@pipe-a-query-idle,dmesg-warn
> +igt@kms_vblank@pipe-a-query-forked,dmesg-warn
> +igt@kms_vblank@pipe-a-query-busy,dmesg-warn
> +igt@kms_vblank@pipe-a-query-forked-busy,dmesg-warn
> +igt@kms_vblank@pipe-a-wait-idle,dmesg-warn
> +igt@kms_vblank@pipe-a-wait-forked,dmesg-warn
> +igt@kms_vblank@pipe-a-wait-busy,dmesg-warn
> +igt@kms_vblank@pipe-a-wait-forked-busy,dmesg-warn
> +igt@kms_vblank@pipe-a-ts-continuation-idle,dmesg-warn
> +igt@kms_vblank@pipe-a-ts-continuation-modeset,dmesg-warn
> +igt@kms_vblank@pipe-b-accuracy-idle,skip
> +igt@kms_vblank@pipe-b-query-idle,skip
> +igt@kms_vblank@pipe-b-query-forked,skip
> +igt@kms_vblank@pipe-b-query-busy,skip
> +igt@kms_vblank@pipe-b-query-forked-busy,skip
> +igt@kms_vblank@pipe-b-wait-idle,skip
> +igt@kms_vblank@pipe-b-wait-forked,skip
> +igt@kms_vblank@pipe-b-wait-busy,skip
> +igt@kms_vblank@pipe-b-wait-forked-busy,skip
> +igt@kms_vblank@pipe-b-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
> --
> 2.31.1
>

^ permalink raw reply	[flat|nested] 49+ messages in thread

* [RFC v3] drm/msm: Add initial ci/ subdirectory
  2022-05-10 14:13 ` [RFC v2] " Tomeu Vizoso
  2022-05-10 19:39   ` [Freedreno] " Jessica Zhang
  2022-05-11  5:06   ` Adding CI results to the kernel tree was " Dave Airlie
@ 2022-05-11  6:15   ` Tomeu Vizoso
  2022-05-11 13:20     ` Rob Clark
  2022-05-17  8:16     ` [RFC v4] drm: " Tomeu Vizoso
  2 siblings, 2 replies; 49+ messages in thread
From: Tomeu Vizoso @ 2022-05-11  6:15 UTC (permalink / raw)
  To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
	David Airlie, Daniel Vetter, Jonathan Corbet, Rob Clark,
	Sean Paul, Abhinav Kumar
  Cc: Tomeu Vizoso, linux-doc, linux-arm-msm, linux-kernel, dri-devel,
	freedreno

And use it to store expectations about what the drm/msm driver is
supposed to pass in the IGT test suite.

Also include a configuration file that points to the out-of-tree CI
scripts.

By storing the test expectations along the code we can make sure both
stay in sync with each other, and so we can know when a code change
breaks those expectations.

This will allow all contributors to drm/msm to reuse the infrastructure
already in gitlab.freedesktop.org to test the driver on several
generations of the hardware.

v2:
  - Fix names of result expectation files to match SoC
  - Don't execute tests that are going to skip on all boards

v3:
  - Remove tracking of dmesg output during test execution

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
---
 Documentation/gpu/msm_automated_testing.rst   |  70 +++++++++
 drivers/gpu/drm/msm/ci/gitlab-ci.yml          |  11 ++
 drivers/gpu/drm/msm/ci/msm.testlist           | 144 ++++++++++++++++++
 .../gpu/drm/msm/ci/msm_apq8016_results.txt    | 141 +++++++++++++++++
 .../gpu/drm/msm/ci/msm_apq8096_results.txt    | 141 +++++++++++++++++
 drivers/gpu/drm/msm/ci/msm_sc7180_results.txt | 142 +++++++++++++++++
 drivers/gpu/drm/msm/ci/msm_sdm845_results.txt | 142 +++++++++++++++++
 7 files changed, 791 insertions(+)
 create mode 100644 Documentation/gpu/msm_automated_testing.rst
 create mode 100644 drivers/gpu/drm/msm/ci/gitlab-ci.yml
 create mode 100644 drivers/gpu/drm/msm/ci/msm.testlist
 create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
 create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
 create mode 100644 drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
 create mode 100644 drivers/gpu/drm/msm/ci/msm_sdm845_results.txt

diff --git a/Documentation/gpu/msm_automated_testing.rst b/Documentation/gpu/msm_automated_testing.rst
new file mode 100644
index 000000000000..fe59474569c2
--- /dev/null
+++ b/Documentation/gpu/msm_automated_testing.rst
@@ -0,0 +1,70 @@
+.. SPDX-License-Identifier: GPL-2.0+
+
+=========================================
+Automated testing of MSM DRM driver
+=========================================
+
+
+Introduction
+============
+
+Making sure that changes to a driver don't introduce regressions can be very time consuming when lots of different hardware configurations need to be tested. Moreover, it isn't practical for each person interested in this testing to have to acquire and maintain what can be a considerable amount of hardware.
+
+Also, it is desirable for developers to check for regressions in their code by themselves, instead of relying on the maintainer finding them and then reporting back.
+
+There are facilities in gitlab.freedesktop.org to automatically test Mesa that can be used as well for testing DRM drivers such as drm/msm. This document explains how people interested in testing the drm/msm driver can use this shared infrastructure to save quite some time and effort.
+
+
+Relevant files
+==============
+
+drivers/gpu/drm/msm/ci/gitlab-ci.yml
+------------------------------------
+
+Specifies the specific version of the scripts to be used. GitLab CI will use the values defined in this file to fetch the right scripts.
+
+
+drivers/gpu/drm/msm/ci/msm.testlist
+-----------------------------------
+
+Specifies the tests that the current code is expected to be able to reliably run. These tests are expected to not hang the DUT (device under testing) when running on the revision they belong to, and to give consistent results.
+
+
+drivers/gpu/drm/msm/ci/msm_*_results.txt
+----------------------------------------
+
+Specifies the expected results of running this specific kernel revision on a given hardware configuration.
+
+
+How to enable automated testing on your tree
+============================================
+
+1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one yet
+
+2. In your kernel repo's configuration (eg. https://gitlab.freedesktop.org/tomeu/linux/-/settings/ci_cd), change the CI/CD configuration file from .gitlab-ci.yml to drivers/gpu/drm/msm/ci/gitlab-ci.yml.
+
+3. Next time you push to this repository, you will see a CI pipeline being created (eg. https://gitlab.freedesktop.org/tomeu/linux/-/pipelines)
+
+4. The various jobs will be run and when the pipeline is finished, all jobs should be green unless a regression has been found.
+
+
+How to update test expectations
+===============================
+
+If your changes to the code fix any tests, you will have to update one or more of the files in drivers/gpu/drm/msm/ci/msm_*_results.txt, for each of the test platforms affected by the change.
+
+If you have run a pipeline and it failed because of a mismatched test result, you will have been offered a patch at the end of the run that you can apply after reviewing it.
+
+
+How to expand coverage
+======================
+
+If your code changes makes it possible to run more tests (by solving reliability issues, for example), more tests can be added to this list, and then the expected results updated with the patch file that will be printed at the end of each job.
+
+If there is a need for updating the version of IGT being used (maybe you have added more tests to it), follow the instructions at https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/tree/msm#upreving-igt.
+
+
+How to test your changes to the scripts
+==========================================
+
+For testing changes to the scripts in the drm-ci repo, change the DRM_CI_PROJECT_PATH variable in drivers/gpu/drm/msm/ci/gitlab-ci.yml to match your fork of the project (eg. tomeu/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
\ No newline at end of file
diff --git a/drivers/gpu/drm/msm/ci/gitlab-ci.yml b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
new file mode 100644
index 000000000000..9b7caa7fcab2
--- /dev/null
+++ b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
@@ -0,0 +1,11 @@
+variables:
+  # Change this to use your fork of drm-ci
+  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
+  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha msm
+
+include:
+  - project: *drm-ci-project-path
+    ref: *drm-ci-commit-sha
+    file:
+      - '.msm-gitlab-ci.yml'
+      - '.gitlab-ci.yml'
diff --git a/drivers/gpu/drm/msm/ci/msm.testlist b/drivers/gpu/drm/msm/ci/msm.testlist
new file mode 100644
index 000000000000..568051b1dc91
--- /dev/null
+++ b/drivers/gpu/drm/msm/ci/msm.testlist
@@ -0,0 +1,144 @@
+# Keep alphabetically sorted by default
+
+igt@core_auth@getclient-simple
+igt@core_auth@getclient-master-drop
+igt@core_auth@basic-auth
+igt@core_auth@many-magics
+igt@core_getclient
+igt@core_getstats
+igt@core_getversion
+igt@core_setmaster_vs_auth
+igt@drm_read@invalid-buffer
+igt@drm_read@fault-buffer
+igt@drm_read@empty-block
+igt@drm_read@empty-nonblock
+igt@drm_read@short-buffer-block
+igt@drm_read@short-buffer-nonblock
+igt@drm_read@short-buffer-wakeup
+igt@kms_addfb_basic@unused-handle
+igt@kms_addfb_basic@unused-pitches
+igt@kms_addfb_basic@unused-offsets
+igt@kms_addfb_basic@unused-modifier
+igt@kms_addfb_basic@legacy-format
+igt@kms_addfb_basic@no-handle
+igt@kms_addfb_basic@basic
+igt@kms_addfb_basic@bad-pitch-0
+igt@kms_addfb_basic@bad-pitch-32
+igt@kms_addfb_basic@bad-pitch-63
+igt@kms_addfb_basic@bad-pitch-128
+igt@kms_addfb_basic@bad-pitch-256
+igt@kms_addfb_basic@bad-pitch-1024
+igt@kms_addfb_basic@bad-pitch-999
+igt@kms_addfb_basic@bad-pitch-65536
+igt@kms_addfb_basic@size-max
+igt@kms_addfb_basic@too-wide
+igt@kms_addfb_basic@too-high
+igt@kms_addfb_basic@bo-too-small
+igt@kms_addfb_basic@small-bo
+igt@kms_addfb_basic@addfb25-modifier-no-flag
+igt@kms_addfb_basic@addfb25-bad-modifier
+igt@kms_addfb_basic@invalid-get-prop-any
+igt@kms_addfb_basic@invalid-get-prop
+igt@kms_addfb_basic@invalid-set-prop-any
+igt@kms_addfb_basic@invalid-set-prop
+igt@kms_addfb_basic@master-rmfb
+igt@kms_atomic@plane-overlay-legacy
+igt@kms_atomic@plane-primary-legacy
+igt@kms_atomic@plane-primary-overlay-mutable-zpos
+igt@kms_atomic@plane-immutable-zpos
+igt@kms_atomic@test-only
+igt@kms_atomic@plane-cursor-legacy
+igt@kms_atomic@plane-invalid-params
+igt@kms_atomic@crtc-invalid-params
+igt@kms_atomic@atomic-invalid-params
+igt@kms_atomic@atomic_plane_damage
+igt@kms_atomic_interruptible@legacy-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@atomic-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-dpms@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-pageflip@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-cursor@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-primary@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-cursor@pipe-a-edp-1
+igt@kms_content_protection@LIC
+igt@kms_flip_event_leak
+igt@kms_getfb@getfb-handle-zero
+igt@kms_getfb@getfb-handle-valid
+igt@kms_getfb@getfb-handle-closed
+igt@kms_getfb@getfb-handle-not-fb
+igt@kms_getfb@getfb-addfb-different-handles
+igt@kms_getfb@getfb-repeated-different-handles
+igt@kms_getfb@getfb2-handle-zero
+igt@kms_getfb@getfb2-handle-closed
+igt@kms_getfb@getfb2-handle-not-fb
+igt@kms_getfb@getfb2-into-addfb2
+igt@kms_getfb@getfb-handle-protection
+igt@kms_getfb@getfb2-handle-protection
+igt@kms_hdmi_inject@inject-4k
+igt@kms_multipipe_modeset@basic-max-pipe-crc-check
+igt@kms_pipe_crc_basic@bad-source
+igt@kms_pipe_crc_basic@read-crc-pipe-a
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a
+igt@kms_pipe_crc_basic@read-crc-pipe-b
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b
+igt@kms_prop_blob@basic
+igt@kms_prop_blob@blob-prop-core
+igt@kms_prop_blob@blob-prop-validate
+igt@kms_prop_blob@blob-prop-lifetime
+igt@kms_prop_blob@blob-multiple
+igt@kms_prop_blob@invalid-get-prop-any
+igt@kms_prop_blob@invalid-get-prop
+igt@kms_prop_blob@invalid-set-prop-any
+igt@kms_prop_blob@invalid-set-prop
+igt@kms_rmfb@rmfb-ioctl
+igt@kms_rmfb@close-fd
+igt@kms_setmode@basic@pipe-a-edp-1
+igt@kms_setmode@basic@pipe-b-edp-1
+igt@msm_mapping@ring
+igt@msm_mapping@sqefw
+igt@msm_mapping@shadow
+igt@msm_recovery@hangcheck
+igt@msm_recovery@gpu-fault
+igt@msm_recovery@iova-fault
+igt@msm_submit@empty-submit
+igt@msm_submit@invalid-queue-submit
+igt@msm_submit@invalid-flags-submit
+igt@msm_submit@invalid-in-fence-submit
+igt@msm_submit@invalid-duplicate-bo-submit
+igt@msm_submit@invalid-cmd-idx-submit
+igt@msm_submit@invalid-cmd-type-submit
+igt@msm_submit@valid-submit
+igt@kms_sysfs_edid_timing
+igt@kms_universal_plane@universal-plane-pipe-a-functional
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b
+igt@kms_vblank@invalid
+igt@kms_vblank@crtc-id
+igt@kms_vblank@pipe-a-query-idle
+igt@kms_vblank@pipe-a-query-forked
+igt@kms_vblank@pipe-a-query-busy
+igt@kms_vblank@pipe-a-query-forked-busy
+igt@kms_vblank@pipe-a-wait-idle
+igt@kms_vblank@pipe-a-wait-forked
+igt@kms_vblank@pipe-a-wait-busy
+igt@kms_vblank@pipe-a-wait-forked-busy
+igt@kms_vblank@pipe-a-ts-continuation-idle
+igt@kms_vblank@pipe-a-ts-continuation-modeset
+igt@kms_vblank@pipe-b-accuracy-idle
+igt@kms_vblank@pipe-b-query-idle
+igt@kms_vblank@pipe-b-query-forked
+igt@kms_vblank@pipe-b-query-busy
+igt@kms_vblank@pipe-b-query-forked-busy
+igt@kms_vblank@pipe-b-wait-idle
+igt@kms_vblank@pipe-b-wait-forked
+igt@kms_vblank@pipe-b-wait-busy
+igt@kms_vblank@pipe-b-wait-forked-busy
+igt@kms_vblank@pipe-b-ts-continuation-idle
+igt@kms_vblank@pipe-b-ts-continuation-modeset
diff --git a/drivers/gpu/drm/msm/ci/msm_apq8016_results.txt b/drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
new file mode 100644
index 000000000000..cb28f9d0da84
--- /dev/null
+++ b/drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
@@ -0,0 +1,141 @@
+igt@core_auth@getclient-simple,pass
+igt@core_auth@getclient-master-drop,pass
+igt@core_auth@basic-auth,pass
+igt@core_auth@many-magics,pass
+igt@core_getclient,pass
+igt@core_getstats,pass
+igt@core_getversion,pass
+igt@core_setmaster_vs_auth,pass
+igt@drm_read@invalid-buffer,skip
+igt@drm_read@fault-buffer,skip
+igt@drm_read@empty-block,skip
+igt@drm_read@empty-nonblock,skip
+igt@drm_read@short-buffer-block,skip
+igt@drm_read@short-buffer-nonblock,skip
+igt@drm_read@short-buffer-wakeup,skip
+igt@kms_addfb_basic@unused-handle,pass
+igt@kms_addfb_basic@unused-pitches,pass
+igt@kms_addfb_basic@unused-offsets,pass
+igt@kms_addfb_basic@unused-modifier,pass
+igt@kms_addfb_basic@legacy-format,pass
+igt@kms_addfb_basic@no-handle,pass
+igt@kms_addfb_basic@basic,pass
+igt@kms_addfb_basic@bad-pitch-0,pass
+igt@kms_addfb_basic@bad-pitch-32,pass
+igt@kms_addfb_basic@bad-pitch-63,pass
+igt@kms_addfb_basic@bad-pitch-128,pass
+igt@kms_addfb_basic@bad-pitch-256,pass
+igt@kms_addfb_basic@bad-pitch-1024,pass
+igt@kms_addfb_basic@bad-pitch-999,pass
+igt@kms_addfb_basic@bad-pitch-65536,pass
+igt@kms_addfb_basic@size-max,pass
+igt@kms_addfb_basic@too-wide,pass
+igt@kms_addfb_basic@too-high,pass
+igt@kms_addfb_basic@bo-too-small,pass
+igt@kms_addfb_basic@small-bo,pass
+igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
+igt@kms_addfb_basic@addfb25-bad-modifier,fail
+igt@kms_addfb_basic@invalid-get-prop-any,pass
+igt@kms_addfb_basic@invalid-get-prop,pass
+igt@kms_addfb_basic@invalid-set-prop-any,pass
+igt@kms_addfb_basic@invalid-set-prop,pass
+igt@kms_addfb_basic@master-rmfb,pass
+igt@kms_atomic@plane-overlay-legacy,skip
+igt@kms_atomic@plane-primary-legacy,skip
+igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
+igt@kms_atomic@plane-immutable-zpos,skip
+igt@kms_atomic@test-only,skip
+igt@kms_atomic@plane-cursor-legacy,skip
+igt@kms_atomic@plane-invalid-params,skip
+igt@kms_atomic@crtc-invalid-params,skip
+igt@kms_atomic@atomic-invalid-params,skip
+igt@kms_atomic@atomic_plane_damage,skip
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_flip_event_leak,skip
+igt@kms_getfb@getfb-handle-zero,pass
+igt@kms_getfb@getfb-handle-valid,pass
+igt@kms_getfb@getfb-handle-closed,pass
+igt@kms_getfb@getfb-handle-not-fb,pass
+igt@kms_getfb@getfb-addfb-different-handles,pass
+igt@kms_getfb@getfb-repeated-different-handles,pass
+igt@kms_getfb@getfb2-handle-zero,pass
+igt@kms_getfb@getfb2-handle-closed,pass
+igt@kms_getfb@getfb2-handle-not-fb,pass
+igt@kms_getfb@getfb2-into-addfb2,pass
+igt@kms_getfb@getfb-handle-protection,pass
+igt@kms_getfb@getfb2-handle-protection,pass
+igt@kms_hdmi_inject@inject-4k,fail
+igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
+igt@kms_pipe_crc_basic@bad-source,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
+igt@kms_prop_blob@basic,pass
+igt@kms_prop_blob@blob-prop-core,pass
+igt@kms_prop_blob@blob-prop-validate,pass
+igt@kms_prop_blob@blob-prop-lifetime,pass
+igt@kms_prop_blob@blob-multiple,pass
+igt@kms_prop_blob@invalid-get-prop-any,pass
+igt@kms_prop_blob@invalid-get-prop,pass
+igt@kms_prop_blob@invalid-set-prop-any,pass
+igt@kms_prop_blob@invalid-set-prop,pass
+igt@kms_rmfb@rmfb-ioctl,skip
+igt@kms_rmfb@close-fd,skip
+igt@kms_setmode@basic,skip
+igt@msm_mapping@ring,fail
+igt@msm_mapping@sqefw,skip
+igt@msm_mapping@shadow,skip
+igt@msm_recovery@hangcheck,skip
+igt@msm_recovery@gpu-fault,skip
+igt@msm_recovery@iova-fault,skip
+igt@msm_submit@empty-submit,pass
+igt@msm_submit@invalid-queue-submit,pass
+igt@msm_submit@invalid-flags-submit,pass
+igt@msm_submit@invalid-in-fence-submit,pass
+igt@msm_submit@invalid-duplicate-bo-submit,pass
+igt@msm_submit@invalid-cmd-idx-submit,pass
+igt@msm_submit@invalid-cmd-type-submit,pass
+igt@msm_submit@valid-submit,pass
+igt@kms_sysfs_edid_timing,pass
+igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
+igt@kms_vblank@invalid,skip
+igt@kms_vblank@crtc-id,skip
+igt@kms_vblank@pipe-a-query-idle,skip
+igt@kms_vblank@pipe-a-query-forked,skip
+igt@kms_vblank@pipe-a-query-busy,skip
+igt@kms_vblank@pipe-a-query-forked-busy,skip
+igt@kms_vblank@pipe-a-wait-idle,skip
+igt@kms_vblank@pipe-a-wait-forked,skip
+igt@kms_vblank@pipe-a-wait-busy,skip
+igt@kms_vblank@pipe-a-wait-forked-busy,skip
+igt@kms_vblank@pipe-a-ts-continuation-idle,skip
+igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-b-accuracy-idle,skip
+igt@kms_vblank@pipe-b-query-idle,skip
+igt@kms_vblank@pipe-b-query-forked,skip
+igt@kms_vblank@pipe-b-query-busy,skip
+igt@kms_vblank@pipe-b-query-forked-busy,skip
+igt@kms_vblank@pipe-b-wait-idle,skip
+igt@kms_vblank@pipe-b-wait-forked,skip
+igt@kms_vblank@pipe-b-wait-busy,skip
+igt@kms_vblank@pipe-b-wait-forked-busy,skip
+igt@kms_vblank@pipe-b-ts-continuation-idle,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
diff --git a/drivers/gpu/drm/msm/ci/msm_apq8096_results.txt b/drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
new file mode 100644
index 000000000000..67d41d0ba15b
--- /dev/null
+++ b/drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
@@ -0,0 +1,141 @@
+igt@core_auth@getclient-simple,pass
+igt@core_auth@getclient-master-drop,pass
+igt@core_auth@basic-auth,pass
+igt@core_auth@many-magics,pass
+igt@core_getclient,pass
+igt@core_getstats,pass
+igt@core_getversion,pass
+igt@core_setmaster_vs_auth,pass
+igt@drm_read@invalid-buffer,skip
+igt@drm_read@fault-buffer,skip
+igt@drm_read@empty-block,skip
+igt@drm_read@empty-nonblock,skip
+igt@drm_read@short-buffer-block,skip
+igt@drm_read@short-buffer-nonblock,skip
+igt@drm_read@short-buffer-wakeup,skip
+igt@kms_addfb_basic@unused-handle,pass
+igt@kms_addfb_basic@unused-pitches,pass
+igt@kms_addfb_basic@unused-offsets,pass
+igt@kms_addfb_basic@unused-modifier,pass
+igt@kms_addfb_basic@legacy-format,pass
+igt@kms_addfb_basic@no-handle,pass
+igt@kms_addfb_basic@basic,pass
+igt@kms_addfb_basic@bad-pitch-0,pass
+igt@kms_addfb_basic@bad-pitch-32,pass
+igt@kms_addfb_basic@bad-pitch-63,pass
+igt@kms_addfb_basic@bad-pitch-128,pass
+igt@kms_addfb_basic@bad-pitch-256,pass
+igt@kms_addfb_basic@bad-pitch-1024,pass
+igt@kms_addfb_basic@bad-pitch-999,pass
+igt@kms_addfb_basic@bad-pitch-65536,pass
+igt@kms_addfb_basic@size-max,pass
+igt@kms_addfb_basic@too-wide,pass
+igt@kms_addfb_basic@too-high,pass
+igt@kms_addfb_basic@bo-too-small,pass
+igt@kms_addfb_basic@small-bo,pass
+igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
+igt@kms_addfb_basic@addfb25-bad-modifier,fail
+igt@kms_addfb_basic@invalid-get-prop-any,pass
+igt@kms_addfb_basic@invalid-get-prop,pass
+igt@kms_addfb_basic@invalid-set-prop-any,pass
+igt@kms_addfb_basic@invalid-set-prop,pass
+igt@kms_addfb_basic@master-rmfb,pass
+igt@kms_atomic@plane-overlay-legacy,skip
+igt@kms_atomic@plane-primary-legacy,skip
+igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
+igt@kms_atomic@plane-immutable-zpos,skip
+igt@kms_atomic@test-only,skip
+igt@kms_atomic@plane-cursor-legacy,skip
+igt@kms_atomic@plane-invalid-params,skip
+igt@kms_atomic@crtc-invalid-params,skip
+igt@kms_atomic@atomic-invalid-params,skip
+igt@kms_atomic@atomic_plane_damage,skip
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_flip_event_leak,skip
+igt@kms_getfb@getfb-handle-zero,pass
+igt@kms_getfb@getfb-handle-valid,pass
+igt@kms_getfb@getfb-handle-closed,pass
+igt@kms_getfb@getfb-handle-not-fb,pass
+igt@kms_getfb@getfb-addfb-different-handles,pass
+igt@kms_getfb@getfb-repeated-different-handles,pass
+igt@kms_getfb@getfb2-handle-zero,pass
+igt@kms_getfb@getfb2-handle-closed,pass
+igt@kms_getfb@getfb2-handle-not-fb,pass
+igt@kms_getfb@getfb2-into-addfb2,pass
+igt@kms_getfb@getfb-handle-protection,pass
+igt@kms_getfb@getfb2-handle-protection,pass
+igt@kms_hdmi_inject@inject-4k,pass
+igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
+igt@kms_pipe_crc_basic@bad-source,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
+igt@kms_prop_blob@basic,pass
+igt@kms_prop_blob@blob-prop-core,pass
+igt@kms_prop_blob@blob-prop-validate,pass
+igt@kms_prop_blob@blob-prop-lifetime,pass
+igt@kms_prop_blob@blob-multiple,pass
+igt@kms_prop_blob@invalid-get-prop-any,pass
+igt@kms_prop_blob@invalid-get-prop,pass
+igt@kms_prop_blob@invalid-set-prop-any,pass
+igt@kms_prop_blob@invalid-set-prop,pass
+igt@kms_rmfb@rmfb-ioctl,skip
+igt@kms_rmfb@close-fd,skip
+igt@kms_setmode@basic,skip
+igt@msm_mapping@ring,fail
+igt@msm_mapping@sqefw,skip
+igt@msm_mapping@shadow,skip
+igt@msm_recovery@hangcheck,skip
+igt@msm_recovery@gpu-fault,skip
+igt@msm_recovery@iova-fault,skip
+igt@msm_submit@empty-submit,pass
+igt@msm_submit@invalid-queue-submit,pass
+igt@msm_submit@invalid-flags-submit,pass
+igt@msm_submit@invalid-in-fence-submit,pass
+igt@msm_submit@invalid-duplicate-bo-submit,pass
+igt@msm_submit@invalid-cmd-idx-submit,pass
+igt@msm_submit@invalid-cmd-type-submit,pass
+igt@msm_submit@valid-submit,pass
+igt@kms_sysfs_edid_timing,pass
+igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
+igt@kms_vblank@invalid,skip
+igt@kms_vblank@crtc-id,skip
+igt@kms_vblank@pipe-a-query-idle,skip
+igt@kms_vblank@pipe-a-query-forked,skip
+igt@kms_vblank@pipe-a-query-busy,skip
+igt@kms_vblank@pipe-a-query-forked-busy,skip
+igt@kms_vblank@pipe-a-wait-idle,skip
+igt@kms_vblank@pipe-a-wait-forked,skip
+igt@kms_vblank@pipe-a-wait-busy,skip
+igt@kms_vblank@pipe-a-wait-forked-busy,skip
+igt@kms_vblank@pipe-a-ts-continuation-idle,skip
+igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-b-accuracy-idle,skip
+igt@kms_vblank@pipe-b-query-idle,skip
+igt@kms_vblank@pipe-b-query-forked,skip
+igt@kms_vblank@pipe-b-query-busy,skip
+igt@kms_vblank@pipe-b-query-forked-busy,skip
+igt@kms_vblank@pipe-b-wait-idle,skip
+igt@kms_vblank@pipe-b-wait-forked,skip
+igt@kms_vblank@pipe-b-wait-busy,skip
+igt@kms_vblank@pipe-b-wait-forked-busy,skip
+igt@kms_vblank@pipe-b-ts-continuation-idle,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
diff --git a/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
new file mode 100644
index 000000000000..f07074ddf32c
--- /dev/null
+++ b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
@@ -0,0 +1,142 @@
+igt@core_auth@getclient-simple,pass
+igt@core_auth@getclient-master-drop,pass
+igt@core_auth@basic-auth,pass
+igt@core_auth@many-magics,pass
+igt@core_getclient,pass
+igt@core_getstats,pass
+igt@core_getversion,pass
+igt@core_setmaster_vs_auth,pass
+igt@drm_read@invalid-buffer,pass
+igt@drm_read@fault-buffer,pass
+igt@drm_read@empty-block,pass
+igt@drm_read@empty-nonblock,pass
+igt@drm_read@short-buffer-block,pass
+igt@drm_read@short-buffer-nonblock,pass
+igt@drm_read@short-buffer-wakeup,pass
+igt@kms_addfb_basic@unused-handle,pass
+igt@kms_addfb_basic@unused-pitches,pass
+igt@kms_addfb_basic@unused-offsets,pass
+igt@kms_addfb_basic@unused-modifier,pass
+igt@kms_addfb_basic@legacy-format,pass
+igt@kms_addfb_basic@no-handle,pass
+igt@kms_addfb_basic@basic,pass
+igt@kms_addfb_basic@bad-pitch-0,pass
+igt@kms_addfb_basic@bad-pitch-32,pass
+igt@kms_addfb_basic@bad-pitch-63,pass
+igt@kms_addfb_basic@bad-pitch-128,pass
+igt@kms_addfb_basic@bad-pitch-256,pass
+igt@kms_addfb_basic@bad-pitch-1024,pass
+igt@kms_addfb_basic@bad-pitch-999,pass
+igt@kms_addfb_basic@bad-pitch-65536,pass
+igt@kms_addfb_basic@size-max,pass
+igt@kms_addfb_basic@too-wide,pass
+igt@kms_addfb_basic@too-high,pass
+igt@kms_addfb_basic@bo-too-small,pass
+igt@kms_addfb_basic@small-bo,pass
+igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
+igt@kms_addfb_basic@addfb25-bad-modifier,pass
+igt@kms_addfb_basic@invalid-get-prop-any,pass
+igt@kms_addfb_basic@invalid-get-prop,pass
+igt@kms_addfb_basic@invalid-set-prop-any,pass
+igt@kms_addfb_basic@invalid-set-prop,pass
+igt@kms_addfb_basic@master-rmfb,pass
+igt@kms_atomic@plane-overlay-legacy,skip
+igt@kms_atomic@plane-primary-legacy,pass
+igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
+igt@kms_atomic@plane-immutable-zpos,pass
+igt@kms_atomic@test-only,pass
+igt@kms_atomic@plane-cursor-legacy,pass
+igt@kms_atomic@plane-invalid-params,pass
+igt@kms_atomic@crtc-invalid-params,pass
+igt@kms_atomic@atomic-invalid-params,pass
+igt@kms_atomic@atomic_plane_damage,pass
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_flip_event_leak,pass
+igt@kms_getfb@getfb-handle-zero,pass
+igt@kms_getfb@getfb-handle-valid,pass
+igt@kms_getfb@getfb-handle-closed,pass
+igt@kms_getfb@getfb-handle-not-fb,pass
+igt@kms_getfb@getfb-addfb-different-handles,pass
+igt@kms_getfb@getfb-repeated-different-handles,pass
+igt@kms_getfb@getfb2-handle-zero,pass
+igt@kms_getfb@getfb2-handle-closed,pass
+igt@kms_getfb@getfb2-handle-not-fb,pass
+igt@kms_getfb@getfb2-into-addfb2,pass
+igt@kms_getfb@getfb-handle-protection,pass
+igt@kms_getfb@getfb2-handle-protection,pass
+igt@kms_hdmi_inject@inject-4k,skip
+igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
+igt@kms_pipe_crc_basic@bad-source,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-a,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,pass
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,pass
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,pass
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,pass
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-b,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,pass
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,pass
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,pass
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,pass
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,pass
+igt@kms_prop_blob@basic,pass
+igt@kms_prop_blob@blob-prop-core,pass
+igt@kms_prop_blob@blob-prop-validate,pass
+igt@kms_prop_blob@blob-prop-lifetime,pass
+igt@kms_prop_blob@blob-multiple,pass
+igt@kms_prop_blob@invalid-get-prop-any,pass
+igt@kms_prop_blob@invalid-get-prop,pass
+igt@kms_prop_blob@invalid-set-prop-any,pass
+igt@kms_prop_blob@invalid-set-prop,pass
+igt@kms_rmfb@rmfb-ioctl,pass
+igt@kms_rmfb@close-fd,fail
+igt@kms_setmode@basic@pipe-a-edp-1,pass
+igt@kms_setmode@basic@pipe-b-edp-1,pass
+igt@msm_mapping@ring,fail
+igt@msm_mapping@sqefw,fail
+igt@msm_mapping@shadow,fail
+igt@msm_recovery@hangcheck,pass
+igt@msm_recovery@gpu-fault,pass
+igt@msm_recovery@iova-fault,pass
+igt@msm_submit@empty-submit,pass
+igt@msm_submit@invalid-queue-submit,pass
+igt@msm_submit@invalid-flags-submit,pass
+igt@msm_submit@invalid-in-fence-submit,pass
+igt@msm_submit@invalid-duplicate-bo-submit,pass
+igt@msm_submit@invalid-cmd-idx-submit,pass
+igt@msm_submit@invalid-cmd-type-submit,pass
+igt@msm_submit@valid-submit,pass
+igt@kms_sysfs_edid_timing,pass
+igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,pass
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,fail
+igt@kms_vblank@invalid,pass
+igt@kms_vblank@crtc-id,pass
+igt@kms_vblank@pipe-a-query-idle,pass
+igt@kms_vblank@pipe-a-query-forked,pass
+igt@kms_vblank@pipe-a-query-busy,pass
+igt@kms_vblank@pipe-a-query-forked-busy,pass
+igt@kms_vblank@pipe-a-wait-idle,pass
+igt@kms_vblank@pipe-a-wait-forked,pass
+igt@kms_vblank@pipe-a-wait-busy,pass
+igt@kms_vblank@pipe-a-wait-forked-busy,pass
+igt@kms_vblank@pipe-a-ts-continuation-idle,pass
+igt@kms_vblank@pipe-a-ts-continuation-modeset,pass
+igt@kms_vblank@pipe-b-accuracy-idle,pass
+igt@kms_vblank@pipe-b-query-idle,pass
+igt@kms_vblank@pipe-b-query-forked,pass
+igt@kms_vblank@pipe-b-query-busy,pass
+igt@kms_vblank@pipe-b-query-forked-busy,pass
+igt@kms_vblank@pipe-b-wait-idle,pass
+igt@kms_vblank@pipe-b-wait-forked,pass
+igt@kms_vblank@pipe-b-wait-busy,pass
+igt@kms_vblank@pipe-b-wait-forked-busy,pass
+igt@kms_vblank@pipe-b-ts-continuation-idle,pass
+igt@kms_vblank@pipe-b-ts-continuation-modeset,pass
diff --git a/drivers/gpu/drm/msm/ci/msm_sdm845_results.txt b/drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
new file mode 100644
index 000000000000..935c704bbda8
--- /dev/null
+++ b/drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
@@ -0,0 +1,142 @@
+igt@core_auth@getclient-simple,pass
+igt@core_auth@getclient-master-drop,pass
+igt@core_auth@basic-auth,pass
+igt@core_auth@many-magics,pass
+igt@core_getclient,pass
+igt@core_getstats,pass
+igt@core_getversion,pass
+igt@core_setmaster_vs_auth,pass
+igt@drm_read@invalid-buffer,pass
+igt@drm_read@fault-buffer,pass
+igt@drm_read@empty-block,pass
+igt@drm_read@empty-nonblock,pass
+igt@drm_read@short-buffer-block,pass
+igt@drm_read@short-buffer-nonblock,pass
+igt@drm_read@short-buffer-wakeup,pass
+igt@kms_addfb_basic@unused-handle,pass
+igt@kms_addfb_basic@unused-pitches,pass
+igt@kms_addfb_basic@unused-offsets,pass
+igt@kms_addfb_basic@unused-modifier,pass
+igt@kms_addfb_basic@legacy-format,pass
+igt@kms_addfb_basic@no-handle,pass
+igt@kms_addfb_basic@basic,pass
+igt@kms_addfb_basic@bad-pitch-0,pass
+igt@kms_addfb_basic@bad-pitch-32,pass
+igt@kms_addfb_basic@bad-pitch-63,pass
+igt@kms_addfb_basic@bad-pitch-128,pass
+igt@kms_addfb_basic@bad-pitch-256,pass
+igt@kms_addfb_basic@bad-pitch-1024,pass
+igt@kms_addfb_basic@bad-pitch-999,pass
+igt@kms_addfb_basic@bad-pitch-65536,pass
+igt@kms_addfb_basic@size-max,pass
+igt@kms_addfb_basic@too-wide,pass
+igt@kms_addfb_basic@too-high,pass
+igt@kms_addfb_basic@bo-too-small,pass
+igt@kms_addfb_basic@small-bo,pass
+igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
+igt@kms_addfb_basic@addfb25-bad-modifier,pass
+igt@kms_addfb_basic@invalid-get-prop-any,pass
+igt@kms_addfb_basic@invalid-get-prop,pass
+igt@kms_addfb_basic@invalid-set-prop-any,pass
+igt@kms_addfb_basic@invalid-set-prop,pass
+igt@kms_addfb_basic@master-rmfb,pass
+igt@kms_atomic@plane-overlay-legacy,pass
+igt@kms_atomic@plane-primary-legacy,pass
+igt@kms_atomic@plane-primary-overlay-mutable-zpos,pass
+igt@kms_atomic@plane-immutable-zpos,pass
+igt@kms_atomic@test-only,pass
+igt@kms_atomic@plane-cursor-legacy,pass
+igt@kms_atomic@plane-invalid-params,pass
+igt@kms_atomic@crtc-invalid-params,pass
+igt@kms_atomic@atomic-invalid-params,pass
+igt@kms_atomic@atomic_plane_damage,pass
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_flip_event_leak,pass
+igt@kms_getfb@getfb-handle-zero,pass
+igt@kms_getfb@getfb-handle-valid,pass
+igt@kms_getfb@getfb-handle-closed,pass
+igt@kms_getfb@getfb-handle-not-fb,pass
+igt@kms_getfb@getfb-addfb-different-handles,pass
+igt@kms_getfb@getfb-repeated-different-handles,pass
+igt@kms_getfb@getfb2-handle-zero,pass
+igt@kms_getfb@getfb2-handle-closed,pass
+igt@kms_getfb@getfb2-handle-not-fb,pass
+igt@kms_getfb@getfb2-into-addfb2,pass
+igt@kms_getfb@getfb-handle-protection,pass
+igt@kms_getfb@getfb2-handle-protection,pass
+igt@kms_hdmi_inject@inject-4k,skip
+igt@kms_multipipe_modeset@basic-max-pipe-crc-check,pass
+igt@kms_pipe_crc_basic@bad-source,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-a,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,pass
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,pass
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,pass
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,pass
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,pass
+igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
+igt@kms_prop_blob@basic,pass
+igt@kms_prop_blob@blob-prop-core,pass
+igt@kms_prop_blob@blob-prop-validate,pass
+igt@kms_prop_blob@blob-prop-lifetime,pass
+igt@kms_prop_blob@blob-multiple,pass
+igt@kms_prop_blob@invalid-get-prop-any,pass
+igt@kms_prop_blob@invalid-get-prop,pass
+igt@kms_prop_blob@invalid-set-prop-any,pass
+igt@kms_prop_blob@invalid-set-prop,pass
+igt@kms_rmfb@rmfb-ioctl,pass
+igt@kms_rmfb@close-fd,fail
+igt@kms_setmode@basic@pipe-a-edp-1,pass
+igt@kms_setmode@basic,skip
+igt@msm_mapping@ring,fail
+igt@msm_mapping@sqefw,fail
+igt@msm_mapping@shadow,fail
+igt@msm_recovery@hangcheck,pass
+igt@msm_recovery@gpu-fault,pass
+igt@msm_recovery@iova-fault,pass
+igt@msm_submit@empty-submit,pass
+igt@msm_submit@invalid-queue-submit,pass
+igt@msm_submit@invalid-flags-submit,pass
+igt@msm_submit@invalid-in-fence-submit,pass
+igt@msm_submit@invalid-duplicate-bo-submit,pass
+igt@msm_submit@invalid-cmd-idx-submit,pass
+igt@msm_submit@invalid-cmd-type-submit,pass
+igt@msm_submit@valid-submit,pass
+igt@kms_sysfs_edid_timing,pass
+igt@kms_universal_plane@universal-plane-pipe-a-functional,fail
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,pass
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
+igt@kms_vblank@invalid,pass
+igt@kms_vblank@crtc-id,pass
+igt@kms_vblank@pipe-a-query-idle,pass
+igt@kms_vblank@pipe-a-query-forked,pass
+igt@kms_vblank@pipe-a-query-busy,pass
+igt@kms_vblank@pipe-a-query-forked-busy,pass
+igt@kms_vblank@pipe-a-wait-idle,pass
+igt@kms_vblank@pipe-a-wait-forked,pass
+igt@kms_vblank@pipe-a-wait-busy,pass
+igt@kms_vblank@pipe-a-wait-forked-busy,pass
+igt@kms_vblank@pipe-a-ts-continuation-idle,pass
+igt@kms_vblank@pipe-a-ts-continuation-modeset,pass
+igt@kms_vblank@pipe-b-accuracy-idle,skip
+igt@kms_vblank@pipe-b-query-idle,skip
+igt@kms_vblank@pipe-b-query-forked,skip
+igt@kms_vblank@pipe-b-query-busy,skip
+igt@kms_vblank@pipe-b-query-forked-busy,skip
+igt@kms_vblank@pipe-b-wait-idle,skip
+igt@kms_vblank@pipe-b-wait-forked,skip
+igt@kms_vblank@pipe-b-wait-busy,skip
+igt@kms_vblank@pipe-b-wait-forked-busy,skip
+igt@kms_vblank@pipe-b-ts-continuation-idle,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 49+ messages in thread

* Re: Adding CI results to the kernel tree was Re: [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-11  5:06   ` Adding CI results to the kernel tree was " Dave Airlie
@ 2022-05-11  6:22     ` Greg Kroah-Hartman
  2022-05-11 10:26       ` Michel Dänzer
  2022-05-11 17:33     ` Linus Torvalds
  1 sibling, 1 reply; 49+ messages in thread
From: Greg Kroah-Hartman @ 2022-05-11  6:22 UTC (permalink / raw)
  To: Dave Airlie
  Cc: freedreno, Thomas Zimmermann, Tomeu Vizoso, Jonathan Corbet,
	Sean Paul, open list:DOCUMENTATION, Abhinav Kumar, LKML,
	dri-devel, linux-arm-msm, Linus Torvalds

On Wed, May 11, 2022 at 03:06:47PM +1000, Dave Airlie wrote:
> > And use it to store expectations about what the drm/msm driver is
> > supposed to pass in the IGT test suite.
> 
> I wanted to loop in Linus/Greg to see if there are any issues raised
> by adding CI results file to the tree in their minds, or if any other
> subsystem has done this already, and it's all fine.

Why does the results need to be added to the tree?  Shouldn't they be
either "all is good" or "constantly changing and a constant churn"?

> I think this is a good thing after our Mesa experience, but Mesa has a
> lot tighter integration here, so I want to get some more opinions
> outside the group.

For systems that have "tight integration" this might make sense as proof
that all is working for a specific commit, but I can't see how this will
help the kernel out much.

What are you going to do with these results being checked in all the
time?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Adding CI results to the kernel tree was Re: [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-11  6:22     ` Greg Kroah-Hartman
@ 2022-05-11 10:26       ` Michel Dänzer
  2022-05-11 11:50         ` Greg Kroah-Hartman
  0 siblings, 1 reply; 49+ messages in thread
From: Michel Dänzer @ 2022-05-11 10:26 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Dave Airlie
  Cc: Tomeu Vizoso, open list:DOCUMENTATION, freedreno,
	Jonathan Corbet, Abhinav Kumar, dri-devel, LKML, Linus Torvalds,
	Thomas Zimmermann, linux-arm-msm, Sean Paul

On 2022-05-11 08:22, Greg Kroah-Hartman wrote:
> On Wed, May 11, 2022 at 03:06:47PM +1000, Dave Airlie wrote:
>>> And use it to store expectations about what the drm/msm driver is
>>> supposed to pass in the IGT test suite.
>>
>> I wanted to loop in Linus/Greg to see if there are any issues raised
>> by adding CI results file to the tree in their minds, or if any other
>> subsystem has done this already, and it's all fine.
> 
> Why does the results need to be added to the tree?  Shouldn't they be
> either "all is good" or "constantly changing and a constant churn"?
> 
>> I think this is a good thing after our Mesa experience, but Mesa has a
>> lot tighter integration here, so I want to get some more opinions
>> outside the group.
> 
> For systems that have "tight integration" this might make sense as proof
> that all is working for a specific commit, but I can't see how this will
> help the kernel out much.
> 
> What are you going to do with these results being checked in all the
> time?

Having the expected results in the tree keeps them consistent with the driver code itself, and allows putting in place gating CI to prevent merging driver changes which make any of the tests deviate from the expected result.

Keeping them separate inevitably results in divergence between the driver code and the expected test results, which would result in spurious failures of such CI.


I expect the main complication for the kernel will be due to driver changes merged via different trees, e.g. for cross-subsystem reworks. Since those will not go through the same CI, they may accidentally introduce inconsistencies. The ideal solution for this IMO would be centralizing CI such that the same gating tests have to pass regardless of how the code is merged. But there's likely quite a long way to go until we get there. :)


-- 
Earthling Michel Dänzer            |                  https://redhat.com
Libre software enthusiast          |         Mesa and Xwayland developer

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Adding CI results to the kernel tree was Re: [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-11 10:26       ` Michel Dänzer
@ 2022-05-11 11:50         ` Greg Kroah-Hartman
  2022-05-11 13:33           ` [Freedreno] " Rob Clark
  0 siblings, 1 reply; 49+ messages in thread
From: Greg Kroah-Hartman @ 2022-05-11 11:50 UTC (permalink / raw)
  To: Michel Dänzer
  Cc: Tomeu Vizoso, Jonathan Corbet, freedreno,
	open list:DOCUMENTATION, Abhinav Kumar, dri-devel, LKML,
	Linus Torvalds, Thomas Zimmermann, linux-arm-msm, Sean Paul

On Wed, May 11, 2022 at 12:26:05PM +0200, Michel Dänzer wrote:
> On 2022-05-11 08:22, Greg Kroah-Hartman wrote:
> > On Wed, May 11, 2022 at 03:06:47PM +1000, Dave Airlie wrote:
> >>> And use it to store expectations about what the drm/msm driver is
> >>> supposed to pass in the IGT test suite.
> >>
> >> I wanted to loop in Linus/Greg to see if there are any issues raised
> >> by adding CI results file to the tree in their minds, or if any other
> >> subsystem has done this already, and it's all fine.
> > 
> > Why does the results need to be added to the tree?  Shouldn't they be
> > either "all is good" or "constantly changing and a constant churn"?
> > 
> >> I think this is a good thing after our Mesa experience, but Mesa has a
> >> lot tighter integration here, so I want to get some more opinions
> >> outside the group.
> > 
> > For systems that have "tight integration" this might make sense as proof
> > that all is working for a specific commit, but I can't see how this will
> > help the kernel out much.
> > 
> > What are you going to do with these results being checked in all the
> > time?
> 
> Having the expected results in the tree keeps them consistent with the driver code itself, and allows putting in place gating CI to prevent merging driver changes which make any of the tests deviate from the expected result.

Shouldn't "expected result" always be "pass"?

If not, then the test should be changed to be "skipped" like we have
today in the kselftest tests.

And how about tieing this into the kselftest process as well, why would
this be somehow separate from the rest of the kernel tests?

> Keeping them separate inevitably results in divergence between the driver code and the expected test results, which would result in spurious failures of such CI.

Again, "pass" should be the expected results :)

> I expect the main complication for the kernel will be due to driver changes merged via different trees, e.g. for cross-subsystem reworks. Since those will not go through the same CI, they may accidentally introduce inconsistencies. The ideal solution for this IMO would be centralizing CI such that the same gating tests have to pass regardless of how the code is merged. But there's likely quite a long way to go until we get there. :)

We have in-kernel tests for the rest of the kernel, why can't you put
your testing stuff into there as well?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [RFC v3] drm/msm: Add initial ci/ subdirectory
  2022-05-11  6:15   ` [RFC v3] " Tomeu Vizoso
@ 2022-05-11 13:20     ` Rob Clark
  2022-05-11 14:03       ` Tomeu Vizoso
  2022-05-17  8:16     ` [RFC v4] drm: " Tomeu Vizoso
  1 sibling, 1 reply; 49+ messages in thread
From: Rob Clark @ 2022-05-11 13:20 UTC (permalink / raw)
  To: Tomeu Vizoso
  Cc: freedreno, Thomas Zimmermann, Jonathan Corbet, David Airlie,
	linux-arm-msm, linux-doc, Abhinav Kumar,
	Linux Kernel Mailing List, dri-devel, Sean Paul

On Tue, May 10, 2022 at 11:15 PM Tomeu Vizoso
<tomeu.vizoso@collabora.com> wrote:
>
> And use it to store expectations about what the drm/msm driver is
> supposed to pass in the IGT test suite.
>
> Also include a configuration file that points to the out-of-tree CI
> scripts.
>
> By storing the test expectations along the code we can make sure both
> stay in sync with each other, and so we can know when a code change
> breaks those expectations.
>
> This will allow all contributors to drm/msm to reuse the infrastructure
> already in gitlab.freedesktop.org to test the driver on several
> generations of the hardware.
>
> v2:
>   - Fix names of result expectation files to match SoC
>   - Don't execute tests that are going to skip on all boards
>
> v3:
>   - Remove tracking of dmesg output during test execution
>
> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> ---
>  Documentation/gpu/msm_automated_testing.rst   |  70 +++++++++
>  drivers/gpu/drm/msm/ci/gitlab-ci.yml          |  11 ++
>  drivers/gpu/drm/msm/ci/msm.testlist           | 144 ++++++++++++++++++
>  .../gpu/drm/msm/ci/msm_apq8016_results.txt    | 141 +++++++++++++++++
>  .../gpu/drm/msm/ci/msm_apq8096_results.txt    | 141 +++++++++++++++++
>  drivers/gpu/drm/msm/ci/msm_sc7180_results.txt | 142 +++++++++++++++++
>  drivers/gpu/drm/msm/ci/msm_sdm845_results.txt | 142 +++++++++++++++++
>  7 files changed, 791 insertions(+)
>  create mode 100644 Documentation/gpu/msm_automated_testing.rst
>  create mode 100644 drivers/gpu/drm/msm/ci/gitlab-ci.yml
>  create mode 100644 drivers/gpu/drm/msm/ci/msm.testlist
>  create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
>  create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
>  create mode 100644 drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
>  create mode 100644 drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
>

[snip]

> diff --git a/drivers/gpu/drm/msm/ci/gitlab-ci.yml b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
> new file mode 100644
> index 000000000000..9b7caa7fcab2
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
> @@ -0,0 +1,11 @@
> +variables:
> +  # Change this to use your fork of drm-ci
> +  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
> +  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha msm

btw, shouldn't we list an exact commit sha (or tag) for drm-ci, or am
I overlooking something?  We want to be able to uprev the drm-ci
version (and therefore igt version) in sync with any necessary updates
to the expectations

BR,
-R

> +
> +include:
> +  - project: *drm-ci-project-path
> +    ref: *drm-ci-commit-sha
> +    file:
> +      - '.msm-gitlab-ci.yml'
> +      - '.gitlab-ci.yml'

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [Freedreno] Adding CI results to the kernel tree was Re: [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-11 11:50         ` Greg Kroah-Hartman
@ 2022-05-11 13:33           ` Rob Clark
  2022-05-11 16:43             ` Daniel Vetter
  2022-05-12  2:24             ` Theodore Ts'o
  0 siblings, 2 replies; 49+ messages in thread
From: Rob Clark @ 2022-05-11 13:33 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Sean Paul, Tomeu Vizoso, Jonathan Corbet, Linus Torvalds,
	open list:DOCUMENTATION, Abhinav Kumar, dri-devel, LKML,
	Michel Dänzer, Thomas Zimmermann, linux-arm-msm, freedreno

On Wed, May 11, 2022 at 4:50 AM Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> On Wed, May 11, 2022 at 12:26:05PM +0200, Michel Dänzer wrote:
> > On 2022-05-11 08:22, Greg Kroah-Hartman wrote:
> > > On Wed, May 11, 2022 at 03:06:47PM +1000, Dave Airlie wrote:
> > >>> And use it to store expectations about what the drm/msm driver is
> > >>> supposed to pass in the IGT test suite.
> > >>
> > >> I wanted to loop in Linus/Greg to see if there are any issues raised
> > >> by adding CI results file to the tree in their minds, or if any other
> > >> subsystem has done this already, and it's all fine.
> > >
> > > Why does the results need to be added to the tree?  Shouldn't they be
> > > either "all is good" or "constantly changing and a constant churn"?
> > >
> > >> I think this is a good thing after our Mesa experience, but Mesa has a
> > >> lot tighter integration here, so I want to get some more opinions
> > >> outside the group.
> > >
> > > For systems that have "tight integration" this might make sense as proof
> > > that all is working for a specific commit, but I can't see how this will
> > > help the kernel out much.
> > >
> > > What are you going to do with these results being checked in all the
> > > time?
> >
> > Having the expected results in the tree keeps them consistent with the driver code itself, and allows putting in place gating CI to prevent merging driver changes which make any of the tests deviate from the expected result.
>
> Shouldn't "expected result" always be "pass"?
>
> If not, then the test should be changed to be "skipped" like we have
> today in the kselftest tests.

No, we want to run tests even if they are expected to fail.  This
prevents the scenario of a test getting fixed without being noticed
(for ex, developer was working on fixing test A and didn't notice that
the fix also fixed test B).  If a fix goes unnoticed, a later
regression would also go unnoticed ;-)

I was skeptical about this approach at first with mesa CI, but having
used mesa CI for a while, I am now a firm believer in the approach.

And ofc we want the expectations to be in the kernel tree because
there could be, for example, differences between -fixes and -next
branches.  (Or even stable kernel branches if/when we get to the point
of running CI on those.)

> And how about tieing this into the kselftest process as well, why would
> this be somehow separate from the rest of the kernel tests?
>
> > Keeping them separate inevitably results in divergence between the driver code and the expected test results, which would result in spurious failures of such CI.
>
> Again, "pass" should be the expected results :)
>
> > I expect the main complication for the kernel will be due to driver changes merged via different trees, e.g. for cross-subsystem reworks. Since those will not go through the same CI, they may accidentally introduce inconsistencies. The ideal solution for this IMO would be centralizing CI such that the same gating tests have to pass regardless of how the code is merged. But there's likely quite a long way to go until we get there. :)
>
> We have in-kernel tests for the rest of the kernel, why can't you put
> your testing stuff into there as well?

We could ofc put a lot more of the gitlab yml and scripts into the
kernel tree.  Probably all of i-g-t is a bit much to put in the kernel
tree.  Not to mention I'd like to see this expand to also run some
deqp and/or piglit tests, which is definitely too much to vendor into
the kernel tree.

The approach of this RFC was to put only what was absolutely required
in the kernel tree (such as expectations), and then link out to an
external drm-ci tree[1] which has all the necessary scripts and yml
for building and running tests, to avoid having to put a whole lot
more in the kernel tree. (We should be specifying exact commit-sha for
that tree, IMO, as it controls the version of i-g-t which gets used,
and we need to be able to update expectations in sync with an i-g-t
uprev, for example when new tests are added or if a test fix caused a
fail->pass transition.)

BR,
-R

[1] https://gitlab.freedesktop.org/gfx-ci/drm-ci

> thanks,
>
> greg k-h

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [RFC v3] drm/msm: Add initial ci/ subdirectory
  2022-05-11 13:20     ` Rob Clark
@ 2022-05-11 14:03       ` Tomeu Vizoso
  0 siblings, 0 replies; 49+ messages in thread
From: Tomeu Vizoso @ 2022-05-11 14:03 UTC (permalink / raw)
  To: Rob Clark
  Cc: freedreno, Thomas Zimmermann, Jonathan Corbet, David Airlie,
	linux-arm-msm, linux-doc, Abhinav Kumar,
	Linux Kernel Mailing List, dri-devel, Sean Paul

On 5/11/22 3:20 PM, Rob Clark wrote:
> On Tue, May 10, 2022 at 11:15 PM Tomeu Vizoso
> <tomeu.vizoso@collabora.com> wrote:
>>
>> And use it to store expectations about what the drm/msm driver is
>> supposed to pass in the IGT test suite.
>>
>> Also include a configuration file that points to the out-of-tree CI
>> scripts.
>>
>> By storing the test expectations along the code we can make sure both
>> stay in sync with each other, and so we can know when a code change
>> breaks those expectations.
>>
>> This will allow all contributors to drm/msm to reuse the infrastructure
>> already in gitlab.freedesktop.org to test the driver on several
>> generations of the hardware.
>>
>> v2:
>>    - Fix names of result expectation files to match SoC
>>    - Don't execute tests that are going to skip on all boards
>>
>> v3:
>>    - Remove tracking of dmesg output during test execution
>>
>> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
>> ---
>>   Documentation/gpu/msm_automated_testing.rst   |  70 +++++++++
>>   drivers/gpu/drm/msm/ci/gitlab-ci.yml          |  11 ++
>>   drivers/gpu/drm/msm/ci/msm.testlist           | 144 ++++++++++++++++++
>>   .../gpu/drm/msm/ci/msm_apq8016_results.txt    | 141 +++++++++++++++++
>>   .../gpu/drm/msm/ci/msm_apq8096_results.txt    | 141 +++++++++++++++++
>>   drivers/gpu/drm/msm/ci/msm_sc7180_results.txt | 142 +++++++++++++++++
>>   drivers/gpu/drm/msm/ci/msm_sdm845_results.txt | 142 +++++++++++++++++
>>   7 files changed, 791 insertions(+)
>>   create mode 100644 Documentation/gpu/msm_automated_testing.rst
>>   create mode 100644 drivers/gpu/drm/msm/ci/gitlab-ci.yml
>>   create mode 100644 drivers/gpu/drm/msm/ci/msm.testlist
>>   create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
>>   create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
>>   create mode 100644 drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
>>   create mode 100644 drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
>>
> 
> [snip]
> 
>> diff --git a/drivers/gpu/drm/msm/ci/gitlab-ci.yml b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
>> new file mode 100644
>> index 000000000000..9b7caa7fcab2
>> --- /dev/null
>> +++ b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
>> @@ -0,0 +1,11 @@
>> +variables:
>> +  # Change this to use your fork of drm-ci
>> +  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
>> +  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha msm
> 
> btw, shouldn't we list an exact commit sha (or tag) for drm-ci, or am
> I overlooking something?  We want to be able to uprev the drm-ci
> version (and therefore igt version) in sync with any necessary updates
> to the expectations

You are right, that was me being lazy and using a branch name to not 
have to update this every time.

But this should better be a commit sha or tag. Will do it on v4.

Cheers,

Tomeu

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [RFC] drm/msm: Add initial ci/ subdirectory
  2022-05-10  7:01 [RFC] drm/msm: Add initial ci/ subdirectory Tomeu Vizoso
  2022-05-10 14:13 ` [RFC v2] " Tomeu Vizoso
@ 2022-05-11 14:26 ` Jani Nikula
  2022-05-11 14:41   ` Rob Clark
  1 sibling, 1 reply; 49+ messages in thread
From: Jani Nikula @ 2022-05-11 14:26 UTC (permalink / raw)
  To: Tomeu Vizoso, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Daniel Vetter, Jonathan Corbet,
	Rob Clark, Sean Paul, Abhinav Kumar
  Cc: Petri Latvala, Tomeu Vizoso, linux-doc, Arkadiusz Hiler,
	linux-arm-msm, linux-kernel, dri-devel, freedreno

On Tue, 10 May 2022, Tomeu Vizoso <tomeu.vizoso@collabora.com> wrote:
> And use it to store expectations about what the drm/msm driver is
> supposed to pass in the IGT test suite.
>
> Also include a configuration file that points to the out-of-tree CI
> scripts.
>
> By storing the test expectations along the code we can make sure both
> stay in sync with each other, and so we can know when a code change
> breaks those expectations.
>
> This will allow all contributors to drm/msm to reuse the infrastructure
> already in gitlab.freedesktop.org to test the driver on several
> generations of the hardware.

Cc: Petri and Arek

The tests and subtests and their names are inevitably going to change
over time. I don't think there are any guarantees that they're
stable. How are you going to handle such changes with the test names and
results committed to the kernel tree?


BR,
Jani.


>
> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> ---
>  Documentation/gpu/msm_automated_testing.rst |  70 ++++
>  drivers/gpu/drm/msm/ci/gitlab-ci.yml        |  11 +
>  drivers/gpu/drm/msm/ci/msm.testlist         | 429 ++++++++++++++++++++
>  drivers/gpu/drm/msm/ci/msm_a360_results.txt | 421 +++++++++++++++++++
>  drivers/gpu/drm/msm/ci/msm_a530_results.txt | 421 +++++++++++++++++++
>  drivers/gpu/drm/msm/ci/msm_a618_results.txt | 422 +++++++++++++++++++
>  drivers/gpu/drm/msm/ci/msm_a630_results.txt | 422 +++++++++++++++++++
>  7 files changed, 2196 insertions(+)
>  create mode 100644 Documentation/gpu/msm_automated_testing.rst
>  create mode 100644 drivers/gpu/drm/msm/ci/gitlab-ci.yml
>  create mode 100644 drivers/gpu/drm/msm/ci/msm.testlist
>  create mode 100644 drivers/gpu/drm/msm/ci/msm_a360_results.txt
>  create mode 100644 drivers/gpu/drm/msm/ci/msm_a530_results.txt
>  create mode 100644 drivers/gpu/drm/msm/ci/msm_a618_results.txt
>  create mode 100644 drivers/gpu/drm/msm/ci/msm_a630_results.txt
>
> diff --git a/Documentation/gpu/msm_automated_testing.rst b/Documentation/gpu/msm_automated_testing.rst
> new file mode 100644
> index 000000000000..fe59474569c2
> --- /dev/null
> +++ b/Documentation/gpu/msm_automated_testing.rst
> @@ -0,0 +1,70 @@
> +.. SPDX-License-Identifier: GPL-2.0+
> +
> +=========================================
> +Automated testing of MSM DRM driver
> +=========================================
> +
> +
> +Introduction
> +============
> +
> +Making sure that changes to a driver don't introduce regressions can be very time consuming when lots of different hardware configurations need to be tested. Moreover, it isn't practical for each person interested in this testing to have to acquire and maintain what can be a considerable amount of hardware.
> +
> +Also, it is desirable for developers to check for regressions in their code by themselves, instead of relying on the maintainer finding them and then reporting back.
> +
> +There are facilities in gitlab.freedesktop.org to automatically test Mesa that can be used as well for testing DRM drivers such as drm/msm. This document explains how people interested in testing the drm/msm driver can use this shared infrastructure to save quite some time and effort.
> +
> +
> +Relevant files
> +==============
> +
> +drivers/gpu/drm/msm/ci/gitlab-ci.yml
> +------------------------------------
> +
> +Specifies the specific version of the scripts to be used. GitLab CI will use the values defined in this file to fetch the right scripts.
> +
> +
> +drivers/gpu/drm/msm/ci/msm.testlist
> +-----------------------------------
> +
> +Specifies the tests that the current code is expected to be able to reliably run. These tests are expected to not hang the DUT (device under testing) when running on the revision they belong to, and to give consistent results.
> +
> +
> +drivers/gpu/drm/msm/ci/msm_*_results.txt
> +----------------------------------------
> +
> +Specifies the expected results of running this specific kernel revision on a given hardware configuration.
> +
> +
> +How to enable automated testing on your tree
> +============================================
> +
> +1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one yet
> +
> +2. In your kernel repo's configuration (eg. https://gitlab.freedesktop.org/tomeu/linux/-/settings/ci_cd), change the CI/CD configuration file from .gitlab-ci.yml to drivers/gpu/drm/msm/ci/gitlab-ci.yml.
> +
> +3. Next time you push to this repository, you will see a CI pipeline being created (eg. https://gitlab.freedesktop.org/tomeu/linux/-/pipelines)
> +
> +4. The various jobs will be run and when the pipeline is finished, all jobs should be green unless a regression has been found.
> +
> +
> +How to update test expectations
> +===============================
> +
> +If your changes to the code fix any tests, you will have to update one or more of the files in drivers/gpu/drm/msm/ci/msm_*_results.txt, for each of the test platforms affected by the change.
> +
> +If you have run a pipeline and it failed because of a mismatched test result, you will have been offered a patch at the end of the run that you can apply after reviewing it.
> +
> +
> +How to expand coverage
> +======================
> +
> +If your code changes makes it possible to run more tests (by solving reliability issues, for example), more tests can be added to this list, and then the expected results updated with the patch file that will be printed at the end of each job.
> +
> +If there is a need for updating the version of IGT being used (maybe you have added more tests to it), follow the instructions at https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/tree/msm#upreving-igt.
> +
> +
> +How to test your changes to the scripts
> +==========================================
> +
> +For testing changes to the scripts in the drm-ci repo, change the DRM_CI_PROJECT_PATH variable in drivers/gpu/drm/msm/ci/gitlab-ci.yml to match your fork of the project (eg. tomeu/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/msm/ci/gitlab-ci.yml b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
> new file mode 100644
> index 000000000000..9b7caa7fcab2
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
> @@ -0,0 +1,11 @@
> +variables:
> +  # Change this to use your fork of drm-ci
> +  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
> +  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha msm
> +
> +include:
> +  - project: *drm-ci-project-path
> +    ref: *drm-ci-commit-sha
> +    file:
> +      - '.msm-gitlab-ci.yml'
> +      - '.gitlab-ci.yml'
> diff --git a/drivers/gpu/drm/msm/ci/msm.testlist b/drivers/gpu/drm/msm/ci/msm.testlist
> new file mode 100644
> index 000000000000..7c771471dfa2
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/ci/msm.testlist
> @@ -0,0 +1,429 @@
> +# Keep alphabetically sorted by default
> +
> +igt@core_auth@getclient-simple
> +igt@core_auth@getclient-master-drop
> +igt@core_auth@basic-auth
> +igt@core_auth@many-magics
> +igt@core_getclient
> +igt@core_getstats
> +igt@core_getversion
> +igt@core_setmaster_vs_auth
> +igt@drm_read@invalid-buffer
> +igt@drm_read@fault-buffer
> +igt@drm_read@empty-block
> +igt@drm_read@empty-nonblock
> +igt@drm_read@short-buffer-block
> +igt@drm_read@short-buffer-nonblock
> +igt@drm_read@short-buffer-wakeup
> +igt@kms_addfb_basic@unused-handle
> +igt@kms_addfb_basic@unused-pitches
> +igt@kms_addfb_basic@unused-offsets
> +igt@kms_addfb_basic@unused-modifier
> +igt@kms_addfb_basic@clobberred-modifier
> +igt@kms_addfb_basic@invalid-smem-bo-on-discrete
> +igt@kms_addfb_basic@legacy-format
> +igt@kms_addfb_basic@no-handle
> +igt@kms_addfb_basic@basic
> +igt@kms_addfb_basic@bad-pitch-0
> +igt@kms_addfb_basic@bad-pitch-32
> +igt@kms_addfb_basic@bad-pitch-63
> +igt@kms_addfb_basic@bad-pitch-128
> +igt@kms_addfb_basic@bad-pitch-256
> +igt@kms_addfb_basic@bad-pitch-1024
> +igt@kms_addfb_basic@bad-pitch-999
> +igt@kms_addfb_basic@bad-pitch-65536
> +igt@kms_addfb_basic@size-max
> +igt@kms_addfb_basic@too-wide
> +igt@kms_addfb_basic@too-high
> +igt@kms_addfb_basic@bo-too-small
> +igt@kms_addfb_basic@small-bo
> +igt@kms_addfb_basic@bo-too-small-due-to-tiling
> +igt@kms_addfb_basic@addfb25-modifier-no-flag
> +igt@kms_addfb_basic@addfb25-bad-modifier
> +igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy
> +igt@kms_addfb_basic@addfb25-x-tiled-legacy
> +igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling
> +igt@kms_addfb_basic@addfb25-y-tiled-legacy
> +igt@kms_addfb_basic@addfb25-yf-tiled-legacy
> +igt@kms_addfb_basic@addfb25-y-tiled-small-legacy
> +igt@kms_addfb_basic@addfb25-4-tiled
> +igt@kms_addfb_basic@basic-x-tiled-legacy
> +igt@kms_addfb_basic@framebuffer-vs-set-tiling
> +igt@kms_addfb_basic@tile-pitch-mismatch
> +igt@kms_addfb_basic@basic-y-tiled-legacy
> +igt@kms_addfb_basic@invalid-get-prop-any
> +igt@kms_addfb_basic@invalid-get-prop
> +igt@kms_addfb_basic@invalid-set-prop-any
> +igt@kms_addfb_basic@invalid-set-prop
> +igt@kms_addfb_basic@master-rmfb
> +igt@kms_atomic@plane-overlay-legacy
> +igt@kms_atomic@plane-primary-legacy
> +igt@kms_atomic@plane-primary-overlay-mutable-zpos
> +igt@kms_atomic@plane-immutable-zpos
> +igt@kms_atomic@test-only
> +igt@kms_atomic@plane-cursor-legacy
> +igt@kms_atomic@plane-invalid-params
> +igt@kms_atomic@plane-invalid-params-fence
> +igt@kms_atomic@crtc-invalid-params
> +igt@kms_atomic@crtc-invalid-params-fence
> +igt@kms_atomic@atomic-invalid-params
> +igt@kms_atomic@atomic_plane_damage
> +igt@kms_atomic_interruptible@legacy-setmode@pipe-a-edp-1
> +igt@kms_atomic_interruptible@atomic-setmode@pipe-a-edp-1
> +igt@kms_atomic_interruptible@legacy-dpms@pipe-a-edp-1
> +igt@kms_atomic_interruptible@legacy-pageflip@pipe-a-edp-1
> +igt@kms_atomic_interruptible@legacy-cursor@pipe-a-edp-1
> +igt@kms_atomic_interruptible@universal-setplane-primary@pipe-a-edp-1
> +igt@kms_atomic_interruptible@universal-setplane-cursor@pipe-a-edp-1
> +igt@kms_content_protection@legacy
> +igt@kms_content_protection@atomic
> +igt@kms_content_protection@atomic-dpms
> +igt@kms_content_protection@LIC
> +igt@kms_content_protection@type1
> +igt@kms_content_protection@mei_interface
> +igt@kms_content_protection@content_type_change
> +igt@kms_content_protection@uevent
> +igt@kms_content_protection@srm
> +igt@kms_content_protection@dp-mst-type-0
> +igt@kms_content_protection@dp-mst-lic-type-0
> +igt@kms_content_protection@dp-mst-type-1
> +igt@kms_content_protection@dp-mst-lic-type-1
> +igt@kms_dp_aux_dev
> +igt@kms_flip_event_leak
> +igt@kms_getfb@getfb-handle-zero
> +igt@kms_getfb@getfb-handle-valid
> +igt@kms_getfb@getfb-handle-closed
> +igt@kms_getfb@getfb-handle-not-fb
> +igt@kms_getfb@getfb-addfb-different-handles
> +igt@kms_getfb@getfb-repeated-different-handles
> +igt@kms_getfb@getfb-reject-ccs
> +igt@kms_getfb@getfb2-handle-zero
> +igt@kms_getfb@getfb2-handle-closed
> +igt@kms_getfb@getfb2-handle-not-fb
> +igt@kms_getfb@getfb2-accept-ccs
> +igt@kms_getfb@getfb2-into-addfb2
> +igt@kms_getfb@getfb-handle-protection
> +igt@kms_getfb@getfb2-handle-protection
> +igt@kms_hdmi_inject@inject-4k
> +igt@kms_hdmi_inject@inject-audio
> +igt@kms_hdr@bpc-switch
> +igt@kms_hdr@bpc-switch-dpms
> +igt@kms_hdr@static-toggle
> +igt@kms_hdr@static-toggle-dpms
> +igt@kms_hdr@static-swap
> +igt@kms_multipipe_modeset@basic-max-pipe-crc-check
> +igt@kms_pipe_crc_basic@bad-source
> +igt@kms_pipe_crc_basic@read-crc-pipe-a
> +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-a
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a
> +igt@kms_pipe_crc_basic@read-crc-pipe-b
> +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-b
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b
> +igt@kms_pipe_crc_basic@read-crc-pipe-c
> +igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c-frame-sequence
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-c
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-c
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c
> +igt@kms_pipe_crc_basic@read-crc-pipe-d
> +igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d-frame-sequence
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-d
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d
> +igt@kms_pipe_crc_basic@read-crc-pipe-e
> +igt@kms_pipe_crc_basic@read-crc-pipe-e-frame-sequence
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e-frame-sequence
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-e
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-e
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-e
> +igt@kms_pipe_crc_basic@read-crc-pipe-f
> +igt@kms_pipe_crc_basic@read-crc-pipe-f-frame-sequence
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f-frame-sequence
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-f
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-f
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-f
> +igt@kms_plane_lowres@pipe-a-tiling-none
> +igt@kms_plane_lowres@pipe-a-tiling-x
> +igt@kms_plane_lowres@pipe-a-tiling-y
> +igt@kms_plane_lowres@pipe-a-tiling-yf
> +igt@kms_plane_lowres@pipe-a-tiling-4
> +igt@kms_plane_lowres@pipe-b-tiling-none
> +igt@kms_plane_lowres@pipe-b-tiling-x
> +igt@kms_plane_lowres@pipe-b-tiling-y
> +igt@kms_plane_lowres@pipe-b-tiling-yf
> +igt@kms_plane_lowres@pipe-b-tiling-4
> +igt@kms_plane_lowres@pipe-c-tiling-none
> +igt@kms_plane_lowres@pipe-c-tiling-x
> +igt@kms_plane_lowres@pipe-c-tiling-y
> +igt@kms_plane_lowres@pipe-c-tiling-yf
> +igt@kms_plane_lowres@pipe-c-tiling-4
> +igt@kms_plane_lowres@pipe-d-tiling-none
> +igt@kms_plane_lowres@pipe-d-tiling-x
> +igt@kms_plane_lowres@pipe-d-tiling-y
> +igt@kms_plane_lowres@pipe-d-tiling-yf
> +igt@kms_plane_lowres@pipe-d-tiling-4
> +igt@kms_plane_lowres@pipe-e-tiling-none
> +igt@kms_plane_lowres@pipe-e-tiling-x
> +igt@kms_plane_lowres@pipe-e-tiling-y
> +igt@kms_plane_lowres@pipe-e-tiling-yf
> +igt@kms_plane_lowres@pipe-e-tiling-4
> +igt@kms_plane_lowres@pipe-f-tiling-none
> +igt@kms_plane_lowres@pipe-f-tiling-x
> +igt@kms_plane_lowres@pipe-f-tiling-y
> +igt@kms_plane_lowres@pipe-f-tiling-yf
> +igt@kms_plane_lowres@pipe-f-tiling-4
> +igt@kms_prop_blob@basic
> +igt@kms_prop_blob@blob-prop-core
> +igt@kms_prop_blob@blob-prop-validate
> +igt@kms_prop_blob@blob-prop-lifetime
> +igt@kms_prop_blob@blob-multiple
> +igt@kms_prop_blob@invalid-get-prop-any
> +igt@kms_prop_blob@invalid-get-prop
> +igt@kms_prop_blob@invalid-set-prop-any
> +igt@kms_prop_blob@invalid-set-prop
> +igt@kms_rmfb@rmfb-ioctl
> +igt@kms_rmfb@close-fd
> +igt@kms_rotation_crc@primary-rotation-90
> +igt@kms_rotation_crc@primary-rotation-180
> +igt@kms_rotation_crc@primary-rotation-270
> +igt@kms_rotation_crc@sprite-rotation-90
> +igt@kms_rotation_crc@sprite-rotation-180
> +igt@kms_rotation_crc@sprite-rotation-270
> +igt@kms_rotation_crc@cursor-rotation-180
> +igt@kms_rotation_crc@sprite-rotation-90-pos-100-0
> +igt@kms_rotation_crc@bad-pixel-format
> +igt@kms_rotation_crc@bad-tiling
> +igt@kms_rotation_crc@primary-x-tiled-reflect-x-0
> +igt@kms_rotation_crc@primary-x-tiled-reflect-x-180
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-0
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-90
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-180
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-270
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270
> +igt@kms_rotation_crc@primary-4-tiled-reflect-x-0
> +igt@kms_rotation_crc@primary-4-tiled-reflect-x-180
> +igt@kms_rotation_crc@multiplane-rotation
> +igt@kms_rotation_crc@multiplane-rotation-cropping-top
> +igt@kms_rotation_crc@multiplane-rotation-cropping-bottom
> +igt@kms_rotation_crc@exhaust-fences
> +igt@kms_selftest@all
> +igt@kms_setmode@basic@pipe-a-edp-1
> +igt@kms_setmode@basic@pipe-b-edp-1
> +igt@kms_setmode@basic-clone-single-crtc
> +igt@kms_setmode@invalid-clone-single-crtc
> +igt@kms_setmode@invalid-clone-exclusive-crtc
> +igt@kms_setmode@clone-exclusive-crtc
> +igt@kms_setmode@invalid-clone-single-crtc-stealing
> +
> +# Flakes on a530 with:
> +# arm-smmu b40000.iommu: Unhandled context fault: fsr=0x408, iova=0x01003000, fsynr=0x13, cbfrsynra=0x0, cb=0
> +# igt@msm_mapping@ring
> +
> +igt@msm_mapping@sqefw
> +igt@msm_mapping@shadow
> +igt@msm_recovery@hangcheck
> +igt@msm_recovery@gpu-fault
> +igt@msm_recovery@iova-fault
> +igt@msm_submit@empty-submit
> +igt@msm_submit@invalid-queue-submit
> +igt@msm_submit@invalid-flags-submit
> +igt@msm_submit@invalid-in-fence-submit
> +igt@msm_submit@invalid-duplicate-bo-submit
> +igt@msm_submit@invalid-cmd-idx-submit
> +igt@msm_submit@invalid-cmd-type-submit
> +igt@msm_submit@valid-submit
> +igt@kms_sysfs_edid_timing
> +igt@kms_universal_plane@universal-plane-pipe-a-functional
> +igt@kms_universal_plane@universal-plane-pipe-a-sanity
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a
> +igt@kms_universal_plane@cursor-fb-leak-pipe-a
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-a
> +igt@kms_universal_plane@universal-plane-pipe-b-functional
> +igt@kms_universal_plane@universal-plane-pipe-b-sanity
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b
> +igt@kms_universal_plane@cursor-fb-leak-pipe-b
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-b
> +igt@kms_universal_plane@universal-plane-pipe-c-functional
> +igt@kms_universal_plane@universal-plane-pipe-c-sanity
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-c
> +igt@kms_universal_plane@cursor-fb-leak-pipe-c
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-c
> +igt@kms_universal_plane@universal-plane-pipe-d-functional
> +igt@kms_universal_plane@universal-plane-pipe-d-sanity
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-d
> +igt@kms_universal_plane@cursor-fb-leak-pipe-d
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-d
> +igt@kms_universal_plane@universal-plane-pipe-e-functional
> +igt@kms_universal_plane@universal-plane-pipe-e-sanity
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-e
> +igt@kms_universal_plane@cursor-fb-leak-pipe-e
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-e
> +igt@kms_universal_plane@universal-plane-pipe-f-functional
> +igt@kms_universal_plane@universal-plane-pipe-f-sanity
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-f
> +igt@kms_universal_plane@cursor-fb-leak-pipe-f
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-f
> +igt@kms_vblank@invalid
> +igt@kms_vblank@crtc-id
> +igt@kms_vblank@pipe-a-query-idle
> +igt@kms_vblank@pipe-a-query-idle-hang
> +igt@kms_vblank@pipe-a-query-forked
> +igt@kms_vblank@pipe-a-query-forked-hang
> +igt@kms_vblank@pipe-a-query-busy
> +igt@kms_vblank@pipe-a-query-busy-hang
> +igt@kms_vblank@pipe-a-query-forked-busy
> +igt@kms_vblank@pipe-a-query-forked-busy-hang
> +igt@kms_vblank@pipe-a-wait-idle
> +igt@kms_vblank@pipe-a-wait-idle-hang
> +igt@kms_vblank@pipe-a-wait-forked
> +igt@kms_vblank@pipe-a-wait-forked-hang
> +igt@kms_vblank@pipe-a-wait-busy
> +igt@kms_vblank@pipe-a-wait-busy-hang
> +igt@kms_vblank@pipe-a-wait-forked-busy
> +igt@kms_vblank@pipe-a-wait-forked-busy-hang
> +igt@kms_vblank@pipe-a-ts-continuation-idle
> +igt@kms_vblank@pipe-a-ts-continuation-idle-hang
> +igt@kms_vblank@pipe-a-ts-continuation-dpms-rpm
> +igt@kms_vblank@pipe-a-ts-continuation-modeset
> +igt@kms_vblank@pipe-a-ts-continuation-modeset-hang
> +igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm
> +igt@kms_vblank@pipe-b-accuracy-idle
> +igt@kms_vblank@pipe-b-query-idle
> +igt@kms_vblank@pipe-b-query-idle-hang
> +igt@kms_vblank@pipe-b-query-forked
> +igt@kms_vblank@pipe-b-query-forked-hang
> +igt@kms_vblank@pipe-b-query-busy
> +igt@kms_vblank@pipe-b-query-busy-hang
> +igt@kms_vblank@pipe-b-query-forked-busy
> +igt@kms_vblank@pipe-b-query-forked-busy-hang
> +igt@kms_vblank@pipe-b-wait-idle
> +igt@kms_vblank@pipe-b-wait-idle-hang
> +igt@kms_vblank@pipe-b-wait-forked
> +igt@kms_vblank@pipe-b-wait-forked-hang
> +igt@kms_vblank@pipe-b-wait-busy
> +igt@kms_vblank@pipe-b-wait-busy-hang
> +igt@kms_vblank@pipe-b-wait-forked-busy
> +igt@kms_vblank@pipe-b-wait-forked-busy-hang
> +igt@kms_vblank@pipe-b-ts-continuation-idle
> +igt@kms_vblank@pipe-b-ts-continuation-idle-hang
> +igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm
> +igt@kms_vblank@pipe-b-ts-continuation-modeset
> +igt@kms_vblank@pipe-b-ts-continuation-modeset-hang
> +igt@kms_vblank@pipe-b-ts-continuation-modeset-rpm
> +igt@kms_vblank@pipe-c-accuracy-idle
> +igt@kms_vblank@pipe-c-query-idle
> +igt@kms_vblank@pipe-c-query-idle-hang
> +igt@kms_vblank@pipe-c-query-forked
> +igt@kms_vblank@pipe-c-query-forked-hang
> +igt@kms_vblank@pipe-c-query-busy
> +igt@kms_vblank@pipe-c-query-busy-hang
> +igt@kms_vblank@pipe-c-query-forked-busy
> +igt@kms_vblank@pipe-c-query-forked-busy-hang
> +igt@kms_vblank@pipe-c-wait-idle
> +igt@kms_vblank@pipe-c-wait-idle-hang
> +igt@kms_vblank@pipe-c-wait-forked
> +igt@kms_vblank@pipe-c-wait-forked-hang
> +igt@kms_vblank@pipe-c-wait-busy
> +igt@kms_vblank@pipe-c-wait-busy-hang
> +igt@kms_vblank@pipe-c-wait-forked-busy
> +igt@kms_vblank@pipe-c-wait-forked-busy-hang
> +igt@kms_vblank@pipe-c-ts-continuation-idle
> +igt@kms_vblank@pipe-c-ts-continuation-idle-hang
> +igt@kms_vblank@pipe-c-ts-continuation-dpms-rpm
> +igt@kms_vblank@pipe-c-ts-continuation-modeset
> +igt@kms_vblank@pipe-c-ts-continuation-modeset-hang
> +igt@kms_vblank@pipe-c-ts-continuation-modeset-rpm
> +igt@kms_vblank@pipe-d-accuracy-idle
> +igt@kms_vblank@pipe-d-query-idle
> +igt@kms_vblank@pipe-d-query-idle-hang
> +igt@kms_vblank@pipe-d-query-forked
> +igt@kms_vblank@pipe-d-query-forked-hang
> +igt@kms_vblank@pipe-d-query-busy
> +igt@kms_vblank@pipe-d-query-busy-hang
> +igt@kms_vblank@pipe-d-query-forked-busy
> +igt@kms_vblank@pipe-d-query-forked-busy-hang
> +igt@kms_vblank@pipe-d-wait-idle
> +igt@kms_vblank@pipe-d-wait-idle-hang
> +igt@kms_vblank@pipe-d-wait-forked
> +igt@kms_vblank@pipe-d-wait-forked-hang
> +igt@kms_vblank@pipe-d-wait-busy
> +igt@kms_vblank@pipe-d-wait-busy-hang
> +igt@kms_vblank@pipe-d-wait-forked-busy
> +igt@kms_vblank@pipe-d-wait-forked-busy-hang
> +igt@kms_vblank@pipe-d-ts-continuation-idle
> +igt@kms_vblank@pipe-d-ts-continuation-idle-hang
> +igt@kms_vblank@pipe-d-ts-continuation-dpms-rpm
> +igt@kms_vblank@pipe-d-ts-continuation-modeset
> +igt@kms_vblank@pipe-d-ts-continuation-modeset-hang
> +igt@kms_vblank@pipe-d-ts-continuation-modeset-rpm
> +igt@kms_vblank@pipe-e-accuracy-idle
> +igt@kms_vblank@pipe-e-query-idle
> +igt@kms_vblank@pipe-e-query-idle-hang
> +igt@kms_vblank@pipe-e-query-forked
> +igt@kms_vblank@pipe-e-query-forked-hang
> +igt@kms_vblank@pipe-e-query-busy
> +igt@kms_vblank@pipe-e-query-busy-hang
> +igt@kms_vblank@pipe-e-query-forked-busy
> +igt@kms_vblank@pipe-e-query-forked-busy-hang
> +igt@kms_vblank@pipe-e-wait-idle
> +igt@kms_vblank@pipe-e-wait-idle-hang
> +igt@kms_vblank@pipe-e-wait-forked
> +igt@kms_vblank@pipe-e-wait-forked-hang
> +igt@kms_vblank@pipe-e-wait-busy
> +igt@kms_vblank@pipe-e-wait-busy-hang
> +igt@kms_vblank@pipe-e-wait-forked-busy
> +igt@kms_vblank@pipe-e-wait-forked-busy-hang
> +igt@kms_vblank@pipe-e-ts-continuation-idle
> +igt@kms_vblank@pipe-e-ts-continuation-idle-hang
> +igt@kms_vblank@pipe-e-ts-continuation-dpms-rpm
> +igt@kms_vblank@pipe-e-ts-continuation-modeset
> +igt@kms_vblank@pipe-e-ts-continuation-modeset-hang
> +igt@kms_vblank@pipe-e-ts-continuation-modeset-rpm
> +igt@kms_vblank@pipe-f-accuracy-idle
> +igt@kms_vblank@pipe-f-query-idle
> +igt@kms_vblank@pipe-f-query-idle-hang
> +igt@kms_vblank@pipe-f-query-forked
> +igt@kms_vblank@pipe-f-query-forked-hang
> +igt@kms_vblank@pipe-f-query-busy
> +igt@kms_vblank@pipe-f-query-busy-hang
> +igt@kms_vblank@pipe-f-query-forked-busy
> +igt@kms_vblank@pipe-f-query-forked-busy-hang
> +igt@kms_vblank@pipe-f-wait-idle
> +igt@kms_vblank@pipe-f-wait-idle-hang
> +igt@kms_vblank@pipe-f-wait-forked
> +igt@kms_vblank@pipe-f-wait-forked-hang
> +igt@kms_vblank@pipe-f-wait-busy
> +igt@kms_vblank@pipe-f-wait-busy-hang
> +igt@kms_vblank@pipe-f-wait-forked-busy
> +igt@kms_vblank@pipe-f-wait-forked-busy-hang
> +igt@kms_vblank@pipe-f-ts-continuation-idle
> +igt@kms_vblank@pipe-f-ts-continuation-idle-hang
> +igt@kms_vblank@pipe-f-ts-continuation-dpms-rpm
> +igt@kms_vblank@pipe-f-ts-continuation-modeset
> +igt@kms_vblank@pipe-f-ts-continuation-modeset-hang
> +igt@kms_vblank@pipe-f-ts-continuation-modeset-rpm
> +igt@kms_vrr@flip-basic
> +igt@kms_vrr@flip-dpms
> +igt@kms_vrr@flipline
> +igt@kms_async_flip@async-flip-with-page-flip-events
> +igt@kms_async_flip@alternate-sync-async-flip
> +igt@kms_async_flip@test-time-stamp
> +igt@kms_async_flip@test-cursor
> +igt@kms_async_flip@invalid-async-flip
> +igt@kms_async_flip@crc
> diff --git a/drivers/gpu/drm/msm/ci/msm_a360_results.txt b/drivers/gpu/drm/msm/ci/msm_a360_results.txt
> new file mode 100644
> index 000000000000..fd80d2bf2bcb
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/ci/msm_a360_results.txt
> @@ -0,0 +1,421 @@
> +igt@core_auth@getclient-simple,pass
> +igt@core_auth@getclient-master-drop,pass
> +igt@core_auth@basic-auth,pass
> +igt@core_auth@many-magics,pass
> +igt@core_getclient,pass
> +igt@core_getstats,pass
> +igt@core_getversion,pass
> +igt@core_setmaster_vs_auth,pass
> +igt@drm_read@invalid-buffer,skip
> +igt@drm_read@fault-buffer,skip
> +igt@drm_read@empty-block,skip
> +igt@drm_read@empty-nonblock,skip
> +igt@drm_read@short-buffer-block,skip
> +igt@drm_read@short-buffer-nonblock,skip
> +igt@drm_read@short-buffer-wakeup,skip
> +igt@kms_addfb_basic@unused-handle,pass
> +igt@kms_addfb_basic@unused-pitches,pass
> +igt@kms_addfb_basic@unused-offsets,pass
> +igt@kms_addfb_basic@unused-modifier,pass
> +igt@kms_addfb_basic@clobberred-modifier,skip
> +igt@kms_addfb_basic@invalid-smem-bo-on-discrete,skip
> +igt@kms_addfb_basic@legacy-format,dmesg-warn
> +igt@kms_addfb_basic@no-handle,pass
> +igt@kms_addfb_basic@basic,pass
> +igt@kms_addfb_basic@bad-pitch-0,pass
> +igt@kms_addfb_basic@bad-pitch-32,pass
> +igt@kms_addfb_basic@bad-pitch-63,pass
> +igt@kms_addfb_basic@bad-pitch-128,pass
> +igt@kms_addfb_basic@bad-pitch-256,pass
> +igt@kms_addfb_basic@bad-pitch-1024,pass
> +igt@kms_addfb_basic@bad-pitch-999,pass
> +igt@kms_addfb_basic@bad-pitch-65536,pass
> +igt@kms_addfb_basic@size-max,pass
> +igt@kms_addfb_basic@too-wide,pass
> +igt@kms_addfb_basic@too-high,dmesg-warn
> +igt@kms_addfb_basic@bo-too-small,pass
> +igt@kms_addfb_basic@small-bo,pass
> +igt@kms_addfb_basic@bo-too-small-due-to-tiling,skip
> +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> +igt@kms_addfb_basic@addfb25-bad-modifier,fail
> +igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy,skip
> +igt@kms_addfb_basic@addfb25-x-tiled-legacy,skip
> +igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling,skip
> +igt@kms_addfb_basic@addfb25-y-tiled-legacy,skip
> +igt@kms_addfb_basic@addfb25-yf-tiled-legacy,skip
> +igt@kms_addfb_basic@addfb25-y-tiled-small-legacy,skip
> +igt@kms_addfb_basic@addfb25-4-tiled,skip
> +igt@kms_addfb_basic@basic-x-tiled-legacy,skip
> +igt@kms_addfb_basic@framebuffer-vs-set-tiling,skip
> +igt@kms_addfb_basic@tile-pitch-mismatch,skip
> +igt@kms_addfb_basic@basic-y-tiled-legacy,skip
> +igt@kms_addfb_basic@invalid-get-prop-any,pass
> +igt@kms_addfb_basic@invalid-get-prop,pass
> +igt@kms_addfb_basic@invalid-set-prop-any,pass
> +igt@kms_addfb_basic@invalid-set-prop,pass
> +igt@kms_addfb_basic@master-rmfb,pass
> +igt@kms_atomic@plane-overlay-legacy,skip
> +igt@kms_atomic@plane-primary-legacy,skip
> +igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
> +igt@kms_atomic@plane-immutable-zpos,skip
> +igt@kms_atomic@test-only,skip
> +igt@kms_atomic@plane-cursor-legacy,skip
> +igt@kms_atomic@plane-invalid-params,skip
> +igt@kms_atomic@plane-invalid-params-fence,skip
> +igt@kms_atomic@crtc-invalid-params,skip
> +igt@kms_atomic@crtc-invalid-params-fence,skip
> +igt@kms_atomic@atomic-invalid-params,skip
> +igt@kms_atomic@atomic_plane_damage,skip
> +igt@kms_atomic_interruptible@legacy-setmode,skip
> +igt@kms_atomic_interruptible@atomic-setmode,skip
> +igt@kms_atomic_interruptible@legacy-dpms,skip
> +igt@kms_atomic_interruptible@legacy-pageflip,skip
> +igt@kms_atomic_interruptible@legacy-cursor,skip
> +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> +igt@kms_content_protection@legacy,skip
> +igt@kms_content_protection@atomic,skip
> +igt@kms_content_protection@atomic-dpms,skip
> +igt@kms_content_protection@lic,skip
> +igt@kms_content_protection@type1,skip
> +igt@kms_content_protection@mei_interface,skip
> +igt@kms_content_protection@content_type_change,skip
> +igt@kms_content_protection@uevent,skip
> +igt@kms_content_protection@srm,skip
> +igt@kms_content_protection@dp-mst-type-0,skip
> +igt@kms_content_protection@dp-mst-lic-type-0,skip
> +igt@kms_content_protection@dp-mst-type-1,skip
> +igt@kms_content_protection@dp-mst-lic-type-1,skip
> +igt@kms_dp_aux_dev,skip
> +igt@kms_flip_event_leak,skip
> +igt@kms_getfb@getfb-handle-zero,pass
> +igt@kms_getfb@getfb-handle-valid,pass
> +igt@kms_getfb@getfb-handle-closed,pass
> +igt@kms_getfb@getfb-handle-not-fb,pass
> +igt@kms_getfb@getfb-addfb-different-handles,pass
> +igt@kms_getfb@getfb-repeated-different-handles,pass
> +igt@kms_getfb@getfb-reject-ccs,skip
> +igt@kms_getfb@getfb2-handle-zero,pass
> +igt@kms_getfb@getfb2-handle-closed,pass
> +igt@kms_getfb@getfb2-handle-not-fb,pass
> +igt@kms_getfb@getfb2-accept-ccs,skip
> +igt@kms_getfb@getfb2-into-addfb2,pass
> +igt@kms_getfb@getfb-handle-protection,pass
> +igt@kms_getfb@getfb2-handle-protection,pass
> +igt@kms_hdmi_inject@inject-4k,fail
> +igt@kms_hdmi_inject@inject-audio,skip
> +igt@kms_hdr@bpc-switch,skip
> +igt@kms_hdr@bpc-switch-dpms,skip
> +igt@kms_hdr@static-toggle,skip
> +igt@kms_hdr@static-toggle-dpms,skip
> +igt@kms_hdr@static-swap,skip
> +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
> +igt@kms_pipe_crc_basic@bad-source,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-a,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-c,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-c,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-c,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-d,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-d,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-e,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-e-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-e,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-e,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-e,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-f,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-f-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-f,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-f,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-f,skip
> +igt@kms_plane_lowres@pipe-a-tiling-none,skip
> +igt@kms_plane_lowres@pipe-a-tiling-x,skip
> +igt@kms_plane_lowres@pipe-a-tiling-y,skip
> +igt@kms_plane_lowres@pipe-a-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-a-tiling-4,skip
> +igt@kms_plane_lowres@pipe-b-tiling-none,skip
> +igt@kms_plane_lowres@pipe-b-tiling-x,skip
> +igt@kms_plane_lowres@pipe-b-tiling-y,skip
> +igt@kms_plane_lowres@pipe-b-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-b-tiling-4,skip
> +igt@kms_plane_lowres@pipe-c-tiling-none,skip
> +igt@kms_plane_lowres@pipe-c-tiling-x,skip
> +igt@kms_plane_lowres@pipe-c-tiling-y,skip
> +igt@kms_plane_lowres@pipe-c-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-c-tiling-4,skip
> +igt@kms_plane_lowres@pipe-d-tiling-none,skip
> +igt@kms_plane_lowres@pipe-d-tiling-x,skip
> +igt@kms_plane_lowres@pipe-d-tiling-y,skip
> +igt@kms_plane_lowres@pipe-d-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-d-tiling-4,skip
> +igt@kms_plane_lowres@pipe-e-tiling-none,skip
> +igt@kms_plane_lowres@pipe-e-tiling-x,skip
> +igt@kms_plane_lowres@pipe-e-tiling-y,skip
> +igt@kms_plane_lowres@pipe-e-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-e-tiling-4,skip
> +igt@kms_plane_lowres@pipe-f-tiling-none,skip
> +igt@kms_plane_lowres@pipe-f-tiling-x,skip
> +igt@kms_plane_lowres@pipe-f-tiling-y,skip
> +igt@kms_plane_lowres@pipe-f-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-f-tiling-4,skip
> +igt@kms_prop_blob@basic,pass
> +igt@kms_prop_blob@blob-prop-core,pass
> +igt@kms_prop_blob@blob-prop-validate,pass
> +igt@kms_prop_blob@blob-prop-lifetime,pass
> +igt@kms_prop_blob@blob-multiple,pass
> +igt@kms_prop_blob@invalid-get-prop-any,pass
> +igt@kms_prop_blob@invalid-get-prop,pass
> +igt@kms_prop_blob@invalid-set-prop-any,pass
> +igt@kms_prop_blob@invalid-set-prop,pass
> +igt@kms_rmfb@rmfb-ioctl,skip
> +igt@kms_rmfb@close-fd,skip
> +igt@kms_rotation_crc@primary-rotation-90,skip
> +igt@kms_rotation_crc@primary-rotation-180,skip
> +igt@kms_rotation_crc@primary-rotation-270,skip
> +igt@kms_rotation_crc@sprite-rotation-90,skip
> +igt@kms_rotation_crc@sprite-rotation-180,skip
> +igt@kms_rotation_crc@sprite-rotation-270,skip
> +igt@kms_rotation_crc@cursor-rotation-180,skip
> +igt@kms_rotation_crc@sprite-rotation-90-pos-100-0,skip
> +igt@kms_rotation_crc@bad-pixel-format,skip
> +igt@kms_rotation_crc@bad-tiling,skip
> +igt@kms_rotation_crc@primary-x-tiled-reflect-x-0,skip
> +igt@kms_rotation_crc@primary-x-tiled-reflect-x-180,skip
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-0,skip
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-90,skip
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-180,skip
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-270,skip
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0,skip
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90,skip
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180,skip
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270,skip
> +igt@kms_rotation_crc@primary-4-tiled-reflect-x-0,skip
> +igt@kms_rotation_crc@primary-4-tiled-reflect-x-180,skip
> +igt@kms_rotation_crc@multiplane-rotation,skip
> +igt@kms_rotation_crc@multiplane-rotation-cropping-top,skip
> +igt@kms_rotation_crc@multiplane-rotation-cropping-bottom,skip
> +igt@kms_rotation_crc@exhaust-fences,skip
> +igt@kms_selftest@all,skip
> +igt@kms_setmode@basic,skip
> +igt@kms_setmode@basic-clone-single-crtc,skip
> +igt@kms_setmode@invalid-clone-single-crtc,skip
> +igt@kms_setmode@invalid-clone-exclusive-crtc,skip
> +igt@kms_setmode@clone-exclusive-crtc,skip
> +igt@kms_setmode@invalid-clone-single-crtc-stealing,skip
> +igt@msm_mapping@sqefw,skip
> +igt@msm_mapping@shadow,skip
> +igt@msm_recovery@hangcheck,skip
> +igt@msm_recovery@gpu-fault,skip
> +igt@msm_recovery@iova-fault,skip
> +igt@msm_submit@empty-submit,pass
> +igt@msm_submit@invalid-queue-submit,pass
> +igt@msm_submit@invalid-flags-submit,pass
> +igt@msm_submit@invalid-in-fence-submit,pass
> +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> +igt@msm_submit@valid-submit,pass
> +igt@kms_sysfs_edid_timing,pass
> +igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-a-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-a,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-a,skip
> +igt@kms_universal_plane@universal-plane-pipe-b-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-b-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-b,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-b,skip
> +igt@kms_universal_plane@universal-plane-pipe-c-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-c-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-c,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-c,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-c,skip
> +igt@kms_universal_plane@universal-plane-pipe-d-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-d-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-d,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-d,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-d,skip
> +igt@kms_universal_plane@universal-plane-pipe-e-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-e-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-e,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-e,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-e,skip
> +igt@kms_universal_plane@universal-plane-pipe-f-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-f-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-f,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-f,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-f,skip
> +igt@kms_vblank@invalid,skip
> +igt@kms_vblank@crtc-id,skip
> +igt@kms_vblank@pipe-a-query-idle,skip
> +igt@kms_vblank@pipe-a-query-idle-hang,skip
> +igt@kms_vblank@pipe-a-query-forked,skip
> +igt@kms_vblank@pipe-a-query-forked-hang,skip
> +igt@kms_vblank@pipe-a-query-busy,skip
> +igt@kms_vblank@pipe-a-query-busy-hang,skip
> +igt@kms_vblank@pipe-a-query-forked-busy,skip
> +igt@kms_vblank@pipe-a-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-a-wait-idle,skip
> +igt@kms_vblank@pipe-a-wait-idle-hang,skip
> +igt@kms_vblank@pipe-a-wait-forked,skip
> +igt@kms_vblank@pipe-a-wait-forked-hang,skip
> +igt@kms_vblank@pipe-a-wait-busy,skip
> +igt@kms_vblank@pipe-a-wait-busy-hang,skip
> +igt@kms_vblank@pipe-a-wait-forked-busy,skip
> +igt@kms_vblank@pipe-a-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-a-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-a-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-a-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-a-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-b-accuracy-idle,skip
> +igt@kms_vblank@pipe-b-query-idle,skip
> +igt@kms_vblank@pipe-b-query-idle-hang,skip
> +igt@kms_vblank@pipe-b-query-forked,skip
> +igt@kms_vblank@pipe-b-query-forked-hang,skip
> +igt@kms_vblank@pipe-b-query-busy,skip
> +igt@kms_vblank@pipe-b-query-busy-hang,skip
> +igt@kms_vblank@pipe-b-query-forked-busy,skip
> +igt@kms_vblank@pipe-b-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-b-wait-idle,skip
> +igt@kms_vblank@pipe-b-wait-idle-hang,skip
> +igt@kms_vblank@pipe-b-wait-forked,skip
> +igt@kms_vblank@pipe-b-wait-forked-hang,skip
> +igt@kms_vblank@pipe-b-wait-busy,skip
> +igt@kms_vblank@pipe-b-wait-busy-hang,skip
> +igt@kms_vblank@pipe-b-wait-forked-busy,skip
> +igt@kms_vblank@pipe-b-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-b-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-b-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-b-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-b-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-c-accuracy-idle,skip
> +igt@kms_vblank@pipe-c-query-idle,skip
> +igt@kms_vblank@pipe-c-query-idle-hang,skip
> +igt@kms_vblank@pipe-c-query-forked,skip
> +igt@kms_vblank@pipe-c-query-forked-hang,skip
> +igt@kms_vblank@pipe-c-query-busy,skip
> +igt@kms_vblank@pipe-c-query-busy-hang,skip
> +igt@kms_vblank@pipe-c-query-forked-busy,skip
> +igt@kms_vblank@pipe-c-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-c-wait-idle,skip
> +igt@kms_vblank@pipe-c-wait-idle-hang,skip
> +igt@kms_vblank@pipe-c-wait-forked,skip
> +igt@kms_vblank@pipe-c-wait-forked-hang,skip
> +igt@kms_vblank@pipe-c-wait-busy,skip
> +igt@kms_vblank@pipe-c-wait-busy-hang,skip
> +igt@kms_vblank@pipe-c-wait-forked-busy,skip
> +igt@kms_vblank@pipe-c-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-c-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-c-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-c-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-c-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-c-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-c-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-d-accuracy-idle,skip
> +igt@kms_vblank@pipe-d-query-idle,skip
> +igt@kms_vblank@pipe-d-query-idle-hang,skip
> +igt@kms_vblank@pipe-d-query-forked,skip
> +igt@kms_vblank@pipe-d-query-forked-hang,skip
> +igt@kms_vblank@pipe-d-query-busy,skip
> +igt@kms_vblank@pipe-d-query-busy-hang,skip
> +igt@kms_vblank@pipe-d-query-forked-busy,skip
> +igt@kms_vblank@pipe-d-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-d-wait-idle,skip
> +igt@kms_vblank@pipe-d-wait-idle-hang,skip
> +igt@kms_vblank@pipe-d-wait-forked,skip
> +igt@kms_vblank@pipe-d-wait-forked-hang,skip
> +igt@kms_vblank@pipe-d-wait-busy,skip
> +igt@kms_vblank@pipe-d-wait-busy-hang,skip
> +igt@kms_vblank@pipe-d-wait-forked-busy,skip
> +igt@kms_vblank@pipe-d-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-d-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-d-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-d-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-d-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-d-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-d-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-e-accuracy-idle,skip
> +igt@kms_vblank@pipe-e-query-idle,skip
> +igt@kms_vblank@pipe-e-query-idle-hang,skip
> +igt@kms_vblank@pipe-e-query-forked,skip
> +igt@kms_vblank@pipe-e-query-forked-hang,skip
> +igt@kms_vblank@pipe-e-query-busy,skip
> +igt@kms_vblank@pipe-e-query-busy-hang,skip
> +igt@kms_vblank@pipe-e-query-forked-busy,skip
> +igt@kms_vblank@pipe-e-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-e-wait-idle,skip
> +igt@kms_vblank@pipe-e-wait-idle-hang,skip
> +igt@kms_vblank@pipe-e-wait-forked,skip
> +igt@kms_vblank@pipe-e-wait-forked-hang,skip
> +igt@kms_vblank@pipe-e-wait-busy,skip
> +igt@kms_vblank@pipe-e-wait-busy-hang,skip
> +igt@kms_vblank@pipe-e-wait-forked-busy,skip
> +igt@kms_vblank@pipe-e-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-e-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-e-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-e-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-e-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-e-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-e-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-f-accuracy-idle,skip
> +igt@kms_vblank@pipe-f-query-idle,skip
> +igt@kms_vblank@pipe-f-query-idle-hang,skip
> +igt@kms_vblank@pipe-f-query-forked,skip
> +igt@kms_vblank@pipe-f-query-forked-hang,skip
> +igt@kms_vblank@pipe-f-query-busy,skip
> +igt@kms_vblank@pipe-f-query-busy-hang,skip
> +igt@kms_vblank@pipe-f-query-forked-busy,skip
> +igt@kms_vblank@pipe-f-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-f-wait-idle,skip
> +igt@kms_vblank@pipe-f-wait-idle-hang,skip
> +igt@kms_vblank@pipe-f-wait-forked,skip
> +igt@kms_vblank@pipe-f-wait-forked-hang,skip
> +igt@kms_vblank@pipe-f-wait-busy,skip
> +igt@kms_vblank@pipe-f-wait-busy-hang,skip
> +igt@kms_vblank@pipe-f-wait-forked-busy,skip
> +igt@kms_vblank@pipe-f-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-f-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-f-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-f-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-f-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-f-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-f-ts-continuation-modeset-rpm,skip
> +igt@kms_vrr@flip-basic,skip
> +igt@kms_vrr@flip-dpms,skip
> +igt@kms_vrr@flipline,skip
> +igt@kms_async_flip@async-flip-with-page-flip-events,skip
> +igt@kms_async_flip@alternate-sync-async-flip,skip
> +igt@kms_async_flip@test-time-stamp,skip
> +igt@kms_async_flip@test-cursor,skip
> +igt@kms_async_flip@invalid-async-flip,skip
> +igt@kms_async_flip@crc,skip
> diff --git a/drivers/gpu/drm/msm/ci/msm_a530_results.txt b/drivers/gpu/drm/msm/ci/msm_a530_results.txt
> new file mode 100644
> index 000000000000..d5bf402f830c
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/ci/msm_a530_results.txt
> @@ -0,0 +1,421 @@
> +igt@core_auth@getclient-simple,pass
> +igt@core_auth@getclient-master-drop,pass
> +igt@core_auth@basic-auth,pass
> +igt@core_auth@many-magics,pass
> +igt@core_getclient,pass
> +igt@core_getstats,pass
> +igt@core_getversion,pass
> +igt@core_setmaster_vs_auth,pass
> +igt@drm_read@invalid-buffer,skip
> +igt@drm_read@fault-buffer,skip
> +igt@drm_read@empty-block,skip
> +igt@drm_read@empty-nonblock,skip
> +igt@drm_read@short-buffer-block,skip
> +igt@drm_read@short-buffer-nonblock,skip
> +igt@drm_read@short-buffer-wakeup,skip
> +igt@kms_addfb_basic@unused-handle,pass
> +igt@kms_addfb_basic@unused-pitches,pass
> +igt@kms_addfb_basic@unused-offsets,pass
> +igt@kms_addfb_basic@unused-modifier,pass
> +igt@kms_addfb_basic@clobberred-modifier,skip
> +igt@kms_addfb_basic@invalid-smem-bo-on-discrete,skip
> +igt@kms_addfb_basic@legacy-format,dmesg-warn
> +igt@kms_addfb_basic@no-handle,pass
> +igt@kms_addfb_basic@basic,pass
> +igt@kms_addfb_basic@bad-pitch-0,pass
> +igt@kms_addfb_basic@bad-pitch-32,pass
> +igt@kms_addfb_basic@bad-pitch-63,pass
> +igt@kms_addfb_basic@bad-pitch-128,pass
> +igt@kms_addfb_basic@bad-pitch-256,pass
> +igt@kms_addfb_basic@bad-pitch-1024,pass
> +igt@kms_addfb_basic@bad-pitch-999,pass
> +igt@kms_addfb_basic@bad-pitch-65536,pass
> +igt@kms_addfb_basic@size-max,pass
> +igt@kms_addfb_basic@too-wide,pass
> +igt@kms_addfb_basic@too-high,dmesg-warn
> +igt@kms_addfb_basic@bo-too-small,pass
> +igt@kms_addfb_basic@small-bo,pass
> +igt@kms_addfb_basic@bo-too-small-due-to-tiling,skip
> +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> +igt@kms_addfb_basic@addfb25-bad-modifier,fail
> +igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy,skip
> +igt@kms_addfb_basic@addfb25-x-tiled-legacy,skip
> +igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling,skip
> +igt@kms_addfb_basic@addfb25-y-tiled-legacy,skip
> +igt@kms_addfb_basic@addfb25-yf-tiled-legacy,skip
> +igt@kms_addfb_basic@addfb25-y-tiled-small-legacy,skip
> +igt@kms_addfb_basic@addfb25-4-tiled,skip
> +igt@kms_addfb_basic@basic-x-tiled-legacy,skip
> +igt@kms_addfb_basic@framebuffer-vs-set-tiling,skip
> +igt@kms_addfb_basic@tile-pitch-mismatch,skip
> +igt@kms_addfb_basic@basic-y-tiled-legacy,skip
> +igt@kms_addfb_basic@invalid-get-prop-any,pass
> +igt@kms_addfb_basic@invalid-get-prop,pass
> +igt@kms_addfb_basic@invalid-set-prop-any,pass
> +igt@kms_addfb_basic@invalid-set-prop,pass
> +igt@kms_addfb_basic@master-rmfb,pass
> +igt@kms_atomic@plane-overlay-legacy,skip
> +igt@kms_atomic@plane-primary-legacy,skip
> +igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
> +igt@kms_atomic@plane-immutable-zpos,skip
> +igt@kms_atomic@test-only,skip
> +igt@kms_atomic@plane-cursor-legacy,skip
> +igt@kms_atomic@plane-invalid-params,skip
> +igt@kms_atomic@plane-invalid-params-fence,skip
> +igt@kms_atomic@crtc-invalid-params,skip
> +igt@kms_atomic@crtc-invalid-params-fence,skip
> +igt@kms_atomic@atomic-invalid-params,skip
> +igt@kms_atomic@atomic_plane_damage,skip
> +igt@kms_atomic_interruptible@legacy-setmode,skip
> +igt@kms_atomic_interruptible@atomic-setmode,skip
> +igt@kms_atomic_interruptible@legacy-dpms,skip
> +igt@kms_atomic_interruptible@legacy-pageflip,skip
> +igt@kms_atomic_interruptible@legacy-cursor,skip
> +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> +igt@kms_content_protection@legacy,skip
> +igt@kms_content_protection@atomic,skip
> +igt@kms_content_protection@atomic-dpms,skip
> +igt@kms_content_protection@lic,skip
> +igt@kms_content_protection@type1,skip
> +igt@kms_content_protection@mei_interface,skip
> +igt@kms_content_protection@content_type_change,skip
> +igt@kms_content_protection@uevent,skip
> +igt@kms_content_protection@srm,skip
> +igt@kms_content_protection@dp-mst-type-0,skip
> +igt@kms_content_protection@dp-mst-lic-type-0,skip
> +igt@kms_content_protection@dp-mst-type-1,skip
> +igt@kms_content_protection@dp-mst-lic-type-1,skip
> +igt@kms_dp_aux_dev,skip
> +igt@kms_flip_event_leak,skip
> +igt@kms_getfb@getfb-handle-zero,pass
> +igt@kms_getfb@getfb-handle-valid,pass
> +igt@kms_getfb@getfb-handle-closed,pass
> +igt@kms_getfb@getfb-handle-not-fb,pass
> +igt@kms_getfb@getfb-addfb-different-handles,pass
> +igt@kms_getfb@getfb-repeated-different-handles,pass
> +igt@kms_getfb@getfb-reject-ccs,skip
> +igt@kms_getfb@getfb2-handle-zero,pass
> +igt@kms_getfb@getfb2-handle-closed,pass
> +igt@kms_getfb@getfb2-handle-not-fb,pass
> +igt@kms_getfb@getfb2-accept-ccs,skip
> +igt@kms_getfb@getfb2-into-addfb2,pass
> +igt@kms_getfb@getfb-handle-protection,pass
> +igt@kms_getfb@getfb2-handle-protection,pass
> +igt@kms_hdmi_inject@inject-4k,dmesg-warn
> +igt@kms_hdmi_inject@inject-audio,skip
> +igt@kms_hdr@bpc-switch,skip
> +igt@kms_hdr@bpc-switch-dpms,skip
> +igt@kms_hdr@static-toggle,skip
> +igt@kms_hdr@static-toggle-dpms,skip
> +igt@kms_hdr@static-swap,skip
> +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
> +igt@kms_pipe_crc_basic@bad-source,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-a,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-c,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-c,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-c,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-d,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-d,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-e,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-e-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-e,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-e,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-e,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-f,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-f-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-f,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-f,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-f,skip
> +igt@kms_plane_lowres@pipe-a-tiling-none,skip
> +igt@kms_plane_lowres@pipe-a-tiling-x,skip
> +igt@kms_plane_lowres@pipe-a-tiling-y,skip
> +igt@kms_plane_lowres@pipe-a-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-a-tiling-4,skip
> +igt@kms_plane_lowres@pipe-b-tiling-none,skip
> +igt@kms_plane_lowres@pipe-b-tiling-x,skip
> +igt@kms_plane_lowres@pipe-b-tiling-y,skip
> +igt@kms_plane_lowres@pipe-b-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-b-tiling-4,skip
> +igt@kms_plane_lowres@pipe-c-tiling-none,skip
> +igt@kms_plane_lowres@pipe-c-tiling-x,skip
> +igt@kms_plane_lowres@pipe-c-tiling-y,skip
> +igt@kms_plane_lowres@pipe-c-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-c-tiling-4,skip
> +igt@kms_plane_lowres@pipe-d-tiling-none,skip
> +igt@kms_plane_lowres@pipe-d-tiling-x,skip
> +igt@kms_plane_lowres@pipe-d-tiling-y,skip
> +igt@kms_plane_lowres@pipe-d-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-d-tiling-4,skip
> +igt@kms_plane_lowres@pipe-e-tiling-none,skip
> +igt@kms_plane_lowres@pipe-e-tiling-x,skip
> +igt@kms_plane_lowres@pipe-e-tiling-y,skip
> +igt@kms_plane_lowres@pipe-e-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-e-tiling-4,skip
> +igt@kms_plane_lowres@pipe-f-tiling-none,skip
> +igt@kms_plane_lowres@pipe-f-tiling-x,skip
> +igt@kms_plane_lowres@pipe-f-tiling-y,skip
> +igt@kms_plane_lowres@pipe-f-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-f-tiling-4,skip
> +igt@kms_prop_blob@basic,pass
> +igt@kms_prop_blob@blob-prop-core,pass
> +igt@kms_prop_blob@blob-prop-validate,pass
> +igt@kms_prop_blob@blob-prop-lifetime,pass
> +igt@kms_prop_blob@blob-multiple,pass
> +igt@kms_prop_blob@invalid-get-prop-any,pass
> +igt@kms_prop_blob@invalid-get-prop,pass
> +igt@kms_prop_blob@invalid-set-prop-any,pass
> +igt@kms_prop_blob@invalid-set-prop,pass
> +igt@kms_rmfb@rmfb-ioctl,skip
> +igt@kms_rmfb@close-fd,skip
> +igt@kms_rotation_crc@primary-rotation-90,skip
> +igt@kms_rotation_crc@primary-rotation-180,skip
> +igt@kms_rotation_crc@primary-rotation-270,skip
> +igt@kms_rotation_crc@sprite-rotation-90,skip
> +igt@kms_rotation_crc@sprite-rotation-180,skip
> +igt@kms_rotation_crc@sprite-rotation-270,skip
> +igt@kms_rotation_crc@cursor-rotation-180,skip
> +igt@kms_rotation_crc@sprite-rotation-90-pos-100-0,skip
> +igt@kms_rotation_crc@bad-pixel-format,skip
> +igt@kms_rotation_crc@bad-tiling,skip
> +igt@kms_rotation_crc@primary-x-tiled-reflect-x-0,skip
> +igt@kms_rotation_crc@primary-x-tiled-reflect-x-180,skip
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-0,skip
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-90,skip
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-180,skip
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-270,skip
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0,skip
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90,skip
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180,skip
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270,skip
> +igt@kms_rotation_crc@primary-4-tiled-reflect-x-0,skip
> +igt@kms_rotation_crc@primary-4-tiled-reflect-x-180,skip
> +igt@kms_rotation_crc@multiplane-rotation,skip
> +igt@kms_rotation_crc@multiplane-rotation-cropping-top,skip
> +igt@kms_rotation_crc@multiplane-rotation-cropping-bottom,skip
> +igt@kms_rotation_crc@exhaust-fences,skip
> +igt@kms_selftest@all,skip
> +igt@kms_setmode@basic,skip
> +igt@kms_setmode@basic-clone-single-crtc,skip
> +igt@kms_setmode@invalid-clone-single-crtc,skip
> +igt@kms_setmode@invalid-clone-exclusive-crtc,skip
> +igt@kms_setmode@clone-exclusive-crtc,skip
> +igt@kms_setmode@invalid-clone-single-crtc-stealing,skip
> +igt@msm_mapping@sqefw,skip
> +igt@msm_mapping@shadow,skip
> +igt@msm_recovery@hangcheck,skip
> +igt@msm_recovery@gpu-fault,skip
> +igt@msm_recovery@iova-fault,skip
> +igt@msm_submit@empty-submit,pass
> +igt@msm_submit@invalid-queue-submit,pass
> +igt@msm_submit@invalid-flags-submit,pass
> +igt@msm_submit@invalid-in-fence-submit,pass
> +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> +igt@msm_submit@valid-submit,pass
> +igt@kms_sysfs_edid_timing,pass
> +igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-a-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-a,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-a,skip
> +igt@kms_universal_plane@universal-plane-pipe-b-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-b-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-b,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-b,skip
> +igt@kms_universal_plane@universal-plane-pipe-c-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-c-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-c,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-c,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-c,skip
> +igt@kms_universal_plane@universal-plane-pipe-d-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-d-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-d,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-d,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-d,skip
> +igt@kms_universal_plane@universal-plane-pipe-e-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-e-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-e,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-e,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-e,skip
> +igt@kms_universal_plane@universal-plane-pipe-f-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-f-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-f,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-f,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-f,skip
> +igt@kms_vblank@invalid,skip
> +igt@kms_vblank@crtc-id,skip
> +igt@kms_vblank@pipe-a-query-idle,skip
> +igt@kms_vblank@pipe-a-query-idle-hang,skip
> +igt@kms_vblank@pipe-a-query-forked,skip
> +igt@kms_vblank@pipe-a-query-forked-hang,skip
> +igt@kms_vblank@pipe-a-query-busy,skip
> +igt@kms_vblank@pipe-a-query-busy-hang,skip
> +igt@kms_vblank@pipe-a-query-forked-busy,skip
> +igt@kms_vblank@pipe-a-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-a-wait-idle,skip
> +igt@kms_vblank@pipe-a-wait-idle-hang,skip
> +igt@kms_vblank@pipe-a-wait-forked,skip
> +igt@kms_vblank@pipe-a-wait-forked-hang,skip
> +igt@kms_vblank@pipe-a-wait-busy,skip
> +igt@kms_vblank@pipe-a-wait-busy-hang,skip
> +igt@kms_vblank@pipe-a-wait-forked-busy,skip
> +igt@kms_vblank@pipe-a-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-a-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-a-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-a-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-a-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-b-accuracy-idle,skip
> +igt@kms_vblank@pipe-b-query-idle,skip
> +igt@kms_vblank@pipe-b-query-idle-hang,skip
> +igt@kms_vblank@pipe-b-query-forked,skip
> +igt@kms_vblank@pipe-b-query-forked-hang,skip
> +igt@kms_vblank@pipe-b-query-busy,skip
> +igt@kms_vblank@pipe-b-query-busy-hang,skip
> +igt@kms_vblank@pipe-b-query-forked-busy,skip
> +igt@kms_vblank@pipe-b-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-b-wait-idle,skip
> +igt@kms_vblank@pipe-b-wait-idle-hang,skip
> +igt@kms_vblank@pipe-b-wait-forked,skip
> +igt@kms_vblank@pipe-b-wait-forked-hang,skip
> +igt@kms_vblank@pipe-b-wait-busy,skip
> +igt@kms_vblank@pipe-b-wait-busy-hang,skip
> +igt@kms_vblank@pipe-b-wait-forked-busy,skip
> +igt@kms_vblank@pipe-b-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-b-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-b-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-b-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-b-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-c-accuracy-idle,skip
> +igt@kms_vblank@pipe-c-query-idle,skip
> +igt@kms_vblank@pipe-c-query-idle-hang,skip
> +igt@kms_vblank@pipe-c-query-forked,skip
> +igt@kms_vblank@pipe-c-query-forked-hang,skip
> +igt@kms_vblank@pipe-c-query-busy,skip
> +igt@kms_vblank@pipe-c-query-busy-hang,skip
> +igt@kms_vblank@pipe-c-query-forked-busy,skip
> +igt@kms_vblank@pipe-c-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-c-wait-idle,skip
> +igt@kms_vblank@pipe-c-wait-idle-hang,skip
> +igt@kms_vblank@pipe-c-wait-forked,skip
> +igt@kms_vblank@pipe-c-wait-forked-hang,skip
> +igt@kms_vblank@pipe-c-wait-busy,skip
> +igt@kms_vblank@pipe-c-wait-busy-hang,skip
> +igt@kms_vblank@pipe-c-wait-forked-busy,skip
> +igt@kms_vblank@pipe-c-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-c-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-c-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-c-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-c-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-c-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-c-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-d-accuracy-idle,skip
> +igt@kms_vblank@pipe-d-query-idle,skip
> +igt@kms_vblank@pipe-d-query-idle-hang,skip
> +igt@kms_vblank@pipe-d-query-forked,skip
> +igt@kms_vblank@pipe-d-query-forked-hang,skip
> +igt@kms_vblank@pipe-d-query-busy,skip
> +igt@kms_vblank@pipe-d-query-busy-hang,skip
> +igt@kms_vblank@pipe-d-query-forked-busy,skip
> +igt@kms_vblank@pipe-d-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-d-wait-idle,skip
> +igt@kms_vblank@pipe-d-wait-idle-hang,skip
> +igt@kms_vblank@pipe-d-wait-forked,skip
> +igt@kms_vblank@pipe-d-wait-forked-hang,skip
> +igt@kms_vblank@pipe-d-wait-busy,skip
> +igt@kms_vblank@pipe-d-wait-busy-hang,skip
> +igt@kms_vblank@pipe-d-wait-forked-busy,skip
> +igt@kms_vblank@pipe-d-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-d-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-d-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-d-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-d-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-d-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-d-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-e-accuracy-idle,skip
> +igt@kms_vblank@pipe-e-query-idle,skip
> +igt@kms_vblank@pipe-e-query-idle-hang,skip
> +igt@kms_vblank@pipe-e-query-forked,skip
> +igt@kms_vblank@pipe-e-query-forked-hang,skip
> +igt@kms_vblank@pipe-e-query-busy,skip
> +igt@kms_vblank@pipe-e-query-busy-hang,skip
> +igt@kms_vblank@pipe-e-query-forked-busy,skip
> +igt@kms_vblank@pipe-e-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-e-wait-idle,skip
> +igt@kms_vblank@pipe-e-wait-idle-hang,skip
> +igt@kms_vblank@pipe-e-wait-forked,skip
> +igt@kms_vblank@pipe-e-wait-forked-hang,skip
> +igt@kms_vblank@pipe-e-wait-busy,skip
> +igt@kms_vblank@pipe-e-wait-busy-hang,skip
> +igt@kms_vblank@pipe-e-wait-forked-busy,skip
> +igt@kms_vblank@pipe-e-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-e-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-e-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-e-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-e-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-e-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-e-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-f-accuracy-idle,skip
> +igt@kms_vblank@pipe-f-query-idle,skip
> +igt@kms_vblank@pipe-f-query-idle-hang,skip
> +igt@kms_vblank@pipe-f-query-forked,skip
> +igt@kms_vblank@pipe-f-query-forked-hang,skip
> +igt@kms_vblank@pipe-f-query-busy,skip
> +igt@kms_vblank@pipe-f-query-busy-hang,skip
> +igt@kms_vblank@pipe-f-query-forked-busy,skip
> +igt@kms_vblank@pipe-f-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-f-wait-idle,skip
> +igt@kms_vblank@pipe-f-wait-idle-hang,skip
> +igt@kms_vblank@pipe-f-wait-forked,skip
> +igt@kms_vblank@pipe-f-wait-forked-hang,skip
> +igt@kms_vblank@pipe-f-wait-busy,skip
> +igt@kms_vblank@pipe-f-wait-busy-hang,skip
> +igt@kms_vblank@pipe-f-wait-forked-busy,skip
> +igt@kms_vblank@pipe-f-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-f-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-f-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-f-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-f-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-f-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-f-ts-continuation-modeset-rpm,skip
> +igt@kms_vrr@flip-basic,skip
> +igt@kms_vrr@flip-dpms,skip
> +igt@kms_vrr@flipline,skip
> +igt@kms_async_flip@async-flip-with-page-flip-events,skip
> +igt@kms_async_flip@alternate-sync-async-flip,skip
> +igt@kms_async_flip@test-time-stamp,skip
> +igt@kms_async_flip@test-cursor,skip
> +igt@kms_async_flip@invalid-async-flip,skip
> +igt@kms_async_flip@crc,skip
> diff --git a/drivers/gpu/drm/msm/ci/msm_a618_results.txt b/drivers/gpu/drm/msm/ci/msm_a618_results.txt
> new file mode 100644
> index 000000000000..6e42262bf61b
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/ci/msm_a618_results.txt
> @@ -0,0 +1,422 @@
> +igt@core_auth@getclient-simple,dmesg-warn
> +igt@core_auth@getclient-master-drop,pass
> +igt@core_auth@basic-auth,pass
> +igt@core_auth@many-magics,pass
> +igt@core_getclient,pass
> +igt@core_getstats,pass
> +igt@core_getversion,pass
> +igt@core_setmaster_vs_auth,pass
> +igt@drm_read@invalid-buffer,pass
> +igt@drm_read@fault-buffer,pass
> +igt@drm_read@empty-block,pass
> +igt@drm_read@empty-nonblock,pass
> +igt@drm_read@short-buffer-block,pass
> +igt@drm_read@short-buffer-nonblock,pass
> +igt@drm_read@short-buffer-wakeup,pass
> +igt@kms_addfb_basic@unused-handle,pass
> +igt@kms_addfb_basic@unused-pitches,pass
> +igt@kms_addfb_basic@unused-offsets,pass
> +igt@kms_addfb_basic@unused-modifier,pass
> +igt@kms_addfb_basic@clobberred-modifier,skip
> +igt@kms_addfb_basic@invalid-smem-bo-on-discrete,skip
> +igt@kms_addfb_basic@legacy-format,dmesg-warn
> +igt@kms_addfb_basic@no-handle,pass
> +igt@kms_addfb_basic@basic,pass
> +igt@kms_addfb_basic@bad-pitch-0,pass
> +igt@kms_addfb_basic@bad-pitch-32,pass
> +igt@kms_addfb_basic@bad-pitch-63,pass
> +igt@kms_addfb_basic@bad-pitch-128,pass
> +igt@kms_addfb_basic@bad-pitch-256,pass
> +igt@kms_addfb_basic@bad-pitch-1024,pass
> +igt@kms_addfb_basic@bad-pitch-999,pass
> +igt@kms_addfb_basic@bad-pitch-65536,pass
> +igt@kms_addfb_basic@size-max,pass
> +igt@kms_addfb_basic@too-wide,pass
> +igt@kms_addfb_basic@too-high,dmesg-warn
> +igt@kms_addfb_basic@bo-too-small,pass
> +igt@kms_addfb_basic@small-bo,pass
> +igt@kms_addfb_basic@bo-too-small-due-to-tiling,skip
> +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> +igt@kms_addfb_basic@addfb25-bad-modifier,dmesg-warn
> +igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy,skip
> +igt@kms_addfb_basic@addfb25-x-tiled-legacy,skip
> +igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling,skip
> +igt@kms_addfb_basic@addfb25-y-tiled-legacy,skip
> +igt@kms_addfb_basic@addfb25-yf-tiled-legacy,skip
> +igt@kms_addfb_basic@addfb25-y-tiled-small-legacy,skip
> +igt@kms_addfb_basic@addfb25-4-tiled,skip
> +igt@kms_addfb_basic@basic-x-tiled-legacy,skip
> +igt@kms_addfb_basic@framebuffer-vs-set-tiling,skip
> +igt@kms_addfb_basic@tile-pitch-mismatch,skip
> +igt@kms_addfb_basic@basic-y-tiled-legacy,skip
> +igt@kms_addfb_basic@invalid-get-prop-any,pass
> +igt@kms_addfb_basic@invalid-get-prop,pass
> +igt@kms_addfb_basic@invalid-set-prop-any,pass
> +igt@kms_addfb_basic@invalid-set-prop,pass
> +igt@kms_addfb_basic@master-rmfb,pass
> +igt@kms_atomic@plane-overlay-legacy,skip
> +igt@kms_atomic@plane-primary-legacy,pass
> +igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
> +igt@kms_atomic@plane-immutable-zpos,pass
> +igt@kms_atomic@test-only,pass
> +igt@kms_atomic@plane-cursor-legacy,pass
> +igt@kms_atomic@plane-invalid-params,pass
> +igt@kms_atomic@plane-invalid-params-fence,skip
> +igt@kms_atomic@crtc-invalid-params,pass
> +igt@kms_atomic@crtc-invalid-params-fence,skip
> +igt@kms_atomic@atomic-invalid-params,pass
> +igt@kms_atomic@atomic_plane_damage,pass
> +igt@kms_atomic_interruptible@legacy-setmode,skip
> +igt@kms_atomic_interruptible@atomic-setmode,skip
> +igt@kms_atomic_interruptible@legacy-dpms,skip
> +igt@kms_atomic_interruptible@legacy-pageflip,skip
> +igt@kms_atomic_interruptible@legacy-cursor,skip
> +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> +igt@kms_content_protection@legacy,skip
> +igt@kms_content_protection@atomic,skip
> +igt@kms_content_protection@atomic-dpms,skip
> +igt@kms_content_protection@lic,skip
> +igt@kms_content_protection@type1,skip
> +igt@kms_content_protection@mei_interface,skip
> +igt@kms_content_protection@content_type_change,skip
> +igt@kms_content_protection@uevent,skip
> +igt@kms_content_protection@srm,skip
> +igt@kms_content_protection@dp-mst-type-0,skip
> +igt@kms_content_protection@dp-mst-lic-type-0,skip
> +igt@kms_content_protection@dp-mst-type-1,skip
> +igt@kms_content_protection@dp-mst-lic-type-1,skip
> +igt@kms_dp_aux_dev,skip
> +igt@kms_flip_event_leak,pass
> +igt@kms_getfb@getfb-handle-zero,pass
> +igt@kms_getfb@getfb-handle-valid,pass
> +igt@kms_getfb@getfb-handle-closed,pass
> +igt@kms_getfb@getfb-handle-not-fb,pass
> +igt@kms_getfb@getfb-addfb-different-handles,pass
> +igt@kms_getfb@getfb-repeated-different-handles,pass
> +igt@kms_getfb@getfb-reject-ccs,skip
> +igt@kms_getfb@getfb2-handle-zero,pass
> +igt@kms_getfb@getfb2-handle-closed,pass
> +igt@kms_getfb@getfb2-handle-not-fb,pass
> +igt@kms_getfb@getfb2-accept-ccs,skip
> +igt@kms_getfb@getfb2-into-addfb2,pass
> +igt@kms_getfb@getfb-handle-protection,pass
> +igt@kms_getfb@getfb2-handle-protection,pass
> +igt@kms_hdmi_inject@inject-4k,skip
> +igt@kms_hdmi_inject@inject-audio,skip
> +igt@kms_hdr@bpc-switch,skip
> +igt@kms_hdr@bpc-switch-dpms,skip
> +igt@kms_hdr@static-toggle,skip
> +igt@kms_hdr@static-toggle-dpms,skip
> +igt@kms_hdr@static-swap,skip
> +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
> +igt@kms_pipe_crc_basic@bad-source,pass
> +igt@kms_pipe_crc_basic@read-crc-pipe-a,pass
> +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,pass
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,pass
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,pass
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,pass
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-a,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,pass
> +igt@kms_pipe_crc_basic@read-crc-pipe-b,pass
> +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,pass
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,pass
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,pass
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,pass
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,pass
> +igt@kms_pipe_crc_basic@read-crc-pipe-c,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-c,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-c,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-d,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-d,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-e,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-e-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-e,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-e,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-e,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-f,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-f-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-f,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-f,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-f,skip
> +igt@kms_plane_lowres@pipe-a-tiling-none,skip
> +igt@kms_plane_lowres@pipe-a-tiling-x,skip
> +igt@kms_plane_lowres@pipe-a-tiling-y,skip
> +igt@kms_plane_lowres@pipe-a-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-a-tiling-4,skip
> +igt@kms_plane_lowres@pipe-b-tiling-none,skip
> +igt@kms_plane_lowres@pipe-b-tiling-x,skip
> +igt@kms_plane_lowres@pipe-b-tiling-y,skip
> +igt@kms_plane_lowres@pipe-b-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-b-tiling-4,skip
> +igt@kms_plane_lowres@pipe-c-tiling-none,skip
> +igt@kms_plane_lowres@pipe-c-tiling-x,skip
> +igt@kms_plane_lowres@pipe-c-tiling-y,skip
> +igt@kms_plane_lowres@pipe-c-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-c-tiling-4,skip
> +igt@kms_plane_lowres@pipe-d-tiling-none,skip
> +igt@kms_plane_lowres@pipe-d-tiling-x,skip
> +igt@kms_plane_lowres@pipe-d-tiling-y,skip
> +igt@kms_plane_lowres@pipe-d-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-d-tiling-4,skip
> +igt@kms_plane_lowres@pipe-e-tiling-none,skip
> +igt@kms_plane_lowres@pipe-e-tiling-x,skip
> +igt@kms_plane_lowres@pipe-e-tiling-y,skip
> +igt@kms_plane_lowres@pipe-e-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-e-tiling-4,skip
> +igt@kms_plane_lowres@pipe-f-tiling-none,skip
> +igt@kms_plane_lowres@pipe-f-tiling-x,skip
> +igt@kms_plane_lowres@pipe-f-tiling-y,skip
> +igt@kms_plane_lowres@pipe-f-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-f-tiling-4,skip
> +igt@kms_prop_blob@basic,pass
> +igt@kms_prop_blob@blob-prop-core,pass
> +igt@kms_prop_blob@blob-prop-validate,pass
> +igt@kms_prop_blob@blob-prop-lifetime,pass
> +igt@kms_prop_blob@blob-multiple,pass
> +igt@kms_prop_blob@invalid-get-prop-any,pass
> +igt@kms_prop_blob@invalid-get-prop,pass
> +igt@kms_prop_blob@invalid-set-prop-any,pass
> +igt@kms_prop_blob@invalid-set-prop,pass
> +igt@kms_rmfb@rmfb-ioctl,pass
> +igt@kms_rmfb@close-fd,fail
> +igt@kms_rotation_crc@primary-rotation-90,skip
> +igt@kms_rotation_crc@primary-rotation-180,skip
> +igt@kms_rotation_crc@primary-rotation-270,skip
> +igt@kms_rotation_crc@sprite-rotation-90,skip
> +igt@kms_rotation_crc@sprite-rotation-180,skip
> +igt@kms_rotation_crc@sprite-rotation-270,skip
> +igt@kms_rotation_crc@cursor-rotation-180,skip
> +igt@kms_rotation_crc@sprite-rotation-90-pos-100-0,skip
> +igt@kms_rotation_crc@bad-pixel-format,skip
> +igt@kms_rotation_crc@bad-tiling,skip
> +igt@kms_rotation_crc@primary-x-tiled-reflect-x-0,skip
> +igt@kms_rotation_crc@primary-x-tiled-reflect-x-180,skip
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-0,skip
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-90,skip
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-180,skip
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-270,skip
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0,skip
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90,skip
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180,skip
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270,skip
> +igt@kms_rotation_crc@primary-4-tiled-reflect-x-0,skip
> +igt@kms_rotation_crc@primary-4-tiled-reflect-x-180,skip
> +igt@kms_rotation_crc@multiplane-rotation,skip
> +igt@kms_rotation_crc@multiplane-rotation-cropping-top,skip
> +igt@kms_rotation_crc@multiplane-rotation-cropping-bottom,skip
> +igt@kms_rotation_crc@exhaust-fences,skip
> +igt@kms_selftest@all,skip
> +igt@kms_setmode@basic@pipe-a-edp-1,pass
> +igt@kms_setmode@basic@pipe-b-edp-1,pass
> +igt@kms_setmode@basic-clone-single-crtc,skip
> +igt@kms_setmode@invalid-clone-single-crtc,skip
> +igt@kms_setmode@invalid-clone-exclusive-crtc,skip
> +igt@kms_setmode@clone-exclusive-crtc,skip
> +igt@kms_setmode@invalid-clone-single-crtc-stealing,skip
> +igt@msm_mapping@sqefw,dmesg-fail
> +igt@msm_mapping@shadow,dmesg-fail
> +igt@msm_recovery@hangcheck,dmesg-warn
> +igt@msm_recovery@gpu-fault,dmesg-warn
> +igt@msm_recovery@iova-fault,dmesg-warn
> +igt@msm_submit@empty-submit,pass
> +igt@msm_submit@invalid-queue-submit,pass
> +igt@msm_submit@invalid-flags-submit,pass
> +igt@msm_submit@invalid-in-fence-submit,pass
> +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> +igt@msm_submit@valid-submit,pass
> +igt@kms_sysfs_edid_timing,pass
> +igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-a-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,pass
> +igt@kms_universal_plane@cursor-fb-leak-pipe-a,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-a,skip
> +igt@kms_universal_plane@universal-plane-pipe-b-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-b-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,fail
> +igt@kms_universal_plane@cursor-fb-leak-pipe-b,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-b,skip
> +igt@kms_universal_plane@universal-plane-pipe-c-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-c-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-c,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-c,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-c,skip
> +igt@kms_universal_plane@universal-plane-pipe-d-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-d-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-d,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-d,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-d,skip
> +igt@kms_universal_plane@universal-plane-pipe-e-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-e-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-e,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-e,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-e,skip
> +igt@kms_universal_plane@universal-plane-pipe-f-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-f-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-f,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-f,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-f,skip
> +igt@kms_vblank@invalid,pass
> +igt@kms_vblank@crtc-id,pass
> +igt@kms_vblank@pipe-a-query-idle,pass
> +igt@kms_vblank@pipe-a-query-idle-hang,skip
> +igt@kms_vblank@pipe-a-query-forked,pass
> +igt@kms_vblank@pipe-a-query-forked-hang,skip
> +igt@kms_vblank@pipe-a-query-busy,pass
> +igt@kms_vblank@pipe-a-query-busy-hang,skip
> +igt@kms_vblank@pipe-a-query-forked-busy,pass
> +igt@kms_vblank@pipe-a-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-a-wait-idle,pass
> +igt@kms_vblank@pipe-a-wait-idle-hang,skip
> +igt@kms_vblank@pipe-a-wait-forked,pass
> +igt@kms_vblank@pipe-a-wait-forked-hang,skip
> +igt@kms_vblank@pipe-a-wait-busy,pass
> +igt@kms_vblank@pipe-a-wait-busy-hang,skip
> +igt@kms_vblank@pipe-a-wait-forked-busy,pass
> +igt@kms_vblank@pipe-a-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-a-ts-continuation-idle,pass
> +igt@kms_vblank@pipe-a-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-a-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-a-ts-continuation-modeset,pass
> +igt@kms_vblank@pipe-a-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-b-accuracy-idle,pass
> +igt@kms_vblank@pipe-b-query-idle,pass
> +igt@kms_vblank@pipe-b-query-idle-hang,skip
> +igt@kms_vblank@pipe-b-query-forked,pass
> +igt@kms_vblank@pipe-b-query-forked-hang,skip
> +igt@kms_vblank@pipe-b-query-busy,pass
> +igt@kms_vblank@pipe-b-query-busy-hang,skip
> +igt@kms_vblank@pipe-b-query-forked-busy,pass
> +igt@kms_vblank@pipe-b-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-b-wait-idle,pass
> +igt@kms_vblank@pipe-b-wait-idle-hang,skip
> +igt@kms_vblank@pipe-b-wait-forked,pass
> +igt@kms_vblank@pipe-b-wait-forked-hang,skip
> +igt@kms_vblank@pipe-b-wait-busy,pass
> +igt@kms_vblank@pipe-b-wait-busy-hang,skip
> +igt@kms_vblank@pipe-b-wait-forked-busy,pass
> +igt@kms_vblank@pipe-b-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-b-ts-continuation-idle,pass
> +igt@kms_vblank@pipe-b-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-b-ts-continuation-modeset,pass
> +igt@kms_vblank@pipe-b-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-b-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-c-accuracy-idle,skip
> +igt@kms_vblank@pipe-c-query-idle,skip
> +igt@kms_vblank@pipe-c-query-idle-hang,skip
> +igt@kms_vblank@pipe-c-query-forked,skip
> +igt@kms_vblank@pipe-c-query-forked-hang,skip
> +igt@kms_vblank@pipe-c-query-busy,skip
> +igt@kms_vblank@pipe-c-query-busy-hang,skip
> +igt@kms_vblank@pipe-c-query-forked-busy,skip
> +igt@kms_vblank@pipe-c-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-c-wait-idle,skip
> +igt@kms_vblank@pipe-c-wait-idle-hang,skip
> +igt@kms_vblank@pipe-c-wait-forked,skip
> +igt@kms_vblank@pipe-c-wait-forked-hang,skip
> +igt@kms_vblank@pipe-c-wait-busy,skip
> +igt@kms_vblank@pipe-c-wait-busy-hang,skip
> +igt@kms_vblank@pipe-c-wait-forked-busy,skip
> +igt@kms_vblank@pipe-c-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-c-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-c-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-c-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-c-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-c-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-c-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-d-accuracy-idle,skip
> +igt@kms_vblank@pipe-d-query-idle,skip
> +igt@kms_vblank@pipe-d-query-idle-hang,skip
> +igt@kms_vblank@pipe-d-query-forked,skip
> +igt@kms_vblank@pipe-d-query-forked-hang,skip
> +igt@kms_vblank@pipe-d-query-busy,skip
> +igt@kms_vblank@pipe-d-query-busy-hang,skip
> +igt@kms_vblank@pipe-d-query-forked-busy,skip
> +igt@kms_vblank@pipe-d-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-d-wait-idle,skip
> +igt@kms_vblank@pipe-d-wait-idle-hang,skip
> +igt@kms_vblank@pipe-d-wait-forked,skip
> +igt@kms_vblank@pipe-d-wait-forked-hang,skip
> +igt@kms_vblank@pipe-d-wait-busy,skip
> +igt@kms_vblank@pipe-d-wait-busy-hang,skip
> +igt@kms_vblank@pipe-d-wait-forked-busy,skip
> +igt@kms_vblank@pipe-d-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-d-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-d-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-d-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-d-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-d-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-d-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-e-accuracy-idle,skip
> +igt@kms_vblank@pipe-e-query-idle,skip
> +igt@kms_vblank@pipe-e-query-idle-hang,skip
> +igt@kms_vblank@pipe-e-query-forked,skip
> +igt@kms_vblank@pipe-e-query-forked-hang,skip
> +igt@kms_vblank@pipe-e-query-busy,skip
> +igt@kms_vblank@pipe-e-query-busy-hang,skip
> +igt@kms_vblank@pipe-e-query-forked-busy,skip
> +igt@kms_vblank@pipe-e-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-e-wait-idle,skip
> +igt@kms_vblank@pipe-e-wait-idle-hang,skip
> +igt@kms_vblank@pipe-e-wait-forked,skip
> +igt@kms_vblank@pipe-e-wait-forked-hang,skip
> +igt@kms_vblank@pipe-e-wait-busy,skip
> +igt@kms_vblank@pipe-e-wait-busy-hang,skip
> +igt@kms_vblank@pipe-e-wait-forked-busy,skip
> +igt@kms_vblank@pipe-e-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-e-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-e-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-e-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-e-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-e-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-e-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-f-accuracy-idle,skip
> +igt@kms_vblank@pipe-f-query-idle,skip
> +igt@kms_vblank@pipe-f-query-idle-hang,skip
> +igt@kms_vblank@pipe-f-query-forked,skip
> +igt@kms_vblank@pipe-f-query-forked-hang,skip
> +igt@kms_vblank@pipe-f-query-busy,skip
> +igt@kms_vblank@pipe-f-query-busy-hang,skip
> +igt@kms_vblank@pipe-f-query-forked-busy,skip
> +igt@kms_vblank@pipe-f-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-f-wait-idle,skip
> +igt@kms_vblank@pipe-f-wait-idle-hang,skip
> +igt@kms_vblank@pipe-f-wait-forked,skip
> +igt@kms_vblank@pipe-f-wait-forked-hang,skip
> +igt@kms_vblank@pipe-f-wait-busy,skip
> +igt@kms_vblank@pipe-f-wait-busy-hang,skip
> +igt@kms_vblank@pipe-f-wait-forked-busy,skip
> +igt@kms_vblank@pipe-f-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-f-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-f-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-f-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-f-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-f-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-f-ts-continuation-modeset-rpm,skip
> +igt@kms_vrr@flip-basic,skip
> +igt@kms_vrr@flip-dpms,skip
> +igt@kms_vrr@flipline,skip
> +igt@kms_async_flip@async-flip-with-page-flip-events,skip
> +igt@kms_async_flip@alternate-sync-async-flip,skip
> +igt@kms_async_flip@test-time-stamp,skip
> +igt@kms_async_flip@test-cursor,skip
> +igt@kms_async_flip@invalid-async-flip,skip
> +igt@kms_async_flip@crc,skip
> diff --git a/drivers/gpu/drm/msm/ci/msm_a630_results.txt b/drivers/gpu/drm/msm/ci/msm_a630_results.txt
> new file mode 100644
> index 000000000000..18ebfae09f1a
> --- /dev/null
> +++ b/drivers/gpu/drm/msm/ci/msm_a630_results.txt
> @@ -0,0 +1,422 @@
> +igt@core_auth@getclient-simple,dmesg-warn
> +igt@core_auth@getclient-master-drop,pass
> +igt@core_auth@basic-auth,pass
> +igt@core_auth@many-magics,pass
> +igt@core_getclient,pass
> +igt@core_getstats,pass
> +igt@core_getversion,pass
> +igt@core_setmaster_vs_auth,pass
> +igt@drm_read@invalid-buffer,pass
> +igt@drm_read@fault-buffer,pass
> +igt@drm_read@empty-block,pass
> +igt@drm_read@empty-nonblock,pass
> +igt@drm_read@short-buffer-block,pass
> +igt@drm_read@short-buffer-nonblock,pass
> +igt@drm_read@short-buffer-wakeup,pass
> +igt@kms_addfb_basic@unused-handle,pass
> +igt@kms_addfb_basic@unused-pitches,pass
> +igt@kms_addfb_basic@unused-offsets,pass
> +igt@kms_addfb_basic@unused-modifier,pass
> +igt@kms_addfb_basic@clobberred-modifier,skip
> +igt@kms_addfb_basic@invalid-smem-bo-on-discrete,skip
> +igt@kms_addfb_basic@legacy-format,dmesg-warn
> +igt@kms_addfb_basic@no-handle,pass
> +igt@kms_addfb_basic@basic,pass
> +igt@kms_addfb_basic@bad-pitch-0,pass
> +igt@kms_addfb_basic@bad-pitch-32,pass
> +igt@kms_addfb_basic@bad-pitch-63,pass
> +igt@kms_addfb_basic@bad-pitch-128,pass
> +igt@kms_addfb_basic@bad-pitch-256,pass
> +igt@kms_addfb_basic@bad-pitch-1024,pass
> +igt@kms_addfb_basic@bad-pitch-999,pass
> +igt@kms_addfb_basic@bad-pitch-65536,pass
> +igt@kms_addfb_basic@size-max,pass
> +igt@kms_addfb_basic@too-wide,pass
> +igt@kms_addfb_basic@too-high,dmesg-warn
> +igt@kms_addfb_basic@bo-too-small,pass
> +igt@kms_addfb_basic@small-bo,pass
> +igt@kms_addfb_basic@bo-too-small-due-to-tiling,skip
> +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> +igt@kms_addfb_basic@addfb25-bad-modifier,dmesg-warn
> +igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy,skip
> +igt@kms_addfb_basic@addfb25-x-tiled-legacy,skip
> +igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling,skip
> +igt@kms_addfb_basic@addfb25-y-tiled-legacy,skip
> +igt@kms_addfb_basic@addfb25-yf-tiled-legacy,skip
> +igt@kms_addfb_basic@addfb25-y-tiled-small-legacy,skip
> +igt@kms_addfb_basic@addfb25-4-tiled,skip
> +igt@kms_addfb_basic@basic-x-tiled-legacy,skip
> +igt@kms_addfb_basic@framebuffer-vs-set-tiling,skip
> +igt@kms_addfb_basic@tile-pitch-mismatch,skip
> +igt@kms_addfb_basic@basic-y-tiled-legacy,skip
> +igt@kms_addfb_basic@invalid-get-prop-any,pass
> +igt@kms_addfb_basic@invalid-get-prop,pass
> +igt@kms_addfb_basic@invalid-set-prop-any,pass
> +igt@kms_addfb_basic@invalid-set-prop,pass
> +igt@kms_addfb_basic@master-rmfb,pass
> +igt@kms_atomic@plane-overlay-legacy,dmesg-warn
> +igt@kms_atomic@plane-primary-legacy,dmesg-warn
> +igt@kms_atomic@plane-primary-overlay-mutable-zpos,dmesg-warn
> +igt@kms_atomic@plane-immutable-zpos,dmesg-warn
> +igt@kms_atomic@test-only,dmesg-warn
> +igt@kms_atomic@plane-cursor-legacy,dmesg-warn
> +igt@kms_atomic@plane-invalid-params,dmesg-warn
> +igt@kms_atomic@plane-invalid-params-fence,skip
> +igt@kms_atomic@crtc-invalid-params,dmesg-warn
> +igt@kms_atomic@crtc-invalid-params-fence,skip
> +igt@kms_atomic@atomic-invalid-params,dmesg-warn
> +igt@kms_atomic@atomic_plane_damage,dmesg-warn
> +igt@kms_atomic_interruptible@legacy-setmode,skip
> +igt@kms_atomic_interruptible@atomic-setmode,skip
> +igt@kms_atomic_interruptible@legacy-dpms,skip
> +igt@kms_atomic_interruptible@legacy-pageflip,skip
> +igt@kms_atomic_interruptible@legacy-cursor,skip
> +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> +igt@kms_content_protection@legacy,skip
> +igt@kms_content_protection@atomic,skip
> +igt@kms_content_protection@atomic-dpms,skip
> +igt@kms_content_protection@lic,skip
> +igt@kms_content_protection@type1,skip
> +igt@kms_content_protection@mei_interface,skip
> +igt@kms_content_protection@content_type_change,skip
> +igt@kms_content_protection@uevent,skip
> +igt@kms_content_protection@srm,skip
> +igt@kms_content_protection@dp-mst-type-0,skip
> +igt@kms_content_protection@dp-mst-lic-type-0,skip
> +igt@kms_content_protection@dp-mst-type-1,skip
> +igt@kms_content_protection@dp-mst-lic-type-1,skip
> +igt@kms_dp_aux_dev,skip
> +igt@kms_flip_event_leak,dmesg-warn
> +igt@kms_getfb@getfb-handle-zero,pass
> +igt@kms_getfb@getfb-handle-valid,pass
> +igt@kms_getfb@getfb-handle-closed,pass
> +igt@kms_getfb@getfb-handle-not-fb,pass
> +igt@kms_getfb@getfb-addfb-different-handles,pass
> +igt@kms_getfb@getfb-repeated-different-handles,pass
> +igt@kms_getfb@getfb-reject-ccs,skip
> +igt@kms_getfb@getfb2-handle-zero,pass
> +igt@kms_getfb@getfb2-handle-closed,pass
> +igt@kms_getfb@getfb2-handle-not-fb,pass
> +igt@kms_getfb@getfb2-accept-ccs,skip
> +igt@kms_getfb@getfb2-into-addfb2,pass
> +igt@kms_getfb@getfb-handle-protection,pass
> +igt@kms_getfb@getfb2-handle-protection,pass
> +igt@kms_hdmi_inject@inject-4k,skip
> +igt@kms_hdmi_inject@inject-audio,skip
> +igt@kms_hdr@bpc-switch,skip
> +igt@kms_hdr@bpc-switch-dpms,skip
> +igt@kms_hdr@static-toggle,skip
> +igt@kms_hdr@static-toggle-dpms,skip
> +igt@kms_hdr@static-swap,skip
> +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,pass
> +igt@kms_pipe_crc_basic@bad-source,pass
> +igt@kms_pipe_crc_basic@read-crc-pipe-a,pass
> +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,pass
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,pass
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,pass
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,dmesg-warn
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-a,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,dmesg-warn
> +igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-b,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-c,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-c,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-c,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-d,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-d,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-e,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-e-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-e,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-e,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-e,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-f,skip
> +igt@kms_pipe_crc_basic@read-crc-pipe-f-frame-sequence,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f,skip
> +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f-frame-sequence,skip
> +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-f,skip
> +igt@kms_pipe_crc_basic@hang-read-crc-pipe-f,skip
> +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-f,skip
> +igt@kms_plane_lowres@pipe-a-tiling-none,skip
> +igt@kms_plane_lowres@pipe-a-tiling-x,skip
> +igt@kms_plane_lowres@pipe-a-tiling-y,skip
> +igt@kms_plane_lowres@pipe-a-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-a-tiling-4,skip
> +igt@kms_plane_lowres@pipe-b-tiling-none,skip
> +igt@kms_plane_lowres@pipe-b-tiling-x,skip
> +igt@kms_plane_lowres@pipe-b-tiling-y,skip
> +igt@kms_plane_lowres@pipe-b-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-b-tiling-4,skip
> +igt@kms_plane_lowres@pipe-c-tiling-none,skip
> +igt@kms_plane_lowres@pipe-c-tiling-x,skip
> +igt@kms_plane_lowres@pipe-c-tiling-y,skip
> +igt@kms_plane_lowres@pipe-c-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-c-tiling-4,skip
> +igt@kms_plane_lowres@pipe-d-tiling-none,skip
> +igt@kms_plane_lowres@pipe-d-tiling-x,skip
> +igt@kms_plane_lowres@pipe-d-tiling-y,skip
> +igt@kms_plane_lowres@pipe-d-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-d-tiling-4,skip
> +igt@kms_plane_lowres@pipe-e-tiling-none,skip
> +igt@kms_plane_lowres@pipe-e-tiling-x,skip
> +igt@kms_plane_lowres@pipe-e-tiling-y,skip
> +igt@kms_plane_lowres@pipe-e-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-e-tiling-4,skip
> +igt@kms_plane_lowres@pipe-f-tiling-none,skip
> +igt@kms_plane_lowres@pipe-f-tiling-x,skip
> +igt@kms_plane_lowres@pipe-f-tiling-y,skip
> +igt@kms_plane_lowres@pipe-f-tiling-yf,skip
> +igt@kms_plane_lowres@pipe-f-tiling-4,skip
> +igt@kms_prop_blob@basic,pass
> +igt@kms_prop_blob@blob-prop-core,pass
> +igt@kms_prop_blob@blob-prop-validate,pass
> +igt@kms_prop_blob@blob-prop-lifetime,pass
> +igt@kms_prop_blob@blob-multiple,pass
> +igt@kms_prop_blob@invalid-get-prop-any,pass
> +igt@kms_prop_blob@invalid-get-prop,pass
> +igt@kms_prop_blob@invalid-set-prop-any,pass
> +igt@kms_prop_blob@invalid-set-prop,pass
> +igt@kms_rmfb@rmfb-ioctl,pass
> +igt@kms_rmfb@close-fd,fail
> +igt@kms_rotation_crc@primary-rotation-90,skip
> +igt@kms_rotation_crc@primary-rotation-180,skip
> +igt@kms_rotation_crc@primary-rotation-270,skip
> +igt@kms_rotation_crc@sprite-rotation-90,skip
> +igt@kms_rotation_crc@sprite-rotation-180,skip
> +igt@kms_rotation_crc@sprite-rotation-270,skip
> +igt@kms_rotation_crc@cursor-rotation-180,skip
> +igt@kms_rotation_crc@sprite-rotation-90-pos-100-0,skip
> +igt@kms_rotation_crc@bad-pixel-format,skip
> +igt@kms_rotation_crc@bad-tiling,skip
> +igt@kms_rotation_crc@primary-x-tiled-reflect-x-0,skip
> +igt@kms_rotation_crc@primary-x-tiled-reflect-x-180,skip
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-0,skip
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-90,skip
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-180,skip
> +igt@kms_rotation_crc@primary-y-tiled-reflect-x-270,skip
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0,skip
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90,skip
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180,skip
> +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270,skip
> +igt@kms_rotation_crc@primary-4-tiled-reflect-x-0,skip
> +igt@kms_rotation_crc@primary-4-tiled-reflect-x-180,skip
> +igt@kms_rotation_crc@multiplane-rotation,skip
> +igt@kms_rotation_crc@multiplane-rotation-cropping-top,skip
> +igt@kms_rotation_crc@multiplane-rotation-cropping-bottom,skip
> +igt@kms_rotation_crc@exhaust-fences,skip
> +igt@kms_selftest@all,skip
> +igt@kms_setmode@basic@pipe-a-edp-1,dmesg-warn
> +igt@kms_setmode@basic,skip
> +igt@kms_setmode@basic-clone-single-crtc,skip
> +igt@kms_setmode@invalid-clone-single-crtc,skip
> +igt@kms_setmode@invalid-clone-exclusive-crtc,skip
> +igt@kms_setmode@clone-exclusive-crtc,skip
> +igt@kms_setmode@invalid-clone-single-crtc-stealing,skip
> +igt@msm_mapping@sqefw,dmesg-fail
> +igt@msm_mapping@shadow,dmesg-fail
> +igt@msm_recovery@hangcheck,dmesg-warn
> +igt@msm_recovery@gpu-fault,dmesg-warn
> +igt@msm_recovery@iova-fault,dmesg-warn
> +igt@msm_submit@empty-submit,pass
> +igt@msm_submit@invalid-queue-submit,pass
> +igt@msm_submit@invalid-flags-submit,pass
> +igt@msm_submit@invalid-in-fence-submit,pass
> +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> +igt@msm_submit@valid-submit,pass
> +igt@kms_sysfs_edid_timing,pass
> +igt@kms_universal_plane@universal-plane-pipe-a-functional,dmesg-fail
> +igt@kms_universal_plane@universal-plane-pipe-a-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,dmesg-warn
> +igt@kms_universal_plane@cursor-fb-leak-pipe-a,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-a,skip
> +igt@kms_universal_plane@universal-plane-pipe-b-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-b-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-b,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-b,skip
> +igt@kms_universal_plane@universal-plane-pipe-c-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-c-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-c,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-c,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-c,skip
> +igt@kms_universal_plane@universal-plane-pipe-d-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-d-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-d,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-d,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-d,skip
> +igt@kms_universal_plane@universal-plane-pipe-e-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-e-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-e,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-e,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-e,skip
> +igt@kms_universal_plane@universal-plane-pipe-f-functional,skip
> +igt@kms_universal_plane@universal-plane-pipe-f-sanity,skip
> +igt@kms_universal_plane@disable-primary-vs-flip-pipe-f,skip
> +igt@kms_universal_plane@cursor-fb-leak-pipe-f,skip
> +igt@kms_universal_plane@universal-plane-gen9-features-pipe-f,skip
> +igt@kms_vblank@invalid,dmesg-warn
> +igt@kms_vblank@crtc-id,dmesg-warn
> +igt@kms_vblank@pipe-a-query-idle,dmesg-warn
> +igt@kms_vblank@pipe-a-query-idle-hang,skip
> +igt@kms_vblank@pipe-a-query-forked,dmesg-warn
> +igt@kms_vblank@pipe-a-query-forked-hang,skip
> +igt@kms_vblank@pipe-a-query-busy,dmesg-warn
> +igt@kms_vblank@pipe-a-query-busy-hang,skip
> +igt@kms_vblank@pipe-a-query-forked-busy,dmesg-warn
> +igt@kms_vblank@pipe-a-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-a-wait-idle,dmesg-warn
> +igt@kms_vblank@pipe-a-wait-idle-hang,skip
> +igt@kms_vblank@pipe-a-wait-forked,dmesg-warn
> +igt@kms_vblank@pipe-a-wait-forked-hang,skip
> +igt@kms_vblank@pipe-a-wait-busy,dmesg-warn
> +igt@kms_vblank@pipe-a-wait-busy-hang,skip
> +igt@kms_vblank@pipe-a-wait-forked-busy,dmesg-warn
> +igt@kms_vblank@pipe-a-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-a-ts-continuation-idle,dmesg-warn
> +igt@kms_vblank@pipe-a-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-a-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-a-ts-continuation-modeset,dmesg-warn
> +igt@kms_vblank@pipe-a-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-b-accuracy-idle,skip
> +igt@kms_vblank@pipe-b-query-idle,skip
> +igt@kms_vblank@pipe-b-query-idle-hang,skip
> +igt@kms_vblank@pipe-b-query-forked,skip
> +igt@kms_vblank@pipe-b-query-forked-hang,skip
> +igt@kms_vblank@pipe-b-query-busy,skip
> +igt@kms_vblank@pipe-b-query-busy-hang,skip
> +igt@kms_vblank@pipe-b-query-forked-busy,skip
> +igt@kms_vblank@pipe-b-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-b-wait-idle,skip
> +igt@kms_vblank@pipe-b-wait-idle-hang,skip
> +igt@kms_vblank@pipe-b-wait-forked,skip
> +igt@kms_vblank@pipe-b-wait-forked-hang,skip
> +igt@kms_vblank@pipe-b-wait-busy,skip
> +igt@kms_vblank@pipe-b-wait-busy-hang,skip
> +igt@kms_vblank@pipe-b-wait-forked-busy,skip
> +igt@kms_vblank@pipe-b-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-b-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-b-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-b-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-b-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-c-accuracy-idle,skip
> +igt@kms_vblank@pipe-c-query-idle,skip
> +igt@kms_vblank@pipe-c-query-idle-hang,skip
> +igt@kms_vblank@pipe-c-query-forked,skip
> +igt@kms_vblank@pipe-c-query-forked-hang,skip
> +igt@kms_vblank@pipe-c-query-busy,skip
> +igt@kms_vblank@pipe-c-query-busy-hang,skip
> +igt@kms_vblank@pipe-c-query-forked-busy,skip
> +igt@kms_vblank@pipe-c-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-c-wait-idle,skip
> +igt@kms_vblank@pipe-c-wait-idle-hang,skip
> +igt@kms_vblank@pipe-c-wait-forked,skip
> +igt@kms_vblank@pipe-c-wait-forked-hang,skip
> +igt@kms_vblank@pipe-c-wait-busy,skip
> +igt@kms_vblank@pipe-c-wait-busy-hang,skip
> +igt@kms_vblank@pipe-c-wait-forked-busy,skip
> +igt@kms_vblank@pipe-c-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-c-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-c-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-c-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-c-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-c-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-c-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-d-accuracy-idle,skip
> +igt@kms_vblank@pipe-d-query-idle,skip
> +igt@kms_vblank@pipe-d-query-idle-hang,skip
> +igt@kms_vblank@pipe-d-query-forked,skip
> +igt@kms_vblank@pipe-d-query-forked-hang,skip
> +igt@kms_vblank@pipe-d-query-busy,skip
> +igt@kms_vblank@pipe-d-query-busy-hang,skip
> +igt@kms_vblank@pipe-d-query-forked-busy,skip
> +igt@kms_vblank@pipe-d-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-d-wait-idle,skip
> +igt@kms_vblank@pipe-d-wait-idle-hang,skip
> +igt@kms_vblank@pipe-d-wait-forked,skip
> +igt@kms_vblank@pipe-d-wait-forked-hang,skip
> +igt@kms_vblank@pipe-d-wait-busy,skip
> +igt@kms_vblank@pipe-d-wait-busy-hang,skip
> +igt@kms_vblank@pipe-d-wait-forked-busy,skip
> +igt@kms_vblank@pipe-d-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-d-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-d-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-d-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-d-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-d-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-d-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-e-accuracy-idle,skip
> +igt@kms_vblank@pipe-e-query-idle,skip
> +igt@kms_vblank@pipe-e-query-idle-hang,skip
> +igt@kms_vblank@pipe-e-query-forked,skip
> +igt@kms_vblank@pipe-e-query-forked-hang,skip
> +igt@kms_vblank@pipe-e-query-busy,skip
> +igt@kms_vblank@pipe-e-query-busy-hang,skip
> +igt@kms_vblank@pipe-e-query-forked-busy,skip
> +igt@kms_vblank@pipe-e-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-e-wait-idle,skip
> +igt@kms_vblank@pipe-e-wait-idle-hang,skip
> +igt@kms_vblank@pipe-e-wait-forked,skip
> +igt@kms_vblank@pipe-e-wait-forked-hang,skip
> +igt@kms_vblank@pipe-e-wait-busy,skip
> +igt@kms_vblank@pipe-e-wait-busy-hang,skip
> +igt@kms_vblank@pipe-e-wait-forked-busy,skip
> +igt@kms_vblank@pipe-e-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-e-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-e-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-e-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-e-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-e-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-e-ts-continuation-modeset-rpm,skip
> +igt@kms_vblank@pipe-f-accuracy-idle,skip
> +igt@kms_vblank@pipe-f-query-idle,skip
> +igt@kms_vblank@pipe-f-query-idle-hang,skip
> +igt@kms_vblank@pipe-f-query-forked,skip
> +igt@kms_vblank@pipe-f-query-forked-hang,skip
> +igt@kms_vblank@pipe-f-query-busy,skip
> +igt@kms_vblank@pipe-f-query-busy-hang,skip
> +igt@kms_vblank@pipe-f-query-forked-busy,skip
> +igt@kms_vblank@pipe-f-query-forked-busy-hang,skip
> +igt@kms_vblank@pipe-f-wait-idle,skip
> +igt@kms_vblank@pipe-f-wait-idle-hang,skip
> +igt@kms_vblank@pipe-f-wait-forked,skip
> +igt@kms_vblank@pipe-f-wait-forked-hang,skip
> +igt@kms_vblank@pipe-f-wait-busy,skip
> +igt@kms_vblank@pipe-f-wait-busy-hang,skip
> +igt@kms_vblank@pipe-f-wait-forked-busy,skip
> +igt@kms_vblank@pipe-f-wait-forked-busy-hang,skip
> +igt@kms_vblank@pipe-f-ts-continuation-idle,skip
> +igt@kms_vblank@pipe-f-ts-continuation-idle-hang,skip
> +igt@kms_vblank@pipe-f-ts-continuation-dpms-rpm,skip
> +igt@kms_vblank@pipe-f-ts-continuation-modeset,skip
> +igt@kms_vblank@pipe-f-ts-continuation-modeset-hang,skip
> +igt@kms_vblank@pipe-f-ts-continuation-modeset-rpm,skip
> +igt@kms_vrr@flip-basic,skip
> +igt@kms_vrr@flip-dpms,skip
> +igt@kms_vrr@flipline,skip
> +igt@kms_async_flip@async-flip-with-page-flip-events,skip
> +igt@kms_async_flip@alternate-sync-async-flip,skip
> +igt@kms_async_flip@test-time-stamp,skip
> +igt@kms_async_flip@test-cursor,skip
> +igt@kms_async_flip@invalid-async-flip,skip
> +igt@kms_async_flip@crc,skip

-- 
Jani Nikula, Intel Open Source Graphics Center

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [RFC] drm/msm: Add initial ci/ subdirectory
  2022-05-11 14:26 ` [RFC] drm/msm: " Jani Nikula
@ 2022-05-11 14:41   ` Rob Clark
  0 siblings, 0 replies; 49+ messages in thread
From: Rob Clark @ 2022-05-11 14:41 UTC (permalink / raw)
  To: Jani Nikula
  Cc: freedreno, Tomeu Vizoso, Jonathan Corbet, David Airlie,
	linux-arm-msm, open list:DOCUMENTATION, Abhinav Kumar,
	Linux Kernel Mailing List, Arkadiusz Hiler, dri-devel,
	Thomas Zimmermann, Sean Paul, Petri Latvala

On Wed, May 11, 2022 at 7:26 AM Jani Nikula <jani.nikula@linux.intel.com> wrote:
>
> On Tue, 10 May 2022, Tomeu Vizoso <tomeu.vizoso@collabora.com> wrote:
> > And use it to store expectations about what the drm/msm driver is
> > supposed to pass in the IGT test suite.
> >
> > Also include a configuration file that points to the out-of-tree CI
> > scripts.
> >
> > By storing the test expectations along the code we can make sure both
> > stay in sync with each other, and so we can know when a code change
> > breaks those expectations.
> >
> > This will allow all contributors to drm/msm to reuse the infrastructure
> > already in gitlab.freedesktop.org to test the driver on several
> > generations of the hardware.
>
> Cc: Petri and Arek
>
> The tests and subtests and their names are inevitably going to change
> over time. I don't think there are any guarantees that they're
> stable. How are you going to handle such changes with the test names and
> results committed to the kernel tree?
>

drivers/gpu/drm/msm/ci/gitlab-ci.yml will (in next iteration of this
RFC) point at a specific commit SHA in the gfx-ci/drm-ci tree.  That
tree points at a specific i-g-t (and in future, deqp/etc) commit SHA.
So we can update the expectation in sync with upreving i-g-t, just
like we do with mesa CI.

BR,
-R

>
> BR,
> Jani.
>
>
> >
> > Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> > ---
> >  Documentation/gpu/msm_automated_testing.rst |  70 ++++
> >  drivers/gpu/drm/msm/ci/gitlab-ci.yml        |  11 +
> >  drivers/gpu/drm/msm/ci/msm.testlist         | 429 ++++++++++++++++++++
> >  drivers/gpu/drm/msm/ci/msm_a360_results.txt | 421 +++++++++++++++++++
> >  drivers/gpu/drm/msm/ci/msm_a530_results.txt | 421 +++++++++++++++++++
> >  drivers/gpu/drm/msm/ci/msm_a618_results.txt | 422 +++++++++++++++++++
> >  drivers/gpu/drm/msm/ci/msm_a630_results.txt | 422 +++++++++++++++++++
> >  7 files changed, 2196 insertions(+)
> >  create mode 100644 Documentation/gpu/msm_automated_testing.rst
> >  create mode 100644 drivers/gpu/drm/msm/ci/gitlab-ci.yml
> >  create mode 100644 drivers/gpu/drm/msm/ci/msm.testlist
> >  create mode 100644 drivers/gpu/drm/msm/ci/msm_a360_results.txt
> >  create mode 100644 drivers/gpu/drm/msm/ci/msm_a530_results.txt
> >  create mode 100644 drivers/gpu/drm/msm/ci/msm_a618_results.txt
> >  create mode 100644 drivers/gpu/drm/msm/ci/msm_a630_results.txt
> >
> > diff --git a/Documentation/gpu/msm_automated_testing.rst b/Documentation/gpu/msm_automated_testing.rst
> > new file mode 100644
> > index 000000000000..fe59474569c2
> > --- /dev/null
> > +++ b/Documentation/gpu/msm_automated_testing.rst
> > @@ -0,0 +1,70 @@
> > +.. SPDX-License-Identifier: GPL-2.0+
> > +
> > +=========================================
> > +Automated testing of MSM DRM driver
> > +=========================================
> > +
> > +
> > +Introduction
> > +============
> > +
> > +Making sure that changes to a driver don't introduce regressions can be very time consuming when lots of different hardware configurations need to be tested. Moreover, it isn't practical for each person interested in this testing to have to acquire and maintain what can be a considerable amount of hardware.
> > +
> > +Also, it is desirable for developers to check for regressions in their code by themselves, instead of relying on the maintainer finding them and then reporting back.
> > +
> > +There are facilities in gitlab.freedesktop.org to automatically test Mesa that can be used as well for testing DRM drivers such as drm/msm. This document explains how people interested in testing the drm/msm driver can use this shared infrastructure to save quite some time and effort.
> > +
> > +
> > +Relevant files
> > +==============
> > +
> > +drivers/gpu/drm/msm/ci/gitlab-ci.yml
> > +------------------------------------
> > +
> > +Specifies the specific version of the scripts to be used. GitLab CI will use the values defined in this file to fetch the right scripts.
> > +
> > +
> > +drivers/gpu/drm/msm/ci/msm.testlist
> > +-----------------------------------
> > +
> > +Specifies the tests that the current code is expected to be able to reliably run. These tests are expected to not hang the DUT (device under testing) when running on the revision they belong to, and to give consistent results.
> > +
> > +
> > +drivers/gpu/drm/msm/ci/msm_*_results.txt
> > +----------------------------------------
> > +
> > +Specifies the expected results of running this specific kernel revision on a given hardware configuration.
> > +
> > +
> > +How to enable automated testing on your tree
> > +============================================
> > +
> > +1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one yet
> > +
> > +2. In your kernel repo's configuration (eg. https://gitlab.freedesktop.org/tomeu/linux/-/settings/ci_cd), change the CI/CD configuration file from .gitlab-ci.yml to drivers/gpu/drm/msm/ci/gitlab-ci.yml.
> > +
> > +3. Next time you push to this repository, you will see a CI pipeline being created (eg. https://gitlab.freedesktop.org/tomeu/linux/-/pipelines)
> > +
> > +4. The various jobs will be run and when the pipeline is finished, all jobs should be green unless a regression has been found.
> > +
> > +
> > +How to update test expectations
> > +===============================
> > +
> > +If your changes to the code fix any tests, you will have to update one or more of the files in drivers/gpu/drm/msm/ci/msm_*_results.txt, for each of the test platforms affected by the change.
> > +
> > +If you have run a pipeline and it failed because of a mismatched test result, you will have been offered a patch at the end of the run that you can apply after reviewing it.
> > +
> > +
> > +How to expand coverage
> > +======================
> > +
> > +If your code changes makes it possible to run more tests (by solving reliability issues, for example), more tests can be added to this list, and then the expected results updated with the patch file that will be printed at the end of each job.
> > +
> > +If there is a need for updating the version of IGT being used (maybe you have added more tests to it), follow the instructions at https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/tree/msm#upreving-igt.
> > +
> > +
> > +How to test your changes to the scripts
> > +==========================================
> > +
> > +For testing changes to the scripts in the drm-ci repo, change the DRM_CI_PROJECT_PATH variable in drivers/gpu/drm/msm/ci/gitlab-ci.yml to match your fork of the project (eg. tomeu/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/msm/ci/gitlab-ci.yml b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
> > new file mode 100644
> > index 000000000000..9b7caa7fcab2
> > --- /dev/null
> > +++ b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
> > @@ -0,0 +1,11 @@
> > +variables:
> > +  # Change this to use your fork of drm-ci
> > +  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
> > +  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha msm
> > +
> > +include:
> > +  - project: *drm-ci-project-path
> > +    ref: *drm-ci-commit-sha
> > +    file:
> > +      - '.msm-gitlab-ci.yml'
> > +      - '.gitlab-ci.yml'
> > diff --git a/drivers/gpu/drm/msm/ci/msm.testlist b/drivers/gpu/drm/msm/ci/msm.testlist
> > new file mode 100644
> > index 000000000000..7c771471dfa2
> > --- /dev/null
> > +++ b/drivers/gpu/drm/msm/ci/msm.testlist
> > @@ -0,0 +1,429 @@
> > +# Keep alphabetically sorted by default
> > +
> > +igt@core_auth@getclient-simple
> > +igt@core_auth@getclient-master-drop
> > +igt@core_auth@basic-auth
> > +igt@core_auth@many-magics
> > +igt@core_getclient
> > +igt@core_getstats
> > +igt@core_getversion
> > +igt@core_setmaster_vs_auth
> > +igt@drm_read@invalid-buffer
> > +igt@drm_read@fault-buffer
> > +igt@drm_read@empty-block
> > +igt@drm_read@empty-nonblock
> > +igt@drm_read@short-buffer-block
> > +igt@drm_read@short-buffer-nonblock
> > +igt@drm_read@short-buffer-wakeup
> > +igt@kms_addfb_basic@unused-handle
> > +igt@kms_addfb_basic@unused-pitches
> > +igt@kms_addfb_basic@unused-offsets
> > +igt@kms_addfb_basic@unused-modifier
> > +igt@kms_addfb_basic@clobberred-modifier
> > +igt@kms_addfb_basic@invalid-smem-bo-on-discrete
> > +igt@kms_addfb_basic@legacy-format
> > +igt@kms_addfb_basic@no-handle
> > +igt@kms_addfb_basic@basic
> > +igt@kms_addfb_basic@bad-pitch-0
> > +igt@kms_addfb_basic@bad-pitch-32
> > +igt@kms_addfb_basic@bad-pitch-63
> > +igt@kms_addfb_basic@bad-pitch-128
> > +igt@kms_addfb_basic@bad-pitch-256
> > +igt@kms_addfb_basic@bad-pitch-1024
> > +igt@kms_addfb_basic@bad-pitch-999
> > +igt@kms_addfb_basic@bad-pitch-65536
> > +igt@kms_addfb_basic@size-max
> > +igt@kms_addfb_basic@too-wide
> > +igt@kms_addfb_basic@too-high
> > +igt@kms_addfb_basic@bo-too-small
> > +igt@kms_addfb_basic@small-bo
> > +igt@kms_addfb_basic@bo-too-small-due-to-tiling
> > +igt@kms_addfb_basic@addfb25-modifier-no-flag
> > +igt@kms_addfb_basic@addfb25-bad-modifier
> > +igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy
> > +igt@kms_addfb_basic@addfb25-x-tiled-legacy
> > +igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling
> > +igt@kms_addfb_basic@addfb25-y-tiled-legacy
> > +igt@kms_addfb_basic@addfb25-yf-tiled-legacy
> > +igt@kms_addfb_basic@addfb25-y-tiled-small-legacy
> > +igt@kms_addfb_basic@addfb25-4-tiled
> > +igt@kms_addfb_basic@basic-x-tiled-legacy
> > +igt@kms_addfb_basic@framebuffer-vs-set-tiling
> > +igt@kms_addfb_basic@tile-pitch-mismatch
> > +igt@kms_addfb_basic@basic-y-tiled-legacy
> > +igt@kms_addfb_basic@invalid-get-prop-any
> > +igt@kms_addfb_basic@invalid-get-prop
> > +igt@kms_addfb_basic@invalid-set-prop-any
> > +igt@kms_addfb_basic@invalid-set-prop
> > +igt@kms_addfb_basic@master-rmfb
> > +igt@kms_atomic@plane-overlay-legacy
> > +igt@kms_atomic@plane-primary-legacy
> > +igt@kms_atomic@plane-primary-overlay-mutable-zpos
> > +igt@kms_atomic@plane-immutable-zpos
> > +igt@kms_atomic@test-only
> > +igt@kms_atomic@plane-cursor-legacy
> > +igt@kms_atomic@plane-invalid-params
> > +igt@kms_atomic@plane-invalid-params-fence
> > +igt@kms_atomic@crtc-invalid-params
> > +igt@kms_atomic@crtc-invalid-params-fence
> > +igt@kms_atomic@atomic-invalid-params
> > +igt@kms_atomic@atomic_plane_damage
> > +igt@kms_atomic_interruptible@legacy-setmode@pipe-a-edp-1
> > +igt@kms_atomic_interruptible@atomic-setmode@pipe-a-edp-1
> > +igt@kms_atomic_interruptible@legacy-dpms@pipe-a-edp-1
> > +igt@kms_atomic_interruptible@legacy-pageflip@pipe-a-edp-1
> > +igt@kms_atomic_interruptible@legacy-cursor@pipe-a-edp-1
> > +igt@kms_atomic_interruptible@universal-setplane-primary@pipe-a-edp-1
> > +igt@kms_atomic_interruptible@universal-setplane-cursor@pipe-a-edp-1
> > +igt@kms_content_protection@legacy
> > +igt@kms_content_protection@atomic
> > +igt@kms_content_protection@atomic-dpms
> > +igt@kms_content_protection@LIC
> > +igt@kms_content_protection@type1
> > +igt@kms_content_protection@mei_interface
> > +igt@kms_content_protection@content_type_change
> > +igt@kms_content_protection@uevent
> > +igt@kms_content_protection@srm
> > +igt@kms_content_protection@dp-mst-type-0
> > +igt@kms_content_protection@dp-mst-lic-type-0
> > +igt@kms_content_protection@dp-mst-type-1
> > +igt@kms_content_protection@dp-mst-lic-type-1
> > +igt@kms_dp_aux_dev
> > +igt@kms_flip_event_leak
> > +igt@kms_getfb@getfb-handle-zero
> > +igt@kms_getfb@getfb-handle-valid
> > +igt@kms_getfb@getfb-handle-closed
> > +igt@kms_getfb@getfb-handle-not-fb
> > +igt@kms_getfb@getfb-addfb-different-handles
> > +igt@kms_getfb@getfb-repeated-different-handles
> > +igt@kms_getfb@getfb-reject-ccs
> > +igt@kms_getfb@getfb2-handle-zero
> > +igt@kms_getfb@getfb2-handle-closed
> > +igt@kms_getfb@getfb2-handle-not-fb
> > +igt@kms_getfb@getfb2-accept-ccs
> > +igt@kms_getfb@getfb2-into-addfb2
> > +igt@kms_getfb@getfb-handle-protection
> > +igt@kms_getfb@getfb2-handle-protection
> > +igt@kms_hdmi_inject@inject-4k
> > +igt@kms_hdmi_inject@inject-audio
> > +igt@kms_hdr@bpc-switch
> > +igt@kms_hdr@bpc-switch-dpms
> > +igt@kms_hdr@static-toggle
> > +igt@kms_hdr@static-toggle-dpms
> > +igt@kms_hdr@static-swap
> > +igt@kms_multipipe_modeset@basic-max-pipe-crc-check
> > +igt@kms_pipe_crc_basic@bad-source
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-a
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-b
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b
> > +igt@kms_pipe_crc_basic@read-crc-pipe-c
> > +igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c-frame-sequence
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-c
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-c
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c
> > +igt@kms_pipe_crc_basic@read-crc-pipe-d
> > +igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d-frame-sequence
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-d
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d
> > +igt@kms_pipe_crc_basic@read-crc-pipe-e
> > +igt@kms_pipe_crc_basic@read-crc-pipe-e-frame-sequence
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e-frame-sequence
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-e
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-e
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-e
> > +igt@kms_pipe_crc_basic@read-crc-pipe-f
> > +igt@kms_pipe_crc_basic@read-crc-pipe-f-frame-sequence
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f-frame-sequence
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-f
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-f
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-f
> > +igt@kms_plane_lowres@pipe-a-tiling-none
> > +igt@kms_plane_lowres@pipe-a-tiling-x
> > +igt@kms_plane_lowres@pipe-a-tiling-y
> > +igt@kms_plane_lowres@pipe-a-tiling-yf
> > +igt@kms_plane_lowres@pipe-a-tiling-4
> > +igt@kms_plane_lowres@pipe-b-tiling-none
> > +igt@kms_plane_lowres@pipe-b-tiling-x
> > +igt@kms_plane_lowres@pipe-b-tiling-y
> > +igt@kms_plane_lowres@pipe-b-tiling-yf
> > +igt@kms_plane_lowres@pipe-b-tiling-4
> > +igt@kms_plane_lowres@pipe-c-tiling-none
> > +igt@kms_plane_lowres@pipe-c-tiling-x
> > +igt@kms_plane_lowres@pipe-c-tiling-y
> > +igt@kms_plane_lowres@pipe-c-tiling-yf
> > +igt@kms_plane_lowres@pipe-c-tiling-4
> > +igt@kms_plane_lowres@pipe-d-tiling-none
> > +igt@kms_plane_lowres@pipe-d-tiling-x
> > +igt@kms_plane_lowres@pipe-d-tiling-y
> > +igt@kms_plane_lowres@pipe-d-tiling-yf
> > +igt@kms_plane_lowres@pipe-d-tiling-4
> > +igt@kms_plane_lowres@pipe-e-tiling-none
> > +igt@kms_plane_lowres@pipe-e-tiling-x
> > +igt@kms_plane_lowres@pipe-e-tiling-y
> > +igt@kms_plane_lowres@pipe-e-tiling-yf
> > +igt@kms_plane_lowres@pipe-e-tiling-4
> > +igt@kms_plane_lowres@pipe-f-tiling-none
> > +igt@kms_plane_lowres@pipe-f-tiling-x
> > +igt@kms_plane_lowres@pipe-f-tiling-y
> > +igt@kms_plane_lowres@pipe-f-tiling-yf
> > +igt@kms_plane_lowres@pipe-f-tiling-4
> > +igt@kms_prop_blob@basic
> > +igt@kms_prop_blob@blob-prop-core
> > +igt@kms_prop_blob@blob-prop-validate
> > +igt@kms_prop_blob@blob-prop-lifetime
> > +igt@kms_prop_blob@blob-multiple
> > +igt@kms_prop_blob@invalid-get-prop-any
> > +igt@kms_prop_blob@invalid-get-prop
> > +igt@kms_prop_blob@invalid-set-prop-any
> > +igt@kms_prop_blob@invalid-set-prop
> > +igt@kms_rmfb@rmfb-ioctl
> > +igt@kms_rmfb@close-fd
> > +igt@kms_rotation_crc@primary-rotation-90
> > +igt@kms_rotation_crc@primary-rotation-180
> > +igt@kms_rotation_crc@primary-rotation-270
> > +igt@kms_rotation_crc@sprite-rotation-90
> > +igt@kms_rotation_crc@sprite-rotation-180
> > +igt@kms_rotation_crc@sprite-rotation-270
> > +igt@kms_rotation_crc@cursor-rotation-180
> > +igt@kms_rotation_crc@sprite-rotation-90-pos-100-0
> > +igt@kms_rotation_crc@bad-pixel-format
> > +igt@kms_rotation_crc@bad-tiling
> > +igt@kms_rotation_crc@primary-x-tiled-reflect-x-0
> > +igt@kms_rotation_crc@primary-x-tiled-reflect-x-180
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-0
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-90
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-180
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-270
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270
> > +igt@kms_rotation_crc@primary-4-tiled-reflect-x-0
> > +igt@kms_rotation_crc@primary-4-tiled-reflect-x-180
> > +igt@kms_rotation_crc@multiplane-rotation
> > +igt@kms_rotation_crc@multiplane-rotation-cropping-top
> > +igt@kms_rotation_crc@multiplane-rotation-cropping-bottom
> > +igt@kms_rotation_crc@exhaust-fences
> > +igt@kms_selftest@all
> > +igt@kms_setmode@basic@pipe-a-edp-1
> > +igt@kms_setmode@basic@pipe-b-edp-1
> > +igt@kms_setmode@basic-clone-single-crtc
> > +igt@kms_setmode@invalid-clone-single-crtc
> > +igt@kms_setmode@invalid-clone-exclusive-crtc
> > +igt@kms_setmode@clone-exclusive-crtc
> > +igt@kms_setmode@invalid-clone-single-crtc-stealing
> > +
> > +# Flakes on a530 with:
> > +# arm-smmu b40000.iommu: Unhandled context fault: fsr=0x408, iova=0x01003000, fsynr=0x13, cbfrsynra=0x0, cb=0
> > +# igt@msm_mapping@ring
> > +
> > +igt@msm_mapping@sqefw
> > +igt@msm_mapping@shadow
> > +igt@msm_recovery@hangcheck
> > +igt@msm_recovery@gpu-fault
> > +igt@msm_recovery@iova-fault
> > +igt@msm_submit@empty-submit
> > +igt@msm_submit@invalid-queue-submit
> > +igt@msm_submit@invalid-flags-submit
> > +igt@msm_submit@invalid-in-fence-submit
> > +igt@msm_submit@invalid-duplicate-bo-submit
> > +igt@msm_submit@invalid-cmd-idx-submit
> > +igt@msm_submit@invalid-cmd-type-submit
> > +igt@msm_submit@valid-submit
> > +igt@kms_sysfs_edid_timing
> > +igt@kms_universal_plane@universal-plane-pipe-a-functional
> > +igt@kms_universal_plane@universal-plane-pipe-a-sanity
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-a
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-a
> > +igt@kms_universal_plane@universal-plane-pipe-b-functional
> > +igt@kms_universal_plane@universal-plane-pipe-b-sanity
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-b
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-b
> > +igt@kms_universal_plane@universal-plane-pipe-c-functional
> > +igt@kms_universal_plane@universal-plane-pipe-c-sanity
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-c
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-c
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-c
> > +igt@kms_universal_plane@universal-plane-pipe-d-functional
> > +igt@kms_universal_plane@universal-plane-pipe-d-sanity
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-d
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-d
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-d
> > +igt@kms_universal_plane@universal-plane-pipe-e-functional
> > +igt@kms_universal_plane@universal-plane-pipe-e-sanity
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-e
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-e
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-e
> > +igt@kms_universal_plane@universal-plane-pipe-f-functional
> > +igt@kms_universal_plane@universal-plane-pipe-f-sanity
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-f
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-f
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-f
> > +igt@kms_vblank@invalid
> > +igt@kms_vblank@crtc-id
> > +igt@kms_vblank@pipe-a-query-idle
> > +igt@kms_vblank@pipe-a-query-idle-hang
> > +igt@kms_vblank@pipe-a-query-forked
> > +igt@kms_vblank@pipe-a-query-forked-hang
> > +igt@kms_vblank@pipe-a-query-busy
> > +igt@kms_vblank@pipe-a-query-busy-hang
> > +igt@kms_vblank@pipe-a-query-forked-busy
> > +igt@kms_vblank@pipe-a-query-forked-busy-hang
> > +igt@kms_vblank@pipe-a-wait-idle
> > +igt@kms_vblank@pipe-a-wait-idle-hang
> > +igt@kms_vblank@pipe-a-wait-forked
> > +igt@kms_vblank@pipe-a-wait-forked-hang
> > +igt@kms_vblank@pipe-a-wait-busy
> > +igt@kms_vblank@pipe-a-wait-busy-hang
> > +igt@kms_vblank@pipe-a-wait-forked-busy
> > +igt@kms_vblank@pipe-a-wait-forked-busy-hang
> > +igt@kms_vblank@pipe-a-ts-continuation-idle
> > +igt@kms_vblank@pipe-a-ts-continuation-idle-hang
> > +igt@kms_vblank@pipe-a-ts-continuation-dpms-rpm
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset-hang
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm
> > +igt@kms_vblank@pipe-b-accuracy-idle
> > +igt@kms_vblank@pipe-b-query-idle
> > +igt@kms_vblank@pipe-b-query-idle-hang
> > +igt@kms_vblank@pipe-b-query-forked
> > +igt@kms_vblank@pipe-b-query-forked-hang
> > +igt@kms_vblank@pipe-b-query-busy
> > +igt@kms_vblank@pipe-b-query-busy-hang
> > +igt@kms_vblank@pipe-b-query-forked-busy
> > +igt@kms_vblank@pipe-b-query-forked-busy-hang
> > +igt@kms_vblank@pipe-b-wait-idle
> > +igt@kms_vblank@pipe-b-wait-idle-hang
> > +igt@kms_vblank@pipe-b-wait-forked
> > +igt@kms_vblank@pipe-b-wait-forked-hang
> > +igt@kms_vblank@pipe-b-wait-busy
> > +igt@kms_vblank@pipe-b-wait-busy-hang
> > +igt@kms_vblank@pipe-b-wait-forked-busy
> > +igt@kms_vblank@pipe-b-wait-forked-busy-hang
> > +igt@kms_vblank@pipe-b-ts-continuation-idle
> > +igt@kms_vblank@pipe-b-ts-continuation-idle-hang
> > +igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset-hang
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset-rpm
> > +igt@kms_vblank@pipe-c-accuracy-idle
> > +igt@kms_vblank@pipe-c-query-idle
> > +igt@kms_vblank@pipe-c-query-idle-hang
> > +igt@kms_vblank@pipe-c-query-forked
> > +igt@kms_vblank@pipe-c-query-forked-hang
> > +igt@kms_vblank@pipe-c-query-busy
> > +igt@kms_vblank@pipe-c-query-busy-hang
> > +igt@kms_vblank@pipe-c-query-forked-busy
> > +igt@kms_vblank@pipe-c-query-forked-busy-hang
> > +igt@kms_vblank@pipe-c-wait-idle
> > +igt@kms_vblank@pipe-c-wait-idle-hang
> > +igt@kms_vblank@pipe-c-wait-forked
> > +igt@kms_vblank@pipe-c-wait-forked-hang
> > +igt@kms_vblank@pipe-c-wait-busy
> > +igt@kms_vblank@pipe-c-wait-busy-hang
> > +igt@kms_vblank@pipe-c-wait-forked-busy
> > +igt@kms_vblank@pipe-c-wait-forked-busy-hang
> > +igt@kms_vblank@pipe-c-ts-continuation-idle
> > +igt@kms_vblank@pipe-c-ts-continuation-idle-hang
> > +igt@kms_vblank@pipe-c-ts-continuation-dpms-rpm
> > +igt@kms_vblank@pipe-c-ts-continuation-modeset
> > +igt@kms_vblank@pipe-c-ts-continuation-modeset-hang
> > +igt@kms_vblank@pipe-c-ts-continuation-modeset-rpm
> > +igt@kms_vblank@pipe-d-accuracy-idle
> > +igt@kms_vblank@pipe-d-query-idle
> > +igt@kms_vblank@pipe-d-query-idle-hang
> > +igt@kms_vblank@pipe-d-query-forked
> > +igt@kms_vblank@pipe-d-query-forked-hang
> > +igt@kms_vblank@pipe-d-query-busy
> > +igt@kms_vblank@pipe-d-query-busy-hang
> > +igt@kms_vblank@pipe-d-query-forked-busy
> > +igt@kms_vblank@pipe-d-query-forked-busy-hang
> > +igt@kms_vblank@pipe-d-wait-idle
> > +igt@kms_vblank@pipe-d-wait-idle-hang
> > +igt@kms_vblank@pipe-d-wait-forked
> > +igt@kms_vblank@pipe-d-wait-forked-hang
> > +igt@kms_vblank@pipe-d-wait-busy
> > +igt@kms_vblank@pipe-d-wait-busy-hang
> > +igt@kms_vblank@pipe-d-wait-forked-busy
> > +igt@kms_vblank@pipe-d-wait-forked-busy-hang
> > +igt@kms_vblank@pipe-d-ts-continuation-idle
> > +igt@kms_vblank@pipe-d-ts-continuation-idle-hang
> > +igt@kms_vblank@pipe-d-ts-continuation-dpms-rpm
> > +igt@kms_vblank@pipe-d-ts-continuation-modeset
> > +igt@kms_vblank@pipe-d-ts-continuation-modeset-hang
> > +igt@kms_vblank@pipe-d-ts-continuation-modeset-rpm
> > +igt@kms_vblank@pipe-e-accuracy-idle
> > +igt@kms_vblank@pipe-e-query-idle
> > +igt@kms_vblank@pipe-e-query-idle-hang
> > +igt@kms_vblank@pipe-e-query-forked
> > +igt@kms_vblank@pipe-e-query-forked-hang
> > +igt@kms_vblank@pipe-e-query-busy
> > +igt@kms_vblank@pipe-e-query-busy-hang
> > +igt@kms_vblank@pipe-e-query-forked-busy
> > +igt@kms_vblank@pipe-e-query-forked-busy-hang
> > +igt@kms_vblank@pipe-e-wait-idle
> > +igt@kms_vblank@pipe-e-wait-idle-hang
> > +igt@kms_vblank@pipe-e-wait-forked
> > +igt@kms_vblank@pipe-e-wait-forked-hang
> > +igt@kms_vblank@pipe-e-wait-busy
> > +igt@kms_vblank@pipe-e-wait-busy-hang
> > +igt@kms_vblank@pipe-e-wait-forked-busy
> > +igt@kms_vblank@pipe-e-wait-forked-busy-hang
> > +igt@kms_vblank@pipe-e-ts-continuation-idle
> > +igt@kms_vblank@pipe-e-ts-continuation-idle-hang
> > +igt@kms_vblank@pipe-e-ts-continuation-dpms-rpm
> > +igt@kms_vblank@pipe-e-ts-continuation-modeset
> > +igt@kms_vblank@pipe-e-ts-continuation-modeset-hang
> > +igt@kms_vblank@pipe-e-ts-continuation-modeset-rpm
> > +igt@kms_vblank@pipe-f-accuracy-idle
> > +igt@kms_vblank@pipe-f-query-idle
> > +igt@kms_vblank@pipe-f-query-idle-hang
> > +igt@kms_vblank@pipe-f-query-forked
> > +igt@kms_vblank@pipe-f-query-forked-hang
> > +igt@kms_vblank@pipe-f-query-busy
> > +igt@kms_vblank@pipe-f-query-busy-hang
> > +igt@kms_vblank@pipe-f-query-forked-busy
> > +igt@kms_vblank@pipe-f-query-forked-busy-hang
> > +igt@kms_vblank@pipe-f-wait-idle
> > +igt@kms_vblank@pipe-f-wait-idle-hang
> > +igt@kms_vblank@pipe-f-wait-forked
> > +igt@kms_vblank@pipe-f-wait-forked-hang
> > +igt@kms_vblank@pipe-f-wait-busy
> > +igt@kms_vblank@pipe-f-wait-busy-hang
> > +igt@kms_vblank@pipe-f-wait-forked-busy
> > +igt@kms_vblank@pipe-f-wait-forked-busy-hang
> > +igt@kms_vblank@pipe-f-ts-continuation-idle
> > +igt@kms_vblank@pipe-f-ts-continuation-idle-hang
> > +igt@kms_vblank@pipe-f-ts-continuation-dpms-rpm
> > +igt@kms_vblank@pipe-f-ts-continuation-modeset
> > +igt@kms_vblank@pipe-f-ts-continuation-modeset-hang
> > +igt@kms_vblank@pipe-f-ts-continuation-modeset-rpm
> > +igt@kms_vrr@flip-basic
> > +igt@kms_vrr@flip-dpms
> > +igt@kms_vrr@flipline
> > +igt@kms_async_flip@async-flip-with-page-flip-events
> > +igt@kms_async_flip@alternate-sync-async-flip
> > +igt@kms_async_flip@test-time-stamp
> > +igt@kms_async_flip@test-cursor
> > +igt@kms_async_flip@invalid-async-flip
> > +igt@kms_async_flip@crc
> > diff --git a/drivers/gpu/drm/msm/ci/msm_a360_results.txt b/drivers/gpu/drm/msm/ci/msm_a360_results.txt
> > new file mode 100644
> > index 000000000000..fd80d2bf2bcb
> > --- /dev/null
> > +++ b/drivers/gpu/drm/msm/ci/msm_a360_results.txt
> > @@ -0,0 +1,421 @@
> > +igt@core_auth@getclient-simple,pass
> > +igt@core_auth@getclient-master-drop,pass
> > +igt@core_auth@basic-auth,pass
> > +igt@core_auth@many-magics,pass
> > +igt@core_getclient,pass
> > +igt@core_getstats,pass
> > +igt@core_getversion,pass
> > +igt@core_setmaster_vs_auth,pass
> > +igt@drm_read@invalid-buffer,skip
> > +igt@drm_read@fault-buffer,skip
> > +igt@drm_read@empty-block,skip
> > +igt@drm_read@empty-nonblock,skip
> > +igt@drm_read@short-buffer-block,skip
> > +igt@drm_read@short-buffer-nonblock,skip
> > +igt@drm_read@short-buffer-wakeup,skip
> > +igt@kms_addfb_basic@unused-handle,pass
> > +igt@kms_addfb_basic@unused-pitches,pass
> > +igt@kms_addfb_basic@unused-offsets,pass
> > +igt@kms_addfb_basic@unused-modifier,pass
> > +igt@kms_addfb_basic@clobberred-modifier,skip
> > +igt@kms_addfb_basic@invalid-smem-bo-on-discrete,skip
> > +igt@kms_addfb_basic@legacy-format,dmesg-warn
> > +igt@kms_addfb_basic@no-handle,pass
> > +igt@kms_addfb_basic@basic,pass
> > +igt@kms_addfb_basic@bad-pitch-0,pass
> > +igt@kms_addfb_basic@bad-pitch-32,pass
> > +igt@kms_addfb_basic@bad-pitch-63,pass
> > +igt@kms_addfb_basic@bad-pitch-128,pass
> > +igt@kms_addfb_basic@bad-pitch-256,pass
> > +igt@kms_addfb_basic@bad-pitch-1024,pass
> > +igt@kms_addfb_basic@bad-pitch-999,pass
> > +igt@kms_addfb_basic@bad-pitch-65536,pass
> > +igt@kms_addfb_basic@size-max,pass
> > +igt@kms_addfb_basic@too-wide,pass
> > +igt@kms_addfb_basic@too-high,dmesg-warn
> > +igt@kms_addfb_basic@bo-too-small,pass
> > +igt@kms_addfb_basic@small-bo,pass
> > +igt@kms_addfb_basic@bo-too-small-due-to-tiling,skip
> > +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> > +igt@kms_addfb_basic@addfb25-bad-modifier,fail
> > +igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy,skip
> > +igt@kms_addfb_basic@addfb25-x-tiled-legacy,skip
> > +igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling,skip
> > +igt@kms_addfb_basic@addfb25-y-tiled-legacy,skip
> > +igt@kms_addfb_basic@addfb25-yf-tiled-legacy,skip
> > +igt@kms_addfb_basic@addfb25-y-tiled-small-legacy,skip
> > +igt@kms_addfb_basic@addfb25-4-tiled,skip
> > +igt@kms_addfb_basic@basic-x-tiled-legacy,skip
> > +igt@kms_addfb_basic@framebuffer-vs-set-tiling,skip
> > +igt@kms_addfb_basic@tile-pitch-mismatch,skip
> > +igt@kms_addfb_basic@basic-y-tiled-legacy,skip
> > +igt@kms_addfb_basic@invalid-get-prop-any,pass
> > +igt@kms_addfb_basic@invalid-get-prop,pass
> > +igt@kms_addfb_basic@invalid-set-prop-any,pass
> > +igt@kms_addfb_basic@invalid-set-prop,pass
> > +igt@kms_addfb_basic@master-rmfb,pass
> > +igt@kms_atomic@plane-overlay-legacy,skip
> > +igt@kms_atomic@plane-primary-legacy,skip
> > +igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
> > +igt@kms_atomic@plane-immutable-zpos,skip
> > +igt@kms_atomic@test-only,skip
> > +igt@kms_atomic@plane-cursor-legacy,skip
> > +igt@kms_atomic@plane-invalid-params,skip
> > +igt@kms_atomic@plane-invalid-params-fence,skip
> > +igt@kms_atomic@crtc-invalid-params,skip
> > +igt@kms_atomic@crtc-invalid-params-fence,skip
> > +igt@kms_atomic@atomic-invalid-params,skip
> > +igt@kms_atomic@atomic_plane_damage,skip
> > +igt@kms_atomic_interruptible@legacy-setmode,skip
> > +igt@kms_atomic_interruptible@atomic-setmode,skip
> > +igt@kms_atomic_interruptible@legacy-dpms,skip
> > +igt@kms_atomic_interruptible@legacy-pageflip,skip
> > +igt@kms_atomic_interruptible@legacy-cursor,skip
> > +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> > +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> > +igt@kms_content_protection@legacy,skip
> > +igt@kms_content_protection@atomic,skip
> > +igt@kms_content_protection@atomic-dpms,skip
> > +igt@kms_content_protection@lic,skip
> > +igt@kms_content_protection@type1,skip
> > +igt@kms_content_protection@mei_interface,skip
> > +igt@kms_content_protection@content_type_change,skip
> > +igt@kms_content_protection@uevent,skip
> > +igt@kms_content_protection@srm,skip
> > +igt@kms_content_protection@dp-mst-type-0,skip
> > +igt@kms_content_protection@dp-mst-lic-type-0,skip
> > +igt@kms_content_protection@dp-mst-type-1,skip
> > +igt@kms_content_protection@dp-mst-lic-type-1,skip
> > +igt@kms_dp_aux_dev,skip
> > +igt@kms_flip_event_leak,skip
> > +igt@kms_getfb@getfb-handle-zero,pass
> > +igt@kms_getfb@getfb-handle-valid,pass
> > +igt@kms_getfb@getfb-handle-closed,pass
> > +igt@kms_getfb@getfb-handle-not-fb,pass
> > +igt@kms_getfb@getfb-addfb-different-handles,pass
> > +igt@kms_getfb@getfb-repeated-different-handles,pass
> > +igt@kms_getfb@getfb-reject-ccs,skip
> > +igt@kms_getfb@getfb2-handle-zero,pass
> > +igt@kms_getfb@getfb2-handle-closed,pass
> > +igt@kms_getfb@getfb2-handle-not-fb,pass
> > +igt@kms_getfb@getfb2-accept-ccs,skip
> > +igt@kms_getfb@getfb2-into-addfb2,pass
> > +igt@kms_getfb@getfb-handle-protection,pass
> > +igt@kms_getfb@getfb2-handle-protection,pass
> > +igt@kms_hdmi_inject@inject-4k,fail
> > +igt@kms_hdmi_inject@inject-audio,skip
> > +igt@kms_hdr@bpc-switch,skip
> > +igt@kms_hdr@bpc-switch-dpms,skip
> > +igt@kms_hdr@static-toggle,skip
> > +igt@kms_hdr@static-toggle-dpms,skip
> > +igt@kms_hdr@static-swap,skip
> > +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
> > +igt@kms_pipe_crc_basic@bad-source,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-a,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-c,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-c,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-c,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-d,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-d,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-e,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-e-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-e,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-e,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-e,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-f,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-f-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-f,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-f,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-f,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-4,skip
> > +igt@kms_prop_blob@basic,pass
> > +igt@kms_prop_blob@blob-prop-core,pass
> > +igt@kms_prop_blob@blob-prop-validate,pass
> > +igt@kms_prop_blob@blob-prop-lifetime,pass
> > +igt@kms_prop_blob@blob-multiple,pass
> > +igt@kms_prop_blob@invalid-get-prop-any,pass
> > +igt@kms_prop_blob@invalid-get-prop,pass
> > +igt@kms_prop_blob@invalid-set-prop-any,pass
> > +igt@kms_prop_blob@invalid-set-prop,pass
> > +igt@kms_rmfb@rmfb-ioctl,skip
> > +igt@kms_rmfb@close-fd,skip
> > +igt@kms_rotation_crc@primary-rotation-90,skip
> > +igt@kms_rotation_crc@primary-rotation-180,skip
> > +igt@kms_rotation_crc@primary-rotation-270,skip
> > +igt@kms_rotation_crc@sprite-rotation-90,skip
> > +igt@kms_rotation_crc@sprite-rotation-180,skip
> > +igt@kms_rotation_crc@sprite-rotation-270,skip
> > +igt@kms_rotation_crc@cursor-rotation-180,skip
> > +igt@kms_rotation_crc@sprite-rotation-90-pos-100-0,skip
> > +igt@kms_rotation_crc@bad-pixel-format,skip
> > +igt@kms_rotation_crc@bad-tiling,skip
> > +igt@kms_rotation_crc@primary-x-tiled-reflect-x-0,skip
> > +igt@kms_rotation_crc@primary-x-tiled-reflect-x-180,skip
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-0,skip
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-90,skip
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-180,skip
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-270,skip
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0,skip
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90,skip
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180,skip
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270,skip
> > +igt@kms_rotation_crc@primary-4-tiled-reflect-x-0,skip
> > +igt@kms_rotation_crc@primary-4-tiled-reflect-x-180,skip
> > +igt@kms_rotation_crc@multiplane-rotation,skip
> > +igt@kms_rotation_crc@multiplane-rotation-cropping-top,skip
> > +igt@kms_rotation_crc@multiplane-rotation-cropping-bottom,skip
> > +igt@kms_rotation_crc@exhaust-fences,skip
> > +igt@kms_selftest@all,skip
> > +igt@kms_setmode@basic,skip
> > +igt@kms_setmode@basic-clone-single-crtc,skip
> > +igt@kms_setmode@invalid-clone-single-crtc,skip
> > +igt@kms_setmode@invalid-clone-exclusive-crtc,skip
> > +igt@kms_setmode@clone-exclusive-crtc,skip
> > +igt@kms_setmode@invalid-clone-single-crtc-stealing,skip
> > +igt@msm_mapping@sqefw,skip
> > +igt@msm_mapping@shadow,skip
> > +igt@msm_recovery@hangcheck,skip
> > +igt@msm_recovery@gpu-fault,skip
> > +igt@msm_recovery@iova-fault,skip
> > +igt@msm_submit@empty-submit,pass
> > +igt@msm_submit@invalid-queue-submit,pass
> > +igt@msm_submit@invalid-flags-submit,pass
> > +igt@msm_submit@invalid-in-fence-submit,pass
> > +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> > +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> > +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> > +igt@msm_submit@valid-submit,pass
> > +igt@kms_sysfs_edid_timing,pass
> > +igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-a-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-a,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-a,skip
> > +igt@kms_universal_plane@universal-plane-pipe-b-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-b-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-b,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-b,skip
> > +igt@kms_universal_plane@universal-plane-pipe-c-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-c-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-c,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-c,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-c,skip
> > +igt@kms_universal_plane@universal-plane-pipe-d-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-d-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-d,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-d,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-d,skip
> > +igt@kms_universal_plane@universal-plane-pipe-e-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-e-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-e,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-e,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-e,skip
> > +igt@kms_universal_plane@universal-plane-pipe-f-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-f-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-f,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-f,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-f,skip
> > +igt@kms_vblank@invalid,skip
> > +igt@kms_vblank@crtc-id,skip
> > +igt@kms_vblank@pipe-a-query-idle,skip
> > +igt@kms_vblank@pipe-a-query-idle-hang,skip
> > +igt@kms_vblank@pipe-a-query-forked,skip
> > +igt@kms_vblank@pipe-a-query-forked-hang,skip
> > +igt@kms_vblank@pipe-a-query-busy,skip
> > +igt@kms_vblank@pipe-a-query-busy-hang,skip
> > +igt@kms_vblank@pipe-a-query-forked-busy,skip
> > +igt@kms_vblank@pipe-a-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-a-wait-idle,skip
> > +igt@kms_vblank@pipe-a-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-a-wait-forked,skip
> > +igt@kms_vblank@pipe-a-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-a-wait-busy,skip
> > +igt@kms_vblank@pipe-a-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-a-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-a-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-b-accuracy-idle,skip
> > +igt@kms_vblank@pipe-b-query-idle,skip
> > +igt@kms_vblank@pipe-b-query-idle-hang,skip
> > +igt@kms_vblank@pipe-b-query-forked,skip
> > +igt@kms_vblank@pipe-b-query-forked-hang,skip
> > +igt@kms_vblank@pipe-b-query-busy,skip
> > +igt@kms_vblank@pipe-b-query-busy-hang,skip
> > +igt@kms_vblank@pipe-b-query-forked-busy,skip
> > +igt@kms_vblank@pipe-b-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-b-wait-idle,skip
> > +igt@kms_vblank@pipe-b-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-b-wait-forked,skip
> > +igt@kms_vblank@pipe-b-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-b-wait-busy,skip
> > +igt@kms_vblank@pipe-b-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-b-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-b-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-c-accuracy-idle,skip
> > +igt@kms_vblank@pipe-c-query-idle,skip
> > +igt@kms_vblank@pipe-c-query-idle-hang,skip
> > +igt@kms_vblank@pipe-c-query-forked,skip
> > +igt@kms_vblank@pipe-c-query-forked-hang,skip
> > +igt@kms_vblank@pipe-c-query-busy,skip
> > +igt@kms_vblank@pipe-c-query-busy-hang,skip
> > +igt@kms_vblank@pipe-c-query-forked-busy,skip
> > +igt@kms_vblank@pipe-c-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-c-wait-idle,skip
> > +igt@kms_vblank@pipe-c-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-c-wait-forked,skip
> > +igt@kms_vblank@pipe-c-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-c-wait-busy,skip
> > +igt@kms_vblank@pipe-c-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-c-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-c-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-d-accuracy-idle,skip
> > +igt@kms_vblank@pipe-d-query-idle,skip
> > +igt@kms_vblank@pipe-d-query-idle-hang,skip
> > +igt@kms_vblank@pipe-d-query-forked,skip
> > +igt@kms_vblank@pipe-d-query-forked-hang,skip
> > +igt@kms_vblank@pipe-d-query-busy,skip
> > +igt@kms_vblank@pipe-d-query-busy-hang,skip
> > +igt@kms_vblank@pipe-d-query-forked-busy,skip
> > +igt@kms_vblank@pipe-d-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-d-wait-idle,skip
> > +igt@kms_vblank@pipe-d-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-d-wait-forked,skip
> > +igt@kms_vblank@pipe-d-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-d-wait-busy,skip
> > +igt@kms_vblank@pipe-d-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-d-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-d-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-e-accuracy-idle,skip
> > +igt@kms_vblank@pipe-e-query-idle,skip
> > +igt@kms_vblank@pipe-e-query-idle-hang,skip
> > +igt@kms_vblank@pipe-e-query-forked,skip
> > +igt@kms_vblank@pipe-e-query-forked-hang,skip
> > +igt@kms_vblank@pipe-e-query-busy,skip
> > +igt@kms_vblank@pipe-e-query-busy-hang,skip
> > +igt@kms_vblank@pipe-e-query-forked-busy,skip
> > +igt@kms_vblank@pipe-e-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-e-wait-idle,skip
> > +igt@kms_vblank@pipe-e-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-e-wait-forked,skip
> > +igt@kms_vblank@pipe-e-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-e-wait-busy,skip
> > +igt@kms_vblank@pipe-e-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-e-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-e-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-f-accuracy-idle,skip
> > +igt@kms_vblank@pipe-f-query-idle,skip
> > +igt@kms_vblank@pipe-f-query-idle-hang,skip
> > +igt@kms_vblank@pipe-f-query-forked,skip
> > +igt@kms_vblank@pipe-f-query-forked-hang,skip
> > +igt@kms_vblank@pipe-f-query-busy,skip
> > +igt@kms_vblank@pipe-f-query-busy-hang,skip
> > +igt@kms_vblank@pipe-f-query-forked-busy,skip
> > +igt@kms_vblank@pipe-f-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-f-wait-idle,skip
> > +igt@kms_vblank@pipe-f-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-f-wait-forked,skip
> > +igt@kms_vblank@pipe-f-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-f-wait-busy,skip
> > +igt@kms_vblank@pipe-f-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-f-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-f-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-modeset-rpm,skip
> > +igt@kms_vrr@flip-basic,skip
> > +igt@kms_vrr@flip-dpms,skip
> > +igt@kms_vrr@flipline,skip
> > +igt@kms_async_flip@async-flip-with-page-flip-events,skip
> > +igt@kms_async_flip@alternate-sync-async-flip,skip
> > +igt@kms_async_flip@test-time-stamp,skip
> > +igt@kms_async_flip@test-cursor,skip
> > +igt@kms_async_flip@invalid-async-flip,skip
> > +igt@kms_async_flip@crc,skip
> > diff --git a/drivers/gpu/drm/msm/ci/msm_a530_results.txt b/drivers/gpu/drm/msm/ci/msm_a530_results.txt
> > new file mode 100644
> > index 000000000000..d5bf402f830c
> > --- /dev/null
> > +++ b/drivers/gpu/drm/msm/ci/msm_a530_results.txt
> > @@ -0,0 +1,421 @@
> > +igt@core_auth@getclient-simple,pass
> > +igt@core_auth@getclient-master-drop,pass
> > +igt@core_auth@basic-auth,pass
> > +igt@core_auth@many-magics,pass
> > +igt@core_getclient,pass
> > +igt@core_getstats,pass
> > +igt@core_getversion,pass
> > +igt@core_setmaster_vs_auth,pass
> > +igt@drm_read@invalid-buffer,skip
> > +igt@drm_read@fault-buffer,skip
> > +igt@drm_read@empty-block,skip
> > +igt@drm_read@empty-nonblock,skip
> > +igt@drm_read@short-buffer-block,skip
> > +igt@drm_read@short-buffer-nonblock,skip
> > +igt@drm_read@short-buffer-wakeup,skip
> > +igt@kms_addfb_basic@unused-handle,pass
> > +igt@kms_addfb_basic@unused-pitches,pass
> > +igt@kms_addfb_basic@unused-offsets,pass
> > +igt@kms_addfb_basic@unused-modifier,pass
> > +igt@kms_addfb_basic@clobberred-modifier,skip
> > +igt@kms_addfb_basic@invalid-smem-bo-on-discrete,skip
> > +igt@kms_addfb_basic@legacy-format,dmesg-warn
> > +igt@kms_addfb_basic@no-handle,pass
> > +igt@kms_addfb_basic@basic,pass
> > +igt@kms_addfb_basic@bad-pitch-0,pass
> > +igt@kms_addfb_basic@bad-pitch-32,pass
> > +igt@kms_addfb_basic@bad-pitch-63,pass
> > +igt@kms_addfb_basic@bad-pitch-128,pass
> > +igt@kms_addfb_basic@bad-pitch-256,pass
> > +igt@kms_addfb_basic@bad-pitch-1024,pass
> > +igt@kms_addfb_basic@bad-pitch-999,pass
> > +igt@kms_addfb_basic@bad-pitch-65536,pass
> > +igt@kms_addfb_basic@size-max,pass
> > +igt@kms_addfb_basic@too-wide,pass
> > +igt@kms_addfb_basic@too-high,dmesg-warn
> > +igt@kms_addfb_basic@bo-too-small,pass
> > +igt@kms_addfb_basic@small-bo,pass
> > +igt@kms_addfb_basic@bo-too-small-due-to-tiling,skip
> > +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> > +igt@kms_addfb_basic@addfb25-bad-modifier,fail
> > +igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy,skip
> > +igt@kms_addfb_basic@addfb25-x-tiled-legacy,skip
> > +igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling,skip
> > +igt@kms_addfb_basic@addfb25-y-tiled-legacy,skip
> > +igt@kms_addfb_basic@addfb25-yf-tiled-legacy,skip
> > +igt@kms_addfb_basic@addfb25-y-tiled-small-legacy,skip
> > +igt@kms_addfb_basic@addfb25-4-tiled,skip
> > +igt@kms_addfb_basic@basic-x-tiled-legacy,skip
> > +igt@kms_addfb_basic@framebuffer-vs-set-tiling,skip
> > +igt@kms_addfb_basic@tile-pitch-mismatch,skip
> > +igt@kms_addfb_basic@basic-y-tiled-legacy,skip
> > +igt@kms_addfb_basic@invalid-get-prop-any,pass
> > +igt@kms_addfb_basic@invalid-get-prop,pass
> > +igt@kms_addfb_basic@invalid-set-prop-any,pass
> > +igt@kms_addfb_basic@invalid-set-prop,pass
> > +igt@kms_addfb_basic@master-rmfb,pass
> > +igt@kms_atomic@plane-overlay-legacy,skip
> > +igt@kms_atomic@plane-primary-legacy,skip
> > +igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
> > +igt@kms_atomic@plane-immutable-zpos,skip
> > +igt@kms_atomic@test-only,skip
> > +igt@kms_atomic@plane-cursor-legacy,skip
> > +igt@kms_atomic@plane-invalid-params,skip
> > +igt@kms_atomic@plane-invalid-params-fence,skip
> > +igt@kms_atomic@crtc-invalid-params,skip
> > +igt@kms_atomic@crtc-invalid-params-fence,skip
> > +igt@kms_atomic@atomic-invalid-params,skip
> > +igt@kms_atomic@atomic_plane_damage,skip
> > +igt@kms_atomic_interruptible@legacy-setmode,skip
> > +igt@kms_atomic_interruptible@atomic-setmode,skip
> > +igt@kms_atomic_interruptible@legacy-dpms,skip
> > +igt@kms_atomic_interruptible@legacy-pageflip,skip
> > +igt@kms_atomic_interruptible@legacy-cursor,skip
> > +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> > +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> > +igt@kms_content_protection@legacy,skip
> > +igt@kms_content_protection@atomic,skip
> > +igt@kms_content_protection@atomic-dpms,skip
> > +igt@kms_content_protection@lic,skip
> > +igt@kms_content_protection@type1,skip
> > +igt@kms_content_protection@mei_interface,skip
> > +igt@kms_content_protection@content_type_change,skip
> > +igt@kms_content_protection@uevent,skip
> > +igt@kms_content_protection@srm,skip
> > +igt@kms_content_protection@dp-mst-type-0,skip
> > +igt@kms_content_protection@dp-mst-lic-type-0,skip
> > +igt@kms_content_protection@dp-mst-type-1,skip
> > +igt@kms_content_protection@dp-mst-lic-type-1,skip
> > +igt@kms_dp_aux_dev,skip
> > +igt@kms_flip_event_leak,skip
> > +igt@kms_getfb@getfb-handle-zero,pass
> > +igt@kms_getfb@getfb-handle-valid,pass
> > +igt@kms_getfb@getfb-handle-closed,pass
> > +igt@kms_getfb@getfb-handle-not-fb,pass
> > +igt@kms_getfb@getfb-addfb-different-handles,pass
> > +igt@kms_getfb@getfb-repeated-different-handles,pass
> > +igt@kms_getfb@getfb-reject-ccs,skip
> > +igt@kms_getfb@getfb2-handle-zero,pass
> > +igt@kms_getfb@getfb2-handle-closed,pass
> > +igt@kms_getfb@getfb2-handle-not-fb,pass
> > +igt@kms_getfb@getfb2-accept-ccs,skip
> > +igt@kms_getfb@getfb2-into-addfb2,pass
> > +igt@kms_getfb@getfb-handle-protection,pass
> > +igt@kms_getfb@getfb2-handle-protection,pass
> > +igt@kms_hdmi_inject@inject-4k,dmesg-warn
> > +igt@kms_hdmi_inject@inject-audio,skip
> > +igt@kms_hdr@bpc-switch,skip
> > +igt@kms_hdr@bpc-switch-dpms,skip
> > +igt@kms_hdr@static-toggle,skip
> > +igt@kms_hdr@static-toggle-dpms,skip
> > +igt@kms_hdr@static-swap,skip
> > +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
> > +igt@kms_pipe_crc_basic@bad-source,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-a,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-c,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-c,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-c,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-d,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-d,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-e,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-e-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-e,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-e,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-e,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-f,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-f-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-f,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-f,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-f,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-4,skip
> > +igt@kms_prop_blob@basic,pass
> > +igt@kms_prop_blob@blob-prop-core,pass
> > +igt@kms_prop_blob@blob-prop-validate,pass
> > +igt@kms_prop_blob@blob-prop-lifetime,pass
> > +igt@kms_prop_blob@blob-multiple,pass
> > +igt@kms_prop_blob@invalid-get-prop-any,pass
> > +igt@kms_prop_blob@invalid-get-prop,pass
> > +igt@kms_prop_blob@invalid-set-prop-any,pass
> > +igt@kms_prop_blob@invalid-set-prop,pass
> > +igt@kms_rmfb@rmfb-ioctl,skip
> > +igt@kms_rmfb@close-fd,skip
> > +igt@kms_rotation_crc@primary-rotation-90,skip
> > +igt@kms_rotation_crc@primary-rotation-180,skip
> > +igt@kms_rotation_crc@primary-rotation-270,skip
> > +igt@kms_rotation_crc@sprite-rotation-90,skip
> > +igt@kms_rotation_crc@sprite-rotation-180,skip
> > +igt@kms_rotation_crc@sprite-rotation-270,skip
> > +igt@kms_rotation_crc@cursor-rotation-180,skip
> > +igt@kms_rotation_crc@sprite-rotation-90-pos-100-0,skip
> > +igt@kms_rotation_crc@bad-pixel-format,skip
> > +igt@kms_rotation_crc@bad-tiling,skip
> > +igt@kms_rotation_crc@primary-x-tiled-reflect-x-0,skip
> > +igt@kms_rotation_crc@primary-x-tiled-reflect-x-180,skip
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-0,skip
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-90,skip
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-180,skip
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-270,skip
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0,skip
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90,skip
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180,skip
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270,skip
> > +igt@kms_rotation_crc@primary-4-tiled-reflect-x-0,skip
> > +igt@kms_rotation_crc@primary-4-tiled-reflect-x-180,skip
> > +igt@kms_rotation_crc@multiplane-rotation,skip
> > +igt@kms_rotation_crc@multiplane-rotation-cropping-top,skip
> > +igt@kms_rotation_crc@multiplane-rotation-cropping-bottom,skip
> > +igt@kms_rotation_crc@exhaust-fences,skip
> > +igt@kms_selftest@all,skip
> > +igt@kms_setmode@basic,skip
> > +igt@kms_setmode@basic-clone-single-crtc,skip
> > +igt@kms_setmode@invalid-clone-single-crtc,skip
> > +igt@kms_setmode@invalid-clone-exclusive-crtc,skip
> > +igt@kms_setmode@clone-exclusive-crtc,skip
> > +igt@kms_setmode@invalid-clone-single-crtc-stealing,skip
> > +igt@msm_mapping@sqefw,skip
> > +igt@msm_mapping@shadow,skip
> > +igt@msm_recovery@hangcheck,skip
> > +igt@msm_recovery@gpu-fault,skip
> > +igt@msm_recovery@iova-fault,skip
> > +igt@msm_submit@empty-submit,pass
> > +igt@msm_submit@invalid-queue-submit,pass
> > +igt@msm_submit@invalid-flags-submit,pass
> > +igt@msm_submit@invalid-in-fence-submit,pass
> > +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> > +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> > +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> > +igt@msm_submit@valid-submit,pass
> > +igt@kms_sysfs_edid_timing,pass
> > +igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-a-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-a,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-a,skip
> > +igt@kms_universal_plane@universal-plane-pipe-b-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-b-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-b,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-b,skip
> > +igt@kms_universal_plane@universal-plane-pipe-c-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-c-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-c,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-c,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-c,skip
> > +igt@kms_universal_plane@universal-plane-pipe-d-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-d-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-d,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-d,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-d,skip
> > +igt@kms_universal_plane@universal-plane-pipe-e-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-e-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-e,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-e,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-e,skip
> > +igt@kms_universal_plane@universal-plane-pipe-f-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-f-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-f,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-f,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-f,skip
> > +igt@kms_vblank@invalid,skip
> > +igt@kms_vblank@crtc-id,skip
> > +igt@kms_vblank@pipe-a-query-idle,skip
> > +igt@kms_vblank@pipe-a-query-idle-hang,skip
> > +igt@kms_vblank@pipe-a-query-forked,skip
> > +igt@kms_vblank@pipe-a-query-forked-hang,skip
> > +igt@kms_vblank@pipe-a-query-busy,skip
> > +igt@kms_vblank@pipe-a-query-busy-hang,skip
> > +igt@kms_vblank@pipe-a-query-forked-busy,skip
> > +igt@kms_vblank@pipe-a-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-a-wait-idle,skip
> > +igt@kms_vblank@pipe-a-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-a-wait-forked,skip
> > +igt@kms_vblank@pipe-a-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-a-wait-busy,skip
> > +igt@kms_vblank@pipe-a-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-a-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-a-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-b-accuracy-idle,skip
> > +igt@kms_vblank@pipe-b-query-idle,skip
> > +igt@kms_vblank@pipe-b-query-idle-hang,skip
> > +igt@kms_vblank@pipe-b-query-forked,skip
> > +igt@kms_vblank@pipe-b-query-forked-hang,skip
> > +igt@kms_vblank@pipe-b-query-busy,skip
> > +igt@kms_vblank@pipe-b-query-busy-hang,skip
> > +igt@kms_vblank@pipe-b-query-forked-busy,skip
> > +igt@kms_vblank@pipe-b-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-b-wait-idle,skip
> > +igt@kms_vblank@pipe-b-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-b-wait-forked,skip
> > +igt@kms_vblank@pipe-b-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-b-wait-busy,skip
> > +igt@kms_vblank@pipe-b-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-b-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-b-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-c-accuracy-idle,skip
> > +igt@kms_vblank@pipe-c-query-idle,skip
> > +igt@kms_vblank@pipe-c-query-idle-hang,skip
> > +igt@kms_vblank@pipe-c-query-forked,skip
> > +igt@kms_vblank@pipe-c-query-forked-hang,skip
> > +igt@kms_vblank@pipe-c-query-busy,skip
> > +igt@kms_vblank@pipe-c-query-busy-hang,skip
> > +igt@kms_vblank@pipe-c-query-forked-busy,skip
> > +igt@kms_vblank@pipe-c-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-c-wait-idle,skip
> > +igt@kms_vblank@pipe-c-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-c-wait-forked,skip
> > +igt@kms_vblank@pipe-c-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-c-wait-busy,skip
> > +igt@kms_vblank@pipe-c-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-c-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-c-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-d-accuracy-idle,skip
> > +igt@kms_vblank@pipe-d-query-idle,skip
> > +igt@kms_vblank@pipe-d-query-idle-hang,skip
> > +igt@kms_vblank@pipe-d-query-forked,skip
> > +igt@kms_vblank@pipe-d-query-forked-hang,skip
> > +igt@kms_vblank@pipe-d-query-busy,skip
> > +igt@kms_vblank@pipe-d-query-busy-hang,skip
> > +igt@kms_vblank@pipe-d-query-forked-busy,skip
> > +igt@kms_vblank@pipe-d-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-d-wait-idle,skip
> > +igt@kms_vblank@pipe-d-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-d-wait-forked,skip
> > +igt@kms_vblank@pipe-d-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-d-wait-busy,skip
> > +igt@kms_vblank@pipe-d-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-d-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-d-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-e-accuracy-idle,skip
> > +igt@kms_vblank@pipe-e-query-idle,skip
> > +igt@kms_vblank@pipe-e-query-idle-hang,skip
> > +igt@kms_vblank@pipe-e-query-forked,skip
> > +igt@kms_vblank@pipe-e-query-forked-hang,skip
> > +igt@kms_vblank@pipe-e-query-busy,skip
> > +igt@kms_vblank@pipe-e-query-busy-hang,skip
> > +igt@kms_vblank@pipe-e-query-forked-busy,skip
> > +igt@kms_vblank@pipe-e-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-e-wait-idle,skip
> > +igt@kms_vblank@pipe-e-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-e-wait-forked,skip
> > +igt@kms_vblank@pipe-e-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-e-wait-busy,skip
> > +igt@kms_vblank@pipe-e-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-e-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-e-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-f-accuracy-idle,skip
> > +igt@kms_vblank@pipe-f-query-idle,skip
> > +igt@kms_vblank@pipe-f-query-idle-hang,skip
> > +igt@kms_vblank@pipe-f-query-forked,skip
> > +igt@kms_vblank@pipe-f-query-forked-hang,skip
> > +igt@kms_vblank@pipe-f-query-busy,skip
> > +igt@kms_vblank@pipe-f-query-busy-hang,skip
> > +igt@kms_vblank@pipe-f-query-forked-busy,skip
> > +igt@kms_vblank@pipe-f-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-f-wait-idle,skip
> > +igt@kms_vblank@pipe-f-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-f-wait-forked,skip
> > +igt@kms_vblank@pipe-f-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-f-wait-busy,skip
> > +igt@kms_vblank@pipe-f-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-f-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-f-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-modeset-rpm,skip
> > +igt@kms_vrr@flip-basic,skip
> > +igt@kms_vrr@flip-dpms,skip
> > +igt@kms_vrr@flipline,skip
> > +igt@kms_async_flip@async-flip-with-page-flip-events,skip
> > +igt@kms_async_flip@alternate-sync-async-flip,skip
> > +igt@kms_async_flip@test-time-stamp,skip
> > +igt@kms_async_flip@test-cursor,skip
> > +igt@kms_async_flip@invalid-async-flip,skip
> > +igt@kms_async_flip@crc,skip
> > diff --git a/drivers/gpu/drm/msm/ci/msm_a618_results.txt b/drivers/gpu/drm/msm/ci/msm_a618_results.txt
> > new file mode 100644
> > index 000000000000..6e42262bf61b
> > --- /dev/null
> > +++ b/drivers/gpu/drm/msm/ci/msm_a618_results.txt
> > @@ -0,0 +1,422 @@
> > +igt@core_auth@getclient-simple,dmesg-warn
> > +igt@core_auth@getclient-master-drop,pass
> > +igt@core_auth@basic-auth,pass
> > +igt@core_auth@many-magics,pass
> > +igt@core_getclient,pass
> > +igt@core_getstats,pass
> > +igt@core_getversion,pass
> > +igt@core_setmaster_vs_auth,pass
> > +igt@drm_read@invalid-buffer,pass
> > +igt@drm_read@fault-buffer,pass
> > +igt@drm_read@empty-block,pass
> > +igt@drm_read@empty-nonblock,pass
> > +igt@drm_read@short-buffer-block,pass
> > +igt@drm_read@short-buffer-nonblock,pass
> > +igt@drm_read@short-buffer-wakeup,pass
> > +igt@kms_addfb_basic@unused-handle,pass
> > +igt@kms_addfb_basic@unused-pitches,pass
> > +igt@kms_addfb_basic@unused-offsets,pass
> > +igt@kms_addfb_basic@unused-modifier,pass
> > +igt@kms_addfb_basic@clobberred-modifier,skip
> > +igt@kms_addfb_basic@invalid-smem-bo-on-discrete,skip
> > +igt@kms_addfb_basic@legacy-format,dmesg-warn
> > +igt@kms_addfb_basic@no-handle,pass
> > +igt@kms_addfb_basic@basic,pass
> > +igt@kms_addfb_basic@bad-pitch-0,pass
> > +igt@kms_addfb_basic@bad-pitch-32,pass
> > +igt@kms_addfb_basic@bad-pitch-63,pass
> > +igt@kms_addfb_basic@bad-pitch-128,pass
> > +igt@kms_addfb_basic@bad-pitch-256,pass
> > +igt@kms_addfb_basic@bad-pitch-1024,pass
> > +igt@kms_addfb_basic@bad-pitch-999,pass
> > +igt@kms_addfb_basic@bad-pitch-65536,pass
> > +igt@kms_addfb_basic@size-max,pass
> > +igt@kms_addfb_basic@too-wide,pass
> > +igt@kms_addfb_basic@too-high,dmesg-warn
> > +igt@kms_addfb_basic@bo-too-small,pass
> > +igt@kms_addfb_basic@small-bo,pass
> > +igt@kms_addfb_basic@bo-too-small-due-to-tiling,skip
> > +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> > +igt@kms_addfb_basic@addfb25-bad-modifier,dmesg-warn
> > +igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy,skip
> > +igt@kms_addfb_basic@addfb25-x-tiled-legacy,skip
> > +igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling,skip
> > +igt@kms_addfb_basic@addfb25-y-tiled-legacy,skip
> > +igt@kms_addfb_basic@addfb25-yf-tiled-legacy,skip
> > +igt@kms_addfb_basic@addfb25-y-tiled-small-legacy,skip
> > +igt@kms_addfb_basic@addfb25-4-tiled,skip
> > +igt@kms_addfb_basic@basic-x-tiled-legacy,skip
> > +igt@kms_addfb_basic@framebuffer-vs-set-tiling,skip
> > +igt@kms_addfb_basic@tile-pitch-mismatch,skip
> > +igt@kms_addfb_basic@basic-y-tiled-legacy,skip
> > +igt@kms_addfb_basic@invalid-get-prop-any,pass
> > +igt@kms_addfb_basic@invalid-get-prop,pass
> > +igt@kms_addfb_basic@invalid-set-prop-any,pass
> > +igt@kms_addfb_basic@invalid-set-prop,pass
> > +igt@kms_addfb_basic@master-rmfb,pass
> > +igt@kms_atomic@plane-overlay-legacy,skip
> > +igt@kms_atomic@plane-primary-legacy,pass
> > +igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
> > +igt@kms_atomic@plane-immutable-zpos,pass
> > +igt@kms_atomic@test-only,pass
> > +igt@kms_atomic@plane-cursor-legacy,pass
> > +igt@kms_atomic@plane-invalid-params,pass
> > +igt@kms_atomic@plane-invalid-params-fence,skip
> > +igt@kms_atomic@crtc-invalid-params,pass
> > +igt@kms_atomic@crtc-invalid-params-fence,skip
> > +igt@kms_atomic@atomic-invalid-params,pass
> > +igt@kms_atomic@atomic_plane_damage,pass
> > +igt@kms_atomic_interruptible@legacy-setmode,skip
> > +igt@kms_atomic_interruptible@atomic-setmode,skip
> > +igt@kms_atomic_interruptible@legacy-dpms,skip
> > +igt@kms_atomic_interruptible@legacy-pageflip,skip
> > +igt@kms_atomic_interruptible@legacy-cursor,skip
> > +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> > +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> > +igt@kms_content_protection@legacy,skip
> > +igt@kms_content_protection@atomic,skip
> > +igt@kms_content_protection@atomic-dpms,skip
> > +igt@kms_content_protection@lic,skip
> > +igt@kms_content_protection@type1,skip
> > +igt@kms_content_protection@mei_interface,skip
> > +igt@kms_content_protection@content_type_change,skip
> > +igt@kms_content_protection@uevent,skip
> > +igt@kms_content_protection@srm,skip
> > +igt@kms_content_protection@dp-mst-type-0,skip
> > +igt@kms_content_protection@dp-mst-lic-type-0,skip
> > +igt@kms_content_protection@dp-mst-type-1,skip
> > +igt@kms_content_protection@dp-mst-lic-type-1,skip
> > +igt@kms_dp_aux_dev,skip
> > +igt@kms_flip_event_leak,pass
> > +igt@kms_getfb@getfb-handle-zero,pass
> > +igt@kms_getfb@getfb-handle-valid,pass
> > +igt@kms_getfb@getfb-handle-closed,pass
> > +igt@kms_getfb@getfb-handle-not-fb,pass
> > +igt@kms_getfb@getfb-addfb-different-handles,pass
> > +igt@kms_getfb@getfb-repeated-different-handles,pass
> > +igt@kms_getfb@getfb-reject-ccs,skip
> > +igt@kms_getfb@getfb2-handle-zero,pass
> > +igt@kms_getfb@getfb2-handle-closed,pass
> > +igt@kms_getfb@getfb2-handle-not-fb,pass
> > +igt@kms_getfb@getfb2-accept-ccs,skip
> > +igt@kms_getfb@getfb2-into-addfb2,pass
> > +igt@kms_getfb@getfb-handle-protection,pass
> > +igt@kms_getfb@getfb2-handle-protection,pass
> > +igt@kms_hdmi_inject@inject-4k,skip
> > +igt@kms_hdmi_inject@inject-audio,skip
> > +igt@kms_hdr@bpc-switch,skip
> > +igt@kms_hdr@bpc-switch-dpms,skip
> > +igt@kms_hdr@static-toggle,skip
> > +igt@kms_hdr@static-toggle-dpms,skip
> > +igt@kms_hdr@static-swap,skip
> > +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
> > +igt@kms_pipe_crc_basic@bad-source,pass
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a,pass
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,pass
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,pass
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,pass
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,pass
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-a,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,pass
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b,pass
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,pass
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,pass
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,pass
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,pass
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,pass
> > +igt@kms_pipe_crc_basic@read-crc-pipe-c,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-c,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-c,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-d,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-d,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-e,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-e-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-e,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-e,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-e,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-f,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-f-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-f,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-f,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-f,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-4,skip
> > +igt@kms_prop_blob@basic,pass
> > +igt@kms_prop_blob@blob-prop-core,pass
> > +igt@kms_prop_blob@blob-prop-validate,pass
> > +igt@kms_prop_blob@blob-prop-lifetime,pass
> > +igt@kms_prop_blob@blob-multiple,pass
> > +igt@kms_prop_blob@invalid-get-prop-any,pass
> > +igt@kms_prop_blob@invalid-get-prop,pass
> > +igt@kms_prop_blob@invalid-set-prop-any,pass
> > +igt@kms_prop_blob@invalid-set-prop,pass
> > +igt@kms_rmfb@rmfb-ioctl,pass
> > +igt@kms_rmfb@close-fd,fail
> > +igt@kms_rotation_crc@primary-rotation-90,skip
> > +igt@kms_rotation_crc@primary-rotation-180,skip
> > +igt@kms_rotation_crc@primary-rotation-270,skip
> > +igt@kms_rotation_crc@sprite-rotation-90,skip
> > +igt@kms_rotation_crc@sprite-rotation-180,skip
> > +igt@kms_rotation_crc@sprite-rotation-270,skip
> > +igt@kms_rotation_crc@cursor-rotation-180,skip
> > +igt@kms_rotation_crc@sprite-rotation-90-pos-100-0,skip
> > +igt@kms_rotation_crc@bad-pixel-format,skip
> > +igt@kms_rotation_crc@bad-tiling,skip
> > +igt@kms_rotation_crc@primary-x-tiled-reflect-x-0,skip
> > +igt@kms_rotation_crc@primary-x-tiled-reflect-x-180,skip
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-0,skip
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-90,skip
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-180,skip
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-270,skip
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0,skip
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90,skip
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180,skip
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270,skip
> > +igt@kms_rotation_crc@primary-4-tiled-reflect-x-0,skip
> > +igt@kms_rotation_crc@primary-4-tiled-reflect-x-180,skip
> > +igt@kms_rotation_crc@multiplane-rotation,skip
> > +igt@kms_rotation_crc@multiplane-rotation-cropping-top,skip
> > +igt@kms_rotation_crc@multiplane-rotation-cropping-bottom,skip
> > +igt@kms_rotation_crc@exhaust-fences,skip
> > +igt@kms_selftest@all,skip
> > +igt@kms_setmode@basic@pipe-a-edp-1,pass
> > +igt@kms_setmode@basic@pipe-b-edp-1,pass
> > +igt@kms_setmode@basic-clone-single-crtc,skip
> > +igt@kms_setmode@invalid-clone-single-crtc,skip
> > +igt@kms_setmode@invalid-clone-exclusive-crtc,skip
> > +igt@kms_setmode@clone-exclusive-crtc,skip
> > +igt@kms_setmode@invalid-clone-single-crtc-stealing,skip
> > +igt@msm_mapping@sqefw,dmesg-fail
> > +igt@msm_mapping@shadow,dmesg-fail
> > +igt@msm_recovery@hangcheck,dmesg-warn
> > +igt@msm_recovery@gpu-fault,dmesg-warn
> > +igt@msm_recovery@iova-fault,dmesg-warn
> > +igt@msm_submit@empty-submit,pass
> > +igt@msm_submit@invalid-queue-submit,pass
> > +igt@msm_submit@invalid-flags-submit,pass
> > +igt@msm_submit@invalid-in-fence-submit,pass
> > +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> > +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> > +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> > +igt@msm_submit@valid-submit,pass
> > +igt@kms_sysfs_edid_timing,pass
> > +igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-a-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,pass
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-a,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-a,skip
> > +igt@kms_universal_plane@universal-plane-pipe-b-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-b-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,fail
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-b,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-b,skip
> > +igt@kms_universal_plane@universal-plane-pipe-c-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-c-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-c,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-c,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-c,skip
> > +igt@kms_universal_plane@universal-plane-pipe-d-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-d-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-d,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-d,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-d,skip
> > +igt@kms_universal_plane@universal-plane-pipe-e-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-e-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-e,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-e,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-e,skip
> > +igt@kms_universal_plane@universal-plane-pipe-f-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-f-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-f,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-f,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-f,skip
> > +igt@kms_vblank@invalid,pass
> > +igt@kms_vblank@crtc-id,pass
> > +igt@kms_vblank@pipe-a-query-idle,pass
> > +igt@kms_vblank@pipe-a-query-idle-hang,skip
> > +igt@kms_vblank@pipe-a-query-forked,pass
> > +igt@kms_vblank@pipe-a-query-forked-hang,skip
> > +igt@kms_vblank@pipe-a-query-busy,pass
> > +igt@kms_vblank@pipe-a-query-busy-hang,skip
> > +igt@kms_vblank@pipe-a-query-forked-busy,pass
> > +igt@kms_vblank@pipe-a-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-a-wait-idle,pass
> > +igt@kms_vblank@pipe-a-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-a-wait-forked,pass
> > +igt@kms_vblank@pipe-a-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-a-wait-busy,pass
> > +igt@kms_vblank@pipe-a-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-a-wait-forked-busy,pass
> > +igt@kms_vblank@pipe-a-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-idle,pass
> > +igt@kms_vblank@pipe-a-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset,pass
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-b-accuracy-idle,pass
> > +igt@kms_vblank@pipe-b-query-idle,pass
> > +igt@kms_vblank@pipe-b-query-idle-hang,skip
> > +igt@kms_vblank@pipe-b-query-forked,pass
> > +igt@kms_vblank@pipe-b-query-forked-hang,skip
> > +igt@kms_vblank@pipe-b-query-busy,pass
> > +igt@kms_vblank@pipe-b-query-busy-hang,skip
> > +igt@kms_vblank@pipe-b-query-forked-busy,pass
> > +igt@kms_vblank@pipe-b-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-b-wait-idle,pass
> > +igt@kms_vblank@pipe-b-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-b-wait-forked,pass
> > +igt@kms_vblank@pipe-b-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-b-wait-busy,pass
> > +igt@kms_vblank@pipe-b-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-b-wait-forked-busy,pass
> > +igt@kms_vblank@pipe-b-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-idle,pass
> > +igt@kms_vblank@pipe-b-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset,pass
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-c-accuracy-idle,skip
> > +igt@kms_vblank@pipe-c-query-idle,skip
> > +igt@kms_vblank@pipe-c-query-idle-hang,skip
> > +igt@kms_vblank@pipe-c-query-forked,skip
> > +igt@kms_vblank@pipe-c-query-forked-hang,skip
> > +igt@kms_vblank@pipe-c-query-busy,skip
> > +igt@kms_vblank@pipe-c-query-busy-hang,skip
> > +igt@kms_vblank@pipe-c-query-forked-busy,skip
> > +igt@kms_vblank@pipe-c-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-c-wait-idle,skip
> > +igt@kms_vblank@pipe-c-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-c-wait-forked,skip
> > +igt@kms_vblank@pipe-c-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-c-wait-busy,skip
> > +igt@kms_vblank@pipe-c-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-c-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-c-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-d-accuracy-idle,skip
> > +igt@kms_vblank@pipe-d-query-idle,skip
> > +igt@kms_vblank@pipe-d-query-idle-hang,skip
> > +igt@kms_vblank@pipe-d-query-forked,skip
> > +igt@kms_vblank@pipe-d-query-forked-hang,skip
> > +igt@kms_vblank@pipe-d-query-busy,skip
> > +igt@kms_vblank@pipe-d-query-busy-hang,skip
> > +igt@kms_vblank@pipe-d-query-forked-busy,skip
> > +igt@kms_vblank@pipe-d-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-d-wait-idle,skip
> > +igt@kms_vblank@pipe-d-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-d-wait-forked,skip
> > +igt@kms_vblank@pipe-d-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-d-wait-busy,skip
> > +igt@kms_vblank@pipe-d-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-d-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-d-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-e-accuracy-idle,skip
> > +igt@kms_vblank@pipe-e-query-idle,skip
> > +igt@kms_vblank@pipe-e-query-idle-hang,skip
> > +igt@kms_vblank@pipe-e-query-forked,skip
> > +igt@kms_vblank@pipe-e-query-forked-hang,skip
> > +igt@kms_vblank@pipe-e-query-busy,skip
> > +igt@kms_vblank@pipe-e-query-busy-hang,skip
> > +igt@kms_vblank@pipe-e-query-forked-busy,skip
> > +igt@kms_vblank@pipe-e-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-e-wait-idle,skip
> > +igt@kms_vblank@pipe-e-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-e-wait-forked,skip
> > +igt@kms_vblank@pipe-e-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-e-wait-busy,skip
> > +igt@kms_vblank@pipe-e-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-e-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-e-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-f-accuracy-idle,skip
> > +igt@kms_vblank@pipe-f-query-idle,skip
> > +igt@kms_vblank@pipe-f-query-idle-hang,skip
> > +igt@kms_vblank@pipe-f-query-forked,skip
> > +igt@kms_vblank@pipe-f-query-forked-hang,skip
> > +igt@kms_vblank@pipe-f-query-busy,skip
> > +igt@kms_vblank@pipe-f-query-busy-hang,skip
> > +igt@kms_vblank@pipe-f-query-forked-busy,skip
> > +igt@kms_vblank@pipe-f-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-f-wait-idle,skip
> > +igt@kms_vblank@pipe-f-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-f-wait-forked,skip
> > +igt@kms_vblank@pipe-f-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-f-wait-busy,skip
> > +igt@kms_vblank@pipe-f-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-f-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-f-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-modeset-rpm,skip
> > +igt@kms_vrr@flip-basic,skip
> > +igt@kms_vrr@flip-dpms,skip
> > +igt@kms_vrr@flipline,skip
> > +igt@kms_async_flip@async-flip-with-page-flip-events,skip
> > +igt@kms_async_flip@alternate-sync-async-flip,skip
> > +igt@kms_async_flip@test-time-stamp,skip
> > +igt@kms_async_flip@test-cursor,skip
> > +igt@kms_async_flip@invalid-async-flip,skip
> > +igt@kms_async_flip@crc,skip
> > diff --git a/drivers/gpu/drm/msm/ci/msm_a630_results.txt b/drivers/gpu/drm/msm/ci/msm_a630_results.txt
> > new file mode 100644
> > index 000000000000..18ebfae09f1a
> > --- /dev/null
> > +++ b/drivers/gpu/drm/msm/ci/msm_a630_results.txt
> > @@ -0,0 +1,422 @@
> > +igt@core_auth@getclient-simple,dmesg-warn
> > +igt@core_auth@getclient-master-drop,pass
> > +igt@core_auth@basic-auth,pass
> > +igt@core_auth@many-magics,pass
> > +igt@core_getclient,pass
> > +igt@core_getstats,pass
> > +igt@core_getversion,pass
> > +igt@core_setmaster_vs_auth,pass
> > +igt@drm_read@invalid-buffer,pass
> > +igt@drm_read@fault-buffer,pass
> > +igt@drm_read@empty-block,pass
> > +igt@drm_read@empty-nonblock,pass
> > +igt@drm_read@short-buffer-block,pass
> > +igt@drm_read@short-buffer-nonblock,pass
> > +igt@drm_read@short-buffer-wakeup,pass
> > +igt@kms_addfb_basic@unused-handle,pass
> > +igt@kms_addfb_basic@unused-pitches,pass
> > +igt@kms_addfb_basic@unused-offsets,pass
> > +igt@kms_addfb_basic@unused-modifier,pass
> > +igt@kms_addfb_basic@clobberred-modifier,skip
> > +igt@kms_addfb_basic@invalid-smem-bo-on-discrete,skip
> > +igt@kms_addfb_basic@legacy-format,dmesg-warn
> > +igt@kms_addfb_basic@no-handle,pass
> > +igt@kms_addfb_basic@basic,pass
> > +igt@kms_addfb_basic@bad-pitch-0,pass
> > +igt@kms_addfb_basic@bad-pitch-32,pass
> > +igt@kms_addfb_basic@bad-pitch-63,pass
> > +igt@kms_addfb_basic@bad-pitch-128,pass
> > +igt@kms_addfb_basic@bad-pitch-256,pass
> > +igt@kms_addfb_basic@bad-pitch-1024,pass
> > +igt@kms_addfb_basic@bad-pitch-999,pass
> > +igt@kms_addfb_basic@bad-pitch-65536,pass
> > +igt@kms_addfb_basic@size-max,pass
> > +igt@kms_addfb_basic@too-wide,pass
> > +igt@kms_addfb_basic@too-high,dmesg-warn
> > +igt@kms_addfb_basic@bo-too-small,pass
> > +igt@kms_addfb_basic@small-bo,pass
> > +igt@kms_addfb_basic@bo-too-small-due-to-tiling,skip
> > +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> > +igt@kms_addfb_basic@addfb25-bad-modifier,dmesg-warn
> > +igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy,skip
> > +igt@kms_addfb_basic@addfb25-x-tiled-legacy,skip
> > +igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling,skip
> > +igt@kms_addfb_basic@addfb25-y-tiled-legacy,skip
> > +igt@kms_addfb_basic@addfb25-yf-tiled-legacy,skip
> > +igt@kms_addfb_basic@addfb25-y-tiled-small-legacy,skip
> > +igt@kms_addfb_basic@addfb25-4-tiled,skip
> > +igt@kms_addfb_basic@basic-x-tiled-legacy,skip
> > +igt@kms_addfb_basic@framebuffer-vs-set-tiling,skip
> > +igt@kms_addfb_basic@tile-pitch-mismatch,skip
> > +igt@kms_addfb_basic@basic-y-tiled-legacy,skip
> > +igt@kms_addfb_basic@invalid-get-prop-any,pass
> > +igt@kms_addfb_basic@invalid-get-prop,pass
> > +igt@kms_addfb_basic@invalid-set-prop-any,pass
> > +igt@kms_addfb_basic@invalid-set-prop,pass
> > +igt@kms_addfb_basic@master-rmfb,pass
> > +igt@kms_atomic@plane-overlay-legacy,dmesg-warn
> > +igt@kms_atomic@plane-primary-legacy,dmesg-warn
> > +igt@kms_atomic@plane-primary-overlay-mutable-zpos,dmesg-warn
> > +igt@kms_atomic@plane-immutable-zpos,dmesg-warn
> > +igt@kms_atomic@test-only,dmesg-warn
> > +igt@kms_atomic@plane-cursor-legacy,dmesg-warn
> > +igt@kms_atomic@plane-invalid-params,dmesg-warn
> > +igt@kms_atomic@plane-invalid-params-fence,skip
> > +igt@kms_atomic@crtc-invalid-params,dmesg-warn
> > +igt@kms_atomic@crtc-invalid-params-fence,skip
> > +igt@kms_atomic@atomic-invalid-params,dmesg-warn
> > +igt@kms_atomic@atomic_plane_damage,dmesg-warn
> > +igt@kms_atomic_interruptible@legacy-setmode,skip
> > +igt@kms_atomic_interruptible@atomic-setmode,skip
> > +igt@kms_atomic_interruptible@legacy-dpms,skip
> > +igt@kms_atomic_interruptible@legacy-pageflip,skip
> > +igt@kms_atomic_interruptible@legacy-cursor,skip
> > +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> > +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> > +igt@kms_content_protection@legacy,skip
> > +igt@kms_content_protection@atomic,skip
> > +igt@kms_content_protection@atomic-dpms,skip
> > +igt@kms_content_protection@lic,skip
> > +igt@kms_content_protection@type1,skip
> > +igt@kms_content_protection@mei_interface,skip
> > +igt@kms_content_protection@content_type_change,skip
> > +igt@kms_content_protection@uevent,skip
> > +igt@kms_content_protection@srm,skip
> > +igt@kms_content_protection@dp-mst-type-0,skip
> > +igt@kms_content_protection@dp-mst-lic-type-0,skip
> > +igt@kms_content_protection@dp-mst-type-1,skip
> > +igt@kms_content_protection@dp-mst-lic-type-1,skip
> > +igt@kms_dp_aux_dev,skip
> > +igt@kms_flip_event_leak,dmesg-warn
> > +igt@kms_getfb@getfb-handle-zero,pass
> > +igt@kms_getfb@getfb-handle-valid,pass
> > +igt@kms_getfb@getfb-handle-closed,pass
> > +igt@kms_getfb@getfb-handle-not-fb,pass
> > +igt@kms_getfb@getfb-addfb-different-handles,pass
> > +igt@kms_getfb@getfb-repeated-different-handles,pass
> > +igt@kms_getfb@getfb-reject-ccs,skip
> > +igt@kms_getfb@getfb2-handle-zero,pass
> > +igt@kms_getfb@getfb2-handle-closed,pass
> > +igt@kms_getfb@getfb2-handle-not-fb,pass
> > +igt@kms_getfb@getfb2-accept-ccs,skip
> > +igt@kms_getfb@getfb2-into-addfb2,pass
> > +igt@kms_getfb@getfb-handle-protection,pass
> > +igt@kms_getfb@getfb2-handle-protection,pass
> > +igt@kms_hdmi_inject@inject-4k,skip
> > +igt@kms_hdmi_inject@inject-audio,skip
> > +igt@kms_hdr@bpc-switch,skip
> > +igt@kms_hdr@bpc-switch-dpms,skip
> > +igt@kms_hdr@static-toggle,skip
> > +igt@kms_hdr@static-toggle-dpms,skip
> > +igt@kms_hdr@static-swap,skip
> > +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,pass
> > +igt@kms_pipe_crc_basic@bad-source,pass
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a,pass
> > +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,pass
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,pass
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,pass
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,dmesg-warn
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-a,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,dmesg-warn
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-b,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-c,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-c,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-c,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-d,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-d,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-e,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-e-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-e,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-e,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-e,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-f,skip
> > +igt@kms_pipe_crc_basic@read-crc-pipe-f-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f,skip
> > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f-frame-sequence,skip
> > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-f,skip
> > +igt@kms_pipe_crc_basic@hang-read-crc-pipe-f,skip
> > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-f,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-a-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-b-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-c-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-d-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-e-tiling-4,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-none,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-x,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-y,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-yf,skip
> > +igt@kms_plane_lowres@pipe-f-tiling-4,skip
> > +igt@kms_prop_blob@basic,pass
> > +igt@kms_prop_blob@blob-prop-core,pass
> > +igt@kms_prop_blob@blob-prop-validate,pass
> > +igt@kms_prop_blob@blob-prop-lifetime,pass
> > +igt@kms_prop_blob@blob-multiple,pass
> > +igt@kms_prop_blob@invalid-get-prop-any,pass
> > +igt@kms_prop_blob@invalid-get-prop,pass
> > +igt@kms_prop_blob@invalid-set-prop-any,pass
> > +igt@kms_prop_blob@invalid-set-prop,pass
> > +igt@kms_rmfb@rmfb-ioctl,pass
> > +igt@kms_rmfb@close-fd,fail
> > +igt@kms_rotation_crc@primary-rotation-90,skip
> > +igt@kms_rotation_crc@primary-rotation-180,skip
> > +igt@kms_rotation_crc@primary-rotation-270,skip
> > +igt@kms_rotation_crc@sprite-rotation-90,skip
> > +igt@kms_rotation_crc@sprite-rotation-180,skip
> > +igt@kms_rotation_crc@sprite-rotation-270,skip
> > +igt@kms_rotation_crc@cursor-rotation-180,skip
> > +igt@kms_rotation_crc@sprite-rotation-90-pos-100-0,skip
> > +igt@kms_rotation_crc@bad-pixel-format,skip
> > +igt@kms_rotation_crc@bad-tiling,skip
> > +igt@kms_rotation_crc@primary-x-tiled-reflect-x-0,skip
> > +igt@kms_rotation_crc@primary-x-tiled-reflect-x-180,skip
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-0,skip
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-90,skip
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-180,skip
> > +igt@kms_rotation_crc@primary-y-tiled-reflect-x-270,skip
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0,skip
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90,skip
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180,skip
> > +igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270,skip
> > +igt@kms_rotation_crc@primary-4-tiled-reflect-x-0,skip
> > +igt@kms_rotation_crc@primary-4-tiled-reflect-x-180,skip
> > +igt@kms_rotation_crc@multiplane-rotation,skip
> > +igt@kms_rotation_crc@multiplane-rotation-cropping-top,skip
> > +igt@kms_rotation_crc@multiplane-rotation-cropping-bottom,skip
> > +igt@kms_rotation_crc@exhaust-fences,skip
> > +igt@kms_selftest@all,skip
> > +igt@kms_setmode@basic@pipe-a-edp-1,dmesg-warn
> > +igt@kms_setmode@basic,skip
> > +igt@kms_setmode@basic-clone-single-crtc,skip
> > +igt@kms_setmode@invalid-clone-single-crtc,skip
> > +igt@kms_setmode@invalid-clone-exclusive-crtc,skip
> > +igt@kms_setmode@clone-exclusive-crtc,skip
> > +igt@kms_setmode@invalid-clone-single-crtc-stealing,skip
> > +igt@msm_mapping@sqefw,dmesg-fail
> > +igt@msm_mapping@shadow,dmesg-fail
> > +igt@msm_recovery@hangcheck,dmesg-warn
> > +igt@msm_recovery@gpu-fault,dmesg-warn
> > +igt@msm_recovery@iova-fault,dmesg-warn
> > +igt@msm_submit@empty-submit,pass
> > +igt@msm_submit@invalid-queue-submit,pass
> > +igt@msm_submit@invalid-flags-submit,pass
> > +igt@msm_submit@invalid-in-fence-submit,pass
> > +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> > +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> > +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> > +igt@msm_submit@valid-submit,pass
> > +igt@kms_sysfs_edid_timing,pass
> > +igt@kms_universal_plane@universal-plane-pipe-a-functional,dmesg-fail
> > +igt@kms_universal_plane@universal-plane-pipe-a-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,dmesg-warn
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-a,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-a,skip
> > +igt@kms_universal_plane@universal-plane-pipe-b-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-b-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-b,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-b,skip
> > +igt@kms_universal_plane@universal-plane-pipe-c-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-c-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-c,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-c,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-c,skip
> > +igt@kms_universal_plane@universal-plane-pipe-d-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-d-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-d,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-d,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-d,skip
> > +igt@kms_universal_plane@universal-plane-pipe-e-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-e-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-e,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-e,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-e,skip
> > +igt@kms_universal_plane@universal-plane-pipe-f-functional,skip
> > +igt@kms_universal_plane@universal-plane-pipe-f-sanity,skip
> > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-f,skip
> > +igt@kms_universal_plane@cursor-fb-leak-pipe-f,skip
> > +igt@kms_universal_plane@universal-plane-gen9-features-pipe-f,skip
> > +igt@kms_vblank@invalid,dmesg-warn
> > +igt@kms_vblank@crtc-id,dmesg-warn
> > +igt@kms_vblank@pipe-a-query-idle,dmesg-warn
> > +igt@kms_vblank@pipe-a-query-idle-hang,skip
> > +igt@kms_vblank@pipe-a-query-forked,dmesg-warn
> > +igt@kms_vblank@pipe-a-query-forked-hang,skip
> > +igt@kms_vblank@pipe-a-query-busy,dmesg-warn
> > +igt@kms_vblank@pipe-a-query-busy-hang,skip
> > +igt@kms_vblank@pipe-a-query-forked-busy,dmesg-warn
> > +igt@kms_vblank@pipe-a-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-a-wait-idle,dmesg-warn
> > +igt@kms_vblank@pipe-a-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-a-wait-forked,dmesg-warn
> > +igt@kms_vblank@pipe-a-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-a-wait-busy,dmesg-warn
> > +igt@kms_vblank@pipe-a-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-a-wait-forked-busy,dmesg-warn
> > +igt@kms_vblank@pipe-a-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-idle,dmesg-warn
> > +igt@kms_vblank@pipe-a-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset,dmesg-warn
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-b-accuracy-idle,skip
> > +igt@kms_vblank@pipe-b-query-idle,skip
> > +igt@kms_vblank@pipe-b-query-idle-hang,skip
> > +igt@kms_vblank@pipe-b-query-forked,skip
> > +igt@kms_vblank@pipe-b-query-forked-hang,skip
> > +igt@kms_vblank@pipe-b-query-busy,skip
> > +igt@kms_vblank@pipe-b-query-busy-hang,skip
> > +igt@kms_vblank@pipe-b-query-forked-busy,skip
> > +igt@kms_vblank@pipe-b-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-b-wait-idle,skip
> > +igt@kms_vblank@pipe-b-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-b-wait-forked,skip
> > +igt@kms_vblank@pipe-b-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-b-wait-busy,skip
> > +igt@kms_vblank@pipe-b-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-b-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-b-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-b-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-c-accuracy-idle,skip
> > +igt@kms_vblank@pipe-c-query-idle,skip
> > +igt@kms_vblank@pipe-c-query-idle-hang,skip
> > +igt@kms_vblank@pipe-c-query-forked,skip
> > +igt@kms_vblank@pipe-c-query-forked-hang,skip
> > +igt@kms_vblank@pipe-c-query-busy,skip
> > +igt@kms_vblank@pipe-c-query-busy-hang,skip
> > +igt@kms_vblank@pipe-c-query-forked-busy,skip
> > +igt@kms_vblank@pipe-c-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-c-wait-idle,skip
> > +igt@kms_vblank@pipe-c-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-c-wait-forked,skip
> > +igt@kms_vblank@pipe-c-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-c-wait-busy,skip
> > +igt@kms_vblank@pipe-c-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-c-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-c-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-c-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-d-accuracy-idle,skip
> > +igt@kms_vblank@pipe-d-query-idle,skip
> > +igt@kms_vblank@pipe-d-query-idle-hang,skip
> > +igt@kms_vblank@pipe-d-query-forked,skip
> > +igt@kms_vblank@pipe-d-query-forked-hang,skip
> > +igt@kms_vblank@pipe-d-query-busy,skip
> > +igt@kms_vblank@pipe-d-query-busy-hang,skip
> > +igt@kms_vblank@pipe-d-query-forked-busy,skip
> > +igt@kms_vblank@pipe-d-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-d-wait-idle,skip
> > +igt@kms_vblank@pipe-d-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-d-wait-forked,skip
> > +igt@kms_vblank@pipe-d-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-d-wait-busy,skip
> > +igt@kms_vblank@pipe-d-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-d-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-d-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-d-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-e-accuracy-idle,skip
> > +igt@kms_vblank@pipe-e-query-idle,skip
> > +igt@kms_vblank@pipe-e-query-idle-hang,skip
> > +igt@kms_vblank@pipe-e-query-forked,skip
> > +igt@kms_vblank@pipe-e-query-forked-hang,skip
> > +igt@kms_vblank@pipe-e-query-busy,skip
> > +igt@kms_vblank@pipe-e-query-busy-hang,skip
> > +igt@kms_vblank@pipe-e-query-forked-busy,skip
> > +igt@kms_vblank@pipe-e-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-e-wait-idle,skip
> > +igt@kms_vblank@pipe-e-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-e-wait-forked,skip
> > +igt@kms_vblank@pipe-e-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-e-wait-busy,skip
> > +igt@kms_vblank@pipe-e-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-e-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-e-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-e-ts-continuation-modeset-rpm,skip
> > +igt@kms_vblank@pipe-f-accuracy-idle,skip
> > +igt@kms_vblank@pipe-f-query-idle,skip
> > +igt@kms_vblank@pipe-f-query-idle-hang,skip
> > +igt@kms_vblank@pipe-f-query-forked,skip
> > +igt@kms_vblank@pipe-f-query-forked-hang,skip
> > +igt@kms_vblank@pipe-f-query-busy,skip
> > +igt@kms_vblank@pipe-f-query-busy-hang,skip
> > +igt@kms_vblank@pipe-f-query-forked-busy,skip
> > +igt@kms_vblank@pipe-f-query-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-f-wait-idle,skip
> > +igt@kms_vblank@pipe-f-wait-idle-hang,skip
> > +igt@kms_vblank@pipe-f-wait-forked,skip
> > +igt@kms_vblank@pipe-f-wait-forked-hang,skip
> > +igt@kms_vblank@pipe-f-wait-busy,skip
> > +igt@kms_vblank@pipe-f-wait-busy-hang,skip
> > +igt@kms_vblank@pipe-f-wait-forked-busy,skip
> > +igt@kms_vblank@pipe-f-wait-forked-busy-hang,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-idle,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-idle-hang,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-dpms-rpm,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-modeset,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-modeset-hang,skip
> > +igt@kms_vblank@pipe-f-ts-continuation-modeset-rpm,skip
> > +igt@kms_vrr@flip-basic,skip
> > +igt@kms_vrr@flip-dpms,skip
> > +igt@kms_vrr@flipline,skip
> > +igt@kms_async_flip@async-flip-with-page-flip-events,skip
> > +igt@kms_async_flip@alternate-sync-async-flip,skip
> > +igt@kms_async_flip@test-time-stamp,skip
> > +igt@kms_async_flip@test-cursor,skip
> > +igt@kms_async_flip@invalid-async-flip,skip
> > +igt@kms_async_flip@crc,skip
>
> --
> Jani Nikula, Intel Open Source Graphics Center

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [Freedreno] Adding CI results to the kernel tree was Re: [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-11 13:33           ` [Freedreno] " Rob Clark
@ 2022-05-11 16:43             ` Daniel Vetter
  2022-05-11 17:23               ` Rob Clark
  2022-05-12  2:24             ` Theodore Ts'o
  1 sibling, 1 reply; 49+ messages in thread
From: Daniel Vetter @ 2022-05-11 16:43 UTC (permalink / raw)
  To: Rob Clark
  Cc: Sean Paul, freedreno, Tomeu Vizoso, open list:DOCUMENTATION,
	Greg Kroah-Hartman, Jonathan Corbet, Abhinav Kumar, dri-devel,
	LKML, Michel Dänzer, Thomas Zimmermann, linux-arm-msm,
	Linus Torvalds

On Wed, 11 May 2022 at 15:33, Rob Clark <robdclark@gmail.com> wrote:
> On Wed, May 11, 2022 at 4:50 AM Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
> >
> > On Wed, May 11, 2022 at 12:26:05PM +0200, Michel Dänzer wrote:
> > > On 2022-05-11 08:22, Greg Kroah-Hartman wrote:
> > > > On Wed, May 11, 2022 at 03:06:47PM +1000, Dave Airlie wrote:
> > > >>> And use it to store expectations about what the drm/msm driver is
> > > >>> supposed to pass in the IGT test suite.
> > > >>
> > > >> I wanted to loop in Linus/Greg to see if there are any issues raised
> > > >> by adding CI results file to the tree in their minds, or if any other
> > > >> subsystem has done this already, and it's all fine.
> > > >
> > > > Why does the results need to be added to the tree?  Shouldn't they be
> > > > either "all is good" or "constantly changing and a constant churn"?
> > > >
> > > >> I think this is a good thing after our Mesa experience, but Mesa has a
> > > >> lot tighter integration here, so I want to get some more opinions
> > > >> outside the group.
> > > >
> > > > For systems that have "tight integration" this might make sense as proof
> > > > that all is working for a specific commit, but I can't see how this will
> > > > help the kernel out much.
> > > >
> > > > What are you going to do with these results being checked in all the
> > > > time?
> > >
> > > Having the expected results in the tree keeps them consistent with the driver code itself, and allows putting in place gating CI to prevent merging driver changes which make any of the tests deviate from the expected result.
> >
> > Shouldn't "expected result" always be "pass"?
> >
> > If not, then the test should be changed to be "skipped" like we have
> > today in the kselftest tests.
>
> No, we want to run tests even if they are expected to fail.  This
> prevents the scenario of a test getting fixed without being noticed
> (for ex, developer was working on fixing test A and didn't notice that
> the fix also fixed test B).  If a fix goes unnoticed, a later
> regression would also go unnoticed ;-)
>
> I was skeptical about this approach at first with mesa CI, but having
> used mesa CI for a while, I am now a firm believer in the approach.
>
> And ofc we want the expectations to be in the kernel tree because
> there could be, for example, differences between -fixes and -next
> branches.  (Or even stable kernel branches if/when we get to the point
> of running CI on those.)

Yeah result files in tree is kinda needed, even more so for the
kernel. A lot of the linux-next integration testing is only done after
patches have landed, and sometimes such breakage makes it to upstream
and then into the subsystem/driver tree. Annotating in the backmerge
what exactly broke and why helps a lot with tracking issues.

And expecting every subsystem to run every other subsystem's tests,
especially tests that run on hw, is just not going to scale. So there
will be all kinds of difference in test results.

> > And how about tieing this into the kselftest process as well, why would
> > this be somehow separate from the rest of the kernel tests?
> >
> > > Keeping them separate inevitably results in divergence between the driver code and the expected test results, which would result in spurious failures of such CI.
> >
> > Again, "pass" should be the expected results :)
> >
> > > I expect the main complication for the kernel will be due to driver changes merged via different trees, e.g. for cross-subsystem reworks. Since those will not go through the same CI, they may accidentally introduce inconsistencies. The ideal solution for this IMO would be centralizing CI such that the same gating tests have to pass regardless of how the code is merged. But there's likely quite a long way to go until we get there. :)
> >
> > We have in-kernel tests for the rest of the kernel, why can't you put
> > your testing stuff into there as well?
>
> We could ofc put a lot more of the gitlab yml and scripts into the
> kernel tree.  Probably all of i-g-t is a bit much to put in the kernel
> tree.  Not to mention I'd like to see this expand to also run some
> deqp and/or piglit tests, which is definitely too much to vendor into
> the kernel tree.
>
> The approach of this RFC was to put only what was absolutely required
> in the kernel tree (such as expectations), and then link out to an
> external drm-ci tree[1] which has all the necessary scripts and yml
> for building and running tests, to avoid having to put a whole lot
> more in the kernel tree. (We should be specifying exact commit-sha for
> that tree, IMO, as it controls the version of i-g-t which gets used,
> and we need to be able to update expectations in sync with an i-g-t
> uprev, for example when new tests are added or if a test fix caused a
> fail->pass transition.)

Yeah I think longer-term we should carry a lot more in upstream, at
least anything that's shared across drivers wrt the ci integration (or
build testing and running tests which are hw agnostic). Maybe even
igt, not sure (otoh xfs-tests isn't moving into the kernel either, and
there's lots more like that).

Personally I think long-term the only thing outside should be other
repos with tests or stuff you need to run them, and not really the
glue to make it all work in ci. But that's maybe a bit too much
wishful thinking if CI systems stay largely subsystem specific (which
they currently are in many ways, with some overlap).

But maybe there is enough random pieces to share here for a lot more
in-tree to make sense, and imo the fewer extra steps and indirection
CI testing and test updating has, the better.

But like Rob says, eventually there's a limit and when you put the
entire GL/vulkan stack + it's conformance testsuite (which is
maintained by khronos somewhere completely different than both
kernel.org and freedesktop.org) then it's definitely too much and wont
work. And eventually we do want to run these things too (e.g.
intel-gfx-ci does run mesa + piglit on every run).
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [Freedreno] [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-10 20:25     ` Rob Clark
@ 2022-05-11 17:12       ` Daniel Vetter
  2022-05-11 17:46         ` Rob Clark
  0 siblings, 1 reply; 49+ messages in thread
From: Daniel Vetter @ 2022-05-11 17:12 UTC (permalink / raw)
  To: Rob Clark
  Cc: freedreno, Tomeu Vizoso, linux-doc, David Airlie, linux-arm-msm,
	Jonathan Corbet, Abhinav Kumar, Linux Kernel Mailing List,
	dri-devel, Thomas Zimmermann, Jessica Zhang, Sean Paul

On Tue, 10 May 2022 at 22:26, Rob Clark <robdclark@gmail.com> wrote:
>
> On Tue, May 10, 2022 at 12:39 PM Jessica Zhang
> <quic_jesszhan@quicinc.com> wrote:
> >
> >
> >
> > On 5/10/2022 7:13 AM, Tomeu Vizoso wrote:
> > > And use it to store expectations about what the drm/msm driver is
> > > supposed to pass in the IGT test suite.
> > >
> > > Also include a configuration file that points to the out-of-tree CI
> > > scripts.
> > >
> > > By storing the test expectations along the code we can make sure both
> > > stay in sync with each other, and so we can know when a code change
> > > breaks those expectations.
> > >
> > > This will allow all contributors to drm/msm to reuse the infrastructure
> > > already in gitlab.freedesktop.org to test the driver on several
> > > generations of the hardware.
> > >
> > > v2:
> > >    - Fix names of result expectation files to match SoC
> > >    - Don't execute tests that are going to skip on all boards
> > >
> > > Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> > > ---
> > >   Documentation/gpu/msm_automated_testing.rst   |  70 +++++++++
> > >   drivers/gpu/drm/msm/ci/gitlab-ci.yml          |  11 ++
> > >   drivers/gpu/drm/msm/ci/msm.testlist           | 148 ++++++++++++++++++
> > >   .../gpu/drm/msm/ci/msm_apq8016_results.txt    | 140 +++++++++++++++++
> > >   .../gpu/drm/msm/ci/msm_apq8096_results.txt    | 140 +++++++++++++++++
> > >   drivers/gpu/drm/msm/ci/msm_sc7180_results.txt | 141 +++++++++++++++++
> > >   drivers/gpu/drm/msm/ci/msm_sdm845_results.txt | 141 +++++++++++++++++
> > >   7 files changed, 791 insertions(+)
> > >   create mode 100644 Documentation/gpu/msm_automated_testing.rst
> > >   create mode 100644 drivers/gpu/drm/msm/ci/gitlab-ci.yml
> > >   create mode 100644 drivers/gpu/drm/msm/ci/msm.testlist
> > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
> > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
> > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
> > >
> > > diff --git a/Documentation/gpu/msm_automated_testing.rst b/Documentation/gpu/msm_automated_testing.rst
> > > new file mode 100644
> > > index 000000000000..fe59474569c2
> > > --- /dev/null
> > > +++ b/Documentation/gpu/msm_automated_testing.rst
> > > @@ -0,0 +1,70 @@
> > > +.. SPDX-License-Identifier: GPL-2.0+
> > > +
> > > +=========================================
> > > +Automated testing of MSM DRM driver
> > > +=========================================
> >
> > Hey Tomeu,
> >
> > I like the overall idea of having this in as part of the repo, but just
> > have a few questions on some details.
> >
> > > +
> > > +
> > > +Introduction
> > > +============
> > > +
> > > +Making sure that changes to a driver don't introduce regressions can be very time consuming when lots of different hardware configurations need to be tested. Moreover, it isn't practical for each person interested in this testing to have to acquire and maintain what can be a considerable amount of hardware.
> > > +
> > > +Also, it is desirable for developers to check for regressions in their code by themselves, instead of relying on the maintainer finding them and then reporting back.
> > > +
> > > +There are facilities in gitlab.freedesktop.org to automatically test Mesa that can be used as well for testing DRM drivers such as drm/msm. This document explains how people interested in testing the drm/msm driver can use this shared infrastructure to save quite some time and effort.
> > > +
> > > +
> > > +Relevant files
> > > +==============
> > > +
> > > +drivers/gpu/drm/msm/ci/gitlab-ci.yml
> > > +------------------------------------
> > > +
> > > +Specifies the specific version of the scripts to be used. GitLab CI will use the values defined in this file to fetch the right scripts.
> > > +
> > > +
> > > +drivers/gpu/drm/msm/ci/msm.testlist
> > > +-----------------------------------
> > > +
> > > +Specifies the tests that the current code is expected to be able to reliably run. These tests are expected to not hang the DUT (device under testing) when running on the revision they belong to, and to give consistent results.
> > > +
> > > +
> > > +drivers/gpu/drm/msm/ci/msm_*_results.txt
> > > +----------------------------------------
> > > +
> > > +Specifies the expected results of running this specific kernel revision on a given hardware configuration.
> > > +
> > > +
> > > +How to enable automated testing on your tree
> > > +============================================
> > > +
> > > +1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one yet
> > > +
> > > +2. In your kernel repo's configuration (eg. https://gitlab.freedesktop.org/tomeu/linux/-/settings/ci_cd), change the CI/CD configuration file from .gitlab-ci.yml to drivers/gpu/drm/msm/ci/gitlab-ci.yml.
> > > +
> > > +3. Next time you push to this repository, you will see a CI pipeline being created (eg. https://gitlab.freedesktop.org/tomeu/linux/-/pipelines)
> > > +
> > > +4. The various jobs will be run and when the pipeline is finished, all jobs should be green unless a regression has been found.
> > > +
> > > +
> > > +How to update test expectations
> > > +===============================
> > > +
> > > +If your changes to the code fix any tests, you will have to update one or more of the files in drivers/gpu/drm/msm/ci/msm_*_results.txt, for each of the test platforms affected by the change.
> > > +
> > > +If you have run a pipeline and it failed because of a mismatched test result, you will have been offered a patch at the end of the run that you can apply after reviewing it.
> > > +
> > > +
> > > +How to expand coverage
> > > +======================
> > > +
> > > +If your code changes makes it possible to run more tests (by solving reliability issues, for example), more tests can be added to this list, and then the expected results updated with the patch file that will be printed at the end of each job.
> > > +
> > > +If there is a need for updating the version of IGT being used (maybe you have added more tests to it), follow the instructions at https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/tree/msm#upreving-igt.
> > > +
> > > +
> > > +How to test your changes to the scripts
> > > +==========================================
> > > +
> > > +For testing changes to the scripts in the drm-ci repo, change the DRM_CI_PROJECT_PATH variable in drivers/gpu/drm/msm/ci/gitlab-ci.yml to match your fork of the project (eg. tomeu/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
> > > \ No newline at end of file
> > > diff --git a/drivers/gpu/drm/msm/ci/gitlab-ci.yml b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
> > > new file mode 100644
> > > index 000000000000..9b7caa7fcab2
> > > --- /dev/null
> > > +++ b/drivers/gpu/drm/msm/ci/gitlab-ci.yml
> > > @@ -0,0 +1,11 @@
> > > +variables:
> > > +  # Change this to use your fork of drm-ci
> > > +  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
> > > +  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha msm
> > > +
> > > +include:
> > > +  - project: *drm-ci-project-path
> > > +    ref: *drm-ci-commit-sha
> > > +    file:
> > > +      - '.msm-gitlab-ci.yml'
> > > +      - '.gitlab-ci.yml'
> > > diff --git a/drivers/gpu/drm/msm/ci/msm.testlist b/drivers/gpu/drm/msm/ci/msm.testlist
> > > new file mode 100644
> > > index 000000000000..8805a3bc7316
> > > --- /dev/null
> > > +++ b/drivers/gpu/drm/msm/ci/msm.testlist
> > > @@ -0,0 +1,148 @@
> > > +# Keep alphabetically sorted by default
> > > +
> > > +igt@core_auth@getclient-simple
> > > +igt@core_auth@getclient-master-drop
> > > +igt@core_auth@basic-auth
> > > +igt@core_auth@many-magics
> > > +igt@core_getclient
> > > +igt@core_getstats
> > > +igt@core_getversion
> > > +igt@core_setmaster_vs_auth
> > > +igt@drm_read@invalid-buffer
> > > +igt@drm_read@fault-buffer
> > > +igt@drm_read@empty-block
> > > +igt@drm_read@empty-nonblock
> > > +igt@drm_read@short-buffer-block
> > > +igt@drm_read@short-buffer-nonblock
> > > +igt@drm_read@short-buffer-wakeup
> > > +igt@kms_addfb_basic@unused-handle
> > > +igt@kms_addfb_basic@unused-pitches
> > > +igt@kms_addfb_basic@unused-offsets
> > > +igt@kms_addfb_basic@unused-modifier
> > > +igt@kms_addfb_basic@legacy-format
> > > +igt@kms_addfb_basic@no-handle
> > > +igt@kms_addfb_basic@basic
> > > +igt@kms_addfb_basic@bad-pitch-0
> > > +igt@kms_addfb_basic@bad-pitch-32
> > > +igt@kms_addfb_basic@bad-pitch-63
> > > +igt@kms_addfb_basic@bad-pitch-128
> > > +igt@kms_addfb_basic@bad-pitch-256
> > > +igt@kms_addfb_basic@bad-pitch-1024
> > > +igt@kms_addfb_basic@bad-pitch-999
> > > +igt@kms_addfb_basic@bad-pitch-65536
> > > +igt@kms_addfb_basic@size-max
> > > +igt@kms_addfb_basic@too-wide
> > > +igt@kms_addfb_basic@too-high
> > > +igt@kms_addfb_basic@bo-too-small
> > > +igt@kms_addfb_basic@small-bo
> > > +igt@kms_addfb_basic@addfb25-modifier-no-flag
> > > +igt@kms_addfb_basic@addfb25-bad-modifier
> > > +igt@kms_addfb_basic@invalid-get-prop-any
> > > +igt@kms_addfb_basic@invalid-get-prop
> > > +igt@kms_addfb_basic@invalid-set-prop-any
> > > +igt@kms_addfb_basic@invalid-set-prop
> > > +igt@kms_addfb_basic@master-rmfb
> > > +igt@kms_atomic@plane-overlay-legacy
> > > +igt@kms_atomic@plane-primary-legacy
> > > +igt@kms_atomic@plane-primary-overlay-mutable-zpos
> > > +igt@kms_atomic@plane-immutable-zpos
> > > +igt@kms_atomic@test-only
> > > +igt@kms_atomic@plane-cursor-legacy
> > > +igt@kms_atomic@plane-invalid-params
> > > +igt@kms_atomic@crtc-invalid-params
> > > +igt@kms_atomic@atomic-invalid-params
> > > +igt@kms_atomic@atomic_plane_damage
> > > +igt@kms_atomic_interruptible@legacy-setmode@pipe-a-edp-1
> > > +igt@kms_atomic_interruptible@atomic-setmode@pipe-a-edp-1
> > > +igt@kms_atomic_interruptible@legacy-dpms@pipe-a-edp-1
> > > +igt@kms_atomic_interruptible@legacy-pageflip@pipe-a-edp-1
> > > +igt@kms_atomic_interruptible@legacy-cursor@pipe-a-edp-1
> > > +igt@kms_atomic_interruptible@universal-setplane-primary@pipe-a-edp-1
> > > +igt@kms_atomic_interruptible@universal-setplane-cursor@pipe-a-edp-1
> >
> > I see that there are some KMS subtests/tests are missing such as
> > kms_atomic_transition -- are they unstable across all boards?
> >
> >  From what I've seen, kms_atomic_transition is unstable only on Trogdor,
> > but has stable results on other boards.
> >
> > > +igt@kms_content_protection@LIC > +igt@kms_flip_event_leak
> > > +igt@kms_getfb@getfb-handle-zero
> > > +igt@kms_getfb@getfb-handle-valid
> > > +igt@kms_getfb@getfb-handle-closed
> > > +igt@kms_getfb@getfb-handle-not-fb
> > > +igt@kms_getfb@getfb-addfb-different-handles
> > > +igt@kms_getfb@getfb-repeated-different-handles
> > > +igt@kms_getfb@getfb2-handle-zero
> > > +igt@kms_getfb@getfb2-handle-closed
> > > +igt@kms_getfb@getfb2-handle-not-fb
> > > +igt@kms_getfb@getfb2-into-addfb2
> > > +igt@kms_getfb@getfb-handle-protection
> > > +igt@kms_getfb@getfb2-handle-protection
> > > +igt@kms_hdmi_inject@inject-4k > +igt@kms_multipipe_modeset@basic-max-pipe-crc-check
> > > +igt@kms_pipe_crc_basic@bad-source
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-a
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence
> > > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a
> > > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-b
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence
> > > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b
> > > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b
> > > +igt@kms_prop_blob@basic
> > > +igt@kms_prop_blob@blob-prop-core
> > > +igt@kms_prop_blob@blob-prop-validate
> > > +igt@kms_prop_blob@blob-prop-lifetime
> > > +igt@kms_prop_blob@blob-multiple
> > > +igt@kms_prop_blob@invalid-get-prop-any
> > > +igt@kms_prop_blob@invalid-get-prop
> > > +igt@kms_prop_blob@invalid-set-prop-any
> > > +igt@kms_prop_blob@invalid-set-prop
> > > +igt@kms_rmfb@rmfb-ioctl
> > > +igt@kms_rmfb@close-fd
> > > +igt@kms_setmode@basic@pipe-a-edp-1
> > > +igt@kms_setmode@basic@pipe-b-edp-1
> > > +
> > > +# Flakes on a530 with:
> > > +# arm-smmu b40000.iommu: Unhandled context fault: fsr=0x408, iova=0x01003000, fsynr=0x13, cbfrsynra=0x0, cb=0
> > > +# igt@msm_mapping@ring
> > > +
> > > +igt@msm_mapping@sqefw
> > > +igt@msm_mapping@shadow
> > > +igt@msm_recovery@hangcheck
> > > +igt@msm_recovery@gpu-fault
> > > +igt@msm_recovery@iova-fault
> > > +igt@msm_submit@empty-submit
> > > +igt@msm_submit@invalid-queue-submit
> > > +igt@msm_submit@invalid-flags-submit
> > > +igt@msm_submit@invalid-in-fence-submit
> > > +igt@msm_submit@invalid-duplicate-bo-submit
> > > +igt@msm_submit@invalid-cmd-idx-submit
> > > +igt@msm_submit@invalid-cmd-type-submit
> > > +igt@msm_submit@valid-submit
> > > +igt@kms_sysfs_edid_timing
> > > +igt@kms_universal_plane@universal-plane-pipe-a-functional
> > > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a
> > > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b
> > > +igt@kms_vblank@invalid
> > > +igt@kms_vblank@crtc-id
> > > +igt@kms_vblank@pipe-a-query-idle
> > > +igt@kms_vblank@pipe-a-query-forked
> > > +igt@kms_vblank@pipe-a-query-busy
> > > +igt@kms_vblank@pipe-a-query-forked-busy
> > > +igt@kms_vblank@pipe-a-wait-idle
> > > +igt@kms_vblank@pipe-a-wait-forked
> > > +igt@kms_vblank@pipe-a-wait-busy
> > > +igt@kms_vblank@pipe-a-wait-forked-busy
> > > +igt@kms_vblank@pipe-a-ts-continuation-idle
> > > +igt@kms_vblank@pipe-a-ts-continuation-modeset
> > > +igt@kms_vblank@pipe-b-accuracy-idle
> > > +igt@kms_vblank@pipe-b-query-idle
> > > +igt@kms_vblank@pipe-b-query-forked
> > > +igt@kms_vblank@pipe-b-query-busy
> > > +igt@kms_vblank@pipe-b-query-forked-busy
> > > +igt@kms_vblank@pipe-b-wait-idle
> > > +igt@kms_vblank@pipe-b-wait-forked
> > > +igt@kms_vblank@pipe-b-wait-busy
> > > +igt@kms_vblank@pipe-b-wait-forked-busy
> > > +igt@kms_vblank@pipe-b-ts-continuation-idle
> > > +igt@kms_vblank@pipe-b-ts-continuation-modeset
> > > diff --git a/drivers/gpu/drm/msm/ci/msm_apq8016_results.txt b/drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
> > > new file mode 100644
> > > index 000000000000..2cad61d89faf
> > > --- /dev/null
> > > +++ b/drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
> > > @@ -0,0 +1,140 @@
> > > +igt@core_auth@getclient-simple,pass
> > > +igt@core_auth@getclient-master-drop,pass
> > > +igt@core_auth@basic-auth,pass
> > > +igt@core_auth@many-magics,pass
> > > +igt@core_getclient,pass
> > > +igt@core_getstats,pass
> > > +igt@core_getversion,pass
> > > +igt@core_setmaster_vs_auth,pass
> > > +igt@drm_read@invalid-buffer,skip
> > > +igt@drm_read@fault-buffer,skip
> > > +igt@drm_read@empty-block,skip
> > > +igt@drm_read@empty-nonblock,skip
> > > +igt@drm_read@short-buffer-block,skip
> > > +igt@drm_read@short-buffer-nonblock,skip
> > > +igt@drm_read@short-buffer-wakeup,skip
> > > +igt@kms_addfb_basic@unused-handle,pass
> > > +igt@kms_addfb_basic@unused-pitches,pass
> > > +igt@kms_addfb_basic@unused-offsets,pass
> > > +igt@kms_addfb_basic@unused-modifier,pass
> > > +igt@kms_addfb_basic@legacy-format,dmesg-warn
> > > +igt@kms_addfb_basic@no-handle,pass
> > > +igt@kms_addfb_basic@basic,pass
> > > +igt@kms_addfb_basic@bad-pitch-0,pass
> > > +igt@kms_addfb_basic@bad-pitch-32,pass
> > > +igt@kms_addfb_basic@bad-pitch-63,pass
> > > +igt@kms_addfb_basic@bad-pitch-128,pass
> > > +igt@kms_addfb_basic@bad-pitch-256,pass
> > > +igt@kms_addfb_basic@bad-pitch-1024,pass
> > > +igt@kms_addfb_basic@bad-pitch-999,pass
> > > +igt@kms_addfb_basic@bad-pitch-65536,pass
> > > +igt@kms_addfb_basic@size-max,pass
> > > +igt@kms_addfb_basic@too-wide,pass
> > > +igt@kms_addfb_basic@too-high,dmesg-warn
> > > +igt@kms_addfb_basic@bo-too-small,pass
> > > +igt@kms_addfb_basic@small-bo,pass
> > > +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> > > +igt@kms_addfb_basic@addfb25-bad-modifier,fail
> > > +igt@kms_addfb_basic@invalid-get-prop-any,pass
> > > +igt@kms_addfb_basic@invalid-get-prop,pass
> > > +igt@kms_addfb_basic@invalid-set-prop-any,pass
> > > +igt@kms_addfb_basic@invalid-set-prop,pass
> > > +igt@kms_addfb_basic@master-rmfb,pass
> > > +igt@kms_atomic@plane-overlay-legacy,skip
> > > +igt@kms_atomic@plane-primary-legacy,skip
> > > +igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
> > > +igt@kms_atomic@plane-immutable-zpos,skip
> > > +igt@kms_atomic@test-only,skip
> > > +igt@kms_atomic@plane-cursor-legacy,skip
> > > +igt@kms_atomic@plane-invalid-params,skip
> > > +igt@kms_atomic@crtc-invalid-params,skip
> > > +igt@kms_atomic@atomic-invalid-params,skip
> > > +igt@kms_atomic@atomic_plane_damage,skip
> > > +igt@kms_atomic_interruptible@legacy-setmode,skip
> > > +igt@kms_atomic_interruptible@atomic-setmode,skip
> > > +igt@kms_atomic_interruptible@legacy-dpms,skip
> > > +igt@kms_atomic_interruptible@legacy-pageflip,skip
> > > +igt@kms_atomic_interruptible@legacy-cursor,skip
> > > +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> > > +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> > > +igt@kms_content_protection@lic,skip
> > > +igt@kms_flip_event_leak,skip
> > > +igt@kms_getfb@getfb-handle-zero,pass
> > > +igt@kms_getfb@getfb-handle-valid,pass
> > > +igt@kms_getfb@getfb-handle-closed,pass
> > > +igt@kms_getfb@getfb-handle-not-fb,pass
> > > +igt@kms_getfb@getfb-addfb-different-handles,pass
> > > +igt@kms_getfb@getfb-repeated-different-handles,pass
> > > +igt@kms_getfb@getfb2-handle-zero,pass
> > > +igt@kms_getfb@getfb2-handle-closed,pass
> > > +igt@kms_getfb@getfb2-handle-not-fb,pass
> > > +igt@kms_getfb@getfb2-into-addfb2,pass
> > > +igt@kms_getfb@getfb-handle-protection,pass
> > > +igt@kms_getfb@getfb2-handle-protection,pass
> > > +igt@kms_hdmi_inject@inject-4k,fail
> > > +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
> > > +igt@kms_pipe_crc_basic@bad-source,skip
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
> > > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
> > > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
> > > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
> > > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
> > > +igt@kms_prop_blob@basic,pass
> > > +igt@kms_prop_blob@blob-prop-core,pass
> > > +igt@kms_prop_blob@blob-prop-validate,pass
> > > +igt@kms_prop_blob@blob-prop-lifetime,pass
> > > +igt@kms_prop_blob@blob-multiple,pass
> > > +igt@kms_prop_blob@invalid-get-prop-any,pass
> > > +igt@kms_prop_blob@invalid-get-prop,pass
> > > +igt@kms_prop_blob@invalid-set-prop-any,pass
> > > +igt@kms_prop_blob@invalid-set-prop,pass
> > > +igt@kms_rmfb@rmfb-ioctl,skip
> > > +igt@kms_rmfb@close-fd,skip
> > > +igt@kms_setmode@basic,skip
> > > +igt@msm_mapping@sqefw,skip
> > > +igt@msm_mapping@shadow,skip
> > > +igt@msm_recovery@hangcheck,skip
> > > +igt@msm_recovery@gpu-fault,skip
> > > +igt@msm_recovery@iova-fault,skip
> > > +igt@msm_submit@empty-submit,pass
> > > +igt@msm_submit@invalid-queue-submit,pass
> > > +igt@msm_submit@invalid-flags-submit,pass
> > > +igt@msm_submit@invalid-in-fence-submit,pass
> > > +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> > > +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> > > +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> > > +igt@msm_submit@valid-submit,pass
> > > +igt@kms_sysfs_edid_timing,pass
> > > +igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
> > > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
> > > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
> > > +igt@kms_vblank@invalid,skip
> > > +igt@kms_vblank@crtc-id,skip
> > > +igt@kms_vblank@pipe-a-query-idle,skip
> > > +igt@kms_vblank@pipe-a-query-forked,skip
> > > +igt@kms_vblank@pipe-a-query-busy,skip
> > > +igt@kms_vblank@pipe-a-query-forked-busy,skip
> > > +igt@kms_vblank@pipe-a-wait-idle,skip
> > > +igt@kms_vblank@pipe-a-wait-forked,skip
> > > +igt@kms_vblank@pipe-a-wait-busy,skip
> > > +igt@kms_vblank@pipe-a-wait-forked-busy,skip
> > > +igt@kms_vblank@pipe-a-ts-continuation-idle,skip
> > > +igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
> > > +igt@kms_vblank@pipe-b-accuracy-idle,skip
> > > +igt@kms_vblank@pipe-b-query-idle,skip
> > > +igt@kms_vblank@pipe-b-query-forked,skip
> > > +igt@kms_vblank@pipe-b-query-busy,skip
> > > +igt@kms_vblank@pipe-b-query-forked-busy,skip
> > > +igt@kms_vblank@pipe-b-wait-idle,skip
> > > +igt@kms_vblank@pipe-b-wait-forked,skip
> > > +igt@kms_vblank@pipe-b-wait-busy,skip
> > > +igt@kms_vblank@pipe-b-wait-forked-busy,skip
> > > +igt@kms_vblank@pipe-b-ts-continuation-idle,skip
> > > +igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
> > > diff --git a/drivers/gpu/drm/msm/ci/msm_apq8096_results.txt b/drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
> > > new file mode 100644
> > > index 000000000000..6f10941e5626
> > > --- /dev/null
> > > +++ b/drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
> > > @@ -0,0 +1,140 @@
> > > +igt@core_auth@getclient-simple,pass
> > > +igt@core_auth@getclient-master-drop,pass
> > > +igt@core_auth@basic-auth,pass
> > > +igt@core_auth@many-magics,pass
> > > +igt@core_getclient,pass
> > > +igt@core_getstats,pass
> > > +igt@core_getversion,pass
> > > +igt@core_setmaster_vs_auth,pass
> > > +igt@drm_read@invalid-buffer,skip
> > > +igt@drm_read@fault-buffer,skip
> > > +igt@drm_read@empty-block,skip
> > > +igt@drm_read@empty-nonblock,skip
> > > +igt@drm_read@short-buffer-block,skip
> > > +igt@drm_read@short-buffer-nonblock,skip
> > > +igt@drm_read@short-buffer-wakeup,skip
> > > +igt@kms_addfb_basic@unused-handle,pass
> > > +igt@kms_addfb_basic@unused-pitches,pass
> > > +igt@kms_addfb_basic@unused-offsets,pass
> > > +igt@kms_addfb_basic@unused-modifier,pass
> > > +igt@kms_addfb_basic@legacy-format,dmesg-warn
> > > +igt@kms_addfb_basic@no-handle,pass
> > > +igt@kms_addfb_basic@basic,pass
> > > +igt@kms_addfb_basic@bad-pitch-0,pass
> > > +igt@kms_addfb_basic@bad-pitch-32,pass
> > > +igt@kms_addfb_basic@bad-pitch-63,pass
> > > +igt@kms_addfb_basic@bad-pitch-128,pass
> > > +igt@kms_addfb_basic@bad-pitch-256,pass
> > > +igt@kms_addfb_basic@bad-pitch-1024,pass
> > > +igt@kms_addfb_basic@bad-pitch-999,pass
> > > +igt@kms_addfb_basic@bad-pitch-65536,pass
> > > +igt@kms_addfb_basic@size-max,pass
> > > +igt@kms_addfb_basic@too-wide,pass
> > > +igt@kms_addfb_basic@too-high,dmesg-warn
> > > +igt@kms_addfb_basic@bo-too-small,pass
> > > +igt@kms_addfb_basic@small-bo,pass
> > > +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> > > +igt@kms_addfb_basic@addfb25-bad-modifier,fail
> > > +igt@kms_addfb_basic@invalid-get-prop-any,pass
> > > +igt@kms_addfb_basic@invalid-get-prop,pass
> > > +igt@kms_addfb_basic@invalid-set-prop-any,pass
> > > +igt@kms_addfb_basic@invalid-set-prop,pass
> > > +igt@kms_addfb_basic@master-rmfb,pass
> > > +igt@kms_atomic@plane-overlay-legacy,skip
> > > +igt@kms_atomic@plane-primary-legacy,skip
> > > +igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
> > > +igt@kms_atomic@plane-immutable-zpos,skip
> > > +igt@kms_atomic@test-only,skip
> > > +igt@kms_atomic@plane-cursor-legacy,skip
> > > +igt@kms_atomic@plane-invalid-params,skip
> > > +igt@kms_atomic@crtc-invalid-params,skip
> > > +igt@kms_atomic@atomic-invalid-params,skip
> > > +igt@kms_atomic@atomic_plane_damage,skip
> > > +igt@kms_atomic_interruptible@legacy-setmode,skip
> > > +igt@kms_atomic_interruptible@atomic-setmode,skip
> > > +igt@kms_atomic_interruptible@legacy-dpms,skip
> > > +igt@kms_atomic_interruptible@legacy-pageflip,skip
> > > +igt@kms_atomic_interruptible@legacy-cursor,skip
> > > +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> > > +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> > > +igt@kms_content_protection@lic,skip
> > > +igt@kms_flip_event_leak,skip
> > > +igt@kms_getfb@getfb-handle-zero,pass
> > > +igt@kms_getfb@getfb-handle-valid,pass
> > > +igt@kms_getfb@getfb-handle-closed,pass
> > > +igt@kms_getfb@getfb-handle-not-fb,pass
> > > +igt@kms_getfb@getfb-addfb-different-handles,pass
> > > +igt@kms_getfb@getfb-repeated-different-handles,pass
> > > +igt@kms_getfb@getfb2-handle-zero,pass
> > > +igt@kms_getfb@getfb2-handle-closed,pass
> > > +igt@kms_getfb@getfb2-handle-not-fb,pass
> > > +igt@kms_getfb@getfb2-into-addfb2,pass
> > > +igt@kms_getfb@getfb-handle-protection,pass
> > > +igt@kms_getfb@getfb2-handle-protection,pass
> > > +igt@kms_hdmi_inject@inject-4k,dmesg-warn
> > > +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
> > > +igt@kms_pipe_crc_basic@bad-source,skip
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
> > > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
> > > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
> > > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
> > > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
> > > +igt@kms_prop_blob@basic,pass
> > > +igt@kms_prop_blob@blob-prop-core,pass
> > > +igt@kms_prop_blob@blob-prop-validate,pass
> > > +igt@kms_prop_blob@blob-prop-lifetime,pass
> > > +igt@kms_prop_blob@blob-multiple,pass
> > > +igt@kms_prop_blob@invalid-get-prop-any,pass
> > > +igt@kms_prop_blob@invalid-get-prop,pass
> > > +igt@kms_prop_blob@invalid-set-prop-any,pass
> > > +igt@kms_prop_blob@invalid-set-prop,pass
> > > +igt@kms_rmfb@rmfb-ioctl,skip
> > > +igt@kms_rmfb@close-fd,skip
> > > +igt@kms_setmode@basic,skip
> > > +igt@msm_mapping@sqefw,skip
> > > +igt@msm_mapping@shadow,skip
> > > +igt@msm_recovery@hangcheck,skip
> > > +igt@msm_recovery@gpu-fault,skip
> > > +igt@msm_recovery@iova-fault,skip
> > > +igt@msm_submit@empty-submit,pass
> > > +igt@msm_submit@invalid-queue-submit,pass
> > > +igt@msm_submit@invalid-flags-submit,pass
> > > +igt@msm_submit@invalid-in-fence-submit,pass
> > > +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> > > +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> > > +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> > > +igt@msm_submit@valid-submit,pass
> > > +igt@kms_sysfs_edid_timing,pass
> > > +igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
> > > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
> > > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
> > > +igt@kms_vblank@invalid,skip
> > > +igt@kms_vblank@crtc-id,skip
> > > +igt@kms_vblank@pipe-a-query-idle,skip
> > > +igt@kms_vblank@pipe-a-query-forked,skip
> > > +igt@kms_vblank@pipe-a-query-busy,skip
> > > +igt@kms_vblank@pipe-a-query-forked-busy,skip
> > > +igt@kms_vblank@pipe-a-wait-idle,skip
> > > +igt@kms_vblank@pipe-a-wait-forked,skip
> > > +igt@kms_vblank@pipe-a-wait-busy,skip
> > > +igt@kms_vblank@pipe-a-wait-forked-busy,skip
> > > +igt@kms_vblank@pipe-a-ts-continuation-idle,skip
> > > +igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
> > > +igt@kms_vblank@pipe-b-accuracy-idle,skip
> > > +igt@kms_vblank@pipe-b-query-idle,skip
> > > +igt@kms_vblank@pipe-b-query-forked,skip
> > > +igt@kms_vblank@pipe-b-query-busy,skip
> > > +igt@kms_vblank@pipe-b-query-forked-busy,skip
> > > +igt@kms_vblank@pipe-b-wait-idle,skip
> > > +igt@kms_vblank@pipe-b-wait-forked,skip
> > > +igt@kms_vblank@pipe-b-wait-busy,skip
> > > +igt@kms_vblank@pipe-b-wait-forked-busy,skip
> > > +igt@kms_vblank@pipe-b-ts-continuation-idle,skip
> > > +igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
> > > diff --git a/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > > new file mode 100644
> > > index 000000000000..01f7b4b399b5
> > > --- /dev/null
> > > +++ b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > > @@ -0,0 +1,141 @@
> > > +igt@core_auth@getclient-simple,dmesg-warn
> > > +igt@core_auth@getclient-master-drop,pass
> > > +igt@core_auth@basic-auth,pass
> > > +igt@core_auth@many-magics,pass
> > > +igt@core_getclient,pass
> > > +igt@core_getstats,pass
> > > +igt@core_getversion,pass
> > > +igt@core_setmaster_vs_auth,pass
> > > +igt@drm_read@invalid-buffer,pass
> > > +igt@drm_read@fault-buffer,pass
> > > +igt@drm_read@empty-block,pass
> > > +igt@drm_read@empty-nonblock,pass
> > > +igt@drm_read@short-buffer-block,pass
> > > +igt@drm_read@short-buffer-nonblock,pass
> > > +igt@drm_read@short-buffer-wakeup,pass
> > > +igt@kms_addfb_basic@unused-handle,pass
> > > +igt@kms_addfb_basic@unused-pitches,pass
> > > +igt@kms_addfb_basic@unused-offsets,pass
> > > +igt@kms_addfb_basic@unused-modifier,pass
> > > +igt@kms_addfb_basic@legacy-format,dmesg-warn
> > > +igt@kms_addfb_basic@no-handle,pass
> > > +igt@kms_addfb_basic@basic,pass
> > > +igt@kms_addfb_basic@bad-pitch-0,pass
> > > +igt@kms_addfb_basic@bad-pitch-32,pass
> > > +igt@kms_addfb_basic@bad-pitch-63,pass
> > > +igt@kms_addfb_basic@bad-pitch-128,pass
> > > +igt@kms_addfb_basic@bad-pitch-256,pass
> > > +igt@kms_addfb_basic@bad-pitch-1024,pass
> > > +igt@kms_addfb_basic@bad-pitch-999,pass
> > > +igt@kms_addfb_basic@bad-pitch-65536,pass
> > > +igt@kms_addfb_basic@size-max,pass
> > > +igt@kms_addfb_basic@too-wide,pass
> > > +igt@kms_addfb_basic@too-high,dmesg-warn
> >
> > For test results on Trogdor, is is possible to have them be
> > success/fail/skip only?
> >
> > Results such as dmesg-warn/dmesg-fail are igt_runner specific and
> > because there isn't support for igt_runner on ChromeOS, they will be
> > difficult to replicate and debug.
>
> Actually, I wonder if it would be better to just treat
> dmesg-warn/dmesg-fail as pass/fail?  I'd noticed some flakes on
> rockchip which looked just like unrelated dmesg msg which just
> happened to show up while the test was running.

This is kinda the reason behind standardizing on drm dmesg logging, so
that we have some chances at filtering stuff out. Not sure that's a
good idea, since when your entire box splats and lockdep is dead, then
continuing to run drm tests is still fairly pointless.

I think this is another reason why trying at least to standardize this
stuff over drivers would be pretty good idea.

> Additionally, some of the tests, like msm_recovery, are *expected* to
> generate some dmesg spam since they are intentionally triggering GPU
> hangs to test the recovery mechanism.

Uh I don't like that. It just allows userspace to spam dmesg, which
doesn't seem like a great idea. That's at least why i915 dumps these
at a lower level, and in the past had a special "I'm going to whack
the gpu real hard expect hangs" knob in debugfs.

Having tests which intentionally spam dmesg above info level isn't
really good since then you need endless amounts of test-specific
encoding of what is considered a success and what not. Like when a
backmerge breaks a testcases which is already at dmesg-fail, is that
bad or not? Probably bad, but was the situation before that really
good or already kinda on fire?
-Daniel

> BR,
> -R
>
> > > +igt@kms_addfb_basic@bo-too-small,pass
> > > +igt@kms_addfb_basic@small-bo,pass
> > > +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> > > +igt@kms_addfb_basic@addfb25-bad-modifier,dmesg-warn
> > > +igt@kms_addfb_basic@invalid-get-prop-any,pass
> > > +igt@kms_addfb_basic@invalid-get-prop,pass
> > > +igt@kms_addfb_basic@invalid-set-prop-any,pass
> > > +igt@kms_addfb_basic@invalid-set-prop,pass
> > > +igt@kms_addfb_basic@master-rmfb,pass
> > > +igt@kms_atomic@plane-overlay-legacy,skip
> > > +igt@kms_atomic@plane-primary-legacy,pass
> > > +igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
> > > +igt@kms_atomic@plane-immutable-zpos,pass
> > > +igt@kms_atomic@test-only,pass
> > > +igt@kms_atomic@plane-cursor-legacy,pass
> > > +igt@kms_atomic@plane-invalid-params,pass
> > > +igt@kms_atomic@crtc-invalid-params,pass
> > > +igt@kms_atomic@atomic-invalid-params,pass
> > > +igt@kms_atomic@atomic_plane_damage,pass
> > > +igt@kms_atomic_interruptible@legacy-setmode,skip
> > > +igt@kms_atomic_interruptible@atomic-setmode,skip
> > > +igt@kms_atomic_interruptible@legacy-dpms,skip
> > > +igt@kms_atomic_interruptible@legacy-pageflip,skip
> > > +igt@kms_atomic_interruptible@legacy-cursor,skip
> > > +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> > > +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> > > +igt@kms_content_protection@lic,skip
> > > +igt@kms_flip_event_leak,pass
> > > +igt@kms_getfb@getfb-handle-zero,pass
> > > +igt@kms_getfb@getfb-handle-valid,pass
> > > +igt@kms_getfb@getfb-handle-closed,pass
> > > +igt@kms_getfb@getfb-handle-not-fb,pass
> > > +igt@kms_getfb@getfb-addfb-different-handles,pass
> > > +igt@kms_getfb@getfb-repeated-different-handles,pass
> > > +igt@kms_getfb@getfb2-handle-zero,pass
> > > +igt@kms_getfb@getfb2-handle-closed,pass
> > > +igt@kms_getfb@getfb2-handle-not-fb,pass
> > > +igt@kms_getfb@getfb2-into-addfb2,pass
> > > +igt@kms_getfb@getfb-handle-protection,pass
> > > +igt@kms_getfb@getfb2-handle-protection,pass
> > > +igt@kms_hdmi_inject@inject-4k,skip
> > > +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
> > > +igt@kms_pipe_crc_basic@bad-source,pass
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-a,pass
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,pass
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,pass
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,pass
> > > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,pass
> > > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,pass
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-b,pass
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,pass
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,pass
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,pass
> > > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,pass
> > > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,pass
> > > +igt@kms_prop_blob@basic,pass
> > > +igt@kms_prop_blob@blob-prop-core,pass
> > > +igt@kms_prop_blob@blob-prop-validate,pass
> > > +igt@kms_prop_blob@blob-prop-lifetime,pass
> > > +igt@kms_prop_blob@blob-multiple,pass
> > > +igt@kms_prop_blob@invalid-get-prop-any,pass
> > > +igt@kms_prop_blob@invalid-get-prop,pass
> > > +igt@kms_prop_blob@invalid-set-prop-any,pass
> > > +igt@kms_prop_blob@invalid-set-prop,pass
> > > +igt@kms_rmfb@rmfb-ioctl,pass
> > > +igt@kms_rmfb@close-fd,fail
> > > +igt@kms_setmode@basic@pipe-a-edp-1,pass
> > > +igt@kms_setmode@basic@pipe-b-edp-1,pass
> > > +igt@msm_mapping@sqefw,dmesg-fail
> > > +igt@msm_mapping@shadow,dmesg-fail
> > > +igt@msm_recovery@hangcheck,dmesg-warn
> > > +igt@msm_recovery@gpu-fault,dmesg-warn
> > > +igt@msm_recovery@iova-fault,dmesg-warn
> > > +igt@msm_submit@empty-submit,pass
> > > +igt@msm_submit@invalid-queue-submit,pass
> > > +igt@msm_submit@invalid-flags-submit,pass
> > > +igt@msm_submit@invalid-in-fence-submit,pass
> > > +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> > > +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> > > +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> > > +igt@msm_submit@valid-submit,pass
> > > +igt@kms_sysfs_edid_timing,pass
> > > +igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
> > > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,pass
> > > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,fail
> >
> > We could probably skip checking the results for kms_universal_plane on
> > Trogdor for now, since this is a test affected by the hack regression.
> > There is an IGT patch in the works for fixing the
> > disable-primary-vs-flip-pipe-b failure, so it should be updated pretty
> > soon too.
> >
> > Thanks,
> > Jessica Zhang
> >
> > > +igt@kms_vblank@invalid,pass
> > > +igt@kms_vblank@crtc-id,pass
> > > +igt@kms_vblank@pipe-a-query-idle,pass
> > > +igt@kms_vblank@pipe-a-query-forked,pass
> > > +igt@kms_vblank@pipe-a-query-busy,pass
> > > +igt@kms_vblank@pipe-a-query-forked-busy,pass
> > > +igt@kms_vblank@pipe-a-wait-idle,pass
> > > +igt@kms_vblank@pipe-a-wait-forked,pass
> > > +igt@kms_vblank@pipe-a-wait-busy,pass
> > > +igt@kms_vblank@pipe-a-wait-forked-busy,pass
> > > +igt@kms_vblank@pipe-a-ts-continuation-idle,pass
> > > +igt@kms_vblank@pipe-a-ts-continuation-modeset,pass
> > > +igt@kms_vblank@pipe-b-accuracy-idle,pass
> > > +igt@kms_vblank@pipe-b-query-idle,pass
> > > +igt@kms_vblank@pipe-b-query-forked,pass
> > > +igt@kms_vblank@pipe-b-query-busy,pass
> > > +igt@kms_vblank@pipe-b-query-forked-busy,pass
> > > +igt@kms_vblank@pipe-b-wait-idle,pass
> > > +igt@kms_vblank@pipe-b-wait-forked,pass
> > > +igt@kms_vblank@pipe-b-wait-busy,pass
> > > +igt@kms_vblank@pipe-b-wait-forked-busy,pass
> > > +igt@kms_vblank@pipe-b-ts-continuation-idle,pass
> > > +igt@kms_vblank@pipe-b-ts-continuation-modeset,pass
> > > diff --git a/drivers/gpu/drm/msm/ci/msm_sdm845_results.txt b/drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
> > > new file mode 100644
> > > index 000000000000..3df1e5ef6d80
> > > --- /dev/null
> > > +++ b/drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
> > > @@ -0,0 +1,141 @@
> > > +igt@core_auth@getclient-simple,dmesg-warn
> > > +igt@core_auth@getclient-master-drop,pass
> > > +igt@core_auth@basic-auth,pass
> > > +igt@core_auth@many-magics,pass
> > > +igt@core_getclient,pass
> > > +igt@core_getstats,pass
> > > +igt@core_getversion,pass
> > > +igt@core_setmaster_vs_auth,pass
> > > +igt@drm_read@invalid-buffer,pass
> > > +igt@drm_read@fault-buffer,pass
> > > +igt@drm_read@empty-block,pass
> > > +igt@drm_read@empty-nonblock,pass
> > > +igt@drm_read@short-buffer-block,pass
> > > +igt@drm_read@short-buffer-nonblock,pass
> > > +igt@drm_read@short-buffer-wakeup,pass
> > > +igt@kms_addfb_basic@unused-handle,pass
> > > +igt@kms_addfb_basic@unused-pitches,pass
> > > +igt@kms_addfb_basic@unused-offsets,pass
> > > +igt@kms_addfb_basic@unused-modifier,pass
> > > +igt@kms_addfb_basic@legacy-format,dmesg-warn
> > > +igt@kms_addfb_basic@no-handle,pass
> > > +igt@kms_addfb_basic@basic,pass
> > > +igt@kms_addfb_basic@bad-pitch-0,pass
> > > +igt@kms_addfb_basic@bad-pitch-32,pass
> > > +igt@kms_addfb_basic@bad-pitch-63,pass
> > > +igt@kms_addfb_basic@bad-pitch-128,pass
> > > +igt@kms_addfb_basic@bad-pitch-256,pass
> > > +igt@kms_addfb_basic@bad-pitch-1024,pass
> > > +igt@kms_addfb_basic@bad-pitch-999,pass
> > > +igt@kms_addfb_basic@bad-pitch-65536,pass
> > > +igt@kms_addfb_basic@size-max,pass
> > > +igt@kms_addfb_basic@too-wide,pass
> > > +igt@kms_addfb_basic@too-high,dmesg-warn
> > > +igt@kms_addfb_basic@bo-too-small,pass
> > > +igt@kms_addfb_basic@small-bo,pass
> > > +igt@kms_addfb_basic@addfb25-modifier-no-flag,pass
> > > +igt@kms_addfb_basic@addfb25-bad-modifier,dmesg-warn
> > > +igt@kms_addfb_basic@invalid-get-prop-any,pass
> > > +igt@kms_addfb_basic@invalid-get-prop,pass
> > > +igt@kms_addfb_basic@invalid-set-prop-any,pass
> > > +igt@kms_addfb_basic@invalid-set-prop,pass
> > > +igt@kms_addfb_basic@master-rmfb,pass
> > > +igt@kms_atomic@plane-overlay-legacy,dmesg-warn
> > > +igt@kms_atomic@plane-primary-legacy,dmesg-warn
> > > +igt@kms_atomic@plane-primary-overlay-mutable-zpos,dmesg-warn
> > > +igt@kms_atomic@plane-immutable-zpos,dmesg-warn
> > > +igt@kms_atomic@test-only,dmesg-warn
> > > +igt@kms_atomic@plane-cursor-legacy,dmesg-warn
> > > +igt@kms_atomic@plane-invalid-params,dmesg-warn
> > > +igt@kms_atomic@crtc-invalid-params,dmesg-warn
> > > +igt@kms_atomic@atomic-invalid-params,dmesg-warn
> > > +igt@kms_atomic@atomic_plane_damage,dmesg-warn
> > > +igt@kms_atomic_interruptible@legacy-setmode,skip
> > > +igt@kms_atomic_interruptible@atomic-setmode,skip
> > > +igt@kms_atomic_interruptible@legacy-dpms,skip
> > > +igt@kms_atomic_interruptible@legacy-pageflip,skip
> > > +igt@kms_atomic_interruptible@legacy-cursor,skip
> > > +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> > > +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> > > +igt@kms_content_protection@lic,skip
> > > +igt@kms_flip_event_leak,dmesg-warn
> > > +igt@kms_getfb@getfb-handle-zero,pass
> > > +igt@kms_getfb@getfb-handle-valid,pass
> > > +igt@kms_getfb@getfb-handle-closed,pass
> > > +igt@kms_getfb@getfb-handle-not-fb,pass
> > > +igt@kms_getfb@getfb-addfb-different-handles,pass
> > > +igt@kms_getfb@getfb-repeated-different-handles,pass
> > > +igt@kms_getfb@getfb2-handle-zero,pass
> > > +igt@kms_getfb@getfb2-handle-closed,pass
> > > +igt@kms_getfb@getfb2-handle-not-fb,pass
> > > +igt@kms_getfb@getfb2-into-addfb2,pass
> > > +igt@kms_getfb@getfb-handle-protection,pass
> > > +igt@kms_getfb@getfb2-handle-protection,pass
> > > +igt@kms_hdmi_inject@inject-4k,skip
> > > +igt@kms_multipipe_modeset@basic-max-pipe-crc-check,pass
> > > +igt@kms_pipe_crc_basic@bad-source,pass
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-a,pass
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,pass
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,pass
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,pass
> > > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,dmesg-warn
> > > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,dmesg-warn
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
> > > +igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
> > > +igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
> > > +igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
> > > +igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
> > > +igt@kms_prop_blob@basic,pass
> > > +igt@kms_prop_blob@blob-prop-core,pass
> > > +igt@kms_prop_blob@blob-prop-validate,pass
> > > +igt@kms_prop_blob@blob-prop-lifetime,pass
> > > +igt@kms_prop_blob@blob-multiple,pass
> > > +igt@kms_prop_blob@invalid-get-prop-any,pass
> > > +igt@kms_prop_blob@invalid-get-prop,pass
> > > +igt@kms_prop_blob@invalid-set-prop-any,pass
> > > +igt@kms_prop_blob@invalid-set-prop,pass
> > > +igt@kms_rmfb@rmfb-ioctl,pass
> > > +igt@kms_rmfb@close-fd,fail
> > > +igt@kms_setmode@basic@pipe-a-edp-1,dmesg-warn
> > > +igt@kms_setmode@basic,skip
> > > +igt@msm_mapping@sqefw,dmesg-fail
> > > +igt@msm_mapping@shadow,dmesg-fail
> > > +igt@msm_recovery@hangcheck,dmesg-warn
> > > +igt@msm_recovery@gpu-fault,dmesg-warn
> > > +igt@msm_recovery@iova-fault,dmesg-warn
> > > +igt@msm_submit@empty-submit,pass
> > > +igt@msm_submit@invalid-queue-submit,pass
> > > +igt@msm_submit@invalid-flags-submit,pass
> > > +igt@msm_submit@invalid-in-fence-submit,pass
> > > +igt@msm_submit@invalid-duplicate-bo-submit,dmesg-warn
> > > +igt@msm_submit@invalid-cmd-idx-submit,dmesg-warn
> > > +igt@msm_submit@invalid-cmd-type-submit,dmesg-warn
> > > +igt@msm_submit@valid-submit,pass
> > > +igt@kms_sysfs_edid_timing,pass
> > > +igt@kms_universal_plane@universal-plane-pipe-a-functional,dmesg-fail
> > > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,dmesg-warn
> > > +igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
> > > +igt@kms_vblank@invalid,dmesg-warn
> > > +igt@kms_vblank@crtc-id,dmesg-warn
> > > +igt@kms_vblank@pipe-a-query-idle,dmesg-warn
> > > +igt@kms_vblank@pipe-a-query-forked,dmesg-warn
> > > +igt@kms_vblank@pipe-a-query-busy,dmesg-warn
> > > +igt@kms_vblank@pipe-a-query-forked-busy,dmesg-warn
> > > +igt@kms_vblank@pipe-a-wait-idle,dmesg-warn
> > > +igt@kms_vblank@pipe-a-wait-forked,dmesg-warn
> > > +igt@kms_vblank@pipe-a-wait-busy,dmesg-warn
> > > +igt@kms_vblank@pipe-a-wait-forked-busy,dmesg-warn
> > > +igt@kms_vblank@pipe-a-ts-continuation-idle,dmesg-warn
> > > +igt@kms_vblank@pipe-a-ts-continuation-modeset,dmesg-warn
> > > +igt@kms_vblank@pipe-b-accuracy-idle,skip
> > > +igt@kms_vblank@pipe-b-query-idle,skip
> > > +igt@kms_vblank@pipe-b-query-forked,skip
> > > +igt@kms_vblank@pipe-b-query-busy,skip
> > > +igt@kms_vblank@pipe-b-query-forked-busy,skip
> > > +igt@kms_vblank@pipe-b-wait-idle,skip
> > > +igt@kms_vblank@pipe-b-wait-forked,skip
> > > +igt@kms_vblank@pipe-b-wait-busy,skip
> > > +igt@kms_vblank@pipe-b-wait-forked-busy,skip
> > > +igt@kms_vblank@pipe-b-ts-continuation-idle,skip
> > > +igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
> > > --
> > > 2.31.1
> > >



-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [Freedreno] Adding CI results to the kernel tree was Re: [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-11 16:43             ` Daniel Vetter
@ 2022-05-11 17:23               ` Rob Clark
  0 siblings, 0 replies; 49+ messages in thread
From: Rob Clark @ 2022-05-11 17:23 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: Tomeu Vizoso, Jonathan Corbet, Sean Paul, linux-arm-msm,
	open list:DOCUMENTATION, Abhinav Kumar, dri-devel, LKML,
	Michel Dänzer, Linus Torvalds, Thomas Zimmermann,
	Greg Kroah-Hartman, freedreno

On Wed, May 11, 2022 at 9:43 AM Daniel Vetter <daniel@ffwll.ch> wrote:
>
> On Wed, 11 May 2022 at 15:33, Rob Clark <robdclark@gmail.com> wrote:
> > On Wed, May 11, 2022 at 4:50 AM Greg Kroah-Hartman
> > <gregkh@linuxfoundation.org> wrote:
> > >
> > > On Wed, May 11, 2022 at 12:26:05PM +0200, Michel Dänzer wrote:
> > > > On 2022-05-11 08:22, Greg Kroah-Hartman wrote:
> > > > > On Wed, May 11, 2022 at 03:06:47PM +1000, Dave Airlie wrote:
> > > > >>> And use it to store expectations about what the drm/msm driver is
> > > > >>> supposed to pass in the IGT test suite.
> > > > >>
> > > > >> I wanted to loop in Linus/Greg to see if there are any issues raised
> > > > >> by adding CI results file to the tree in their minds, or if any other
> > > > >> subsystem has done this already, and it's all fine.
> > > > >
> > > > > Why does the results need to be added to the tree?  Shouldn't they be
> > > > > either "all is good" or "constantly changing and a constant churn"?
> > > > >
> > > > >> I think this is a good thing after our Mesa experience, but Mesa has a
> > > > >> lot tighter integration here, so I want to get some more opinions
> > > > >> outside the group.
> > > > >
> > > > > For systems that have "tight integration" this might make sense as proof
> > > > > that all is working for a specific commit, but I can't see how this will
> > > > > help the kernel out much.
> > > > >
> > > > > What are you going to do with these results being checked in all the
> > > > > time?
> > > >
> > > > Having the expected results in the tree keeps them consistent with the driver code itself, and allows putting in place gating CI to prevent merging driver changes which make any of the tests deviate from the expected result.
> > >
> > > Shouldn't "expected result" always be "pass"?
> > >
> > > If not, then the test should be changed to be "skipped" like we have
> > > today in the kselftest tests.
> >
> > No, we want to run tests even if they are expected to fail.  This
> > prevents the scenario of a test getting fixed without being noticed
> > (for ex, developer was working on fixing test A and didn't notice that
> > the fix also fixed test B).  If a fix goes unnoticed, a later
> > regression would also go unnoticed ;-)
> >
> > I was skeptical about this approach at first with mesa CI, but having
> > used mesa CI for a while, I am now a firm believer in the approach.
> >
> > And ofc we want the expectations to be in the kernel tree because
> > there could be, for example, differences between -fixes and -next
> > branches.  (Or even stable kernel branches if/when we get to the point
> > of running CI on those.)
>
> Yeah result files in tree is kinda needed, even more so for the
> kernel. A lot of the linux-next integration testing is only done after
> patches have landed, and sometimes such breakage makes it to upstream
> and then into the subsystem/driver tree. Annotating in the backmerge
> what exactly broke and why helps a lot with tracking issues.
>
> And expecting every subsystem to run every other subsystem's tests,
> especially tests that run on hw, is just not going to scale. So there
> will be all kinds of difference in test results.
>
> > > And how about tieing this into the kselftest process as well, why would
> > > this be somehow separate from the rest of the kernel tests?
> > >
> > > > Keeping them separate inevitably results in divergence between the driver code and the expected test results, which would result in spurious failures of such CI.
> > >
> > > Again, "pass" should be the expected results :)
> > >
> > > > I expect the main complication for the kernel will be due to driver changes merged via different trees, e.g. for cross-subsystem reworks. Since those will not go through the same CI, they may accidentally introduce inconsistencies. The ideal solution for this IMO would be centralizing CI such that the same gating tests have to pass regardless of how the code is merged. But there's likely quite a long way to go until we get there. :)
> > >
> > > We have in-kernel tests for the rest of the kernel, why can't you put
> > > your testing stuff into there as well?
> >
> > We could ofc put a lot more of the gitlab yml and scripts into the
> > kernel tree.  Probably all of i-g-t is a bit much to put in the kernel
> > tree.  Not to mention I'd like to see this expand to also run some
> > deqp and/or piglit tests, which is definitely too much to vendor into
> > the kernel tree.
> >
> > The approach of this RFC was to put only what was absolutely required
> > in the kernel tree (such as expectations), and then link out to an
> > external drm-ci tree[1] which has all the necessary scripts and yml
> > for building and running tests, to avoid having to put a whole lot
> > more in the kernel tree. (We should be specifying exact commit-sha for
> > that tree, IMO, as it controls the version of i-g-t which gets used,
> > and we need to be able to update expectations in sync with an i-g-t
> > uprev, for example when new tests are added or if a test fix caused a
> > fail->pass transition.)
>
> Yeah I think longer-term we should carry a lot more in upstream, at
> least anything that's shared across drivers wrt the ci integration (or
> build testing and running tests which are hw agnostic). Maybe even
> igt, not sure (otoh xfs-tests isn't moving into the kernel either, and
> there's lots more like that).

A lot of the drm-ci tree is the scripts/etc for things like power
control, booting, etc.. and a lot of that is identical to what we have
in the mesa tree (since the on-hw tests run on the same CI farms as
mesa-ci)

But ofc it can be re-used by other drivers via one line in toplevel
$driver/ci/gitlab-ci.yml, ie:

  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci

BR,
-R

> Personally I think long-term the only thing outside should be other
> repos with tests or stuff you need to run them, and not really the
> glue to make it all work in ci. But that's maybe a bit too much
> wishful thinking if CI systems stay largely subsystem specific (which
> they currently are in many ways, with some overlap).
>
> But maybe there is enough random pieces to share here for a lot more
> in-tree to make sense, and imo the fewer extra steps and indirection
> CI testing and test updating has, the better.
>
> But like Rob says, eventually there's a limit and when you put the
> entire GL/vulkan stack + it's conformance testsuite (which is
> maintained by khronos somewhere completely different than both
> kernel.org and freedesktop.org) then it's definitely too much and wont
> work. And eventually we do want to run these things too (e.g.
> intel-gfx-ci does run mesa + piglit on every run).
> -Daniel
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Adding CI results to the kernel tree was Re: [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-11  5:06   ` Adding CI results to the kernel tree was " Dave Airlie
  2022-05-11  6:22     ` Greg Kroah-Hartman
@ 2022-05-11 17:33     ` Linus Torvalds
  2022-05-11 18:39       ` Rob Clark
  2022-05-11 19:39       ` Daniel Vetter
  1 sibling, 2 replies; 49+ messages in thread
From: Linus Torvalds @ 2022-05-11 17:33 UTC (permalink / raw)
  To: Dave Airlie
  Cc: freedreno, Thomas Zimmermann, Tomeu Vizoso, Jonathan Corbet,
	Greg Kroah-Hartman, open list:DOCUMENTATION, Abhinav Kumar, LKML,
	dri-devel, linux-arm-msm, Sean Paul

On Tue, May 10, 2022 at 10:07 PM Dave Airlie <airlied@gmail.com> wrote:
>
> > And use it to store expectations about what the drm/msm driver is
> > supposed to pass in the IGT test suite.
>
> I wanted to loop in Linus/Greg to see if there are any issues raised
> by adding CI results file to the tree in their minds, or if any other
> subsystem has done this already, and it's all fine.
>
> I think this is a good thing after our Mesa experience, but Mesa has a
> lot tighter integration here, so I want to get some more opinions
> outside the group.

Honestly, my immediate reaction is that I think it might be ok, but

 (a) are these things going to absolutely balloon over time?

 (b) should these not be separated out?

Those two issues kind of interact.

If it's a small and targeted test-suite, by all means keep it in the
kernel, but why not make it part of "tools/testing/selftests"

But if people expect this to balloon and we end up having megabytes of
test output, then I really think it should be a separate git tree.

A diffstat like this:

>  7 files changed, 791 insertions(+)

is not a problem at all. But I get the feeling that this is just the
tip of the iceberg, and people will want to not just have the result
files, but start adding actual *input* files that may be largely
automated stuff and may be tens of megabytes in size.

Because the result files on their own aren't really self-contained,
and then people will want to keep them in sync with the test-files
themselves, and start adding those, and now it *really* is likely very
unwieldy.

Or if that doesn't happen, and the actual input test files stay in a
separate CI repo, and then you end up having random coherency issues
with that CI repo, and it all gets to be either horribly messy, or the
result files in the kernel end up really stale.

So honestly, I personally don't see a good end result here.  This
particular small patch? *This* one looks fine to me, except I really
think tools/testing/selftests/gpu would be a much more logical place
for it.

But I don't see a way forward that is sane.

Can somebody argue otherwise?

            Linus

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [Freedreno] [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-11 17:12       ` Daniel Vetter
@ 2022-05-11 17:46         ` Rob Clark
  2022-05-11 19:14           ` Daniel Vetter
  2022-05-12 13:28           ` Tomeu Vizoso
  0 siblings, 2 replies; 49+ messages in thread
From: Rob Clark @ 2022-05-11 17:46 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: freedreno, Tomeu Vizoso, open list:DOCUMENTATION, David Airlie,
	linux-arm-msm, Jonathan Corbet, Abhinav Kumar,
	Linux Kernel Mailing List, dri-devel, Thomas Zimmermann,
	Jessica Zhang, Sean Paul

On Wed, May 11, 2022 at 10:12 AM Daniel Vetter <daniel@ffwll.ch> wrote:
>
> On Tue, 10 May 2022 at 22:26, Rob Clark <robdclark@gmail.com> wrote:
> >
> > On Tue, May 10, 2022 at 12:39 PM Jessica Zhang
> > <quic_jesszhan@quicinc.com> wrote:
> > >
> > >
> > >
> > > On 5/10/2022 7:13 AM, Tomeu Vizoso wrote:
> > > > And use it to store expectations about what the drm/msm driver is
> > > > supposed to pass in the IGT test suite.
> > > >
> > > > Also include a configuration file that points to the out-of-tree CI
> > > > scripts.
> > > >
> > > > By storing the test expectations along the code we can make sure both
> > > > stay in sync with each other, and so we can know when a code change
> > > > breaks those expectations.
> > > >
> > > > This will allow all contributors to drm/msm to reuse the infrastructure
> > > > already in gitlab.freedesktop.org to test the driver on several
> > > > generations of the hardware.
> > > >
> > > > v2:
> > > >    - Fix names of result expectation files to match SoC
> > > >    - Don't execute tests that are going to skip on all boards
> > > >
> > > > Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> > > > ---
> > > >   Documentation/gpu/msm_automated_testing.rst   |  70 +++++++++
> > > >   drivers/gpu/drm/msm/ci/gitlab-ci.yml          |  11 ++
> > > >   drivers/gpu/drm/msm/ci/msm.testlist           | 148 ++++++++++++++++++
> > > >   .../gpu/drm/msm/ci/msm_apq8016_results.txt    | 140 +++++++++++++++++
> > > >   .../gpu/drm/msm/ci/msm_apq8096_results.txt    | 140 +++++++++++++++++
> > > >   drivers/gpu/drm/msm/ci/msm_sc7180_results.txt | 141 +++++++++++++++++
> > > >   drivers/gpu/drm/msm/ci/msm_sdm845_results.txt | 141 +++++++++++++++++
> > > >   7 files changed, 791 insertions(+)
> > > >   create mode 100644 Documentation/gpu/msm_automated_testing.rst
> > > >   create mode 100644 drivers/gpu/drm/msm/ci/gitlab-ci.yml
> > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm.testlist
> > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
> > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
> > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
> > > >

[snip]

> > > > diff --git a/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > > > new file mode 100644
> > > > index 000000000000..01f7b4b399b5
> > > > --- /dev/null
> > > > +++ b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > > > @@ -0,0 +1,141 @@
> > > > +igt@core_auth@getclient-simple,dmesg-warn
> > > > +igt@core_auth@getclient-master-drop,pass
> > > > +igt@core_auth@basic-auth,pass
> > > > +igt@core_auth@many-magics,pass
> > > > +igt@core_getclient,pass
> > > > +igt@core_getstats,pass
> > > > +igt@core_getversion,pass
> > > > +igt@core_setmaster_vs_auth,pass
> > > > +igt@drm_read@invalid-buffer,pass
> > > > +igt@drm_read@fault-buffer,pass
> > > > +igt@drm_read@empty-block,pass
> > > > +igt@drm_read@empty-nonblock,pass
> > > > +igt@drm_read@short-buffer-block,pass
> > > > +igt@drm_read@short-buffer-nonblock,pass
> > > > +igt@drm_read@short-buffer-wakeup,pass
> > > > +igt@kms_addfb_basic@unused-handle,pass
> > > > +igt@kms_addfb_basic@unused-pitches,pass
> > > > +igt@kms_addfb_basic@unused-offsets,pass
> > > > +igt@kms_addfb_basic@unused-modifier,pass
> > > > +igt@kms_addfb_basic@legacy-format,dmesg-warn
> > > > +igt@kms_addfb_basic@no-handle,pass
> > > > +igt@kms_addfb_basic@basic,pass
> > > > +igt@kms_addfb_basic@bad-pitch-0,pass
> > > > +igt@kms_addfb_basic@bad-pitch-32,pass
> > > > +igt@kms_addfb_basic@bad-pitch-63,pass
> > > > +igt@kms_addfb_basic@bad-pitch-128,pass
> > > > +igt@kms_addfb_basic@bad-pitch-256,pass
> > > > +igt@kms_addfb_basic@bad-pitch-1024,pass
> > > > +igt@kms_addfb_basic@bad-pitch-999,pass
> > > > +igt@kms_addfb_basic@bad-pitch-65536,pass
> > > > +igt@kms_addfb_basic@size-max,pass
> > > > +igt@kms_addfb_basic@too-wide,pass
> > > > +igt@kms_addfb_basic@too-high,dmesg-warn
> > >
> > > For test results on Trogdor, is is possible to have them be
> > > success/fail/skip only?
> > >
> > > Results such as dmesg-warn/dmesg-fail are igt_runner specific and
> > > because there isn't support for igt_runner on ChromeOS, they will be
> > > difficult to replicate and debug.
> >
> > Actually, I wonder if it would be better to just treat
> > dmesg-warn/dmesg-fail as pass/fail?  I'd noticed some flakes on
> > rockchip which looked just like unrelated dmesg msg which just
> > happened to show up while the test was running.
>
> This is kinda the reason behind standardizing on drm dmesg logging, so
> that we have some chances at filtering stuff out. Not sure that's a
> good idea, since when your entire box splats and lockdep is dead, then
> continuing to run drm tests is still fairly pointless.

I'm not sure if we are using it yet for drm-ci, but for mesa-ci we
monitor dmesg (over serial port, from the controller) for splats, so
we already have the tech for restarting or aborting the CI run.  We
don't need igt-runner to tell us.

> I think this is another reason why trying at least to standardize this
> stuff over drivers would be pretty good idea.
>
> > Additionally, some of the tests, like msm_recovery, are *expected* to
> > generate some dmesg spam since they are intentionally triggering GPU
> > hangs to test the recovery mechanism.
>
> Uh I don't like that. It just allows userspace to spam dmesg, which
> doesn't seem like a great idea. That's at least why i915 dumps these
> at a lower level, and in the past had a special "I'm going to whack
> the gpu real hard expect hangs" knob in debugfs.
>
> Having tests which intentionally spam dmesg above info level isn't
> really good since then you need endless amounts of test-specific
> encoding of what is considered a success and what not. Like when a
> backmerge breaks a testcases which is already at dmesg-fail, is that
> bad or not? Probably bad, but was the situation before that really
> good or already kinda on fire?

I guess I could add some debugfs knobs to squelch the dmesg msgs on
gpu hangs.  In the normal case, I'd prefer that gpu hangs are not
silent.. since that is something we get in feedback reports if a user
(or dogfooder) reports a bug.

The rockchip case I mentioned was some unrelated dmesg about
linktraining failing.. presumably because there was no display
attached?  IDK, I didn't look too closely.  But my point is we could
be getting unrelated and asynchronous dmesg spam, even from other
kernel subsystems.  Letting that be part of the test results just
sounds like asking for flakes.

BR,
-R

> -Daniel
>
> > BR,
> > -R
> >

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Adding CI results to the kernel tree was Re: [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-11 17:33     ` Linus Torvalds
@ 2022-05-11 18:39       ` Rob Clark
  2022-05-11 19:08         ` Linus Torvalds
  2022-05-11 19:39       ` Daniel Vetter
  1 sibling, 1 reply; 49+ messages in thread
From: Rob Clark @ 2022-05-11 18:39 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Sean Paul, freedreno, Tomeu Vizoso, Jonathan Corbet,
	Greg Kroah-Hartman, open list:DOCUMENTATION, Abhinav Kumar, LKML,
	dri-devel, Thomas Zimmermann, linux-arm-msm

On Wed, May 11, 2022 at 10:33 AM Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
> On Tue, May 10, 2022 at 10:07 PM Dave Airlie <airlied@gmail.com> wrote:
> >
> > > And use it to store expectations about what the drm/msm driver is
> > > supposed to pass in the IGT test suite.
> >
> > I wanted to loop in Linus/Greg to see if there are any issues raised
> > by adding CI results file to the tree in their minds, or if any other
> > subsystem has done this already, and it's all fine.
> >
> > I think this is a good thing after our Mesa experience, but Mesa has a
> > lot tighter integration here, so I want to get some more opinions
> > outside the group.
>
> Honestly, my immediate reaction is that I think it might be ok, but
>
>  (a) are these things going to absolutely balloon over time?
>
>  (b) should these not be separated out?
>
> Those two issues kind of interact.
>
> If it's a small and targeted test-suite, by all means keep it in the
> kernel, but why not make it part of "tools/testing/selftests"
>
> But if people expect this to balloon and we end up having megabytes of
> test output, then I really think it should be a separate git tree.
>
> A diffstat like this:
>
> >  7 files changed, 791 insertions(+)
>
> is not a problem at all. But I get the feeling that this is just the
> tip of the iceberg, and people will want to not just have the result
> files, but start adding actual *input* files that may be largely
> automated stuff and may be tens of megabytes in size.
>
> Because the result files on their own aren't really self-contained,
> and then people will want to keep them in sync with the test-files
> themselves, and start adding those, and now it *really* is likely very
> unwieldy.

It is missing in this revision of the RFC, but the intention is to
have the gitlab-ci.yml point to a specific commit SHA in the
gfx-ci/drm-ci[1] tree, to solve the problem of keeping the results in
sync with the expectations.  Ie. a kernel commit would control moving
to a new version of i-g-t (and eventually deqp and/or piglit), and at
the same time make any necessary updates in the expectations files.

BR,
-R

[1] https://gitlab.freedesktop.org/gfx-ci/drm-ci

> Or if that doesn't happen, and the actual input test files stay in a
> separate CI repo, and then you end up having random coherency issues
> with that CI repo, and it all gets to be either horribly messy, or the
> result files in the kernel end up really stale.
>
> So honestly, I personally don't see a good end result here.  This
> particular small patch? *This* one looks fine to me, except I really
> think tools/testing/selftests/gpu would be a much more logical place
> for it.
>
> But I don't see a way forward that is sane.
>
> Can somebody argue otherwise?
>
>             Linus

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Adding CI results to the kernel tree was Re: [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-11 18:39       ` Rob Clark
@ 2022-05-11 19:08         ` Linus Torvalds
  2022-05-11 19:12           ` Linus Torvalds
  2022-05-11 20:06           ` Rob Clark
  0 siblings, 2 replies; 49+ messages in thread
From: Linus Torvalds @ 2022-05-11 19:08 UTC (permalink / raw)
  To: Rob Clark
  Cc: Sean Paul, freedreno, Tomeu Vizoso, Jonathan Corbet,
	Greg Kroah-Hartman, open list:DOCUMENTATION, Abhinav Kumar, LKML,
	dri-devel, Thomas Zimmermann, linux-arm-msm

On Wed, May 11, 2022 at 11:40 AM Rob Clark <robdclark@gmail.com> wrote:
>
> It is missing in this revision of the RFC, but the intention is to
> have the gitlab-ci.yml point to a specific commit SHA in the
> gfx-ci/drm-ci[1] tree, to solve the problem of keeping the results in
> sync with the expectations.  Ie. a kernel commit would control moving
> to a new version of i-g-t (and eventually deqp and/or piglit), and at
> the same time make any necessary updates in the expectations files.

Wouldn't it then be better to just have the expectation files in the
ci tree too?

The kernel tree might have just the expected *failures* listed, if
there are any. Presumably the ci tree has to have the expected results
anyway, so what's the advantage of listing non-failures?

                  Linus

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Adding CI results to the kernel tree was Re: [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-11 19:08         ` Linus Torvalds
@ 2022-05-11 19:12           ` Linus Torvalds
  2022-05-11 20:14             ` [Freedreno] " Rob Clark
  2022-05-11 20:06           ` Rob Clark
  1 sibling, 1 reply; 49+ messages in thread
From: Linus Torvalds @ 2022-05-11 19:12 UTC (permalink / raw)
  To: Rob Clark
  Cc: Sean Paul, freedreno, Tomeu Vizoso, Jonathan Corbet,
	Greg Kroah-Hartman, open list:DOCUMENTATION, Abhinav Kumar, LKML,
	dri-devel, Thomas Zimmermann, linux-arm-msm

On Wed, May 11, 2022 at 12:08 PM Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
> The kernel tree might have just the expected *failures* listed, if
> there are any. Presumably the ci tree has to have the expected results
> anyway, so what's the advantage of listing non-failures?

.. put another way: I think a list of "we are aware that these
currently fail" is quite reasonable for a development tree, maybe even
with a comment in the commit that created them about why they
currently fail.

That also ends up being very nice if you fix a problem, and the fix
commit might then remove the failure for the list, and that all makes
perfect sense.

But having just the raw output of "these are the expected CI results"
that is being done and specified by some other tree entirely - that
seems pointless and just noise to me. There's no actual reason to have
that kind of noise - and update that kind of noise - that I really
see.

                Linus

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [Freedreno] [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-11 17:46         ` Rob Clark
@ 2022-05-11 19:14           ` Daniel Vetter
  2022-05-11 20:32             ` Rob Clark
  2022-05-12 13:28           ` Tomeu Vizoso
  1 sibling, 1 reply; 49+ messages in thread
From: Daniel Vetter @ 2022-05-11 19:14 UTC (permalink / raw)
  To: Rob Clark
  Cc: freedreno, Tomeu Vizoso, open list:DOCUMENTATION, David Airlie,
	linux-arm-msm, Jonathan Corbet, Abhinav Kumar,
	Linux Kernel Mailing List, dri-devel, Thomas Zimmermann,
	Jessica Zhang, Sean Paul

On Wed, 11 May 2022 at 19:46, Rob Clark <robdclark@gmail.com> wrote:
>
> On Wed, May 11, 2022 at 10:12 AM Daniel Vetter <daniel@ffwll.ch> wrote:
> >
> > On Tue, 10 May 2022 at 22:26, Rob Clark <robdclark@gmail.com> wrote:
> > >
> > > On Tue, May 10, 2022 at 12:39 PM Jessica Zhang
> > > <quic_jesszhan@quicinc.com> wrote:
> > > >
> > > >
> > > >
> > > > On 5/10/2022 7:13 AM, Tomeu Vizoso wrote:
> > > > > And use it to store expectations about what the drm/msm driver is
> > > > > supposed to pass in the IGT test suite.
> > > > >
> > > > > Also include a configuration file that points to the out-of-tree CI
> > > > > scripts.
> > > > >
> > > > > By storing the test expectations along the code we can make sure both
> > > > > stay in sync with each other, and so we can know when a code change
> > > > > breaks those expectations.
> > > > >
> > > > > This will allow all contributors to drm/msm to reuse the infrastructure
> > > > > already in gitlab.freedesktop.org to test the driver on several
> > > > > generations of the hardware.
> > > > >
> > > > > v2:
> > > > >    - Fix names of result expectation files to match SoC
> > > > >    - Don't execute tests that are going to skip on all boards
> > > > >
> > > > > Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> > > > > ---
> > > > >   Documentation/gpu/msm_automated_testing.rst   |  70 +++++++++
> > > > >   drivers/gpu/drm/msm/ci/gitlab-ci.yml          |  11 ++
> > > > >   drivers/gpu/drm/msm/ci/msm.testlist           | 148 ++++++++++++++++++
> > > > >   .../gpu/drm/msm/ci/msm_apq8016_results.txt    | 140 +++++++++++++++++
> > > > >   .../gpu/drm/msm/ci/msm_apq8096_results.txt    | 140 +++++++++++++++++
> > > > >   drivers/gpu/drm/msm/ci/msm_sc7180_results.txt | 141 +++++++++++++++++
> > > > >   drivers/gpu/drm/msm/ci/msm_sdm845_results.txt | 141 +++++++++++++++++
> > > > >   7 files changed, 791 insertions(+)
> > > > >   create mode 100644 Documentation/gpu/msm_automated_testing.rst
> > > > >   create mode 100644 drivers/gpu/drm/msm/ci/gitlab-ci.yml
> > > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm.testlist
> > > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
> > > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
> > > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
> > > > >
>
> [snip]
>
> > > > > diff --git a/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > > > > new file mode 100644
> > > > > index 000000000000..01f7b4b399b5
> > > > > --- /dev/null
> > > > > +++ b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > > > > @@ -0,0 +1,141 @@
> > > > > +igt@core_auth@getclient-simple,dmesg-warn
> > > > > +igt@core_auth@getclient-master-drop,pass
> > > > > +igt@core_auth@basic-auth,pass
> > > > > +igt@core_auth@many-magics,pass
> > > > > +igt@core_getclient,pass
> > > > > +igt@core_getstats,pass
> > > > > +igt@core_getversion,pass
> > > > > +igt@core_setmaster_vs_auth,pass
> > > > > +igt@drm_read@invalid-buffer,pass
> > > > > +igt@drm_read@fault-buffer,pass
> > > > > +igt@drm_read@empty-block,pass
> > > > > +igt@drm_read@empty-nonblock,pass
> > > > > +igt@drm_read@short-buffer-block,pass
> > > > > +igt@drm_read@short-buffer-nonblock,pass
> > > > > +igt@drm_read@short-buffer-wakeup,pass
> > > > > +igt@kms_addfb_basic@unused-handle,pass
> > > > > +igt@kms_addfb_basic@unused-pitches,pass
> > > > > +igt@kms_addfb_basic@unused-offsets,pass
> > > > > +igt@kms_addfb_basic@unused-modifier,pass
> > > > > +igt@kms_addfb_basic@legacy-format,dmesg-warn
> > > > > +igt@kms_addfb_basic@no-handle,pass
> > > > > +igt@kms_addfb_basic@basic,pass
> > > > > +igt@kms_addfb_basic@bad-pitch-0,pass
> > > > > +igt@kms_addfb_basic@bad-pitch-32,pass
> > > > > +igt@kms_addfb_basic@bad-pitch-63,pass
> > > > > +igt@kms_addfb_basic@bad-pitch-128,pass
> > > > > +igt@kms_addfb_basic@bad-pitch-256,pass
> > > > > +igt@kms_addfb_basic@bad-pitch-1024,pass
> > > > > +igt@kms_addfb_basic@bad-pitch-999,pass
> > > > > +igt@kms_addfb_basic@bad-pitch-65536,pass
> > > > > +igt@kms_addfb_basic@size-max,pass
> > > > > +igt@kms_addfb_basic@too-wide,pass
> > > > > +igt@kms_addfb_basic@too-high,dmesg-warn
> > > >
> > > > For test results on Trogdor, is is possible to have them be
> > > > success/fail/skip only?
> > > >
> > > > Results such as dmesg-warn/dmesg-fail are igt_runner specific and
> > > > because there isn't support for igt_runner on ChromeOS, they will be
> > > > difficult to replicate and debug.
> > >
> > > Actually, I wonder if it would be better to just treat
> > > dmesg-warn/dmesg-fail as pass/fail?  I'd noticed some flakes on
> > > rockchip which looked just like unrelated dmesg msg which just
> > > happened to show up while the test was running.
> >
> > This is kinda the reason behind standardizing on drm dmesg logging, so
> > that we have some chances at filtering stuff out. Not sure that's a
> > good idea, since when your entire box splats and lockdep is dead, then
> > continuing to run drm tests is still fairly pointless.
>
> I'm not sure if we are using it yet for drm-ci, but for mesa-ci we
> monitor dmesg (over serial port, from the controller) for splats, so
> we already have the tech for restarting or aborting the CI run.  We
> don't need igt-runner to tell us.
>
> > I think this is another reason why trying at least to standardize this
> > stuff over drivers would be pretty good idea.
> >
> > > Additionally, some of the tests, like msm_recovery, are *expected* to
> > > generate some dmesg spam since they are intentionally triggering GPU
> > > hangs to test the recovery mechanism.
> >
> > Uh I don't like that. It just allows userspace to spam dmesg, which
> > doesn't seem like a great idea. That's at least why i915 dumps these
> > at a lower level, and in the past had a special "I'm going to whack
> > the gpu real hard expect hangs" knob in debugfs.
> >
> > Having tests which intentionally spam dmesg above info level isn't
> > really good since then you need endless amounts of test-specific
> > encoding of what is considered a success and what not. Like when a
> > backmerge breaks a testcases which is already at dmesg-fail, is that
> > bad or not? Probably bad, but was the situation before that really
> > good or already kinda on fire?
>
> I guess I could add some debugfs knobs to squelch the dmesg msgs on
> gpu hangs.  In the normal case, I'd prefer that gpu hangs are not
> silent.. since that is something we get in feedback reports if a user
> (or dogfooder) reports a bug.
>
> The rockchip case I mentioned was some unrelated dmesg about
> linktraining failing.. presumably because there was no display
> attached?  IDK, I didn't look too closely.  But my point is we could
> be getting unrelated and asynchronous dmesg spam, even from other
> kernel subsystems.  Letting that be part of the test results just
> sounds like asking for flakes.

That's why I think you need to filter dmesg, otherwise you'll just get
random stuff in there that causes flaps.

And then in another level you need different filtering to figure out
when your kernel is too busted and you need to reboot (like when
lockdep splats anywhere).

Maybe we should pull that part of igt_runner out so that it can be
used in places where the full thing cant? Maybe even in mesa as a "my
kernel is in really bad shape" kinda test. There's a lot of tea leaves
reading heuristics involved in this stuff ime.
-Daniel

>
> BR,
> -R
>
> > -Daniel
> >
> > > BR,
> > > -R
> > >



-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Adding CI results to the kernel tree was Re: [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-11 17:33     ` Linus Torvalds
  2022-05-11 18:39       ` Rob Clark
@ 2022-05-11 19:39       ` Daniel Vetter
  1 sibling, 0 replies; 49+ messages in thread
From: Daniel Vetter @ 2022-05-11 19:39 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Sean Paul, freedreno, Tomeu Vizoso, Jonathan Corbet,
	Greg Kroah-Hartman, open list:DOCUMENTATION, Abhinav Kumar, LKML,
	dri-devel, Thomas Zimmermann, linux-arm-msm

On Wed, May 11, 2022 at 10:33:06AM -0700, Linus Torvalds wrote:
> On Tue, May 10, 2022 at 10:07 PM Dave Airlie <airlied@gmail.com> wrote:
> >
> > > And use it to store expectations about what the drm/msm driver is
> > > supposed to pass in the IGT test suite.
> >
> > I wanted to loop in Linus/Greg to see if there are any issues raised
> > by adding CI results file to the tree in their minds, or if any other
> > subsystem has done this already, and it's all fine.
> >
> > I think this is a good thing after our Mesa experience, but Mesa has a
> > lot tighter integration here, so I want to get some more opinions
> > outside the group.
> 
> Honestly, my immediate reaction is that I think it might be ok, but
> 
>  (a) are these things going to absolutely balloon over time?
> 
>  (b) should these not be separated out?
> 
> Those two issues kind of interact.
> 
> If it's a small and targeted test-suite, by all means keep it in the
> kernel, but why not make it part of "tools/testing/selftests"
> 
> But if people expect this to balloon and we end up having megabytes of
> test output, then I really think it should be a separate git tree.
> 
> A diffstat like this:
> 
> >  7 files changed, 791 insertions(+)

Yeah I guess it's good to have some numbers for where this might go. Good
comparison is probably mesa3d, since it's the same-ish people doing the
same-ish ci on the same-ish infrastructure, just the userspace part of it.

mesa$ git ls-files | grep ci | xargs cat | wc -l
123077

mesa$ git ls-files | grep ci | wc -l
421

Compared to drivers/gpu it's really not much, and mesa is about the size
of drivers/gpu if you exclude the massive amount of register headers from
amd.

And I guess if we do stuff like result file compression like you mentioned
it should be quite a bit less even.

So yeah if this does take off it wil be substantially more, but I don't
think it'll ever get to a point where it'll swamp code changes. And if it
does that's kinda a solid indicator that something really wrong is going
on.

> is not a problem at all. But I get the feeling that this is just the
> tip of the iceberg, and people will want to not just have the result
> files, but start adding actual *input* files that may be largely
> automated stuff and may be tens of megabytes in size.
> 
> Because the result files on their own aren't really self-contained,
> and then people will want to keep them in sync with the test-files
> themselves, and start adding those, and now it *really* is likely very
> unwieldy.
> 
> Or if that doesn't happen, and the actual input test files stay in a
> separate CI repo, and then you end up having random coherency issues
> with that CI repo, and it all gets to be either horribly messy, or the
> result files in the kernel end up really stale.
> 
> So honestly, I personally don't see a good end result here.  This
> particular small patch? *This* one looks fine to me, except I really
> think tools/testing/selftests/gpu would be a much more logical place
> for it.
> 
> But I don't see a way forward that is sane.
> 
> Can somebody argue otherwise?

I do personally think we should add a bunch more things here, radically
putting everything into the drm-ci repo feels a bit much like appeasement
to get the foot in the door. Like some of the scripts are definitely
specific to the ci infra on freedesktop.org (or specific hw runners for
the drivers), and that makes sense to keep in that drm/fd ci repo. But
other scripts should probably migrate to scripts/ and at least start out
in a ci/ folder in the kernel.

igt itself might eventually move to tools/testing/selftests/gpu or
whatever, but that's kinda a huge discussion onto itself. And I haven't
seen a clear consensus yet among subsystem that these kind of tests (like
xfs-tests, and I think pretty much ever bigger subsystem that is old
enough to predate selftests has them somewhere) should all move into
tools/testing/selftest. Maybe they should, but feels like this is
orthogonal to ci integration.

Note that mesa3d has the exact same issue going that you're raising, and
some of those are unfixable because the opengl/vulkan conformance test
suites are maintained entirely externally by Khronos (and you have to use
those or you're not conformant to the spec, which renders the point of
having a shared spec a bit moot). It's messy but workable, and the CI you
get seems very much to be worth the price.

One idea I tossed out on irc is to move this all under drivers/gpu/ci.
There's driver specific stuff like the test result/fail lists, and maybe
those could eventually move out to drivers. But for starting out it might
be better to keep it all in one place so it's a bit better under control
and doesn't accidentally become a kranken of some kind. And then make sure
pieces move to scripts/ or tools/testing/ appropriately.

In general I think any mess this causes is a pretty good indicator that
something is amiss, like if this causes messy history due to tests
flipping too much and causing issues then that also indicates an issue
with the kernel or testcase quality itself. And it might be good to shine
more light on that stuff.

Cheers, Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Adding CI results to the kernel tree was Re: [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-11 19:08         ` Linus Torvalds
  2022-05-11 19:12           ` Linus Torvalds
@ 2022-05-11 20:06           ` Rob Clark
  1 sibling, 0 replies; 49+ messages in thread
From: Rob Clark @ 2022-05-11 20:06 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Sean Paul, freedreno, Tomeu Vizoso, Jonathan Corbet,
	Greg Kroah-Hartman, open list:DOCUMENTATION, Abhinav Kumar, LKML,
	dri-devel, Thomas Zimmermann, linux-arm-msm

On Wed, May 11, 2022 at 12:08 PM Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
> On Wed, May 11, 2022 at 11:40 AM Rob Clark <robdclark@gmail.com> wrote:
> >
> > It is missing in this revision of the RFC, but the intention is to
> > have the gitlab-ci.yml point to a specific commit SHA in the
> > gfx-ci/drm-ci[1] tree, to solve the problem of keeping the results in
> > sync with the expectations.  Ie. a kernel commit would control moving
> > to a new version of i-g-t (and eventually deqp and/or piglit), and at
> > the same time make any necessary updates in the expectations files.
>
> Wouldn't it then be better to just have the expectation files in the
> ci tree too?

The main reason is that we would frequently have situations where both
-next and -fixes pointing at the same ci tree commit, but with
differing expectations.  If we kept the expectations in the ci tree,
we'd end up frequently updating the ci tree and then updating the
kernel tree to point to the appropriate ci tree version.

Additionally, on the mesa side, it has been useful to squash the
expectations update into the commit that fixed a bug or added a
feature.  It provides a connection in git history between code and
test results.

BR,
-R

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [Freedreno] Adding CI results to the kernel tree was Re: [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-11 19:12           ` Linus Torvalds
@ 2022-05-11 20:14             ` Rob Clark
  0 siblings, 0 replies; 49+ messages in thread
From: Rob Clark @ 2022-05-11 20:14 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Sean Paul, Thomas Zimmermann, Tomeu Vizoso, Jonathan Corbet,
	Greg Kroah-Hartman, open list:DOCUMENTATION, Abhinav Kumar, LKML,
	dri-devel, linux-arm-msm, freedreno

On Wed, May 11, 2022 at 12:12 PM Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
> On Wed, May 11, 2022 at 12:08 PM Linus Torvalds
> <torvalds@linux-foundation.org> wrote:
> >
> > The kernel tree might have just the expected *failures* listed, if
> > there are any. Presumably the ci tree has to have the expected results
> > anyway, so what's the advantage of listing non-failures?
>
> .. put another way: I think a list of "we are aware that these
> currently fail" is quite reasonable for a development tree, maybe even
> with a comment in the commit that created them about why they
> currently fail.
>
> That also ends up being very nice if you fix a problem, and the fix
> commit might then remove the failure for the list, and that all makes
> perfect sense.
>
> But having just the raw output of "these are the expected CI results"
> that is being done and specified by some other tree entirely - that
> seems pointless and just noise to me. There's no actual reason to have
> that kind of noise - and update that kind of noise - that I really
> see.

Yeah, the only reason we have full results is that the current tool to
check for pass/fail of the entire CI job is 'diff' ;-)

It has the nice benefit of generating a patch for you to squash into
whatever commit to update the expectation files, I suppose.  But we
have something more clever on the mesa-ci side of things where we list
skips/flakes/expected-fails but not expected-passes.  To be fair, the
# of tests on the mesa side is something on the order of 750,000, I
don't expect to ever get close to that # on the kernel side.

BR,
-R

>
>                 Linus

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [Freedreno] [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-11 19:14           ` Daniel Vetter
@ 2022-05-11 20:32             ` Rob Clark
  2022-05-11 21:09               ` Daniel Vetter
  0 siblings, 1 reply; 49+ messages in thread
From: Rob Clark @ 2022-05-11 20:32 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: freedreno, Tomeu Vizoso, open list:DOCUMENTATION, David Airlie,
	linux-arm-msm, Jonathan Corbet, Abhinav Kumar,
	Linux Kernel Mailing List, dri-devel, Thomas Zimmermann,
	Jessica Zhang, Sean Paul

On Wed, May 11, 2022 at 12:14 PM Daniel Vetter <daniel@ffwll.ch> wrote:
>
> On Wed, 11 May 2022 at 19:46, Rob Clark <robdclark@gmail.com> wrote:
> >
> > On Wed, May 11, 2022 at 10:12 AM Daniel Vetter <daniel@ffwll.ch> wrote:
> > >
> > > On Tue, 10 May 2022 at 22:26, Rob Clark <robdclark@gmail.com> wrote:
> > > >
> > > > On Tue, May 10, 2022 at 12:39 PM Jessica Zhang
> > > > <quic_jesszhan@quicinc.com> wrote:
> > > > >
> > > > >
> > > > >
> > > > > On 5/10/2022 7:13 AM, Tomeu Vizoso wrote:
> > > > > > And use it to store expectations about what the drm/msm driver is
> > > > > > supposed to pass in the IGT test suite.
> > > > > >
> > > > > > Also include a configuration file that points to the out-of-tree CI
> > > > > > scripts.
> > > > > >
> > > > > > By storing the test expectations along the code we can make sure both
> > > > > > stay in sync with each other, and so we can know when a code change
> > > > > > breaks those expectations.
> > > > > >
> > > > > > This will allow all contributors to drm/msm to reuse the infrastructure
> > > > > > already in gitlab.freedesktop.org to test the driver on several
> > > > > > generations of the hardware.
> > > > > >
> > > > > > v2:
> > > > > >    - Fix names of result expectation files to match SoC
> > > > > >    - Don't execute tests that are going to skip on all boards
> > > > > >
> > > > > > Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> > > > > > ---
> > > > > >   Documentation/gpu/msm_automated_testing.rst   |  70 +++++++++
> > > > > >   drivers/gpu/drm/msm/ci/gitlab-ci.yml          |  11 ++
> > > > > >   drivers/gpu/drm/msm/ci/msm.testlist           | 148 ++++++++++++++++++
> > > > > >   .../gpu/drm/msm/ci/msm_apq8016_results.txt    | 140 +++++++++++++++++
> > > > > >   .../gpu/drm/msm/ci/msm_apq8096_results.txt    | 140 +++++++++++++++++
> > > > > >   drivers/gpu/drm/msm/ci/msm_sc7180_results.txt | 141 +++++++++++++++++
> > > > > >   drivers/gpu/drm/msm/ci/msm_sdm845_results.txt | 141 +++++++++++++++++
> > > > > >   7 files changed, 791 insertions(+)
> > > > > >   create mode 100644 Documentation/gpu/msm_automated_testing.rst
> > > > > >   create mode 100644 drivers/gpu/drm/msm/ci/gitlab-ci.yml
> > > > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm.testlist
> > > > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
> > > > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
> > > > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > > > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
> > > > > >
> >
> > [snip]
> >
> > > > > > diff --git a/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > > > > > new file mode 100644
> > > > > > index 000000000000..01f7b4b399b5
> > > > > > --- /dev/null
> > > > > > +++ b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > > > > > @@ -0,0 +1,141 @@
> > > > > > +igt@core_auth@getclient-simple,dmesg-warn
> > > > > > +igt@core_auth@getclient-master-drop,pass
> > > > > > +igt@core_auth@basic-auth,pass
> > > > > > +igt@core_auth@many-magics,pass
> > > > > > +igt@core_getclient,pass
> > > > > > +igt@core_getstats,pass
> > > > > > +igt@core_getversion,pass
> > > > > > +igt@core_setmaster_vs_auth,pass
> > > > > > +igt@drm_read@invalid-buffer,pass
> > > > > > +igt@drm_read@fault-buffer,pass
> > > > > > +igt@drm_read@empty-block,pass
> > > > > > +igt@drm_read@empty-nonblock,pass
> > > > > > +igt@drm_read@short-buffer-block,pass
> > > > > > +igt@drm_read@short-buffer-nonblock,pass
> > > > > > +igt@drm_read@short-buffer-wakeup,pass
> > > > > > +igt@kms_addfb_basic@unused-handle,pass
> > > > > > +igt@kms_addfb_basic@unused-pitches,pass
> > > > > > +igt@kms_addfb_basic@unused-offsets,pass
> > > > > > +igt@kms_addfb_basic@unused-modifier,pass
> > > > > > +igt@kms_addfb_basic@legacy-format,dmesg-warn
> > > > > > +igt@kms_addfb_basic@no-handle,pass
> > > > > > +igt@kms_addfb_basic@basic,pass
> > > > > > +igt@kms_addfb_basic@bad-pitch-0,pass
> > > > > > +igt@kms_addfb_basic@bad-pitch-32,pass
> > > > > > +igt@kms_addfb_basic@bad-pitch-63,pass
> > > > > > +igt@kms_addfb_basic@bad-pitch-128,pass
> > > > > > +igt@kms_addfb_basic@bad-pitch-256,pass
> > > > > > +igt@kms_addfb_basic@bad-pitch-1024,pass
> > > > > > +igt@kms_addfb_basic@bad-pitch-999,pass
> > > > > > +igt@kms_addfb_basic@bad-pitch-65536,pass
> > > > > > +igt@kms_addfb_basic@size-max,pass
> > > > > > +igt@kms_addfb_basic@too-wide,pass
> > > > > > +igt@kms_addfb_basic@too-high,dmesg-warn
> > > > >
> > > > > For test results on Trogdor, is is possible to have them be
> > > > > success/fail/skip only?
> > > > >
> > > > > Results such as dmesg-warn/dmesg-fail are igt_runner specific and
> > > > > because there isn't support for igt_runner on ChromeOS, they will be
> > > > > difficult to replicate and debug.
> > > >
> > > > Actually, I wonder if it would be better to just treat
> > > > dmesg-warn/dmesg-fail as pass/fail?  I'd noticed some flakes on
> > > > rockchip which looked just like unrelated dmesg msg which just
> > > > happened to show up while the test was running.
> > >
> > > This is kinda the reason behind standardizing on drm dmesg logging, so
> > > that we have some chances at filtering stuff out. Not sure that's a
> > > good idea, since when your entire box splats and lockdep is dead, then
> > > continuing to run drm tests is still fairly pointless.
> >
> > I'm not sure if we are using it yet for drm-ci, but for mesa-ci we
> > monitor dmesg (over serial port, from the controller) for splats, so
> > we already have the tech for restarting or aborting the CI run.  We
> > don't need igt-runner to tell us.
> >
> > > I think this is another reason why trying at least to standardize this
> > > stuff over drivers would be pretty good idea.
> > >
> > > > Additionally, some of the tests, like msm_recovery, are *expected* to
> > > > generate some dmesg spam since they are intentionally triggering GPU
> > > > hangs to test the recovery mechanism.
> > >
> > > Uh I don't like that. It just allows userspace to spam dmesg, which
> > > doesn't seem like a great idea. That's at least why i915 dumps these
> > > at a lower level, and in the past had a special "I'm going to whack
> > > the gpu real hard expect hangs" knob in debugfs.
> > >
> > > Having tests which intentionally spam dmesg above info level isn't
> > > really good since then you need endless amounts of test-specific
> > > encoding of what is considered a success and what not. Like when a
> > > backmerge breaks a testcases which is already at dmesg-fail, is that
> > > bad or not? Probably bad, but was the situation before that really
> > > good or already kinda on fire?
> >
> > I guess I could add some debugfs knobs to squelch the dmesg msgs on
> > gpu hangs.  In the normal case, I'd prefer that gpu hangs are not
> > silent.. since that is something we get in feedback reports if a user
> > (or dogfooder) reports a bug.
> >
> > The rockchip case I mentioned was some unrelated dmesg about
> > linktraining failing.. presumably because there was no display
> > attached?  IDK, I didn't look too closely.  But my point is we could
> > be getting unrelated and asynchronous dmesg spam, even from other
> > kernel subsystems.  Letting that be part of the test results just
> > sounds like asking for flakes.
>
> That's why I think you need to filter dmesg, otherwise you'll just get
> random stuff in there that causes flaps.

We've evolved a bit of that over the time, see:

https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/blob/main/.gitlab-ci/bare-metal/cros_servo_run.py#L94

It tends to be a bit specific to the runners and their quirks.  But
mesa does a lot of CI runs, so once-in-a-blue-moon quirks quickly turn
frustrating if the CI machinery doesn't detect them, and (for ex)
reboot and restart the DUT

BR,
-R

> And then in another level you need different filtering to figure out
> when your kernel is too busted and you need to reboot (like when
> lockdep splats anywhere).
>
> Maybe we should pull that part of igt_runner out so that it can be
> used in places where the full thing cant? Maybe even in mesa as a "my
> kernel is in really bad shape" kinda test. There's a lot of tea leaves
> reading heuristics involved in this stuff ime.
> -Daniel
>
> >
> > BR,
> > -R
> >
> > > -Daniel
> > >
> > > > BR,
> > > > -R
> > > >
>
>
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [Freedreno] [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-11 20:32             ` Rob Clark
@ 2022-05-11 21:09               ` Daniel Vetter
  0 siblings, 0 replies; 49+ messages in thread
From: Daniel Vetter @ 2022-05-11 21:09 UTC (permalink / raw)
  To: Rob Clark
  Cc: freedreno, Tomeu Vizoso, open list:DOCUMENTATION, David Airlie,
	linux-arm-msm, Jonathan Corbet, Abhinav Kumar,
	Linux Kernel Mailing List, dri-devel, Thomas Zimmermann,
	Jessica Zhang, Sean Paul

On Wed, 11 May 2022 at 22:32, Rob Clark <robdclark@gmail.com> wrote:
>
> On Wed, May 11, 2022 at 12:14 PM Daniel Vetter <daniel@ffwll.ch> wrote:
> >
> > On Wed, 11 May 2022 at 19:46, Rob Clark <robdclark@gmail.com> wrote:
> > >
> > > On Wed, May 11, 2022 at 10:12 AM Daniel Vetter <daniel@ffwll.ch> wrote:
> > > >
> > > > On Tue, 10 May 2022 at 22:26, Rob Clark <robdclark@gmail.com> wrote:
> > > > >
> > > > > On Tue, May 10, 2022 at 12:39 PM Jessica Zhang
> > > > > <quic_jesszhan@quicinc.com> wrote:
> > > > > >
> > > > > >
> > > > > >
> > > > > > On 5/10/2022 7:13 AM, Tomeu Vizoso wrote:
> > > > > > > And use it to store expectations about what the drm/msm driver is
> > > > > > > supposed to pass in the IGT test suite.
> > > > > > >
> > > > > > > Also include a configuration file that points to the out-of-tree CI
> > > > > > > scripts.
> > > > > > >
> > > > > > > By storing the test expectations along the code we can make sure both
> > > > > > > stay in sync with each other, and so we can know when a code change
> > > > > > > breaks those expectations.
> > > > > > >
> > > > > > > This will allow all contributors to drm/msm to reuse the infrastructure
> > > > > > > already in gitlab.freedesktop.org to test the driver on several
> > > > > > > generations of the hardware.
> > > > > > >
> > > > > > > v2:
> > > > > > >    - Fix names of result expectation files to match SoC
> > > > > > >    - Don't execute tests that are going to skip on all boards
> > > > > > >
> > > > > > > Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> > > > > > > ---
> > > > > > >   Documentation/gpu/msm_automated_testing.rst   |  70 +++++++++
> > > > > > >   drivers/gpu/drm/msm/ci/gitlab-ci.yml          |  11 ++
> > > > > > >   drivers/gpu/drm/msm/ci/msm.testlist           | 148 ++++++++++++++++++
> > > > > > >   .../gpu/drm/msm/ci/msm_apq8016_results.txt    | 140 +++++++++++++++++
> > > > > > >   .../gpu/drm/msm/ci/msm_apq8096_results.txt    | 140 +++++++++++++++++
> > > > > > >   drivers/gpu/drm/msm/ci/msm_sc7180_results.txt | 141 +++++++++++++++++
> > > > > > >   drivers/gpu/drm/msm/ci/msm_sdm845_results.txt | 141 +++++++++++++++++
> > > > > > >   7 files changed, 791 insertions(+)
> > > > > > >   create mode 100644 Documentation/gpu/msm_automated_testing.rst
> > > > > > >   create mode 100644 drivers/gpu/drm/msm/ci/gitlab-ci.yml
> > > > > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm.testlist
> > > > > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
> > > > > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
> > > > > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > > > > > >   create mode 100644 drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
> > > > > > >
> > >
> > > [snip]
> > >
> > > > > > > diff --git a/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > > > > > > new file mode 100644
> > > > > > > index 000000000000..01f7b4b399b5
> > > > > > > --- /dev/null
> > > > > > > +++ b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > > > > > > @@ -0,0 +1,141 @@
> > > > > > > +igt@core_auth@getclient-simple,dmesg-warn
> > > > > > > +igt@core_auth@getclient-master-drop,pass
> > > > > > > +igt@core_auth@basic-auth,pass
> > > > > > > +igt@core_auth@many-magics,pass
> > > > > > > +igt@core_getclient,pass
> > > > > > > +igt@core_getstats,pass
> > > > > > > +igt@core_getversion,pass
> > > > > > > +igt@core_setmaster_vs_auth,pass
> > > > > > > +igt@drm_read@invalid-buffer,pass
> > > > > > > +igt@drm_read@fault-buffer,pass
> > > > > > > +igt@drm_read@empty-block,pass
> > > > > > > +igt@drm_read@empty-nonblock,pass
> > > > > > > +igt@drm_read@short-buffer-block,pass
> > > > > > > +igt@drm_read@short-buffer-nonblock,pass
> > > > > > > +igt@drm_read@short-buffer-wakeup,pass
> > > > > > > +igt@kms_addfb_basic@unused-handle,pass
> > > > > > > +igt@kms_addfb_basic@unused-pitches,pass
> > > > > > > +igt@kms_addfb_basic@unused-offsets,pass
> > > > > > > +igt@kms_addfb_basic@unused-modifier,pass
> > > > > > > +igt@kms_addfb_basic@legacy-format,dmesg-warn
> > > > > > > +igt@kms_addfb_basic@no-handle,pass
> > > > > > > +igt@kms_addfb_basic@basic,pass
> > > > > > > +igt@kms_addfb_basic@bad-pitch-0,pass
> > > > > > > +igt@kms_addfb_basic@bad-pitch-32,pass
> > > > > > > +igt@kms_addfb_basic@bad-pitch-63,pass
> > > > > > > +igt@kms_addfb_basic@bad-pitch-128,pass
> > > > > > > +igt@kms_addfb_basic@bad-pitch-256,pass
> > > > > > > +igt@kms_addfb_basic@bad-pitch-1024,pass
> > > > > > > +igt@kms_addfb_basic@bad-pitch-999,pass
> > > > > > > +igt@kms_addfb_basic@bad-pitch-65536,pass
> > > > > > > +igt@kms_addfb_basic@size-max,pass
> > > > > > > +igt@kms_addfb_basic@too-wide,pass
> > > > > > > +igt@kms_addfb_basic@too-high,dmesg-warn
> > > > > >
> > > > > > For test results on Trogdor, is is possible to have them be
> > > > > > success/fail/skip only?
> > > > > >
> > > > > > Results such as dmesg-warn/dmesg-fail are igt_runner specific and
> > > > > > because there isn't support for igt_runner on ChromeOS, they will be
> > > > > > difficult to replicate and debug.
> > > > >
> > > > > Actually, I wonder if it would be better to just treat
> > > > > dmesg-warn/dmesg-fail as pass/fail?  I'd noticed some flakes on
> > > > > rockchip which looked just like unrelated dmesg msg which just
> > > > > happened to show up while the test was running.
> > > >
> > > > This is kinda the reason behind standardizing on drm dmesg logging, so
> > > > that we have some chances at filtering stuff out. Not sure that's a
> > > > good idea, since when your entire box splats and lockdep is dead, then
> > > > continuing to run drm tests is still fairly pointless.
> > >
> > > I'm not sure if we are using it yet for drm-ci, but for mesa-ci we
> > > monitor dmesg (over serial port, from the controller) for splats, so
> > > we already have the tech for restarting or aborting the CI run.  We
> > > don't need igt-runner to tell us.
> > >
> > > > I think this is another reason why trying at least to standardize this
> > > > stuff over drivers would be pretty good idea.
> > > >
> > > > > Additionally, some of the tests, like msm_recovery, are *expected* to
> > > > > generate some dmesg spam since they are intentionally triggering GPU
> > > > > hangs to test the recovery mechanism.
> > > >
> > > > Uh I don't like that. It just allows userspace to spam dmesg, which
> > > > doesn't seem like a great idea. That's at least why i915 dumps these
> > > > at a lower level, and in the past had a special "I'm going to whack
> > > > the gpu real hard expect hangs" knob in debugfs.
> > > >
> > > > Having tests which intentionally spam dmesg above info level isn't
> > > > really good since then you need endless amounts of test-specific
> > > > encoding of what is considered a success and what not. Like when a
> > > > backmerge breaks a testcases which is already at dmesg-fail, is that
> > > > bad or not? Probably bad, but was the situation before that really
> > > > good or already kinda on fire?
> > >
> > > I guess I could add some debugfs knobs to squelch the dmesg msgs on
> > > gpu hangs.  In the normal case, I'd prefer that gpu hangs are not
> > > silent.. since that is something we get in feedback reports if a user
> > > (or dogfooder) reports a bug.
> > >
> > > The rockchip case I mentioned was some unrelated dmesg about
> > > linktraining failing.. presumably because there was no display
> > > attached?  IDK, I didn't look too closely.  But my point is we could
> > > be getting unrelated and asynchronous dmesg spam, even from other
> > > kernel subsystems.  Letting that be part of the test results just
> > > sounds like asking for flakes.
> >
> > That's why I think you need to filter dmesg, otherwise you'll just get
> > random stuff in there that causes flaps.
>
> We've evolved a bit of that over the time, see:
>
> https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/blob/main/.gitlab-ci/bare-metal/cros_servo_run.py#L94
>
> It tends to be a bit specific to the runners and their quirks.  But
> mesa does a lot of CI runs, so once-in-a-blue-moon quirks quickly turn
> frustrating if the CI machinery doesn't detect them, and (for ex)
> reboot and restart the DUT

Yeah that kind of stuff is probably best kept in a ci-farm adjacent
repo, since it's all very specific to the machine and ci setup.
-Daniel

>
> BR,
> -R
>
> > And then in another level you need different filtering to figure out
> > when your kernel is too busted and you need to reboot (like when
> > lockdep splats anywhere).
> >
> > Maybe we should pull that part of igt_runner out so that it can be
> > used in places where the full thing cant? Maybe even in mesa as a "my
> > kernel is in really bad shape" kinda test. There's a lot of tea leaves
> > reading heuristics involved in this stuff ime.
> > -Daniel
> >
> > >
> > > BR,
> > > -R
> > >
> > > > -Daniel
> > > >
> > > > > BR,
> > > > > -R
> > > > >
> >
> >
> >
> > --
> > Daniel Vetter
> > Software Engineer, Intel Corporation
> > http://blog.ffwll.ch



-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [Freedreno] Adding CI results to the kernel tree was Re: [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-11 13:33           ` [Freedreno] " Rob Clark
  2022-05-11 16:43             ` Daniel Vetter
@ 2022-05-12  2:24             ` Theodore Ts'o
  1 sibling, 0 replies; 49+ messages in thread
From: Theodore Ts'o @ 2022-05-12  2:24 UTC (permalink / raw)
  To: Rob Clark
  Cc: Sean Paul, Tomeu Vizoso, Jonathan Corbet, Greg Kroah-Hartman,
	open list:DOCUMENTATION, Michel Dänzer, dri-devel,
	Abhinav Kumar, Linus Torvalds, Thomas Zimmermann, linux-arm-msm,
	freedreno, LKML

On Wed, May 11, 2022 at 06:33:32AM -0700, Rob Clark wrote:
> 
> And ofc we want the expectations to be in the kernel tree because
> there could be, for example, differences between -fixes and -next
> branches.  (Or even stable kernel branches if/when we get to the point
> of running CI on those.)

There are tradeoffs both ways, whether the patches are kept separate,
opr in the kernel tree.

In the file system world, when we discover a bug, very often a test
case is found to test the fix, and to protect us against regressions.
It has one other benefit; since the tests (xfstests) are kept separate
from the kernel, it's a useful way to identify when some patch didn't
get automatically backported to a LTS or distro kernel.  (For example,
because the patch didn't cherry-pick cleanly and the manual backport
process fell through the cracks.)

It does make things annoying when we have bugs that can not be safely
backported (which results in tests that fail on the LTS kernel without
kernel-version exclude files), and/or when the expectations change
between versions.  (Although to be honest, for us, the more common
annoyance is when some userspace package --- e.g., bash or coreutils
or util-linux --- changes their output, and we have to add filter
functions to accomodate expected output differences.)

						- Ted

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [Freedreno] [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-11 17:46         ` Rob Clark
  2022-05-11 19:14           ` Daniel Vetter
@ 2022-05-12 13:28           ` Tomeu Vizoso
  2022-05-12 14:02             ` Daniel Vetter
  1 sibling, 1 reply; 49+ messages in thread
From: Tomeu Vizoso @ 2022-05-12 13:28 UTC (permalink / raw)
  To: Rob Clark, Daniel Vetter
  Cc: freedreno, open list:DOCUMENTATION, David Airlie, linux-arm-msm,
	Jonathan Corbet, Abhinav Kumar, Linux Kernel Mailing List,
	dri-devel, Thomas Zimmermann, Jessica Zhang, Sean Paul

On 5/11/22 7:46 PM, Rob Clark wrote:
> On Wed, May 11, 2022 at 10:12 AM Daniel Vetter <daniel@ffwll.ch> wrote:
>>
>> On Tue, 10 May 2022 at 22:26, Rob Clark <robdclark@gmail.com> wrote:
>>>
>>> On Tue, May 10, 2022 at 12:39 PM Jessica Zhang
>>> <quic_jesszhan@quicinc.com> wrote:
>>>>
>>>>
>>>>
>>>> On 5/10/2022 7:13 AM, Tomeu Vizoso wrote:
>>>>> And use it to store expectations about what the drm/msm driver is
>>>>> supposed to pass in the IGT test suite.
>>>>>
>>>>> Also include a configuration file that points to the out-of-tree CI
>>>>> scripts.
>>>>>
>>>>> By storing the test expectations along the code we can make sure both
>>>>> stay in sync with each other, and so we can know when a code change
>>>>> breaks those expectations.
>>>>>
>>>>> This will allow all contributors to drm/msm to reuse the infrastructure
>>>>> already in gitlab.freedesktop.org to test the driver on several
>>>>> generations of the hardware.
>>>>>
>>>>> v2:
>>>>>     - Fix names of result expectation files to match SoC
>>>>>     - Don't execute tests that are going to skip on all boards
>>>>>
>>>>> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
>>>>> ---
>>>>>    Documentation/gpu/msm_automated_testing.rst   |  70 +++++++++
>>>>>    drivers/gpu/drm/msm/ci/gitlab-ci.yml          |  11 ++
>>>>>    drivers/gpu/drm/msm/ci/msm.testlist           | 148 ++++++++++++++++++
>>>>>    .../gpu/drm/msm/ci/msm_apq8016_results.txt    | 140 +++++++++++++++++
>>>>>    .../gpu/drm/msm/ci/msm_apq8096_results.txt    | 140 +++++++++++++++++
>>>>>    drivers/gpu/drm/msm/ci/msm_sc7180_results.txt | 141 +++++++++++++++++
>>>>>    drivers/gpu/drm/msm/ci/msm_sdm845_results.txt | 141 +++++++++++++++++
>>>>>    7 files changed, 791 insertions(+)
>>>>>    create mode 100644 Documentation/gpu/msm_automated_testing.rst
>>>>>    create mode 100644 drivers/gpu/drm/msm/ci/gitlab-ci.yml
>>>>>    create mode 100644 drivers/gpu/drm/msm/ci/msm.testlist
>>>>>    create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
>>>>>    create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
>>>>>    create mode 100644 drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
>>>>>    create mode 100644 drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
>>>>>
> 
> [snip]
> 
>>>>> diff --git a/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
>>>>> new file mode 100644
>>>>> index 000000000000..01f7b4b399b5
>>>>> --- /dev/null
>>>>> +++ b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
>>>>> @@ -0,0 +1,141 @@
>>>>> +igt@core_auth@getclient-simple,dmesg-warn
>>>>> +igt@core_auth@getclient-master-drop,pass
>>>>> +igt@core_auth@basic-auth,pass
>>>>> +igt@core_auth@many-magics,pass
>>>>> +igt@core_getclient,pass
>>>>> +igt@core_getstats,pass
>>>>> +igt@core_getversion,pass
>>>>> +igt@core_setmaster_vs_auth,pass
>>>>> +igt@drm_read@invalid-buffer,pass
>>>>> +igt@drm_read@fault-buffer,pass
>>>>> +igt@drm_read@empty-block,pass
>>>>> +igt@drm_read@empty-nonblock,pass
>>>>> +igt@drm_read@short-buffer-block,pass
>>>>> +igt@drm_read@short-buffer-nonblock,pass
>>>>> +igt@drm_read@short-buffer-wakeup,pass
>>>>> +igt@kms_addfb_basic@unused-handle,pass
>>>>> +igt@kms_addfb_basic@unused-pitches,pass
>>>>> +igt@kms_addfb_basic@unused-offsets,pass
>>>>> +igt@kms_addfb_basic@unused-modifier,pass
>>>>> +igt@kms_addfb_basic@legacy-format,dmesg-warn
>>>>> +igt@kms_addfb_basic@no-handle,pass
>>>>> +igt@kms_addfb_basic@basic,pass
>>>>> +igt@kms_addfb_basic@bad-pitch-0,pass
>>>>> +igt@kms_addfb_basic@bad-pitch-32,pass
>>>>> +igt@kms_addfb_basic@bad-pitch-63,pass
>>>>> +igt@kms_addfb_basic@bad-pitch-128,pass
>>>>> +igt@kms_addfb_basic@bad-pitch-256,pass
>>>>> +igt@kms_addfb_basic@bad-pitch-1024,pass
>>>>> +igt@kms_addfb_basic@bad-pitch-999,pass
>>>>> +igt@kms_addfb_basic@bad-pitch-65536,pass
>>>>> +igt@kms_addfb_basic@size-max,pass
>>>>> +igt@kms_addfb_basic@too-wide,pass
>>>>> +igt@kms_addfb_basic@too-high,dmesg-warn
>>>>
>>>> For test results on Trogdor, is is possible to have them be
>>>> success/fail/skip only?
>>>>
>>>> Results such as dmesg-warn/dmesg-fail are igt_runner specific and
>>>> because there isn't support for igt_runner on ChromeOS, they will be
>>>> difficult to replicate and debug.
>>>
>>> Actually, I wonder if it would be better to just treat
>>> dmesg-warn/dmesg-fail as pass/fail?  I'd noticed some flakes on
>>> rockchip which looked just like unrelated dmesg msg which just
>>> happened to show up while the test was running.
>>
>> This is kinda the reason behind standardizing on drm dmesg logging, so
>> that we have some chances at filtering stuff out. Not sure that's a
>> good idea, since when your entire box splats and lockdep is dead, then
>> continuing to run drm tests is still fairly pointless.
> 
> I'm not sure if we are using it yet for drm-ci, but for mesa-ci we
> monitor dmesg (over serial port, from the controller) for splats, so
> we already have the tech for restarting or aborting the CI run.  We
> don't need igt-runner to tell us.

Yep, these scripts are currently being used as-is from Mesa, so we got 
that functionality for free.

>> I think this is another reason why trying at least to standardize this
>> stuff over drivers would be pretty good idea.
>>
>>> Additionally, some of the tests, like msm_recovery, are *expected* to
>>> generate some dmesg spam since they are intentionally triggering GPU
>>> hangs to test the recovery mechanism.
>>
>> Uh I don't like that. It just allows userspace to spam dmesg, which
>> doesn't seem like a great idea. That's at least why i915 dumps these
>> at a lower level, and in the past had a special "I'm going to whack
>> the gpu real hard expect hangs" knob in debugfs.
>>
>> Having tests which intentionally spam dmesg above info level isn't
>> really good since then you need endless amounts of test-specific
>> encoding of what is considered a success and what not. Like when a
>> backmerge breaks a testcases which is already at dmesg-fail, is that
>> bad or not? Probably bad, but was the situation before that really
>> good or already kinda on fire?
> 
> I guess I could add some debugfs knobs to squelch the dmesg msgs on
> gpu hangs.  In the normal case, I'd prefer that gpu hangs are not
> silent.. since that is something we get in feedback reports if a user
> (or dogfooder) reports a bug.
> 
> The rockchip case I mentioned was some unrelated dmesg about
> linktraining failing.. presumably because there was no display
> attached?  IDK, I didn't look too closely.  But my point is we could
> be getting unrelated and asynchronous dmesg spam, even from other
> kernel subsystems.  Letting that be part of the test results just
> sounds like asking for flakes.

I think some drivers are currently a bit too buggy to behave reliably 
under CI unless one reduces coverage (rockchip on rk3399, for example). 
And some other drivers (in other subsystems as well) could do with a 
review of what they print to the console. I guess these are things we 
could and probably should fix?

Cheers,

Tomeu

> BR,
> -R
> 
>> -Daniel
>>
>>> BR,
>>> -R
>>>

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [Freedreno] [RFC v2] drm/msm: Add initial ci/ subdirectory
  2022-05-12 13:28           ` Tomeu Vizoso
@ 2022-05-12 14:02             ` Daniel Vetter
  0 siblings, 0 replies; 49+ messages in thread
From: Daniel Vetter @ 2022-05-12 14:02 UTC (permalink / raw)
  To: Tomeu Vizoso
  Cc: freedreno, Thomas Zimmermann, open list:DOCUMENTATION,
	David Airlie, linux-arm-msm, Jonathan Corbet, Abhinav Kumar,
	Linux Kernel Mailing List, dri-devel, Jessica Zhang, Sean Paul

On Thu, May 12, 2022 at 03:28:16PM +0200, Tomeu Vizoso wrote:
> On 5/11/22 7:46 PM, Rob Clark wrote:
> > On Wed, May 11, 2022 at 10:12 AM Daniel Vetter <daniel@ffwll.ch> wrote:
> > > 
> > > On Tue, 10 May 2022 at 22:26, Rob Clark <robdclark@gmail.com> wrote:
> > > > 
> > > > On Tue, May 10, 2022 at 12:39 PM Jessica Zhang
> > > > <quic_jesszhan@quicinc.com> wrote:
> > > > > 
> > > > > 
> > > > > 
> > > > > On 5/10/2022 7:13 AM, Tomeu Vizoso wrote:
> > > > > > And use it to store expectations about what the drm/msm driver is
> > > > > > supposed to pass in the IGT test suite.
> > > > > > 
> > > > > > Also include a configuration file that points to the out-of-tree CI
> > > > > > scripts.
> > > > > > 
> > > > > > By storing the test expectations along the code we can make sure both
> > > > > > stay in sync with each other, and so we can know when a code change
> > > > > > breaks those expectations.
> > > > > > 
> > > > > > This will allow all contributors to drm/msm to reuse the infrastructure
> > > > > > already in gitlab.freedesktop.org to test the driver on several
> > > > > > generations of the hardware.
> > > > > > 
> > > > > > v2:
> > > > > >     - Fix names of result expectation files to match SoC
> > > > > >     - Don't execute tests that are going to skip on all boards
> > > > > > 
> > > > > > Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> > > > > > ---
> > > > > >    Documentation/gpu/msm_automated_testing.rst   |  70 +++++++++
> > > > > >    drivers/gpu/drm/msm/ci/gitlab-ci.yml          |  11 ++
> > > > > >    drivers/gpu/drm/msm/ci/msm.testlist           | 148 ++++++++++++++++++
> > > > > >    .../gpu/drm/msm/ci/msm_apq8016_results.txt    | 140 +++++++++++++++++
> > > > > >    .../gpu/drm/msm/ci/msm_apq8096_results.txt    | 140 +++++++++++++++++
> > > > > >    drivers/gpu/drm/msm/ci/msm_sc7180_results.txt | 141 +++++++++++++++++
> > > > > >    drivers/gpu/drm/msm/ci/msm_sdm845_results.txt | 141 +++++++++++++++++
> > > > > >    7 files changed, 791 insertions(+)
> > > > > >    create mode 100644 Documentation/gpu/msm_automated_testing.rst
> > > > > >    create mode 100644 drivers/gpu/drm/msm/ci/gitlab-ci.yml
> > > > > >    create mode 100644 drivers/gpu/drm/msm/ci/msm.testlist
> > > > > >    create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8016_results.txt
> > > > > >    create mode 100644 drivers/gpu/drm/msm/ci/msm_apq8096_results.txt
> > > > > >    create mode 100644 drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > > > > >    create mode 100644 drivers/gpu/drm/msm/ci/msm_sdm845_results.txt
> > > > > > 
> > 
> > [snip]
> > 
> > > > > > diff --git a/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > > > > > new file mode 100644
> > > > > > index 000000000000..01f7b4b399b5
> > > > > > --- /dev/null
> > > > > > +++ b/drivers/gpu/drm/msm/ci/msm_sc7180_results.txt
> > > > > > @@ -0,0 +1,141 @@
> > > > > > +igt@core_auth@getclient-simple,dmesg-warn
> > > > > > +igt@core_auth@getclient-master-drop,pass
> > > > > > +igt@core_auth@basic-auth,pass
> > > > > > +igt@core_auth@many-magics,pass
> > > > > > +igt@core_getclient,pass
> > > > > > +igt@core_getstats,pass
> > > > > > +igt@core_getversion,pass
> > > > > > +igt@core_setmaster_vs_auth,pass
> > > > > > +igt@drm_read@invalid-buffer,pass
> > > > > > +igt@drm_read@fault-buffer,pass
> > > > > > +igt@drm_read@empty-block,pass
> > > > > > +igt@drm_read@empty-nonblock,pass
> > > > > > +igt@drm_read@short-buffer-block,pass
> > > > > > +igt@drm_read@short-buffer-nonblock,pass
> > > > > > +igt@drm_read@short-buffer-wakeup,pass
> > > > > > +igt@kms_addfb_basic@unused-handle,pass
> > > > > > +igt@kms_addfb_basic@unused-pitches,pass
> > > > > > +igt@kms_addfb_basic@unused-offsets,pass
> > > > > > +igt@kms_addfb_basic@unused-modifier,pass
> > > > > > +igt@kms_addfb_basic@legacy-format,dmesg-warn
> > > > > > +igt@kms_addfb_basic@no-handle,pass
> > > > > > +igt@kms_addfb_basic@basic,pass
> > > > > > +igt@kms_addfb_basic@bad-pitch-0,pass
> > > > > > +igt@kms_addfb_basic@bad-pitch-32,pass
> > > > > > +igt@kms_addfb_basic@bad-pitch-63,pass
> > > > > > +igt@kms_addfb_basic@bad-pitch-128,pass
> > > > > > +igt@kms_addfb_basic@bad-pitch-256,pass
> > > > > > +igt@kms_addfb_basic@bad-pitch-1024,pass
> > > > > > +igt@kms_addfb_basic@bad-pitch-999,pass
> > > > > > +igt@kms_addfb_basic@bad-pitch-65536,pass
> > > > > > +igt@kms_addfb_basic@size-max,pass
> > > > > > +igt@kms_addfb_basic@too-wide,pass
> > > > > > +igt@kms_addfb_basic@too-high,dmesg-warn
> > > > > 
> > > > > For test results on Trogdor, is is possible to have them be
> > > > > success/fail/skip only?
> > > > > 
> > > > > Results such as dmesg-warn/dmesg-fail are igt_runner specific and
> > > > > because there isn't support for igt_runner on ChromeOS, they will be
> > > > > difficult to replicate and debug.
> > > > 
> > > > Actually, I wonder if it would be better to just treat
> > > > dmesg-warn/dmesg-fail as pass/fail?  I'd noticed some flakes on
> > > > rockchip which looked just like unrelated dmesg msg which just
> > > > happened to show up while the test was running.
> > > 
> > > This is kinda the reason behind standardizing on drm dmesg logging, so
> > > that we have some chances at filtering stuff out. Not sure that's a
> > > good idea, since when your entire box splats and lockdep is dead, then
> > > continuing to run drm tests is still fairly pointless.
> > 
> > I'm not sure if we are using it yet for drm-ci, but for mesa-ci we
> > monitor dmesg (over serial port, from the controller) for splats, so
> > we already have the tech for restarting or aborting the CI run.  We
> > don't need igt-runner to tell us.
> 
> Yep, these scripts are currently being used as-is from Mesa, so we got that
> functionality for free.
> 
> > > I think this is another reason why trying at least to standardize this
> > > stuff over drivers would be pretty good idea.
> > > 
> > > > Additionally, some of the tests, like msm_recovery, are *expected* to
> > > > generate some dmesg spam since they are intentionally triggering GPU
> > > > hangs to test the recovery mechanism.
> > > 
> > > Uh I don't like that. It just allows userspace to spam dmesg, which
> > > doesn't seem like a great idea. That's at least why i915 dumps these
> > > at a lower level, and in the past had a special "I'm going to whack
> > > the gpu real hard expect hangs" knob in debugfs.
> > > 
> > > Having tests which intentionally spam dmesg above info level isn't
> > > really good since then you need endless amounts of test-specific
> > > encoding of what is considered a success and what not. Like when a
> > > backmerge breaks a testcases which is already at dmesg-fail, is that
> > > bad or not? Probably bad, but was the situation before that really
> > > good or already kinda on fire?
> > 
> > I guess I could add some debugfs knobs to squelch the dmesg msgs on
> > gpu hangs.  In the normal case, I'd prefer that gpu hangs are not
> > silent.. since that is something we get in feedback reports if a user
> > (or dogfooder) reports a bug.
> > 
> > The rockchip case I mentioned was some unrelated dmesg about
> > linktraining failing.. presumably because there was no display
> > attached?  IDK, I didn't look too closely.  But my point is we could
> > be getting unrelated and asynchronous dmesg spam, even from other
> > kernel subsystems.  Letting that be part of the test results just
> > sounds like asking for flakes.
> 
> I think some drivers are currently a bit too buggy to behave reliably under
> CI unless one reduces coverage (rockchip on rk3399, for example). And some
> other drivers (in other subsystems as well) could do with a review of what
> they print to the console. I guess these are things we could and probably
> should fix?

I think the best way for these is to still run the tests, but supress the
results. At least if the flakiness is only in whether the test passes, and
not in the test run outright killing the kernel/machine somehow.

But yeah sometimes just having an explicit run list is the way to go, and
we have plenty of that in intel ci. But for i915 it's more a testament to
how terrible the i915-gem tests in particular have become, largely also
because people simply kept adding crap and never removed much at all (and
sometimes even removed important tests, oh well).
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 49+ messages in thread

* [RFC v4] drm: Add initial ci/ subdirectory
  2022-05-11  6:15   ` [RFC v3] " Tomeu Vizoso
  2022-05-11 13:20     ` Rob Clark
@ 2022-05-17  8:16     ` Tomeu Vizoso
  2022-05-17  9:18       ` Neil Armstrong
  2022-07-26 18:16       ` [PATCH v5] " Tomeu Vizoso
  1 sibling, 2 replies; 49+ messages in thread
From: Tomeu Vizoso @ 2022-05-17  8:16 UTC (permalink / raw)
  To: David Airlie, Jonathan Corbet, Carlo Caione, Kevin Hilman,
	Heiko Stuebner, Matthias Brugger
  Cc: Tomeu Vizoso, linux-doc, linux-kernel, dri-devel, linux-rockchip,
	linux-mediatek, linux-amlogic, linux-arm-kernel

And use it to store expectations about what the DRM drivers are
supposed to pass in the IGT test suite.

Also include a configuration file that points to the out-of-tree CI
scripts.

By storing the test expectations along the code we can make sure both
stay in sync with each other, and so we can know when a code change
breaks those expectations.

This will allow all contributors to drm to reuse the infrastructure
already in gitlab.freedesktop.org to test the driver on several
generations of the hardware.

v2:
  - Fix names of result expectation files to match SoC
  - Don't execute tests that are going to skip on all boards

v3:
  - Remove tracking of dmesg output during test execution

v4:
  - Move up to drivers/gpu/drm
  - Add support for a bunch of other drivers
  - Explain how to incorporate fixes for CI from a
    ${TARGET_BRANCH}-external-fixes branch
  - Remove tests that pass from expected results file, to reduce the
    size of in-tree files
  - Add docs about how to deal with outages in automated testing labs
  - Specify the exact SHA of the CI scripts to be used

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
---
 Documentation/gpu/automated_testing.rst       |  84 +++++++
 drivers/gpu/drm/ci/amdgpu.testlist            | 130 +++++++++++
 drivers/gpu/drm/ci/amdgpu_stoney_results.txt  |  17 ++
 drivers/gpu/drm/ci/gitlab-ci.yml              |  13 ++
 drivers/gpu/drm/ci/i915.testlist              | 219 ++++++++++++++++++
 drivers/gpu/drm/ci/i915_amly_results.txt      |   9 +
 drivers/gpu/drm/ci/i915_apl_results.txt       |   9 +
 drivers/gpu/drm/ci/i915_cml_results.txt       |  10 +
 drivers/gpu/drm/ci/i915_glk_results.txt       |  13 ++
 drivers/gpu/drm/ci/i915_kbl_results.txt       |   9 +
 drivers/gpu/drm/ci/i915_tgl_results.txt       |  12 +
 drivers/gpu/drm/ci/i915_whl_results.txt       |   9 +
 drivers/gpu/drm/ci/mediatek.testlist          | 102 ++++++++
 .../gpu/drm/ci/mediatek_mt8173_results.txt    |  11 +
 .../gpu/drm/ci/mediatek_mt8183_results.txt    |  11 +
 .../gpu/drm/ci/mediatek_mt8192_results.txt    |  11 +
 drivers/gpu/drm/ci/meson.testlist             |  71 ++++++
 drivers/gpu/drm/ci/meson_g12b_results.txt     |  11 +
 drivers/gpu/drm/ci/msm.testlist               | 144 ++++++++++++
 drivers/gpu/drm/ci/msm_apq8016_results.txt    |  77 ++++++
 drivers/gpu/drm/ci/msm_apq8096_results.txt    |  76 ++++++
 drivers/gpu/drm/ci/msm_sc7180_results.txt     |  18 ++
 drivers/gpu/drm/ci/msm_sdm845_results.txt     |  33 +++
 drivers/gpu/drm/ci/rockchip.testlist          | 188 +++++++++++++++
 .../gpu/drm/ci/rockchip_rk3288_results.txt    |  11 +
 .../gpu/drm/ci/rockchip_rk3399_results.txt    |  14 ++
 drivers/gpu/drm/ci/virtio_gpu.testlist        |  92 ++++++++
 drivers/gpu/drm/ci/virtio_gpu_results.txt     |  28 +++
 28 files changed, 1432 insertions(+)
 create mode 100644 Documentation/gpu/automated_testing.rst
 create mode 100644 drivers/gpu/drm/ci/amdgpu.testlist
 create mode 100644 drivers/gpu/drm/ci/amdgpu_stoney_results.txt
 create mode 100644 drivers/gpu/drm/ci/gitlab-ci.yml
 create mode 100644 drivers/gpu/drm/ci/i915.testlist
 create mode 100644 drivers/gpu/drm/ci/i915_amly_results.txt
 create mode 100644 drivers/gpu/drm/ci/i915_apl_results.txt
 create mode 100644 drivers/gpu/drm/ci/i915_cml_results.txt
 create mode 100644 drivers/gpu/drm/ci/i915_glk_results.txt
 create mode 100644 drivers/gpu/drm/ci/i915_kbl_results.txt
 create mode 100644 drivers/gpu/drm/ci/i915_tgl_results.txt
 create mode 100644 drivers/gpu/drm/ci/i915_whl_results.txt
 create mode 100644 drivers/gpu/drm/ci/mediatek.testlist
 create mode 100644 drivers/gpu/drm/ci/mediatek_mt8173_results.txt
 create mode 100644 drivers/gpu/drm/ci/mediatek_mt8183_results.txt
 create mode 100644 drivers/gpu/drm/ci/mediatek_mt8192_results.txt
 create mode 100644 drivers/gpu/drm/ci/meson.testlist
 create mode 100644 drivers/gpu/drm/ci/meson_g12b_results.txt
 create mode 100644 drivers/gpu/drm/ci/msm.testlist
 create mode 100644 drivers/gpu/drm/ci/msm_apq8016_results.txt
 create mode 100644 drivers/gpu/drm/ci/msm_apq8096_results.txt
 create mode 100644 drivers/gpu/drm/ci/msm_sc7180_results.txt
 create mode 100644 drivers/gpu/drm/ci/msm_sdm845_results.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip.testlist
 create mode 100644 drivers/gpu/drm/ci/rockchip_rk3288_results.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip_rk3399_results.txt
 create mode 100644 drivers/gpu/drm/ci/virtio_gpu.testlist
 create mode 100644 drivers/gpu/drm/ci/virtio_gpu_results.txt

diff --git a/Documentation/gpu/automated_testing.rst b/Documentation/gpu/automated_testing.rst
new file mode 100644
index 000000000000..61003ecc7b6e
--- /dev/null
+++ b/Documentation/gpu/automated_testing.rst
@@ -0,0 +1,84 @@
+.. SPDX-License-Identifier: GPL-2.0+
+
+=========================================
+Automated testing of the DRM subsystem
+=========================================
+
+
+Introduction
+============
+
+Making sure that changes to the core or drivers don't introduce regressions can be very time consuming when lots of different hardware configurations need to be tested. Moreover, it isn't practical for each person interested in this testing to have to acquire and maintain what can be a considerable amount of hardware.
+
+Also, it is desirable for developers to check for regressions in their code by themselves, instead of relying on the maintainers finding them and then reporting back.
+
+There are facilities in gitlab.freedesktop.org to automatically test Mesa that can be used as well for testing the DRM subsystem. This document explains how people interested in testing it can use this shared infrastructure to save quite some time and effort.
+
+
+Relevant files
+==============
+
+drivers/gpu/drm/ci/gitlab-ci.yml
+--------------------------------
+
+Specifies the specific version of the scripts to be used. GitLab CI will use the values defined in this file to fetch the right scripts.
+
+
+drivers/gpu/drm/ci/${DRIVER_NAME}.testlist
+------------------------------------------
+
+Specifies the tests that the current code is expected to be able to reliably run for ${DRIVER_NAME}. These tests are expected to not hang the DUT (Device Under Testing) when running on the revision they belong to, and to give consistent results.
+
+
+drivers/gpu/drm/ci/${DRIVER_NAME}_*_results.txt
+----------------------------------------
+
+Specifies the expected results of running this specific kernel revision on a given hardware configuration.
+
+
+How to enable automated testing on your tree
+============================================
+
+1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one yet
+
+2. In your kernel repo's configuration (eg. https://gitlab.freedesktop.org/tomeu/linux/-/settings/ci_cd), change the CI/CD configuration file from .gitlab-ci.yml to drivers/gpu/drm/ci/gitlab-ci.yml.
+
+3. Next time you push to this repository, you will see a CI pipeline being created (eg. https://gitlab.freedesktop.org/tomeu/linux/-/pipelines)
+
+4. The various jobs will be run and when the pipeline is finished, all jobs should be green unless a regression has been found.
+
+
+How to update test expectations
+===============================
+
+If your changes to the code fix any tests, you will have to update one or more of the files in drivers/gpu/drm/ci/${DRIVER_NAME}_*_results.txt, for each of the test platforms affected by the change.
+
+If you have run a pipeline and it failed because of a mismatched test result, you will have been offered a patch at the end of the run that you can apply after reviewing it.
+
+
+How to expand coverage
+======================
+
+If your code changes makes it possible to run more tests (by solving reliability issues, for example), more tests can be added to this list, and then the expected results updated with the patch file that will be printed at the end of each job.
+
+If there is a need for updating the version of IGT being used (maybe you have added more tests to it), follow the instructions at https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/tree/main#upreving-igt.
+
+
+How to test your changes to the scripts
+==========================================
+
+For testing changes to the scripts in the drm-ci repo, change the DRM_CI_PROJECT_PATH variable in drivers/gpu/drm/ci/gitlab-ci.yml to match your fork of the project (eg. tomeu/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
+
+
+How to incorporate external fixes in your testing
+=================================================
+
+Often, regressions in other trees will prevent testing changes local to the tree under test. These fixes will be automatically merged in during the build jobs from a branch in the target tree that is named as ${TARGET_BRANCH}-external-fixes.
+
+If the pipeline is not in a merge request and a branch with the same name exists in the local tree, commits from that branch will be merged in as well.
+
+
+How to deal with automated testing labs that may be down
+========================================================
+
+If a hardware farm is down and thus causing pipelines to fail that would otherwise pass, one can disable all jobs that would be submitted to that farm by editing the file at https://gitlab.freedesktop.org/gfx-ci/lab-status/-/blob/main/lab-status.yml.
diff --git a/drivers/gpu/drm/ci/amdgpu.testlist b/drivers/gpu/drm/ci/amdgpu.testlist
new file mode 100644
index 000000000000..c311ad590e2f
--- /dev/null
+++ b/drivers/gpu/drm/ci/amdgpu.testlist
@@ -0,0 +1,130 @@
+# Keep alphabetically sorted by default
+
+igt@core_auth@getclient-simple
+igt@core_auth@getclient-master-drop
+igt@core_auth@basic-auth
+igt@core_auth@many-magics
+igt@core_getclient
+igt@core_getstats
+igt@core_getversion
+igt@core_setmaster_vs_auth
+igt@drm_read@invalid-buffer
+igt@drm_read@fault-buffer
+igt@drm_read@empty-block
+igt@drm_read@empty-nonblock
+igt@drm_read@short-buffer-block
+igt@drm_read@short-buffer-nonblock
+igt@drm_read@short-buffer-wakeup
+igt@kms_addfb_basic@legacy-format
+igt@kms_addfb_basic@no-handle
+igt@kms_addfb_basic@basic
+igt@kms_addfb_basic@bad-pitch-0
+igt@kms_addfb_basic@bad-pitch-32
+igt@kms_addfb_basic@bad-pitch-63
+igt@kms_addfb_basic@bad-pitch-128
+igt@kms_addfb_basic@bad-pitch-256
+igt@kms_addfb_basic@bad-pitch-1024
+igt@kms_addfb_basic@bad-pitch-999
+igt@kms_addfb_basic@bad-pitch-65536
+igt@kms_addfb_basic@size-max
+igt@kms_addfb_basic@too-wide
+igt@kms_addfb_basic@too-high
+igt@kms_addfb_basic@bo-too-small
+igt@kms_addfb_basic@small-bo
+igt@kms_addfb_basic@invalid-get-prop-any
+igt@kms_addfb_basic@invalid-get-prop
+igt@kms_addfb_basic@invalid-set-prop-any
+igt@kms_addfb_basic@invalid-set-prop
+igt@kms_addfb_basic@master-rmfb
+igt@kms_atomic@plane-primary-legacy
+igt@kms_atomic@plane-immutable-zpos
+igt@kms_atomic@test-only
+igt@kms_atomic@plane-cursor-legacy
+igt@kms_atomic@plane-invalid-params
+igt@kms_atomic@crtc-invalid-params
+igt@kms_atomic@atomic-invalid-params
+igt@kms_atomic_interruptible@legacy-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@atomic-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-dpms@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-pageflip@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-cursor@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-primary@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-cursor@pipe-a-edp-1
+igt@kms_content_protection@LIC
+igt@kms_flip_event_leak
+igt@kms_getfb@getfb-handle-zero
+igt@kms_getfb@getfb-handle-valid
+igt@kms_getfb@getfb-handle-closed
+igt@kms_getfb@getfb-handle-not-fb
+igt@kms_getfb@getfb-addfb-different-handles
+igt@kms_getfb@getfb-repeated-different-handles
+igt@kms_getfb@getfb2-handle-zero
+igt@kms_getfb@getfb2-handle-closed
+igt@kms_getfb@getfb2-handle-not-fb
+igt@kms_getfb@getfb2-into-addfb2
+igt@kms_getfb@getfb-handle-protection
+igt@kms_getfb@getfb2-handle-protection
+igt@kms_hdr@bpc-switch
+igt@kms_hdr@bpc-switch-dpms
+igt@kms_pipe_crc_basic@bad-source
+igt@kms_pipe_crc_basic@read-crc-pipe-a
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a
+igt@kms_pipe_crc_basic@read-crc-pipe-b
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b
+igt@kms_plane_lowres@pipe-a-tiling-none
+igt@kms_plane_lowres@pipe-b-tiling-none
+igt@kms_prop_blob@basic
+igt@kms_prop_blob@blob-prop-core
+igt@kms_prop_blob@blob-prop-validate
+igt@kms_prop_blob@blob-prop-lifetime
+igt@kms_prop_blob@blob-multiple
+igt@kms_prop_blob@invalid-get-prop-any
+igt@kms_prop_blob@invalid-get-prop
+igt@kms_prop_blob@invalid-set-prop-any
+igt@kms_prop_blob@invalid-set-prop
+igt@kms_rmfb@rmfb-ioctl
+igt@kms_rmfb@close-fd
+
+# Flaky on Stoney
+# [drm] REG_WAIT timeout 10us * 3500 tries - dce_mi_free_dmif line:782
+# igt@kms_rotation_crc@primary-rotation-180
+
+
+# Get a warning some times on Stoney
+# igt@kms_setmode@basic@pipe-a-edp-1
+# igt@kms_setmode@basic@pipe-b-edp-1
+
+igt@kms_sysfs_edid_timing
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b
+igt@kms_vblank@invalid
+igt@kms_vblank@crtc-id
+igt@kms_vblank@pipe-a-query-idle
+igt@kms_vblank@pipe-a-query-forked
+igt@kms_vblank@pipe-a-query-busy
+igt@kms_vblank@pipe-a-query-forked-busy
+igt@kms_vblank@pipe-a-wait-idle
+igt@kms_vblank@pipe-a-wait-forked
+igt@kms_vblank@pipe-a-wait-busy
+igt@kms_vblank@pipe-a-wait-forked-busy
+igt@kms_vblank@pipe-a-ts-continuation-idle
+igt@kms_vblank@pipe-a-ts-continuation-modeset
+igt@kms_vblank@pipe-b-accuracy-idle
+igt@kms_vblank@pipe-b-query-idle
+igt@kms_vblank@pipe-b-query-forked
+igt@kms_vblank@pipe-b-query-busy
+igt@kms_vblank@pipe-b-query-forked-busy
+igt@kms_vblank@pipe-b-wait-idle
+igt@kms_vblank@pipe-b-wait-forked
+igt@kms_vblank@pipe-b-wait-busy
+igt@kms_vblank@pipe-b-wait-forked-busy
+igt@kms_vblank@pipe-b-ts-continuation-idle
+igt@kms_vblank@pipe-b-ts-continuation-modeset
diff --git a/drivers/gpu/drm/ci/amdgpu_stoney_results.txt b/drivers/gpu/drm/ci/amdgpu_stoney_results.txt
new file mode 100644
index 000000000000..8f9fb6201011
--- /dev/null
+++ b/drivers/gpu/drm/ci/amdgpu_stoney_results.txt
@@ -0,0 +1,17 @@
+igt@kms_addfb_basic@bad-pitch-65536,fail
+igt@kms_addfb_basic@too-high,fail
+igt@kms_addfb_basic@bo-too-small,fail
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_hdr@bpc-switch@bpc-switch-edp-1-pipe-a,skip
+igt@kms_hdr@bpc-switch-dpms@bpc-switch-dpms-edp-1-pipe-a,skip
+igt@kms_plane_lowres@pipe-a-tiling-none,incomplete
+igt@kms_plane_lowres@pipe-b-tiling-none,incomplete
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,fail
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,fail
diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml
new file mode 100644
index 000000000000..e7464d8d442e
--- /dev/null
+++ b/drivers/gpu/drm/ci/gitlab-ci.yml
@@ -0,0 +1,13 @@
+variables:
+  # Change this to use your fork of drm-ci
+  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
+  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha 6e01c5e9f0eea910e9fb7ce475cdef6cc719caf3
+
+  UPSTREAM_REPO: git://anongit.freedesktop.org/drm/drm
+  TARGET_BRANCH: drm-next
+
+include:
+  - project: *drm-ci-project-path
+    ref: *drm-ci-commit-sha
+    file:
+      - '.gitlab-ci.yml'
diff --git a/drivers/gpu/drm/ci/i915.testlist b/drivers/gpu/drm/ci/i915.testlist
new file mode 100644
index 000000000000..92fa28e77f5d
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915.testlist
@@ -0,0 +1,219 @@
+# Keep alphabetically sorted by default
+
+igt@core_auth@getclient-simple
+igt@core_auth@getclient-master-drop
+igt@core_auth@basic-auth
+igt@core_auth@many-magics
+igt@core_getclient
+igt@core_getstats
+igt@core_getversion
+igt@core_setmaster_vs_auth
+igt@drm_read@invalid-buffer
+igt@drm_read@fault-buffer
+igt@drm_read@empty-block
+igt@drm_read@empty-nonblock
+igt@drm_read@short-buffer-block
+igt@drm_read@short-buffer-nonblock
+igt@drm_read@short-buffer-wakeup
+igt@kms_addfb_basic@unused-handle
+igt@kms_addfb_basic@unused-pitches
+igt@kms_addfb_basic@unused-offsets
+igt@kms_addfb_basic@unused-modifier
+igt@kms_addfb_basic@clobberred-modifier
+igt@kms_addfb_basic@legacy-format
+igt@kms_addfb_basic@no-handle
+igt@kms_addfb_basic@basic
+igt@kms_addfb_basic@bad-pitch-0
+igt@kms_addfb_basic@bad-pitch-32
+igt@kms_addfb_basic@bad-pitch-63
+igt@kms_addfb_basic@bad-pitch-128
+igt@kms_addfb_basic@bad-pitch-256
+igt@kms_addfb_basic@bad-pitch-1024
+igt@kms_addfb_basic@bad-pitch-999
+igt@kms_addfb_basic@bad-pitch-65536
+igt@kms_addfb_basic@size-max
+igt@kms_addfb_basic@too-wide
+igt@kms_addfb_basic@too-high
+igt@kms_addfb_basic@bo-too-small
+igt@kms_addfb_basic@small-bo
+igt@kms_addfb_basic@bo-too-small-due-to-tiling
+igt@kms_addfb_basic@addfb25-modifier-no-flag
+igt@kms_addfb_basic@addfb25-bad-modifier
+igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy
+igt@kms_addfb_basic@addfb25-x-tiled-legacy
+igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling
+igt@kms_addfb_basic@addfb25-y-tiled-legacy
+igt@kms_addfb_basic@addfb25-yf-tiled-legacy
+igt@kms_addfb_basic@addfb25-y-tiled-small-legacy
+igt@kms_addfb_basic@addfb25-4-tiled
+igt@kms_addfb_basic@basic-x-tiled-legacy
+igt@kms_addfb_basic@framebuffer-vs-set-tiling
+igt@kms_addfb_basic@tile-pitch-mismatch
+igt@kms_addfb_basic@basic-y-tiled-legacy
+igt@kms_addfb_basic@invalid-get-prop-any
+igt@kms_addfb_basic@invalid-get-prop
+igt@kms_addfb_basic@invalid-set-prop-any
+igt@kms_addfb_basic@invalid-set-prop
+igt@kms_addfb_basic@master-rmfb
+igt@kms_atomic@plane-overlay-legacy
+igt@kms_atomic@plane-primary-legacy
+igt@kms_atomic@plane-immutable-zpos
+igt@kms_atomic@test-only
+igt@kms_atomic@plane-cursor-legacy
+igt@kms_atomic@plane-invalid-params
+igt@kms_atomic@crtc-invalid-params
+igt@kms_atomic@atomic-invalid-params
+igt@kms_atomic_interruptible@legacy-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@atomic-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-dpms@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-pageflip@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-cursor@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-primary@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-cursor@pipe-a-edp-1
+igt@kms_content_protection@LIC
+igt@kms_flip_event_leak
+igt@kms_getfb@getfb-handle-zero
+igt@kms_getfb@getfb-handle-valid
+igt@kms_getfb@getfb-handle-closed
+igt@kms_getfb@getfb-handle-not-fb
+igt@kms_getfb@getfb-addfb-different-handles
+igt@kms_getfb@getfb-repeated-different-handles
+igt@kms_getfb@getfb-reject-ccs
+igt@kms_getfb@getfb2-handle-zero
+igt@kms_getfb@getfb2-handle-closed
+igt@kms_getfb@getfb2-handle-not-fb
+igt@kms_getfb@getfb2-accept-ccs
+igt@kms_getfb@getfb2-into-addfb2
+igt@kms_getfb@getfb-handle-protection
+igt@kms_getfb@getfb2-handle-protection
+igt@kms_hdmi_inject@inject-4k
+igt@kms_hdr@bpc-switch
+igt@kms_hdr@bpc-switch-dpms
+igt@kms_pipe_crc_basic@bad-source
+igt@kms_pipe_crc_basic@read-crc-pipe-a
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-a
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a
+igt@kms_pipe_crc_basic@read-crc-pipe-b
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-b
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b
+igt@kms_pipe_crc_basic@read-crc-pipe-c
+igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c-frame-sequence
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-c
+igt@kms_pipe_crc_basic@hang-read-crc-pipe-c
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c
+igt@kms_prop_blob@basic
+igt@kms_prop_blob@blob-prop-core
+igt@kms_prop_blob@blob-prop-validate
+igt@kms_prop_blob@blob-prop-lifetime
+igt@kms_prop_blob@blob-multiple
+igt@kms_prop_blob@invalid-get-prop-any
+igt@kms_prop_blob@invalid-get-prop
+igt@kms_prop_blob@invalid-set-prop-any
+igt@kms_prop_blob@invalid-set-prop
+igt@kms_rmfb@rmfb-ioctl
+igt@kms_rmfb@close-fd
+igt@kms_rotation_crc@primary-rotation-90
+igt@kms_rotation_crc@primary-rotation-180
+igt@kms_rotation_crc@primary-rotation-270
+igt@kms_rotation_crc@sprite-rotation-90
+igt@kms_rotation_crc@sprite-rotation-180
+igt@kms_rotation_crc@sprite-rotation-270
+igt@kms_rotation_crc@cursor-rotation-180
+igt@kms_rotation_crc@sprite-rotation-90-pos-100-0
+igt@kms_rotation_crc@bad-pixel-format
+igt@kms_rotation_crc@bad-tiling
+igt@kms_rotation_crc@multiplane-rotation
+igt@kms_rotation_crc@multiplane-rotation-cropping-top
+igt@kms_rotation_crc@multiplane-rotation-cropping-bottom
+igt@kms_rotation_crc@exhaust-fences
+igt@kms_setmode@basic@pipe-b-edp-1
+igt@kms_sysfs_edid_timing
+igt@kms_universal_plane@universal-plane-pipe-a-functional
+igt@kms_universal_plane@universal-plane-pipe-a-sanity
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a
+igt@kms_universal_plane@cursor-fb-leak-pipe-a
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-a
+igt@kms_universal_plane@universal-plane-pipe-b-functional
+igt@kms_universal_plane@universal-plane-pipe-b-sanity
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b
+igt@kms_universal_plane@cursor-fb-leak-pipe-b
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-b
+igt@kms_universal_plane@universal-plane-pipe-c-functional
+igt@kms_universal_plane@universal-plane-pipe-c-sanity
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-c
+igt@kms_universal_plane@cursor-fb-leak-pipe-c
+igt@kms_universal_plane@universal-plane-gen9-features-pipe-c
+igt@kms_vblank@invalid
+igt@kms_vblank@crtc-id
+igt@kms_vblank@pipe-a-query-idle
+igt@kms_vblank@pipe-a-query-idle-hang
+igt@kms_vblank@pipe-a-query-forked
+igt@kms_vblank@pipe-a-query-forked-hang
+igt@kms_vblank@pipe-a-query-busy
+igt@kms_vblank@pipe-a-query-busy-hang
+igt@kms_vblank@pipe-a-query-forked-busy
+igt@kms_vblank@pipe-a-query-forked-busy-hang
+igt@kms_vblank@pipe-a-wait-idle
+igt@kms_vblank@pipe-a-wait-idle-hang
+igt@kms_vblank@pipe-a-wait-forked
+igt@kms_vblank@pipe-a-wait-forked-hang
+igt@kms_vblank@pipe-a-wait-busy
+igt@kms_vblank@pipe-a-wait-busy-hang
+igt@kms_vblank@pipe-a-wait-forked-busy
+igt@kms_vblank@pipe-a-wait-forked-busy-hang
+igt@kms_vblank@pipe-a-ts-continuation-idle
+igt@kms_vblank@pipe-a-ts-continuation-idle-hang
+igt@kms_vblank@pipe-a-ts-continuation-modeset
+igt@kms_vblank@pipe-a-ts-continuation-modeset-hang
+igt@kms_vblank@pipe-b-accuracy-idle
+igt@kms_vblank@pipe-b-query-idle
+igt@kms_vblank@pipe-b-query-idle-hang
+igt@kms_vblank@pipe-b-query-forked
+igt@kms_vblank@pipe-b-query-forked-hang
+igt@kms_vblank@pipe-b-query-busy
+igt@kms_vblank@pipe-b-query-busy-hang
+igt@kms_vblank@pipe-b-query-forked-busy
+igt@kms_vblank@pipe-b-query-forked-busy-hang
+igt@kms_vblank@pipe-b-wait-idle
+igt@kms_vblank@pipe-b-wait-idle-hang
+igt@kms_vblank@pipe-b-wait-forked
+igt@kms_vblank@pipe-b-wait-forked-hang
+igt@kms_vblank@pipe-b-wait-busy
+igt@kms_vblank@pipe-b-wait-busy-hang
+igt@kms_vblank@pipe-b-wait-forked-busy
+igt@kms_vblank@pipe-b-wait-forked-busy-hang
+igt@kms_vblank@pipe-b-ts-continuation-idle
+igt@kms_vblank@pipe-b-ts-continuation-idle-hang
+igt@kms_vblank@pipe-b-ts-continuation-modeset
+igt@kms_vblank@pipe-b-ts-continuation-modeset-hang
+igt@kms_vblank@pipe-c-accuracy-idle
+igt@kms_vblank@pipe-c-query-idle
+igt@kms_vblank@pipe-c-query-idle-hang
+igt@kms_vblank@pipe-c-query-forked
+igt@kms_vblank@pipe-c-query-forked-hang
+igt@kms_vblank@pipe-c-query-busy
+igt@kms_vblank@pipe-c-query-busy-hang
+igt@kms_vblank@pipe-c-query-forked-busy
+igt@kms_vblank@pipe-c-query-forked-busy-hang
+igt@kms_vblank@pipe-c-wait-idle
+igt@kms_vblank@pipe-c-wait-idle-hang
+igt@kms_vblank@pipe-c-wait-forked
+igt@kms_vblank@pipe-c-wait-forked-hang
+igt@kms_vblank@pipe-c-wait-busy
+igt@kms_vblank@pipe-c-wait-busy-hang
+igt@kms_vblank@pipe-c-wait-forked-busy
+igt@kms_vblank@pipe-c-wait-forked-busy-hang
+igt@kms_vblank@pipe-c-ts-continuation-idle
+igt@kms_vblank@pipe-c-ts-continuation-idle-hang
+igt@kms_vblank@pipe-c-ts-continuation-modeset
+igt@kms_vblank@pipe-c-ts-continuation-modeset-hang
diff --git a/drivers/gpu/drm/ci/i915_amly_results.txt b/drivers/gpu/drm/ci/i915_amly_results.txt
new file mode 100644
index 000000000000..2937755a9901
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915_amly_results.txt
@@ -0,0 +1,9 @@
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_sysfs_edid_timing,fail
diff --git a/drivers/gpu/drm/ci/i915_apl_results.txt b/drivers/gpu/drm/ci/i915_apl_results.txt
new file mode 100644
index 000000000000..2937755a9901
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915_apl_results.txt
@@ -0,0 +1,9 @@
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_sysfs_edid_timing,fail
diff --git a/drivers/gpu/drm/ci/i915_cml_results.txt b/drivers/gpu/drm/ci/i915_cml_results.txt
new file mode 100644
index 000000000000..e19c38f6b154
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915_cml_results.txt
@@ -0,0 +1,10 @@
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_hdmi_inject@inject-4k,skip
+igt@kms_setmode@basic@pipe-b-edp-1,fail
diff --git a/drivers/gpu/drm/ci/i915_glk_results.txt b/drivers/gpu/drm/ci/i915_glk_results.txt
new file mode 100644
index 000000000000..cb5b1ad47183
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915_glk_results.txt
@@ -0,0 +1,13 @@
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_hdmi_inject@inject-4k,skip
+igt@kms_rotation_crc@multiplane-rotation,fail
+igt@kms_rotation_crc@multiplane-rotation-cropping-top,fail
+igt@kms_rotation_crc@multiplane-rotation-cropping-bottom,fail
+igt@kms_setmode@basic@pipe-b-edp-1,fail
diff --git a/drivers/gpu/drm/ci/i915_kbl_results.txt b/drivers/gpu/drm/ci/i915_kbl_results.txt
new file mode 100644
index 000000000000..2937755a9901
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915_kbl_results.txt
@@ -0,0 +1,9 @@
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_sysfs_edid_timing,fail
diff --git a/drivers/gpu/drm/ci/i915_tgl_results.txt b/drivers/gpu/drm/ci/i915_tgl_results.txt
new file mode 100644
index 000000000000..e8b70ddd96c7
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915_tgl_results.txt
@@ -0,0 +1,12 @@
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_rotation_crc@bad-pixel-format,fail
+igt@kms_rotation_crc@multiplane-rotation,fail
+igt@kms_rotation_crc@multiplane-rotation-cropping-top,fail
+igt@kms_rotation_crc@multiplane-rotation-cropping-bottom,fail
diff --git a/drivers/gpu/drm/ci/i915_whl_results.txt b/drivers/gpu/drm/ci/i915_whl_results.txt
new file mode 100644
index 000000000000..2937755a9901
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915_whl_results.txt
@@ -0,0 +1,9 @@
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_sysfs_edid_timing,fail
diff --git a/drivers/gpu/drm/ci/mediatek.testlist b/drivers/gpu/drm/ci/mediatek.testlist
new file mode 100644
index 000000000000..dd1ad1801b0b
--- /dev/null
+++ b/drivers/gpu/drm/ci/mediatek.testlist
@@ -0,0 +1,102 @@
+# Keep alphabetically sorted by default
+
+igt@core_auth@getclient-simple
+igt@core_auth@getclient-master-drop
+igt@core_auth@basic-auth
+igt@core_auth@many-magics
+igt@core_getclient
+igt@core_getstats
+igt@core_getversion
+igt@core_setmaster_vs_auth
+igt@drm_read@invalid-buffer
+igt@drm_read@fault-buffer
+igt@drm_read@empty-block
+igt@drm_read@empty-nonblock
+igt@drm_read@short-buffer-block
+igt@drm_read@short-buffer-nonblock
+igt@drm_read@short-buffer-wakeup
+igt@kms_addfb_basic@unused-handle
+igt@kms_addfb_basic@unused-pitches
+igt@kms_addfb_basic@unused-offsets
+igt@kms_addfb_basic@unused-modifier
+igt@kms_addfb_basic@legacy-format
+igt@kms_addfb_basic@no-handle
+igt@kms_addfb_basic@basic
+igt@kms_addfb_basic@bad-pitch-0
+igt@kms_addfb_basic@bad-pitch-32
+igt@kms_addfb_basic@bad-pitch-63
+igt@kms_addfb_basic@bad-pitch-128
+igt@kms_addfb_basic@bad-pitch-256
+igt@kms_addfb_basic@bad-pitch-1024
+igt@kms_addfb_basic@bad-pitch-999
+igt@kms_addfb_basic@bad-pitch-65536
+igt@kms_addfb_basic@size-max
+igt@kms_addfb_basic@too-wide
+igt@kms_addfb_basic@too-high
+igt@kms_addfb_basic@bo-too-small
+igt@kms_addfb_basic@small-bo
+igt@kms_addfb_basic@addfb25-modifier-no-flag
+igt@kms_addfb_basic@addfb25-bad-modifier
+igt@kms_addfb_basic@invalid-get-prop-any
+igt@kms_addfb_basic@invalid-get-prop
+igt@kms_addfb_basic@invalid-set-prop-any
+igt@kms_addfb_basic@invalid-set-prop
+igt@kms_addfb_basic@master-rmfb
+igt@kms_atomic@plane-overlay-legacy
+igt@kms_atomic@plane-primary-legacy
+igt@kms_atomic@test-only
+igt@kms_atomic@plane-cursor-legacy
+igt@kms_atomic@plane-invalid-params
+igt@kms_atomic@crtc-invalid-params
+igt@kms_atomic@atomic-invalid-params
+igt@kms_atomic_interruptible@legacy-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@atomic-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-dpms@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-pageflip@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-cursor@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-primary@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-cursor@pipe-a-edp-1
+igt@kms_content_protection@LIC
+igt@kms_flip_event_leak
+igt@kms_getfb@getfb-handle-zero
+igt@kms_getfb@getfb-handle-valid
+igt@kms_getfb@getfb-handle-closed
+igt@kms_getfb@getfb-handle-not-fb
+igt@kms_getfb@getfb-addfb-different-handles
+igt@kms_getfb@getfb-repeated-different-handles
+igt@kms_getfb@getfb2-handle-zero
+igt@kms_getfb@getfb2-handle-closed
+igt@kms_getfb@getfb2-handle-not-fb
+igt@kms_getfb@getfb2-into-addfb2
+igt@kms_getfb@getfb-handle-protection
+igt@kms_getfb@getfb2-handle-protection
+
+# Flaky on mt8173
+# igt@kms_hdmi_inject@inject-4k
+
+igt@kms_prop_blob@basic
+igt@kms_prop_blob@blob-prop-core
+igt@kms_prop_blob@blob-prop-validate
+igt@kms_prop_blob@blob-prop-lifetime
+igt@kms_prop_blob@blob-multiple
+igt@kms_prop_blob@invalid-get-prop-any
+igt@kms_prop_blob@invalid-get-prop
+igt@kms_prop_blob@invalid-set-prop-any
+igt@kms_prop_blob@invalid-set-prop
+igt@kms_rmfb@rmfb-ioctl
+igt@kms_rmfb@close-fd
+igt@kms_setmode@basic@pipe-a-edp-1
+igt@kms_setmode@basic@pipe-b-edp-1
+igt@kms_sysfs_edid_timing
+igt@kms_vblank@invalid
+igt@kms_vblank@crtc-id
+igt@kms_vblank@pipe-a-query-idle
+igt@kms_vblank@pipe-a-query-forked
+igt@kms_vblank@pipe-a-query-busy
+igt@kms_vblank@pipe-a-query-forked-busy
+igt@kms_vblank@pipe-a-wait-idle
+igt@kms_vblank@pipe-a-wait-forked
+igt@kms_vblank@pipe-a-wait-busy
+igt@kms_vblank@pipe-a-wait-forked-busy
+igt@kms_vblank@pipe-a-ts-continuation-idle
+igt@kms_vblank@pipe-a-ts-continuation-modeset
diff --git a/drivers/gpu/drm/ci/mediatek_mt8173_results.txt b/drivers/gpu/drm/ci/mediatek_mt8173_results.txt
new file mode 100644
index 000000000000..74fd881fdd87
--- /dev/null
+++ b/drivers/gpu/drm/ci/mediatek_mt8173_results.txt
@@ -0,0 +1,11 @@
+igt@kms_addfb_basic@addfb25-bad-modifier,fail
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_rmfb@close-fd,fail
+igt@kms_setmode@basic,skip
diff --git a/drivers/gpu/drm/ci/mediatek_mt8183_results.txt b/drivers/gpu/drm/ci/mediatek_mt8183_results.txt
new file mode 100644
index 000000000000..74fd881fdd87
--- /dev/null
+++ b/drivers/gpu/drm/ci/mediatek_mt8183_results.txt
@@ -0,0 +1,11 @@
+igt@kms_addfb_basic@addfb25-bad-modifier,fail
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_rmfb@close-fd,fail
+igt@kms_setmode@basic,skip
diff --git a/drivers/gpu/drm/ci/mediatek_mt8192_results.txt b/drivers/gpu/drm/ci/mediatek_mt8192_results.txt
new file mode 100644
index 000000000000..74fd881fdd87
--- /dev/null
+++ b/drivers/gpu/drm/ci/mediatek_mt8192_results.txt
@@ -0,0 +1,11 @@
+igt@kms_addfb_basic@addfb25-bad-modifier,fail
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_rmfb@close-fd,fail
+igt@kms_setmode@basic,skip
diff --git a/drivers/gpu/drm/ci/meson.testlist b/drivers/gpu/drm/ci/meson.testlist
new file mode 100644
index 000000000000..23744b3a2fb0
--- /dev/null
+++ b/drivers/gpu/drm/ci/meson.testlist
@@ -0,0 +1,71 @@
+# Keep alphabetically sorted by default
+
+igt@core_auth@getclient-simple
+igt@core_auth@getclient-master-drop
+igt@core_auth@basic-auth
+igt@core_auth@many-magics
+igt@core_getclient
+igt@core_getstats
+igt@core_getversion
+igt@core_setmaster_vs_auth
+igt@drm_read@invalid-buffer
+igt@kms_addfb_basic@unused-handle
+igt@kms_addfb_basic@unused-pitches
+igt@kms_addfb_basic@unused-offsets
+igt@kms_addfb_basic@unused-modifier
+igt@kms_addfb_basic@legacy-format
+igt@kms_addfb_basic@no-handle
+igt@kms_addfb_basic@basic
+igt@kms_addfb_basic@bad-pitch-0
+igt@kms_addfb_basic@bad-pitch-32
+igt@kms_addfb_basic@bad-pitch-63
+igt@kms_addfb_basic@bad-pitch-128
+igt@kms_addfb_basic@bad-pitch-256
+igt@kms_addfb_basic@bad-pitch-1024
+igt@kms_addfb_basic@bad-pitch-999
+igt@kms_addfb_basic@bad-pitch-65536
+igt@kms_addfb_basic@size-max
+igt@kms_addfb_basic@too-wide
+igt@kms_addfb_basic@too-high
+igt@kms_addfb_basic@bo-too-small
+igt@kms_addfb_basic@small-bo
+igt@kms_addfb_basic@addfb25-modifier-no-flag
+igt@kms_addfb_basic@addfb25-bad-modifier
+igt@kms_addfb_basic@invalid-get-prop-any
+igt@kms_addfb_basic@invalid-get-prop
+igt@kms_addfb_basic@invalid-set-prop-any
+igt@kms_addfb_basic@invalid-set-prop
+igt@kms_addfb_basic@master-rmfb
+igt@kms_atomic_interruptible@legacy-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@atomic-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-dpms@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-pageflip@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-cursor@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-primary@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-cursor@pipe-a-edp-1
+igt@kms_content_protection@LIC
+igt@kms_getfb@getfb-handle-zero
+igt@kms_getfb@getfb-handle-valid
+igt@kms_getfb@getfb-handle-closed
+igt@kms_getfb@getfb-handle-not-fb
+igt@kms_getfb@getfb-addfb-different-handles
+igt@kms_getfb@getfb-repeated-different-handles
+igt@kms_getfb@getfb2-handle-zero
+igt@kms_getfb@getfb2-handle-closed
+igt@kms_getfb@getfb2-handle-not-fb
+igt@kms_getfb@getfb2-into-addfb2
+igt@kms_getfb@getfb-handle-protection
+igt@kms_getfb@getfb2-handle-protection
+igt@kms_hdmi_inject@inject-4k
+igt@kms_prop_blob@basic
+igt@kms_prop_blob@blob-prop-core
+igt@kms_prop_blob@blob-prop-validate
+igt@kms_prop_blob@blob-prop-lifetime
+igt@kms_prop_blob@blob-multiple
+igt@kms_prop_blob@invalid-get-prop-any
+igt@kms_prop_blob@invalid-get-prop
+igt@kms_prop_blob@invalid-set-prop-any
+igt@kms_prop_blob@invalid-set-prop
+igt@kms_setmode@basic@pipe-a-edp-1
+igt@kms_setmode@basic@pipe-b-edp-1
+igt@kms_sysfs_edid_timing
diff --git a/drivers/gpu/drm/ci/meson_g12b_results.txt b/drivers/gpu/drm/ci/meson_g12b_results.txt
new file mode 100644
index 000000000000..6997a75aa1ef
--- /dev/null
+++ b/drivers/gpu/drm/ci/meson_g12b_results.txt
@@ -0,0 +1,11 @@
+igt@drm_read@invalid-buffer,fail
+igt@kms_addfb_basic@addfb25-bad-modifier,fail
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_setmode@basic,skip
diff --git a/drivers/gpu/drm/ci/msm.testlist b/drivers/gpu/drm/ci/msm.testlist
new file mode 100644
index 000000000000..568051b1dc91
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm.testlist
@@ -0,0 +1,144 @@
+# Keep alphabetically sorted by default
+
+igt@core_auth@getclient-simple
+igt@core_auth@getclient-master-drop
+igt@core_auth@basic-auth
+igt@core_auth@many-magics
+igt@core_getclient
+igt@core_getstats
+igt@core_getversion
+igt@core_setmaster_vs_auth
+igt@drm_read@invalid-buffer
+igt@drm_read@fault-buffer
+igt@drm_read@empty-block
+igt@drm_read@empty-nonblock
+igt@drm_read@short-buffer-block
+igt@drm_read@short-buffer-nonblock
+igt@drm_read@short-buffer-wakeup
+igt@kms_addfb_basic@unused-handle
+igt@kms_addfb_basic@unused-pitches
+igt@kms_addfb_basic@unused-offsets
+igt@kms_addfb_basic@unused-modifier
+igt@kms_addfb_basic@legacy-format
+igt@kms_addfb_basic@no-handle
+igt@kms_addfb_basic@basic
+igt@kms_addfb_basic@bad-pitch-0
+igt@kms_addfb_basic@bad-pitch-32
+igt@kms_addfb_basic@bad-pitch-63
+igt@kms_addfb_basic@bad-pitch-128
+igt@kms_addfb_basic@bad-pitch-256
+igt@kms_addfb_basic@bad-pitch-1024
+igt@kms_addfb_basic@bad-pitch-999
+igt@kms_addfb_basic@bad-pitch-65536
+igt@kms_addfb_basic@size-max
+igt@kms_addfb_basic@too-wide
+igt@kms_addfb_basic@too-high
+igt@kms_addfb_basic@bo-too-small
+igt@kms_addfb_basic@small-bo
+igt@kms_addfb_basic@addfb25-modifier-no-flag
+igt@kms_addfb_basic@addfb25-bad-modifier
+igt@kms_addfb_basic@invalid-get-prop-any
+igt@kms_addfb_basic@invalid-get-prop
+igt@kms_addfb_basic@invalid-set-prop-any
+igt@kms_addfb_basic@invalid-set-prop
+igt@kms_addfb_basic@master-rmfb
+igt@kms_atomic@plane-overlay-legacy
+igt@kms_atomic@plane-primary-legacy
+igt@kms_atomic@plane-primary-overlay-mutable-zpos
+igt@kms_atomic@plane-immutable-zpos
+igt@kms_atomic@test-only
+igt@kms_atomic@plane-cursor-legacy
+igt@kms_atomic@plane-invalid-params
+igt@kms_atomic@crtc-invalid-params
+igt@kms_atomic@atomic-invalid-params
+igt@kms_atomic@atomic_plane_damage
+igt@kms_atomic_interruptible@legacy-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@atomic-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-dpms@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-pageflip@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-cursor@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-primary@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-cursor@pipe-a-edp-1
+igt@kms_content_protection@LIC
+igt@kms_flip_event_leak
+igt@kms_getfb@getfb-handle-zero
+igt@kms_getfb@getfb-handle-valid
+igt@kms_getfb@getfb-handle-closed
+igt@kms_getfb@getfb-handle-not-fb
+igt@kms_getfb@getfb-addfb-different-handles
+igt@kms_getfb@getfb-repeated-different-handles
+igt@kms_getfb@getfb2-handle-zero
+igt@kms_getfb@getfb2-handle-closed
+igt@kms_getfb@getfb2-handle-not-fb
+igt@kms_getfb@getfb2-into-addfb2
+igt@kms_getfb@getfb-handle-protection
+igt@kms_getfb@getfb2-handle-protection
+igt@kms_hdmi_inject@inject-4k
+igt@kms_multipipe_modeset@basic-max-pipe-crc-check
+igt@kms_pipe_crc_basic@bad-source
+igt@kms_pipe_crc_basic@read-crc-pipe-a
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a
+igt@kms_pipe_crc_basic@read-crc-pipe-b
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b
+igt@kms_prop_blob@basic
+igt@kms_prop_blob@blob-prop-core
+igt@kms_prop_blob@blob-prop-validate
+igt@kms_prop_blob@blob-prop-lifetime
+igt@kms_prop_blob@blob-multiple
+igt@kms_prop_blob@invalid-get-prop-any
+igt@kms_prop_blob@invalid-get-prop
+igt@kms_prop_blob@invalid-set-prop-any
+igt@kms_prop_blob@invalid-set-prop
+igt@kms_rmfb@rmfb-ioctl
+igt@kms_rmfb@close-fd
+igt@kms_setmode@basic@pipe-a-edp-1
+igt@kms_setmode@basic@pipe-b-edp-1
+igt@msm_mapping@ring
+igt@msm_mapping@sqefw
+igt@msm_mapping@shadow
+igt@msm_recovery@hangcheck
+igt@msm_recovery@gpu-fault
+igt@msm_recovery@iova-fault
+igt@msm_submit@empty-submit
+igt@msm_submit@invalid-queue-submit
+igt@msm_submit@invalid-flags-submit
+igt@msm_submit@invalid-in-fence-submit
+igt@msm_submit@invalid-duplicate-bo-submit
+igt@msm_submit@invalid-cmd-idx-submit
+igt@msm_submit@invalid-cmd-type-submit
+igt@msm_submit@valid-submit
+igt@kms_sysfs_edid_timing
+igt@kms_universal_plane@universal-plane-pipe-a-functional
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b
+igt@kms_vblank@invalid
+igt@kms_vblank@crtc-id
+igt@kms_vblank@pipe-a-query-idle
+igt@kms_vblank@pipe-a-query-forked
+igt@kms_vblank@pipe-a-query-busy
+igt@kms_vblank@pipe-a-query-forked-busy
+igt@kms_vblank@pipe-a-wait-idle
+igt@kms_vblank@pipe-a-wait-forked
+igt@kms_vblank@pipe-a-wait-busy
+igt@kms_vblank@pipe-a-wait-forked-busy
+igt@kms_vblank@pipe-a-ts-continuation-idle
+igt@kms_vblank@pipe-a-ts-continuation-modeset
+igt@kms_vblank@pipe-b-accuracy-idle
+igt@kms_vblank@pipe-b-query-idle
+igt@kms_vblank@pipe-b-query-forked
+igt@kms_vblank@pipe-b-query-busy
+igt@kms_vblank@pipe-b-query-forked-busy
+igt@kms_vblank@pipe-b-wait-idle
+igt@kms_vblank@pipe-b-wait-forked
+igt@kms_vblank@pipe-b-wait-busy
+igt@kms_vblank@pipe-b-wait-forked-busy
+igt@kms_vblank@pipe-b-ts-continuation-idle
+igt@kms_vblank@pipe-b-ts-continuation-modeset
diff --git a/drivers/gpu/drm/ci/msm_apq8016_results.txt b/drivers/gpu/drm/ci/msm_apq8016_results.txt
new file mode 100644
index 000000000000..b9f664b43220
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm_apq8016_results.txt
@@ -0,0 +1,77 @@
+igt@drm_read@invalid-buffer,skip
+igt@drm_read@fault-buffer,skip
+igt@drm_read@empty-block,skip
+igt@drm_read@empty-nonblock,skip
+igt@drm_read@short-buffer-block,skip
+igt@drm_read@short-buffer-nonblock,skip
+igt@drm_read@short-buffer-wakeup,skip
+igt@kms_addfb_basic@addfb25-bad-modifier,fail
+igt@kms_atomic@plane-overlay-legacy,skip
+igt@kms_atomic@plane-primary-legacy,skip
+igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
+igt@kms_atomic@plane-immutable-zpos,skip
+igt@kms_atomic@test-only,skip
+igt@kms_atomic@plane-cursor-legacy,skip
+igt@kms_atomic@plane-invalid-params,skip
+igt@kms_atomic@crtc-invalid-params,skip
+igt@kms_atomic@atomic-invalid-params,skip
+igt@kms_atomic@atomic_plane_damage,skip
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_flip_event_leak,skip
+igt@kms_hdmi_inject@inject-4k,fail
+igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
+igt@kms_pipe_crc_basic@bad-source,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
+igt@kms_rmfb@rmfb-ioctl,skip
+igt@kms_rmfb@close-fd,skip
+igt@kms_setmode@basic,skip
+igt@msm_mapping@ring,fail
+igt@msm_mapping@sqefw,skip
+igt@msm_mapping@shadow,skip
+igt@msm_recovery@hangcheck,skip
+igt@msm_recovery@gpu-fault,skip
+igt@msm_recovery@iova-fault,skip
+igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
+igt@kms_vblank@invalid,skip
+igt@kms_vblank@crtc-id,skip
+igt@kms_vblank@pipe-a-query-idle,skip
+igt@kms_vblank@pipe-a-query-forked,skip
+igt@kms_vblank@pipe-a-query-busy,skip
+igt@kms_vblank@pipe-a-query-forked-busy,skip
+igt@kms_vblank@pipe-a-wait-idle,skip
+igt@kms_vblank@pipe-a-wait-forked,skip
+igt@kms_vblank@pipe-a-wait-busy,skip
+igt@kms_vblank@pipe-a-wait-forked-busy,skip
+igt@kms_vblank@pipe-a-ts-continuation-idle,skip
+igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-b-accuracy-idle,skip
+igt@kms_vblank@pipe-b-query-idle,skip
+igt@kms_vblank@pipe-b-query-forked,skip
+igt@kms_vblank@pipe-b-query-busy,skip
+igt@kms_vblank@pipe-b-query-forked-busy,skip
+igt@kms_vblank@pipe-b-wait-idle,skip
+igt@kms_vblank@pipe-b-wait-forked,skip
+igt@kms_vblank@pipe-b-wait-busy,skip
+igt@kms_vblank@pipe-b-wait-forked-busy,skip
+igt@kms_vblank@pipe-b-ts-continuation-idle,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
diff --git a/drivers/gpu/drm/ci/msm_apq8096_results.txt b/drivers/gpu/drm/ci/msm_apq8096_results.txt
new file mode 100644
index 000000000000..c3896d752bb8
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm_apq8096_results.txt
@@ -0,0 +1,76 @@
+igt@drm_read@invalid-buffer,skip
+igt@drm_read@fault-buffer,skip
+igt@drm_read@empty-block,skip
+igt@drm_read@empty-nonblock,skip
+igt@drm_read@short-buffer-block,skip
+igt@drm_read@short-buffer-nonblock,skip
+igt@drm_read@short-buffer-wakeup,skip
+igt@kms_addfb_basic@addfb25-bad-modifier,fail
+igt@kms_atomic@plane-overlay-legacy,skip
+igt@kms_atomic@plane-primary-legacy,skip
+igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
+igt@kms_atomic@plane-immutable-zpos,skip
+igt@kms_atomic@test-only,skip
+igt@kms_atomic@plane-cursor-legacy,skip
+igt@kms_atomic@plane-invalid-params,skip
+igt@kms_atomic@crtc-invalid-params,skip
+igt@kms_atomic@atomic-invalid-params,skip
+igt@kms_atomic@atomic_plane_damage,skip
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_flip_event_leak,skip
+igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
+igt@kms_pipe_crc_basic@bad-source,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
+igt@kms_rmfb@rmfb-ioctl,skip
+igt@kms_rmfb@close-fd,skip
+igt@kms_setmode@basic,skip
+igt@msm_mapping@ring,fail
+igt@msm_mapping@sqefw,skip
+igt@msm_mapping@shadow,skip
+igt@msm_recovery@hangcheck,skip
+igt@msm_recovery@gpu-fault,skip
+igt@msm_recovery@iova-fault,skip
+igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
+igt@kms_vblank@invalid,skip
+igt@kms_vblank@crtc-id,skip
+igt@kms_vblank@pipe-a-query-idle,skip
+igt@kms_vblank@pipe-a-query-forked,skip
+igt@kms_vblank@pipe-a-query-busy,skip
+igt@kms_vblank@pipe-a-query-forked-busy,skip
+igt@kms_vblank@pipe-a-wait-idle,skip
+igt@kms_vblank@pipe-a-wait-forked,skip
+igt@kms_vblank@pipe-a-wait-busy,skip
+igt@kms_vblank@pipe-a-wait-forked-busy,skip
+igt@kms_vblank@pipe-a-ts-continuation-idle,skip
+igt@kms_vblank@pipe-a-ts-continuation-modeset,skip
+igt@kms_vblank@pipe-b-accuracy-idle,skip
+igt@kms_vblank@pipe-b-query-idle,skip
+igt@kms_vblank@pipe-b-query-forked,skip
+igt@kms_vblank@pipe-b-query-busy,skip
+igt@kms_vblank@pipe-b-query-forked-busy,skip
+igt@kms_vblank@pipe-b-wait-idle,skip
+igt@kms_vblank@pipe-b-wait-forked,skip
+igt@kms_vblank@pipe-b-wait-busy,skip
+igt@kms_vblank@pipe-b-wait-forked-busy,skip
+igt@kms_vblank@pipe-b-ts-continuation-idle,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
diff --git a/drivers/gpu/drm/ci/msm_sc7180_results.txt b/drivers/gpu/drm/ci/msm_sc7180_results.txt
new file mode 100644
index 000000000000..ca801d6ad2e7
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm_sc7180_results.txt
@@ -0,0 +1,18 @@
+igt@kms_atomic@plane-overlay-legacy,skip
+igt@kms_atomic@plane-primary-overlay-mutable-zpos,skip
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_hdmi_inject@inject-4k,skip
+igt@kms_multipipe_modeset@basic-max-pipe-crc-check,skip
+igt@kms_rmfb@close-fd,fail
+igt@msm_mapping@ring,fail
+igt@msm_mapping@sqefw,fail
+igt@msm_mapping@shadow,fail
+igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,fail
diff --git a/drivers/gpu/drm/ci/msm_sdm845_results.txt b/drivers/gpu/drm/ci/msm_sdm845_results.txt
new file mode 100644
index 000000000000..eaf5fe125fbd
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm_sdm845_results.txt
@@ -0,0 +1,33 @@
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_hdmi_inject@inject-4k,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b,skip
+igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence,skip
+igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b,skip
+igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b,skip
+igt@kms_rmfb@close-fd,fail
+igt@kms_setmode@basic,skip
+igt@msm_mapping@ring,fail
+igt@msm_mapping@sqefw,fail
+igt@msm_mapping@shadow,fail
+igt@kms_universal_plane@universal-plane-pipe-a-functional,fail
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b,skip
+igt@kms_vblank@pipe-b-accuracy-idle,skip
+igt@kms_vblank@pipe-b-query-idle,skip
+igt@kms_vblank@pipe-b-query-forked,skip
+igt@kms_vblank@pipe-b-query-busy,skip
+igt@kms_vblank@pipe-b-query-forked-busy,skip
+igt@kms_vblank@pipe-b-wait-idle,skip
+igt@kms_vblank@pipe-b-wait-forked,skip
+igt@kms_vblank@pipe-b-wait-busy,skip
+igt@kms_vblank@pipe-b-wait-forked-busy,skip
+igt@kms_vblank@pipe-b-ts-continuation-idle,skip
+igt@kms_vblank@pipe-b-ts-continuation-modeset,skip
diff --git a/drivers/gpu/drm/ci/rockchip.testlist b/drivers/gpu/drm/ci/rockchip.testlist
new file mode 100644
index 000000000000..c261e0677200
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip.testlist
@@ -0,0 +1,188 @@
+# Keep alphabetically sorted by default
+
+igt@core_auth@getclient-simple
+igt@core_auth@getclient-master-drop
+igt@core_auth@basic-auth
+igt@core_auth@many-magics
+igt@core_getclient
+igt@core_getstats
+igt@core_getversion
+igt@core_setmaster_vs_auth
+igt@drm_read@invalid-buffer
+igt@drm_read@fault-buffer
+igt@drm_read@empty-block
+igt@drm_read@empty-nonblock
+igt@drm_read@short-buffer-block
+igt@drm_read@short-buffer-nonblock
+igt@drm_read@short-buffer-wakeup
+igt@kms_addfb_basic@unused-handle
+igt@kms_addfb_basic@unused-pitches
+igt@kms_addfb_basic@unused-offsets
+igt@kms_addfb_basic@unused-modifier
+igt@kms_addfb_basic@legacy-format
+igt@kms_addfb_basic@no-handle
+igt@kms_addfb_basic@basic
+igt@kms_addfb_basic@bad-pitch-0
+igt@kms_addfb_basic@bad-pitch-32
+igt@kms_addfb_basic@bad-pitch-63
+igt@kms_addfb_basic@bad-pitch-128
+igt@kms_addfb_basic@bad-pitch-256
+igt@kms_addfb_basic@bad-pitch-1024
+igt@kms_addfb_basic@bad-pitch-999
+igt@kms_addfb_basic@bad-pitch-65536
+igt@kms_addfb_basic@size-max
+igt@kms_addfb_basic@too-wide
+igt@kms_addfb_basic@too-high
+igt@kms_addfb_basic@bo-too-small
+igt@kms_addfb_basic@small-bo
+igt@kms_addfb_basic@addfb25-modifier-no-flag
+igt@kms_addfb_basic@addfb25-bad-modifier
+igt@kms_addfb_basic@invalid-get-prop-any
+igt@kms_addfb_basic@invalid-get-prop
+igt@kms_addfb_basic@invalid-set-prop-any
+igt@kms_addfb_basic@invalid-set-prop
+igt@kms_addfb_basic@master-rmfb
+igt@kms_atomic@plane-overlay-legacy
+
+# Occasional dmesg-warn on rk3288
+# rockchip-dp ff970000.dp: AUX CH cmd reply timeout!
+# igt@kms_atomic@plane-primary-legacy
+
+
+# Machine hangs on rk3399
+# igt@kms_atomic@plane-immutable-zpos
+
+igt@kms_atomic@test-only
+igt@kms_atomic@plane-cursor-legacy
+igt@kms_atomic@plane-invalid-params
+igt@kms_atomic@crtc-invalid-params
+igt@kms_atomic@atomic-invalid-params
+igt@kms_atomic_interruptible@legacy-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@atomic-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-dpms@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-pageflip@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-cursor@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-primary@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-cursor@pipe-a-edp-1
+igt@kms_content_protection@LIC
+igt@kms_flip_event_leak
+igt@kms_getfb@getfb-handle-zero
+igt@kms_getfb@getfb-handle-valid
+igt@kms_getfb@getfb-handle-closed
+igt@kms_getfb@getfb-handle-not-fb
+igt@kms_getfb@getfb-addfb-different-handles
+igt@kms_getfb@getfb-repeated-different-handles
+igt@kms_getfb@getfb2-handle-zero
+igt@kms_getfb@getfb2-handle-closed
+igt@kms_getfb@getfb2-handle-not-fb
+igt@kms_getfb@getfb2-into-addfb2
+igt@kms_getfb@getfb-handle-protection
+igt@kms_getfb@getfb2-handle-protection
+igt@kms_hdmi_inject@inject-4k
+igt@kms_pipe_crc_basic@bad-source
+
+# Machine hangs on rk3399
+# igt@kms_pipe_crc_basic@read-crc-pipe-a
+# igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence
+# igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a
+# igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence
+# igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-a
+# igt@kms_pipe_crc_basic@hang-read-crc-pipe-a
+# igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-a
+# igt@kms_pipe_crc_basic@read-crc-pipe-b
+# igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence
+# igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b
+# igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence
+# igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-b
+# igt@kms_pipe_crc_basic@hang-read-crc-pipe-b
+# igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b
+# igt@kms_pipe_crc_basic@read-crc-pipe-c
+# igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence
+# igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c
+# igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c-frame-sequence
+# igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-c
+# igt@kms_pipe_crc_basic@hang-read-crc-pipe-c
+# igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c
+# igt@kms_pipe_crc_basic@read-crc-pipe-d
+# igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence
+# igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d
+# igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d-frame-sequence
+# igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d
+# igt@kms_pipe_crc_basic@hang-read-crc-pipe-d
+# igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d
+# igt@kms_pipe_crc_basic@read-crc-pipe-e
+# igt@kms_pipe_crc_basic@read-crc-pipe-e-frame-sequence
+# igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e
+# igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e-frame-sequence
+# igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-e
+# igt@kms_pipe_crc_basic@hang-read-crc-pipe-e
+# igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-e
+# igt@kms_pipe_crc_basic@read-crc-pipe-f
+# igt@kms_pipe_crc_basic@read-crc-pipe-f-frame-sequence
+# igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f
+# igt@kms_pipe_crc_basic@nonblocking-crc-pipe-f-frame-sequence
+# igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-f
+# igt@kms_pipe_crc_basic@hang-read-crc-pipe-f
+# igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-f
+
+igt@kms_prop_blob@basic
+igt@kms_prop_blob@blob-prop-core
+igt@kms_prop_blob@blob-prop-validate
+igt@kms_prop_blob@blob-prop-lifetime
+igt@kms_prop_blob@blob-multiple
+igt@kms_prop_blob@invalid-get-prop-any
+igt@kms_prop_blob@invalid-get-prop
+igt@kms_prop_blob@invalid-set-prop-any
+igt@kms_prop_blob@invalid-set-prop
+igt@kms_rmfb@rmfb-ioctl
+igt@kms_rmfb@close-fd
+
+# Machine hangs on rk3399
+# igt@kms_rotation_crc@primary-x-tiled-reflect-x-0
+# igt@kms_rotation_crc@primary-y-tiled-reflect-x-0
+# igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0
+# igt@kms_rotation_crc@primary-4-tiled-reflect-x-0
+# igt@kms_rotation_crc@primary-4-tiled-reflect-x-180
+
+
+# Flaky on rk3399
+# igt@kms_setmode@basic@pipe-a-edp-1
+# igt@kms_setmode@basic@pipe-b-edp-1
+
+igt@kms_sysfs_edid_timing
+igt@kms_universal_plane@universal-plane-pipe-a-functional
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-a
+
+# Machine hangs on rk3399 after a load of the following:
+# rockchip-dp ff970000.edp: CR Max reached (5,0,0)
+# rockchip-dp ff970000.edp: LT CR failed!
+# rockchip-dp ff970000.edp: eDP link training failed (-5)
+# rockchip-dp ff970000.edp: unable to do link train, ret=-5
+# [drm:analogix_dp_bridge_atomic_enable] *ERROR* dp commit error, ret = -5
+#
+# igt@kms_universal_plane@universal-plane-pipe-b-functional
+
+igt@kms_universal_plane@disable-primary-vs-flip-pipe-b
+igt@kms_vblank@invalid
+igt@kms_vblank@crtc-id
+igt@kms_vblank@pipe-a-query-idle
+igt@kms_vblank@pipe-a-query-forked
+igt@kms_vblank@pipe-a-query-busy
+igt@kms_vblank@pipe-a-query-forked-busy
+igt@kms_vblank@pipe-a-wait-idle
+igt@kms_vblank@pipe-a-wait-forked
+igt@kms_vblank@pipe-a-wait-busy
+igt@kms_vblank@pipe-a-wait-forked-busy
+igt@kms_vblank@pipe-a-ts-continuation-idle
+igt@kms_vblank@pipe-a-ts-continuation-modeset
+igt@kms_vblank@pipe-b-accuracy-idle
+igt@kms_vblank@pipe-b-query-idle
+igt@kms_vblank@pipe-b-query-forked
+igt@kms_vblank@pipe-b-query-busy
+igt@kms_vblank@pipe-b-query-forked-busy
+igt@kms_vblank@pipe-b-wait-idle
+igt@kms_vblank@pipe-b-wait-forked
+igt@kms_vblank@pipe-b-wait-busy
+igt@kms_vblank@pipe-b-wait-forked-busy
+igt@kms_vblank@pipe-b-ts-continuation-idle
+igt@kms_vblank@pipe-b-ts-continuation-modeset
diff --git a/drivers/gpu/drm/ci/rockchip_rk3288_results.txt b/drivers/gpu/drm/ci/rockchip_rk3288_results.txt
new file mode 100644
index 000000000000..c6bec0324414
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip_rk3288_results.txt
@@ -0,0 +1,11 @@
+igt@kms_addfb_basic@addfb25-bad-modifier,fail
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_hdmi_inject@inject-4k,fail
+igt@kms_rmfb@close-fd,fail
diff --git a/drivers/gpu/drm/ci/rockchip_rk3399_results.txt b/drivers/gpu/drm/ci/rockchip_rk3399_results.txt
new file mode 100644
index 000000000000..c6d9208c2754
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip_rk3399_results.txt
@@ -0,0 +1,14 @@
+igt@drm_read@short-buffer-wakeup,fail
+igt@kms_addfb_basic@addfb25-bad-modifier,fail
+igt@kms_atomic@plane-overlay-legacy,skip
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_hdmi_inject@inject-4k,skip
+igt@kms_rmfb@close-fd,fail
+igt@kms_universal_plane@universal-plane-pipe-a-functional,skip
diff --git a/drivers/gpu/drm/ci/virtio_gpu.testlist b/drivers/gpu/drm/ci/virtio_gpu.testlist
new file mode 100644
index 000000000000..d0df58d23dae
--- /dev/null
+++ b/drivers/gpu/drm/ci/virtio_gpu.testlist
@@ -0,0 +1,92 @@
+# Keep alphabetically sorted by default
+
+igt@core_auth@getclient-simple
+igt@core_auth@getclient-master-drop
+igt@core_auth@basic-auth
+igt@core_auth@many-magics
+igt@core_getclient
+igt@core_getstats
+igt@core_getversion
+igt@core_setmaster_vs_auth
+igt@kms_addfb_basic@unused-handle
+igt@kms_addfb_basic@unused-pitches
+igt@kms_addfb_basic@unused-offsets
+igt@kms_addfb_basic@unused-modifier
+igt@kms_addfb_basic@legacy-format
+igt@kms_addfb_basic@no-handle
+igt@kms_addfb_basic@basic
+igt@kms_addfb_basic@bad-pitch-0
+igt@kms_addfb_basic@bad-pitch-32
+igt@kms_addfb_basic@bad-pitch-63
+igt@kms_addfb_basic@bad-pitch-128
+igt@kms_addfb_basic@bad-pitch-256
+igt@kms_addfb_basic@bad-pitch-1024
+igt@kms_addfb_basic@bad-pitch-999
+igt@kms_addfb_basic@bad-pitch-65536
+igt@kms_addfb_basic@size-max
+igt@kms_addfb_basic@too-wide
+igt@kms_addfb_basic@too-high
+igt@kms_addfb_basic@bo-too-small
+igt@kms_addfb_basic@small-bo
+igt@kms_addfb_basic@addfb25-modifier-no-flag
+igt@kms_addfb_basic@addfb25-bad-modifier
+igt@kms_addfb_basic@invalid-get-prop-any
+igt@kms_addfb_basic@invalid-get-prop
+igt@kms_addfb_basic@invalid-set-prop-any
+igt@kms_addfb_basic@invalid-set-prop
+igt@kms_addfb_basic@master-rmfb
+igt@kms_atomic@plane-primary-legacy
+igt@kms_atomic@test-only
+igt@kms_atomic@plane-cursor-legacy
+igt@kms_atomic@plane-invalid-params
+igt@kms_atomic@crtc-invalid-params
+igt@kms_atomic@atomic-invalid-params
+igt@kms_atomic_interruptible@legacy-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@atomic-setmode@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-dpms@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-pageflip@pipe-a-edp-1
+igt@kms_atomic_interruptible@legacy-cursor@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-primary@pipe-a-edp-1
+igt@kms_atomic_interruptible@universal-setplane-cursor@pipe-a-edp-1
+igt@kms_content_protection@LIC
+igt@kms_flip_event_leak
+igt@kms_getfb@getfb-handle-zero
+igt@kms_getfb@getfb-handle-valid
+igt@kms_getfb@getfb-handle-closed
+igt@kms_getfb@getfb-handle-not-fb
+igt@kms_getfb@getfb-addfb-different-handles
+igt@kms_getfb@getfb-repeated-different-handles
+igt@kms_getfb@getfb2-handle-zero
+igt@kms_getfb@getfb2-handle-closed
+igt@kms_getfb@getfb2-handle-not-fb
+igt@kms_getfb@getfb2-into-addfb2
+igt@kms_getfb@getfb-handle-protection
+igt@kms_getfb@getfb2-handle-protection
+igt@kms_prop_blob@basic
+igt@kms_prop_blob@blob-prop-core
+igt@kms_prop_blob@blob-prop-validate
+igt@kms_prop_blob@blob-prop-lifetime
+igt@kms_prop_blob@blob-multiple
+igt@kms_prop_blob@invalid-get-prop-any
+igt@kms_prop_blob@invalid-get-prop
+igt@kms_prop_blob@invalid-set-prop-any
+igt@kms_prop_blob@invalid-set-prop
+igt@kms_rmfb@rmfb-ioctl
+igt@kms_rmfb@close-fd
+igt@kms_setmode@basic@pipe-a-edp-1
+igt@kms_setmode@basic@pipe-b-edp-1
+igt@kms_sysfs_edid_timing
+igt@kms_vblank@invalid
+igt@kms_vblank@crtc-id
+igt@kms_vblank@pipe-a-query-idle
+igt@kms_vblank@pipe-a-query-forked
+igt@kms_vblank@pipe-a-query-busy
+igt@kms_vblank@pipe-a-query-forked-busy
+igt@kms_vblank@pipe-a-wait-idle
+igt@kms_vblank@pipe-a-wait-forked
+igt@kms_vblank@pipe-a-wait-busy
+igt@kms_vblank@pipe-a-wait-forked-busy
+igt@kms_vblank@pipe-a-ts-continuation-idle
+igt@kms_vblank@pipe-a-ts-continuation-dpms-rpm
+igt@kms_vblank@pipe-a-ts-continuation-modeset
+igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm
diff --git a/drivers/gpu/drm/ci/virtio_gpu_results.txt b/drivers/gpu/drm/ci/virtio_gpu_results.txt
new file mode 100644
index 000000000000..1453f49880dd
--- /dev/null
+++ b/drivers/gpu/drm/ci/virtio_gpu_results.txt
@@ -0,0 +1,28 @@
+igt@kms_addfb_basic@bad-pitch-65536,fail
+igt@kms_addfb_basic@size-max,fail
+igt@kms_addfb_basic@too-high,fail
+igt@kms_addfb_basic@bo-too-small,fail
+igt@kms_addfb_basic@addfb25-bad-modifier,fail
+igt@kms_atomic_interruptible@legacy-setmode,skip
+igt@kms_atomic_interruptible@atomic-setmode,skip
+igt@kms_atomic_interruptible@legacy-dpms,skip
+igt@kms_atomic_interruptible@legacy-pageflip,skip
+igt@kms_atomic_interruptible@legacy-cursor,skip
+igt@kms_atomic_interruptible@universal-setplane-primary,skip
+igt@kms_atomic_interruptible@universal-setplane-cursor,skip
+igt@kms_content_protection@lic,skip
+igt@kms_setmode@basic,skip
+igt@kms_vblank@invalid,fail
+igt@kms_vblank@crtc-id,fail
+igt@kms_vblank@pipe-a-query-idle,fail
+igt@kms_vblank@pipe-a-query-forked,fail
+igt@kms_vblank@pipe-a-query-busy,fail
+igt@kms_vblank@pipe-a-query-forked-busy,fail
+igt@kms_vblank@pipe-a-wait-idle,fail
+igt@kms_vblank@pipe-a-wait-forked,fail
+igt@kms_vblank@pipe-a-wait-busy,fail
+igt@kms_vblank@pipe-a-wait-forked-busy,fail
+igt@kms_vblank@pipe-a-ts-continuation-idle,fail
+igt@kms_vblank@pipe-a-ts-continuation-dpms-rpm,fail
+igt@kms_vblank@pipe-a-ts-continuation-modeset,fail
+igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm,fail
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 49+ messages in thread

* Re: [RFC v4] drm: Add initial ci/ subdirectory
  2022-05-17  8:16     ` [RFC v4] drm: " Tomeu Vizoso
@ 2022-05-17  9:18       ` Neil Armstrong
  2022-05-17  9:24         ` Tomeu Vizoso
  2022-07-26 18:16       ` [PATCH v5] " Tomeu Vizoso
  1 sibling, 1 reply; 49+ messages in thread
From: Neil Armstrong @ 2022-05-17  9:18 UTC (permalink / raw)
  To: Tomeu Vizoso, David Airlie, Jonathan Corbet, Carlo Caione,
	Kevin Hilman, Heiko Stuebner, Matthias Brugger
  Cc: linux-doc, linux-kernel, dri-devel, linux-rockchip,
	linux-mediatek, linux-amlogic, linux-arm-kernel

On 17/05/2022 10:16, Tomeu Vizoso wrote:
> And use it to store expectations about what the DRM drivers are
> supposed to pass in the IGT test suite.
> 
> Also include a configuration file that points to the out-of-tree CI
> scripts.
> 
> By storing the test expectations along the code we can make sure both
> stay in sync with each other, and so we can know when a code change
> breaks those expectations.
> 
> This will allow all contributors to drm to reuse the infrastructure
> already in gitlab.freedesktop.org to test the driver on several
> generations of the hardware.
> 
> v2:
>    - Fix names of result expectation files to match SoC
>    - Don't execute tests that are going to skip on all boards
> 
> v3:
>    - Remove tracking of dmesg output during test execution
> 
> v4:
>    - Move up to drivers/gpu/drm
>    - Add support for a bunch of other drivers
>    - Explain how to incorporate fixes for CI from a
>      ${TARGET_BRANCH}-external-fixes branch
>    - Remove tests that pass from expected results file, to reduce the
>      size of in-tree files
>    - Add docs about how to deal with outages in automated testing labs
>    - Specify the exact SHA of the CI scripts to be used
> 
> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> ---
>   Documentation/gpu/automated_testing.rst       |  84 +++++++
>   drivers/gpu/drm/ci/amdgpu.testlist            | 130 +++++++++++
>   drivers/gpu/drm/ci/amdgpu_stoney_results.txt  |  17 ++
>   drivers/gpu/drm/ci/gitlab-ci.yml              |  13 ++
>   drivers/gpu/drm/ci/i915.testlist              | 219 ++++++++++++++++++
>   drivers/gpu/drm/ci/i915_amly_results.txt      |   9 +
>   drivers/gpu/drm/ci/i915_apl_results.txt       |   9 +
>   drivers/gpu/drm/ci/i915_cml_results.txt       |  10 +
>   drivers/gpu/drm/ci/i915_glk_results.txt       |  13 ++
>   drivers/gpu/drm/ci/i915_kbl_results.txt       |   9 +
>   drivers/gpu/drm/ci/i915_tgl_results.txt       |  12 +
>   drivers/gpu/drm/ci/i915_whl_results.txt       |   9 +
>   drivers/gpu/drm/ci/mediatek.testlist          | 102 ++++++++
>   .../gpu/drm/ci/mediatek_mt8173_results.txt    |  11 +
>   .../gpu/drm/ci/mediatek_mt8183_results.txt    |  11 +
>   .../gpu/drm/ci/mediatek_mt8192_results.txt    |  11 +
>   drivers/gpu/drm/ci/meson.testlist             |  71 ++++++
>   drivers/gpu/drm/ci/meson_g12b_results.txt     |  11 +
>   drivers/gpu/drm/ci/msm.testlist               | 144 ++++++++++++
>   drivers/gpu/drm/ci/msm_apq8016_results.txt    |  77 ++++++
>   drivers/gpu/drm/ci/msm_apq8096_results.txt    |  76 ++++++
>   drivers/gpu/drm/ci/msm_sc7180_results.txt     |  18 ++
>   drivers/gpu/drm/ci/msm_sdm845_results.txt     |  33 +++
>   drivers/gpu/drm/ci/rockchip.testlist          | 188 +++++++++++++++
>   .../gpu/drm/ci/rockchip_rk3288_results.txt    |  11 +
>   .../gpu/drm/ci/rockchip_rk3399_results.txt    |  14 ++
>   drivers/gpu/drm/ci/virtio_gpu.testlist        |  92 ++++++++
>   drivers/gpu/drm/ci/virtio_gpu_results.txt     |  28 +++
>   28 files changed, 1432 insertions(+)
>   create mode 100644 Documentation/gpu/automated_testing.rst
>   create mode 100644 drivers/gpu/drm/ci/amdgpu.testlist
>   create mode 100644 drivers/gpu/drm/ci/amdgpu_stoney_results.txt
>   create mode 100644 drivers/gpu/drm/ci/gitlab-ci.yml
>   create mode 100644 drivers/gpu/drm/ci/i915.testlist
>   create mode 100644 drivers/gpu/drm/ci/i915_amly_results.txt
>   create mode 100644 drivers/gpu/drm/ci/i915_apl_results.txt
>   create mode 100644 drivers/gpu/drm/ci/i915_cml_results.txt
>   create mode 100644 drivers/gpu/drm/ci/i915_glk_results.txt
>   create mode 100644 drivers/gpu/drm/ci/i915_kbl_results.txt
>   create mode 100644 drivers/gpu/drm/ci/i915_tgl_results.txt
>   create mode 100644 drivers/gpu/drm/ci/i915_whl_results.txt
>   create mode 100644 drivers/gpu/drm/ci/mediatek.testlist
>   create mode 100644 drivers/gpu/drm/ci/mediatek_mt8173_results.txt
>   create mode 100644 drivers/gpu/drm/ci/mediatek_mt8183_results.txt
>   create mode 100644 drivers/gpu/drm/ci/mediatek_mt8192_results.txt
>   create mode 100644 drivers/gpu/drm/ci/meson.testlist
>   create mode 100644 drivers/gpu/drm/ci/meson_g12b_results.txt
>   create mode 100644 drivers/gpu/drm/ci/msm.testlist
>   create mode 100644 drivers/gpu/drm/ci/msm_apq8016_results.txt
>   create mode 100644 drivers/gpu/drm/ci/msm_apq8096_results.txt
>   create mode 100644 drivers/gpu/drm/ci/msm_sc7180_results.txt
>   create mode 100644 drivers/gpu/drm/ci/msm_sdm845_results.txt
>   create mode 100644 drivers/gpu/drm/ci/rockchip.testlist
>   create mode 100644 drivers/gpu/drm/ci/rockchip_rk3288_results.txt
>   create mode 100644 drivers/gpu/drm/ci/rockchip_rk3399_results.txt
>   create mode 100644 drivers/gpu/drm/ci/virtio_gpu.testlist
>   create mode 100644 drivers/gpu/drm/ci/virtio_gpu_results.txt
> 
> diff --git a/Documentation/gpu/automated_testing.rst b/Documentation/gpu/automated_testing.rst
> new file mode 100644
> index 000000000000..61003ecc7b6e
> --- /dev/null
> +++ b/Documentation/gpu/automated_testing.rst
> @@ -0,0 +1,84 @@
> +.. SPDX-License-Identifier: GPL-2.0+
> +
> +=========================================
> +Automated testing of the DRM subsystem
> +=========================================
> +
> +
> +Introduction
> +============
> +
> +Making sure that changes to the core or drivers don't introduce regressions can be very time consuming when lots of different hardware configurations need to be tested. Moreover, it isn't practical for each person interested in this testing to have to acquire and maintain what can be a considerable amount of hardware.
> +
> +Also, it is desirable for developers to check for regressions in their code by themselves, instead of relying on the maintainers finding them and then reporting back.
> +
> +There are facilities in gitlab.freedesktop.org to automatically test Mesa that can be used as well for testing the DRM subsystem. This document explains how people interested in testing it can use this shared infrastructure to save quite some time and effort.
> +
> +
> +Relevant files
> +==============
> +
> +drivers/gpu/drm/ci/gitlab-ci.yml
> +--------------------------------
> +
> +Specifies the specific version of the scripts to be used. GitLab CI will use the values defined in this file to fetch the right scripts.
> +
> +
> +drivers/gpu/drm/ci/${DRIVER_NAME}.testlist
> +------------------------------------------
> +
> +Specifies the tests that the current code is expected to be able to reliably run for ${DRIVER_NAME}. These tests are expected to not hang the DUT (Device Under Testing) when running on the revision they belong to, and to give consistent results.
> +
> +
> +drivers/gpu/drm/ci/${DRIVER_NAME}_*_results.txt
> +----------------------------------------
> +
> +Specifies the expected results of running this specific kernel revision on a given hardware configuration.
> +
> +
> +How to enable automated testing on your tree
> +============================================
> +
> +1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one yet
> +
> +2. In your kernel repo's configuration (eg. https://gitlab.freedesktop.org/tomeu/linux/-/settings/ci_cd), change the CI/CD configuration file from .gitlab-ci.yml to drivers/gpu/drm/ci/gitlab-ci.yml.
> +
> +3. Next time you push to this repository, you will see a CI pipeline being created (eg. https://gitlab.freedesktop.org/tomeu/linux/-/pipelines)
> +
> +4. The various jobs will be run and when the pipeline is finished, all jobs should be green unless a regression has been found.
> +
> +
> +How to update test expectations
> +===============================
> +
> +If your changes to the code fix any tests, you will have to update one or more of the files in drivers/gpu/drm/ci/${DRIVER_NAME}_*_results.txt, for each of the test platforms affected by the change.
> +
> +If you have run a pipeline and it failed because of a mismatched test result, you will have been offered a patch at the end of the run that you can apply after reviewing it.
> +
> +
> +How to expand coverage
> +======================
> +
> +If your code changes makes it possible to run more tests (by solving reliability issues, for example), more tests can be added to this list, and then the expected results updated with the patch file that will be printed at the end of each job.
> +
> +If there is a need for updating the version of IGT being used (maybe you have added more tests to it), follow the instructions at https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/tree/main#upreving-igt.
> +
> +
> +How to test your changes to the scripts
> +==========================================
> +
> +For testing changes to the scripts in the drm-ci repo, change the DRM_CI_PROJECT_PATH variable in drivers/gpu/drm/ci/gitlab-ci.yml to match your fork of the project (eg. tomeu/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
> +
> +
> +How to incorporate external fixes in your testing
> +=================================================
> +
> +Often, regressions in other trees will prevent testing changes local to the tree under test. These fixes will be automatically merged in during the build jobs from a branch in the target tree that is named as ${TARGET_BRANCH}-external-fixes.
> +
> +If the pipeline is not in a merge request and a branch with the same name exists in the local tree, commits from that branch will be merged in as well.
> +
> +
> +How to deal with automated testing labs that may be down
> +========================================================
> +
> +If a hardware farm is down and thus causing pipelines to fail that would otherwise pass, one can disable all jobs that would be submitted to that farm by editing the file at https://gitlab.freedesktop.org/gfx-ci/lab-status/-/blob/main/lab-status.yml.


[..]

> diff --git a/drivers/gpu/drm/ci/meson.testlist b/drivers/gpu/drm/ci/meson.testlist
> new file mode 100644
> index 000000000000..23744b3a2fb0
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/meson.testlist
> @@ -0,0 +1,71 @@
> +# Keep alphabetically sorted by default
> +
> +igt@core_auth@getclient-simple
> +igt@core_auth@getclient-master-drop
> +igt@core_auth@basic-auth
> +igt@core_auth@many-magics
> +igt@core_getclient
> +igt@core_getstats
> +igt@core_getversion
> +igt@core_setmaster_vs_auth
> +igt@drm_read@invalid-buffer
> +igt@kms_addfb_basic@unused-handle
> +igt@kms_addfb_basic@unused-pitches
> +igt@kms_addfb_basic@unused-offsets
> +igt@kms_addfb_basic@unused-modifier
> +igt@kms_addfb_basic@legacy-format
> +igt@kms_addfb_basic@no-handle
> +igt@kms_addfb_basic@basic
> +igt@kms_addfb_basic@bad-pitch-0
> +igt@kms_addfb_basic@bad-pitch-32
> +igt@kms_addfb_basic@bad-pitch-63
> +igt@kms_addfb_basic@bad-pitch-128
> +igt@kms_addfb_basic@bad-pitch-256
> +igt@kms_addfb_basic@bad-pitch-1024
> +igt@kms_addfb_basic@bad-pitch-999
> +igt@kms_addfb_basic@bad-pitch-65536
> +igt@kms_addfb_basic@size-max
> +igt@kms_addfb_basic@too-wide
> +igt@kms_addfb_basic@too-high
> +igt@kms_addfb_basic@bo-too-small
> +igt@kms_addfb_basic@small-bo
> +igt@kms_addfb_basic@addfb25-modifier-no-flag
> +igt@kms_addfb_basic@addfb25-bad-modifier
> +igt@kms_addfb_basic@invalid-get-prop-any
> +igt@kms_addfb_basic@invalid-get-prop
> +igt@kms_addfb_basic@invalid-set-prop-any
> +igt@kms_addfb_basic@invalid-set-prop
> +igt@kms_addfb_basic@master-rmfb
> +igt@kms_atomic_interruptible@legacy-setmode@pipe-a-edp-1
> +igt@kms_atomic_interruptible@atomic-setmode@pipe-a-edp-1
> +igt@kms_atomic_interruptible@legacy-dpms@pipe-a-edp-1
> +igt@kms_atomic_interruptible@legacy-pageflip@pipe-a-edp-1
> +igt@kms_atomic_interruptible@legacy-cursor@pipe-a-edp-1
> +igt@kms_atomic_interruptible@universal-setplane-primary@pipe-a-edp-1
> +igt@kms_atomic_interruptible@universal-setplane-cursor@pipe-a-edp-1
> +igt@kms_content_protection@LIC
> +igt@kms_getfb@getfb-handle-zero
> +igt@kms_getfb@getfb-handle-valid
> +igt@kms_getfb@getfb-handle-closed
> +igt@kms_getfb@getfb-handle-not-fb
> +igt@kms_getfb@getfb-addfb-different-handles
> +igt@kms_getfb@getfb-repeated-different-handles
> +igt@kms_getfb@getfb2-handle-zero
> +igt@kms_getfb@getfb2-handle-closed
> +igt@kms_getfb@getfb2-handle-not-fb
> +igt@kms_getfb@getfb2-into-addfb2
> +igt@kms_getfb@getfb-handle-protection
> +igt@kms_getfb@getfb2-handle-protection
> +igt@kms_hdmi_inject@inject-4k
> +igt@kms_prop_blob@basic
> +igt@kms_prop_blob@blob-prop-core
> +igt@kms_prop_blob@blob-prop-validate
> +igt@kms_prop_blob@blob-prop-lifetime
> +igt@kms_prop_blob@blob-multiple
> +igt@kms_prop_blob@invalid-get-prop-any
> +igt@kms_prop_blob@invalid-get-prop
> +igt@kms_prop_blob@invalid-set-prop-any
> +igt@kms_prop_blob@invalid-set-prop
> +igt@kms_setmode@basic@pipe-a-edp-1
> +igt@kms_setmode@basic@pipe-b-edp-1
> +igt@kms_sysfs_edid_timing
> diff --git a/drivers/gpu/drm/ci/meson_g12b_results.txt b/drivers/gpu/drm/ci/meson_g12b_results.txt
> new file mode 100644
> index 000000000000..6997a75aa1ef
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/meson_g12b_results.txt
> @@ -0,0 +1,11 @@
> +igt@drm_read@invalid-buffer,fail
> +igt@kms_addfb_basic@addfb25-bad-modifier,fail
> +igt@kms_atomic_interruptible@legacy-setmode,skip
> +igt@kms_atomic_interruptible@atomic-setmode,skip
> +igt@kms_atomic_interruptible@legacy-dpms,skip
> +igt@kms_atomic_interruptible@legacy-pageflip,skip
> +igt@kms_atomic_interruptible@legacy-cursor,skip
> +igt@kms_atomic_interruptible@universal-setplane-primary,skip
> +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
> +igt@kms_content_protection@lic,skip
> +igt@kms_setmode@basic,skip

Can't those be removed from testlist instead ?
I suppose those should not skip, right ?

Anyway, this is great, please take my
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
for stuff related to the meson driver.

Neil

[..]

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [RFC v4] drm: Add initial ci/ subdirectory
  2022-05-17  9:18       ` Neil Armstrong
@ 2022-05-17  9:24         ` Tomeu Vizoso
  0 siblings, 0 replies; 49+ messages in thread
From: Tomeu Vizoso @ 2022-05-17  9:24 UTC (permalink / raw)
  To: Neil Armstrong, David Airlie, Jonathan Corbet, Carlo Caione,
	Kevin Hilman, Heiko Stuebner, Matthias Brugger
  Cc: linux-doc, linux-kernel, dri-devel, linux-rockchip,
	linux-mediatek, linux-amlogic, linux-arm-kernel

On 5/17/22 11:18 AM, Neil Armstrong wrote:
> On 17/05/2022 10:16, Tomeu Vizoso wrote:
>> And use it to store expectations about what the DRM drivers are
>> supposed to pass in the IGT test suite.
>>
>> Also include a configuration file that points to the out-of-tree CI
>> scripts.
>>
>> By storing the test expectations along the code we can make sure both
>> stay in sync with each other, and so we can know when a code change
>> breaks those expectations.
>>
>> This will allow all contributors to drm to reuse the infrastructure
>> already in gitlab.freedesktop.org to test the driver on several
>> generations of the hardware.
>>
>> v2:
>>    - Fix names of result expectation files to match SoC
>>    - Don't execute tests that are going to skip on all boards
>>
>> v3:
>>    - Remove tracking of dmesg output during test execution
>>
>> v4:
>>    - Move up to drivers/gpu/drm
>>    - Add support for a bunch of other drivers
>>    - Explain how to incorporate fixes for CI from a
>>      ${TARGET_BRANCH}-external-fixes branch
>>    - Remove tests that pass from expected results file, to reduce the
>>      size of in-tree files
>>    - Add docs about how to deal with outages in automated testing labs
>>    - Specify the exact SHA of the CI scripts to be used
>>
>> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
>> ---
>>   Documentation/gpu/automated_testing.rst       |  84 +++++++
>>   drivers/gpu/drm/ci/amdgpu.testlist            | 130 +++++++++++
>>   drivers/gpu/drm/ci/amdgpu_stoney_results.txt  |  17 ++
>>   drivers/gpu/drm/ci/gitlab-ci.yml              |  13 ++
>>   drivers/gpu/drm/ci/i915.testlist              | 219 ++++++++++++++++++
>>   drivers/gpu/drm/ci/i915_amly_results.txt      |   9 +
>>   drivers/gpu/drm/ci/i915_apl_results.txt       |   9 +
>>   drivers/gpu/drm/ci/i915_cml_results.txt       |  10 +
>>   drivers/gpu/drm/ci/i915_glk_results.txt       |  13 ++
>>   drivers/gpu/drm/ci/i915_kbl_results.txt       |   9 +
>>   drivers/gpu/drm/ci/i915_tgl_results.txt       |  12 +
>>   drivers/gpu/drm/ci/i915_whl_results.txt       |   9 +
>>   drivers/gpu/drm/ci/mediatek.testlist          | 102 ++++++++
>>   .../gpu/drm/ci/mediatek_mt8173_results.txt    |  11 +
>>   .../gpu/drm/ci/mediatek_mt8183_results.txt    |  11 +
>>   .../gpu/drm/ci/mediatek_mt8192_results.txt    |  11 +
>>   drivers/gpu/drm/ci/meson.testlist             |  71 ++++++
>>   drivers/gpu/drm/ci/meson_g12b_results.txt     |  11 +
>>   drivers/gpu/drm/ci/msm.testlist               | 144 ++++++++++++
>>   drivers/gpu/drm/ci/msm_apq8016_results.txt    |  77 ++++++
>>   drivers/gpu/drm/ci/msm_apq8096_results.txt    |  76 ++++++
>>   drivers/gpu/drm/ci/msm_sc7180_results.txt     |  18 ++
>>   drivers/gpu/drm/ci/msm_sdm845_results.txt     |  33 +++
>>   drivers/gpu/drm/ci/rockchip.testlist          | 188 +++++++++++++++
>>   .../gpu/drm/ci/rockchip_rk3288_results.txt    |  11 +
>>   .../gpu/drm/ci/rockchip_rk3399_results.txt    |  14 ++
>>   drivers/gpu/drm/ci/virtio_gpu.testlist        |  92 ++++++++
>>   drivers/gpu/drm/ci/virtio_gpu_results.txt     |  28 +++
>>   28 files changed, 1432 insertions(+)
>>   create mode 100644 Documentation/gpu/automated_testing.rst
>>   create mode 100644 drivers/gpu/drm/ci/amdgpu.testlist
>>   create mode 100644 drivers/gpu/drm/ci/amdgpu_stoney_results.txt
>>   create mode 100644 drivers/gpu/drm/ci/gitlab-ci.yml
>>   create mode 100644 drivers/gpu/drm/ci/i915.testlist
>>   create mode 100644 drivers/gpu/drm/ci/i915_amly_results.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915_apl_results.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915_cml_results.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915_glk_results.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915_kbl_results.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915_tgl_results.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915_whl_results.txt
>>   create mode 100644 drivers/gpu/drm/ci/mediatek.testlist
>>   create mode 100644 drivers/gpu/drm/ci/mediatek_mt8173_results.txt
>>   create mode 100644 drivers/gpu/drm/ci/mediatek_mt8183_results.txt
>>   create mode 100644 drivers/gpu/drm/ci/mediatek_mt8192_results.txt
>>   create mode 100644 drivers/gpu/drm/ci/meson.testlist
>>   create mode 100644 drivers/gpu/drm/ci/meson_g12b_results.txt
>>   create mode 100644 drivers/gpu/drm/ci/msm.testlist
>>   create mode 100644 drivers/gpu/drm/ci/msm_apq8016_results.txt
>>   create mode 100644 drivers/gpu/drm/ci/msm_apq8096_results.txt
>>   create mode 100644 drivers/gpu/drm/ci/msm_sc7180_results.txt
>>   create mode 100644 drivers/gpu/drm/ci/msm_sdm845_results.txt
>>   create mode 100644 drivers/gpu/drm/ci/rockchip.testlist
>>   create mode 100644 drivers/gpu/drm/ci/rockchip_rk3288_results.txt
>>   create mode 100644 drivers/gpu/drm/ci/rockchip_rk3399_results.txt
>>   create mode 100644 drivers/gpu/drm/ci/virtio_gpu.testlist
>>   create mode 100644 drivers/gpu/drm/ci/virtio_gpu_results.txt
>>
>> diff --git a/Documentation/gpu/automated_testing.rst 
>> b/Documentation/gpu/automated_testing.rst
>> new file mode 100644
>> index 000000000000..61003ecc7b6e
>> --- /dev/null
>> +++ b/Documentation/gpu/automated_testing.rst
>> @@ -0,0 +1,84 @@
>> +.. SPDX-License-Identifier: GPL-2.0+
>> +
>> +=========================================
>> +Automated testing of the DRM subsystem
>> +=========================================
>> +
>> +
>> +Introduction
>> +============
>> +
>> +Making sure that changes to the core or drivers don't introduce 
>> regressions can be very time consuming when lots of different hardware 
>> configurations need to be tested. Moreover, it isn't practical for 
>> each person interested in this testing to have to acquire and maintain 
>> what can be a considerable amount of hardware.
>> +
>> +Also, it is desirable for developers to check for regressions in 
>> their code by themselves, instead of relying on the maintainers 
>> finding them and then reporting back.
>> +
>> +There are facilities in gitlab.freedesktop.org to automatically test 
>> Mesa that can be used as well for testing the DRM subsystem. This 
>> document explains how people interested in testing it can use this 
>> shared infrastructure to save quite some time and effort.
>> +
>> +
>> +Relevant files
>> +==============
>> +
>> +drivers/gpu/drm/ci/gitlab-ci.yml
>> +--------------------------------
>> +
>> +Specifies the specific version of the scripts to be used. GitLab CI 
>> will use the values defined in this file to fetch the right scripts.
>> +
>> +
>> +drivers/gpu/drm/ci/${DRIVER_NAME}.testlist
>> +------------------------------------------
>> +
>> +Specifies the tests that the current code is expected to be able to 
>> reliably run for ${DRIVER_NAME}. These tests are expected to not hang 
>> the DUT (Device Under Testing) when running on the revision they 
>> belong to, and to give consistent results.
>> +
>> +
>> +drivers/gpu/drm/ci/${DRIVER_NAME}_*_results.txt
>> +----------------------------------------
>> +
>> +Specifies the expected results of running this specific kernel 
>> revision on a given hardware configuration.
>> +
>> +
>> +How to enable automated testing on your tree
>> +============================================
>> +
>> +1. Create a Linux tree in https://gitlab.freedesktop.org/ if you 
>> don't have one yet
>> +
>> +2. In your kernel repo's configuration (eg. 
>> https://gitlab.freedesktop.org/tomeu/linux/-/settings/ci_cd), change 
>> the CI/CD configuration file from .gitlab-ci.yml to 
>> drivers/gpu/drm/ci/gitlab-ci.yml.
>> +
>> +3. Next time you push to this repository, you will see a CI pipeline 
>> being created (eg. 
>> https://gitlab.freedesktop.org/tomeu/linux/-/pipelines)
>> +
>> +4. The various jobs will be run and when the pipeline is finished, 
>> all jobs should be green unless a regression has been found.
>> +
>> +
>> +How to update test expectations
>> +===============================
>> +
>> +If your changes to the code fix any tests, you will have to update 
>> one or more of the files in 
>> drivers/gpu/drm/ci/${DRIVER_NAME}_*_results.txt, for each of the test 
>> platforms affected by the change.
>> +
>> +If you have run a pipeline and it failed because of a mismatched test 
>> result, you will have been offered a patch at the end of the run that 
>> you can apply after reviewing it.
>> +
>> +
>> +How to expand coverage
>> +======================
>> +
>> +If your code changes makes it possible to run more tests (by solving 
>> reliability issues, for example), more tests can be added to this 
>> list, and then the expected results updated with the patch file that 
>> will be printed at the end of each job.
>> +
>> +If there is a need for updating the version of IGT being used (maybe 
>> you have added more tests to it), follow the instructions at 
>> https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/tree/main#upreving-igt.
>> +
>> +
>> +How to test your changes to the scripts
>> +==========================================
>> +
>> +For testing changes to the scripts in the drm-ci repo, change the 
>> DRM_CI_PROJECT_PATH variable in drivers/gpu/drm/ci/gitlab-ci.yml to 
>> match your fork of the project (eg. tomeu/drm-ci). This fork needs to 
>> be in https://gitlab.freedesktop.org/.
>> +
>> +
>> +How to incorporate external fixes in your testing
>> +=================================================
>> +
>> +Often, regressions in other trees will prevent testing changes local 
>> to the tree under test. These fixes will be automatically merged in 
>> during the build jobs from a branch in the target tree that is named 
>> as ${TARGET_BRANCH}-external-fixes.
>> +
>> +If the pipeline is not in a merge request and a branch with the same 
>> name exists in the local tree, commits from that branch will be merged 
>> in as well.
>> +
>> +
>> +How to deal with automated testing labs that may be down
>> +========================================================
>> +
>> +If a hardware farm is down and thus causing pipelines to fail that 
>> would otherwise pass, one can disable all jobs that would be submitted 
>> to that farm by editing the file at 
>> https://gitlab.freedesktop.org/gfx-ci/lab-status/-/blob/main/lab-status.yml. 
>>
> 
> 
> [..]
> 
>> diff --git a/drivers/gpu/drm/ci/meson.testlist 
>> b/drivers/gpu/drm/ci/meson.testlist
>> new file mode 100644
>> index 000000000000..23744b3a2fb0
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/meson.testlist
>> @@ -0,0 +1,71 @@
>> +# Keep alphabetically sorted by default
>> +
>> +igt@core_auth@getclient-simple
>> +igt@core_auth@getclient-master-drop
>> +igt@core_auth@basic-auth
>> +igt@core_auth@many-magics
>> +igt@core_getclient
>> +igt@core_getstats
>> +igt@core_getversion
>> +igt@core_setmaster_vs_auth
>> +igt@drm_read@invalid-buffer
>> +igt@kms_addfb_basic@unused-handle
>> +igt@kms_addfb_basic@unused-pitches
>> +igt@kms_addfb_basic@unused-offsets
>> +igt@kms_addfb_basic@unused-modifier
>> +igt@kms_addfb_basic@legacy-format
>> +igt@kms_addfb_basic@no-handle
>> +igt@kms_addfb_basic@basic
>> +igt@kms_addfb_basic@bad-pitch-0
>> +igt@kms_addfb_basic@bad-pitch-32
>> +igt@kms_addfb_basic@bad-pitch-63
>> +igt@kms_addfb_basic@bad-pitch-128
>> +igt@kms_addfb_basic@bad-pitch-256
>> +igt@kms_addfb_basic@bad-pitch-1024
>> +igt@kms_addfb_basic@bad-pitch-999
>> +igt@kms_addfb_basic@bad-pitch-65536
>> +igt@kms_addfb_basic@size-max
>> +igt@kms_addfb_basic@too-wide
>> +igt@kms_addfb_basic@too-high
>> +igt@kms_addfb_basic@bo-too-small
>> +igt@kms_addfb_basic@small-bo
>> +igt@kms_addfb_basic@addfb25-modifier-no-flag
>> +igt@kms_addfb_basic@addfb25-bad-modifier
>> +igt@kms_addfb_basic@invalid-get-prop-any
>> +igt@kms_addfb_basic@invalid-get-prop
>> +igt@kms_addfb_basic@invalid-set-prop-any
>> +igt@kms_addfb_basic@invalid-set-prop
>> +igt@kms_addfb_basic@master-rmfb
>> +igt@kms_atomic_interruptible@legacy-setmode@pipe-a-edp-1
>> +igt@kms_atomic_interruptible@atomic-setmode@pipe-a-edp-1
>> +igt@kms_atomic_interruptible@legacy-dpms@pipe-a-edp-1
>> +igt@kms_atomic_interruptible@legacy-pageflip@pipe-a-edp-1
>> +igt@kms_atomic_interruptible@legacy-cursor@pipe-a-edp-1
>> +igt@kms_atomic_interruptible@universal-setplane-primary@pipe-a-edp-1
>> +igt@kms_atomic_interruptible@universal-setplane-cursor@pipe-a-edp-1
>> +igt@kms_content_protection@LIC
>> +igt@kms_getfb@getfb-handle-zero
>> +igt@kms_getfb@getfb-handle-valid
>> +igt@kms_getfb@getfb-handle-closed
>> +igt@kms_getfb@getfb-handle-not-fb
>> +igt@kms_getfb@getfb-addfb-different-handles
>> +igt@kms_getfb@getfb-repeated-different-handles
>> +igt@kms_getfb@getfb2-handle-zero
>> +igt@kms_getfb@getfb2-handle-closed
>> +igt@kms_getfb@getfb2-handle-not-fb
>> +igt@kms_getfb@getfb2-into-addfb2
>> +igt@kms_getfb@getfb-handle-protection
>> +igt@kms_getfb@getfb2-handle-protection
>> +igt@kms_hdmi_inject@inject-4k
>> +igt@kms_prop_blob@basic
>> +igt@kms_prop_blob@blob-prop-core
>> +igt@kms_prop_blob@blob-prop-validate
>> +igt@kms_prop_blob@blob-prop-lifetime
>> +igt@kms_prop_blob@blob-multiple
>> +igt@kms_prop_blob@invalid-get-prop-any
>> +igt@kms_prop_blob@invalid-get-prop
>> +igt@kms_prop_blob@invalid-set-prop-any
>> +igt@kms_prop_blob@invalid-set-prop
>> +igt@kms_setmode@basic@pipe-a-edp-1
>> +igt@kms_setmode@basic@pipe-b-edp-1
>> +igt@kms_sysfs_edid_timing
>> diff --git a/drivers/gpu/drm/ci/meson_g12b_results.txt 
>> b/drivers/gpu/drm/ci/meson_g12b_results.txt
>> new file mode 100644
>> index 000000000000..6997a75aa1ef
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/meson_g12b_results.txt
>> @@ -0,0 +1,11 @@
>> +igt@drm_read@invalid-buffer,fail
>> +igt@kms_addfb_basic@addfb25-bad-modifier,fail
>> +igt@kms_atomic_interruptible@legacy-setmode,skip
>> +igt@kms_atomic_interruptible@atomic-setmode,skip
>> +igt@kms_atomic_interruptible@legacy-dpms,skip
>> +igt@kms_atomic_interruptible@legacy-pageflip,skip
>> +igt@kms_atomic_interruptible@legacy-cursor,skip
>> +igt@kms_atomic_interruptible@universal-setplane-primary,skip
>> +igt@kms_atomic_interruptible@universal-setplane-cursor,skip
>> +igt@kms_content_protection@lic,skip
>> +igt@kms_setmode@basic,skip
> 
> Can't those be removed from testlist instead ?
> I suppose those should not skip, right ?

You are right, these slipped in. The only skips in the results should be 
for tests that do run on other boards for the same driver.

> Anyway, this is great, please take my
> Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
> for stuff related to the meson driver.

Thanks,

Tomeu

^ permalink raw reply	[flat|nested] 49+ messages in thread

* [PATCH v5] drm: Add initial ci/ subdirectory
  2022-05-17  8:16     ` [RFC v4] drm: " Tomeu Vizoso
  2022-05-17  9:18       ` Neil Armstrong
@ 2022-07-26 18:16       ` Tomeu Vizoso
  2022-07-29 15:43         ` Rob Clark
                           ` (2 more replies)
  1 sibling, 3 replies; 49+ messages in thread
From: Tomeu Vizoso @ 2022-07-26 18:16 UTC (permalink / raw)
  To: David Airlie, Jonathan Corbet, Carlo Caione, Kevin Hilman,
	Heiko Stuebner, Matthias Brugger, Rob Clark
  Cc: Tomeu Vizoso, linux-doc, Neil Armstrong, linux-kernel, dri-devel,
	linux-rockchip, linux-mediatek, linux-amlogic, kernel,
	linux-arm-kernel

And use it to store expectations about what the DRM drivers are
supposed to pass in the IGT test suite.

Also include a configuration file that points to the out-of-tree CI
scripts.

By storing the test expectations along the code we can make sure both
stay in sync with each other, and so we can know when a code change
breaks those expectations.

This will allow all contributors to drm to reuse the infrastructure
already in gitlab.freedesktop.org to test the driver on several
generations of the hardware.

v2:
  - Fix names of result expectation files to match SoC
  - Don't execute tests that are going to skip on all boards

v3:
  - Remove tracking of dmesg output during test execution

v4:
  - Move up to drivers/gpu/drm
  - Add support for a bunch of other drivers
  - Explain how to incorporate fixes for CI from a
    ${TARGET_BRANCH}-external-fixes branch
  - Remove tests that pass from expected results file, to reduce the
    size of in-tree files
  - Add docs about how to deal with outages in automated testing labs
  - Specify the exact SHA of the CI scripts to be used

v5:
  - Remove unneeded skips from Meson expectations file
  - Use a more advanced runner that detects flakes automatically
  - Use a more succint format for the expectations
  - Run many more tests (and use sharding to finish in time)
  - Use skip lists to avoid hanging machines
  - Add some build testing
  - Build IGT in each pipeline for faster uprevs
  - List failures in the GitLab UI

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
---
 Documentation/gpu/automated_testing.rst       | 84 ++++++++++++++++++
 drivers/gpu/drm/ci/amdgpu-stoney-fails.txt    | 13 +++
 drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt   | 20 +++++
 drivers/gpu/drm/ci/amdgpu-stoney-skips.txt    |  2 +
 drivers/gpu/drm/ci/gitlab-ci.yml              | 13 +++
 drivers/gpu/drm/ci/i915-amly-flakes.txt       | 32 +++++++
 drivers/gpu/drm/ci/i915-amly-skips.txt        |  2 +
 drivers/gpu/drm/ci/i915-apl-fails.txt         | 29 +++++++
 drivers/gpu/drm/ci/i915-apl-flakes.txt        |  1 +
 drivers/gpu/drm/ci/i915-apl-skips.txt         |  2 +
 drivers/gpu/drm/ci/i915-cml-flakes.txt        | 36 ++++++++
 drivers/gpu/drm/ci/i915-glk-flakes.txt        | 40 +++++++++
 drivers/gpu/drm/ci/i915-glk-skips.txt         |  2 +
 drivers/gpu/drm/ci/i915-kbl-fails.txt         |  8 ++
 drivers/gpu/drm/ci/i915-kbl-flakes.txt        | 24 ++++++
 drivers/gpu/drm/ci/i915-kbl-skips.txt         |  2 +
 drivers/gpu/drm/ci/i915-tgl-fails.txt         | 19 ++++
 drivers/gpu/drm/ci/i915-tgl-flakes.txt        |  6 ++
 drivers/gpu/drm/ci/i915-tgl-skips.txt         |  8 ++
 drivers/gpu/drm/ci/i915-whl-fails.txt         | 30 +++++++
 drivers/gpu/drm/ci/i915-whl-flakes.txt        |  1 +
 drivers/gpu/drm/ci/mediatek-mt8173-fails.txt  | 29 +++++++
 drivers/gpu/drm/ci/mediatek-mt8183-fails.txt  | 10 +++
 drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt | 14 +++
 drivers/gpu/drm/ci/meson-g12b-fails.txt       |  5 ++
 drivers/gpu/drm/ci/meson-g12b-flakes.txt      |  4 +
 drivers/gpu/drm/ci/msm-apq8016-fails.txt      | 15 ++++
 drivers/gpu/drm/ci/msm-apq8016-flakes.txt     |  4 +
 drivers/gpu/drm/ci/msm-apq8096-fails.txt      |  2 +
 drivers/gpu/drm/ci/msm-apq8096-flakes.txt     |  4 +
 drivers/gpu/drm/ci/msm-apq8096-skips.txt      |  2 +
 drivers/gpu/drm/ci/msm-sc7180-fails.txt       | 22 +++++
 drivers/gpu/drm/ci/msm-sc7180-flakes.txt      | 14 +++
 drivers/gpu/drm/ci/msm-sc7180-skips.txt       | 18 ++++
 drivers/gpu/drm/ci/msm-sdm845-fails.txt       | 44 ++++++++++
 drivers/gpu/drm/ci/msm-sdm845-flakes.txt      | 33 +++++++
 drivers/gpu/drm/ci/msm-sdm845-skips.txt       |  2 +
 drivers/gpu/drm/ci/rockchip-rk3288-fails.txt  | 75 ++++++++++++++++
 drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt |  5 ++
 drivers/gpu/drm/ci/rockchip-rk3288-skips.txt  | 46 ++++++++++
 drivers/gpu/drm/ci/rockchip-rk3399-fails.txt  | 86 +++++++++++++++++++
 drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt | 25 ++++++
 drivers/gpu/drm/ci/rockchip-rk3399-skips.txt  |  5 ++
 drivers/gpu/drm/ci/virtio_gpu-none-fails.txt  | 38 ++++++++
 drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt |  0
 drivers/gpu/drm/ci/virtio_gpu-none-skips.txt  |  6 ++
 46 files changed, 882 insertions(+)
 create mode 100644 Documentation/gpu/automated_testing.rst
 create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
 create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
 create mode 100644 drivers/gpu/drm/ci/gitlab-ci.yml
 create mode 100644 drivers/gpu/drm/ci/i915-amly-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/i915-amly-skips.txt
 create mode 100644 drivers/gpu/drm/ci/i915-apl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/i915-apl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/i915-apl-skips.txt
 create mode 100644 drivers/gpu/drm/ci/i915-cml-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/i915-glk-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/i915-glk-skips.txt
 create mode 100644 drivers/gpu/drm/ci/i915-kbl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/i915-kbl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/i915-kbl-skips.txt
 create mode 100644 drivers/gpu/drm/ci/i915-tgl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/i915-tgl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/i915-tgl-skips.txt
 create mode 100644 drivers/gpu/drm/ci/i915-whl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/i915-whl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
 create mode 100644 drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
 create mode 100644 drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/meson-g12b-fails.txt
 create mode 100644 drivers/gpu/drm/ci/meson-g12b-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/msm-apq8016-fails.txt
 create mode 100644 drivers/gpu/drm/ci/msm-apq8016-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/msm-apq8096-fails.txt
 create mode 100644 drivers/gpu/drm/ci/msm-apq8096-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/msm-apq8096-skips.txt
 create mode 100644 drivers/gpu/drm/ci/msm-sc7180-fails.txt
 create mode 100644 drivers/gpu/drm/ci/msm-sc7180-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/msm-sc7180-skips.txt
 create mode 100644 drivers/gpu/drm/ci/msm-sdm845-fails.txt
 create mode 100644 drivers/gpu/drm/ci/msm-sdm845-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/msm-sdm845-skips.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
 create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
 create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-skips.txt

diff --git a/Documentation/gpu/automated_testing.rst b/Documentation/gpu/automated_testing.rst
new file mode 100644
index 000000000000..61003ecc7b6e
--- /dev/null
+++ b/Documentation/gpu/automated_testing.rst
@@ -0,0 +1,84 @@
+.. SPDX-License-Identifier: GPL-2.0+
+
+=========================================
+Automated testing of the DRM subsystem
+=========================================
+
+
+Introduction
+============
+
+Making sure that changes to the core or drivers don't introduce regressions can be very time consuming when lots of different hardware configurations need to be tested. Moreover, it isn't practical for each person interested in this testing to have to acquire and maintain what can be a considerable amount of hardware.
+
+Also, it is desirable for developers to check for regressions in their code by themselves, instead of relying on the maintainers finding them and then reporting back.
+
+There are facilities in gitlab.freedesktop.org to automatically test Mesa that can be used as well for testing the DRM subsystem. This document explains how people interested in testing it can use this shared infrastructure to save quite some time and effort.
+
+
+Relevant files
+==============
+
+drivers/gpu/drm/ci/gitlab-ci.yml
+--------------------------------
+
+Specifies the specific version of the scripts to be used. GitLab CI will use the values defined in this file to fetch the right scripts.
+
+
+drivers/gpu/drm/ci/${DRIVER_NAME}.testlist
+------------------------------------------
+
+Specifies the tests that the current code is expected to be able to reliably run for ${DRIVER_NAME}. These tests are expected to not hang the DUT (Device Under Testing) when running on the revision they belong to, and to give consistent results.
+
+
+drivers/gpu/drm/ci/${DRIVER_NAME}_*_results.txt
+----------------------------------------
+
+Specifies the expected results of running this specific kernel revision on a given hardware configuration.
+
+
+How to enable automated testing on your tree
+============================================
+
+1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one yet
+
+2. In your kernel repo's configuration (eg. https://gitlab.freedesktop.org/tomeu/linux/-/settings/ci_cd), change the CI/CD configuration file from .gitlab-ci.yml to drivers/gpu/drm/ci/gitlab-ci.yml.
+
+3. Next time you push to this repository, you will see a CI pipeline being created (eg. https://gitlab.freedesktop.org/tomeu/linux/-/pipelines)
+
+4. The various jobs will be run and when the pipeline is finished, all jobs should be green unless a regression has been found.
+
+
+How to update test expectations
+===============================
+
+If your changes to the code fix any tests, you will have to update one or more of the files in drivers/gpu/drm/ci/${DRIVER_NAME}_*_results.txt, for each of the test platforms affected by the change.
+
+If you have run a pipeline and it failed because of a mismatched test result, you will have been offered a patch at the end of the run that you can apply after reviewing it.
+
+
+How to expand coverage
+======================
+
+If your code changes makes it possible to run more tests (by solving reliability issues, for example), more tests can be added to this list, and then the expected results updated with the patch file that will be printed at the end of each job.
+
+If there is a need for updating the version of IGT being used (maybe you have added more tests to it), follow the instructions at https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/tree/main#upreving-igt.
+
+
+How to test your changes to the scripts
+==========================================
+
+For testing changes to the scripts in the drm-ci repo, change the DRM_CI_PROJECT_PATH variable in drivers/gpu/drm/ci/gitlab-ci.yml to match your fork of the project (eg. tomeu/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
+
+
+How to incorporate external fixes in your testing
+=================================================
+
+Often, regressions in other trees will prevent testing changes local to the tree under test. These fixes will be automatically merged in during the build jobs from a branch in the target tree that is named as ${TARGET_BRANCH}-external-fixes.
+
+If the pipeline is not in a merge request and a branch with the same name exists in the local tree, commits from that branch will be merged in as well.
+
+
+How to deal with automated testing labs that may be down
+========================================================
+
+If a hardware farm is down and thus causing pipelines to fail that would otherwise pass, one can disable all jobs that would be submitted to that farm by editing the file at https://gitlab.freedesktop.org/gfx-ci/lab-status/-/blob/main/lab-status.yml.
diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt b/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
new file mode 100644
index 000000000000..e721568b6ec3
--- /dev/null
+++ b/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
@@ -0,0 +1,13 @@
+kms_addfb_basic@bad-pitch-65536,Fail
+kms_addfb_basic@bo-too-small,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
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_cursor_crc@pipe-A-cursor-size-change,Fail
+kms_cursor_crc@pipe-B-cursor-size-change,Fail
+kms_hdr@bpc-switch,Fail
+kms_hdr@bpc-switch-dpms,Fail
+kms_plane_multiple@atomic-pipe-A-tiling-none,Fail
+kms_rotation_crc@primary-rotation-180,Fail
+kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt b/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
new file mode 100644
index 000000000000..a2cbc339838c
--- /dev/null
+++ b/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
@@ -0,0 +1,20 @@
+kms_addfb_basic@too-high
+kms_atomic_transition@plane-all-modeset-transition-internal-panels
+kms_atomic_transition@plane-all-transition
+kms_atomic_transition@plane-use-after-nonblocking-unbind
+kms_bw@linear-tiling-1-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
+kms_cursor_edge_walk@pipe-A-64x64-right-edge
+kms_cursor_edge_walk@pipe-A-64x64-top-edge
+kms_cursor_edge_walk@pipe-B-64x64-bottom-edge
+kms_cursor_edge_walk@pipe-B-64x64-left-edge
+kms_cursor_edge_walk@pipe-B-64x64-right-edge
+kms_cursor_edge_walk@pipe-B-64x64-top-edge
+kms_plane_multiple@atomic-pipe-B-tiling-none
+kms_plane@pixel-format
+kms_plane_scaling@downscale-with-rotation-factor-0-5
+kms_universal_plane@disable-primary-vs-flip-pipe-A
diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt b/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml
new file mode 100644
index 000000000000..8898bbe0f180
--- /dev/null
+++ b/drivers/gpu/drm/ci/gitlab-ci.yml
@@ -0,0 +1,13 @@
+variables:
+  # Change this to use your fork of drm-ci
+  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
+  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha bccff240ca042820484096f0782e8f060bd83bca
+
+  UPSTREAM_REPO: git://anongit.freedesktop.org/drm/drm
+  TARGET_BRANCH: drm-next
+
+include:
+  - project: *drm-ci-project-path
+    ref: *drm-ci-commit-sha
+    file:
+      - '.gitlab-ci.yml'
diff --git a/drivers/gpu/drm/ci/i915-amly-flakes.txt b/drivers/gpu/drm/ci/i915-amly-flakes.txt
new file mode 100644
index 000000000000..67d78f10b671
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-amly-flakes.txt
@@ -0,0 +1,32 @@
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-2560x1440p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-A-constant-alpha-max
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-C-constant-alpha-max
+kms_sysfs_edid_timing
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-amly-skips.txt b/drivers/gpu/drm/ci/i915-amly-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-amly-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-apl-fails.txt b/drivers/gpu/drm/ci/i915-apl-fails.txt
new file mode 100644
index 000000000000..a077f29d5cba
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-apl-fails.txt
@@ -0,0 +1,29 @@
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_bw@linear-tiling-4-displays-1920x1080p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-3840x2160p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
+kms_sysfs_edid_timing,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-apl-flakes.txt b/drivers/gpu/drm/ci/i915-apl-flakes.txt
new file mode 100644
index 000000000000..618bbe6bb793
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-apl-flakes.txt
@@ -0,0 +1 @@
+kms_frontbuffer_tracking@fbc-tiling-linear
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-apl-skips.txt b/drivers/gpu/drm/ci/i915-apl-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-apl-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-cml-flakes.txt b/drivers/gpu/drm/ci/i915-cml-flakes.txt
new file mode 100644
index 000000000000..a214419c6dc5
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-cml-flakes.txt
@@ -0,0 +1,36 @@
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-2560x1440p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip@flip-vs-suspend
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
+kms_hdr@bpc-switch-suspend
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-A-constant-alpha-max
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-C-constant-alpha-max
+kms_psr2_su@page_flip-NV12
+kms_psr2_su@page_flip-P010
+kms_setmode@basic
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-glk-flakes.txt b/drivers/gpu/drm/ci/i915-glk-flakes.txt
new file mode 100644
index 000000000000..aedb3d2ef885
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-glk-flakes.txt
@@ -0,0 +1,40 @@
+kms_bw@linear-tiling-1-displays-3840x2160p
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-2560x1440p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip@blocking-wf_vblank
+kms_flip@wf_vblank-ts-check
+kms_flip@wf_vblank-ts-check-interruptible
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
+kms_frontbuffer_tracking@fbc-tiling-linear
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-A-constant-alpha-max
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-C-constant-alpha-max
+kms_rotation_crc@multiplane-rotation
+kms_rotation_crc@multiplane-rotation-cropping-bottom
+kms_rotation_crc@multiplane-rotation-cropping-top
+kms_setmode@basic
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-glk-skips.txt b/drivers/gpu/drm/ci/i915-glk-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-glk-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-kbl-fails.txt b/drivers/gpu/drm/ci/i915-kbl-fails.txt
new file mode 100644
index 000000000000..f81f065e27e8
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-kbl-fails.txt
@@ -0,0 +1,8 @@
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-kbl-flakes.txt b/drivers/gpu/drm/ci/i915-kbl-flakes.txt
new file mode 100644
index 000000000000..f82017654cf5
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-kbl-flakes.txt
@@ -0,0 +1,24 @@
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_sysfs_edid_timing
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-kbl-skips.txt b/drivers/gpu/drm/ci/i915-kbl-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-kbl-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-tgl-fails.txt b/drivers/gpu/drm/ci/i915-tgl-fails.txt
new file mode 100644
index 000000000000..270644ce220c
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-tgl-fails.txt
@@ -0,0 +1,19 @@
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_bw@linear-tiling-4-displays-1920x1080p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-3840x2160p,Fail
+kms_bw@linear-tiling-5-displays-1920x1080p,Fail
+kms_bw@linear-tiling-5-displays-2560x1440p,Fail
+kms_bw@linear-tiling-5-displays-3840x2160p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_rotation_crc@bad-pixel-format,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-tgl-flakes.txt b/drivers/gpu/drm/ci/i915-tgl-flakes.txt
new file mode 100644
index 000000000000..15fba77ff19d
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-tgl-flakes.txt
@@ -0,0 +1,6 @@
+kms_draw_crc@draw-method-rgb565-blt-untiled
+kms_draw_crc@draw-method-xrgb8888-mmap-gtt-untiled
+kms_draw_crc@draw-method-xrgb8888-mmap-gtt-xtiled
+kms_flip@blocking-absolute-wf_vblank
+kms_flip@bo-too-big-interruptible
+kms_flip@flip-vs-rmfb-interruptible
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-tgl-skips.txt b/drivers/gpu/drm/ci/i915-tgl-skips.txt
new file mode 100644
index 000000000000..14f33c7ba03b
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-tgl-skips.txt
@@ -0,0 +1,8 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# GPU hangs, then the whole machine
+gem_eio.*
+
+# Whole machine hangs
+kms_flip@absolute-wf_vblank@a-edp1
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-whl-fails.txt b/drivers/gpu/drm/ci/i915-whl-fails.txt
new file mode 100644
index 000000000000..dbfedfa5d63f
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-whl-fails.txt
@@ -0,0 +1,30 @@
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_bw@linear-tiling-4-displays-1920x1080p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-3840x2160p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_frontbuffer_tracking@fbc-tiling-linear,Fail
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
+kms_sysfs_edid_timing,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-whl-flakes.txt b/drivers/gpu/drm/ci/i915-whl-flakes.txt
new file mode 100644
index 000000000000..6bcac5b84fbb
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-whl-flakes.txt
@@ -0,0 +1 @@
+kms_flip@flip-vs-suspend
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt b/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
new file mode 100644
index 000000000000..7f74fb9afc99
--- /dev/null
+++ b/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
@@ -0,0 +1,29 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_bw@linear-tiling-1-displays-1920x1080p,Fail
+kms_bw@linear-tiling-1-displays-2560x1440p,Fail
+kms_bw@linear-tiling-1-displays-3840x2160p,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
+kms_color@pipe-B-invalid-gamma-lut-sizes,Fail
+kms_force_connector_basic@force-connector-state,Fail
+kms_force_connector_basic@force-edid,Fail
+kms_force_connector_basic@force-load-detect,Fail
+kms_force_connector_basic@prune-stale-modes,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_plane_scaling@planes-upscale-20x20,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
+kms_plane_scaling@upscale-with-modifier-20x20,Fail
+kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_properties@get_properties-sanity-atomic,Fail
+kms_properties@plane-properties-atomic,Fail
+kms_properties@plane-properties-legacy,Fail
+kms_rmfb@close-fd,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt b/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
new file mode 100644
index 000000000000..6ff81d00e84e
--- /dev/null
+++ b/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
@@ -0,0 +1,10 @@
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_bw@linear-tiling-1-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_rmfb@close-fd,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt b/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
new file mode 100644
index 000000000000..208890b79eb0
--- /dev/null
+++ b/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
@@ -0,0 +1,14 @@
+core_setmaster_vs_auth
+kms_bw@linear-tiling-1-displays-1920x1080p
+kms_bw@linear-tiling-1-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_cursor_legacy@cursor-vs-flip-atomic
+kms_plane_scaling@invalid-num-scalers
+kms_plane_scaling@planes-upscale-20x20
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5
+kms_plane_scaling@upscale-with-modifier-20x20
+kms_plane_scaling@upscale-with-pixel-format-20x20
+kms_prop_blob@invalid-set-prop-any
+kms_properties@get_properties-sanity-atomic
+kms_properties@plane-properties-atomic
+kms_properties@plane-properties-legacy
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/meson-g12b-fails.txt b/drivers/gpu/drm/ci/meson-g12b-fails.txt
new file mode 100644
index 000000000000..345e1426b3a3
--- /dev/null
+++ b/drivers/gpu/drm/ci/meson-g12b-fails.txt
@@ -0,0 +1,5 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_properties@connector-properties-atomic,Fail
+kms_properties@get_properties-sanity-atomic,Fail
+kms_properties@get_properties-sanity-non-atomic,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/meson-g12b-flakes.txt b/drivers/gpu/drm/ci/meson-g12b-flakes.txt
new file mode 100644
index 000000000000..b63329d06767
--- /dev/null
+++ b/drivers/gpu/drm/ci/meson-g12b-flakes.txt
@@ -0,0 +1,4 @@
+kms_force_connector_basic@force-connector-state
+kms_force_connector_basic@force-edid
+kms_force_connector_basic@force-load-detect
+kms_force_connector_basic@prune-stale-modes
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/msm-apq8016-fails.txt b/drivers/gpu/drm/ci/msm-apq8016-fails.txt
new file mode 100644
index 000000000000..16c2dfab3f16
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-apq8016-fails.txt
@@ -0,0 +1,15 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_cursor_legacy@all-pipes-forked-move,Fail
+kms_cursor_legacy@all-pipes-torture-bo,Fail
+kms_cursor_legacy@all-pipes-forked-bo,Fail
+kms_cursor_legacy@all-pipes-single-bo,Fail
+kms_cursor_legacy@all-pipes-single-move,Fail
+kms_cursor_legacy@all-pipes-torture-move,Fail
+kms_cursor_legacy@pipe-A-forked-bo,Fail
+kms_cursor_legacy@pipe-A-forked-move,Fail
+kms_cursor_legacy@pipe-A-single-bo,Fail
+kms_cursor_legacy@pipe-A-single-move,Fail
+kms_cursor_legacy@pipe-A-torture-bo,Fail
+kms_cursor_legacy@pipe-A-torture-move,Fail
+kms_hdmi_inject@inject-4k,Fail
diff --git a/drivers/gpu/drm/ci/msm-apq8016-flakes.txt b/drivers/gpu/drm/ci/msm-apq8016-flakes.txt
new file mode 100644
index 000000000000..b63329d06767
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-apq8016-flakes.txt
@@ -0,0 +1,4 @@
+kms_force_connector_basic@force-connector-state
+kms_force_connector_basic@force-edid
+kms_force_connector_basic@force-load-detect
+kms_force_connector_basic@prune-stale-modes
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/msm-apq8096-fails.txt b/drivers/gpu/drm/ci/msm-apq8096-fails.txt
new file mode 100644
index 000000000000..88a1fc0a3b0d
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-apq8096-fails.txt
@@ -0,0 +1,2 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
diff --git a/drivers/gpu/drm/ci/msm-apq8096-flakes.txt b/drivers/gpu/drm/ci/msm-apq8096-flakes.txt
new file mode 100644
index 000000000000..b63329d06767
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-apq8096-flakes.txt
@@ -0,0 +1,4 @@
+kms_force_connector_basic@force-connector-state
+kms_force_connector_basic@force-edid
+kms_force_connector_basic@force-load-detect
+kms_force_connector_basic@prune-stale-modes
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/msm-apq8096-skips.txt b/drivers/gpu/drm/ci/msm-apq8096-skips.txt
new file mode 100644
index 000000000000..cd49c8ce2059
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-apq8096-skips.txt
@@ -0,0 +1,2 @@
+# Whole machine hangs
+kms_cursor_legacy@all-pipes-torture-move
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/msm-sc7180-fails.txt b/drivers/gpu/drm/ci/msm-sc7180-fails.txt
new file mode 100644
index 000000000000..0b159b6469c8
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-sc7180-fails.txt
@@ -0,0 +1,22 @@
+kms_cursor_legacy@cursor-vs-flip-toggle,Fail
+kms_cursor_legacy@cursorA-vs-flipA-atomic-transitions,Crash
+kms_plane@pixel-format,Fail
+kms_plane@pixel-format-source-clamping,Fail
+kms_plane@plane-position-covered,Fail
+kms_plane@plane-position-hole,Fail
+kms_plane@plane-position-hole-dpms,Fail
+kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
+kms_plane_alpha_blend@pipe-B-alpha-7efc,Fail
+kms_plane_alpha_blend@pipe-B-alpha-basic,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-mid,Fail
+kms_plane_alpha_blend@pipe-B-coverage-7efc,Fail
+kms_plane_alpha_blend@pipe-B-coverage-vs-premult-vs-constant,Fail
+kms_plane_multiple@atomic-pipe-A-tiling-none,Crash
+kms_rmfb@close-fd,Fail
+kms_rotation_crc@primary-rotation-180,Fail
+kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
+kms_universal_plane@disable-primary-vs-flip-pipe-b,Fail
diff --git a/drivers/gpu/drm/ci/msm-sc7180-flakes.txt b/drivers/gpu/drm/ci/msm-sc7180-flakes.txt
new file mode 100644
index 000000000000..6022edace190
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-sc7180-flakes.txt
@@ -0,0 +1,14 @@
+# Test ends up reading CRC from frame before cursor update
+# sometimes.. tbd if this is a kernel CRC bug or a test
+# bug
+kms_cursor_crc@pipe-.*
+
+kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
+kms_cursor_edge_walk@pipe-A-64x64-left-edge
+kms_cursor_edge_walk@pipe-A-64x64-right-edge
+kms_cursor_edge_walk@pipe-A-64x64-top-edge
+kms_cursor_edge_walk@pipe-B-64x64-bottom-edge
+kms_cursor_edge_walk@pipe-B-64x64-left-edge
+kms_cursor_edge_walk@pipe-B-64x64-right-edge
+kms_cursor_edge_walk@pipe-B-64x64-top-edge
+kms_plane_multiple@atomic-pipe-A-tiling-none
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/msm-sc7180-skips.txt b/drivers/gpu/drm/ci/msm-sc7180-skips.txt
new file mode 100644
index 000000000000..40916ddff81f
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-sc7180-skips.txt
@@ -0,0 +1,18 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# Test incorrectly assumes that CTM support implies gamma/degamma
+# LUT support.  None of the subtests handle the case of only having
+# CTM support
+kms_color.*
+
+# 4k@60 is not supported on this hw, but driver doesn't handle it
+# too gracefully.. https://gitlab.freedesktop.org/drm/msm/-/issues/15
+kms_bw@linear-tiling-.*-displays-3840x2160p
+
+# Until igt fix lands: https://patchwork.freedesktop.org/patch/493175/
+kms_bw@linear-tiling-2.*
+kms_bw@linear-tiling-3.*
+kms_bw@linear-tiling-4.*
+kms_bw@linear-tiling-5.*
+kms_bw@linear-tiling-6.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/msm-sdm845-fails.txt b/drivers/gpu/drm/ci/msm-sdm845-fails.txt
new file mode 100644
index 000000000000..8133927a44df
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-sdm845-fails.txt
@@ -0,0 +1,44 @@
+kms_color@pipe-A-ctm-0-25,Fail
+kms_color@pipe-A-ctm-0-5,Fail
+kms_color@pipe-A-ctm-0-75,Fail
+kms_color@pipe-A-ctm-blue-to-red,Fail
+kms_color@pipe-A-ctm-green-to-red,Fail
+kms_color@pipe-A-ctm-max,Fail
+kms_color@pipe-A-ctm-negative,Fail
+kms_color@pipe-A-ctm-red-to-blue,Fail
+kms_color@pipe-A-legacy-gamma,Fail
+kms_cursor_legacy@basic-flip-after-cursor-atomic,Fail
+kms_cursor_legacy@basic-flip-after-cursor-legacy,Fail
+kms_cursor_legacy@basic-flip-before-cursor-atomic,Fail
+kms_cursor_legacy@basic-flip-before-cursor-legacy,Fail
+kms_cursor_legacy@cursor-vs-flip-atomic,Fail
+kms_cursor_legacy@cursor-vs-flip-atomic-transitions,Fail
+kms_cursor_legacy@cursor-vs-flip-legacy,Fail
+kms_cursor_legacy@cursor-vs-flip-toggle,Fail
+kms_cursor_legacy@flip-vs-cursor-atomic,Fail
+kms_cursor_legacy@flip-vs-cursor-crc-atomic,Fail
+kms_cursor_legacy@flip-vs-cursor-crc-legacy,Fail
+kms_cursor_legacy@flip-vs-cursor-legacy,Fail
+kms_cursor_legacy@short-flip-after-cursor-atomic-transitions,Fail
+kms_cursor_legacy@short-flip-after-cursor-toggle,Fail
+kms_cursor_legacy@short-flip-before-cursor-atomic-transitions,Fail
+kms_cursor_legacy@short-flip-before-cursor-toggle,Fail
+kms_plane@pixel-format,Fail
+kms_plane@pixel-format-source-clamping,Fail
+kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
+kms_plane_cursor@pipe-A-overlay-size-128,Fail
+kms_plane_cursor@pipe-A-overlay-size-256,Fail
+kms_plane_cursor@pipe-A-overlay-size-64,Fail
+kms_plane_cursor@pipe-A-viewport-size-128,Fail
+kms_plane_cursor@pipe-A-viewport-size-256,Fail
+kms_plane_cursor@pipe-A-viewport-size-64,Fail
+kms_plane_scaling@downscale-with-pixel-format-factor-0-25,Timeout
+kms_plane_scaling@downscale-with-pixel-format-factor-0-5,Timeout
+kms_plane_scaling@downscale-with-pixel-format-factor-0-75,Timeout
+kms_plane_scaling@invalid-num-scalers,Fail
+kms_plane_scaling@planes-downscale-factor-0-25,Fail
+kms_plane_scaling@scaler-with-clipping-clamping,Timeout
+kms_plane_scaling@scaler-with-pixel-format-unity-scaling,Timeout
+kms_rmfb@close-fd,Fail
diff --git a/drivers/gpu/drm/ci/msm-sdm845-flakes.txt b/drivers/gpu/drm/ci/msm-sdm845-flakes.txt
new file mode 100644
index 000000000000..da4406b74828
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-sdm845-flakes.txt
@@ -0,0 +1,33 @@
+# Test ends up reading CRC from frame before cursor update
+# sometimes.. tbd if this is a kernel CRC bug or a test
+# bug
+kms_cursor_crc@pipe-A-cursor-alpha-opaque
+kms_cursor_crc@pipe-A-cursor-dpms
+kms_cursor_crc@pipe-A-cursor-size-change
+kms_cursor_legacy@flip-vs-cursor-toggle
+kms_cursor_legacy@pipe-A-forked-bo
+kms_cursor_legacy@pipe-A-forked-move
+kms_cursor_crc@pipe-A-cursor-32x10-offscreen
+kms_cursor_crc@pipe-A-cursor-32x10-onscreen
+kms_cursor_crc@pipe-A-cursor-32x10-random
+kms_cursor_crc@pipe-A-cursor-32x10-sliding
+kms_cursor_crc@pipe-A-cursor-32x32-offscreen
+kms_cursor_crc@pipe-A-cursor-32x32-onscreen
+kms_cursor_crc@pipe-A-cursor-32x32-random
+kms_cursor_crc@pipe-A-cursor-32x32-sliding
+kms_cursor_crc@pipe-A-cursor-64x21-offscreen
+kms_cursor_crc@pipe-A-cursor-64x21-onscreen
+kms_cursor_crc@pipe-A-cursor-64x21-random
+kms_cursor_crc@pipe-A-cursor-64x21-sliding
+kms_cursor_crc@pipe-A-cursor-64x64-offscreen
+kms_cursor_crc@pipe-A-cursor-64x64-onscreen
+kms_cursor_crc@pipe-A-cursor-64x64-random
+kms_cursor_crc@pipe-A-cursor-64x64-sliding
+kms_cursor_crc@pipe-A-cursor-dpms
+kms_cursor_crc@pipe-A-cursor-suspend
+kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
+kms_cursor_edge_walk@pipe-A-64x64-left-edge
+kms_cursor_edge_walk@pipe-A-64x64-right-edge
+kms_cursor_edge_walk@pipe-A-64x64-top-edge
+
+kms_flip@dpms-vs-vblank-race-interruptible
diff --git a/drivers/gpu/drm/ci/msm-sdm845-skips.txt b/drivers/gpu/drm/ci/msm-sdm845-skips.txt
new file mode 100644
index 000000000000..42675f1c6d76
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-sdm845-skips.txt
@@ -0,0 +1,2 @@
+# Hangs machine
+kms_bw.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt b/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
new file mode 100644
index 000000000000..e2a264647a58
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
@@ -0,0 +1,75 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_cursor_crc@pipe-A-cursor-32x10-onscreen,Fail
+kms_cursor_crc@pipe-A-cursor-32x10-random,Fail
+kms_cursor_crc@pipe-A-cursor-32x10-sliding,Fail
+kms_cursor_crc@pipe-A-cursor-32x32-onscreen,Fail
+kms_cursor_crc@pipe-A-cursor-32x32-random,Fail
+kms_cursor_crc@pipe-A-cursor-32x32-sliding,Fail
+kms_cursor_crc@pipe-A-cursor-64x21-onscreen,Fail
+kms_cursor_crc@pipe-A-cursor-64x21-random,Fail
+kms_cursor_crc@pipe-A-cursor-64x21-sliding,Fail
+kms_cursor_crc@pipe-A-cursor-64x64-onscreen,Fail
+kms_cursor_crc@pipe-A-cursor-64x64-random,Fail
+kms_cursor_crc@pipe-A-cursor-64x64-sliding,Fail
+kms_cursor_crc@pipe-A-cursor-alpha-opaque,Fail
+kms_cursor_crc@pipe-A-cursor-dpms,Fail
+kms_cursor_crc@pipe-A-cursor-size-change,Fail
+kms_cursor_crc@pipe-B-cursor-32x10-onscreen,Fail
+kms_cursor_crc@pipe-B-cursor-32x10-random,Fail
+kms_cursor_crc@pipe-B-cursor-32x10-sliding,Fail
+kms_cursor_crc@pipe-B-cursor-32x32-onscreen,Fail
+kms_cursor_crc@pipe-B-cursor-32x32-random,Fail
+kms_cursor_crc@pipe-B-cursor-32x32-sliding,Fail
+kms_cursor_crc@pipe-B-cursor-64x21-onscreen,Fail
+kms_cursor_crc@pipe-B-cursor-64x21-random,Fail
+kms_cursor_crc@pipe-B-cursor-64x64-onscreen,Fail
+kms_cursor_crc@pipe-B-cursor-64x64-random,Fail
+kms_cursor_crc@pipe-B-cursor-64x64-sliding,Fail
+kms_cursor_crc@pipe-B-cursor-alpha-opaque,Fail
+kms_cursor_crc@pipe-B-cursor-size-change,Fail
+kms_force_connector_basic@force-connector-state,Fail
+kms_force_connector_basic@force-edid,Fail
+kms_force_connector_basic@force-load-detect,Fail
+kms_force_connector_basic@prune-stale-modes,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_pipe_crc_basic@nonblocking-crc-pipe-A-frame-sequence,Fail
+kms_pipe_crc_basic@nonblocking-crc-pipe-B-frame-sequence,Fail
+kms_pipe_crc_basic@read-crc-pipe-A-frame-sequence,Fail
+kms_pipe_crc_basic@read-crc-pipe-B-frame-sequence,Fail
+kms_plane_cursor@pipe-A-overlay-size-128,Fail
+kms_plane_cursor@pipe-A-overlay-size-256,Fail
+kms_plane_cursor@pipe-A-overlay-size-64,Fail
+kms_plane_cursor@pipe-A-primary-size-128,Fail
+kms_plane_cursor@pipe-A-primary-size-256,Fail
+kms_plane_cursor@pipe-A-primary-size-64,Fail
+kms_plane_cursor@pipe-A-viewport-size-128,Fail
+kms_plane_cursor@pipe-A-viewport-size-256,Fail
+kms_plane_cursor@pipe-A-viewport-size-64,Fail
+kms_plane_cursor@pipe-B-overlay-size-128,Fail
+kms_plane_cursor@pipe-B-overlay-size-256,Fail
+kms_plane_cursor@pipe-B-overlay-size-64,Fail
+kms_plane_cursor@pipe-B-primary-size-128,Fail
+kms_plane_cursor@pipe-B-primary-size-256,Fail
+kms_plane_cursor@pipe-B-primary-size-64,Fail
+kms_plane_cursor@pipe-B-viewport-size-128,Fail
+kms_plane_cursor@pipe-B-viewport-size-256,Fail
+kms_plane_cursor@pipe-B-viewport-size-64,Fail
+kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
+kms_plane_scaling@upscale-with-modifier-20x20,Fail
+kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
+kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_prime@basic-crc,Fail
+kms_properties@connector-properties-atomic,Fail
+kms_properties@get_properties-sanity-atomic,Fail
+kms_properties@get_properties-sanity-non-atomic,Fail
+kms_rmfb@close-fd,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt b/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
new file mode 100644
index 000000000000..447fb26cc344
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
@@ -0,0 +1,5 @@
+kms_cursor_crc@pipe-B-cursor-dpms
+kms_cursor_edge_walk@pipe-A-64x64-right-edge
+kms_cursor_edge_walk@pipe-A-64x64-top-edge
+kms_cursor_edge_walk@pipe-B-64x64-right-edge
+kms_cursor_edge_walk@pipe-B-64x64-top-edge
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt b/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
new file mode 100644
index 000000000000..26f9a03fc074
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
@@ -0,0 +1,46 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# Too unstable, machine ends up hanging after lots of Oopses
+kms_cursor_legacy.*
+
+# Started hanging the machine on Linux 5.19-rc2:
+#
+# [IGT] kms_plane_lowres: executing
+# [IGT] kms_plane_lowres: starting subtest pipe-F-tiling-y
+# [IGT] kms_plane_lowres: exiting, ret=77
+# Console: switching to colour frame buffer device 170x48
+# rockchip-drm display-subsystem: [drm] *ERROR* flip_done timed out
+# rockchip-drm display-subsystem: [drm] *ERROR* [CRTC:35:crtc-0] commit wait timed out
+# BUG: spinlock bad magic on CPU#3, kms_plane_lowre/482
+# 8<--- cut here ---
+# Unable to handle kernel paging request at virtual address 7812078e
+# [7812078e] *pgd=00000000
+# Internal error: Oops: 5 [#1] SMP ARM
+# Modules linked in:
+# CPU: 3 PID: 482 Comm: kms_plane_lowre Tainted: G        W         5.19.0-rc2-323596-g00535de92171 #1
+# Hardware name: Rockchip (Device Tree)
+# Process kms_plane_lowre (pid: 482, stack limit = 0x1193ac2b)
+#  spin_dump from do_raw_spin_lock+0xa4/0xe8
+#  do_raw_spin_lock from wait_for_completion_timeout+0x2c/0x120
+#  wait_for_completion_timeout from drm_crtc_commit_wait+0x18/0x7c
+#  drm_crtc_commit_wait from drm_atomic_helper_wait_for_dependencies+0x44/0x168
+#  drm_atomic_helper_wait_for_dependencies from commit_tail+0x34/0x180
+#  commit_tail from drm_atomic_helper_commit+0x164/0x18c
+#  drm_atomic_helper_commit from drm_atomic_commit+0xac/0xe4
+#  drm_atomic_commit from drm_client_modeset_commit_atomic+0x23c/0x284
+#  drm_client_modeset_commit_atomic from drm_client_modeset_commit_locked+0x60/0x1c8
+#  drm_client_modeset_commit_locked from drm_client_modeset_commit+0x24/0x40
+#  drm_client_modeset_commit from drm_fbdev_client_restore+0x58/0x94
+#  drm_fbdev_client_restore from drm_client_dev_restore+0x70/0xbc
+#  drm_client_dev_restore from drm_release+0xf4/0x114
+#  drm_release from __fput+0x74/0x240
+#  __fput from task_work_run+0x84/0xb4
+#  task_work_run from do_exit+0x34c/0xa20
+#  do_exit from do_group_exit+0x34/0x98
+#  do_group_exit from __wake_up_parent+0x0/0x18
+# Code: e595c008 12843d19 03e00000 03093168 (15940508) 
+# ---[ end trace 0000000000000000 ]---
+# note: kms_plane_lowre[482] exited with preempt_count 1
+# Fixing recursive fault but reboot is needed!
+kms_plane_lowres@pipe-F-tiling-y
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt b/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
new file mode 100644
index 000000000000..0f8afa7e2adc
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
@@ -0,0 +1,86 @@
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_color@pipe-A-legacy-gamma,Fail
+kms_color@pipe-B-legacy-gamma,Fail
+kms_cursor_crc@pipe-A-cursor-32x10-offscreen,Fail
+kms_cursor_crc@pipe-A-cursor-32x10-onscreen,Fail
+kms_cursor_crc@pipe-A-cursor-32x10-random,Fail
+kms_cursor_crc@pipe-A-cursor-32x10-rapid-movement,Fail
+kms_cursor_crc@pipe-A-cursor-32x10-sliding,Fail
+kms_cursor_crc@pipe-A-cursor-32x32-offscreen,Fail
+kms_cursor_crc@pipe-A-cursor-32x32-onscreen,Fail
+kms_cursor_crc@pipe-A-cursor-32x32-random,Fail
+kms_cursor_crc@pipe-A-cursor-32x32-rapid-movement,Fail
+kms_cursor_crc@pipe-A-cursor-32x32-sliding,Fail
+kms_cursor_crc@pipe-A-cursor-64x21-onscreen,Fail
+kms_cursor_crc@pipe-A-cursor-64x21-random,Fail
+kms_cursor_crc@pipe-A-cursor-64x21-sliding,Fail
+kms_cursor_crc@pipe-A-cursor-64x64-offscreen,Fail
+kms_cursor_crc@pipe-A-cursor-64x64-onscreen,Fail
+kms_cursor_crc@pipe-A-cursor-64x64-random,Fail
+kms_cursor_crc@pipe-A-cursor-64x64-rapid-movement,Fail
+kms_cursor_crc@pipe-A-cursor-64x64-sliding,Fail
+kms_cursor_crc@pipe-A-cursor-alpha-opaque,Fail
+kms_cursor_crc@pipe-A-cursor-alpha-transparent,Fail
+kms_cursor_crc@pipe-A-cursor-dpms,Fail
+kms_cursor_crc@pipe-A-cursor-size-change,Fail
+kms_cursor_crc@pipe-B-cursor-32x10-onscreen,Fail
+kms_cursor_crc@pipe-B-cursor-32x10-random,Fail
+kms_cursor_crc@pipe-B-cursor-32x10-rapid-movement,Fail
+kms_cursor_crc@pipe-B-cursor-32x10-sliding,Fail
+kms_cursor_crc@pipe-B-cursor-32x32-offscreen,Fail
+kms_cursor_crc@pipe-B-cursor-32x32-onscreen,Fail
+kms_cursor_crc@pipe-B-cursor-32x32-random,Fail
+kms_cursor_crc@pipe-B-cursor-32x32-rapid-movement,Fail
+kms_cursor_crc@pipe-B-cursor-32x32-sliding,Fail
+kms_cursor_crc@pipe-B-cursor-64x21-onscreen,Fail
+kms_cursor_crc@pipe-B-cursor-64x21-random,Fail
+kms_cursor_crc@pipe-B-cursor-64x21-rapid-movement,Fail
+kms_cursor_crc@pipe-B-cursor-64x64-offscreen,Fail
+kms_cursor_crc@pipe-B-cursor-64x64-onscreen,Fail
+kms_cursor_crc@pipe-B-cursor-64x64-random,Fail
+kms_cursor_crc@pipe-B-cursor-64x64-rapid-movement,Fail
+kms_cursor_crc@pipe-B-cursor-64x64-sliding,Fail
+kms_cursor_crc@pipe-B-cursor-alpha-opaque,Fail
+kms_cursor_crc@pipe-B-cursor-dpms,Fail
+kms_cursor_crc@pipe-B-cursor-size-change,Fail
+kms_cursor_edge_walk@pipe-A-64x64-bottom-edge,Fail
+kms_cursor_edge_walk@pipe-A-64x64-left-edge,Fail
+kms_cursor_edge_walk@pipe-A-64x64-top-edge,Fail
+kms_cursor_edge_walk@pipe-B-64x64-bottom-edge,Fail
+kms_cursor_edge_walk@pipe-B-64x64-right-edge,Fail
+kms_cursor_edge_walk@pipe-B-64x64-top-edge,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-A,Fail
+kms_pipe_crc_basic@nonblocking-crc-pipe-A,Fail
+kms_pipe_crc_basic@nonblocking-crc-pipe-A-frame-sequence,Fail
+kms_pipe_crc_basic@nonblocking-crc-pipe-B,Fail
+kms_pipe_crc_basic@nonblocking-crc-pipe-B-frame-sequence,Fail
+kms_pipe_crc_basic@read-crc-pipe-A,Fail
+kms_pipe_crc_basic@read-crc-pipe-A-frame-sequence,Fail
+kms_pipe_crc_basic@read-crc-pipe-B,Fail
+kms_pipe_crc_basic@read-crc-pipe-B-frame-sequence,Fail
+kms_plane@plane-panning-bottom-right,Fail
+kms_plane@plane-panning-top-left,Fail
+kms_plane_cursor@pipe-B-overlay-size-128,Fail
+kms_plane_cursor@pipe-B-overlay-size-256,Fail
+kms_plane_cursor@pipe-B-overlay-size-64,Fail
+kms_plane_cursor@pipe-B-primary-size-128,Fail
+kms_plane_cursor@pipe-B-primary-size-256,Fail
+kms_plane_cursor@pipe-B-primary-size-64,Fail
+kms_plane_cursor@pipe-B-viewport-size-128,Fail
+kms_plane_cursor@pipe-B-viewport-size-256,Fail
+kms_plane_cursor@pipe-B-viewport-size-64,Fail
+kms_plane_multiple@atomic-pipe-B-tiling-none,Fail
+kms_prime@basic-crc,Fail
+kms_rmfb@close-fd,Fail
+kms_universal_plane@universal-plane-pipe-B-functional,Fail
+kms_vblank@pipe-A-query-forked,Fail
+kms_vblank@pipe-A-query-idle,Fail
+kms_vblank@pipe-A-wait-busy,Fail
+kms_vblank@pipe-A-wait-forked,Fail
+kms_vblank@pipe-A-wait-forked-busy,Fail
+kms_vblank@pipe-B-query-forked,Fail
+kms_vblank@pipe-B-query-idle,Fail
+kms_vblank@pipe-B-wait-busy,Fail
+kms_vblank@pipe-B-wait-forked,Fail
+kms_vblank@pipe-B-wait-forked-busy,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt b/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
new file mode 100644
index 000000000000..b4c37a4315e4
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
@@ -0,0 +1,25 @@
+kms_cursor_crc@pipe-A-cursor-64x21-offscreen
+kms_cursor_crc@pipe-A-cursor-64x21-rapid-movement
+kms_cursor_crc@pipe-B-cursor-32x10-offscreen
+kms_cursor_crc@pipe-B-cursor-32x10-rapid-movement
+kms_cursor_crc@pipe-B-cursor-32x32-offscreen
+kms_cursor_crc@pipe-B-cursor-32x32-rapid-movement
+kms_cursor_crc@pipe-B-cursor-64x64-offscreen
+kms_cursor_crc@pipe-B-cursor-64x64-rapid-movement
+kms_cursor_edge_walk@pipe-A-64x64-right-edge
+kms_cursor_edge_walk@pipe-B-64x64-left-edge
+kms_flip@flip-vs-expired-vblank
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-B
+kms_plane_multiple@atomic-pipe-A-tiling-none
+kms_plane@plane-position-hole
+kms_sequence@get-forked
+kms_sequence@get-forked-busy
+kms_setmode@basic
+kms_vblank@pipe-A-accuracy-idle
+kms_vblank@pipe-A-query-busy
+kms_vblank@pipe-A-query-forked-busy
+kms_vblank@pipe-A-wait-idle
+kms_vblank@pipe-B-accuracy-idle
+kms_vblank@pipe-B-query-busy
+kms_vblank@pipe-B-query-forked-busy
+kms_vblank@pipe-B-wait-idle
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt b/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
new file mode 100644
index 000000000000..10c3d81a919a
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
@@ -0,0 +1,5 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# Too unstable, machine ends up hanging after lots of Oopses
+kms_cursor_legacy.*
diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt b/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
new file mode 100644
index 000000000000..2178bdd064dd
--- /dev/null
+++ b/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
@@ -0,0 +1,38 @@
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_addfb_basic@bad-pitch-65536,Fail
+kms_addfb_basic@bo-too-small,Fail
+kms_addfb_basic@size-max,Fail
+kms_addfb_basic@too-high,Fail
+kms_atomic_transition@plane-primary-toggle-with-vblank-wait,Fail
+kms_bw@linear-tiling-1-displays-1920x1080p,Fail
+kms_bw@linear-tiling-1-displays-2560x1440p,Fail
+kms_bw@linear-tiling-1-displays-3840x2160p,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
+kms_plane_scaling@planes-upscale-20x20,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
+kms_plane_scaling@upscale-with-modifier-20x20,Fail
+kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
+kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_vblank@crtc-id,Fail
+kms_vblank@invalid,Fail
+kms_vblank@pipe-A-accuracy-idle,Fail
+kms_vblank@pipe-A-query-busy,Fail
+kms_vblank@pipe-A-query-forked,Fail
+kms_vblank@pipe-A-query-forked-busy,Fail
+kms_vblank@pipe-A-query-idle,Fail
+kms_vblank@pipe-A-ts-continuation-idle,Fail
+kms_vblank@pipe-A-ts-continuation-modeset,Fail
+kms_vblank@pipe-A-ts-continuation-suspend,Fail
+kms_vblank@pipe-A-wait-busy,Fail
+kms_vblank@pipe-A-wait-forked,Fail
+kms_vblank@pipe-A-wait-forked-busy,Fail
+kms_vblank@pipe-A-wait-idle,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt b/drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt b/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt
new file mode 100644
index 000000000000..78be18174012
--- /dev/null
+++ b/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt
@@ -0,0 +1,6 @@
+# Hits a "refcount_t: underflow; use-after-free" in virtio_gpu_fence_event_process
+# When run in a particular order with other tests
+kms_cursor_legacy.*
+
+# Job just hangs without any output
+kms_flip@flip-vs-suspend.*
\ No newline at end of file
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 49+ messages in thread

* Re: [PATCH v5] drm: Add initial ci/ subdirectory
  2022-07-26 18:16       ` [PATCH v5] " Tomeu Vizoso
@ 2022-07-29 15:43         ` Rob Clark
  2022-08-10 18:24         ` Rodrigo Siqueira Jordao
  2022-08-16 15:37         ` [PATCH v6] " Tomeu Vizoso
  2 siblings, 0 replies; 49+ messages in thread
From: Rob Clark @ 2022-07-29 15:43 UTC (permalink / raw)
  To: Tomeu Vizoso
  Cc: Rob Clark, Jonathan Corbet, David Airlie, Kevin Hilman,
	linux-doc, linux-kernel, dri-devel, Neil Armstrong,
	Matthias Brugger, linux-mediatek, linux-amlogic, Carlo Caione,
	linux-rockchip, kernel, linux-arm-kernel

On Tue, Jul 26, 2022 at 11:17 AM Tomeu Vizoso
<tomeu.vizoso@collabora.com> wrote:
>
> And use it to store expectations about what the DRM drivers are
> supposed to pass in the IGT test suite.
>
> Also include a configuration file that points to the out-of-tree CI
> scripts.
>
> By storing the test expectations along the code we can make sure both
> stay in sync with each other, and so we can know when a code change
> breaks those expectations.
>
> This will allow all contributors to drm to reuse the infrastructure
> already in gitlab.freedesktop.org to test the driver on several
> generations of the hardware.
>
> v2:
>   - Fix names of result expectation files to match SoC
>   - Don't execute tests that are going to skip on all boards
>
> v3:
>   - Remove tracking of dmesg output during test execution
>
> v4:
>   - Move up to drivers/gpu/drm
>   - Add support for a bunch of other drivers
>   - Explain how to incorporate fixes for CI from a
>     ${TARGET_BRANCH}-external-fixes branch
>   - Remove tests that pass from expected results file, to reduce the
>     size of in-tree files
>   - Add docs about how to deal with outages in automated testing labs
>   - Specify the exact SHA of the CI scripts to be used
>
> v5:
>   - Remove unneeded skips from Meson expectations file
>   - Use a more advanced runner that detects flakes automatically
>   - Use a more succint format for the expectations
>   - Run many more tests (and use sharding to finish in time)
>   - Use skip lists to avoid hanging machines
>   - Add some build testing
>   - Build IGT in each pipeline for faster uprevs
>   - List failures in the GitLab UI
>
> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>

This looks good to me

Reviewed-by: Rob Clark <robdclark@gmail.com>


> ---
>  Documentation/gpu/automated_testing.rst       | 84 ++++++++++++++++++
>  drivers/gpu/drm/ci/amdgpu-stoney-fails.txt    | 13 +++
>  drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt   | 20 +++++
>  drivers/gpu/drm/ci/amdgpu-stoney-skips.txt    |  2 +
>  drivers/gpu/drm/ci/gitlab-ci.yml              | 13 +++
>  drivers/gpu/drm/ci/i915-amly-flakes.txt       | 32 +++++++
>  drivers/gpu/drm/ci/i915-amly-skips.txt        |  2 +
>  drivers/gpu/drm/ci/i915-apl-fails.txt         | 29 +++++++
>  drivers/gpu/drm/ci/i915-apl-flakes.txt        |  1 +
>  drivers/gpu/drm/ci/i915-apl-skips.txt         |  2 +
>  drivers/gpu/drm/ci/i915-cml-flakes.txt        | 36 ++++++++
>  drivers/gpu/drm/ci/i915-glk-flakes.txt        | 40 +++++++++
>  drivers/gpu/drm/ci/i915-glk-skips.txt         |  2 +
>  drivers/gpu/drm/ci/i915-kbl-fails.txt         |  8 ++
>  drivers/gpu/drm/ci/i915-kbl-flakes.txt        | 24 ++++++
>  drivers/gpu/drm/ci/i915-kbl-skips.txt         |  2 +
>  drivers/gpu/drm/ci/i915-tgl-fails.txt         | 19 ++++
>  drivers/gpu/drm/ci/i915-tgl-flakes.txt        |  6 ++
>  drivers/gpu/drm/ci/i915-tgl-skips.txt         |  8 ++
>  drivers/gpu/drm/ci/i915-whl-fails.txt         | 30 +++++++
>  drivers/gpu/drm/ci/i915-whl-flakes.txt        |  1 +
>  drivers/gpu/drm/ci/mediatek-mt8173-fails.txt  | 29 +++++++
>  drivers/gpu/drm/ci/mediatek-mt8183-fails.txt  | 10 +++
>  drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt | 14 +++
>  drivers/gpu/drm/ci/meson-g12b-fails.txt       |  5 ++
>  drivers/gpu/drm/ci/meson-g12b-flakes.txt      |  4 +
>  drivers/gpu/drm/ci/msm-apq8016-fails.txt      | 15 ++++
>  drivers/gpu/drm/ci/msm-apq8016-flakes.txt     |  4 +
>  drivers/gpu/drm/ci/msm-apq8096-fails.txt      |  2 +
>  drivers/gpu/drm/ci/msm-apq8096-flakes.txt     |  4 +
>  drivers/gpu/drm/ci/msm-apq8096-skips.txt      |  2 +
>  drivers/gpu/drm/ci/msm-sc7180-fails.txt       | 22 +++++
>  drivers/gpu/drm/ci/msm-sc7180-flakes.txt      | 14 +++
>  drivers/gpu/drm/ci/msm-sc7180-skips.txt       | 18 ++++
>  drivers/gpu/drm/ci/msm-sdm845-fails.txt       | 44 ++++++++++
>  drivers/gpu/drm/ci/msm-sdm845-flakes.txt      | 33 +++++++
>  drivers/gpu/drm/ci/msm-sdm845-skips.txt       |  2 +
>  drivers/gpu/drm/ci/rockchip-rk3288-fails.txt  | 75 ++++++++++++++++
>  drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt |  5 ++
>  drivers/gpu/drm/ci/rockchip-rk3288-skips.txt  | 46 ++++++++++
>  drivers/gpu/drm/ci/rockchip-rk3399-fails.txt  | 86 +++++++++++++++++++
>  drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt | 25 ++++++
>  drivers/gpu/drm/ci/rockchip-rk3399-skips.txt  |  5 ++
>  drivers/gpu/drm/ci/virtio_gpu-none-fails.txt  | 38 ++++++++
>  drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt |  0
>  drivers/gpu/drm/ci/virtio_gpu-none-skips.txt  |  6 ++
>  46 files changed, 882 insertions(+)
>  create mode 100644 Documentation/gpu/automated_testing.rst
>  create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/gitlab-ci.yml
>  create mode 100644 drivers/gpu/drm/ci/i915-amly-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/i915-amly-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/i915-apl-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/i915-apl-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/i915-apl-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/i915-cml-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/i915-glk-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/i915-glk-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/i915-kbl-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/i915-kbl-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/i915-kbl-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/i915-tgl-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/i915-tgl-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/i915-tgl-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/i915-whl-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/i915-whl-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/meson-g12b-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/meson-g12b-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/msm-apq8016-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/msm-apq8016-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/msm-apq8096-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/msm-apq8096-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/msm-apq8096-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/msm-sc7180-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/msm-sc7180-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/msm-sc7180-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/msm-sdm845-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/msm-sdm845-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/msm-sdm845-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-skips.txt
>
> diff --git a/Documentation/gpu/automated_testing.rst b/Documentation/gpu/automated_testing.rst
> new file mode 100644
> index 000000000000..61003ecc7b6e
> --- /dev/null
> +++ b/Documentation/gpu/automated_testing.rst
> @@ -0,0 +1,84 @@
> +.. SPDX-License-Identifier: GPL-2.0+
> +
> +=========================================
> +Automated testing of the DRM subsystem
> +=========================================
> +
> +
> +Introduction
> +============
> +
> +Making sure that changes to the core or drivers don't introduce regressions can be very time consuming when lots of different hardware configurations need to be tested. Moreover, it isn't practical for each person interested in this testing to have to acquire and maintain what can be a considerable amount of hardware.
> +
> +Also, it is desirable for developers to check for regressions in their code by themselves, instead of relying on the maintainers finding them and then reporting back.
> +
> +There are facilities in gitlab.freedesktop.org to automatically test Mesa that can be used as well for testing the DRM subsystem. This document explains how people interested in testing it can use this shared infrastructure to save quite some time and effort.
> +
> +
> +Relevant files
> +==============
> +
> +drivers/gpu/drm/ci/gitlab-ci.yml
> +--------------------------------
> +
> +Specifies the specific version of the scripts to be used. GitLab CI will use the values defined in this file to fetch the right scripts.
> +
> +
> +drivers/gpu/drm/ci/${DRIVER_NAME}.testlist
> +------------------------------------------
> +
> +Specifies the tests that the current code is expected to be able to reliably run for ${DRIVER_NAME}. These tests are expected to not hang the DUT (Device Under Testing) when running on the revision they belong to, and to give consistent results.
> +
> +
> +drivers/gpu/drm/ci/${DRIVER_NAME}_*_results.txt
> +----------------------------------------
> +
> +Specifies the expected results of running this specific kernel revision on a given hardware configuration.
> +
> +
> +How to enable automated testing on your tree
> +============================================
> +
> +1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one yet
> +
> +2. In your kernel repo's configuration (eg. https://gitlab.freedesktop.org/tomeu/linux/-/settings/ci_cd), change the CI/CD configuration file from .gitlab-ci.yml to drivers/gpu/drm/ci/gitlab-ci.yml.
> +
> +3. Next time you push to this repository, you will see a CI pipeline being created (eg. https://gitlab.freedesktop.org/tomeu/linux/-/pipelines)
> +
> +4. The various jobs will be run and when the pipeline is finished, all jobs should be green unless a regression has been found.
> +
> +
> +How to update test expectations
> +===============================
> +
> +If your changes to the code fix any tests, you will have to update one or more of the files in drivers/gpu/drm/ci/${DRIVER_NAME}_*_results.txt, for each of the test platforms affected by the change.
> +
> +If you have run a pipeline and it failed because of a mismatched test result, you will have been offered a patch at the end of the run that you can apply after reviewing it.
> +
> +
> +How to expand coverage
> +======================
> +
> +If your code changes makes it possible to run more tests (by solving reliability issues, for example), more tests can be added to this list, and then the expected results updated with the patch file that will be printed at the end of each job.
> +
> +If there is a need for updating the version of IGT being used (maybe you have added more tests to it), follow the instructions at https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/tree/main#upreving-igt.
> +
> +
> +How to test your changes to the scripts
> +==========================================
> +
> +For testing changes to the scripts in the drm-ci repo, change the DRM_CI_PROJECT_PATH variable in drivers/gpu/drm/ci/gitlab-ci.yml to match your fork of the project (eg. tomeu/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
> +
> +
> +How to incorporate external fixes in your testing
> +=================================================
> +
> +Often, regressions in other trees will prevent testing changes local to the tree under test. These fixes will be automatically merged in during the build jobs from a branch in the target tree that is named as ${TARGET_BRANCH}-external-fixes.
> +
> +If the pipeline is not in a merge request and a branch with the same name exists in the local tree, commits from that branch will be merged in as well.
> +
> +
> +How to deal with automated testing labs that may be down
> +========================================================
> +
> +If a hardware farm is down and thus causing pipelines to fail that would otherwise pass, one can disable all jobs that would be submitted to that farm by editing the file at https://gitlab.freedesktop.org/gfx-ci/lab-status/-/blob/main/lab-status.yml.
> diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt b/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
> new file mode 100644
> index 000000000000..e721568b6ec3
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
> @@ -0,0 +1,13 @@
> +kms_addfb_basic@bad-pitch-65536,Fail
> +kms_addfb_basic@bo-too-small,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
> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> +kms_cursor_crc@pipe-A-cursor-size-change,Fail
> +kms_cursor_crc@pipe-B-cursor-size-change,Fail
> +kms_hdr@bpc-switch,Fail
> +kms_hdr@bpc-switch-dpms,Fail
> +kms_plane_multiple@atomic-pipe-A-tiling-none,Fail
> +kms_rotation_crc@primary-rotation-180,Fail
> +kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt b/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
> new file mode 100644
> index 000000000000..a2cbc339838c
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
> @@ -0,0 +1,20 @@
> +kms_addfb_basic@too-high
> +kms_atomic_transition@plane-all-modeset-transition-internal-panels
> +kms_atomic_transition@plane-all-transition
> +kms_atomic_transition@plane-use-after-nonblocking-unbind
> +kms_bw@linear-tiling-1-displays-1920x1080p
> +kms_bw@linear-tiling-2-displays-1920x1080p
> +kms_bw@linear-tiling-2-displays-2560x1440p
> +kms_bw@linear-tiling-3-displays-2560x1440p
> +kms_bw@linear-tiling-3-displays-3840x2160p
> +kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
> +kms_cursor_edge_walk@pipe-A-64x64-right-edge
> +kms_cursor_edge_walk@pipe-A-64x64-top-edge
> +kms_cursor_edge_walk@pipe-B-64x64-bottom-edge
> +kms_cursor_edge_walk@pipe-B-64x64-left-edge
> +kms_cursor_edge_walk@pipe-B-64x64-right-edge
> +kms_cursor_edge_walk@pipe-B-64x64-top-edge
> +kms_plane_multiple@atomic-pipe-B-tiling-none
> +kms_plane@pixel-format
> +kms_plane_scaling@downscale-with-rotation-factor-0-5
> +kms_universal_plane@disable-primary-vs-flip-pipe-A
> diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt b/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
> new file mode 100644
> index 000000000000..e2c538a0f954
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
> @@ -0,0 +1,2 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml
> new file mode 100644
> index 000000000000..8898bbe0f180
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/gitlab-ci.yml
> @@ -0,0 +1,13 @@
> +variables:
> +  # Change this to use your fork of drm-ci
> +  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
> +  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha bccff240ca042820484096f0782e8f060bd83bca
> +
> +  UPSTREAM_REPO: git://anongit.freedesktop.org/drm/drm
> +  TARGET_BRANCH: drm-next
> +
> +include:
> +  - project: *drm-ci-project-path
> +    ref: *drm-ci-commit-sha
> +    file:
> +      - '.gitlab-ci.yml'
> diff --git a/drivers/gpu/drm/ci/i915-amly-flakes.txt b/drivers/gpu/drm/ci/i915-amly-flakes.txt
> new file mode 100644
> index 000000000000..67d78f10b671
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-amly-flakes.txt
> @@ -0,0 +1,32 @@
> +kms_bw@linear-tiling-2-displays-1920x1080p
> +kms_bw@linear-tiling-2-displays-2560x1440p
> +kms_bw@linear-tiling-2-displays-3840x2160p
> +kms_bw@linear-tiling-3-displays-1920x1080p
> +kms_bw@linear-tiling-3-displays-2560x1440p
> +kms_bw@linear-tiling-3-displays-3840x2160p
> +kms_bw@linear-tiling-4-displays-1920x1080p
> +kms_bw@linear-tiling-4-displays-2560x1440p
> +kms_bw@linear-tiling-4-displays-3840x2160p
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
> +kms_plane_alpha_blend@pipe-A-alpha-basic
> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-A-constant-alpha-max
> +kms_plane_alpha_blend@pipe-B-alpha-basic
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max
> +kms_plane_alpha_blend@pipe-C-alpha-basic
> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-C-constant-alpha-max
> +kms_sysfs_edid_timing
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-amly-skips.txt b/drivers/gpu/drm/ci/i915-amly-skips.txt
> new file mode 100644
> index 000000000000..e2c538a0f954
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-amly-skips.txt
> @@ -0,0 +1,2 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-apl-fails.txt b/drivers/gpu/drm/ci/i915-apl-fails.txt
> new file mode 100644
> index 000000000000..a077f29d5cba
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-apl-fails.txt
> @@ -0,0 +1,29 @@
> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-4-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-4-displays-3840x2160p,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
> +kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
> +kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
> +kms_sysfs_edid_timing,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-apl-flakes.txt b/drivers/gpu/drm/ci/i915-apl-flakes.txt
> new file mode 100644
> index 000000000000..618bbe6bb793
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-apl-flakes.txt
> @@ -0,0 +1 @@
> +kms_frontbuffer_tracking@fbc-tiling-linear
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-apl-skips.txt b/drivers/gpu/drm/ci/i915-apl-skips.txt
> new file mode 100644
> index 000000000000..e2c538a0f954
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-apl-skips.txt
> @@ -0,0 +1,2 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-cml-flakes.txt b/drivers/gpu/drm/ci/i915-cml-flakes.txt
> new file mode 100644
> index 000000000000..a214419c6dc5
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-cml-flakes.txt
> @@ -0,0 +1,36 @@
> +kms_bw@linear-tiling-2-displays-1920x1080p
> +kms_bw@linear-tiling-2-displays-2560x1440p
> +kms_bw@linear-tiling-2-displays-3840x2160p
> +kms_bw@linear-tiling-3-displays-1920x1080p
> +kms_bw@linear-tiling-3-displays-2560x1440p
> +kms_bw@linear-tiling-3-displays-3840x2160p
> +kms_bw@linear-tiling-4-displays-1920x1080p
> +kms_bw@linear-tiling-4-displays-2560x1440p
> +kms_bw@linear-tiling-4-displays-3840x2160p
> +kms_flip@flip-vs-suspend
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
> +kms_hdr@bpc-switch-suspend
> +kms_plane_alpha_blend@pipe-A-alpha-basic
> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-A-constant-alpha-max
> +kms_plane_alpha_blend@pipe-B-alpha-basic
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max
> +kms_plane_alpha_blend@pipe-C-alpha-basic
> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-C-constant-alpha-max
> +kms_psr2_su@page_flip-NV12
> +kms_psr2_su@page_flip-P010
> +kms_setmode@basic
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-glk-flakes.txt b/drivers/gpu/drm/ci/i915-glk-flakes.txt
> new file mode 100644
> index 000000000000..aedb3d2ef885
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-glk-flakes.txt
> @@ -0,0 +1,40 @@
> +kms_bw@linear-tiling-1-displays-3840x2160p
> +kms_bw@linear-tiling-2-displays-1920x1080p
> +kms_bw@linear-tiling-2-displays-2560x1440p
> +kms_bw@linear-tiling-2-displays-3840x2160p
> +kms_bw@linear-tiling-3-displays-1920x1080p
> +kms_bw@linear-tiling-3-displays-2560x1440p
> +kms_bw@linear-tiling-3-displays-3840x2160p
> +kms_bw@linear-tiling-4-displays-1920x1080p
> +kms_bw@linear-tiling-4-displays-2560x1440p
> +kms_bw@linear-tiling-4-displays-3840x2160p
> +kms_flip@blocking-wf_vblank
> +kms_flip@wf_vblank-ts-check
> +kms_flip@wf_vblank-ts-check-interruptible
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
> +kms_frontbuffer_tracking@fbc-tiling-linear
> +kms_plane_alpha_blend@pipe-A-alpha-basic
> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-A-constant-alpha-max
> +kms_plane_alpha_blend@pipe-B-alpha-basic
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max
> +kms_plane_alpha_blend@pipe-C-alpha-basic
> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-C-constant-alpha-max
> +kms_rotation_crc@multiplane-rotation
> +kms_rotation_crc@multiplane-rotation-cropping-bottom
> +kms_rotation_crc@multiplane-rotation-cropping-top
> +kms_setmode@basic
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-glk-skips.txt b/drivers/gpu/drm/ci/i915-glk-skips.txt
> new file mode 100644
> index 000000000000..e2c538a0f954
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-glk-skips.txt
> @@ -0,0 +1,2 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-kbl-fails.txt b/drivers/gpu/drm/ci/i915-kbl-fails.txt
> new file mode 100644
> index 000000000000..f81f065e27e8
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-kbl-fails.txt
> @@ -0,0 +1,8 @@
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
> +kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-kbl-flakes.txt b/drivers/gpu/drm/ci/i915-kbl-flakes.txt
> new file mode 100644
> index 000000000000..f82017654cf5
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-kbl-flakes.txt
> @@ -0,0 +1,24 @@
> +kms_bw@linear-tiling-2-displays-1920x1080p
> +kms_bw@linear-tiling-2-displays-3840x2160p
> +kms_bw@linear-tiling-3-displays-1920x1080p
> +kms_bw@linear-tiling-3-displays-2560x1440p
> +kms_bw@linear-tiling-3-displays-3840x2160p
> +kms_bw@linear-tiling-4-displays-1920x1080p
> +kms_bw@linear-tiling-4-displays-3840x2160p
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
> +kms_plane_alpha_blend@pipe-A-alpha-basic
> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-B-alpha-basic
> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max
> +kms_plane_alpha_blend@pipe-C-alpha-basic
> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
> +kms_sysfs_edid_timing
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-kbl-skips.txt b/drivers/gpu/drm/ci/i915-kbl-skips.txt
> new file mode 100644
> index 000000000000..e2c538a0f954
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-kbl-skips.txt
> @@ -0,0 +1,2 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-tgl-fails.txt b/drivers/gpu/drm/ci/i915-tgl-fails.txt
> new file mode 100644
> index 000000000000..270644ce220c
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-tgl-fails.txt
> @@ -0,0 +1,19 @@
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-4-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-4-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-5-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-5-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-5-displays-3840x2160p,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
> +kms_rotation_crc@bad-pixel-format,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-tgl-flakes.txt b/drivers/gpu/drm/ci/i915-tgl-flakes.txt
> new file mode 100644
> index 000000000000..15fba77ff19d
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-tgl-flakes.txt
> @@ -0,0 +1,6 @@
> +kms_draw_crc@draw-method-rgb565-blt-untiled
> +kms_draw_crc@draw-method-xrgb8888-mmap-gtt-untiled
> +kms_draw_crc@draw-method-xrgb8888-mmap-gtt-xtiled
> +kms_flip@blocking-absolute-wf_vblank
> +kms_flip@bo-too-big-interruptible
> +kms_flip@flip-vs-rmfb-interruptible
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-tgl-skips.txt b/drivers/gpu/drm/ci/i915-tgl-skips.txt
> new file mode 100644
> index 000000000000..14f33c7ba03b
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-tgl-skips.txt
> @@ -0,0 +1,8 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> +
> +# GPU hangs, then the whole machine
> +gem_eio.*
> +
> +# Whole machine hangs
> +kms_flip@absolute-wf_vblank@a-edp1
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-whl-fails.txt b/drivers/gpu/drm/ci/i915-whl-fails.txt
> new file mode 100644
> index 000000000000..dbfedfa5d63f
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-whl-fails.txt
> @@ -0,0 +1,30 @@
> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-4-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-4-displays-3840x2160p,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
> +kms_frontbuffer_tracking@fbc-tiling-linear,Fail
> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
> +kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
> +kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
> +kms_sysfs_edid_timing,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-whl-flakes.txt b/drivers/gpu/drm/ci/i915-whl-flakes.txt
> new file mode 100644
> index 000000000000..6bcac5b84fbb
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-whl-flakes.txt
> @@ -0,0 +1 @@
> +kms_flip@flip-vs-suspend
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt b/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
> new file mode 100644
> index 000000000000..7f74fb9afc99
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
> @@ -0,0 +1,29 @@
> +kms_3d,Fail
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_bw@linear-tiling-1-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-1-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-1-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> +kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
> +kms_color@pipe-B-invalid-gamma-lut-sizes,Fail
> +kms_force_connector_basic@force-connector-state,Fail
> +kms_force_connector_basic@force-edid,Fail
> +kms_force_connector_basic@force-load-detect,Fail
> +kms_force_connector_basic@prune-stale-modes,Fail
> +kms_invalid_mode@int-max-clock,Fail
> +kms_plane_scaling@planes-upscale-20x20,Fail
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
> +kms_plane_scaling@upscale-with-modifier-20x20,Fail
> +kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
> +kms_plane_scaling@upscale-with-rotation-20x20,Fail
> +kms_properties@get_properties-sanity-atomic,Fail
> +kms_properties@plane-properties-atomic,Fail
> +kms_properties@plane-properties-legacy,Fail
> +kms_rmfb@close-fd,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt b/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
> new file mode 100644
> index 000000000000..6ff81d00e84e
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
> @@ -0,0 +1,10 @@
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_bw@linear-tiling-1-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> +kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
> +kms_plane_scaling@upscale-with-rotation-20x20,Fail
> +kms_rmfb@close-fd,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt b/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
> new file mode 100644
> index 000000000000..208890b79eb0
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
> @@ -0,0 +1,14 @@
> +core_setmaster_vs_auth
> +kms_bw@linear-tiling-1-displays-1920x1080p
> +kms_bw@linear-tiling-1-displays-3840x2160p
> +kms_bw@linear-tiling-3-displays-1920x1080p
> +kms_cursor_legacy@cursor-vs-flip-atomic
> +kms_plane_scaling@invalid-num-scalers
> +kms_plane_scaling@planes-upscale-20x20
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5
> +kms_plane_scaling@upscale-with-modifier-20x20
> +kms_plane_scaling@upscale-with-pixel-format-20x20
> +kms_prop_blob@invalid-set-prop-any
> +kms_properties@get_properties-sanity-atomic
> +kms_properties@plane-properties-atomic
> +kms_properties@plane-properties-legacy
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/meson-g12b-fails.txt b/drivers/gpu/drm/ci/meson-g12b-fails.txt
> new file mode 100644
> index 000000000000..345e1426b3a3
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/meson-g12b-fails.txt
> @@ -0,0 +1,5 @@
> +kms_3d,Fail
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_properties@connector-properties-atomic,Fail
> +kms_properties@get_properties-sanity-atomic,Fail
> +kms_properties@get_properties-sanity-non-atomic,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/meson-g12b-flakes.txt b/drivers/gpu/drm/ci/meson-g12b-flakes.txt
> new file mode 100644
> index 000000000000..b63329d06767
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/meson-g12b-flakes.txt
> @@ -0,0 +1,4 @@
> +kms_force_connector_basic@force-connector-state
> +kms_force_connector_basic@force-edid
> +kms_force_connector_basic@force-load-detect
> +kms_force_connector_basic@prune-stale-modes
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/msm-apq8016-fails.txt b/drivers/gpu/drm/ci/msm-apq8016-fails.txt
> new file mode 100644
> index 000000000000..16c2dfab3f16
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-apq8016-fails.txt
> @@ -0,0 +1,15 @@
> +kms_3d,Fail
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_cursor_legacy@all-pipes-forked-move,Fail
> +kms_cursor_legacy@all-pipes-torture-bo,Fail
> +kms_cursor_legacy@all-pipes-forked-bo,Fail
> +kms_cursor_legacy@all-pipes-single-bo,Fail
> +kms_cursor_legacy@all-pipes-single-move,Fail
> +kms_cursor_legacy@all-pipes-torture-move,Fail
> +kms_cursor_legacy@pipe-A-forked-bo,Fail
> +kms_cursor_legacy@pipe-A-forked-move,Fail
> +kms_cursor_legacy@pipe-A-single-bo,Fail
> +kms_cursor_legacy@pipe-A-single-move,Fail
> +kms_cursor_legacy@pipe-A-torture-bo,Fail
> +kms_cursor_legacy@pipe-A-torture-move,Fail
> +kms_hdmi_inject@inject-4k,Fail
> diff --git a/drivers/gpu/drm/ci/msm-apq8016-flakes.txt b/drivers/gpu/drm/ci/msm-apq8016-flakes.txt
> new file mode 100644
> index 000000000000..b63329d06767
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-apq8016-flakes.txt
> @@ -0,0 +1,4 @@
> +kms_force_connector_basic@force-connector-state
> +kms_force_connector_basic@force-edid
> +kms_force_connector_basic@force-load-detect
> +kms_force_connector_basic@prune-stale-modes
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/msm-apq8096-fails.txt b/drivers/gpu/drm/ci/msm-apq8096-fails.txt
> new file mode 100644
> index 000000000000..88a1fc0a3b0d
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-apq8096-fails.txt
> @@ -0,0 +1,2 @@
> +kms_3d,Fail
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> diff --git a/drivers/gpu/drm/ci/msm-apq8096-flakes.txt b/drivers/gpu/drm/ci/msm-apq8096-flakes.txt
> new file mode 100644
> index 000000000000..b63329d06767
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-apq8096-flakes.txt
> @@ -0,0 +1,4 @@
> +kms_force_connector_basic@force-connector-state
> +kms_force_connector_basic@force-edid
> +kms_force_connector_basic@force-load-detect
> +kms_force_connector_basic@prune-stale-modes
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/msm-apq8096-skips.txt b/drivers/gpu/drm/ci/msm-apq8096-skips.txt
> new file mode 100644
> index 000000000000..cd49c8ce2059
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-apq8096-skips.txt
> @@ -0,0 +1,2 @@
> +# Whole machine hangs
> +kms_cursor_legacy@all-pipes-torture-move
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/msm-sc7180-fails.txt b/drivers/gpu/drm/ci/msm-sc7180-fails.txt
> new file mode 100644
> index 000000000000..0b159b6469c8
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-sc7180-fails.txt
> @@ -0,0 +1,22 @@
> +kms_cursor_legacy@cursor-vs-flip-toggle,Fail
> +kms_cursor_legacy@cursorA-vs-flipA-atomic-transitions,Crash
> +kms_plane@pixel-format,Fail
> +kms_plane@pixel-format-source-clamping,Fail
> +kms_plane@plane-position-covered,Fail
> +kms_plane@plane-position-hole,Fail
> +kms_plane@plane-position-hole-dpms,Fail
> +kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
> +kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
> +kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-7efc,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-basic,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
> +kms_plane_alpha_blend@pipe-B-constant-alpha-mid,Fail
> +kms_plane_alpha_blend@pipe-B-coverage-7efc,Fail
> +kms_plane_alpha_blend@pipe-B-coverage-vs-premult-vs-constant,Fail
> +kms_plane_multiple@atomic-pipe-A-tiling-none,Crash
> +kms_rmfb@close-fd,Fail
> +kms_rotation_crc@primary-rotation-180,Fail
> +kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
> +kms_universal_plane@disable-primary-vs-flip-pipe-b,Fail
> diff --git a/drivers/gpu/drm/ci/msm-sc7180-flakes.txt b/drivers/gpu/drm/ci/msm-sc7180-flakes.txt
> new file mode 100644
> index 000000000000..6022edace190
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-sc7180-flakes.txt
> @@ -0,0 +1,14 @@
> +# Test ends up reading CRC from frame before cursor update
> +# sometimes.. tbd if this is a kernel CRC bug or a test
> +# bug
> +kms_cursor_crc@pipe-.*
> +
> +kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
> +kms_cursor_edge_walk@pipe-A-64x64-left-edge
> +kms_cursor_edge_walk@pipe-A-64x64-right-edge
> +kms_cursor_edge_walk@pipe-A-64x64-top-edge
> +kms_cursor_edge_walk@pipe-B-64x64-bottom-edge
> +kms_cursor_edge_walk@pipe-B-64x64-left-edge
> +kms_cursor_edge_walk@pipe-B-64x64-right-edge
> +kms_cursor_edge_walk@pipe-B-64x64-top-edge
> +kms_plane_multiple@atomic-pipe-A-tiling-none
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/msm-sc7180-skips.txt b/drivers/gpu/drm/ci/msm-sc7180-skips.txt
> new file mode 100644
> index 000000000000..40916ddff81f
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-sc7180-skips.txt
> @@ -0,0 +1,18 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> +
> +# Test incorrectly assumes that CTM support implies gamma/degamma
> +# LUT support.  None of the subtests handle the case of only having
> +# CTM support
> +kms_color.*
> +
> +# 4k@60 is not supported on this hw, but driver doesn't handle it
> +# too gracefully.. https://gitlab.freedesktop.org/drm/msm/-/issues/15
> +kms_bw@linear-tiling-.*-displays-3840x2160p
> +
> +# Until igt fix lands: https://patchwork.freedesktop.org/patch/493175/
> +kms_bw@linear-tiling-2.*
> +kms_bw@linear-tiling-3.*
> +kms_bw@linear-tiling-4.*
> +kms_bw@linear-tiling-5.*
> +kms_bw@linear-tiling-6.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/msm-sdm845-fails.txt b/drivers/gpu/drm/ci/msm-sdm845-fails.txt
> new file mode 100644
> index 000000000000..8133927a44df
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-sdm845-fails.txt
> @@ -0,0 +1,44 @@
> +kms_color@pipe-A-ctm-0-25,Fail
> +kms_color@pipe-A-ctm-0-5,Fail
> +kms_color@pipe-A-ctm-0-75,Fail
> +kms_color@pipe-A-ctm-blue-to-red,Fail
> +kms_color@pipe-A-ctm-green-to-red,Fail
> +kms_color@pipe-A-ctm-max,Fail
> +kms_color@pipe-A-ctm-negative,Fail
> +kms_color@pipe-A-ctm-red-to-blue,Fail
> +kms_color@pipe-A-legacy-gamma,Fail
> +kms_cursor_legacy@basic-flip-after-cursor-atomic,Fail
> +kms_cursor_legacy@basic-flip-after-cursor-legacy,Fail
> +kms_cursor_legacy@basic-flip-before-cursor-atomic,Fail
> +kms_cursor_legacy@basic-flip-before-cursor-legacy,Fail
> +kms_cursor_legacy@cursor-vs-flip-atomic,Fail
> +kms_cursor_legacy@cursor-vs-flip-atomic-transitions,Fail
> +kms_cursor_legacy@cursor-vs-flip-legacy,Fail
> +kms_cursor_legacy@cursor-vs-flip-toggle,Fail
> +kms_cursor_legacy@flip-vs-cursor-atomic,Fail
> +kms_cursor_legacy@flip-vs-cursor-crc-atomic,Fail
> +kms_cursor_legacy@flip-vs-cursor-crc-legacy,Fail
> +kms_cursor_legacy@flip-vs-cursor-legacy,Fail
> +kms_cursor_legacy@short-flip-after-cursor-atomic-transitions,Fail
> +kms_cursor_legacy@short-flip-after-cursor-toggle,Fail
> +kms_cursor_legacy@short-flip-before-cursor-atomic-transitions,Fail
> +kms_cursor_legacy@short-flip-before-cursor-toggle,Fail
> +kms_plane@pixel-format,Fail
> +kms_plane@pixel-format-source-clamping,Fail
> +kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
> +kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
> +kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
> +kms_plane_cursor@pipe-A-overlay-size-128,Fail
> +kms_plane_cursor@pipe-A-overlay-size-256,Fail
> +kms_plane_cursor@pipe-A-overlay-size-64,Fail
> +kms_plane_cursor@pipe-A-viewport-size-128,Fail
> +kms_plane_cursor@pipe-A-viewport-size-256,Fail
> +kms_plane_cursor@pipe-A-viewport-size-64,Fail
> +kms_plane_scaling@downscale-with-pixel-format-factor-0-25,Timeout
> +kms_plane_scaling@downscale-with-pixel-format-factor-0-5,Timeout
> +kms_plane_scaling@downscale-with-pixel-format-factor-0-75,Timeout
> +kms_plane_scaling@invalid-num-scalers,Fail
> +kms_plane_scaling@planes-downscale-factor-0-25,Fail
> +kms_plane_scaling@scaler-with-clipping-clamping,Timeout
> +kms_plane_scaling@scaler-with-pixel-format-unity-scaling,Timeout
> +kms_rmfb@close-fd,Fail
> diff --git a/drivers/gpu/drm/ci/msm-sdm845-flakes.txt b/drivers/gpu/drm/ci/msm-sdm845-flakes.txt
> new file mode 100644
> index 000000000000..da4406b74828
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-sdm845-flakes.txt
> @@ -0,0 +1,33 @@
> +# Test ends up reading CRC from frame before cursor update
> +# sometimes.. tbd if this is a kernel CRC bug or a test
> +# bug
> +kms_cursor_crc@pipe-A-cursor-alpha-opaque
> +kms_cursor_crc@pipe-A-cursor-dpms
> +kms_cursor_crc@pipe-A-cursor-size-change
> +kms_cursor_legacy@flip-vs-cursor-toggle
> +kms_cursor_legacy@pipe-A-forked-bo
> +kms_cursor_legacy@pipe-A-forked-move
> +kms_cursor_crc@pipe-A-cursor-32x10-offscreen
> +kms_cursor_crc@pipe-A-cursor-32x10-onscreen
> +kms_cursor_crc@pipe-A-cursor-32x10-random
> +kms_cursor_crc@pipe-A-cursor-32x10-sliding
> +kms_cursor_crc@pipe-A-cursor-32x32-offscreen
> +kms_cursor_crc@pipe-A-cursor-32x32-onscreen
> +kms_cursor_crc@pipe-A-cursor-32x32-random
> +kms_cursor_crc@pipe-A-cursor-32x32-sliding
> +kms_cursor_crc@pipe-A-cursor-64x21-offscreen
> +kms_cursor_crc@pipe-A-cursor-64x21-onscreen
> +kms_cursor_crc@pipe-A-cursor-64x21-random
> +kms_cursor_crc@pipe-A-cursor-64x21-sliding
> +kms_cursor_crc@pipe-A-cursor-64x64-offscreen
> +kms_cursor_crc@pipe-A-cursor-64x64-onscreen
> +kms_cursor_crc@pipe-A-cursor-64x64-random
> +kms_cursor_crc@pipe-A-cursor-64x64-sliding
> +kms_cursor_crc@pipe-A-cursor-dpms
> +kms_cursor_crc@pipe-A-cursor-suspend
> +kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
> +kms_cursor_edge_walk@pipe-A-64x64-left-edge
> +kms_cursor_edge_walk@pipe-A-64x64-right-edge
> +kms_cursor_edge_walk@pipe-A-64x64-top-edge
> +
> +kms_flip@dpms-vs-vblank-race-interruptible
> diff --git a/drivers/gpu/drm/ci/msm-sdm845-skips.txt b/drivers/gpu/drm/ci/msm-sdm845-skips.txt
> new file mode 100644
> index 000000000000..42675f1c6d76
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-sdm845-skips.txt
> @@ -0,0 +1,2 @@
> +# Hangs machine
> +kms_bw.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt b/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
> new file mode 100644
> index 000000000000..e2a264647a58
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
> @@ -0,0 +1,75 @@
> +kms_3d,Fail
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> +kms_cursor_crc@pipe-A-cursor-32x10-onscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-32x10-random,Fail
> +kms_cursor_crc@pipe-A-cursor-32x10-sliding,Fail
> +kms_cursor_crc@pipe-A-cursor-32x32-onscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-32x32-random,Fail
> +kms_cursor_crc@pipe-A-cursor-32x32-sliding,Fail
> +kms_cursor_crc@pipe-A-cursor-64x21-onscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-64x21-random,Fail
> +kms_cursor_crc@pipe-A-cursor-64x21-sliding,Fail
> +kms_cursor_crc@pipe-A-cursor-64x64-onscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-64x64-random,Fail
> +kms_cursor_crc@pipe-A-cursor-64x64-sliding,Fail
> +kms_cursor_crc@pipe-A-cursor-alpha-opaque,Fail
> +kms_cursor_crc@pipe-A-cursor-dpms,Fail
> +kms_cursor_crc@pipe-A-cursor-size-change,Fail
> +kms_cursor_crc@pipe-B-cursor-32x10-onscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-32x10-random,Fail
> +kms_cursor_crc@pipe-B-cursor-32x10-sliding,Fail
> +kms_cursor_crc@pipe-B-cursor-32x32-onscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-32x32-random,Fail
> +kms_cursor_crc@pipe-B-cursor-32x32-sliding,Fail
> +kms_cursor_crc@pipe-B-cursor-64x21-onscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-64x21-random,Fail
> +kms_cursor_crc@pipe-B-cursor-64x64-onscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-64x64-random,Fail
> +kms_cursor_crc@pipe-B-cursor-64x64-sliding,Fail
> +kms_cursor_crc@pipe-B-cursor-alpha-opaque,Fail
> +kms_cursor_crc@pipe-B-cursor-size-change,Fail
> +kms_force_connector_basic@force-connector-state,Fail
> +kms_force_connector_basic@force-edid,Fail
> +kms_force_connector_basic@force-load-detect,Fail
> +kms_force_connector_basic@prune-stale-modes,Fail
> +kms_invalid_mode@int-max-clock,Fail
> +kms_pipe_crc_basic@nonblocking-crc-pipe-A-frame-sequence,Fail
> +kms_pipe_crc_basic@nonblocking-crc-pipe-B-frame-sequence,Fail
> +kms_pipe_crc_basic@read-crc-pipe-A-frame-sequence,Fail
> +kms_pipe_crc_basic@read-crc-pipe-B-frame-sequence,Fail
> +kms_plane_cursor@pipe-A-overlay-size-128,Fail
> +kms_plane_cursor@pipe-A-overlay-size-256,Fail
> +kms_plane_cursor@pipe-A-overlay-size-64,Fail
> +kms_plane_cursor@pipe-A-primary-size-128,Fail
> +kms_plane_cursor@pipe-A-primary-size-256,Fail
> +kms_plane_cursor@pipe-A-primary-size-64,Fail
> +kms_plane_cursor@pipe-A-viewport-size-128,Fail
> +kms_plane_cursor@pipe-A-viewport-size-256,Fail
> +kms_plane_cursor@pipe-A-viewport-size-64,Fail
> +kms_plane_cursor@pipe-B-overlay-size-128,Fail
> +kms_plane_cursor@pipe-B-overlay-size-256,Fail
> +kms_plane_cursor@pipe-B-overlay-size-64,Fail
> +kms_plane_cursor@pipe-B-primary-size-128,Fail
> +kms_plane_cursor@pipe-B-primary-size-256,Fail
> +kms_plane_cursor@pipe-B-primary-size-64,Fail
> +kms_plane_cursor@pipe-B-viewport-size-128,Fail
> +kms_plane_cursor@pipe-B-viewport-size-256,Fail
> +kms_plane_cursor@pipe-B-viewport-size-64,Fail
> +kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
> +kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
> +kms_plane_scaling@upscale-with-modifier-20x20,Fail
> +kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
> +kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
> +kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
> +kms_plane_scaling@upscale-with-rotation-20x20,Fail
> +kms_prime@basic-crc,Fail
> +kms_properties@connector-properties-atomic,Fail
> +kms_properties@get_properties-sanity-atomic,Fail
> +kms_properties@get_properties-sanity-non-atomic,Fail
> +kms_rmfb@close-fd,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt b/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
> new file mode 100644
> index 000000000000..447fb26cc344
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
> @@ -0,0 +1,5 @@
> +kms_cursor_crc@pipe-B-cursor-dpms
> +kms_cursor_edge_walk@pipe-A-64x64-right-edge
> +kms_cursor_edge_walk@pipe-A-64x64-top-edge
> +kms_cursor_edge_walk@pipe-B-64x64-right-edge
> +kms_cursor_edge_walk@pipe-B-64x64-top-edge
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt b/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
> new file mode 100644
> index 000000000000..26f9a03fc074
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
> @@ -0,0 +1,46 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> +
> +# Too unstable, machine ends up hanging after lots of Oopses
> +kms_cursor_legacy.*
> +
> +# Started hanging the machine on Linux 5.19-rc2:
> +#
> +# [IGT] kms_plane_lowres: executing
> +# [IGT] kms_plane_lowres: starting subtest pipe-F-tiling-y
> +# [IGT] kms_plane_lowres: exiting, ret=77
> +# Console: switching to colour frame buffer device 170x48
> +# rockchip-drm display-subsystem: [drm] *ERROR* flip_done timed out
> +# rockchip-drm display-subsystem: [drm] *ERROR* [CRTC:35:crtc-0] commit wait timed out
> +# BUG: spinlock bad magic on CPU#3, kms_plane_lowre/482
> +# 8<--- cut here ---
> +# Unable to handle kernel paging request at virtual address 7812078e
> +# [7812078e] *pgd=00000000
> +# Internal error: Oops: 5 [#1] SMP ARM
> +# Modules linked in:
> +# CPU: 3 PID: 482 Comm: kms_plane_lowre Tainted: G        W         5.19.0-rc2-323596-g00535de92171 #1
> +# Hardware name: Rockchip (Device Tree)
> +# Process kms_plane_lowre (pid: 482, stack limit = 0x1193ac2b)
> +#  spin_dump from do_raw_spin_lock+0xa4/0xe8
> +#  do_raw_spin_lock from wait_for_completion_timeout+0x2c/0x120
> +#  wait_for_completion_timeout from drm_crtc_commit_wait+0x18/0x7c
> +#  drm_crtc_commit_wait from drm_atomic_helper_wait_for_dependencies+0x44/0x168
> +#  drm_atomic_helper_wait_for_dependencies from commit_tail+0x34/0x180
> +#  commit_tail from drm_atomic_helper_commit+0x164/0x18c
> +#  drm_atomic_helper_commit from drm_atomic_commit+0xac/0xe4
> +#  drm_atomic_commit from drm_client_modeset_commit_atomic+0x23c/0x284
> +#  drm_client_modeset_commit_atomic from drm_client_modeset_commit_locked+0x60/0x1c8
> +#  drm_client_modeset_commit_locked from drm_client_modeset_commit+0x24/0x40
> +#  drm_client_modeset_commit from drm_fbdev_client_restore+0x58/0x94
> +#  drm_fbdev_client_restore from drm_client_dev_restore+0x70/0xbc
> +#  drm_client_dev_restore from drm_release+0xf4/0x114
> +#  drm_release from __fput+0x74/0x240
> +#  __fput from task_work_run+0x84/0xb4
> +#  task_work_run from do_exit+0x34c/0xa20
> +#  do_exit from do_group_exit+0x34/0x98
> +#  do_group_exit from __wake_up_parent+0x0/0x18
> +# Code: e595c008 12843d19 03e00000 03093168 (15940508)
> +# ---[ end trace 0000000000000000 ]---
> +# note: kms_plane_lowre[482] exited with preempt_count 1
> +# Fixing recursive fault but reboot is needed!
> +kms_plane_lowres@pipe-F-tiling-y
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt b/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
> new file mode 100644
> index 000000000000..0f8afa7e2adc
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
> @@ -0,0 +1,86 @@
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_color@pipe-A-legacy-gamma,Fail
> +kms_color@pipe-B-legacy-gamma,Fail
> +kms_cursor_crc@pipe-A-cursor-32x10-offscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-32x10-onscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-32x10-random,Fail
> +kms_cursor_crc@pipe-A-cursor-32x10-rapid-movement,Fail
> +kms_cursor_crc@pipe-A-cursor-32x10-sliding,Fail
> +kms_cursor_crc@pipe-A-cursor-32x32-offscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-32x32-onscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-32x32-random,Fail
> +kms_cursor_crc@pipe-A-cursor-32x32-rapid-movement,Fail
> +kms_cursor_crc@pipe-A-cursor-32x32-sliding,Fail
> +kms_cursor_crc@pipe-A-cursor-64x21-onscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-64x21-random,Fail
> +kms_cursor_crc@pipe-A-cursor-64x21-sliding,Fail
> +kms_cursor_crc@pipe-A-cursor-64x64-offscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-64x64-onscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-64x64-random,Fail
> +kms_cursor_crc@pipe-A-cursor-64x64-rapid-movement,Fail
> +kms_cursor_crc@pipe-A-cursor-64x64-sliding,Fail
> +kms_cursor_crc@pipe-A-cursor-alpha-opaque,Fail
> +kms_cursor_crc@pipe-A-cursor-alpha-transparent,Fail
> +kms_cursor_crc@pipe-A-cursor-dpms,Fail
> +kms_cursor_crc@pipe-A-cursor-size-change,Fail
> +kms_cursor_crc@pipe-B-cursor-32x10-onscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-32x10-random,Fail
> +kms_cursor_crc@pipe-B-cursor-32x10-rapid-movement,Fail
> +kms_cursor_crc@pipe-B-cursor-32x10-sliding,Fail
> +kms_cursor_crc@pipe-B-cursor-32x32-offscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-32x32-onscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-32x32-random,Fail
> +kms_cursor_crc@pipe-B-cursor-32x32-rapid-movement,Fail
> +kms_cursor_crc@pipe-B-cursor-32x32-sliding,Fail
> +kms_cursor_crc@pipe-B-cursor-64x21-onscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-64x21-random,Fail
> +kms_cursor_crc@pipe-B-cursor-64x21-rapid-movement,Fail
> +kms_cursor_crc@pipe-B-cursor-64x64-offscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-64x64-onscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-64x64-random,Fail
> +kms_cursor_crc@pipe-B-cursor-64x64-rapid-movement,Fail
> +kms_cursor_crc@pipe-B-cursor-64x64-sliding,Fail
> +kms_cursor_crc@pipe-B-cursor-alpha-opaque,Fail
> +kms_cursor_crc@pipe-B-cursor-dpms,Fail
> +kms_cursor_crc@pipe-B-cursor-size-change,Fail
> +kms_cursor_edge_walk@pipe-A-64x64-bottom-edge,Fail
> +kms_cursor_edge_walk@pipe-A-64x64-left-edge,Fail
> +kms_cursor_edge_walk@pipe-A-64x64-top-edge,Fail
> +kms_cursor_edge_walk@pipe-B-64x64-bottom-edge,Fail
> +kms_cursor_edge_walk@pipe-B-64x64-right-edge,Fail
> +kms_cursor_edge_walk@pipe-B-64x64-top-edge,Fail
> +kms_invalid_mode@int-max-clock,Fail
> +kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-A,Fail
> +kms_pipe_crc_basic@nonblocking-crc-pipe-A,Fail
> +kms_pipe_crc_basic@nonblocking-crc-pipe-A-frame-sequence,Fail
> +kms_pipe_crc_basic@nonblocking-crc-pipe-B,Fail
> +kms_pipe_crc_basic@nonblocking-crc-pipe-B-frame-sequence,Fail
> +kms_pipe_crc_basic@read-crc-pipe-A,Fail
> +kms_pipe_crc_basic@read-crc-pipe-A-frame-sequence,Fail
> +kms_pipe_crc_basic@read-crc-pipe-B,Fail
> +kms_pipe_crc_basic@read-crc-pipe-B-frame-sequence,Fail
> +kms_plane@plane-panning-bottom-right,Fail
> +kms_plane@plane-panning-top-left,Fail
> +kms_plane_cursor@pipe-B-overlay-size-128,Fail
> +kms_plane_cursor@pipe-B-overlay-size-256,Fail
> +kms_plane_cursor@pipe-B-overlay-size-64,Fail
> +kms_plane_cursor@pipe-B-primary-size-128,Fail
> +kms_plane_cursor@pipe-B-primary-size-256,Fail
> +kms_plane_cursor@pipe-B-primary-size-64,Fail
> +kms_plane_cursor@pipe-B-viewport-size-128,Fail
> +kms_plane_cursor@pipe-B-viewport-size-256,Fail
> +kms_plane_cursor@pipe-B-viewport-size-64,Fail
> +kms_plane_multiple@atomic-pipe-B-tiling-none,Fail
> +kms_prime@basic-crc,Fail
> +kms_rmfb@close-fd,Fail
> +kms_universal_plane@universal-plane-pipe-B-functional,Fail
> +kms_vblank@pipe-A-query-forked,Fail
> +kms_vblank@pipe-A-query-idle,Fail
> +kms_vblank@pipe-A-wait-busy,Fail
> +kms_vblank@pipe-A-wait-forked,Fail
> +kms_vblank@pipe-A-wait-forked-busy,Fail
> +kms_vblank@pipe-B-query-forked,Fail
> +kms_vblank@pipe-B-query-idle,Fail
> +kms_vblank@pipe-B-wait-busy,Fail
> +kms_vblank@pipe-B-wait-forked,Fail
> +kms_vblank@pipe-B-wait-forked-busy,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt b/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
> new file mode 100644
> index 000000000000..b4c37a4315e4
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
> @@ -0,0 +1,25 @@
> +kms_cursor_crc@pipe-A-cursor-64x21-offscreen
> +kms_cursor_crc@pipe-A-cursor-64x21-rapid-movement
> +kms_cursor_crc@pipe-B-cursor-32x10-offscreen
> +kms_cursor_crc@pipe-B-cursor-32x10-rapid-movement
> +kms_cursor_crc@pipe-B-cursor-32x32-offscreen
> +kms_cursor_crc@pipe-B-cursor-32x32-rapid-movement
> +kms_cursor_crc@pipe-B-cursor-64x64-offscreen
> +kms_cursor_crc@pipe-B-cursor-64x64-rapid-movement
> +kms_cursor_edge_walk@pipe-A-64x64-right-edge
> +kms_cursor_edge_walk@pipe-B-64x64-left-edge
> +kms_flip@flip-vs-expired-vblank
> +kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-B
> +kms_plane_multiple@atomic-pipe-A-tiling-none
> +kms_plane@plane-position-hole
> +kms_sequence@get-forked
> +kms_sequence@get-forked-busy
> +kms_setmode@basic
> +kms_vblank@pipe-A-accuracy-idle
> +kms_vblank@pipe-A-query-busy
> +kms_vblank@pipe-A-query-forked-busy
> +kms_vblank@pipe-A-wait-idle
> +kms_vblank@pipe-B-accuracy-idle
> +kms_vblank@pipe-B-query-busy
> +kms_vblank@pipe-B-query-forked-busy
> +kms_vblank@pipe-B-wait-idle
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt b/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
> new file mode 100644
> index 000000000000..10c3d81a919a
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
> @@ -0,0 +1,5 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> +
> +# Too unstable, machine ends up hanging after lots of Oopses
> +kms_cursor_legacy.*
> diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt b/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
> new file mode 100644
> index 000000000000..2178bdd064dd
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
> @@ -0,0 +1,38 @@
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_addfb_basic@bad-pitch-65536,Fail
> +kms_addfb_basic@bo-too-small,Fail
> +kms_addfb_basic@size-max,Fail
> +kms_addfb_basic@too-high,Fail
> +kms_atomic_transition@plane-primary-toggle-with-vblank-wait,Fail
> +kms_bw@linear-tiling-1-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-1-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-1-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_invalid_mode@int-max-clock,Fail
> +kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
> +kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
> +kms_plane_scaling@planes-upscale-20x20,Fail
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
> +kms_plane_scaling@upscale-with-modifier-20x20,Fail
> +kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
> +kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
> +kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
> +kms_plane_scaling@upscale-with-rotation-20x20,Fail
> +kms_vblank@crtc-id,Fail
> +kms_vblank@invalid,Fail
> +kms_vblank@pipe-A-accuracy-idle,Fail
> +kms_vblank@pipe-A-query-busy,Fail
> +kms_vblank@pipe-A-query-forked,Fail
> +kms_vblank@pipe-A-query-forked-busy,Fail
> +kms_vblank@pipe-A-query-idle,Fail
> +kms_vblank@pipe-A-ts-continuation-idle,Fail
> +kms_vblank@pipe-A-ts-continuation-modeset,Fail
> +kms_vblank@pipe-A-ts-continuation-suspend,Fail
> +kms_vblank@pipe-A-wait-busy,Fail
> +kms_vblank@pipe-A-wait-forked,Fail
> +kms_vblank@pipe-A-wait-forked-busy,Fail
> +kms_vblank@pipe-A-wait-idle,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt b/drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt
> new file mode 100644
> index 000000000000..e69de29bb2d1
> diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt b/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt
> new file mode 100644
> index 000000000000..78be18174012
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt
> @@ -0,0 +1,6 @@
> +# Hits a "refcount_t: underflow; use-after-free" in virtio_gpu_fence_event_process
> +# When run in a particular order with other tests
> +kms_cursor_legacy.*
> +
> +# Job just hangs without any output
> +kms_flip@flip-vs-suspend.*
> \ No newline at end of file
> --
> 2.31.1
>

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [PATCH v5] drm: Add initial ci/ subdirectory
  2022-07-26 18:16       ` [PATCH v5] " Tomeu Vizoso
  2022-07-29 15:43         ` Rob Clark
@ 2022-08-10 18:24         ` Rodrigo Siqueira Jordao
  2022-08-10 22:08           ` Rob Clark
  2022-08-11 10:10           ` Tomeu Vizoso
  2022-08-16 15:37         ` [PATCH v6] " Tomeu Vizoso
  2 siblings, 2 replies; 49+ messages in thread
From: Rodrigo Siqueira Jordao @ 2022-08-10 18:24 UTC (permalink / raw)
  To: Tomeu Vizoso, Nicholas Choi, Sun peng Li, Chiu, Harrison,
	Wentland, Harry
  Cc: Rob Clark, Jonathan Corbet, Neil Armstrong, David Airlie,
	Kevin Hilman, linux-doc, linux-kernel, dri-devel, linux-rockchip,
	linux-mediatek, Carlo Caione, linux-amlogic, kernel,
	linux-arm-kernel, Matthias Brugger

Hi Tomeu,

First of all, nice patch! I just saw it, and I have some basic questions 
(I don't understand many of these CI details). I also CC some CI folks 
from the display team at AMD.

On 2022-07-26 14:16, Tomeu Vizoso wrote:
> And use it to store expectations about what the DRM drivers are
> supposed to pass in the IGT test suite.
> 
> Also include a configuration file that points to the out-of-tree CI
> scripts.
> 
> By storing the test expectations along the code we can make sure both
> stay in sync with each other, and so we can know when a code change
> breaks those expectations.
> 
> This will allow all contributors to drm to reuse the infrastructure
> already in gitlab.freedesktop.org to test the driver on several
> generations of the hardware.
> 
> v2:
>    - Fix names of result expectation files to match SoC
>    - Don't execute tests that are going to skip on all boards
> 
> v3:
>    - Remove tracking of dmesg output during test execution
> 
> v4:
>    - Move up to drivers/gpu/drm
>    - Add support for a bunch of other drivers
>    - Explain how to incorporate fixes for CI from a
>      ${TARGET_BRANCH}-external-fixes branch
>    - Remove tests that pass from expected results file, to reduce the
>      size of in-tree files
>    - Add docs about how to deal with outages in automated testing labs
>    - Specify the exact SHA of the CI scripts to be used
> 
> v5:
>    - Remove unneeded skips from Meson expectations file
>    - Use a more advanced runner that detects flakes automatically
>    - Use a more succint format for the expectations
>    - Run many more tests (and use sharding to finish in time)
>    - Use skip lists to avoid hanging machines
>    - Add some build testing
>    - Build IGT in each pipeline for faster uprevs
>    - List failures in the GitLab UI
> 
> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
> ---
>   Documentation/gpu/automated_testing.rst       | 84 ++++++++++++++++++
>   drivers/gpu/drm/ci/amdgpu-stoney-fails.txt    | 13 +++
>   drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt   | 20 +++++
>   drivers/gpu/drm/ci/amdgpu-stoney-skips.txt    |  2 +
>   drivers/gpu/drm/ci/gitlab-ci.yml              | 13 +++
>   drivers/gpu/drm/ci/i915-amly-flakes.txt       | 32 +++++++
>   drivers/gpu/drm/ci/i915-amly-skips.txt        |  2 +
>   drivers/gpu/drm/ci/i915-apl-fails.txt         | 29 +++++++
>   drivers/gpu/drm/ci/i915-apl-flakes.txt        |  1 +
>   drivers/gpu/drm/ci/i915-apl-skips.txt         |  2 +
>   drivers/gpu/drm/ci/i915-cml-flakes.txt        | 36 ++++++++
>   drivers/gpu/drm/ci/i915-glk-flakes.txt        | 40 +++++++++
>   drivers/gpu/drm/ci/i915-glk-skips.txt         |  2 +
>   drivers/gpu/drm/ci/i915-kbl-fails.txt         |  8 ++
>   drivers/gpu/drm/ci/i915-kbl-flakes.txt        | 24 ++++++
>   drivers/gpu/drm/ci/i915-kbl-skips.txt         |  2 +
>   drivers/gpu/drm/ci/i915-tgl-fails.txt         | 19 ++++
>   drivers/gpu/drm/ci/i915-tgl-flakes.txt        |  6 ++
>   drivers/gpu/drm/ci/i915-tgl-skips.txt         |  8 ++
>   drivers/gpu/drm/ci/i915-whl-fails.txt         | 30 +++++++
>   drivers/gpu/drm/ci/i915-whl-flakes.txt        |  1 +
>   drivers/gpu/drm/ci/mediatek-mt8173-fails.txt  | 29 +++++++
>   drivers/gpu/drm/ci/mediatek-mt8183-fails.txt  | 10 +++
>   drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt | 14 +++
>   drivers/gpu/drm/ci/meson-g12b-fails.txt       |  5 ++
>   drivers/gpu/drm/ci/meson-g12b-flakes.txt      |  4 +
>   drivers/gpu/drm/ci/msm-apq8016-fails.txt      | 15 ++++
>   drivers/gpu/drm/ci/msm-apq8016-flakes.txt     |  4 +
>   drivers/gpu/drm/ci/msm-apq8096-fails.txt      |  2 +
>   drivers/gpu/drm/ci/msm-apq8096-flakes.txt     |  4 +
>   drivers/gpu/drm/ci/msm-apq8096-skips.txt      |  2 +
>   drivers/gpu/drm/ci/msm-sc7180-fails.txt       | 22 +++++
>   drivers/gpu/drm/ci/msm-sc7180-flakes.txt      | 14 +++
>   drivers/gpu/drm/ci/msm-sc7180-skips.txt       | 18 ++++
>   drivers/gpu/drm/ci/msm-sdm845-fails.txt       | 44 ++++++++++
>   drivers/gpu/drm/ci/msm-sdm845-flakes.txt      | 33 +++++++
>   drivers/gpu/drm/ci/msm-sdm845-skips.txt       |  2 +
>   drivers/gpu/drm/ci/rockchip-rk3288-fails.txt  | 75 ++++++++++++++++
>   drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt |  5 ++
>   drivers/gpu/drm/ci/rockchip-rk3288-skips.txt  | 46 ++++++++++
>   drivers/gpu/drm/ci/rockchip-rk3399-fails.txt  | 86 +++++++++++++++++++
>   drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt | 25 ++++++
>   drivers/gpu/drm/ci/rockchip-rk3399-skips.txt  |  5 ++
>   drivers/gpu/drm/ci/virtio_gpu-none-fails.txt  | 38 ++++++++
>   drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt |  0
>   drivers/gpu/drm/ci/virtio_gpu-none-skips.txt  |  6 ++
>   46 files changed, 882 insertions(+)
>   create mode 100644 Documentation/gpu/automated_testing.rst
>   create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/gitlab-ci.yml
>   create mode 100644 drivers/gpu/drm/ci/i915-amly-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/i915-amly-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/i915-apl-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/i915-apl-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/i915-apl-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/i915-cml-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/i915-glk-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/i915-glk-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/i915-kbl-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/i915-kbl-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/i915-kbl-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/i915-tgl-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/i915-tgl-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/i915-tgl-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/i915-whl-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/i915-whl-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/meson-g12b-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/meson-g12b-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/msm-apq8016-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/msm-apq8016-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/msm-apq8096-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/msm-apq8096-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/msm-apq8096-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/msm-sc7180-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/msm-sc7180-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/msm-sc7180-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/msm-sdm845-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/msm-sdm845-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/msm-sdm845-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-skips.txt
> 
> diff --git a/Documentation/gpu/automated_testing.rst b/Documentation/gpu/automated_testing.rst
> new file mode 100644
> index 000000000000..61003ecc7b6e
> --- /dev/null
> +++ b/Documentation/gpu/automated_testing.rst
> @@ -0,0 +1,84 @@
> +.. SPDX-License-Identifier: GPL-2.0+
> +
> +=========================================
> +Automated testing of the DRM subsystem
> +=========================================
> +
> +
> +Introduction
> +============
> +
> +Making sure that changes to the core or drivers don't introduce regressions can be very time consuming when lots of different hardware configurations need to be tested. Moreover, it isn't practical for each person interested in this testing to have to acquire and maintain what can be a considerable amount of hardware.
> +
> +Also, it is desirable for developers to check for regressions in their code by themselves, instead of relying on the maintainers finding them and then reporting back.
> +
> +There are facilities in gitlab.freedesktop.org to automatically test Mesa that can be used as well for testing the DRM subsystem. This document explains how people interested in testing it can use this shared infrastructure to save quite some time and effort.
> +
> +
> +Relevant files
> +==============
> +
> +drivers/gpu/drm/ci/gitlab-ci.yml
> +--------------------------------
> +
> +Specifies the specific version of the scripts to be used. GitLab CI will use the values defined in this file to fetch the right scripts.
> +
> +
> +drivers/gpu/drm/ci/${DRIVER_NAME}.testlist
> +------------------------------------------
> +
> +Specifies the tests that the current code is expected to be able to reliably run for ${DRIVER_NAME}. These tests are expected to not hang the DUT (Device Under Testing) when running on the revision they belong to, and to give consistent results.

The IGT repo has testlists per vendor (e.g., 
https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/tree/master/tests/intel-ci). 
What is the advantage of keeping a similar IGT list here? Should we 
maintain that list in both projects?

> +
> +
> +drivers/gpu/drm/ci/${DRIVER_NAME}_*_results.txt
> +----------------------------------------
> +
> +Specifies the expected results of running this specific kernel revision on a given hardware configuration.
> +
> +
> +How to enable automated testing on your tree
> +============================================
> +
> +1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one yet
> +
> +2. In your kernel repo's configuration (eg. https://gitlab.freedesktop.org/tomeu/linux/-/settings/ci_cd), change the CI/CD configuration file from .gitlab-ci.yml to drivers/gpu/drm/ci/gitlab-ci.yml.
> +
> +3. Next time you push to this repository, you will see a CI pipeline being created (eg. https://gitlab.freedesktop.org/tomeu/linux/-/pipelines)
> +
> +4. The various jobs will be run and when the pipeline is finished, all jobs should be green unless a regression has been found.
> +
> +
> +How to update test expectations
> +===============================
> +
> +If your changes to the code fix any tests, you will have to update one or more of the files in drivers/gpu/drm/ci/${DRIVER_NAME}_*_results.txt, for each of the test platforms affected by the change.
> +
> +If you have run a pipeline and it failed because of a mismatched test result, you will have been offered a patch at the end of the run that you can apply after reviewing it.
> +
> +
> +How to expand coverage
> +======================
> +
> +If your code changes makes it possible to run more tests (by solving reliability issues, for example), more tests can be added to this list, and then the expected results updated with the patch file that will be printed at the end of each job.
> +
> +If there is a need for updating the version of IGT being used (maybe you have added more tests to it), follow the instructions at https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/tree/main#upreving-igt.

Usually, we run our IGT test on the latest code from the IGT repo. Is it 
possible to configure this behavior?

> +
> +
> +How to test your changes to the scripts
> +==========================================
> +
> +For testing changes to the scripts in the drm-ci repo, change the DRM_CI_PROJECT_PATH variable in drivers/gpu/drm/ci/gitlab-ci.yml to match your fork of the project (eg. tomeu/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
> +
> +
> +How to incorporate external fixes in your testing
> +=================================================
> +
> +Often, regressions in other trees will prevent testing changes local to the tree under test. These fixes will be automatically merged in during the build jobs from a branch in the target tree that is named as ${TARGET_BRANCH}-external-fixes.
> +
> +If the pipeline is not in a merge request and a branch with the same name exists in the local tree, commits from that branch will be merged in as well.
> +
> +
> +How to deal with automated testing labs that may be down
> +========================================================
> +
> +If a hardware farm is down and thus causing pipelines to fail that would otherwise pass, one can disable all jobs that would be submitted to that farm by editing the file at https://gitlab.freedesktop.org/gfx-ci/lab-status/-/blob/main/lab-status.yml.


This part is the one that I really want to understand. How can we plug 
our farm? Do you have a guideline? I want to know if we can run a prototype.


> diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt b/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
> new file mode 100644
> index 000000000000..e721568b6ec3
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
> @@ -0,0 +1,13 @@
> +kms_addfb_basic@bad-pitch-65536,Fail
> +kms_addfb_basic@bo-too-small,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
> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> +kms_cursor_crc@pipe-A-cursor-size-change,Fail
> +kms_cursor_crc@pipe-B-cursor-size-change,Fail
> +kms_hdr@bpc-switch,Fail
> +kms_hdr@bpc-switch-dpms,Fail
> +kms_plane_multiple@atomic-pipe-A-tiling-none,Fail
> +kms_rotation_crc@primary-rotation-180,Fail
> +kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt b/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
> new file mode 100644
> index 000000000000..a2cbc339838c
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
> @@ -0,0 +1,20 @@
> +kms_addfb_basic@too-high
> +kms_atomic_transition@plane-all-modeset-transition-internal-panels
> +kms_atomic_transition@plane-all-transition
> +kms_atomic_transition@plane-use-after-nonblocking-unbind
> +kms_bw@linear-tiling-1-displays-1920x1080p
> +kms_bw@linear-tiling-2-displays-1920x1080p
> +kms_bw@linear-tiling-2-displays-2560x1440p
> +kms_bw@linear-tiling-3-displays-2560x1440p
> +kms_bw@linear-tiling-3-displays-3840x2160p
> +kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
> +kms_cursor_edge_walk@pipe-A-64x64-right-edge
> +kms_cursor_edge_walk@pipe-A-64x64-top-edge
> +kms_cursor_edge_walk@pipe-B-64x64-bottom-edge
> +kms_cursor_edge_walk@pipe-B-64x64-left-edge
> +kms_cursor_edge_walk@pipe-B-64x64-right-edge
> +kms_cursor_edge_walk@pipe-B-64x64-top-edge
> +kms_plane_multiple@atomic-pipe-B-tiling-none
> +kms_plane@pixel-format
> +kms_plane_scaling@downscale-with-rotation-factor-0-5
> +kms_universal_plane@disable-primary-vs-flip-pipe-A

We have multiple test lists for different ASICs, and we are working to 
have one unified list. I guess we just need to that list here?

Maybe Nicholas/Herrison can provide a complete list here.

Thanks
Siqueira


> diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt b/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
> new file mode 100644
> index 000000000000..e2c538a0f954
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
> @@ -0,0 +1,2 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml
> new file mode 100644
> index 000000000000..8898bbe0f180
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/gitlab-ci.yml
> @@ -0,0 +1,13 @@
> +variables:
> +  # Change this to use your fork of drm-ci
> +  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
> +  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha bccff240ca042820484096f0782e8f060bd83bca
> +
> +  UPSTREAM_REPO: git://anongit.freedesktop.org/drm/drm
> +  TARGET_BRANCH: drm-next
> +
> +include:
> +  - project: *drm-ci-project-path
> +    ref: *drm-ci-commit-sha
> +    file:
> +      - '.gitlab-ci.yml'
> diff --git a/drivers/gpu/drm/ci/i915-amly-flakes.txt b/drivers/gpu/drm/ci/i915-amly-flakes.txt
> new file mode 100644
> index 000000000000..67d78f10b671
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-amly-flakes.txt
> @@ -0,0 +1,32 @@
> +kms_bw@linear-tiling-2-displays-1920x1080p
> +kms_bw@linear-tiling-2-displays-2560x1440p
> +kms_bw@linear-tiling-2-displays-3840x2160p
> +kms_bw@linear-tiling-3-displays-1920x1080p
> +kms_bw@linear-tiling-3-displays-2560x1440p
> +kms_bw@linear-tiling-3-displays-3840x2160p
> +kms_bw@linear-tiling-4-displays-1920x1080p
> +kms_bw@linear-tiling-4-displays-2560x1440p
> +kms_bw@linear-tiling-4-displays-3840x2160p
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
> +kms_plane_alpha_blend@pipe-A-alpha-basic
> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-A-constant-alpha-max
> +kms_plane_alpha_blend@pipe-B-alpha-basic
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max
> +kms_plane_alpha_blend@pipe-C-alpha-basic
> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-C-constant-alpha-max
> +kms_sysfs_edid_timing
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-amly-skips.txt b/drivers/gpu/drm/ci/i915-amly-skips.txt
> new file mode 100644
> index 000000000000..e2c538a0f954
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-amly-skips.txt
> @@ -0,0 +1,2 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-apl-fails.txt b/drivers/gpu/drm/ci/i915-apl-fails.txt
> new file mode 100644
> index 000000000000..a077f29d5cba
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-apl-fails.txt
> @@ -0,0 +1,29 @@
> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-4-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-4-displays-3840x2160p,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
> +kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
> +kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
> +kms_sysfs_edid_timing,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-apl-flakes.txt b/drivers/gpu/drm/ci/i915-apl-flakes.txt
> new file mode 100644
> index 000000000000..618bbe6bb793
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-apl-flakes.txt
> @@ -0,0 +1 @@
> +kms_frontbuffer_tracking@fbc-tiling-linear
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-apl-skips.txt b/drivers/gpu/drm/ci/i915-apl-skips.txt
> new file mode 100644
> index 000000000000..e2c538a0f954
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-apl-skips.txt
> @@ -0,0 +1,2 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-cml-flakes.txt b/drivers/gpu/drm/ci/i915-cml-flakes.txt
> new file mode 100644
> index 000000000000..a214419c6dc5
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-cml-flakes.txt
> @@ -0,0 +1,36 @@
> +kms_bw@linear-tiling-2-displays-1920x1080p
> +kms_bw@linear-tiling-2-displays-2560x1440p
> +kms_bw@linear-tiling-2-displays-3840x2160p
> +kms_bw@linear-tiling-3-displays-1920x1080p
> +kms_bw@linear-tiling-3-displays-2560x1440p
> +kms_bw@linear-tiling-3-displays-3840x2160p
> +kms_bw@linear-tiling-4-displays-1920x1080p
> +kms_bw@linear-tiling-4-displays-2560x1440p
> +kms_bw@linear-tiling-4-displays-3840x2160p
> +kms_flip@flip-vs-suspend
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
> +kms_hdr@bpc-switch-suspend
> +kms_plane_alpha_blend@pipe-A-alpha-basic
> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-A-constant-alpha-max
> +kms_plane_alpha_blend@pipe-B-alpha-basic
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max
> +kms_plane_alpha_blend@pipe-C-alpha-basic
> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-C-constant-alpha-max
> +kms_psr2_su@page_flip-NV12
> +kms_psr2_su@page_flip-P010
> +kms_setmode@basic
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-glk-flakes.txt b/drivers/gpu/drm/ci/i915-glk-flakes.txt
> new file mode 100644
> index 000000000000..aedb3d2ef885
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-glk-flakes.txt
> @@ -0,0 +1,40 @@
> +kms_bw@linear-tiling-1-displays-3840x2160p
> +kms_bw@linear-tiling-2-displays-1920x1080p
> +kms_bw@linear-tiling-2-displays-2560x1440p
> +kms_bw@linear-tiling-2-displays-3840x2160p
> +kms_bw@linear-tiling-3-displays-1920x1080p
> +kms_bw@linear-tiling-3-displays-2560x1440p
> +kms_bw@linear-tiling-3-displays-3840x2160p
> +kms_bw@linear-tiling-4-displays-1920x1080p
> +kms_bw@linear-tiling-4-displays-2560x1440p
> +kms_bw@linear-tiling-4-displays-3840x2160p
> +kms_flip@blocking-wf_vblank
> +kms_flip@wf_vblank-ts-check
> +kms_flip@wf_vblank-ts-check-interruptible
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
> +kms_frontbuffer_tracking@fbc-tiling-linear
> +kms_plane_alpha_blend@pipe-A-alpha-basic
> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-A-constant-alpha-max
> +kms_plane_alpha_blend@pipe-B-alpha-basic
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max
> +kms_plane_alpha_blend@pipe-C-alpha-basic
> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-C-constant-alpha-max
> +kms_rotation_crc@multiplane-rotation
> +kms_rotation_crc@multiplane-rotation-cropping-bottom
> +kms_rotation_crc@multiplane-rotation-cropping-top
> +kms_setmode@basic
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-glk-skips.txt b/drivers/gpu/drm/ci/i915-glk-skips.txt
> new file mode 100644
> index 000000000000..e2c538a0f954
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-glk-skips.txt
> @@ -0,0 +1,2 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-kbl-fails.txt b/drivers/gpu/drm/ci/i915-kbl-fails.txt
> new file mode 100644
> index 000000000000..f81f065e27e8
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-kbl-fails.txt
> @@ -0,0 +1,8 @@
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
> +kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-kbl-flakes.txt b/drivers/gpu/drm/ci/i915-kbl-flakes.txt
> new file mode 100644
> index 000000000000..f82017654cf5
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-kbl-flakes.txt
> @@ -0,0 +1,24 @@
> +kms_bw@linear-tiling-2-displays-1920x1080p
> +kms_bw@linear-tiling-2-displays-3840x2160p
> +kms_bw@linear-tiling-3-displays-1920x1080p
> +kms_bw@linear-tiling-3-displays-2560x1440p
> +kms_bw@linear-tiling-3-displays-3840x2160p
> +kms_bw@linear-tiling-4-displays-1920x1080p
> +kms_bw@linear-tiling-4-displays-3840x2160p
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
> +kms_plane_alpha_blend@pipe-A-alpha-basic
> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-B-alpha-basic
> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max
> +kms_plane_alpha_blend@pipe-C-alpha-basic
> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
> +kms_sysfs_edid_timing
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-kbl-skips.txt b/drivers/gpu/drm/ci/i915-kbl-skips.txt
> new file mode 100644
> index 000000000000..e2c538a0f954
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-kbl-skips.txt
> @@ -0,0 +1,2 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-tgl-fails.txt b/drivers/gpu/drm/ci/i915-tgl-fails.txt
> new file mode 100644
> index 000000000000..270644ce220c
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-tgl-fails.txt
> @@ -0,0 +1,19 @@
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-4-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-4-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-5-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-5-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-5-displays-3840x2160p,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
> +kms_rotation_crc@bad-pixel-format,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-tgl-flakes.txt b/drivers/gpu/drm/ci/i915-tgl-flakes.txt
> new file mode 100644
> index 000000000000..15fba77ff19d
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-tgl-flakes.txt
> @@ -0,0 +1,6 @@
> +kms_draw_crc@draw-method-rgb565-blt-untiled
> +kms_draw_crc@draw-method-xrgb8888-mmap-gtt-untiled
> +kms_draw_crc@draw-method-xrgb8888-mmap-gtt-xtiled
> +kms_flip@blocking-absolute-wf_vblank
> +kms_flip@bo-too-big-interruptible
> +kms_flip@flip-vs-rmfb-interruptible
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-tgl-skips.txt b/drivers/gpu/drm/ci/i915-tgl-skips.txt
> new file mode 100644
> index 000000000000..14f33c7ba03b
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-tgl-skips.txt
> @@ -0,0 +1,8 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> +
> +# GPU hangs, then the whole machine
> +gem_eio.*
> +
> +# Whole machine hangs
> +kms_flip@absolute-wf_vblank@a-edp1
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-whl-fails.txt b/drivers/gpu/drm/ci/i915-whl-fails.txt
> new file mode 100644
> index 000000000000..dbfedfa5d63f
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-whl-fails.txt
> @@ -0,0 +1,30 @@
> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-4-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-4-displays-3840x2160p,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
> +kms_frontbuffer_tracking@fbc-tiling-linear,Fail
> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
> +kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
> +kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
> +kms_sysfs_edid_timing,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/i915-whl-flakes.txt b/drivers/gpu/drm/ci/i915-whl-flakes.txt
> new file mode 100644
> index 000000000000..6bcac5b84fbb
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/i915-whl-flakes.txt
> @@ -0,0 +1 @@
> +kms_flip@flip-vs-suspend
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt b/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
> new file mode 100644
> index 000000000000..7f74fb9afc99
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
> @@ -0,0 +1,29 @@
> +kms_3d,Fail
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_bw@linear-tiling-1-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-1-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-1-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> +kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
> +kms_color@pipe-B-invalid-gamma-lut-sizes,Fail
> +kms_force_connector_basic@force-connector-state,Fail
> +kms_force_connector_basic@force-edid,Fail
> +kms_force_connector_basic@force-load-detect,Fail
> +kms_force_connector_basic@prune-stale-modes,Fail
> +kms_invalid_mode@int-max-clock,Fail
> +kms_plane_scaling@planes-upscale-20x20,Fail
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
> +kms_plane_scaling@upscale-with-modifier-20x20,Fail
> +kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
> +kms_plane_scaling@upscale-with-rotation-20x20,Fail
> +kms_properties@get_properties-sanity-atomic,Fail
> +kms_properties@plane-properties-atomic,Fail
> +kms_properties@plane-properties-legacy,Fail
> +kms_rmfb@close-fd,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt b/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
> new file mode 100644
> index 000000000000..6ff81d00e84e
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
> @@ -0,0 +1,10 @@
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_bw@linear-tiling-1-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> +kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
> +kms_plane_scaling@upscale-with-rotation-20x20,Fail
> +kms_rmfb@close-fd,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt b/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
> new file mode 100644
> index 000000000000..208890b79eb0
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
> @@ -0,0 +1,14 @@
> +core_setmaster_vs_auth
> +kms_bw@linear-tiling-1-displays-1920x1080p
> +kms_bw@linear-tiling-1-displays-3840x2160p
> +kms_bw@linear-tiling-3-displays-1920x1080p
> +kms_cursor_legacy@cursor-vs-flip-atomic
> +kms_plane_scaling@invalid-num-scalers
> +kms_plane_scaling@planes-upscale-20x20
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5
> +kms_plane_scaling@upscale-with-modifier-20x20
> +kms_plane_scaling@upscale-with-pixel-format-20x20
> +kms_prop_blob@invalid-set-prop-any
> +kms_properties@get_properties-sanity-atomic
> +kms_properties@plane-properties-atomic
> +kms_properties@plane-properties-legacy
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/meson-g12b-fails.txt b/drivers/gpu/drm/ci/meson-g12b-fails.txt
> new file mode 100644
> index 000000000000..345e1426b3a3
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/meson-g12b-fails.txt
> @@ -0,0 +1,5 @@
> +kms_3d,Fail
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_properties@connector-properties-atomic,Fail
> +kms_properties@get_properties-sanity-atomic,Fail
> +kms_properties@get_properties-sanity-non-atomic,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/meson-g12b-flakes.txt b/drivers/gpu/drm/ci/meson-g12b-flakes.txt
> new file mode 100644
> index 000000000000..b63329d06767
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/meson-g12b-flakes.txt
> @@ -0,0 +1,4 @@
> +kms_force_connector_basic@force-connector-state
> +kms_force_connector_basic@force-edid
> +kms_force_connector_basic@force-load-detect
> +kms_force_connector_basic@prune-stale-modes
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/msm-apq8016-fails.txt b/drivers/gpu/drm/ci/msm-apq8016-fails.txt
> new file mode 100644
> index 000000000000..16c2dfab3f16
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-apq8016-fails.txt
> @@ -0,0 +1,15 @@
> +kms_3d,Fail
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_cursor_legacy@all-pipes-forked-move,Fail
> +kms_cursor_legacy@all-pipes-torture-bo,Fail
> +kms_cursor_legacy@all-pipes-forked-bo,Fail
> +kms_cursor_legacy@all-pipes-single-bo,Fail
> +kms_cursor_legacy@all-pipes-single-move,Fail
> +kms_cursor_legacy@all-pipes-torture-move,Fail
> +kms_cursor_legacy@pipe-A-forked-bo,Fail
> +kms_cursor_legacy@pipe-A-forked-move,Fail
> +kms_cursor_legacy@pipe-A-single-bo,Fail
> +kms_cursor_legacy@pipe-A-single-move,Fail
> +kms_cursor_legacy@pipe-A-torture-bo,Fail
> +kms_cursor_legacy@pipe-A-torture-move,Fail
> +kms_hdmi_inject@inject-4k,Fail
> diff --git a/drivers/gpu/drm/ci/msm-apq8016-flakes.txt b/drivers/gpu/drm/ci/msm-apq8016-flakes.txt
> new file mode 100644
> index 000000000000..b63329d06767
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-apq8016-flakes.txt
> @@ -0,0 +1,4 @@
> +kms_force_connector_basic@force-connector-state
> +kms_force_connector_basic@force-edid
> +kms_force_connector_basic@force-load-detect
> +kms_force_connector_basic@prune-stale-modes
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/msm-apq8096-fails.txt b/drivers/gpu/drm/ci/msm-apq8096-fails.txt
> new file mode 100644
> index 000000000000..88a1fc0a3b0d
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-apq8096-fails.txt
> @@ -0,0 +1,2 @@
> +kms_3d,Fail
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> diff --git a/drivers/gpu/drm/ci/msm-apq8096-flakes.txt b/drivers/gpu/drm/ci/msm-apq8096-flakes.txt
> new file mode 100644
> index 000000000000..b63329d06767
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-apq8096-flakes.txt
> @@ -0,0 +1,4 @@
> +kms_force_connector_basic@force-connector-state
> +kms_force_connector_basic@force-edid
> +kms_force_connector_basic@force-load-detect
> +kms_force_connector_basic@prune-stale-modes
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/msm-apq8096-skips.txt b/drivers/gpu/drm/ci/msm-apq8096-skips.txt
> new file mode 100644
> index 000000000000..cd49c8ce2059
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-apq8096-skips.txt
> @@ -0,0 +1,2 @@
> +# Whole machine hangs
> +kms_cursor_legacy@all-pipes-torture-move
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/msm-sc7180-fails.txt b/drivers/gpu/drm/ci/msm-sc7180-fails.txt
> new file mode 100644
> index 000000000000..0b159b6469c8
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-sc7180-fails.txt
> @@ -0,0 +1,22 @@
> +kms_cursor_legacy@cursor-vs-flip-toggle,Fail
> +kms_cursor_legacy@cursorA-vs-flipA-atomic-transitions,Crash
> +kms_plane@pixel-format,Fail
> +kms_plane@pixel-format-source-clamping,Fail
> +kms_plane@plane-position-covered,Fail
> +kms_plane@plane-position-hole,Fail
> +kms_plane@plane-position-hole-dpms,Fail
> +kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
> +kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
> +kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-7efc,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-basic,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
> +kms_plane_alpha_blend@pipe-B-constant-alpha-mid,Fail
> +kms_plane_alpha_blend@pipe-B-coverage-7efc,Fail
> +kms_plane_alpha_blend@pipe-B-coverage-vs-premult-vs-constant,Fail
> +kms_plane_multiple@atomic-pipe-A-tiling-none,Crash
> +kms_rmfb@close-fd,Fail
> +kms_rotation_crc@primary-rotation-180,Fail
> +kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
> +kms_universal_plane@disable-primary-vs-flip-pipe-b,Fail
> diff --git a/drivers/gpu/drm/ci/msm-sc7180-flakes.txt b/drivers/gpu/drm/ci/msm-sc7180-flakes.txt
> new file mode 100644
> index 000000000000..6022edace190
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-sc7180-flakes.txt
> @@ -0,0 +1,14 @@
> +# Test ends up reading CRC from frame before cursor update
> +# sometimes.. tbd if this is a kernel CRC bug or a test
> +# bug
> +kms_cursor_crc@pipe-.*
> +
> +kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
> +kms_cursor_edge_walk@pipe-A-64x64-left-edge
> +kms_cursor_edge_walk@pipe-A-64x64-right-edge
> +kms_cursor_edge_walk@pipe-A-64x64-top-edge
> +kms_cursor_edge_walk@pipe-B-64x64-bottom-edge
> +kms_cursor_edge_walk@pipe-B-64x64-left-edge
> +kms_cursor_edge_walk@pipe-B-64x64-right-edge
> +kms_cursor_edge_walk@pipe-B-64x64-top-edge
> +kms_plane_multiple@atomic-pipe-A-tiling-none
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/msm-sc7180-skips.txt b/drivers/gpu/drm/ci/msm-sc7180-skips.txt
> new file mode 100644
> index 000000000000..40916ddff81f
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-sc7180-skips.txt
> @@ -0,0 +1,18 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> +
> +# Test incorrectly assumes that CTM support implies gamma/degamma
> +# LUT support.  None of the subtests handle the case of only having
> +# CTM support
> +kms_color.*
> +
> +# 4k@60 is not supported on this hw, but driver doesn't handle it
> +# too gracefully.. https://gitlab.freedesktop.org/drm/msm/-/issues/15
> +kms_bw@linear-tiling-.*-displays-3840x2160p
> +
> +# Until igt fix lands: https://patchwork.freedesktop.org/patch/493175/
> +kms_bw@linear-tiling-2.*
> +kms_bw@linear-tiling-3.*
> +kms_bw@linear-tiling-4.*
> +kms_bw@linear-tiling-5.*
> +kms_bw@linear-tiling-6.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/msm-sdm845-fails.txt b/drivers/gpu/drm/ci/msm-sdm845-fails.txt
> new file mode 100644
> index 000000000000..8133927a44df
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-sdm845-fails.txt
> @@ -0,0 +1,44 @@
> +kms_color@pipe-A-ctm-0-25,Fail
> +kms_color@pipe-A-ctm-0-5,Fail
> +kms_color@pipe-A-ctm-0-75,Fail
> +kms_color@pipe-A-ctm-blue-to-red,Fail
> +kms_color@pipe-A-ctm-green-to-red,Fail
> +kms_color@pipe-A-ctm-max,Fail
> +kms_color@pipe-A-ctm-negative,Fail
> +kms_color@pipe-A-ctm-red-to-blue,Fail
> +kms_color@pipe-A-legacy-gamma,Fail
> +kms_cursor_legacy@basic-flip-after-cursor-atomic,Fail
> +kms_cursor_legacy@basic-flip-after-cursor-legacy,Fail
> +kms_cursor_legacy@basic-flip-before-cursor-atomic,Fail
> +kms_cursor_legacy@basic-flip-before-cursor-legacy,Fail
> +kms_cursor_legacy@cursor-vs-flip-atomic,Fail
> +kms_cursor_legacy@cursor-vs-flip-atomic-transitions,Fail
> +kms_cursor_legacy@cursor-vs-flip-legacy,Fail
> +kms_cursor_legacy@cursor-vs-flip-toggle,Fail
> +kms_cursor_legacy@flip-vs-cursor-atomic,Fail
> +kms_cursor_legacy@flip-vs-cursor-crc-atomic,Fail
> +kms_cursor_legacy@flip-vs-cursor-crc-legacy,Fail
> +kms_cursor_legacy@flip-vs-cursor-legacy,Fail
> +kms_cursor_legacy@short-flip-after-cursor-atomic-transitions,Fail
> +kms_cursor_legacy@short-flip-after-cursor-toggle,Fail
> +kms_cursor_legacy@short-flip-before-cursor-atomic-transitions,Fail
> +kms_cursor_legacy@short-flip-before-cursor-toggle,Fail
> +kms_plane@pixel-format,Fail
> +kms_plane@pixel-format-source-clamping,Fail
> +kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
> +kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
> +kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
> +kms_plane_cursor@pipe-A-overlay-size-128,Fail
> +kms_plane_cursor@pipe-A-overlay-size-256,Fail
> +kms_plane_cursor@pipe-A-overlay-size-64,Fail
> +kms_plane_cursor@pipe-A-viewport-size-128,Fail
> +kms_plane_cursor@pipe-A-viewport-size-256,Fail
> +kms_plane_cursor@pipe-A-viewport-size-64,Fail
> +kms_plane_scaling@downscale-with-pixel-format-factor-0-25,Timeout
> +kms_plane_scaling@downscale-with-pixel-format-factor-0-5,Timeout
> +kms_plane_scaling@downscale-with-pixel-format-factor-0-75,Timeout
> +kms_plane_scaling@invalid-num-scalers,Fail
> +kms_plane_scaling@planes-downscale-factor-0-25,Fail
> +kms_plane_scaling@scaler-with-clipping-clamping,Timeout
> +kms_plane_scaling@scaler-with-pixel-format-unity-scaling,Timeout
> +kms_rmfb@close-fd,Fail
> diff --git a/drivers/gpu/drm/ci/msm-sdm845-flakes.txt b/drivers/gpu/drm/ci/msm-sdm845-flakes.txt
> new file mode 100644
> index 000000000000..da4406b74828
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-sdm845-flakes.txt
> @@ -0,0 +1,33 @@
> +# Test ends up reading CRC from frame before cursor update
> +# sometimes.. tbd if this is a kernel CRC bug or a test
> +# bug
> +kms_cursor_crc@pipe-A-cursor-alpha-opaque
> +kms_cursor_crc@pipe-A-cursor-dpms
> +kms_cursor_crc@pipe-A-cursor-size-change
> +kms_cursor_legacy@flip-vs-cursor-toggle
> +kms_cursor_legacy@pipe-A-forked-bo
> +kms_cursor_legacy@pipe-A-forked-move
> +kms_cursor_crc@pipe-A-cursor-32x10-offscreen
> +kms_cursor_crc@pipe-A-cursor-32x10-onscreen
> +kms_cursor_crc@pipe-A-cursor-32x10-random
> +kms_cursor_crc@pipe-A-cursor-32x10-sliding
> +kms_cursor_crc@pipe-A-cursor-32x32-offscreen
> +kms_cursor_crc@pipe-A-cursor-32x32-onscreen
> +kms_cursor_crc@pipe-A-cursor-32x32-random
> +kms_cursor_crc@pipe-A-cursor-32x32-sliding
> +kms_cursor_crc@pipe-A-cursor-64x21-offscreen
> +kms_cursor_crc@pipe-A-cursor-64x21-onscreen
> +kms_cursor_crc@pipe-A-cursor-64x21-random
> +kms_cursor_crc@pipe-A-cursor-64x21-sliding
> +kms_cursor_crc@pipe-A-cursor-64x64-offscreen
> +kms_cursor_crc@pipe-A-cursor-64x64-onscreen
> +kms_cursor_crc@pipe-A-cursor-64x64-random
> +kms_cursor_crc@pipe-A-cursor-64x64-sliding
> +kms_cursor_crc@pipe-A-cursor-dpms
> +kms_cursor_crc@pipe-A-cursor-suspend
> +kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
> +kms_cursor_edge_walk@pipe-A-64x64-left-edge
> +kms_cursor_edge_walk@pipe-A-64x64-right-edge
> +kms_cursor_edge_walk@pipe-A-64x64-top-edge
> +
> +kms_flip@dpms-vs-vblank-race-interruptible
> diff --git a/drivers/gpu/drm/ci/msm-sdm845-skips.txt b/drivers/gpu/drm/ci/msm-sdm845-skips.txt
> new file mode 100644
> index 000000000000..42675f1c6d76
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/msm-sdm845-skips.txt
> @@ -0,0 +1,2 @@
> +# Hangs machine
> +kms_bw.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt b/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
> new file mode 100644
> index 000000000000..e2a264647a58
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
> @@ -0,0 +1,75 @@
> +kms_3d,Fail
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> +kms_cursor_crc@pipe-A-cursor-32x10-onscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-32x10-random,Fail
> +kms_cursor_crc@pipe-A-cursor-32x10-sliding,Fail
> +kms_cursor_crc@pipe-A-cursor-32x32-onscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-32x32-random,Fail
> +kms_cursor_crc@pipe-A-cursor-32x32-sliding,Fail
> +kms_cursor_crc@pipe-A-cursor-64x21-onscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-64x21-random,Fail
> +kms_cursor_crc@pipe-A-cursor-64x21-sliding,Fail
> +kms_cursor_crc@pipe-A-cursor-64x64-onscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-64x64-random,Fail
> +kms_cursor_crc@pipe-A-cursor-64x64-sliding,Fail
> +kms_cursor_crc@pipe-A-cursor-alpha-opaque,Fail
> +kms_cursor_crc@pipe-A-cursor-dpms,Fail
> +kms_cursor_crc@pipe-A-cursor-size-change,Fail
> +kms_cursor_crc@pipe-B-cursor-32x10-onscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-32x10-random,Fail
> +kms_cursor_crc@pipe-B-cursor-32x10-sliding,Fail
> +kms_cursor_crc@pipe-B-cursor-32x32-onscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-32x32-random,Fail
> +kms_cursor_crc@pipe-B-cursor-32x32-sliding,Fail
> +kms_cursor_crc@pipe-B-cursor-64x21-onscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-64x21-random,Fail
> +kms_cursor_crc@pipe-B-cursor-64x64-onscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-64x64-random,Fail
> +kms_cursor_crc@pipe-B-cursor-64x64-sliding,Fail
> +kms_cursor_crc@pipe-B-cursor-alpha-opaque,Fail
> +kms_cursor_crc@pipe-B-cursor-size-change,Fail
> +kms_force_connector_basic@force-connector-state,Fail
> +kms_force_connector_basic@force-edid,Fail
> +kms_force_connector_basic@force-load-detect,Fail
> +kms_force_connector_basic@prune-stale-modes,Fail
> +kms_invalid_mode@int-max-clock,Fail
> +kms_pipe_crc_basic@nonblocking-crc-pipe-A-frame-sequence,Fail
> +kms_pipe_crc_basic@nonblocking-crc-pipe-B-frame-sequence,Fail
> +kms_pipe_crc_basic@read-crc-pipe-A-frame-sequence,Fail
> +kms_pipe_crc_basic@read-crc-pipe-B-frame-sequence,Fail
> +kms_plane_cursor@pipe-A-overlay-size-128,Fail
> +kms_plane_cursor@pipe-A-overlay-size-256,Fail
> +kms_plane_cursor@pipe-A-overlay-size-64,Fail
> +kms_plane_cursor@pipe-A-primary-size-128,Fail
> +kms_plane_cursor@pipe-A-primary-size-256,Fail
> +kms_plane_cursor@pipe-A-primary-size-64,Fail
> +kms_plane_cursor@pipe-A-viewport-size-128,Fail
> +kms_plane_cursor@pipe-A-viewport-size-256,Fail
> +kms_plane_cursor@pipe-A-viewport-size-64,Fail
> +kms_plane_cursor@pipe-B-overlay-size-128,Fail
> +kms_plane_cursor@pipe-B-overlay-size-256,Fail
> +kms_plane_cursor@pipe-B-overlay-size-64,Fail
> +kms_plane_cursor@pipe-B-primary-size-128,Fail
> +kms_plane_cursor@pipe-B-primary-size-256,Fail
> +kms_plane_cursor@pipe-B-primary-size-64,Fail
> +kms_plane_cursor@pipe-B-viewport-size-128,Fail
> +kms_plane_cursor@pipe-B-viewport-size-256,Fail
> +kms_plane_cursor@pipe-B-viewport-size-64,Fail
> +kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
> +kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
> +kms_plane_scaling@upscale-with-modifier-20x20,Fail
> +kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
> +kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
> +kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
> +kms_plane_scaling@upscale-with-rotation-20x20,Fail
> +kms_prime@basic-crc,Fail
> +kms_properties@connector-properties-atomic,Fail
> +kms_properties@get_properties-sanity-atomic,Fail
> +kms_properties@get_properties-sanity-non-atomic,Fail
> +kms_rmfb@close-fd,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt b/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
> new file mode 100644
> index 000000000000..447fb26cc344
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
> @@ -0,0 +1,5 @@
> +kms_cursor_crc@pipe-B-cursor-dpms
> +kms_cursor_edge_walk@pipe-A-64x64-right-edge
> +kms_cursor_edge_walk@pipe-A-64x64-top-edge
> +kms_cursor_edge_walk@pipe-B-64x64-right-edge
> +kms_cursor_edge_walk@pipe-B-64x64-top-edge
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt b/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
> new file mode 100644
> index 000000000000..26f9a03fc074
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
> @@ -0,0 +1,46 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> +
> +# Too unstable, machine ends up hanging after lots of Oopses
> +kms_cursor_legacy.*
> +
> +# Started hanging the machine on Linux 5.19-rc2:
> +#
> +# [IGT] kms_plane_lowres: executing
> +# [IGT] kms_plane_lowres: starting subtest pipe-F-tiling-y
> +# [IGT] kms_plane_lowres: exiting, ret=77
> +# Console: switching to colour frame buffer device 170x48
> +# rockchip-drm display-subsystem: [drm] *ERROR* flip_done timed out
> +# rockchip-drm display-subsystem: [drm] *ERROR* [CRTC:35:crtc-0] commit wait timed out
> +# BUG: spinlock bad magic on CPU#3, kms_plane_lowre/482
> +# 8<--- cut here ---
> +# Unable to handle kernel paging request at virtual address 7812078e
> +# [7812078e] *pgd=00000000
> +# Internal error: Oops: 5 [#1] SMP ARM
> +# Modules linked in:
> +# CPU: 3 PID: 482 Comm: kms_plane_lowre Tainted: G        W         5.19.0-rc2-323596-g00535de92171 #1
> +# Hardware name: Rockchip (Device Tree)
> +# Process kms_plane_lowre (pid: 482, stack limit = 0x1193ac2b)
> +#  spin_dump from do_raw_spin_lock+0xa4/0xe8
> +#  do_raw_spin_lock from wait_for_completion_timeout+0x2c/0x120
> +#  wait_for_completion_timeout from drm_crtc_commit_wait+0x18/0x7c
> +#  drm_crtc_commit_wait from drm_atomic_helper_wait_for_dependencies+0x44/0x168
> +#  drm_atomic_helper_wait_for_dependencies from commit_tail+0x34/0x180
> +#  commit_tail from drm_atomic_helper_commit+0x164/0x18c
> +#  drm_atomic_helper_commit from drm_atomic_commit+0xac/0xe4
> +#  drm_atomic_commit from drm_client_modeset_commit_atomic+0x23c/0x284
> +#  drm_client_modeset_commit_atomic from drm_client_modeset_commit_locked+0x60/0x1c8
> +#  drm_client_modeset_commit_locked from drm_client_modeset_commit+0x24/0x40
> +#  drm_client_modeset_commit from drm_fbdev_client_restore+0x58/0x94
> +#  drm_fbdev_client_restore from drm_client_dev_restore+0x70/0xbc
> +#  drm_client_dev_restore from drm_release+0xf4/0x114
> +#  drm_release from __fput+0x74/0x240
> +#  __fput from task_work_run+0x84/0xb4
> +#  task_work_run from do_exit+0x34c/0xa20
> +#  do_exit from do_group_exit+0x34/0x98
> +#  do_group_exit from __wake_up_parent+0x0/0x18
> +# Code: e595c008 12843d19 03e00000 03093168 (15940508)
> +# ---[ end trace 0000000000000000 ]---
> +# note: kms_plane_lowre[482] exited with preempt_count 1
> +# Fixing recursive fault but reboot is needed!
> +kms_plane_lowres@pipe-F-tiling-y
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt b/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
> new file mode 100644
> index 000000000000..0f8afa7e2adc
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
> @@ -0,0 +1,86 @@
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_color@pipe-A-legacy-gamma,Fail
> +kms_color@pipe-B-legacy-gamma,Fail
> +kms_cursor_crc@pipe-A-cursor-32x10-offscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-32x10-onscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-32x10-random,Fail
> +kms_cursor_crc@pipe-A-cursor-32x10-rapid-movement,Fail
> +kms_cursor_crc@pipe-A-cursor-32x10-sliding,Fail
> +kms_cursor_crc@pipe-A-cursor-32x32-offscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-32x32-onscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-32x32-random,Fail
> +kms_cursor_crc@pipe-A-cursor-32x32-rapid-movement,Fail
> +kms_cursor_crc@pipe-A-cursor-32x32-sliding,Fail
> +kms_cursor_crc@pipe-A-cursor-64x21-onscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-64x21-random,Fail
> +kms_cursor_crc@pipe-A-cursor-64x21-sliding,Fail
> +kms_cursor_crc@pipe-A-cursor-64x64-offscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-64x64-onscreen,Fail
> +kms_cursor_crc@pipe-A-cursor-64x64-random,Fail
> +kms_cursor_crc@pipe-A-cursor-64x64-rapid-movement,Fail
> +kms_cursor_crc@pipe-A-cursor-64x64-sliding,Fail
> +kms_cursor_crc@pipe-A-cursor-alpha-opaque,Fail
> +kms_cursor_crc@pipe-A-cursor-alpha-transparent,Fail
> +kms_cursor_crc@pipe-A-cursor-dpms,Fail
> +kms_cursor_crc@pipe-A-cursor-size-change,Fail
> +kms_cursor_crc@pipe-B-cursor-32x10-onscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-32x10-random,Fail
> +kms_cursor_crc@pipe-B-cursor-32x10-rapid-movement,Fail
> +kms_cursor_crc@pipe-B-cursor-32x10-sliding,Fail
> +kms_cursor_crc@pipe-B-cursor-32x32-offscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-32x32-onscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-32x32-random,Fail
> +kms_cursor_crc@pipe-B-cursor-32x32-rapid-movement,Fail
> +kms_cursor_crc@pipe-B-cursor-32x32-sliding,Fail
> +kms_cursor_crc@pipe-B-cursor-64x21-onscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-64x21-random,Fail
> +kms_cursor_crc@pipe-B-cursor-64x21-rapid-movement,Fail
> +kms_cursor_crc@pipe-B-cursor-64x64-offscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-64x64-onscreen,Fail
> +kms_cursor_crc@pipe-B-cursor-64x64-random,Fail
> +kms_cursor_crc@pipe-B-cursor-64x64-rapid-movement,Fail
> +kms_cursor_crc@pipe-B-cursor-64x64-sliding,Fail
> +kms_cursor_crc@pipe-B-cursor-alpha-opaque,Fail
> +kms_cursor_crc@pipe-B-cursor-dpms,Fail
> +kms_cursor_crc@pipe-B-cursor-size-change,Fail
> +kms_cursor_edge_walk@pipe-A-64x64-bottom-edge,Fail
> +kms_cursor_edge_walk@pipe-A-64x64-left-edge,Fail
> +kms_cursor_edge_walk@pipe-A-64x64-top-edge,Fail
> +kms_cursor_edge_walk@pipe-B-64x64-bottom-edge,Fail
> +kms_cursor_edge_walk@pipe-B-64x64-right-edge,Fail
> +kms_cursor_edge_walk@pipe-B-64x64-top-edge,Fail
> +kms_invalid_mode@int-max-clock,Fail
> +kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-A,Fail
> +kms_pipe_crc_basic@nonblocking-crc-pipe-A,Fail
> +kms_pipe_crc_basic@nonblocking-crc-pipe-A-frame-sequence,Fail
> +kms_pipe_crc_basic@nonblocking-crc-pipe-B,Fail
> +kms_pipe_crc_basic@nonblocking-crc-pipe-B-frame-sequence,Fail
> +kms_pipe_crc_basic@read-crc-pipe-A,Fail
> +kms_pipe_crc_basic@read-crc-pipe-A-frame-sequence,Fail
> +kms_pipe_crc_basic@read-crc-pipe-B,Fail
> +kms_pipe_crc_basic@read-crc-pipe-B-frame-sequence,Fail
> +kms_plane@plane-panning-bottom-right,Fail
> +kms_plane@plane-panning-top-left,Fail
> +kms_plane_cursor@pipe-B-overlay-size-128,Fail
> +kms_plane_cursor@pipe-B-overlay-size-256,Fail
> +kms_plane_cursor@pipe-B-overlay-size-64,Fail
> +kms_plane_cursor@pipe-B-primary-size-128,Fail
> +kms_plane_cursor@pipe-B-primary-size-256,Fail
> +kms_plane_cursor@pipe-B-primary-size-64,Fail
> +kms_plane_cursor@pipe-B-viewport-size-128,Fail
> +kms_plane_cursor@pipe-B-viewport-size-256,Fail
> +kms_plane_cursor@pipe-B-viewport-size-64,Fail
> +kms_plane_multiple@atomic-pipe-B-tiling-none,Fail
> +kms_prime@basic-crc,Fail
> +kms_rmfb@close-fd,Fail
> +kms_universal_plane@universal-plane-pipe-B-functional,Fail
> +kms_vblank@pipe-A-query-forked,Fail
> +kms_vblank@pipe-A-query-idle,Fail
> +kms_vblank@pipe-A-wait-busy,Fail
> +kms_vblank@pipe-A-wait-forked,Fail
> +kms_vblank@pipe-A-wait-forked-busy,Fail
> +kms_vblank@pipe-B-query-forked,Fail
> +kms_vblank@pipe-B-query-idle,Fail
> +kms_vblank@pipe-B-wait-busy,Fail
> +kms_vblank@pipe-B-wait-forked,Fail
> +kms_vblank@pipe-B-wait-forked-busy,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt b/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
> new file mode 100644
> index 000000000000..b4c37a4315e4
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
> @@ -0,0 +1,25 @@
> +kms_cursor_crc@pipe-A-cursor-64x21-offscreen
> +kms_cursor_crc@pipe-A-cursor-64x21-rapid-movement
> +kms_cursor_crc@pipe-B-cursor-32x10-offscreen
> +kms_cursor_crc@pipe-B-cursor-32x10-rapid-movement
> +kms_cursor_crc@pipe-B-cursor-32x32-offscreen
> +kms_cursor_crc@pipe-B-cursor-32x32-rapid-movement
> +kms_cursor_crc@pipe-B-cursor-64x64-offscreen
> +kms_cursor_crc@pipe-B-cursor-64x64-rapid-movement
> +kms_cursor_edge_walk@pipe-A-64x64-right-edge
> +kms_cursor_edge_walk@pipe-B-64x64-left-edge
> +kms_flip@flip-vs-expired-vblank
> +kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-B
> +kms_plane_multiple@atomic-pipe-A-tiling-none
> +kms_plane@plane-position-hole
> +kms_sequence@get-forked
> +kms_sequence@get-forked-busy
> +kms_setmode@basic
> +kms_vblank@pipe-A-accuracy-idle
> +kms_vblank@pipe-A-query-busy
> +kms_vblank@pipe-A-query-forked-busy
> +kms_vblank@pipe-A-wait-idle
> +kms_vblank@pipe-B-accuracy-idle
> +kms_vblank@pipe-B-query-busy
> +kms_vblank@pipe-B-query-forked-busy
> +kms_vblank@pipe-B-wait-idle
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt b/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
> new file mode 100644
> index 000000000000..10c3d81a919a
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
> @@ -0,0 +1,5 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> +
> +# Too unstable, machine ends up hanging after lots of Oopses
> +kms_cursor_legacy.*
> diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt b/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
> new file mode 100644
> index 000000000000..2178bdd064dd
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
> @@ -0,0 +1,38 @@
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_addfb_basic@bad-pitch-65536,Fail
> +kms_addfb_basic@bo-too-small,Fail
> +kms_addfb_basic@size-max,Fail
> +kms_addfb_basic@too-high,Fail
> +kms_atomic_transition@plane-primary-toggle-with-vblank-wait,Fail
> +kms_bw@linear-tiling-1-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-1-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-1-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_invalid_mode@int-max-clock,Fail
> +kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
> +kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
> +kms_plane_scaling@planes-upscale-20x20,Fail
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
> +kms_plane_scaling@upscale-with-modifier-20x20,Fail
> +kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
> +kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
> +kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
> +kms_plane_scaling@upscale-with-rotation-20x20,Fail
> +kms_vblank@crtc-id,Fail
> +kms_vblank@invalid,Fail
> +kms_vblank@pipe-A-accuracy-idle,Fail
> +kms_vblank@pipe-A-query-busy,Fail
> +kms_vblank@pipe-A-query-forked,Fail
> +kms_vblank@pipe-A-query-forked-busy,Fail
> +kms_vblank@pipe-A-query-idle,Fail
> +kms_vblank@pipe-A-ts-continuation-idle,Fail
> +kms_vblank@pipe-A-ts-continuation-modeset,Fail
> +kms_vblank@pipe-A-ts-continuation-suspend,Fail
> +kms_vblank@pipe-A-wait-busy,Fail
> +kms_vblank@pipe-A-wait-forked,Fail
> +kms_vblank@pipe-A-wait-forked-busy,Fail
> +kms_vblank@pipe-A-wait-idle,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt b/drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt
> new file mode 100644
> index 000000000000..e69de29bb2d1
> diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt b/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt
> new file mode 100644
> index 000000000000..78be18174012
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt
> @@ -0,0 +1,6 @@
> +# Hits a "refcount_t: underflow; use-after-free" in virtio_gpu_fence_event_process
> +# When run in a particular order with other tests
> +kms_cursor_legacy.*
> +
> +# Job just hangs without any output
> +kms_flip@flip-vs-suspend.*
> \ No newline at end of file


^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [PATCH v5] drm: Add initial ci/ subdirectory
  2022-08-10 18:24         ` Rodrigo Siqueira Jordao
@ 2022-08-10 22:08           ` Rob Clark
  2022-08-11 10:10           ` Tomeu Vizoso
  1 sibling, 0 replies; 49+ messages in thread
From: Rob Clark @ 2022-08-10 22:08 UTC (permalink / raw)
  To: Rodrigo Siqueira Jordao
  Cc: Rob Clark, Chiu, Harrison, Tomeu Vizoso, Jonathan Corbet,
	Sun peng Li, Kevin Hilman, Neil Armstrong, linux-doc,
	linux-kernel, dri-devel, David Airlie, linux-mediatek,
	Nicholas Choi, linux-amlogic, Carlo Caione, linux-rockchip,
	kernel, linux-arm-kernel, Matthias Brugger

On Wed, Aug 10, 2022 at 11:25 AM Rodrigo Siqueira Jordao
<Rodrigo.Siqueira@amd.com> wrote:
>
> Hi Tomeu,
>
> First of all, nice patch! I just saw it, and I have some basic questions
> (I don't understand many of these CI details). I also CC some CI folks
> from the display team at AMD.
>
> On 2022-07-26 14:16, Tomeu Vizoso wrote:
> > And use it to store expectations about what the DRM drivers are
> > supposed to pass in the IGT test suite.
> >
> > Also include a configuration file that points to the out-of-tree CI
> > scripts.
> >
> > By storing the test expectations along the code we can make sure both
> > stay in sync with each other, and so we can know when a code change
> > breaks those expectations.
> >
> > This will allow all contributors to drm to reuse the infrastructure
> > already in gitlab.freedesktop.org to test the driver on several
> > generations of the hardware.
> >
> > v2:
> >    - Fix names of result expectation files to match SoC
> >    - Don't execute tests that are going to skip on all boards
> >
> > v3:
> >    - Remove tracking of dmesg output during test execution
> >
> > v4:
> >    - Move up to drivers/gpu/drm
> >    - Add support for a bunch of other drivers
> >    - Explain how to incorporate fixes for CI from a
> >      ${TARGET_BRANCH}-external-fixes branch
> >    - Remove tests that pass from expected results file, to reduce the
> >      size of in-tree files
> >    - Add docs about how to deal with outages in automated testing labs
> >    - Specify the exact SHA of the CI scripts to be used
> >
> > v5:
> >    - Remove unneeded skips from Meson expectations file
> >    - Use a more advanced runner that detects flakes automatically
> >    - Use a more succint format for the expectations
> >    - Run many more tests (and use sharding to finish in time)
> >    - Use skip lists to avoid hanging machines
> >    - Add some build testing
> >    - Build IGT in each pipeline for faster uprevs
> >    - List failures in the GitLab UI
> >
> > Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> > Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
> > ---
> >   Documentation/gpu/automated_testing.rst       | 84 ++++++++++++++++++
> >   drivers/gpu/drm/ci/amdgpu-stoney-fails.txt    | 13 +++
> >   drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt   | 20 +++++
> >   drivers/gpu/drm/ci/amdgpu-stoney-skips.txt    |  2 +
> >   drivers/gpu/drm/ci/gitlab-ci.yml              | 13 +++
> >   drivers/gpu/drm/ci/i915-amly-flakes.txt       | 32 +++++++
> >   drivers/gpu/drm/ci/i915-amly-skips.txt        |  2 +
> >   drivers/gpu/drm/ci/i915-apl-fails.txt         | 29 +++++++
> >   drivers/gpu/drm/ci/i915-apl-flakes.txt        |  1 +
> >   drivers/gpu/drm/ci/i915-apl-skips.txt         |  2 +
> >   drivers/gpu/drm/ci/i915-cml-flakes.txt        | 36 ++++++++
> >   drivers/gpu/drm/ci/i915-glk-flakes.txt        | 40 +++++++++
> >   drivers/gpu/drm/ci/i915-glk-skips.txt         |  2 +
> >   drivers/gpu/drm/ci/i915-kbl-fails.txt         |  8 ++
> >   drivers/gpu/drm/ci/i915-kbl-flakes.txt        | 24 ++++++
> >   drivers/gpu/drm/ci/i915-kbl-skips.txt         |  2 +
> >   drivers/gpu/drm/ci/i915-tgl-fails.txt         | 19 ++++
> >   drivers/gpu/drm/ci/i915-tgl-flakes.txt        |  6 ++
> >   drivers/gpu/drm/ci/i915-tgl-skips.txt         |  8 ++
> >   drivers/gpu/drm/ci/i915-whl-fails.txt         | 30 +++++++
> >   drivers/gpu/drm/ci/i915-whl-flakes.txt        |  1 +
> >   drivers/gpu/drm/ci/mediatek-mt8173-fails.txt  | 29 +++++++
> >   drivers/gpu/drm/ci/mediatek-mt8183-fails.txt  | 10 +++
> >   drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt | 14 +++
> >   drivers/gpu/drm/ci/meson-g12b-fails.txt       |  5 ++
> >   drivers/gpu/drm/ci/meson-g12b-flakes.txt      |  4 +
> >   drivers/gpu/drm/ci/msm-apq8016-fails.txt      | 15 ++++
> >   drivers/gpu/drm/ci/msm-apq8016-flakes.txt     |  4 +
> >   drivers/gpu/drm/ci/msm-apq8096-fails.txt      |  2 +
> >   drivers/gpu/drm/ci/msm-apq8096-flakes.txt     |  4 +
> >   drivers/gpu/drm/ci/msm-apq8096-skips.txt      |  2 +
> >   drivers/gpu/drm/ci/msm-sc7180-fails.txt       | 22 +++++
> >   drivers/gpu/drm/ci/msm-sc7180-flakes.txt      | 14 +++
> >   drivers/gpu/drm/ci/msm-sc7180-skips.txt       | 18 ++++
> >   drivers/gpu/drm/ci/msm-sdm845-fails.txt       | 44 ++++++++++
> >   drivers/gpu/drm/ci/msm-sdm845-flakes.txt      | 33 +++++++
> >   drivers/gpu/drm/ci/msm-sdm845-skips.txt       |  2 +
> >   drivers/gpu/drm/ci/rockchip-rk3288-fails.txt  | 75 ++++++++++++++++
> >   drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt |  5 ++
> >   drivers/gpu/drm/ci/rockchip-rk3288-skips.txt  | 46 ++++++++++
> >   drivers/gpu/drm/ci/rockchip-rk3399-fails.txt  | 86 +++++++++++++++++++
> >   drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt | 25 ++++++
> >   drivers/gpu/drm/ci/rockchip-rk3399-skips.txt  |  5 ++
> >   drivers/gpu/drm/ci/virtio_gpu-none-fails.txt  | 38 ++++++++
> >   drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt |  0
> >   drivers/gpu/drm/ci/virtio_gpu-none-skips.txt  |  6 ++
> >   46 files changed, 882 insertions(+)
> >   create mode 100644 Documentation/gpu/automated_testing.rst
> >   create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
> >   create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
> >   create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
> >   create mode 100644 drivers/gpu/drm/ci/gitlab-ci.yml
> >   create mode 100644 drivers/gpu/drm/ci/i915-amly-flakes.txt
> >   create mode 100644 drivers/gpu/drm/ci/i915-amly-skips.txt
> >   create mode 100644 drivers/gpu/drm/ci/i915-apl-fails.txt
> >   create mode 100644 drivers/gpu/drm/ci/i915-apl-flakes.txt
> >   create mode 100644 drivers/gpu/drm/ci/i915-apl-skips.txt
> >   create mode 100644 drivers/gpu/drm/ci/i915-cml-flakes.txt
> >   create mode 100644 drivers/gpu/drm/ci/i915-glk-flakes.txt
> >   create mode 100644 drivers/gpu/drm/ci/i915-glk-skips.txt
> >   create mode 100644 drivers/gpu/drm/ci/i915-kbl-fails.txt
> >   create mode 100644 drivers/gpu/drm/ci/i915-kbl-flakes.txt
> >   create mode 100644 drivers/gpu/drm/ci/i915-kbl-skips.txt
> >   create mode 100644 drivers/gpu/drm/ci/i915-tgl-fails.txt
> >   create mode 100644 drivers/gpu/drm/ci/i915-tgl-flakes.txt
> >   create mode 100644 drivers/gpu/drm/ci/i915-tgl-skips.txt
> >   create mode 100644 drivers/gpu/drm/ci/i915-whl-fails.txt
> >   create mode 100644 drivers/gpu/drm/ci/i915-whl-flakes.txt
> >   create mode 100644 drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
> >   create mode 100644 drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
> >   create mode 100644 drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
> >   create mode 100644 drivers/gpu/drm/ci/meson-g12b-fails.txt
> >   create mode 100644 drivers/gpu/drm/ci/meson-g12b-flakes.txt
> >   create mode 100644 drivers/gpu/drm/ci/msm-apq8016-fails.txt
> >   create mode 100644 drivers/gpu/drm/ci/msm-apq8016-flakes.txt
> >   create mode 100644 drivers/gpu/drm/ci/msm-apq8096-fails.txt
> >   create mode 100644 drivers/gpu/drm/ci/msm-apq8096-flakes.txt
> >   create mode 100644 drivers/gpu/drm/ci/msm-apq8096-skips.txt
> >   create mode 100644 drivers/gpu/drm/ci/msm-sc7180-fails.txt
> >   create mode 100644 drivers/gpu/drm/ci/msm-sc7180-flakes.txt
> >   create mode 100644 drivers/gpu/drm/ci/msm-sc7180-skips.txt
> >   create mode 100644 drivers/gpu/drm/ci/msm-sdm845-fails.txt
> >   create mode 100644 drivers/gpu/drm/ci/msm-sdm845-flakes.txt
> >   create mode 100644 drivers/gpu/drm/ci/msm-sdm845-skips.txt
> >   create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
> >   create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
> >   create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
> >   create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
> >   create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
> >   create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
> >   create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
> >   create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt
> >   create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-skips.txt
> >
> > diff --git a/Documentation/gpu/automated_testing.rst b/Documentation/gpu/automated_testing.rst
> > new file mode 100644
> > index 000000000000..61003ecc7b6e
> > --- /dev/null
> > +++ b/Documentation/gpu/automated_testing.rst
> > @@ -0,0 +1,84 @@
> > +.. SPDX-License-Identifier: GPL-2.0+
> > +
> > +=========================================
> > +Automated testing of the DRM subsystem
> > +=========================================
> > +
> > +
> > +Introduction
> > +============
> > +
> > +Making sure that changes to the core or drivers don't introduce regressions can be very time consuming when lots of different hardware configurations need to be tested. Moreover, it isn't practical for each person interested in this testing to have to acquire and maintain what can be a considerable amount of hardware.
> > +
> > +Also, it is desirable for developers to check for regressions in their code by themselves, instead of relying on the maintainers finding them and then reporting back.
> > +
> > +There are facilities in gitlab.freedesktop.org to automatically test Mesa that can be used as well for testing the DRM subsystem. This document explains how people interested in testing it can use this shared infrastructure to save quite some time and effort.
> > +
> > +
> > +Relevant files
> > +==============
> > +
> > +drivers/gpu/drm/ci/gitlab-ci.yml
> > +--------------------------------
> > +
> > +Specifies the specific version of the scripts to be used. GitLab CI will use the values defined in this file to fetch the right scripts.
> > +
> > +
> > +drivers/gpu/drm/ci/${DRIVER_NAME}.testlist
> > +------------------------------------------
> > +
> > +Specifies the tests that the current code is expected to be able to reliably run for ${DRIVER_NAME}. These tests are expected to not hang the DUT (Device Under Testing) when running on the revision they belong to, and to give consistent results.
>
> The IGT repo has testlists per vendor (e.g.,
> https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/tree/master/tests/intel-ci).
> What is the advantage of keeping a similar IGT list here? Should we
> maintain that list in both projects?
>
> > +
> > +
> > +drivers/gpu/drm/ci/${DRIVER_NAME}_*_results.txt
> > +----------------------------------------
> > +
> > +Specifies the expected results of running this specific kernel revision on a given hardware configuration.
> > +
> > +
> > +How to enable automated testing on your tree
> > +============================================
> > +
> > +1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one yet
> > +
> > +2. In your kernel repo's configuration (eg. https://gitlab.freedesktop.org/tomeu/linux/-/settings/ci_cd), change the CI/CD configuration file from .gitlab-ci.yml to drivers/gpu/drm/ci/gitlab-ci.yml.
> > +
> > +3. Next time you push to this repository, you will see a CI pipeline being created (eg. https://gitlab.freedesktop.org/tomeu/linux/-/pipelines)
> > +
> > +4. The various jobs will be run and when the pipeline is finished, all jobs should be green unless a regression has been found.
> > +
> > +
> > +How to update test expectations
> > +===============================
> > +
> > +If your changes to the code fix any tests, you will have to update one or more of the files in drivers/gpu/drm/ci/${DRIVER_NAME}_*_results.txt, for each of the test platforms affected by the change.
> > +
> > +If you have run a pipeline and it failed because of a mismatched test result, you will have been offered a patch at the end of the run that you can apply after reviewing it.
> > +
> > +
> > +How to expand coverage
> > +======================
> > +
> > +If your code changes makes it possible to run more tests (by solving reliability issues, for example), more tests can be added to this list, and then the expected results updated with the patch file that will be printed at the end of each job.
> > +
> > +If there is a need for updating the version of IGT being used (maybe you have added more tests to it), follow the instructions at https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/tree/main#upreving-igt.
>
> Usually, we run our IGT test on the latest code from the IGT repo. Is it
> possible to configure this behavior?

That is *probably* not a good idea, in case test results change as a
result of IGT version (ie. IGT test fix causes something to change
fail->pass, new test introduced that fails on some devices, etc)

> > +
> > +
> > +How to test your changes to the scripts
> > +==========================================
> > +
> > +For testing changes to the scripts in the drm-ci repo, change the DRM_CI_PROJECT_PATH variable in drivers/gpu/drm/ci/gitlab-ci.yml to match your fork of the project (eg. tomeu/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
> > +
> > +
> > +How to incorporate external fixes in your testing
> > +=================================================
> > +
> > +Often, regressions in other trees will prevent testing changes local to the tree under test. These fixes will be automatically merged in during the build jobs from a branch in the target tree that is named as ${TARGET_BRANCH}-external-fixes.
> > +
> > +If the pipeline is not in a merge request and a branch with the same name exists in the local tree, commits from that branch will be merged in as well.
> > +
> > +
> > +How to deal with automated testing labs that may be down
> > +========================================================
> > +
> > +If a hardware farm is down and thus causing pipelines to fail that would otherwise pass, one can disable all jobs that would be submitted to that farm by editing the file at https://gitlab.freedesktop.org/gfx-ci/lab-status/-/blob/main/lab-status.yml.
>
>
> This part is the one that I really want to understand. How can we plug
> our farm? Do you have a guideline? I want to know if we can run a prototype.

There are some docs in mesa: https://docs.mesa3d.org/ci/index.html

BR,
-R

>
> > diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt b/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
> > new file mode 100644
> > index 000000000000..e721568b6ec3
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
> > @@ -0,0 +1,13 @@
> > +kms_addfb_basic@bad-pitch-65536,Fail
> > +kms_addfb_basic@bo-too-small,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
> > +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> > +kms_cursor_crc@pipe-A-cursor-size-change,Fail
> > +kms_cursor_crc@pipe-B-cursor-size-change,Fail
> > +kms_hdr@bpc-switch,Fail
> > +kms_hdr@bpc-switch-dpms,Fail
> > +kms_plane_multiple@atomic-pipe-A-tiling-none,Fail
> > +kms_rotation_crc@primary-rotation-180,Fail
> > +kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt b/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
> > new file mode 100644
> > index 000000000000..a2cbc339838c
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
> > @@ -0,0 +1,20 @@
> > +kms_addfb_basic@too-high
> > +kms_atomic_transition@plane-all-modeset-transition-internal-panels
> > +kms_atomic_transition@plane-all-transition
> > +kms_atomic_transition@plane-use-after-nonblocking-unbind
> > +kms_bw@linear-tiling-1-displays-1920x1080p
> > +kms_bw@linear-tiling-2-displays-1920x1080p
> > +kms_bw@linear-tiling-2-displays-2560x1440p
> > +kms_bw@linear-tiling-3-displays-2560x1440p
> > +kms_bw@linear-tiling-3-displays-3840x2160p
> > +kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
> > +kms_cursor_edge_walk@pipe-A-64x64-right-edge
> > +kms_cursor_edge_walk@pipe-A-64x64-top-edge
> > +kms_cursor_edge_walk@pipe-B-64x64-bottom-edge
> > +kms_cursor_edge_walk@pipe-B-64x64-left-edge
> > +kms_cursor_edge_walk@pipe-B-64x64-right-edge
> > +kms_cursor_edge_walk@pipe-B-64x64-top-edge
> > +kms_plane_multiple@atomic-pipe-B-tiling-none
> > +kms_plane@pixel-format
> > +kms_plane_scaling@downscale-with-rotation-factor-0-5
> > +kms_universal_plane@disable-primary-vs-flip-pipe-A
>
> We have multiple test lists for different ASICs, and we are working to
> have one unified list. I guess we just need to that list here?
>
> Maybe Nicholas/Herrison can provide a complete list here.
>
> Thanks
> Siqueira
>
>
> > diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt b/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
> > new file mode 100644
> > index 000000000000..e2c538a0f954
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
> > @@ -0,0 +1,2 @@
> > +# Suspend to RAM seems to be broken on this machine
> > +.*suspend.*
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml
> > new file mode 100644
> > index 000000000000..8898bbe0f180
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/gitlab-ci.yml
> > @@ -0,0 +1,13 @@
> > +variables:
> > +  # Change this to use your fork of drm-ci
> > +  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
> > +  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha bccff240ca042820484096f0782e8f060bd83bca
> > +
> > +  UPSTREAM_REPO: git://anongit.freedesktop.org/drm/drm
> > +  TARGET_BRANCH: drm-next
> > +
> > +include:
> > +  - project: *drm-ci-project-path
> > +    ref: *drm-ci-commit-sha
> > +    file:
> > +      - '.gitlab-ci.yml'
> > diff --git a/drivers/gpu/drm/ci/i915-amly-flakes.txt b/drivers/gpu/drm/ci/i915-amly-flakes.txt
> > new file mode 100644
> > index 000000000000..67d78f10b671
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/i915-amly-flakes.txt
> > @@ -0,0 +1,32 @@
> > +kms_bw@linear-tiling-2-displays-1920x1080p
> > +kms_bw@linear-tiling-2-displays-2560x1440p
> > +kms_bw@linear-tiling-2-displays-3840x2160p
> > +kms_bw@linear-tiling-3-displays-1920x1080p
> > +kms_bw@linear-tiling-3-displays-2560x1440p
> > +kms_bw@linear-tiling-3-displays-3840x2160p
> > +kms_bw@linear-tiling-4-displays-1920x1080p
> > +kms_bw@linear-tiling-4-displays-2560x1440p
> > +kms_bw@linear-tiling-4-displays-3840x2160p
> > +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
> > +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
> > +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
> > +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
> > +kms_plane_alpha_blend@pipe-A-alpha-basic
> > +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
> > +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
> > +kms_plane_alpha_blend@pipe-A-constant-alpha-max
> > +kms_plane_alpha_blend@pipe-B-alpha-basic
> > +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
> > +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
> > +kms_plane_alpha_blend@pipe-B-constant-alpha-max
> > +kms_plane_alpha_blend@pipe-C-alpha-basic
> > +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
> > +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
> > +kms_plane_alpha_blend@pipe-C-constant-alpha-max
> > +kms_sysfs_edid_timing
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/i915-amly-skips.txt b/drivers/gpu/drm/ci/i915-amly-skips.txt
> > new file mode 100644
> > index 000000000000..e2c538a0f954
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/i915-amly-skips.txt
> > @@ -0,0 +1,2 @@
> > +# Suspend to RAM seems to be broken on this machine
> > +.*suspend.*
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/i915-apl-fails.txt b/drivers/gpu/drm/ci/i915-apl-fails.txt
> > new file mode 100644
> > index 000000000000..a077f29d5cba
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/i915-apl-fails.txt
> > @@ -0,0 +1,29 @@
> > +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> > +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> > +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> > +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> > +kms_bw@linear-tiling-4-displays-1920x1080p,Fail
> > +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-4-displays-3840x2160p,Fail
> > +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
> > +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
> > +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
> > +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
> > +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
> > +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
> > +kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
> > +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
> > +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
> > +kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
> > +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
> > +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
> > +kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
> > +kms_sysfs_edid_timing,Fail
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/i915-apl-flakes.txt b/drivers/gpu/drm/ci/i915-apl-flakes.txt
> > new file mode 100644
> > index 000000000000..618bbe6bb793
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/i915-apl-flakes.txt
> > @@ -0,0 +1 @@
> > +kms_frontbuffer_tracking@fbc-tiling-linear
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/i915-apl-skips.txt b/drivers/gpu/drm/ci/i915-apl-skips.txt
> > new file mode 100644
> > index 000000000000..e2c538a0f954
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/i915-apl-skips.txt
> > @@ -0,0 +1,2 @@
> > +# Suspend to RAM seems to be broken on this machine
> > +.*suspend.*
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/i915-cml-flakes.txt b/drivers/gpu/drm/ci/i915-cml-flakes.txt
> > new file mode 100644
> > index 000000000000..a214419c6dc5
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/i915-cml-flakes.txt
> > @@ -0,0 +1,36 @@
> > +kms_bw@linear-tiling-2-displays-1920x1080p
> > +kms_bw@linear-tiling-2-displays-2560x1440p
> > +kms_bw@linear-tiling-2-displays-3840x2160p
> > +kms_bw@linear-tiling-3-displays-1920x1080p
> > +kms_bw@linear-tiling-3-displays-2560x1440p
> > +kms_bw@linear-tiling-3-displays-3840x2160p
> > +kms_bw@linear-tiling-4-displays-1920x1080p
> > +kms_bw@linear-tiling-4-displays-2560x1440p
> > +kms_bw@linear-tiling-4-displays-3840x2160p
> > +kms_flip@flip-vs-suspend
> > +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
> > +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
> > +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
> > +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
> > +kms_hdr@bpc-switch-suspend
> > +kms_plane_alpha_blend@pipe-A-alpha-basic
> > +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
> > +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
> > +kms_plane_alpha_blend@pipe-A-constant-alpha-max
> > +kms_plane_alpha_blend@pipe-B-alpha-basic
> > +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
> > +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
> > +kms_plane_alpha_blend@pipe-B-constant-alpha-max
> > +kms_plane_alpha_blend@pipe-C-alpha-basic
> > +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
> > +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
> > +kms_plane_alpha_blend@pipe-C-constant-alpha-max
> > +kms_psr2_su@page_flip-NV12
> > +kms_psr2_su@page_flip-P010
> > +kms_setmode@basic
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/i915-glk-flakes.txt b/drivers/gpu/drm/ci/i915-glk-flakes.txt
> > new file mode 100644
> > index 000000000000..aedb3d2ef885
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/i915-glk-flakes.txt
> > @@ -0,0 +1,40 @@
> > +kms_bw@linear-tiling-1-displays-3840x2160p
> > +kms_bw@linear-tiling-2-displays-1920x1080p
> > +kms_bw@linear-tiling-2-displays-2560x1440p
> > +kms_bw@linear-tiling-2-displays-3840x2160p
> > +kms_bw@linear-tiling-3-displays-1920x1080p
> > +kms_bw@linear-tiling-3-displays-2560x1440p
> > +kms_bw@linear-tiling-3-displays-3840x2160p
> > +kms_bw@linear-tiling-4-displays-1920x1080p
> > +kms_bw@linear-tiling-4-displays-2560x1440p
> > +kms_bw@linear-tiling-4-displays-3840x2160p
> > +kms_flip@blocking-wf_vblank
> > +kms_flip@wf_vblank-ts-check
> > +kms_flip@wf_vblank-ts-check-interruptible
> > +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
> > +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
> > +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
> > +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
> > +kms_frontbuffer_tracking@fbc-tiling-linear
> > +kms_plane_alpha_blend@pipe-A-alpha-basic
> > +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
> > +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
> > +kms_plane_alpha_blend@pipe-A-constant-alpha-max
> > +kms_plane_alpha_blend@pipe-B-alpha-basic
> > +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
> > +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
> > +kms_plane_alpha_blend@pipe-B-constant-alpha-max
> > +kms_plane_alpha_blend@pipe-C-alpha-basic
> > +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
> > +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
> > +kms_plane_alpha_blend@pipe-C-constant-alpha-max
> > +kms_rotation_crc@multiplane-rotation
> > +kms_rotation_crc@multiplane-rotation-cropping-bottom
> > +kms_rotation_crc@multiplane-rotation-cropping-top
> > +kms_setmode@basic
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/i915-glk-skips.txt b/drivers/gpu/drm/ci/i915-glk-skips.txt
> > new file mode 100644
> > index 000000000000..e2c538a0f954
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/i915-glk-skips.txt
> > @@ -0,0 +1,2 @@
> > +# Suspend to RAM seems to be broken on this machine
> > +.*suspend.*
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/i915-kbl-fails.txt b/drivers/gpu/drm/ci/i915-kbl-fails.txt
> > new file mode 100644
> > index 000000000000..f81f065e27e8
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/i915-kbl-fails.txt
> > @@ -0,0 +1,8 @@
> > +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
> > +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
> > +kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
> > +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
> > +kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/i915-kbl-flakes.txt b/drivers/gpu/drm/ci/i915-kbl-flakes.txt
> > new file mode 100644
> > index 000000000000..f82017654cf5
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/i915-kbl-flakes.txt
> > @@ -0,0 +1,24 @@
> > +kms_bw@linear-tiling-2-displays-1920x1080p
> > +kms_bw@linear-tiling-2-displays-3840x2160p
> > +kms_bw@linear-tiling-3-displays-1920x1080p
> > +kms_bw@linear-tiling-3-displays-2560x1440p
> > +kms_bw@linear-tiling-3-displays-3840x2160p
> > +kms_bw@linear-tiling-4-displays-1920x1080p
> > +kms_bw@linear-tiling-4-displays-3840x2160p
> > +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
> > +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
> > +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
> > +kms_plane_alpha_blend@pipe-A-alpha-basic
> > +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
> > +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
> > +kms_plane_alpha_blend@pipe-B-alpha-basic
> > +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
> > +kms_plane_alpha_blend@pipe-B-constant-alpha-max
> > +kms_plane_alpha_blend@pipe-C-alpha-basic
> > +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
> > +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
> > +kms_sysfs_edid_timing
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/i915-kbl-skips.txt b/drivers/gpu/drm/ci/i915-kbl-skips.txt
> > new file mode 100644
> > index 000000000000..e2c538a0f954
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/i915-kbl-skips.txt
> > @@ -0,0 +1,2 @@
> > +# Suspend to RAM seems to be broken on this machine
> > +.*suspend.*
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/i915-tgl-fails.txt b/drivers/gpu/drm/ci/i915-tgl-fails.txt
> > new file mode 100644
> > index 000000000000..270644ce220c
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/i915-tgl-fails.txt
> > @@ -0,0 +1,19 @@
> > +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> > +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> > +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> > +kms_bw@linear-tiling-4-displays-1920x1080p,Fail
> > +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-4-displays-3840x2160p,Fail
> > +kms_bw@linear-tiling-5-displays-1920x1080p,Fail
> > +kms_bw@linear-tiling-5-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-5-displays-3840x2160p,Fail
> > +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
> > +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
> > +kms_rotation_crc@bad-pixel-format,Fail
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/i915-tgl-flakes.txt b/drivers/gpu/drm/ci/i915-tgl-flakes.txt
> > new file mode 100644
> > index 000000000000..15fba77ff19d
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/i915-tgl-flakes.txt
> > @@ -0,0 +1,6 @@
> > +kms_draw_crc@draw-method-rgb565-blt-untiled
> > +kms_draw_crc@draw-method-xrgb8888-mmap-gtt-untiled
> > +kms_draw_crc@draw-method-xrgb8888-mmap-gtt-xtiled
> > +kms_flip@blocking-absolute-wf_vblank
> > +kms_flip@bo-too-big-interruptible
> > +kms_flip@flip-vs-rmfb-interruptible
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/i915-tgl-skips.txt b/drivers/gpu/drm/ci/i915-tgl-skips.txt
> > new file mode 100644
> > index 000000000000..14f33c7ba03b
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/i915-tgl-skips.txt
> > @@ -0,0 +1,8 @@
> > +# Suspend to RAM seems to be broken on this machine
> > +.*suspend.*
> > +
> > +# GPU hangs, then the whole machine
> > +gem_eio.*
> > +
> > +# Whole machine hangs
> > +kms_flip@absolute-wf_vblank@a-edp1
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/i915-whl-fails.txt b/drivers/gpu/drm/ci/i915-whl-fails.txt
> > new file mode 100644
> > index 000000000000..dbfedfa5d63f
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/i915-whl-fails.txt
> > @@ -0,0 +1,30 @@
> > +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> > +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> > +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> > +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> > +kms_bw@linear-tiling-4-displays-1920x1080p,Fail
> > +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-4-displays-3840x2160p,Fail
> > +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
> > +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
> > +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
> > +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
> > +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
> > +kms_frontbuffer_tracking@fbc-tiling-linear,Fail
> > +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
> > +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
> > +kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
> > +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
> > +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
> > +kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
> > +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
> > +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
> > +kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
> > +kms_sysfs_edid_timing,Fail
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/i915-whl-flakes.txt b/drivers/gpu/drm/ci/i915-whl-flakes.txt
> > new file mode 100644
> > index 000000000000..6bcac5b84fbb
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/i915-whl-flakes.txt
> > @@ -0,0 +1 @@
> > +kms_flip@flip-vs-suspend
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt b/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
> > new file mode 100644
> > index 000000000000..7f74fb9afc99
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
> > @@ -0,0 +1,29 @@
> > +kms_3d,Fail
> > +kms_addfb_basic@addfb25-bad-modifier,Fail
> > +kms_bw@linear-tiling-1-displays-1920x1080p,Fail
> > +kms_bw@linear-tiling-1-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-1-displays-3840x2160p,Fail
> > +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> > +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> > +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> > +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> > +kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
> > +kms_color@pipe-B-invalid-gamma-lut-sizes,Fail
> > +kms_force_connector_basic@force-connector-state,Fail
> > +kms_force_connector_basic@force-edid,Fail
> > +kms_force_connector_basic@force-load-detect,Fail
> > +kms_force_connector_basic@prune-stale-modes,Fail
> > +kms_invalid_mode@int-max-clock,Fail
> > +kms_plane_scaling@planes-upscale-20x20,Fail
> > +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
> > +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
> > +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
> > +kms_plane_scaling@upscale-with-modifier-20x20,Fail
> > +kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
> > +kms_plane_scaling@upscale-with-rotation-20x20,Fail
> > +kms_properties@get_properties-sanity-atomic,Fail
> > +kms_properties@plane-properties-atomic,Fail
> > +kms_properties@plane-properties-legacy,Fail
> > +kms_rmfb@close-fd,Fail
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt b/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
> > new file mode 100644
> > index 000000000000..6ff81d00e84e
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
> > @@ -0,0 +1,10 @@
> > +kms_addfb_basic@addfb25-bad-modifier,Fail
> > +kms_bw@linear-tiling-1-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> > +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> > +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> > +kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
> > +kms_plane_scaling@upscale-with-rotation-20x20,Fail
> > +kms_rmfb@close-fd,Fail
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt b/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
> > new file mode 100644
> > index 000000000000..208890b79eb0
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
> > @@ -0,0 +1,14 @@
> > +core_setmaster_vs_auth
> > +kms_bw@linear-tiling-1-displays-1920x1080p
> > +kms_bw@linear-tiling-1-displays-3840x2160p
> > +kms_bw@linear-tiling-3-displays-1920x1080p
> > +kms_cursor_legacy@cursor-vs-flip-atomic
> > +kms_plane_scaling@invalid-num-scalers
> > +kms_plane_scaling@planes-upscale-20x20
> > +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5
> > +kms_plane_scaling@upscale-with-modifier-20x20
> > +kms_plane_scaling@upscale-with-pixel-format-20x20
> > +kms_prop_blob@invalid-set-prop-any
> > +kms_properties@get_properties-sanity-atomic
> > +kms_properties@plane-properties-atomic
> > +kms_properties@plane-properties-legacy
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/meson-g12b-fails.txt b/drivers/gpu/drm/ci/meson-g12b-fails.txt
> > new file mode 100644
> > index 000000000000..345e1426b3a3
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/meson-g12b-fails.txt
> > @@ -0,0 +1,5 @@
> > +kms_3d,Fail
> > +kms_addfb_basic@addfb25-bad-modifier,Fail
> > +kms_properties@connector-properties-atomic,Fail
> > +kms_properties@get_properties-sanity-atomic,Fail
> > +kms_properties@get_properties-sanity-non-atomic,Fail
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/meson-g12b-flakes.txt b/drivers/gpu/drm/ci/meson-g12b-flakes.txt
> > new file mode 100644
> > index 000000000000..b63329d06767
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/meson-g12b-flakes.txt
> > @@ -0,0 +1,4 @@
> > +kms_force_connector_basic@force-connector-state
> > +kms_force_connector_basic@force-edid
> > +kms_force_connector_basic@force-load-detect
> > +kms_force_connector_basic@prune-stale-modes
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/msm-apq8016-fails.txt b/drivers/gpu/drm/ci/msm-apq8016-fails.txt
> > new file mode 100644
> > index 000000000000..16c2dfab3f16
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/msm-apq8016-fails.txt
> > @@ -0,0 +1,15 @@
> > +kms_3d,Fail
> > +kms_addfb_basic@addfb25-bad-modifier,Fail
> > +kms_cursor_legacy@all-pipes-forked-move,Fail
> > +kms_cursor_legacy@all-pipes-torture-bo,Fail
> > +kms_cursor_legacy@all-pipes-forked-bo,Fail
> > +kms_cursor_legacy@all-pipes-single-bo,Fail
> > +kms_cursor_legacy@all-pipes-single-move,Fail
> > +kms_cursor_legacy@all-pipes-torture-move,Fail
> > +kms_cursor_legacy@pipe-A-forked-bo,Fail
> > +kms_cursor_legacy@pipe-A-forked-move,Fail
> > +kms_cursor_legacy@pipe-A-single-bo,Fail
> > +kms_cursor_legacy@pipe-A-single-move,Fail
> > +kms_cursor_legacy@pipe-A-torture-bo,Fail
> > +kms_cursor_legacy@pipe-A-torture-move,Fail
> > +kms_hdmi_inject@inject-4k,Fail
> > diff --git a/drivers/gpu/drm/ci/msm-apq8016-flakes.txt b/drivers/gpu/drm/ci/msm-apq8016-flakes.txt
> > new file mode 100644
> > index 000000000000..b63329d06767
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/msm-apq8016-flakes.txt
> > @@ -0,0 +1,4 @@
> > +kms_force_connector_basic@force-connector-state
> > +kms_force_connector_basic@force-edid
> > +kms_force_connector_basic@force-load-detect
> > +kms_force_connector_basic@prune-stale-modes
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/msm-apq8096-fails.txt b/drivers/gpu/drm/ci/msm-apq8096-fails.txt
> > new file mode 100644
> > index 000000000000..88a1fc0a3b0d
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/msm-apq8096-fails.txt
> > @@ -0,0 +1,2 @@
> > +kms_3d,Fail
> > +kms_addfb_basic@addfb25-bad-modifier,Fail
> > diff --git a/drivers/gpu/drm/ci/msm-apq8096-flakes.txt b/drivers/gpu/drm/ci/msm-apq8096-flakes.txt
> > new file mode 100644
> > index 000000000000..b63329d06767
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/msm-apq8096-flakes.txt
> > @@ -0,0 +1,4 @@
> > +kms_force_connector_basic@force-connector-state
> > +kms_force_connector_basic@force-edid
> > +kms_force_connector_basic@force-load-detect
> > +kms_force_connector_basic@prune-stale-modes
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/msm-apq8096-skips.txt b/drivers/gpu/drm/ci/msm-apq8096-skips.txt
> > new file mode 100644
> > index 000000000000..cd49c8ce2059
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/msm-apq8096-skips.txt
> > @@ -0,0 +1,2 @@
> > +# Whole machine hangs
> > +kms_cursor_legacy@all-pipes-torture-move
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/msm-sc7180-fails.txt b/drivers/gpu/drm/ci/msm-sc7180-fails.txt
> > new file mode 100644
> > index 000000000000..0b159b6469c8
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/msm-sc7180-fails.txt
> > @@ -0,0 +1,22 @@
> > +kms_cursor_legacy@cursor-vs-flip-toggle,Fail
> > +kms_cursor_legacy@cursorA-vs-flipA-atomic-transitions,Crash
> > +kms_plane@pixel-format,Fail
> > +kms_plane@pixel-format-source-clamping,Fail
> > +kms_plane@plane-position-covered,Fail
> > +kms_plane@plane-position-hole,Fail
> > +kms_plane@plane-position-hole-dpms,Fail
> > +kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
> > +kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
> > +kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
> > +kms_plane_alpha_blend@pipe-B-alpha-7efc,Fail
> > +kms_plane_alpha_blend@pipe-B-alpha-basic,Fail
> > +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
> > +kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
> > +kms_plane_alpha_blend@pipe-B-constant-alpha-mid,Fail
> > +kms_plane_alpha_blend@pipe-B-coverage-7efc,Fail
> > +kms_plane_alpha_blend@pipe-B-coverage-vs-premult-vs-constant,Fail
> > +kms_plane_multiple@atomic-pipe-A-tiling-none,Crash
> > +kms_rmfb@close-fd,Fail
> > +kms_rotation_crc@primary-rotation-180,Fail
> > +kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
> > +kms_universal_plane@disable-primary-vs-flip-pipe-b,Fail
> > diff --git a/drivers/gpu/drm/ci/msm-sc7180-flakes.txt b/drivers/gpu/drm/ci/msm-sc7180-flakes.txt
> > new file mode 100644
> > index 000000000000..6022edace190
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/msm-sc7180-flakes.txt
> > @@ -0,0 +1,14 @@
> > +# Test ends up reading CRC from frame before cursor update
> > +# sometimes.. tbd if this is a kernel CRC bug or a test
> > +# bug
> > +kms_cursor_crc@pipe-.*
> > +
> > +kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
> > +kms_cursor_edge_walk@pipe-A-64x64-left-edge
> > +kms_cursor_edge_walk@pipe-A-64x64-right-edge
> > +kms_cursor_edge_walk@pipe-A-64x64-top-edge
> > +kms_cursor_edge_walk@pipe-B-64x64-bottom-edge
> > +kms_cursor_edge_walk@pipe-B-64x64-left-edge
> > +kms_cursor_edge_walk@pipe-B-64x64-right-edge
> > +kms_cursor_edge_walk@pipe-B-64x64-top-edge
> > +kms_plane_multiple@atomic-pipe-A-tiling-none
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/msm-sc7180-skips.txt b/drivers/gpu/drm/ci/msm-sc7180-skips.txt
> > new file mode 100644
> > index 000000000000..40916ddff81f
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/msm-sc7180-skips.txt
> > @@ -0,0 +1,18 @@
> > +# Suspend to RAM seems to be broken on this machine
> > +.*suspend.*
> > +
> > +# Test incorrectly assumes that CTM support implies gamma/degamma
> > +# LUT support.  None of the subtests handle the case of only having
> > +# CTM support
> > +kms_color.*
> > +
> > +# 4k@60 is not supported on this hw, but driver doesn't handle it
> > +# too gracefully.. https://gitlab.freedesktop.org/drm/msm/-/issues/15
> > +kms_bw@linear-tiling-.*-displays-3840x2160p
> > +
> > +# Until igt fix lands: https://patchwork.freedesktop.org/patch/493175/
> > +kms_bw@linear-tiling-2.*
> > +kms_bw@linear-tiling-3.*
> > +kms_bw@linear-tiling-4.*
> > +kms_bw@linear-tiling-5.*
> > +kms_bw@linear-tiling-6.*
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/msm-sdm845-fails.txt b/drivers/gpu/drm/ci/msm-sdm845-fails.txt
> > new file mode 100644
> > index 000000000000..8133927a44df
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/msm-sdm845-fails.txt
> > @@ -0,0 +1,44 @@
> > +kms_color@pipe-A-ctm-0-25,Fail
> > +kms_color@pipe-A-ctm-0-5,Fail
> > +kms_color@pipe-A-ctm-0-75,Fail
> > +kms_color@pipe-A-ctm-blue-to-red,Fail
> > +kms_color@pipe-A-ctm-green-to-red,Fail
> > +kms_color@pipe-A-ctm-max,Fail
> > +kms_color@pipe-A-ctm-negative,Fail
> > +kms_color@pipe-A-ctm-red-to-blue,Fail
> > +kms_color@pipe-A-legacy-gamma,Fail
> > +kms_cursor_legacy@basic-flip-after-cursor-atomic,Fail
> > +kms_cursor_legacy@basic-flip-after-cursor-legacy,Fail
> > +kms_cursor_legacy@basic-flip-before-cursor-atomic,Fail
> > +kms_cursor_legacy@basic-flip-before-cursor-legacy,Fail
> > +kms_cursor_legacy@cursor-vs-flip-atomic,Fail
> > +kms_cursor_legacy@cursor-vs-flip-atomic-transitions,Fail
> > +kms_cursor_legacy@cursor-vs-flip-legacy,Fail
> > +kms_cursor_legacy@cursor-vs-flip-toggle,Fail
> > +kms_cursor_legacy@flip-vs-cursor-atomic,Fail
> > +kms_cursor_legacy@flip-vs-cursor-crc-atomic,Fail
> > +kms_cursor_legacy@flip-vs-cursor-crc-legacy,Fail
> > +kms_cursor_legacy@flip-vs-cursor-legacy,Fail
> > +kms_cursor_legacy@short-flip-after-cursor-atomic-transitions,Fail
> > +kms_cursor_legacy@short-flip-after-cursor-toggle,Fail
> > +kms_cursor_legacy@short-flip-before-cursor-atomic-transitions,Fail
> > +kms_cursor_legacy@short-flip-before-cursor-toggle,Fail
> > +kms_plane@pixel-format,Fail
> > +kms_plane@pixel-format-source-clamping,Fail
> > +kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
> > +kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
> > +kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
> > +kms_plane_cursor@pipe-A-overlay-size-128,Fail
> > +kms_plane_cursor@pipe-A-overlay-size-256,Fail
> > +kms_plane_cursor@pipe-A-overlay-size-64,Fail
> > +kms_plane_cursor@pipe-A-viewport-size-128,Fail
> > +kms_plane_cursor@pipe-A-viewport-size-256,Fail
> > +kms_plane_cursor@pipe-A-viewport-size-64,Fail
> > +kms_plane_scaling@downscale-with-pixel-format-factor-0-25,Timeout
> > +kms_plane_scaling@downscale-with-pixel-format-factor-0-5,Timeout
> > +kms_plane_scaling@downscale-with-pixel-format-factor-0-75,Timeout
> > +kms_plane_scaling@invalid-num-scalers,Fail
> > +kms_plane_scaling@planes-downscale-factor-0-25,Fail
> > +kms_plane_scaling@scaler-with-clipping-clamping,Timeout
> > +kms_plane_scaling@scaler-with-pixel-format-unity-scaling,Timeout
> > +kms_rmfb@close-fd,Fail
> > diff --git a/drivers/gpu/drm/ci/msm-sdm845-flakes.txt b/drivers/gpu/drm/ci/msm-sdm845-flakes.txt
> > new file mode 100644
> > index 000000000000..da4406b74828
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/msm-sdm845-flakes.txt
> > @@ -0,0 +1,33 @@
> > +# Test ends up reading CRC from frame before cursor update
> > +# sometimes.. tbd if this is a kernel CRC bug or a test
> > +# bug
> > +kms_cursor_crc@pipe-A-cursor-alpha-opaque
> > +kms_cursor_crc@pipe-A-cursor-dpms
> > +kms_cursor_crc@pipe-A-cursor-size-change
> > +kms_cursor_legacy@flip-vs-cursor-toggle
> > +kms_cursor_legacy@pipe-A-forked-bo
> > +kms_cursor_legacy@pipe-A-forked-move
> > +kms_cursor_crc@pipe-A-cursor-32x10-offscreen
> > +kms_cursor_crc@pipe-A-cursor-32x10-onscreen
> > +kms_cursor_crc@pipe-A-cursor-32x10-random
> > +kms_cursor_crc@pipe-A-cursor-32x10-sliding
> > +kms_cursor_crc@pipe-A-cursor-32x32-offscreen
> > +kms_cursor_crc@pipe-A-cursor-32x32-onscreen
> > +kms_cursor_crc@pipe-A-cursor-32x32-random
> > +kms_cursor_crc@pipe-A-cursor-32x32-sliding
> > +kms_cursor_crc@pipe-A-cursor-64x21-offscreen
> > +kms_cursor_crc@pipe-A-cursor-64x21-onscreen
> > +kms_cursor_crc@pipe-A-cursor-64x21-random
> > +kms_cursor_crc@pipe-A-cursor-64x21-sliding
> > +kms_cursor_crc@pipe-A-cursor-64x64-offscreen
> > +kms_cursor_crc@pipe-A-cursor-64x64-onscreen
> > +kms_cursor_crc@pipe-A-cursor-64x64-random
> > +kms_cursor_crc@pipe-A-cursor-64x64-sliding
> > +kms_cursor_crc@pipe-A-cursor-dpms
> > +kms_cursor_crc@pipe-A-cursor-suspend
> > +kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
> > +kms_cursor_edge_walk@pipe-A-64x64-left-edge
> > +kms_cursor_edge_walk@pipe-A-64x64-right-edge
> > +kms_cursor_edge_walk@pipe-A-64x64-top-edge
> > +
> > +kms_flip@dpms-vs-vblank-race-interruptible
> > diff --git a/drivers/gpu/drm/ci/msm-sdm845-skips.txt b/drivers/gpu/drm/ci/msm-sdm845-skips.txt
> > new file mode 100644
> > index 000000000000..42675f1c6d76
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/msm-sdm845-skips.txt
> > @@ -0,0 +1,2 @@
> > +# Hangs machine
> > +kms_bw.*
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt b/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
> > new file mode 100644
> > index 000000000000..e2a264647a58
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
> > @@ -0,0 +1,75 @@
> > +kms_3d,Fail
> > +kms_addfb_basic@addfb25-bad-modifier,Fail
> > +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> > +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> > +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> > +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> > +kms_cursor_crc@pipe-A-cursor-32x10-onscreen,Fail
> > +kms_cursor_crc@pipe-A-cursor-32x10-random,Fail
> > +kms_cursor_crc@pipe-A-cursor-32x10-sliding,Fail
> > +kms_cursor_crc@pipe-A-cursor-32x32-onscreen,Fail
> > +kms_cursor_crc@pipe-A-cursor-32x32-random,Fail
> > +kms_cursor_crc@pipe-A-cursor-32x32-sliding,Fail
> > +kms_cursor_crc@pipe-A-cursor-64x21-onscreen,Fail
> > +kms_cursor_crc@pipe-A-cursor-64x21-random,Fail
> > +kms_cursor_crc@pipe-A-cursor-64x21-sliding,Fail
> > +kms_cursor_crc@pipe-A-cursor-64x64-onscreen,Fail
> > +kms_cursor_crc@pipe-A-cursor-64x64-random,Fail
> > +kms_cursor_crc@pipe-A-cursor-64x64-sliding,Fail
> > +kms_cursor_crc@pipe-A-cursor-alpha-opaque,Fail
> > +kms_cursor_crc@pipe-A-cursor-dpms,Fail
> > +kms_cursor_crc@pipe-A-cursor-size-change,Fail
> > +kms_cursor_crc@pipe-B-cursor-32x10-onscreen,Fail
> > +kms_cursor_crc@pipe-B-cursor-32x10-random,Fail
> > +kms_cursor_crc@pipe-B-cursor-32x10-sliding,Fail
> > +kms_cursor_crc@pipe-B-cursor-32x32-onscreen,Fail
> > +kms_cursor_crc@pipe-B-cursor-32x32-random,Fail
> > +kms_cursor_crc@pipe-B-cursor-32x32-sliding,Fail
> > +kms_cursor_crc@pipe-B-cursor-64x21-onscreen,Fail
> > +kms_cursor_crc@pipe-B-cursor-64x21-random,Fail
> > +kms_cursor_crc@pipe-B-cursor-64x64-onscreen,Fail
> > +kms_cursor_crc@pipe-B-cursor-64x64-random,Fail
> > +kms_cursor_crc@pipe-B-cursor-64x64-sliding,Fail
> > +kms_cursor_crc@pipe-B-cursor-alpha-opaque,Fail
> > +kms_cursor_crc@pipe-B-cursor-size-change,Fail
> > +kms_force_connector_basic@force-connector-state,Fail
> > +kms_force_connector_basic@force-edid,Fail
> > +kms_force_connector_basic@force-load-detect,Fail
> > +kms_force_connector_basic@prune-stale-modes,Fail
> > +kms_invalid_mode@int-max-clock,Fail
> > +kms_pipe_crc_basic@nonblocking-crc-pipe-A-frame-sequence,Fail
> > +kms_pipe_crc_basic@nonblocking-crc-pipe-B-frame-sequence,Fail
> > +kms_pipe_crc_basic@read-crc-pipe-A-frame-sequence,Fail
> > +kms_pipe_crc_basic@read-crc-pipe-B-frame-sequence,Fail
> > +kms_plane_cursor@pipe-A-overlay-size-128,Fail
> > +kms_plane_cursor@pipe-A-overlay-size-256,Fail
> > +kms_plane_cursor@pipe-A-overlay-size-64,Fail
> > +kms_plane_cursor@pipe-A-primary-size-128,Fail
> > +kms_plane_cursor@pipe-A-primary-size-256,Fail
> > +kms_plane_cursor@pipe-A-primary-size-64,Fail
> > +kms_plane_cursor@pipe-A-viewport-size-128,Fail
> > +kms_plane_cursor@pipe-A-viewport-size-256,Fail
> > +kms_plane_cursor@pipe-A-viewport-size-64,Fail
> > +kms_plane_cursor@pipe-B-overlay-size-128,Fail
> > +kms_plane_cursor@pipe-B-overlay-size-256,Fail
> > +kms_plane_cursor@pipe-B-overlay-size-64,Fail
> > +kms_plane_cursor@pipe-B-primary-size-128,Fail
> > +kms_plane_cursor@pipe-B-primary-size-256,Fail
> > +kms_plane_cursor@pipe-B-primary-size-64,Fail
> > +kms_plane_cursor@pipe-B-viewport-size-128,Fail
> > +kms_plane_cursor@pipe-B-viewport-size-256,Fail
> > +kms_plane_cursor@pipe-B-viewport-size-64,Fail
> > +kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
> > +kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
> > +kms_plane_scaling@upscale-with-modifier-20x20,Fail
> > +kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
> > +kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
> > +kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
> > +kms_plane_scaling@upscale-with-rotation-20x20,Fail
> > +kms_prime@basic-crc,Fail
> > +kms_properties@connector-properties-atomic,Fail
> > +kms_properties@get_properties-sanity-atomic,Fail
> > +kms_properties@get_properties-sanity-non-atomic,Fail
> > +kms_rmfb@close-fd,Fail
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt b/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
> > new file mode 100644
> > index 000000000000..447fb26cc344
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
> > @@ -0,0 +1,5 @@
> > +kms_cursor_crc@pipe-B-cursor-dpms
> > +kms_cursor_edge_walk@pipe-A-64x64-right-edge
> > +kms_cursor_edge_walk@pipe-A-64x64-top-edge
> > +kms_cursor_edge_walk@pipe-B-64x64-right-edge
> > +kms_cursor_edge_walk@pipe-B-64x64-top-edge
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt b/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
> > new file mode 100644
> > index 000000000000..26f9a03fc074
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
> > @@ -0,0 +1,46 @@
> > +# Suspend to RAM seems to be broken on this machine
> > +.*suspend.*
> > +
> > +# Too unstable, machine ends up hanging after lots of Oopses
> > +kms_cursor_legacy.*
> > +
> > +# Started hanging the machine on Linux 5.19-rc2:
> > +#
> > +# [IGT] kms_plane_lowres: executing
> > +# [IGT] kms_plane_lowres: starting subtest pipe-F-tiling-y
> > +# [IGT] kms_plane_lowres: exiting, ret=77
> > +# Console: switching to colour frame buffer device 170x48
> > +# rockchip-drm display-subsystem: [drm] *ERROR* flip_done timed out
> > +# rockchip-drm display-subsystem: [drm] *ERROR* [CRTC:35:crtc-0] commit wait timed out
> > +# BUG: spinlock bad magic on CPU#3, kms_plane_lowre/482
> > +# 8<--- cut here ---
> > +# Unable to handle kernel paging request at virtual address 7812078e
> > +# [7812078e] *pgd=00000000
> > +# Internal error: Oops: 5 [#1] SMP ARM
> > +# Modules linked in:
> > +# CPU: 3 PID: 482 Comm: kms_plane_lowre Tainted: G        W         5.19.0-rc2-323596-g00535de92171 #1
> > +# Hardware name: Rockchip (Device Tree)
> > +# Process kms_plane_lowre (pid: 482, stack limit = 0x1193ac2b)
> > +#  spin_dump from do_raw_spin_lock+0xa4/0xe8
> > +#  do_raw_spin_lock from wait_for_completion_timeout+0x2c/0x120
> > +#  wait_for_completion_timeout from drm_crtc_commit_wait+0x18/0x7c
> > +#  drm_crtc_commit_wait from drm_atomic_helper_wait_for_dependencies+0x44/0x168
> > +#  drm_atomic_helper_wait_for_dependencies from commit_tail+0x34/0x180
> > +#  commit_tail from drm_atomic_helper_commit+0x164/0x18c
> > +#  drm_atomic_helper_commit from drm_atomic_commit+0xac/0xe4
> > +#  drm_atomic_commit from drm_client_modeset_commit_atomic+0x23c/0x284
> > +#  drm_client_modeset_commit_atomic from drm_client_modeset_commit_locked+0x60/0x1c8
> > +#  drm_client_modeset_commit_locked from drm_client_modeset_commit+0x24/0x40
> > +#  drm_client_modeset_commit from drm_fbdev_client_restore+0x58/0x94
> > +#  drm_fbdev_client_restore from drm_client_dev_restore+0x70/0xbc
> > +#  drm_client_dev_restore from drm_release+0xf4/0x114
> > +#  drm_release from __fput+0x74/0x240
> > +#  __fput from task_work_run+0x84/0xb4
> > +#  task_work_run from do_exit+0x34c/0xa20
> > +#  do_exit from do_group_exit+0x34/0x98
> > +#  do_group_exit from __wake_up_parent+0x0/0x18
> > +# Code: e595c008 12843d19 03e00000 03093168 (15940508)
> > +# ---[ end trace 0000000000000000 ]---
> > +# note: kms_plane_lowre[482] exited with preempt_count 1
> > +# Fixing recursive fault but reboot is needed!
> > +kms_plane_lowres@pipe-F-tiling-y
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt b/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
> > new file mode 100644
> > index 000000000000..0f8afa7e2adc
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
> > @@ -0,0 +1,86 @@
> > +kms_addfb_basic@addfb25-bad-modifier,Fail
> > +kms_color@pipe-A-legacy-gamma,Fail
> > +kms_color@pipe-B-legacy-gamma,Fail
> > +kms_cursor_crc@pipe-A-cursor-32x10-offscreen,Fail
> > +kms_cursor_crc@pipe-A-cursor-32x10-onscreen,Fail
> > +kms_cursor_crc@pipe-A-cursor-32x10-random,Fail
> > +kms_cursor_crc@pipe-A-cursor-32x10-rapid-movement,Fail
> > +kms_cursor_crc@pipe-A-cursor-32x10-sliding,Fail
> > +kms_cursor_crc@pipe-A-cursor-32x32-offscreen,Fail
> > +kms_cursor_crc@pipe-A-cursor-32x32-onscreen,Fail
> > +kms_cursor_crc@pipe-A-cursor-32x32-random,Fail
> > +kms_cursor_crc@pipe-A-cursor-32x32-rapid-movement,Fail
> > +kms_cursor_crc@pipe-A-cursor-32x32-sliding,Fail
> > +kms_cursor_crc@pipe-A-cursor-64x21-onscreen,Fail
> > +kms_cursor_crc@pipe-A-cursor-64x21-random,Fail
> > +kms_cursor_crc@pipe-A-cursor-64x21-sliding,Fail
> > +kms_cursor_crc@pipe-A-cursor-64x64-offscreen,Fail
> > +kms_cursor_crc@pipe-A-cursor-64x64-onscreen,Fail
> > +kms_cursor_crc@pipe-A-cursor-64x64-random,Fail
> > +kms_cursor_crc@pipe-A-cursor-64x64-rapid-movement,Fail
> > +kms_cursor_crc@pipe-A-cursor-64x64-sliding,Fail
> > +kms_cursor_crc@pipe-A-cursor-alpha-opaque,Fail
> > +kms_cursor_crc@pipe-A-cursor-alpha-transparent,Fail
> > +kms_cursor_crc@pipe-A-cursor-dpms,Fail
> > +kms_cursor_crc@pipe-A-cursor-size-change,Fail
> > +kms_cursor_crc@pipe-B-cursor-32x10-onscreen,Fail
> > +kms_cursor_crc@pipe-B-cursor-32x10-random,Fail
> > +kms_cursor_crc@pipe-B-cursor-32x10-rapid-movement,Fail
> > +kms_cursor_crc@pipe-B-cursor-32x10-sliding,Fail
> > +kms_cursor_crc@pipe-B-cursor-32x32-offscreen,Fail
> > +kms_cursor_crc@pipe-B-cursor-32x32-onscreen,Fail
> > +kms_cursor_crc@pipe-B-cursor-32x32-random,Fail
> > +kms_cursor_crc@pipe-B-cursor-32x32-rapid-movement,Fail
> > +kms_cursor_crc@pipe-B-cursor-32x32-sliding,Fail
> > +kms_cursor_crc@pipe-B-cursor-64x21-onscreen,Fail
> > +kms_cursor_crc@pipe-B-cursor-64x21-random,Fail
> > +kms_cursor_crc@pipe-B-cursor-64x21-rapid-movement,Fail
> > +kms_cursor_crc@pipe-B-cursor-64x64-offscreen,Fail
> > +kms_cursor_crc@pipe-B-cursor-64x64-onscreen,Fail
> > +kms_cursor_crc@pipe-B-cursor-64x64-random,Fail
> > +kms_cursor_crc@pipe-B-cursor-64x64-rapid-movement,Fail
> > +kms_cursor_crc@pipe-B-cursor-64x64-sliding,Fail
> > +kms_cursor_crc@pipe-B-cursor-alpha-opaque,Fail
> > +kms_cursor_crc@pipe-B-cursor-dpms,Fail
> > +kms_cursor_crc@pipe-B-cursor-size-change,Fail
> > +kms_cursor_edge_walk@pipe-A-64x64-bottom-edge,Fail
> > +kms_cursor_edge_walk@pipe-A-64x64-left-edge,Fail
> > +kms_cursor_edge_walk@pipe-A-64x64-top-edge,Fail
> > +kms_cursor_edge_walk@pipe-B-64x64-bottom-edge,Fail
> > +kms_cursor_edge_walk@pipe-B-64x64-right-edge,Fail
> > +kms_cursor_edge_walk@pipe-B-64x64-top-edge,Fail
> > +kms_invalid_mode@int-max-clock,Fail
> > +kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-A,Fail
> > +kms_pipe_crc_basic@nonblocking-crc-pipe-A,Fail
> > +kms_pipe_crc_basic@nonblocking-crc-pipe-A-frame-sequence,Fail
> > +kms_pipe_crc_basic@nonblocking-crc-pipe-B,Fail
> > +kms_pipe_crc_basic@nonblocking-crc-pipe-B-frame-sequence,Fail
> > +kms_pipe_crc_basic@read-crc-pipe-A,Fail
> > +kms_pipe_crc_basic@read-crc-pipe-A-frame-sequence,Fail
> > +kms_pipe_crc_basic@read-crc-pipe-B,Fail
> > +kms_pipe_crc_basic@read-crc-pipe-B-frame-sequence,Fail
> > +kms_plane@plane-panning-bottom-right,Fail
> > +kms_plane@plane-panning-top-left,Fail
> > +kms_plane_cursor@pipe-B-overlay-size-128,Fail
> > +kms_plane_cursor@pipe-B-overlay-size-256,Fail
> > +kms_plane_cursor@pipe-B-overlay-size-64,Fail
> > +kms_plane_cursor@pipe-B-primary-size-128,Fail
> > +kms_plane_cursor@pipe-B-primary-size-256,Fail
> > +kms_plane_cursor@pipe-B-primary-size-64,Fail
> > +kms_plane_cursor@pipe-B-viewport-size-128,Fail
> > +kms_plane_cursor@pipe-B-viewport-size-256,Fail
> > +kms_plane_cursor@pipe-B-viewport-size-64,Fail
> > +kms_plane_multiple@atomic-pipe-B-tiling-none,Fail
> > +kms_prime@basic-crc,Fail
> > +kms_rmfb@close-fd,Fail
> > +kms_universal_plane@universal-plane-pipe-B-functional,Fail
> > +kms_vblank@pipe-A-query-forked,Fail
> > +kms_vblank@pipe-A-query-idle,Fail
> > +kms_vblank@pipe-A-wait-busy,Fail
> > +kms_vblank@pipe-A-wait-forked,Fail
> > +kms_vblank@pipe-A-wait-forked-busy,Fail
> > +kms_vblank@pipe-B-query-forked,Fail
> > +kms_vblank@pipe-B-query-idle,Fail
> > +kms_vblank@pipe-B-wait-busy,Fail
> > +kms_vblank@pipe-B-wait-forked,Fail
> > +kms_vblank@pipe-B-wait-forked-busy,Fail
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt b/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
> > new file mode 100644
> > index 000000000000..b4c37a4315e4
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
> > @@ -0,0 +1,25 @@
> > +kms_cursor_crc@pipe-A-cursor-64x21-offscreen
> > +kms_cursor_crc@pipe-A-cursor-64x21-rapid-movement
> > +kms_cursor_crc@pipe-B-cursor-32x10-offscreen
> > +kms_cursor_crc@pipe-B-cursor-32x10-rapid-movement
> > +kms_cursor_crc@pipe-B-cursor-32x32-offscreen
> > +kms_cursor_crc@pipe-B-cursor-32x32-rapid-movement
> > +kms_cursor_crc@pipe-B-cursor-64x64-offscreen
> > +kms_cursor_crc@pipe-B-cursor-64x64-rapid-movement
> > +kms_cursor_edge_walk@pipe-A-64x64-right-edge
> > +kms_cursor_edge_walk@pipe-B-64x64-left-edge
> > +kms_flip@flip-vs-expired-vblank
> > +kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-B
> > +kms_plane_multiple@atomic-pipe-A-tiling-none
> > +kms_plane@plane-position-hole
> > +kms_sequence@get-forked
> > +kms_sequence@get-forked-busy
> > +kms_setmode@basic
> > +kms_vblank@pipe-A-accuracy-idle
> > +kms_vblank@pipe-A-query-busy
> > +kms_vblank@pipe-A-query-forked-busy
> > +kms_vblank@pipe-A-wait-idle
> > +kms_vblank@pipe-B-accuracy-idle
> > +kms_vblank@pipe-B-query-busy
> > +kms_vblank@pipe-B-query-forked-busy
> > +kms_vblank@pipe-B-wait-idle
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt b/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
> > new file mode 100644
> > index 000000000000..10c3d81a919a
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
> > @@ -0,0 +1,5 @@
> > +# Suspend to RAM seems to be broken on this machine
> > +.*suspend.*
> > +
> > +# Too unstable, machine ends up hanging after lots of Oopses
> > +kms_cursor_legacy.*
> > diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt b/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
> > new file mode 100644
> > index 000000000000..2178bdd064dd
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
> > @@ -0,0 +1,38 @@
> > +kms_addfb_basic@addfb25-bad-modifier,Fail
> > +kms_addfb_basic@bad-pitch-65536,Fail
> > +kms_addfb_basic@bo-too-small,Fail
> > +kms_addfb_basic@size-max,Fail
> > +kms_addfb_basic@too-high,Fail
> > +kms_atomic_transition@plane-primary-toggle-with-vblank-wait,Fail
> > +kms_bw@linear-tiling-1-displays-1920x1080p,Fail
> > +kms_bw@linear-tiling-1-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-1-displays-3840x2160p,Fail
> > +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> > +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> > +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> > +kms_invalid_mode@int-max-clock,Fail
> > +kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
> > +kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
> > +kms_plane_scaling@planes-upscale-20x20,Fail
> > +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
> > +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
> > +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
> > +kms_plane_scaling@upscale-with-modifier-20x20,Fail
> > +kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
> > +kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
> > +kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
> > +kms_plane_scaling@upscale-with-rotation-20x20,Fail
> > +kms_vblank@crtc-id,Fail
> > +kms_vblank@invalid,Fail
> > +kms_vblank@pipe-A-accuracy-idle,Fail
> > +kms_vblank@pipe-A-query-busy,Fail
> > +kms_vblank@pipe-A-query-forked,Fail
> > +kms_vblank@pipe-A-query-forked-busy,Fail
> > +kms_vblank@pipe-A-query-idle,Fail
> > +kms_vblank@pipe-A-ts-continuation-idle,Fail
> > +kms_vblank@pipe-A-ts-continuation-modeset,Fail
> > +kms_vblank@pipe-A-ts-continuation-suspend,Fail
> > +kms_vblank@pipe-A-wait-busy,Fail
> > +kms_vblank@pipe-A-wait-forked,Fail
> > +kms_vblank@pipe-A-wait-forked-busy,Fail
> > +kms_vblank@pipe-A-wait-idle,Fail
> > \ No newline at end of file
> > diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt b/drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt
> > new file mode 100644
> > index 000000000000..e69de29bb2d1
> > diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt b/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt
> > new file mode 100644
> > index 000000000000..78be18174012
> > --- /dev/null
> > +++ b/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt
> > @@ -0,0 +1,6 @@
> > +# Hits a "refcount_t: underflow; use-after-free" in virtio_gpu_fence_event_process
> > +# When run in a particular order with other tests
> > +kms_cursor_legacy.*
> > +
> > +# Job just hangs without any output
> > +kms_flip@flip-vs-suspend.*
> > \ No newline at end of file
>

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [PATCH v5] drm: Add initial ci/ subdirectory
  2022-08-10 18:24         ` Rodrigo Siqueira Jordao
  2022-08-10 22:08           ` Rob Clark
@ 2022-08-11 10:10           ` Tomeu Vizoso
  1 sibling, 0 replies; 49+ messages in thread
From: Tomeu Vizoso @ 2022-08-11 10:10 UTC (permalink / raw)
  To: Rodrigo Siqueira Jordao, Nicholas Choi, Sun peng Li, Chiu,
	Harrison, Wentland, Harry
  Cc: Rob Clark, Jonathan Corbet, Neil Armstrong, David Airlie,
	Kevin Hilman, linux-doc, linux-kernel, dri-devel, linux-rockchip,
	linux-mediatek, Carlo Caione, linux-amlogic, kernel,
	linux-arm-kernel, Matthias Brugger

On 8/10/22 8:24 PM, Rodrigo Siqueira Jordao wrote:
> Hi Tomeu,
> 
> First of all, nice patch! I just saw it, and I have some basic questions 
> (I don't understand many of these CI details). I also CC some CI folks 
> from the display team at AMD.

Thanks for the feedback!

> On 2022-07-26 14:16, Tomeu Vizoso wrote:
>> And use it to store expectations about what the DRM drivers are
>> supposed to pass in the IGT test suite.
>>
>> Also include a configuration file that points to the out-of-tree CI
>> scripts.
>>
>> By storing the test expectations along the code we can make sure both
>> stay in sync with each other, and so we can know when a code change
>> breaks those expectations.
>>
>> This will allow all contributors to drm to reuse the infrastructure
>> already in gitlab.freedesktop.org to test the driver on several
>> generations of the hardware.
>>
>> v2:
>>    - Fix names of result expectation files to match SoC
>>    - Don't execute tests that are going to skip on all boards
>>
>> v3:
>>    - Remove tracking of dmesg output during test execution
>>
>> v4:
>>    - Move up to drivers/gpu/drm
>>    - Add support for a bunch of other drivers
>>    - Explain how to incorporate fixes for CI from a
>>      ${TARGET_BRANCH}-external-fixes branch
>>    - Remove tests that pass from expected results file, to reduce the
>>      size of in-tree files
>>    - Add docs about how to deal with outages in automated testing labs
>>    - Specify the exact SHA of the CI scripts to be used
>>
>> v5:
>>    - Remove unneeded skips from Meson expectations file
>>    - Use a more advanced runner that detects flakes automatically
>>    - Use a more succint format for the expectations
>>    - Run many more tests (and use sharding to finish in time)
>>    - Use skip lists to avoid hanging machines
>>    - Add some build testing
>>    - Build IGT in each pipeline for faster uprevs
>>    - List failures in the GitLab UI
>>
>> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
>> Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
>> ---
>>   Documentation/gpu/automated_testing.rst       | 84 ++++++++++++++++++
>>   drivers/gpu/drm/ci/amdgpu-stoney-fails.txt    | 13 +++
>>   drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt   | 20 +++++
>>   drivers/gpu/drm/ci/amdgpu-stoney-skips.txt    |  2 +
>>   drivers/gpu/drm/ci/gitlab-ci.yml              | 13 +++
>>   drivers/gpu/drm/ci/i915-amly-flakes.txt       | 32 +++++++
>>   drivers/gpu/drm/ci/i915-amly-skips.txt        |  2 +
>>   drivers/gpu/drm/ci/i915-apl-fails.txt         | 29 +++++++
>>   drivers/gpu/drm/ci/i915-apl-flakes.txt        |  1 +
>>   drivers/gpu/drm/ci/i915-apl-skips.txt         |  2 +
>>   drivers/gpu/drm/ci/i915-cml-flakes.txt        | 36 ++++++++
>>   drivers/gpu/drm/ci/i915-glk-flakes.txt        | 40 +++++++++
>>   drivers/gpu/drm/ci/i915-glk-skips.txt         |  2 +
>>   drivers/gpu/drm/ci/i915-kbl-fails.txt         |  8 ++
>>   drivers/gpu/drm/ci/i915-kbl-flakes.txt        | 24 ++++++
>>   drivers/gpu/drm/ci/i915-kbl-skips.txt         |  2 +
>>   drivers/gpu/drm/ci/i915-tgl-fails.txt         | 19 ++++
>>   drivers/gpu/drm/ci/i915-tgl-flakes.txt        |  6 ++
>>   drivers/gpu/drm/ci/i915-tgl-skips.txt         |  8 ++
>>   drivers/gpu/drm/ci/i915-whl-fails.txt         | 30 +++++++
>>   drivers/gpu/drm/ci/i915-whl-flakes.txt        |  1 +
>>   drivers/gpu/drm/ci/mediatek-mt8173-fails.txt  | 29 +++++++
>>   drivers/gpu/drm/ci/mediatek-mt8183-fails.txt  | 10 +++
>>   drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt | 14 +++
>>   drivers/gpu/drm/ci/meson-g12b-fails.txt       |  5 ++
>>   drivers/gpu/drm/ci/meson-g12b-flakes.txt      |  4 +
>>   drivers/gpu/drm/ci/msm-apq8016-fails.txt      | 15 ++++
>>   drivers/gpu/drm/ci/msm-apq8016-flakes.txt     |  4 +
>>   drivers/gpu/drm/ci/msm-apq8096-fails.txt      |  2 +
>>   drivers/gpu/drm/ci/msm-apq8096-flakes.txt     |  4 +
>>   drivers/gpu/drm/ci/msm-apq8096-skips.txt      |  2 +
>>   drivers/gpu/drm/ci/msm-sc7180-fails.txt       | 22 +++++
>>   drivers/gpu/drm/ci/msm-sc7180-flakes.txt      | 14 +++
>>   drivers/gpu/drm/ci/msm-sc7180-skips.txt       | 18 ++++
>>   drivers/gpu/drm/ci/msm-sdm845-fails.txt       | 44 ++++++++++
>>   drivers/gpu/drm/ci/msm-sdm845-flakes.txt      | 33 +++++++
>>   drivers/gpu/drm/ci/msm-sdm845-skips.txt       |  2 +
>>   drivers/gpu/drm/ci/rockchip-rk3288-fails.txt  | 75 ++++++++++++++++
>>   drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt |  5 ++
>>   drivers/gpu/drm/ci/rockchip-rk3288-skips.txt  | 46 ++++++++++
>>   drivers/gpu/drm/ci/rockchip-rk3399-fails.txt  | 86 +++++++++++++++++++
>>   drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt | 25 ++++++
>>   drivers/gpu/drm/ci/rockchip-rk3399-skips.txt  |  5 ++
>>   drivers/gpu/drm/ci/virtio_gpu-none-fails.txt  | 38 ++++++++
>>   drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt |  0
>>   drivers/gpu/drm/ci/virtio_gpu-none-skips.txt  |  6 ++
>>   46 files changed, 882 insertions(+)
>>   create mode 100644 Documentation/gpu/automated_testing.rst
>>   create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
>>   create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
>>   create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
>>   create mode 100644 drivers/gpu/drm/ci/gitlab-ci.yml
>>   create mode 100644 drivers/gpu/drm/ci/i915-amly-flakes.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915-amly-skips.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915-apl-fails.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915-apl-flakes.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915-apl-skips.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915-cml-flakes.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915-glk-flakes.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915-glk-skips.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915-kbl-fails.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915-kbl-flakes.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915-kbl-skips.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915-tgl-fails.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915-tgl-flakes.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915-tgl-skips.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915-whl-fails.txt
>>   create mode 100644 drivers/gpu/drm/ci/i915-whl-flakes.txt
>>   create mode 100644 drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
>>   create mode 100644 drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
>>   create mode 100644 drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
>>   create mode 100644 drivers/gpu/drm/ci/meson-g12b-fails.txt
>>   create mode 100644 drivers/gpu/drm/ci/meson-g12b-flakes.txt
>>   create mode 100644 drivers/gpu/drm/ci/msm-apq8016-fails.txt
>>   create mode 100644 drivers/gpu/drm/ci/msm-apq8016-flakes.txt
>>   create mode 100644 drivers/gpu/drm/ci/msm-apq8096-fails.txt
>>   create mode 100644 drivers/gpu/drm/ci/msm-apq8096-flakes.txt
>>   create mode 100644 drivers/gpu/drm/ci/msm-apq8096-skips.txt
>>   create mode 100644 drivers/gpu/drm/ci/msm-sc7180-fails.txt
>>   create mode 100644 drivers/gpu/drm/ci/msm-sc7180-flakes.txt
>>   create mode 100644 drivers/gpu/drm/ci/msm-sc7180-skips.txt
>>   create mode 100644 drivers/gpu/drm/ci/msm-sdm845-fails.txt
>>   create mode 100644 drivers/gpu/drm/ci/msm-sdm845-flakes.txt
>>   create mode 100644 drivers/gpu/drm/ci/msm-sdm845-skips.txt
>>   create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
>>   create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
>>   create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
>>   create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
>>   create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
>>   create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
>>   create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
>>   create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt
>>   create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-skips.txt
>>
>> diff --git a/Documentation/gpu/automated_testing.rst 
>> b/Documentation/gpu/automated_testing.rst
>> new file mode 100644
>> index 000000000000..61003ecc7b6e
>> --- /dev/null
>> +++ b/Documentation/gpu/automated_testing.rst
>> @@ -0,0 +1,84 @@
>> +.. SPDX-License-Identifier: GPL-2.0+
>> +
>> +=========================================
>> +Automated testing of the DRM subsystem
>> +=========================================
>> +
>> +
>> +Introduction
>> +============
>> +
>> +Making sure that changes to the core or drivers don't introduce 
>> regressions can be very time consuming when lots of different hardware 
>> configurations need to be tested. Moreover, it isn't practical for 
>> each person interested in this testing to have to acquire and maintain 
>> what can be a considerable amount of hardware.
>> +
>> +Also, it is desirable for developers to check for regressions in 
>> their code by themselves, instead of relying on the maintainers 
>> finding them and then reporting back.
>> +
>> +There are facilities in gitlab.freedesktop.org to automatically test 
>> Mesa that can be used as well for testing the DRM subsystem. This 
>> document explains how people interested in testing it can use this 
>> shared infrastructure to save quite some time and effort.
>> +
>> +
>> +Relevant files
>> +==============
>> +
>> +drivers/gpu/drm/ci/gitlab-ci.yml
>> +--------------------------------
>> +
>> +Specifies the specific version of the scripts to be used. GitLab CI 
>> will use the values defined in this file to fetch the right scripts.
>> +
>> +
>> +drivers/gpu/drm/ci/${DRIVER_NAME}.testlist
>> +------------------------------------------
>> +
>> +Specifies the tests that the current code is expected to be able to 
>> reliably run for ${DRIVER_NAME}. These tests are expected to not hang 
>> the DUT (Device Under Testing) when running on the revision they 
>> belong to, and to give consistent results.
> 
> The IGT repo has testlists per vendor (e.g., 
> https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/tree/master/tests/intel-ci). 
> What is the advantage of keeping a similar IGT list here? Should we 
> maintain that list in both projects?

Yes, I think that would be better, but the ones currently there were too 
small or too big to be useful here.

Note that the documentation here is erroneous, the test lists in this 
iteration are in the drm-ci repo, not in the kernel. Will fix this when 
I send my rebased patches.

>> +drivers/gpu/drm/ci/${DRIVER_NAME}_*_results.txt
>> +----------------------------------------
>> +
>> +Specifies the expected results of running this specific kernel 
>> revision on a given hardware configuration.
>> +
>> +
>> +How to enable automated testing on your tree
>> +============================================
>> +
>> +1. Create a Linux tree in https://gitlab.freedesktop.org/ if you 
>> don't have one yet
>> +
>> +2. In your kernel repo's configuration (eg. 
>> https://gitlab.freedesktop.org/tomeu/linux/-/settings/ci_cd), change 
>> the CI/CD configuration file from .gitlab-ci.yml to 
>> drivers/gpu/drm/ci/gitlab-ci.yml.
>> +
>> +3. Next time you push to this repository, you will see a CI pipeline 
>> being created (eg. 
>> https://gitlab.freedesktop.org/tomeu/linux/-/pipelines)
>> +
>> +4. The various jobs will be run and when the pipeline is finished, 
>> all jobs should be green unless a regression has been found.
>> +
>> +
>> +How to update test expectations
>> +===============================
>> +
>> +If your changes to the code fix any tests, you will have to update 
>> one or more of the files in 
>> drivers/gpu/drm/ci/${DRIVER_NAME}_*_results.txt, for each of the test 
>> platforms affected by the change.
>> +
>> +If you have run a pipeline and it failed because of a mismatched test 
>> result, you will have been offered a patch at the end of the run that 
>> you can apply after reviewing it.
>> +
>> +
>> +How to expand coverage
>> +======================
>> +
>> +If your code changes makes it possible to run more tests (by solving 
>> reliability issues, for example), more tests can be added to this 
>> list, and then the expected results updated with the patch file that 
>> will be printed at the end of each job.
>> +
>> +If there is a need for updating the version of IGT being used (maybe 
>> you have added more tests to it), follow the instructions at 
>> https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/tree/main#upreving-igt.
> 
> Usually, we run our IGT test on the latest code from the IGT repo. Is it 
> possible to configure this behavior?

If this was the default behavior, it would create a lot of trouble 
because pipelines for the same code would sometimes pass or fail based 
on whatever had been pushed to the IGT repo. It is really important for 
this to work well for everybody that the pipeline is kept green at all 
times for checked-in code.

But it is already very easy to uprev IGT, it just requires updating a 
commit hash in the drm-ci repo.

>> +How to test your changes to the scripts
>> +==========================================
>> +
>> +For testing changes to the scripts in the drm-ci repo, change the 
>> DRM_CI_PROJECT_PATH variable in drivers/gpu/drm/ci/gitlab-ci.yml to 
>> match your fork of the project (eg. tomeu/drm-ci). This fork needs to 
>> be in https://gitlab.freedesktop.org/.
>> +
>> +
>> +How to incorporate external fixes in your testing
>> +=================================================
>> +
>> +Often, regressions in other trees will prevent testing changes local 
>> to the tree under test. These fixes will be automatically merged in 
>> during the build jobs from a branch in the target tree that is named 
>> as ${TARGET_BRANCH}-external-fixes.
>> +
>> +If the pipeline is not in a merge request and a branch with the same 
>> name exists in the local tree, commits from that branch will be merged 
>> in as well.
>> +
>> +
>> +How to deal with automated testing labs that may be down
>> +========================================================
>> +
>> +If a hardware farm is down and thus causing pipelines to fail that 
>> would otherwise pass, one can disable all jobs that would be submitted 
>> to that farm by editing the file at 
>> https://gitlab.freedesktop.org/gfx-ci/lab-status/-/blob/main/lab-status.yml. 
>>
> 
> 
> This part is the one that I really want to understand. How can we plug 
> our farm? Do you have a guideline? I want to know if we can run a 
> prototype.

We are reusing the device farms that were added to 
gitlab.freedesktop.org for testing Mesa.

You should be able to plug your own lab for use in your personal branch 
without requiring anything from anybody else. You just need an account 
in gitlab.freedesktop.org.

Currently, there are two modes through which DUTs are made available to 
Gitlab CI: baremetal and LAVA. The latter should better scale to several 
dozens of devices but has a higher initial installation effort. It would 
allow this farm to be used in other CIs such as kernelci.org, though.

There is some documentation about this in Mesa:

* https://docs.mesa3d.org/ci/bare-metal.html
* https://docs.mesa3d.org/ci/LAVA.html

Ask in #freedesktop in OFTC if you need any help.

>> diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt 
>> b/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
>> new file mode 100644
>> index 000000000000..e721568b6ec3
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
>> @@ -0,0 +1,13 @@
>> +kms_addfb_basic@bad-pitch-65536,Fail
>> +kms_addfb_basic@bo-too-small,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
>> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
>> +kms_cursor_crc@pipe-A-cursor-size-change,Fail
>> +kms_cursor_crc@pipe-B-cursor-size-change,Fail
>> +kms_hdr@bpc-switch,Fail
>> +kms_hdr@bpc-switch-dpms,Fail
>> +kms_plane_multiple@atomic-pipe-A-tiling-none,Fail
>> +kms_rotation_crc@primary-rotation-180,Fail
>> +kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt 
>> b/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
>> new file mode 100644
>> index 000000000000..a2cbc339838c
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
>> @@ -0,0 +1,20 @@
>> +kms_addfb_basic@too-high
>> +kms_atomic_transition@plane-all-modeset-transition-internal-panels
>> +kms_atomic_transition@plane-all-transition
>> +kms_atomic_transition@plane-use-after-nonblocking-unbind
>> +kms_bw@linear-tiling-1-displays-1920x1080p
>> +kms_bw@linear-tiling-2-displays-1920x1080p
>> +kms_bw@linear-tiling-2-displays-2560x1440p
>> +kms_bw@linear-tiling-3-displays-2560x1440p
>> +kms_bw@linear-tiling-3-displays-3840x2160p
>> +kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
>> +kms_cursor_edge_walk@pipe-A-64x64-right-edge
>> +kms_cursor_edge_walk@pipe-A-64x64-top-edge
>> +kms_cursor_edge_walk@pipe-B-64x64-bottom-edge
>> +kms_cursor_edge_walk@pipe-B-64x64-left-edge
>> +kms_cursor_edge_walk@pipe-B-64x64-right-edge
>> +kms_cursor_edge_walk@pipe-B-64x64-top-edge
>> +kms_plane_multiple@atomic-pipe-B-tiling-none
>> +kms_plane@pixel-format
>> +kms_plane_scaling@downscale-with-rotation-factor-0-5
>> +kms_universal_plane@disable-primary-vs-flip-pipe-A
> 
> We have multiple test lists for different ASICs, and we are working to 
> have one unified list. I guess we just need to that list here?
> 
> Maybe Nicholas/Herrison can provide a complete list here.

Maybe add it to the IGT repo and from there it will be used in this CI 
once it can run reliably enough?

Cheers,

Tomeu

> Thanks
> Siqueira
> 
> 
>> diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt 
>> b/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
>> new file mode 100644
>> index 000000000000..e2c538a0f954
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
>> @@ -0,0 +1,2 @@
>> +# Suspend to RAM seems to be broken on this machine
>> +.*suspend.*
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml 
>> b/drivers/gpu/drm/ci/gitlab-ci.yml
>> new file mode 100644
>> index 000000000000..8898bbe0f180
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/gitlab-ci.yml
>> @@ -0,0 +1,13 @@
>> +variables:
>> +  # Change this to use your fork of drm-ci
>> +  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
>> +  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha 
>> bccff240ca042820484096f0782e8f060bd83bca
>> +
>> +  UPSTREAM_REPO: git://anongit.freedesktop.org/drm/drm
>> +  TARGET_BRANCH: drm-next
>> +
>> +include:
>> +  - project: *drm-ci-project-path
>> +    ref: *drm-ci-commit-sha
>> +    file:
>> +      - '.gitlab-ci.yml'
>> diff --git a/drivers/gpu/drm/ci/i915-amly-flakes.txt 
>> b/drivers/gpu/drm/ci/i915-amly-flakes.txt
>> new file mode 100644
>> index 000000000000..67d78f10b671
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/i915-amly-flakes.txt
>> @@ -0,0 +1,32 @@
>> +kms_bw@linear-tiling-2-displays-1920x1080p
>> +kms_bw@linear-tiling-2-displays-2560x1440p
>> +kms_bw@linear-tiling-2-displays-3840x2160p
>> +kms_bw@linear-tiling-3-displays-1920x1080p
>> +kms_bw@linear-tiling-3-displays-2560x1440p
>> +kms_bw@linear-tiling-3-displays-3840x2160p
>> +kms_bw@linear-tiling-4-displays-1920x1080p
>> +kms_bw@linear-tiling-4-displays-2560x1440p
>> +kms_bw@linear-tiling-4-displays-3840x2160p
>> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
>> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
>> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
>> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
>> +kms_plane_alpha_blend@pipe-A-alpha-basic
>> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
>> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
>> +kms_plane_alpha_blend@pipe-A-constant-alpha-max
>> +kms_plane_alpha_blend@pipe-B-alpha-basic
>> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
>> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
>> +kms_plane_alpha_blend@pipe-B-constant-alpha-max
>> +kms_plane_alpha_blend@pipe-C-alpha-basic
>> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
>> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
>> +kms_plane_alpha_blend@pipe-C-constant-alpha-max
>> +kms_sysfs_edid_timing
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/i915-amly-skips.txt 
>> b/drivers/gpu/drm/ci/i915-amly-skips.txt
>> new file mode 100644
>> index 000000000000..e2c538a0f954
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/i915-amly-skips.txt
>> @@ -0,0 +1,2 @@
>> +# Suspend to RAM seems to be broken on this machine
>> +.*suspend.*
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/i915-apl-fails.txt 
>> b/drivers/gpu/drm/ci/i915-apl-fails.txt
>> new file mode 100644
>> index 000000000000..a077f29d5cba
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/i915-apl-fails.txt
>> @@ -0,0 +1,29 @@
>> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
>> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
>> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
>> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
>> +kms_bw@linear-tiling-4-displays-1920x1080p,Fail
>> +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-4-displays-3840x2160p,Fail
>> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
>> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
>> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
>> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail 
>>
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
>> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
>> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
>> +kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
>> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
>> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
>> +kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
>> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
>> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
>> +kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
>> +kms_sysfs_edid_timing,Fail
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/i915-apl-flakes.txt 
>> b/drivers/gpu/drm/ci/i915-apl-flakes.txt
>> new file mode 100644
>> index 000000000000..618bbe6bb793
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/i915-apl-flakes.txt
>> @@ -0,0 +1 @@
>> +kms_frontbuffer_tracking@fbc-tiling-linear
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/i915-apl-skips.txt 
>> b/drivers/gpu/drm/ci/i915-apl-skips.txt
>> new file mode 100644
>> index 000000000000..e2c538a0f954
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/i915-apl-skips.txt
>> @@ -0,0 +1,2 @@
>> +# Suspend to RAM seems to be broken on this machine
>> +.*suspend.*
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/i915-cml-flakes.txt 
>> b/drivers/gpu/drm/ci/i915-cml-flakes.txt
>> new file mode 100644
>> index 000000000000..a214419c6dc5
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/i915-cml-flakes.txt
>> @@ -0,0 +1,36 @@
>> +kms_bw@linear-tiling-2-displays-1920x1080p
>> +kms_bw@linear-tiling-2-displays-2560x1440p
>> +kms_bw@linear-tiling-2-displays-3840x2160p
>> +kms_bw@linear-tiling-3-displays-1920x1080p
>> +kms_bw@linear-tiling-3-displays-2560x1440p
>> +kms_bw@linear-tiling-3-displays-3840x2160p
>> +kms_bw@linear-tiling-4-displays-1920x1080p
>> +kms_bw@linear-tiling-4-displays-2560x1440p
>> +kms_bw@linear-tiling-4-displays-3840x2160p
>> +kms_flip@flip-vs-suspend
>> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
>> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
>> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
>> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
>> +kms_hdr@bpc-switch-suspend
>> +kms_plane_alpha_blend@pipe-A-alpha-basic
>> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
>> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
>> +kms_plane_alpha_blend@pipe-A-constant-alpha-max
>> +kms_plane_alpha_blend@pipe-B-alpha-basic
>> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
>> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
>> +kms_plane_alpha_blend@pipe-B-constant-alpha-max
>> +kms_plane_alpha_blend@pipe-C-alpha-basic
>> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
>> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
>> +kms_plane_alpha_blend@pipe-C-constant-alpha-max
>> +kms_psr2_su@page_flip-NV12
>> +kms_psr2_su@page_flip-P010
>> +kms_setmode@basic
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/i915-glk-flakes.txt 
>> b/drivers/gpu/drm/ci/i915-glk-flakes.txt
>> new file mode 100644
>> index 000000000000..aedb3d2ef885
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/i915-glk-flakes.txt
>> @@ -0,0 +1,40 @@
>> +kms_bw@linear-tiling-1-displays-3840x2160p
>> +kms_bw@linear-tiling-2-displays-1920x1080p
>> +kms_bw@linear-tiling-2-displays-2560x1440p
>> +kms_bw@linear-tiling-2-displays-3840x2160p
>> +kms_bw@linear-tiling-3-displays-1920x1080p
>> +kms_bw@linear-tiling-3-displays-2560x1440p
>> +kms_bw@linear-tiling-3-displays-3840x2160p
>> +kms_bw@linear-tiling-4-displays-1920x1080p
>> +kms_bw@linear-tiling-4-displays-2560x1440p
>> +kms_bw@linear-tiling-4-displays-3840x2160p
>> +kms_flip@blocking-wf_vblank
>> +kms_flip@wf_vblank-ts-check
>> +kms_flip@wf_vblank-ts-check-interruptible
>> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
>> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
>> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
>> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
>> +kms_frontbuffer_tracking@fbc-tiling-linear
>> +kms_plane_alpha_blend@pipe-A-alpha-basic
>> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
>> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
>> +kms_plane_alpha_blend@pipe-A-constant-alpha-max
>> +kms_plane_alpha_blend@pipe-B-alpha-basic
>> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
>> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
>> +kms_plane_alpha_blend@pipe-B-constant-alpha-max
>> +kms_plane_alpha_blend@pipe-C-alpha-basic
>> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
>> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
>> +kms_plane_alpha_blend@pipe-C-constant-alpha-max
>> +kms_rotation_crc@multiplane-rotation
>> +kms_rotation_crc@multiplane-rotation-cropping-bottom
>> +kms_rotation_crc@multiplane-rotation-cropping-top
>> +kms_setmode@basic
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/i915-glk-skips.txt 
>> b/drivers/gpu/drm/ci/i915-glk-skips.txt
>> new file mode 100644
>> index 000000000000..e2c538a0f954
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/i915-glk-skips.txt
>> @@ -0,0 +1,2 @@
>> +# Suspend to RAM seems to be broken on this machine
>> +.*suspend.*
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/i915-kbl-fails.txt 
>> b/drivers/gpu/drm/ci/i915-kbl-fails.txt
>> new file mode 100644
>> index 000000000000..f81f065e27e8
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/i915-kbl-fails.txt
>> @@ -0,0 +1,8 @@
>> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
>> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
>> +kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
>> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
>> +kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/i915-kbl-flakes.txt 
>> b/drivers/gpu/drm/ci/i915-kbl-flakes.txt
>> new file mode 100644
>> index 000000000000..f82017654cf5
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/i915-kbl-flakes.txt
>> @@ -0,0 +1,24 @@
>> +kms_bw@linear-tiling-2-displays-1920x1080p
>> +kms_bw@linear-tiling-2-displays-3840x2160p
>> +kms_bw@linear-tiling-3-displays-1920x1080p
>> +kms_bw@linear-tiling-3-displays-2560x1440p
>> +kms_bw@linear-tiling-3-displays-3840x2160p
>> +kms_bw@linear-tiling-4-displays-1920x1080p
>> +kms_bw@linear-tiling-4-displays-3840x2160p
>> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
>> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
>> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
>> +kms_plane_alpha_blend@pipe-A-alpha-basic
>> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
>> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
>> +kms_plane_alpha_blend@pipe-B-alpha-basic
>> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
>> +kms_plane_alpha_blend@pipe-B-constant-alpha-max
>> +kms_plane_alpha_blend@pipe-C-alpha-basic
>> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
>> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
>> +kms_sysfs_edid_timing
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/i915-kbl-skips.txt 
>> b/drivers/gpu/drm/ci/i915-kbl-skips.txt
>> new file mode 100644
>> index 000000000000..e2c538a0f954
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/i915-kbl-skips.txt
>> @@ -0,0 +1,2 @@
>> +# Suspend to RAM seems to be broken on this machine
>> +.*suspend.*
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/i915-tgl-fails.txt 
>> b/drivers/gpu/drm/ci/i915-tgl-fails.txt
>> new file mode 100644
>> index 000000000000..270644ce220c
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/i915-tgl-fails.txt
>> @@ -0,0 +1,19 @@
>> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
>> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
>> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
>> +kms_bw@linear-tiling-4-displays-1920x1080p,Fail
>> +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-4-displays-3840x2160p,Fail
>> +kms_bw@linear-tiling-5-displays-1920x1080p,Fail
>> +kms_bw@linear-tiling-5-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-5-displays-3840x2160p,Fail
>> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
>> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail 
>>
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
>> +kms_rotation_crc@bad-pixel-format,Fail
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/i915-tgl-flakes.txt 
>> b/drivers/gpu/drm/ci/i915-tgl-flakes.txt
>> new file mode 100644
>> index 000000000000..15fba77ff19d
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/i915-tgl-flakes.txt
>> @@ -0,0 +1,6 @@
>> +kms_draw_crc@draw-method-rgb565-blt-untiled
>> +kms_draw_crc@draw-method-xrgb8888-mmap-gtt-untiled
>> +kms_draw_crc@draw-method-xrgb8888-mmap-gtt-xtiled
>> +kms_flip@blocking-absolute-wf_vblank
>> +kms_flip@bo-too-big-interruptible
>> +kms_flip@flip-vs-rmfb-interruptible
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/i915-tgl-skips.txt 
>> b/drivers/gpu/drm/ci/i915-tgl-skips.txt
>> new file mode 100644
>> index 000000000000..14f33c7ba03b
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/i915-tgl-skips.txt
>> @@ -0,0 +1,8 @@
>> +# Suspend to RAM seems to be broken on this machine
>> +.*suspend.*
>> +
>> +# GPU hangs, then the whole machine
>> +gem_eio.*
>> +
>> +# Whole machine hangs
>> +kms_flip@absolute-wf_vblank@a-edp1
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/i915-whl-fails.txt 
>> b/drivers/gpu/drm/ci/i915-whl-fails.txt
>> new file mode 100644
>> index 000000000000..dbfedfa5d63f
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/i915-whl-fails.txt
>> @@ -0,0 +1,30 @@
>> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
>> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
>> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
>> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
>> +kms_bw@linear-tiling-4-displays-1920x1080p,Fail
>> +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-4-displays-3840x2160p,Fail
>> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
>> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
>> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
>> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail 
>>
>> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
>> +kms_frontbuffer_tracking@fbc-tiling-linear,Fail
>> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
>> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
>> +kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
>> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
>> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
>> +kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
>> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
>> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
>> +kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
>> +kms_sysfs_edid_timing,Fail
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/i915-whl-flakes.txt 
>> b/drivers/gpu/drm/ci/i915-whl-flakes.txt
>> new file mode 100644
>> index 000000000000..6bcac5b84fbb
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/i915-whl-flakes.txt
>> @@ -0,0 +1 @@
>> +kms_flip@flip-vs-suspend
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt 
>> b/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
>> new file mode 100644
>> index 000000000000..7f74fb9afc99
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
>> @@ -0,0 +1,29 @@
>> +kms_3d,Fail
>> +kms_addfb_basic@addfb25-bad-modifier,Fail
>> +kms_bw@linear-tiling-1-displays-1920x1080p,Fail
>> +kms_bw@linear-tiling-1-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-1-displays-3840x2160p,Fail
>> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
>> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
>> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
>> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
>> +kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
>> +kms_color@pipe-B-invalid-gamma-lut-sizes,Fail
>> +kms_force_connector_basic@force-connector-state,Fail
>> +kms_force_connector_basic@force-edid,Fail
>> +kms_force_connector_basic@force-load-detect,Fail
>> +kms_force_connector_basic@prune-stale-modes,Fail
>> +kms_invalid_mode@int-max-clock,Fail
>> +kms_plane_scaling@planes-upscale-20x20,Fail
>> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
>> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
>> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
>> +kms_plane_scaling@upscale-with-modifier-20x20,Fail
>> +kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
>> +kms_plane_scaling@upscale-with-rotation-20x20,Fail
>> +kms_properties@get_properties-sanity-atomic,Fail
>> +kms_properties@plane-properties-atomic,Fail
>> +kms_properties@plane-properties-legacy,Fail
>> +kms_rmfb@close-fd,Fail
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt 
>> b/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
>> new file mode 100644
>> index 000000000000..6ff81d00e84e
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
>> @@ -0,0 +1,10 @@
>> +kms_addfb_basic@addfb25-bad-modifier,Fail
>> +kms_bw@linear-tiling-1-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
>> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
>> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
>> +kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
>> +kms_plane_scaling@upscale-with-rotation-20x20,Fail
>> +kms_rmfb@close-fd,Fail
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt 
>> b/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
>> new file mode 100644
>> index 000000000000..208890b79eb0
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
>> @@ -0,0 +1,14 @@
>> +core_setmaster_vs_auth
>> +kms_bw@linear-tiling-1-displays-1920x1080p
>> +kms_bw@linear-tiling-1-displays-3840x2160p
>> +kms_bw@linear-tiling-3-displays-1920x1080p
>> +kms_cursor_legacy@cursor-vs-flip-atomic
>> +kms_plane_scaling@invalid-num-scalers
>> +kms_plane_scaling@planes-upscale-20x20
>> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5
>> +kms_plane_scaling@upscale-with-modifier-20x20
>> +kms_plane_scaling@upscale-with-pixel-format-20x20
>> +kms_prop_blob@invalid-set-prop-any
>> +kms_properties@get_properties-sanity-atomic
>> +kms_properties@plane-properties-atomic
>> +kms_properties@plane-properties-legacy
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/meson-g12b-fails.txt 
>> b/drivers/gpu/drm/ci/meson-g12b-fails.txt
>> new file mode 100644
>> index 000000000000..345e1426b3a3
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/meson-g12b-fails.txt
>> @@ -0,0 +1,5 @@
>> +kms_3d,Fail
>> +kms_addfb_basic@addfb25-bad-modifier,Fail
>> +kms_properties@connector-properties-atomic,Fail
>> +kms_properties@get_properties-sanity-atomic,Fail
>> +kms_properties@get_properties-sanity-non-atomic,Fail
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/meson-g12b-flakes.txt 
>> b/drivers/gpu/drm/ci/meson-g12b-flakes.txt
>> new file mode 100644
>> index 000000000000..b63329d06767
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/meson-g12b-flakes.txt
>> @@ -0,0 +1,4 @@
>> +kms_force_connector_basic@force-connector-state
>> +kms_force_connector_basic@force-edid
>> +kms_force_connector_basic@force-load-detect
>> +kms_force_connector_basic@prune-stale-modes
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/msm-apq8016-fails.txt 
>> b/drivers/gpu/drm/ci/msm-apq8016-fails.txt
>> new file mode 100644
>> index 000000000000..16c2dfab3f16
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/msm-apq8016-fails.txt
>> @@ -0,0 +1,15 @@
>> +kms_3d,Fail
>> +kms_addfb_basic@addfb25-bad-modifier,Fail
>> +kms_cursor_legacy@all-pipes-forked-move,Fail
>> +kms_cursor_legacy@all-pipes-torture-bo,Fail
>> +kms_cursor_legacy@all-pipes-forked-bo,Fail
>> +kms_cursor_legacy@all-pipes-single-bo,Fail
>> +kms_cursor_legacy@all-pipes-single-move,Fail
>> +kms_cursor_legacy@all-pipes-torture-move,Fail
>> +kms_cursor_legacy@pipe-A-forked-bo,Fail
>> +kms_cursor_legacy@pipe-A-forked-move,Fail
>> +kms_cursor_legacy@pipe-A-single-bo,Fail
>> +kms_cursor_legacy@pipe-A-single-move,Fail
>> +kms_cursor_legacy@pipe-A-torture-bo,Fail
>> +kms_cursor_legacy@pipe-A-torture-move,Fail
>> +kms_hdmi_inject@inject-4k,Fail
>> diff --git a/drivers/gpu/drm/ci/msm-apq8016-flakes.txt 
>> b/drivers/gpu/drm/ci/msm-apq8016-flakes.txt
>> new file mode 100644
>> index 000000000000..b63329d06767
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/msm-apq8016-flakes.txt
>> @@ -0,0 +1,4 @@
>> +kms_force_connector_basic@force-connector-state
>> +kms_force_connector_basic@force-edid
>> +kms_force_connector_basic@force-load-detect
>> +kms_force_connector_basic@prune-stale-modes
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/msm-apq8096-fails.txt 
>> b/drivers/gpu/drm/ci/msm-apq8096-fails.txt
>> new file mode 100644
>> index 000000000000..88a1fc0a3b0d
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/msm-apq8096-fails.txt
>> @@ -0,0 +1,2 @@
>> +kms_3d,Fail
>> +kms_addfb_basic@addfb25-bad-modifier,Fail
>> diff --git a/drivers/gpu/drm/ci/msm-apq8096-flakes.txt 
>> b/drivers/gpu/drm/ci/msm-apq8096-flakes.txt
>> new file mode 100644
>> index 000000000000..b63329d06767
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/msm-apq8096-flakes.txt
>> @@ -0,0 +1,4 @@
>> +kms_force_connector_basic@force-connector-state
>> +kms_force_connector_basic@force-edid
>> +kms_force_connector_basic@force-load-detect
>> +kms_force_connector_basic@prune-stale-modes
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/msm-apq8096-skips.txt 
>> b/drivers/gpu/drm/ci/msm-apq8096-skips.txt
>> new file mode 100644
>> index 000000000000..cd49c8ce2059
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/msm-apq8096-skips.txt
>> @@ -0,0 +1,2 @@
>> +# Whole machine hangs
>> +kms_cursor_legacy@all-pipes-torture-move
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/msm-sc7180-fails.txt 
>> b/drivers/gpu/drm/ci/msm-sc7180-fails.txt
>> new file mode 100644
>> index 000000000000..0b159b6469c8
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/msm-sc7180-fails.txt
>> @@ -0,0 +1,22 @@
>> +kms_cursor_legacy@cursor-vs-flip-toggle,Fail
>> +kms_cursor_legacy@cursorA-vs-flipA-atomic-transitions,Crash
>> +kms_plane@pixel-format,Fail
>> +kms_plane@pixel-format-source-clamping,Fail
>> +kms_plane@plane-position-covered,Fail
>> +kms_plane@plane-position-hole,Fail
>> +kms_plane@plane-position-hole-dpms,Fail
>> +kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
>> +kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
>> +kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
>> +kms_plane_alpha_blend@pipe-B-alpha-7efc,Fail
>> +kms_plane_alpha_blend@pipe-B-alpha-basic,Fail
>> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
>> +kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
>> +kms_plane_alpha_blend@pipe-B-constant-alpha-mid,Fail
>> +kms_plane_alpha_blend@pipe-B-coverage-7efc,Fail
>> +kms_plane_alpha_blend@pipe-B-coverage-vs-premult-vs-constant,Fail
>> +kms_plane_multiple@atomic-pipe-A-tiling-none,Crash
>> +kms_rmfb@close-fd,Fail
>> +kms_rotation_crc@primary-rotation-180,Fail
>> +kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
>> +kms_universal_plane@disable-primary-vs-flip-pipe-b,Fail
>> diff --git a/drivers/gpu/drm/ci/msm-sc7180-flakes.txt 
>> b/drivers/gpu/drm/ci/msm-sc7180-flakes.txt
>> new file mode 100644
>> index 000000000000..6022edace190
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/msm-sc7180-flakes.txt
>> @@ -0,0 +1,14 @@
>> +# Test ends up reading CRC from frame before cursor update
>> +# sometimes.. tbd if this is a kernel CRC bug or a test
>> +# bug
>> +kms_cursor_crc@pipe-.*
>> +
>> +kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
>> +kms_cursor_edge_walk@pipe-A-64x64-left-edge
>> +kms_cursor_edge_walk@pipe-A-64x64-right-edge
>> +kms_cursor_edge_walk@pipe-A-64x64-top-edge
>> +kms_cursor_edge_walk@pipe-B-64x64-bottom-edge
>> +kms_cursor_edge_walk@pipe-B-64x64-left-edge
>> +kms_cursor_edge_walk@pipe-B-64x64-right-edge
>> +kms_cursor_edge_walk@pipe-B-64x64-top-edge
>> +kms_plane_multiple@atomic-pipe-A-tiling-none
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/msm-sc7180-skips.txt 
>> b/drivers/gpu/drm/ci/msm-sc7180-skips.txt
>> new file mode 100644
>> index 000000000000..40916ddff81f
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/msm-sc7180-skips.txt
>> @@ -0,0 +1,18 @@
>> +# Suspend to RAM seems to be broken on this machine
>> +.*suspend.*
>> +
>> +# Test incorrectly assumes that CTM support implies gamma/degamma
>> +# LUT support.  None of the subtests handle the case of only having
>> +# CTM support
>> +kms_color.*
>> +
>> +# 4k@60 is not supported on this hw, but driver doesn't handle it
>> +# too gracefully.. https://gitlab.freedesktop.org/drm/msm/-/issues/15
>> +kms_bw@linear-tiling-.*-displays-3840x2160p
>> +
>> +# Until igt fix lands: https://patchwork.freedesktop.org/patch/493175/
>> +kms_bw@linear-tiling-2.*
>> +kms_bw@linear-tiling-3.*
>> +kms_bw@linear-tiling-4.*
>> +kms_bw@linear-tiling-5.*
>> +kms_bw@linear-tiling-6.*
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/msm-sdm845-fails.txt 
>> b/drivers/gpu/drm/ci/msm-sdm845-fails.txt
>> new file mode 100644
>> index 000000000000..8133927a44df
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/msm-sdm845-fails.txt
>> @@ -0,0 +1,44 @@
>> +kms_color@pipe-A-ctm-0-25,Fail
>> +kms_color@pipe-A-ctm-0-5,Fail
>> +kms_color@pipe-A-ctm-0-75,Fail
>> +kms_color@pipe-A-ctm-blue-to-red,Fail
>> +kms_color@pipe-A-ctm-green-to-red,Fail
>> +kms_color@pipe-A-ctm-max,Fail
>> +kms_color@pipe-A-ctm-negative,Fail
>> +kms_color@pipe-A-ctm-red-to-blue,Fail
>> +kms_color@pipe-A-legacy-gamma,Fail
>> +kms_cursor_legacy@basic-flip-after-cursor-atomic,Fail
>> +kms_cursor_legacy@basic-flip-after-cursor-legacy,Fail
>> +kms_cursor_legacy@basic-flip-before-cursor-atomic,Fail
>> +kms_cursor_legacy@basic-flip-before-cursor-legacy,Fail
>> +kms_cursor_legacy@cursor-vs-flip-atomic,Fail
>> +kms_cursor_legacy@cursor-vs-flip-atomic-transitions,Fail
>> +kms_cursor_legacy@cursor-vs-flip-legacy,Fail
>> +kms_cursor_legacy@cursor-vs-flip-toggle,Fail
>> +kms_cursor_legacy@flip-vs-cursor-atomic,Fail
>> +kms_cursor_legacy@flip-vs-cursor-crc-atomic,Fail
>> +kms_cursor_legacy@flip-vs-cursor-crc-legacy,Fail
>> +kms_cursor_legacy@flip-vs-cursor-legacy,Fail
>> +kms_cursor_legacy@short-flip-after-cursor-atomic-transitions,Fail
>> +kms_cursor_legacy@short-flip-after-cursor-toggle,Fail
>> +kms_cursor_legacy@short-flip-before-cursor-atomic-transitions,Fail
>> +kms_cursor_legacy@short-flip-before-cursor-toggle,Fail
>> +kms_plane@pixel-format,Fail
>> +kms_plane@pixel-format-source-clamping,Fail
>> +kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
>> +kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
>> +kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
>> +kms_plane_cursor@pipe-A-overlay-size-128,Fail
>> +kms_plane_cursor@pipe-A-overlay-size-256,Fail
>> +kms_plane_cursor@pipe-A-overlay-size-64,Fail
>> +kms_plane_cursor@pipe-A-viewport-size-128,Fail
>> +kms_plane_cursor@pipe-A-viewport-size-256,Fail
>> +kms_plane_cursor@pipe-A-viewport-size-64,Fail
>> +kms_plane_scaling@downscale-with-pixel-format-factor-0-25,Timeout
>> +kms_plane_scaling@downscale-with-pixel-format-factor-0-5,Timeout
>> +kms_plane_scaling@downscale-with-pixel-format-factor-0-75,Timeout
>> +kms_plane_scaling@invalid-num-scalers,Fail
>> +kms_plane_scaling@planes-downscale-factor-0-25,Fail
>> +kms_plane_scaling@scaler-with-clipping-clamping,Timeout
>> +kms_plane_scaling@scaler-with-pixel-format-unity-scaling,Timeout
>> +kms_rmfb@close-fd,Fail
>> diff --git a/drivers/gpu/drm/ci/msm-sdm845-flakes.txt 
>> b/drivers/gpu/drm/ci/msm-sdm845-flakes.txt
>> new file mode 100644
>> index 000000000000..da4406b74828
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/msm-sdm845-flakes.txt
>> @@ -0,0 +1,33 @@
>> +# Test ends up reading CRC from frame before cursor update
>> +# sometimes.. tbd if this is a kernel CRC bug or a test
>> +# bug
>> +kms_cursor_crc@pipe-A-cursor-alpha-opaque
>> +kms_cursor_crc@pipe-A-cursor-dpms
>> +kms_cursor_crc@pipe-A-cursor-size-change
>> +kms_cursor_legacy@flip-vs-cursor-toggle
>> +kms_cursor_legacy@pipe-A-forked-bo
>> +kms_cursor_legacy@pipe-A-forked-move
>> +kms_cursor_crc@pipe-A-cursor-32x10-offscreen
>> +kms_cursor_crc@pipe-A-cursor-32x10-onscreen
>> +kms_cursor_crc@pipe-A-cursor-32x10-random
>> +kms_cursor_crc@pipe-A-cursor-32x10-sliding
>> +kms_cursor_crc@pipe-A-cursor-32x32-offscreen
>> +kms_cursor_crc@pipe-A-cursor-32x32-onscreen
>> +kms_cursor_crc@pipe-A-cursor-32x32-random
>> +kms_cursor_crc@pipe-A-cursor-32x32-sliding
>> +kms_cursor_crc@pipe-A-cursor-64x21-offscreen
>> +kms_cursor_crc@pipe-A-cursor-64x21-onscreen
>> +kms_cursor_crc@pipe-A-cursor-64x21-random
>> +kms_cursor_crc@pipe-A-cursor-64x21-sliding
>> +kms_cursor_crc@pipe-A-cursor-64x64-offscreen
>> +kms_cursor_crc@pipe-A-cursor-64x64-onscreen
>> +kms_cursor_crc@pipe-A-cursor-64x64-random
>> +kms_cursor_crc@pipe-A-cursor-64x64-sliding
>> +kms_cursor_crc@pipe-A-cursor-dpms
>> +kms_cursor_crc@pipe-A-cursor-suspend
>> +kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
>> +kms_cursor_edge_walk@pipe-A-64x64-left-edge
>> +kms_cursor_edge_walk@pipe-A-64x64-right-edge
>> +kms_cursor_edge_walk@pipe-A-64x64-top-edge
>> +
>> +kms_flip@dpms-vs-vblank-race-interruptible
>> diff --git a/drivers/gpu/drm/ci/msm-sdm845-skips.txt 
>> b/drivers/gpu/drm/ci/msm-sdm845-skips.txt
>> new file mode 100644
>> index 000000000000..42675f1c6d76
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/msm-sdm845-skips.txt
>> @@ -0,0 +1,2 @@
>> +# Hangs machine
>> +kms_bw.*
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt 
>> b/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
>> new file mode 100644
>> index 000000000000..e2a264647a58
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
>> @@ -0,0 +1,75 @@
>> +kms_3d,Fail
>> +kms_addfb_basic@addfb25-bad-modifier,Fail
>> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
>> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
>> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
>> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
>> +kms_cursor_crc@pipe-A-cursor-32x10-onscreen,Fail
>> +kms_cursor_crc@pipe-A-cursor-32x10-random,Fail
>> +kms_cursor_crc@pipe-A-cursor-32x10-sliding,Fail
>> +kms_cursor_crc@pipe-A-cursor-32x32-onscreen,Fail
>> +kms_cursor_crc@pipe-A-cursor-32x32-random,Fail
>> +kms_cursor_crc@pipe-A-cursor-32x32-sliding,Fail
>> +kms_cursor_crc@pipe-A-cursor-64x21-onscreen,Fail
>> +kms_cursor_crc@pipe-A-cursor-64x21-random,Fail
>> +kms_cursor_crc@pipe-A-cursor-64x21-sliding,Fail
>> +kms_cursor_crc@pipe-A-cursor-64x64-onscreen,Fail
>> +kms_cursor_crc@pipe-A-cursor-64x64-random,Fail
>> +kms_cursor_crc@pipe-A-cursor-64x64-sliding,Fail
>> +kms_cursor_crc@pipe-A-cursor-alpha-opaque,Fail
>> +kms_cursor_crc@pipe-A-cursor-dpms,Fail
>> +kms_cursor_crc@pipe-A-cursor-size-change,Fail
>> +kms_cursor_crc@pipe-B-cursor-32x10-onscreen,Fail
>> +kms_cursor_crc@pipe-B-cursor-32x10-random,Fail
>> +kms_cursor_crc@pipe-B-cursor-32x10-sliding,Fail
>> +kms_cursor_crc@pipe-B-cursor-32x32-onscreen,Fail
>> +kms_cursor_crc@pipe-B-cursor-32x32-random,Fail
>> +kms_cursor_crc@pipe-B-cursor-32x32-sliding,Fail
>> +kms_cursor_crc@pipe-B-cursor-64x21-onscreen,Fail
>> +kms_cursor_crc@pipe-B-cursor-64x21-random,Fail
>> +kms_cursor_crc@pipe-B-cursor-64x64-onscreen,Fail
>> +kms_cursor_crc@pipe-B-cursor-64x64-random,Fail
>> +kms_cursor_crc@pipe-B-cursor-64x64-sliding,Fail
>> +kms_cursor_crc@pipe-B-cursor-alpha-opaque,Fail
>> +kms_cursor_crc@pipe-B-cursor-size-change,Fail
>> +kms_force_connector_basic@force-connector-state,Fail
>> +kms_force_connector_basic@force-edid,Fail
>> +kms_force_connector_basic@force-load-detect,Fail
>> +kms_force_connector_basic@prune-stale-modes,Fail
>> +kms_invalid_mode@int-max-clock,Fail
>> +kms_pipe_crc_basic@nonblocking-crc-pipe-A-frame-sequence,Fail
>> +kms_pipe_crc_basic@nonblocking-crc-pipe-B-frame-sequence,Fail
>> +kms_pipe_crc_basic@read-crc-pipe-A-frame-sequence,Fail
>> +kms_pipe_crc_basic@read-crc-pipe-B-frame-sequence,Fail
>> +kms_plane_cursor@pipe-A-overlay-size-128,Fail
>> +kms_plane_cursor@pipe-A-overlay-size-256,Fail
>> +kms_plane_cursor@pipe-A-overlay-size-64,Fail
>> +kms_plane_cursor@pipe-A-primary-size-128,Fail
>> +kms_plane_cursor@pipe-A-primary-size-256,Fail
>> +kms_plane_cursor@pipe-A-primary-size-64,Fail
>> +kms_plane_cursor@pipe-A-viewport-size-128,Fail
>> +kms_plane_cursor@pipe-A-viewport-size-256,Fail
>> +kms_plane_cursor@pipe-A-viewport-size-64,Fail
>> +kms_plane_cursor@pipe-B-overlay-size-128,Fail
>> +kms_plane_cursor@pipe-B-overlay-size-256,Fail
>> +kms_plane_cursor@pipe-B-overlay-size-64,Fail
>> +kms_plane_cursor@pipe-B-primary-size-128,Fail
>> +kms_plane_cursor@pipe-B-primary-size-256,Fail
>> +kms_plane_cursor@pipe-B-primary-size-64,Fail
>> +kms_plane_cursor@pipe-B-viewport-size-128,Fail
>> +kms_plane_cursor@pipe-B-viewport-size-256,Fail
>> +kms_plane_cursor@pipe-B-viewport-size-64,Fail
>> +kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
>> +kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
>> +kms_plane_scaling@upscale-with-modifier-20x20,Fail
>> +kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
>> +kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
>> +kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
>> +kms_plane_scaling@upscale-with-rotation-20x20,Fail
>> +kms_prime@basic-crc,Fail
>> +kms_properties@connector-properties-atomic,Fail
>> +kms_properties@get_properties-sanity-atomic,Fail
>> +kms_properties@get_properties-sanity-non-atomic,Fail
>> +kms_rmfb@close-fd,Fail
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt 
>> b/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
>> new file mode 100644
>> index 000000000000..447fb26cc344
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
>> @@ -0,0 +1,5 @@
>> +kms_cursor_crc@pipe-B-cursor-dpms
>> +kms_cursor_edge_walk@pipe-A-64x64-right-edge
>> +kms_cursor_edge_walk@pipe-A-64x64-top-edge
>> +kms_cursor_edge_walk@pipe-B-64x64-right-edge
>> +kms_cursor_edge_walk@pipe-B-64x64-top-edge
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt 
>> b/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
>> new file mode 100644
>> index 000000000000..26f9a03fc074
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
>> @@ -0,0 +1,46 @@
>> +# Suspend to RAM seems to be broken on this machine
>> +.*suspend.*
>> +
>> +# Too unstable, machine ends up hanging after lots of Oopses
>> +kms_cursor_legacy.*
>> +
>> +# Started hanging the machine on Linux 5.19-rc2:
>> +#
>> +# [IGT] kms_plane_lowres: executing
>> +# [IGT] kms_plane_lowres: starting subtest pipe-F-tiling-y
>> +# [IGT] kms_plane_lowres: exiting, ret=77
>> +# Console: switching to colour frame buffer device 170x48
>> +# rockchip-drm display-subsystem: [drm] *ERROR* flip_done timed out
>> +# rockchip-drm display-subsystem: [drm] *ERROR* [CRTC:35:crtc-0] 
>> commit wait timed out
>> +# BUG: spinlock bad magic on CPU#3, kms_plane_lowre/482
>> +# 8<--- cut here ---
>> +# Unable to handle kernel paging request at virtual address 7812078e
>> +# [7812078e] *pgd=00000000
>> +# Internal error: Oops: 5 [#1] SMP ARM
>> +# Modules linked in:
>> +# CPU: 3 PID: 482 Comm: kms_plane_lowre Tainted: G        W         
>> 5.19.0-rc2-323596-g00535de92171 #1
>> +# Hardware name: Rockchip (Device Tree)
>> +# Process kms_plane_lowre (pid: 482, stack limit = 0x1193ac2b)
>> +#  spin_dump from do_raw_spin_lock+0xa4/0xe8
>> +#  do_raw_spin_lock from wait_for_completion_timeout+0x2c/0x120
>> +#  wait_for_completion_timeout from drm_crtc_commit_wait+0x18/0x7c
>> +#  drm_crtc_commit_wait from 
>> drm_atomic_helper_wait_for_dependencies+0x44/0x168
>> +#  drm_atomic_helper_wait_for_dependencies from commit_tail+0x34/0x180
>> +#  commit_tail from drm_atomic_helper_commit+0x164/0x18c
>> +#  drm_atomic_helper_commit from drm_atomic_commit+0xac/0xe4
>> +#  drm_atomic_commit from drm_client_modeset_commit_atomic+0x23c/0x284
>> +#  drm_client_modeset_commit_atomic from 
>> drm_client_modeset_commit_locked+0x60/0x1c8
>> +#  drm_client_modeset_commit_locked from 
>> drm_client_modeset_commit+0x24/0x40
>> +#  drm_client_modeset_commit from drm_fbdev_client_restore+0x58/0x94
>> +#  drm_fbdev_client_restore from drm_client_dev_restore+0x70/0xbc
>> +#  drm_client_dev_restore from drm_release+0xf4/0x114
>> +#  drm_release from __fput+0x74/0x240
>> +#  __fput from task_work_run+0x84/0xb4
>> +#  task_work_run from do_exit+0x34c/0xa20
>> +#  do_exit from do_group_exit+0x34/0x98
>> +#  do_group_exit from __wake_up_parent+0x0/0x18
>> +# Code: e595c008 12843d19 03e00000 03093168 (15940508)
>> +# ---[ end trace 0000000000000000 ]---
>> +# note: kms_plane_lowre[482] exited with preempt_count 1
>> +# Fixing recursive fault but reboot is needed!
>> +kms_plane_lowres@pipe-F-tiling-y
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt 
>> b/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
>> new file mode 100644
>> index 000000000000..0f8afa7e2adc
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
>> @@ -0,0 +1,86 @@
>> +kms_addfb_basic@addfb25-bad-modifier,Fail
>> +kms_color@pipe-A-legacy-gamma,Fail
>> +kms_color@pipe-B-legacy-gamma,Fail
>> +kms_cursor_crc@pipe-A-cursor-32x10-offscreen,Fail
>> +kms_cursor_crc@pipe-A-cursor-32x10-onscreen,Fail
>> +kms_cursor_crc@pipe-A-cursor-32x10-random,Fail
>> +kms_cursor_crc@pipe-A-cursor-32x10-rapid-movement,Fail
>> +kms_cursor_crc@pipe-A-cursor-32x10-sliding,Fail
>> +kms_cursor_crc@pipe-A-cursor-32x32-offscreen,Fail
>> +kms_cursor_crc@pipe-A-cursor-32x32-onscreen,Fail
>> +kms_cursor_crc@pipe-A-cursor-32x32-random,Fail
>> +kms_cursor_crc@pipe-A-cursor-32x32-rapid-movement,Fail
>> +kms_cursor_crc@pipe-A-cursor-32x32-sliding,Fail
>> +kms_cursor_crc@pipe-A-cursor-64x21-onscreen,Fail
>> +kms_cursor_crc@pipe-A-cursor-64x21-random,Fail
>> +kms_cursor_crc@pipe-A-cursor-64x21-sliding,Fail
>> +kms_cursor_crc@pipe-A-cursor-64x64-offscreen,Fail
>> +kms_cursor_crc@pipe-A-cursor-64x64-onscreen,Fail
>> +kms_cursor_crc@pipe-A-cursor-64x64-random,Fail
>> +kms_cursor_crc@pipe-A-cursor-64x64-rapid-movement,Fail
>> +kms_cursor_crc@pipe-A-cursor-64x64-sliding,Fail
>> +kms_cursor_crc@pipe-A-cursor-alpha-opaque,Fail
>> +kms_cursor_crc@pipe-A-cursor-alpha-transparent,Fail
>> +kms_cursor_crc@pipe-A-cursor-dpms,Fail
>> +kms_cursor_crc@pipe-A-cursor-size-change,Fail
>> +kms_cursor_crc@pipe-B-cursor-32x10-onscreen,Fail
>> +kms_cursor_crc@pipe-B-cursor-32x10-random,Fail
>> +kms_cursor_crc@pipe-B-cursor-32x10-rapid-movement,Fail
>> +kms_cursor_crc@pipe-B-cursor-32x10-sliding,Fail
>> +kms_cursor_crc@pipe-B-cursor-32x32-offscreen,Fail
>> +kms_cursor_crc@pipe-B-cursor-32x32-onscreen,Fail
>> +kms_cursor_crc@pipe-B-cursor-32x32-random,Fail
>> +kms_cursor_crc@pipe-B-cursor-32x32-rapid-movement,Fail
>> +kms_cursor_crc@pipe-B-cursor-32x32-sliding,Fail
>> +kms_cursor_crc@pipe-B-cursor-64x21-onscreen,Fail
>> +kms_cursor_crc@pipe-B-cursor-64x21-random,Fail
>> +kms_cursor_crc@pipe-B-cursor-64x21-rapid-movement,Fail
>> +kms_cursor_crc@pipe-B-cursor-64x64-offscreen,Fail
>> +kms_cursor_crc@pipe-B-cursor-64x64-onscreen,Fail
>> +kms_cursor_crc@pipe-B-cursor-64x64-random,Fail
>> +kms_cursor_crc@pipe-B-cursor-64x64-rapid-movement,Fail
>> +kms_cursor_crc@pipe-B-cursor-64x64-sliding,Fail
>> +kms_cursor_crc@pipe-B-cursor-alpha-opaque,Fail
>> +kms_cursor_crc@pipe-B-cursor-dpms,Fail
>> +kms_cursor_crc@pipe-B-cursor-size-change,Fail
>> +kms_cursor_edge_walk@pipe-A-64x64-bottom-edge,Fail
>> +kms_cursor_edge_walk@pipe-A-64x64-left-edge,Fail
>> +kms_cursor_edge_walk@pipe-A-64x64-top-edge,Fail
>> +kms_cursor_edge_walk@pipe-B-64x64-bottom-edge,Fail
>> +kms_cursor_edge_walk@pipe-B-64x64-right-edge,Fail
>> +kms_cursor_edge_walk@pipe-B-64x64-top-edge,Fail
>> +kms_invalid_mode@int-max-clock,Fail
>> +kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-A,Fail
>> +kms_pipe_crc_basic@nonblocking-crc-pipe-A,Fail
>> +kms_pipe_crc_basic@nonblocking-crc-pipe-A-frame-sequence,Fail
>> +kms_pipe_crc_basic@nonblocking-crc-pipe-B,Fail
>> +kms_pipe_crc_basic@nonblocking-crc-pipe-B-frame-sequence,Fail
>> +kms_pipe_crc_basic@read-crc-pipe-A,Fail
>> +kms_pipe_crc_basic@read-crc-pipe-A-frame-sequence,Fail
>> +kms_pipe_crc_basic@read-crc-pipe-B,Fail
>> +kms_pipe_crc_basic@read-crc-pipe-B-frame-sequence,Fail
>> +kms_plane@plane-panning-bottom-right,Fail
>> +kms_plane@plane-panning-top-left,Fail
>> +kms_plane_cursor@pipe-B-overlay-size-128,Fail
>> +kms_plane_cursor@pipe-B-overlay-size-256,Fail
>> +kms_plane_cursor@pipe-B-overlay-size-64,Fail
>> +kms_plane_cursor@pipe-B-primary-size-128,Fail
>> +kms_plane_cursor@pipe-B-primary-size-256,Fail
>> +kms_plane_cursor@pipe-B-primary-size-64,Fail
>> +kms_plane_cursor@pipe-B-viewport-size-128,Fail
>> +kms_plane_cursor@pipe-B-viewport-size-256,Fail
>> +kms_plane_cursor@pipe-B-viewport-size-64,Fail
>> +kms_plane_multiple@atomic-pipe-B-tiling-none,Fail
>> +kms_prime@basic-crc,Fail
>> +kms_rmfb@close-fd,Fail
>> +kms_universal_plane@universal-plane-pipe-B-functional,Fail
>> +kms_vblank@pipe-A-query-forked,Fail
>> +kms_vblank@pipe-A-query-idle,Fail
>> +kms_vblank@pipe-A-wait-busy,Fail
>> +kms_vblank@pipe-A-wait-forked,Fail
>> +kms_vblank@pipe-A-wait-forked-busy,Fail
>> +kms_vblank@pipe-B-query-forked,Fail
>> +kms_vblank@pipe-B-query-idle,Fail
>> +kms_vblank@pipe-B-wait-busy,Fail
>> +kms_vblank@pipe-B-wait-forked,Fail
>> +kms_vblank@pipe-B-wait-forked-busy,Fail
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt 
>> b/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
>> new file mode 100644
>> index 000000000000..b4c37a4315e4
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
>> @@ -0,0 +1,25 @@
>> +kms_cursor_crc@pipe-A-cursor-64x21-offscreen
>> +kms_cursor_crc@pipe-A-cursor-64x21-rapid-movement
>> +kms_cursor_crc@pipe-B-cursor-32x10-offscreen
>> +kms_cursor_crc@pipe-B-cursor-32x10-rapid-movement
>> +kms_cursor_crc@pipe-B-cursor-32x32-offscreen
>> +kms_cursor_crc@pipe-B-cursor-32x32-rapid-movement
>> +kms_cursor_crc@pipe-B-cursor-64x64-offscreen
>> +kms_cursor_crc@pipe-B-cursor-64x64-rapid-movement
>> +kms_cursor_edge_walk@pipe-A-64x64-right-edge
>> +kms_cursor_edge_walk@pipe-B-64x64-left-edge
>> +kms_flip@flip-vs-expired-vblank
>> +kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-B
>> +kms_plane_multiple@atomic-pipe-A-tiling-none
>> +kms_plane@plane-position-hole
>> +kms_sequence@get-forked
>> +kms_sequence@get-forked-busy
>> +kms_setmode@basic
>> +kms_vblank@pipe-A-accuracy-idle
>> +kms_vblank@pipe-A-query-busy
>> +kms_vblank@pipe-A-query-forked-busy
>> +kms_vblank@pipe-A-wait-idle
>> +kms_vblank@pipe-B-accuracy-idle
>> +kms_vblank@pipe-B-query-busy
>> +kms_vblank@pipe-B-query-forked-busy
>> +kms_vblank@pipe-B-wait-idle
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt 
>> b/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
>> new file mode 100644
>> index 000000000000..10c3d81a919a
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
>> @@ -0,0 +1,5 @@
>> +# Suspend to RAM seems to be broken on this machine
>> +.*suspend.*
>> +
>> +# Too unstable, machine ends up hanging after lots of Oopses
>> +kms_cursor_legacy.*
>> diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt 
>> b/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
>> new file mode 100644
>> index 000000000000..2178bdd064dd
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
>> @@ -0,0 +1,38 @@
>> +kms_addfb_basic@addfb25-bad-modifier,Fail
>> +kms_addfb_basic@bad-pitch-65536,Fail
>> +kms_addfb_basic@bo-too-small,Fail
>> +kms_addfb_basic@size-max,Fail
>> +kms_addfb_basic@too-high,Fail
>> +kms_atomic_transition@plane-primary-toggle-with-vblank-wait,Fail
>> +kms_bw@linear-tiling-1-displays-1920x1080p,Fail
>> +kms_bw@linear-tiling-1-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-1-displays-3840x2160p,Fail
>> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
>> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
>> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
>> +kms_invalid_mode@int-max-clock,Fail
>> +kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
>> +kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
>> +kms_plane_scaling@planes-upscale-20x20,Fail
>> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
>> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
>> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
>> +kms_plane_scaling@upscale-with-modifier-20x20,Fail
>> +kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
>> +kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
>> +kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
>> +kms_plane_scaling@upscale-with-rotation-20x20,Fail
>> +kms_vblank@crtc-id,Fail
>> +kms_vblank@invalid,Fail
>> +kms_vblank@pipe-A-accuracy-idle,Fail
>> +kms_vblank@pipe-A-query-busy,Fail
>> +kms_vblank@pipe-A-query-forked,Fail
>> +kms_vblank@pipe-A-query-forked-busy,Fail
>> +kms_vblank@pipe-A-query-idle,Fail
>> +kms_vblank@pipe-A-ts-continuation-idle,Fail
>> +kms_vblank@pipe-A-ts-continuation-modeset,Fail
>> +kms_vblank@pipe-A-ts-continuation-suspend,Fail
>> +kms_vblank@pipe-A-wait-busy,Fail
>> +kms_vblank@pipe-A-wait-forked,Fail
>> +kms_vblank@pipe-A-wait-forked-busy,Fail
>> +kms_vblank@pipe-A-wait-idle,Fail
>> \ No newline at end of file
>> diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt 
>> b/drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt
>> new file mode 100644
>> index 000000000000..e69de29bb2d1
>> diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt 
>> b/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt
>> new file mode 100644
>> index 000000000000..78be18174012
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt
>> @@ -0,0 +1,6 @@
>> +# Hits a "refcount_t: underflow; use-after-free" in 
>> virtio_gpu_fence_event_process
>> +# When run in a particular order with other tests
>> +kms_cursor_legacy.*
>> +
>> +# Job just hangs without any output
>> +kms_flip@flip-vs-suspend.*
>> \ No newline at end of file
> 
> 

-- 
Tomeu Vizoso
Consultant Principal Software Engineer

Collabora Ltd.
Platinum Building, St John's Innovation Park, Cambridge CB4 0DS, United 
Kingdom
Registered in England & Wales, no. 5513718

^ permalink raw reply	[flat|nested] 49+ messages in thread

* [PATCH v6] drm: Add initial ci/ subdirectory
  2022-07-26 18:16       ` [PATCH v5] " Tomeu Vizoso
  2022-07-29 15:43         ` Rob Clark
  2022-08-10 18:24         ` Rodrigo Siqueira Jordao
@ 2022-08-16 15:37         ` Tomeu Vizoso
  2022-08-29  9:31           ` [PATCH v7] " Tomeu Vizoso
  2 siblings, 1 reply; 49+ messages in thread
From: Tomeu Vizoso @ 2022-08-16 15:37 UTC (permalink / raw)
  To: David Airlie, Jonathan Corbet, Carlo Caione, Kevin Hilman,
	Heiko Stuebner, Matthias Brugger, Rob Clark
  Cc: Tomeu Vizoso, linux-doc, Neil Armstrong, linux-kernel, dri-devel,
	linux-rockchip, linux-mediatek, linux-amlogic, kernel,
	linux-arm-kernel

And use it to store expectations about what the DRM drivers are
supposed to pass in the IGT test suite.

Also include a configuration file that points to the out-of-tree CI
scripts.

By storing the test expectations along the code we can make sure both
stay in sync with each other, and so we can know when a code change
breaks those expectations.

This will allow all contributors to drm to reuse the infrastructure
already in gitlab.freedesktop.org to test the driver on several
generations of the hardware.

v2:
  - Fix names of result expectation files to match SoC
  - Don't execute tests that are going to skip on all boards

v3:
  - Remove tracking of dmesg output during test execution

v4:
  - Move up to drivers/gpu/drm
  - Add support for a bunch of other drivers
  - Explain how to incorporate fixes for CI from a
    ${TARGET_BRANCH}-external-fixes branch
  - Remove tests that pass from expected results file, to reduce the
    size of in-tree files
  - Add docs about how to deal with outages in automated testing labs
  - Specify the exact SHA of the CI scripts to be used

v5:
  - Remove unneeded skips from Meson expectations file
  - Use a more advanced runner that detects flakes automatically
  - Use a more succint format for the expectations
  - Run many more tests (and use sharding to finish in time)
  - Use skip lists to avoid hanging machines
  - Add some build testing
  - Build IGT in each pipeline for faster uprevs
  - List failures in the GitLab UI

v6:
  - Rebase on top of latest drm-next
  - Lower priority of LAVA jobs to not impact Mesa CI as much
  - Update docs

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
Reviewed-by: Rob Clark <robdclark@gmail.com>
---
 Documentation/gpu/automated_testing.rst       | 86 +++++++++++++++++++
 drivers/gpu/drm/ci/amdgpu-stoney-fails.txt    | 17 ++++
 drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt   | 20 +++++
 drivers/gpu/drm/ci/amdgpu-stoney-skips.txt    |  2 +
 drivers/gpu/drm/ci/gitlab-ci.yml              | 13 +++
 drivers/gpu/drm/ci/i915-amly-flakes.txt       | 32 +++++++
 drivers/gpu/drm/ci/i915-amly-skips.txt        |  2 +
 drivers/gpu/drm/ci/i915-apl-fails.txt         | 29 +++++++
 drivers/gpu/drm/ci/i915-apl-flakes.txt        |  1 +
 drivers/gpu/drm/ci/i915-apl-skips.txt         |  2 +
 drivers/gpu/drm/ci/i915-cml-flakes.txt        | 36 ++++++++
 drivers/gpu/drm/ci/i915-glk-flakes.txt        | 40 +++++++++
 drivers/gpu/drm/ci/i915-glk-skips.txt         |  2 +
 drivers/gpu/drm/ci/i915-kbl-fails.txt         |  8 ++
 drivers/gpu/drm/ci/i915-kbl-flakes.txt        | 24 ++++++
 drivers/gpu/drm/ci/i915-kbl-skips.txt         |  2 +
 drivers/gpu/drm/ci/i915-tgl-fails.txt         | 19 ++++
 drivers/gpu/drm/ci/i915-tgl-flakes.txt        |  6 ++
 drivers/gpu/drm/ci/i915-tgl-skips.txt         |  8 ++
 drivers/gpu/drm/ci/i915-whl-fails.txt         | 30 +++++++
 drivers/gpu/drm/ci/i915-whl-flakes.txt        |  1 +
 drivers/gpu/drm/ci/mediatek-mt8173-fails.txt  | 29 +++++++
 drivers/gpu/drm/ci/mediatek-mt8183-fails.txt  | 10 +++
 drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt | 14 +++
 drivers/gpu/drm/ci/meson-g12b-fails.txt       |  5 ++
 drivers/gpu/drm/ci/meson-g12b-flakes.txt      |  4 +
 drivers/gpu/drm/ci/msm-apq8016-fails.txt      | 15 ++++
 drivers/gpu/drm/ci/msm-apq8016-flakes.txt     |  4 +
 drivers/gpu/drm/ci/msm-apq8096-fails.txt      |  2 +
 drivers/gpu/drm/ci/msm-apq8096-flakes.txt     |  4 +
 drivers/gpu/drm/ci/msm-apq8096-skips.txt      |  2 +
 drivers/gpu/drm/ci/msm-sc7180-fails.txt       | 22 +++++
 drivers/gpu/drm/ci/msm-sc7180-flakes.txt      | 14 +++
 drivers/gpu/drm/ci/msm-sc7180-skips.txt       | 18 ++++
 drivers/gpu/drm/ci/msm-sdm845-fails.txt       | 44 ++++++++++
 drivers/gpu/drm/ci/msm-sdm845-flakes.txt      | 33 +++++++
 drivers/gpu/drm/ci/msm-sdm845-skips.txt       |  2 +
 drivers/gpu/drm/ci/rockchip-rk3288-fails.txt  | 75 ++++++++++++++++
 drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt |  9 ++
 drivers/gpu/drm/ci/rockchip-rk3288-skips.txt  | 46 ++++++++++
 drivers/gpu/drm/ci/rockchip-rk3399-fails.txt  | 86 +++++++++++++++++++
 drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt | 26 ++++++
 drivers/gpu/drm/ci/rockchip-rk3399-skips.txt  |  5 ++
 drivers/gpu/drm/ci/virtio_gpu-none-fails.txt  | 38 ++++++++
 drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt |  0
 drivers/gpu/drm/ci/virtio_gpu-none-skips.txt  |  6 ++
 46 files changed, 893 insertions(+)
 create mode 100644 Documentation/gpu/automated_testing.rst
 create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
 create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
 create mode 100644 drivers/gpu/drm/ci/gitlab-ci.yml
 create mode 100644 drivers/gpu/drm/ci/i915-amly-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/i915-amly-skips.txt
 create mode 100644 drivers/gpu/drm/ci/i915-apl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/i915-apl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/i915-apl-skips.txt
 create mode 100644 drivers/gpu/drm/ci/i915-cml-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/i915-glk-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/i915-glk-skips.txt
 create mode 100644 drivers/gpu/drm/ci/i915-kbl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/i915-kbl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/i915-kbl-skips.txt
 create mode 100644 drivers/gpu/drm/ci/i915-tgl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/i915-tgl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/i915-tgl-skips.txt
 create mode 100644 drivers/gpu/drm/ci/i915-whl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/i915-whl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
 create mode 100644 drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
 create mode 100644 drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/meson-g12b-fails.txt
 create mode 100644 drivers/gpu/drm/ci/meson-g12b-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/msm-apq8016-fails.txt
 create mode 100644 drivers/gpu/drm/ci/msm-apq8016-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/msm-apq8096-fails.txt
 create mode 100644 drivers/gpu/drm/ci/msm-apq8096-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/msm-apq8096-skips.txt
 create mode 100644 drivers/gpu/drm/ci/msm-sc7180-fails.txt
 create mode 100644 drivers/gpu/drm/ci/msm-sc7180-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/msm-sc7180-skips.txt
 create mode 100644 drivers/gpu/drm/ci/msm-sdm845-fails.txt
 create mode 100644 drivers/gpu/drm/ci/msm-sdm845-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/msm-sdm845-skips.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
 create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
 create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-skips.txt

diff --git a/Documentation/gpu/automated_testing.rst b/Documentation/gpu/automated_testing.rst
new file mode 100644
index 000000000000..defee4f5a470
--- /dev/null
+++ b/Documentation/gpu/automated_testing.rst
@@ -0,0 +1,86 @@
+.. SPDX-License-Identifier: GPL-2.0+
+
+=========================================
+Automated testing of the DRM subsystem
+=========================================
+
+
+Introduction
+============
+
+Making sure that changes to the core or drivers don't introduce regressions can be very time-consuming when lots of different hardware configurations need to be tested. Moreover, it isn't practical for each person interested in this testing to have to acquire and maintain what can be a considerable amount of hardware.
+
+Also, it is desirable for developers to check for regressions in their code by themselves, instead of relying on the maintainers to find them and then reporting back.
+
+There are facilities in gitlab.freedesktop.org to automatically test Mesa that can be used as well for testing the DRM subsystem. This document explains how people interested in testing it can use this shared infrastructure to save quite some time and effort.
+
+
+Relevant files
+==============
+
+drivers/gpu/drm/ci/gitlab-ci.yml
+--------------------------------
+
+Specifies the specific version of the scripts to be used. GitLab CI will use the values defined in this file to fetch the right scripts.
+
+
+drivers/gpu/drm/ci/${DRIVER_NAME}_${HW_REVISION}_fails.txt
+----------------------------------------------------------
+
+Lists the known failures for a given driver on a specific hardware revision.
+
+drivers/gpu/drm/ci/${DRIVER_NAME}_${HW_REVISION}_flakes.txt
+-----------------------------------------------------------
+
+Lists the tests that for a given driver on a specific hardware revision are known to behave unreliably. These tests won't cause a job to fail regardless of the result. They will still be run.
+
+drivers/gpu/drm/ci/${DRIVER_NAME}_${HW_REVISION}_skips.txt
+-----------------------------------------------------------
+
+Lists the tests that won't be run for a given driver on a specific hardware revision. These are usually tests that interfere with the running of the test list due to hanging the machine, causing OOM, taking too long, etc.
+
+
+How to enable automated testing on your tree
+============================================
+
+1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one yet
+
+2. In your kernel repo's configuration (eg. https://gitlab.freedesktop.org/tomeu/linux/-/settings/ci_cd), change the CI/CD configuration file from .gitlab-ci.yml to drivers/gpu/drm/ci/gitlab-ci.yml.
+
+3. Next time you push to this repository, you will see a CI pipeline being created (eg. https://gitlab.freedesktop.org/tomeu/linux/-/pipelines)
+
+4. The various jobs will be run and when the pipeline is finished, all jobs should be green unless a regression has been found.
+
+
+How to update test expectations
+===============================
+
+If your changes to the code fix any tests, you will have to remove one or more lines from one or more of the files in drivers/gpu/drm/ci/${DRIVER_NAME}_*_fails.txt, for each of the test platforms affected by the change.
+
+
+How to expand coverage
+======================
+
+If your code changes make it possible to run more tests (by solving reliability issues, for example), you can remove tests from the flakes and/or skips lists, and then the expected results if there are any known failures.
+
+If there is a need for updating the version of IGT being used (maybe you have added more tests to it), follow the instructions at https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/tree/main#upreving-igt.
+
+
+How to test your changes to the scripts
+=======================================
+
+For testing changes to the scripts in the drm-ci repo, change the DRM_CI_PROJECT_PATH and DRM_CI_COMMIT_SHA variables in drivers/gpu/drm/ci/gitlab-ci.yml to match your fork of the project (eg. tomeu/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
+
+
+How to incorporate external fixes in your testing
+=================================================
+
+Often, regressions in other trees will prevent testing changes local to the tree under test. These fixes will be automatically merged in during the build jobs from a branch in the target tree that is named as ${TARGET_BRANCH}-external-fixes.
+
+If the pipeline is not in a merge request and a branch with the same name exists in the local tree, commits from that branch will be merged in as well.
+
+
+How to deal with automated testing labs that may be down
+========================================================
+
+If a hardware farm is down and thus causing pipelines to fail that would otherwise pass, one can disable all jobs that would be submitted to that farm by editing the file at https://gitlab.freedesktop.org/gfx-ci/lab-status/-/blob/main/lab-status.yml.
diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt b/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
new file mode 100644
index 000000000000..39bbf5f22828
--- /dev/null
+++ b/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
@@ -0,0 +1,17 @@
+kms_bw@linear-tiling-1-displays-2560x1440p,Fail
+kms_bw@linear-tiling-1-displays-3840x2160p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_cursor_crc@pipe-A-cursor-size-change,Fail
+kms_cursor_crc@pipe-B-cursor-size-change,Fail
+kms_hdr@bpc-switch,Fail
+kms_hdr@bpc-switch-dpms,Fail
+kms_plane_multiple@atomic-pipe-A-tiling-none,Fail
+kms_rotation_crc@primary-rotation-180,Fail
+kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
+kms_async_flips@alternate-sync-async-flip,Fail
+kms_async_flips@async-flip-with-page-flip-events,Fail
+kms_async_flips@crc,Fail
+kms_async_flips@invalid-async-flip,Fail
+kms_async_flips@test-cursor,Fail
+kms_async_flips@test-time-stamp,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt b/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
new file mode 100644
index 000000000000..a2cbc339838c
--- /dev/null
+++ b/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
@@ -0,0 +1,20 @@
+kms_addfb_basic@too-high
+kms_atomic_transition@plane-all-modeset-transition-internal-panels
+kms_atomic_transition@plane-all-transition
+kms_atomic_transition@plane-use-after-nonblocking-unbind
+kms_bw@linear-tiling-1-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
+kms_cursor_edge_walk@pipe-A-64x64-right-edge
+kms_cursor_edge_walk@pipe-A-64x64-top-edge
+kms_cursor_edge_walk@pipe-B-64x64-bottom-edge
+kms_cursor_edge_walk@pipe-B-64x64-left-edge
+kms_cursor_edge_walk@pipe-B-64x64-right-edge
+kms_cursor_edge_walk@pipe-B-64x64-top-edge
+kms_plane_multiple@atomic-pipe-B-tiling-none
+kms_plane@pixel-format
+kms_plane_scaling@downscale-with-rotation-factor-0-5
+kms_universal_plane@disable-primary-vs-flip-pipe-A
diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt b/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml
new file mode 100644
index 000000000000..e36e457d8017
--- /dev/null
+++ b/drivers/gpu/drm/ci/gitlab-ci.yml
@@ -0,0 +1,13 @@
+variables:
+  # Change this to use your fork of drm-ci
+  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
+  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha 00aff4ab1923ac6fda7c984d74f9e67b2d627727
+
+  UPSTREAM_REPO: git://anongit.freedesktop.org/drm/drm
+  TARGET_BRANCH: drm-next
+
+include:
+  - project: *drm-ci-project-path
+    ref: *drm-ci-commit-sha
+    file:
+      - '.gitlab-ci.yml'
diff --git a/drivers/gpu/drm/ci/i915-amly-flakes.txt b/drivers/gpu/drm/ci/i915-amly-flakes.txt
new file mode 100644
index 000000000000..67d78f10b671
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-amly-flakes.txt
@@ -0,0 +1,32 @@
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-2560x1440p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-A-constant-alpha-max
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-C-constant-alpha-max
+kms_sysfs_edid_timing
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-amly-skips.txt b/drivers/gpu/drm/ci/i915-amly-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-amly-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-apl-fails.txt b/drivers/gpu/drm/ci/i915-apl-fails.txt
new file mode 100644
index 000000000000..a077f29d5cba
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-apl-fails.txt
@@ -0,0 +1,29 @@
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_bw@linear-tiling-4-displays-1920x1080p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-3840x2160p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
+kms_sysfs_edid_timing,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-apl-flakes.txt b/drivers/gpu/drm/ci/i915-apl-flakes.txt
new file mode 100644
index 000000000000..618bbe6bb793
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-apl-flakes.txt
@@ -0,0 +1 @@
+kms_frontbuffer_tracking@fbc-tiling-linear
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-apl-skips.txt b/drivers/gpu/drm/ci/i915-apl-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-apl-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-cml-flakes.txt b/drivers/gpu/drm/ci/i915-cml-flakes.txt
new file mode 100644
index 000000000000..a214419c6dc5
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-cml-flakes.txt
@@ -0,0 +1,36 @@
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-2560x1440p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip@flip-vs-suspend
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
+kms_hdr@bpc-switch-suspend
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-A-constant-alpha-max
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-C-constant-alpha-max
+kms_psr2_su@page_flip-NV12
+kms_psr2_su@page_flip-P010
+kms_setmode@basic
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-glk-flakes.txt b/drivers/gpu/drm/ci/i915-glk-flakes.txt
new file mode 100644
index 000000000000..aedb3d2ef885
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-glk-flakes.txt
@@ -0,0 +1,40 @@
+kms_bw@linear-tiling-1-displays-3840x2160p
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-2560x1440p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip@blocking-wf_vblank
+kms_flip@wf_vblank-ts-check
+kms_flip@wf_vblank-ts-check-interruptible
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
+kms_frontbuffer_tracking@fbc-tiling-linear
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-A-constant-alpha-max
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-C-constant-alpha-max
+kms_rotation_crc@multiplane-rotation
+kms_rotation_crc@multiplane-rotation-cropping-bottom
+kms_rotation_crc@multiplane-rotation-cropping-top
+kms_setmode@basic
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-glk-skips.txt b/drivers/gpu/drm/ci/i915-glk-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-glk-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-kbl-fails.txt b/drivers/gpu/drm/ci/i915-kbl-fails.txt
new file mode 100644
index 000000000000..f81f065e27e8
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-kbl-fails.txt
@@ -0,0 +1,8 @@
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-kbl-flakes.txt b/drivers/gpu/drm/ci/i915-kbl-flakes.txt
new file mode 100644
index 000000000000..f82017654cf5
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-kbl-flakes.txt
@@ -0,0 +1,24 @@
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_sysfs_edid_timing
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-kbl-skips.txt b/drivers/gpu/drm/ci/i915-kbl-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-kbl-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-tgl-fails.txt b/drivers/gpu/drm/ci/i915-tgl-fails.txt
new file mode 100644
index 000000000000..270644ce220c
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-tgl-fails.txt
@@ -0,0 +1,19 @@
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_bw@linear-tiling-4-displays-1920x1080p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-3840x2160p,Fail
+kms_bw@linear-tiling-5-displays-1920x1080p,Fail
+kms_bw@linear-tiling-5-displays-2560x1440p,Fail
+kms_bw@linear-tiling-5-displays-3840x2160p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_rotation_crc@bad-pixel-format,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-tgl-flakes.txt b/drivers/gpu/drm/ci/i915-tgl-flakes.txt
new file mode 100644
index 000000000000..15fba77ff19d
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-tgl-flakes.txt
@@ -0,0 +1,6 @@
+kms_draw_crc@draw-method-rgb565-blt-untiled
+kms_draw_crc@draw-method-xrgb8888-mmap-gtt-untiled
+kms_draw_crc@draw-method-xrgb8888-mmap-gtt-xtiled
+kms_flip@blocking-absolute-wf_vblank
+kms_flip@bo-too-big-interruptible
+kms_flip@flip-vs-rmfb-interruptible
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-tgl-skips.txt b/drivers/gpu/drm/ci/i915-tgl-skips.txt
new file mode 100644
index 000000000000..14f33c7ba03b
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-tgl-skips.txt
@@ -0,0 +1,8 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# GPU hangs, then the whole machine
+gem_eio.*
+
+# Whole machine hangs
+kms_flip@absolute-wf_vblank@a-edp1
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-whl-fails.txt b/drivers/gpu/drm/ci/i915-whl-fails.txt
new file mode 100644
index 000000000000..dbfedfa5d63f
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-whl-fails.txt
@@ -0,0 +1,30 @@
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_bw@linear-tiling-4-displays-1920x1080p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-3840x2160p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_frontbuffer_tracking@fbc-tiling-linear,Fail
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
+kms_sysfs_edid_timing,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-whl-flakes.txt b/drivers/gpu/drm/ci/i915-whl-flakes.txt
new file mode 100644
index 000000000000..6bcac5b84fbb
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-whl-flakes.txt
@@ -0,0 +1 @@
+kms_flip@flip-vs-suspend
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt b/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
new file mode 100644
index 000000000000..7f74fb9afc99
--- /dev/null
+++ b/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
@@ -0,0 +1,29 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_bw@linear-tiling-1-displays-1920x1080p,Fail
+kms_bw@linear-tiling-1-displays-2560x1440p,Fail
+kms_bw@linear-tiling-1-displays-3840x2160p,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
+kms_color@pipe-B-invalid-gamma-lut-sizes,Fail
+kms_force_connector_basic@force-connector-state,Fail
+kms_force_connector_basic@force-edid,Fail
+kms_force_connector_basic@force-load-detect,Fail
+kms_force_connector_basic@prune-stale-modes,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_plane_scaling@planes-upscale-20x20,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
+kms_plane_scaling@upscale-with-modifier-20x20,Fail
+kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_properties@get_properties-sanity-atomic,Fail
+kms_properties@plane-properties-atomic,Fail
+kms_properties@plane-properties-legacy,Fail
+kms_rmfb@close-fd,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt b/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
new file mode 100644
index 000000000000..6ff81d00e84e
--- /dev/null
+++ b/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
@@ -0,0 +1,10 @@
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_bw@linear-tiling-1-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_rmfb@close-fd,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt b/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
new file mode 100644
index 000000000000..208890b79eb0
--- /dev/null
+++ b/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
@@ -0,0 +1,14 @@
+core_setmaster_vs_auth
+kms_bw@linear-tiling-1-displays-1920x1080p
+kms_bw@linear-tiling-1-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_cursor_legacy@cursor-vs-flip-atomic
+kms_plane_scaling@invalid-num-scalers
+kms_plane_scaling@planes-upscale-20x20
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5
+kms_plane_scaling@upscale-with-modifier-20x20
+kms_plane_scaling@upscale-with-pixel-format-20x20
+kms_prop_blob@invalid-set-prop-any
+kms_properties@get_properties-sanity-atomic
+kms_properties@plane-properties-atomic
+kms_properties@plane-properties-legacy
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/meson-g12b-fails.txt b/drivers/gpu/drm/ci/meson-g12b-fails.txt
new file mode 100644
index 000000000000..345e1426b3a3
--- /dev/null
+++ b/drivers/gpu/drm/ci/meson-g12b-fails.txt
@@ -0,0 +1,5 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_properties@connector-properties-atomic,Fail
+kms_properties@get_properties-sanity-atomic,Fail
+kms_properties@get_properties-sanity-non-atomic,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/meson-g12b-flakes.txt b/drivers/gpu/drm/ci/meson-g12b-flakes.txt
new file mode 100644
index 000000000000..b63329d06767
--- /dev/null
+++ b/drivers/gpu/drm/ci/meson-g12b-flakes.txt
@@ -0,0 +1,4 @@
+kms_force_connector_basic@force-connector-state
+kms_force_connector_basic@force-edid
+kms_force_connector_basic@force-load-detect
+kms_force_connector_basic@prune-stale-modes
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/msm-apq8016-fails.txt b/drivers/gpu/drm/ci/msm-apq8016-fails.txt
new file mode 100644
index 000000000000..16c2dfab3f16
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-apq8016-fails.txt
@@ -0,0 +1,15 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_cursor_legacy@all-pipes-forked-move,Fail
+kms_cursor_legacy@all-pipes-torture-bo,Fail
+kms_cursor_legacy@all-pipes-forked-bo,Fail
+kms_cursor_legacy@all-pipes-single-bo,Fail
+kms_cursor_legacy@all-pipes-single-move,Fail
+kms_cursor_legacy@all-pipes-torture-move,Fail
+kms_cursor_legacy@pipe-A-forked-bo,Fail
+kms_cursor_legacy@pipe-A-forked-move,Fail
+kms_cursor_legacy@pipe-A-single-bo,Fail
+kms_cursor_legacy@pipe-A-single-move,Fail
+kms_cursor_legacy@pipe-A-torture-bo,Fail
+kms_cursor_legacy@pipe-A-torture-move,Fail
+kms_hdmi_inject@inject-4k,Fail
diff --git a/drivers/gpu/drm/ci/msm-apq8016-flakes.txt b/drivers/gpu/drm/ci/msm-apq8016-flakes.txt
new file mode 100644
index 000000000000..b63329d06767
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-apq8016-flakes.txt
@@ -0,0 +1,4 @@
+kms_force_connector_basic@force-connector-state
+kms_force_connector_basic@force-edid
+kms_force_connector_basic@force-load-detect
+kms_force_connector_basic@prune-stale-modes
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/msm-apq8096-fails.txt b/drivers/gpu/drm/ci/msm-apq8096-fails.txt
new file mode 100644
index 000000000000..88a1fc0a3b0d
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-apq8096-fails.txt
@@ -0,0 +1,2 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
diff --git a/drivers/gpu/drm/ci/msm-apq8096-flakes.txt b/drivers/gpu/drm/ci/msm-apq8096-flakes.txt
new file mode 100644
index 000000000000..b63329d06767
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-apq8096-flakes.txt
@@ -0,0 +1,4 @@
+kms_force_connector_basic@force-connector-state
+kms_force_connector_basic@force-edid
+kms_force_connector_basic@force-load-detect
+kms_force_connector_basic@prune-stale-modes
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/msm-apq8096-skips.txt b/drivers/gpu/drm/ci/msm-apq8096-skips.txt
new file mode 100644
index 000000000000..cd49c8ce2059
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-apq8096-skips.txt
@@ -0,0 +1,2 @@
+# Whole machine hangs
+kms_cursor_legacy@all-pipes-torture-move
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/msm-sc7180-fails.txt b/drivers/gpu/drm/ci/msm-sc7180-fails.txt
new file mode 100644
index 000000000000..0b159b6469c8
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-sc7180-fails.txt
@@ -0,0 +1,22 @@
+kms_cursor_legacy@cursor-vs-flip-toggle,Fail
+kms_cursor_legacy@cursorA-vs-flipA-atomic-transitions,Crash
+kms_plane@pixel-format,Fail
+kms_plane@pixel-format-source-clamping,Fail
+kms_plane@plane-position-covered,Fail
+kms_plane@plane-position-hole,Fail
+kms_plane@plane-position-hole-dpms,Fail
+kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
+kms_plane_alpha_blend@pipe-B-alpha-7efc,Fail
+kms_plane_alpha_blend@pipe-B-alpha-basic,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-mid,Fail
+kms_plane_alpha_blend@pipe-B-coverage-7efc,Fail
+kms_plane_alpha_blend@pipe-B-coverage-vs-premult-vs-constant,Fail
+kms_plane_multiple@atomic-pipe-A-tiling-none,Crash
+kms_rmfb@close-fd,Fail
+kms_rotation_crc@primary-rotation-180,Fail
+kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
+kms_universal_plane@disable-primary-vs-flip-pipe-b,Fail
diff --git a/drivers/gpu/drm/ci/msm-sc7180-flakes.txt b/drivers/gpu/drm/ci/msm-sc7180-flakes.txt
new file mode 100644
index 000000000000..6022edace190
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-sc7180-flakes.txt
@@ -0,0 +1,14 @@
+# Test ends up reading CRC from frame before cursor update
+# sometimes.. tbd if this is a kernel CRC bug or a test
+# bug
+kms_cursor_crc@pipe-.*
+
+kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
+kms_cursor_edge_walk@pipe-A-64x64-left-edge
+kms_cursor_edge_walk@pipe-A-64x64-right-edge
+kms_cursor_edge_walk@pipe-A-64x64-top-edge
+kms_cursor_edge_walk@pipe-B-64x64-bottom-edge
+kms_cursor_edge_walk@pipe-B-64x64-left-edge
+kms_cursor_edge_walk@pipe-B-64x64-right-edge
+kms_cursor_edge_walk@pipe-B-64x64-top-edge
+kms_plane_multiple@atomic-pipe-A-tiling-none
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/msm-sc7180-skips.txt b/drivers/gpu/drm/ci/msm-sc7180-skips.txt
new file mode 100644
index 000000000000..40916ddff81f
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-sc7180-skips.txt
@@ -0,0 +1,18 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# Test incorrectly assumes that CTM support implies gamma/degamma
+# LUT support.  None of the subtests handle the case of only having
+# CTM support
+kms_color.*
+
+# 4k@60 is not supported on this hw, but driver doesn't handle it
+# too gracefully.. https://gitlab.freedesktop.org/drm/msm/-/issues/15
+kms_bw@linear-tiling-.*-displays-3840x2160p
+
+# Until igt fix lands: https://patchwork.freedesktop.org/patch/493175/
+kms_bw@linear-tiling-2.*
+kms_bw@linear-tiling-3.*
+kms_bw@linear-tiling-4.*
+kms_bw@linear-tiling-5.*
+kms_bw@linear-tiling-6.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/msm-sdm845-fails.txt b/drivers/gpu/drm/ci/msm-sdm845-fails.txt
new file mode 100644
index 000000000000..8133927a44df
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-sdm845-fails.txt
@@ -0,0 +1,44 @@
+kms_color@pipe-A-ctm-0-25,Fail
+kms_color@pipe-A-ctm-0-5,Fail
+kms_color@pipe-A-ctm-0-75,Fail
+kms_color@pipe-A-ctm-blue-to-red,Fail
+kms_color@pipe-A-ctm-green-to-red,Fail
+kms_color@pipe-A-ctm-max,Fail
+kms_color@pipe-A-ctm-negative,Fail
+kms_color@pipe-A-ctm-red-to-blue,Fail
+kms_color@pipe-A-legacy-gamma,Fail
+kms_cursor_legacy@basic-flip-after-cursor-atomic,Fail
+kms_cursor_legacy@basic-flip-after-cursor-legacy,Fail
+kms_cursor_legacy@basic-flip-before-cursor-atomic,Fail
+kms_cursor_legacy@basic-flip-before-cursor-legacy,Fail
+kms_cursor_legacy@cursor-vs-flip-atomic,Fail
+kms_cursor_legacy@cursor-vs-flip-atomic-transitions,Fail
+kms_cursor_legacy@cursor-vs-flip-legacy,Fail
+kms_cursor_legacy@cursor-vs-flip-toggle,Fail
+kms_cursor_legacy@flip-vs-cursor-atomic,Fail
+kms_cursor_legacy@flip-vs-cursor-crc-atomic,Fail
+kms_cursor_legacy@flip-vs-cursor-crc-legacy,Fail
+kms_cursor_legacy@flip-vs-cursor-legacy,Fail
+kms_cursor_legacy@short-flip-after-cursor-atomic-transitions,Fail
+kms_cursor_legacy@short-flip-after-cursor-toggle,Fail
+kms_cursor_legacy@short-flip-before-cursor-atomic-transitions,Fail
+kms_cursor_legacy@short-flip-before-cursor-toggle,Fail
+kms_plane@pixel-format,Fail
+kms_plane@pixel-format-source-clamping,Fail
+kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
+kms_plane_cursor@pipe-A-overlay-size-128,Fail
+kms_plane_cursor@pipe-A-overlay-size-256,Fail
+kms_plane_cursor@pipe-A-overlay-size-64,Fail
+kms_plane_cursor@pipe-A-viewport-size-128,Fail
+kms_plane_cursor@pipe-A-viewport-size-256,Fail
+kms_plane_cursor@pipe-A-viewport-size-64,Fail
+kms_plane_scaling@downscale-with-pixel-format-factor-0-25,Timeout
+kms_plane_scaling@downscale-with-pixel-format-factor-0-5,Timeout
+kms_plane_scaling@downscale-with-pixel-format-factor-0-75,Timeout
+kms_plane_scaling@invalid-num-scalers,Fail
+kms_plane_scaling@planes-downscale-factor-0-25,Fail
+kms_plane_scaling@scaler-with-clipping-clamping,Timeout
+kms_plane_scaling@scaler-with-pixel-format-unity-scaling,Timeout
+kms_rmfb@close-fd,Fail
diff --git a/drivers/gpu/drm/ci/msm-sdm845-flakes.txt b/drivers/gpu/drm/ci/msm-sdm845-flakes.txt
new file mode 100644
index 000000000000..da4406b74828
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-sdm845-flakes.txt
@@ -0,0 +1,33 @@
+# Test ends up reading CRC from frame before cursor update
+# sometimes.. tbd if this is a kernel CRC bug or a test
+# bug
+kms_cursor_crc@pipe-A-cursor-alpha-opaque
+kms_cursor_crc@pipe-A-cursor-dpms
+kms_cursor_crc@pipe-A-cursor-size-change
+kms_cursor_legacy@flip-vs-cursor-toggle
+kms_cursor_legacy@pipe-A-forked-bo
+kms_cursor_legacy@pipe-A-forked-move
+kms_cursor_crc@pipe-A-cursor-32x10-offscreen
+kms_cursor_crc@pipe-A-cursor-32x10-onscreen
+kms_cursor_crc@pipe-A-cursor-32x10-random
+kms_cursor_crc@pipe-A-cursor-32x10-sliding
+kms_cursor_crc@pipe-A-cursor-32x32-offscreen
+kms_cursor_crc@pipe-A-cursor-32x32-onscreen
+kms_cursor_crc@pipe-A-cursor-32x32-random
+kms_cursor_crc@pipe-A-cursor-32x32-sliding
+kms_cursor_crc@pipe-A-cursor-64x21-offscreen
+kms_cursor_crc@pipe-A-cursor-64x21-onscreen
+kms_cursor_crc@pipe-A-cursor-64x21-random
+kms_cursor_crc@pipe-A-cursor-64x21-sliding
+kms_cursor_crc@pipe-A-cursor-64x64-offscreen
+kms_cursor_crc@pipe-A-cursor-64x64-onscreen
+kms_cursor_crc@pipe-A-cursor-64x64-random
+kms_cursor_crc@pipe-A-cursor-64x64-sliding
+kms_cursor_crc@pipe-A-cursor-dpms
+kms_cursor_crc@pipe-A-cursor-suspend
+kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
+kms_cursor_edge_walk@pipe-A-64x64-left-edge
+kms_cursor_edge_walk@pipe-A-64x64-right-edge
+kms_cursor_edge_walk@pipe-A-64x64-top-edge
+
+kms_flip@dpms-vs-vblank-race-interruptible
diff --git a/drivers/gpu/drm/ci/msm-sdm845-skips.txt b/drivers/gpu/drm/ci/msm-sdm845-skips.txt
new file mode 100644
index 000000000000..42675f1c6d76
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-sdm845-skips.txt
@@ -0,0 +1,2 @@
+# Hangs machine
+kms_bw.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt b/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
new file mode 100644
index 000000000000..e2a264647a58
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
@@ -0,0 +1,75 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_cursor_crc@pipe-A-cursor-32x10-onscreen,Fail
+kms_cursor_crc@pipe-A-cursor-32x10-random,Fail
+kms_cursor_crc@pipe-A-cursor-32x10-sliding,Fail
+kms_cursor_crc@pipe-A-cursor-32x32-onscreen,Fail
+kms_cursor_crc@pipe-A-cursor-32x32-random,Fail
+kms_cursor_crc@pipe-A-cursor-32x32-sliding,Fail
+kms_cursor_crc@pipe-A-cursor-64x21-onscreen,Fail
+kms_cursor_crc@pipe-A-cursor-64x21-random,Fail
+kms_cursor_crc@pipe-A-cursor-64x21-sliding,Fail
+kms_cursor_crc@pipe-A-cursor-64x64-onscreen,Fail
+kms_cursor_crc@pipe-A-cursor-64x64-random,Fail
+kms_cursor_crc@pipe-A-cursor-64x64-sliding,Fail
+kms_cursor_crc@pipe-A-cursor-alpha-opaque,Fail
+kms_cursor_crc@pipe-A-cursor-dpms,Fail
+kms_cursor_crc@pipe-A-cursor-size-change,Fail
+kms_cursor_crc@pipe-B-cursor-32x10-onscreen,Fail
+kms_cursor_crc@pipe-B-cursor-32x10-random,Fail
+kms_cursor_crc@pipe-B-cursor-32x10-sliding,Fail
+kms_cursor_crc@pipe-B-cursor-32x32-onscreen,Fail
+kms_cursor_crc@pipe-B-cursor-32x32-random,Fail
+kms_cursor_crc@pipe-B-cursor-32x32-sliding,Fail
+kms_cursor_crc@pipe-B-cursor-64x21-onscreen,Fail
+kms_cursor_crc@pipe-B-cursor-64x21-random,Fail
+kms_cursor_crc@pipe-B-cursor-64x64-onscreen,Fail
+kms_cursor_crc@pipe-B-cursor-64x64-random,Fail
+kms_cursor_crc@pipe-B-cursor-64x64-sliding,Fail
+kms_cursor_crc@pipe-B-cursor-alpha-opaque,Fail
+kms_cursor_crc@pipe-B-cursor-size-change,Fail
+kms_force_connector_basic@force-connector-state,Fail
+kms_force_connector_basic@force-edid,Fail
+kms_force_connector_basic@force-load-detect,Fail
+kms_force_connector_basic@prune-stale-modes,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_pipe_crc_basic@nonblocking-crc-pipe-A-frame-sequence,Fail
+kms_pipe_crc_basic@nonblocking-crc-pipe-B-frame-sequence,Fail
+kms_pipe_crc_basic@read-crc-pipe-A-frame-sequence,Fail
+kms_pipe_crc_basic@read-crc-pipe-B-frame-sequence,Fail
+kms_plane_cursor@pipe-A-overlay-size-128,Fail
+kms_plane_cursor@pipe-A-overlay-size-256,Fail
+kms_plane_cursor@pipe-A-overlay-size-64,Fail
+kms_plane_cursor@pipe-A-primary-size-128,Fail
+kms_plane_cursor@pipe-A-primary-size-256,Fail
+kms_plane_cursor@pipe-A-primary-size-64,Fail
+kms_plane_cursor@pipe-A-viewport-size-128,Fail
+kms_plane_cursor@pipe-A-viewport-size-256,Fail
+kms_plane_cursor@pipe-A-viewport-size-64,Fail
+kms_plane_cursor@pipe-B-overlay-size-128,Fail
+kms_plane_cursor@pipe-B-overlay-size-256,Fail
+kms_plane_cursor@pipe-B-overlay-size-64,Fail
+kms_plane_cursor@pipe-B-primary-size-128,Fail
+kms_plane_cursor@pipe-B-primary-size-256,Fail
+kms_plane_cursor@pipe-B-primary-size-64,Fail
+kms_plane_cursor@pipe-B-viewport-size-128,Fail
+kms_plane_cursor@pipe-B-viewport-size-256,Fail
+kms_plane_cursor@pipe-B-viewport-size-64,Fail
+kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
+kms_plane_scaling@upscale-with-modifier-20x20,Fail
+kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
+kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_prime@basic-crc,Fail
+kms_properties@connector-properties-atomic,Fail
+kms_properties@get_properties-sanity-atomic,Fail
+kms_properties@get_properties-sanity-non-atomic,Fail
+kms_rmfb@close-fd,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt b/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
new file mode 100644
index 000000000000..ab4effd9dc43
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
@@ -0,0 +1,9 @@
+kms_cursor_crc@pipe-A-cursor-32x10-offscreen
+kms_cursor_crc@pipe-B-cursor-dpms
+kms_cursor_edge_walk@pipe-A-64x64-left-edge
+kms_cursor_edge_walk@pipe-A-64x64-right-edge
+kms_cursor_edge_walk@pipe-A-64x64-top-edge
+kms_cursor_edge_walk@pipe-B-64x64-left-edge
+kms_cursor_edge_walk@pipe-B-64x64-right-edge
+kms_cursor_edge_walk@pipe-B-64x64-top-edge
+kms_pipe_crc_basic@disable-crc-after-crtc-pipe-B
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt b/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
new file mode 100644
index 000000000000..26f9a03fc074
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
@@ -0,0 +1,46 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# Too unstable, machine ends up hanging after lots of Oopses
+kms_cursor_legacy.*
+
+# Started hanging the machine on Linux 5.19-rc2:
+#
+# [IGT] kms_plane_lowres: executing
+# [IGT] kms_plane_lowres: starting subtest pipe-F-tiling-y
+# [IGT] kms_plane_lowres: exiting, ret=77
+# Console: switching to colour frame buffer device 170x48
+# rockchip-drm display-subsystem: [drm] *ERROR* flip_done timed out
+# rockchip-drm display-subsystem: [drm] *ERROR* [CRTC:35:crtc-0] commit wait timed out
+# BUG: spinlock bad magic on CPU#3, kms_plane_lowre/482
+# 8<--- cut here ---
+# Unable to handle kernel paging request at virtual address 7812078e
+# [7812078e] *pgd=00000000
+# Internal error: Oops: 5 [#1] SMP ARM
+# Modules linked in:
+# CPU: 3 PID: 482 Comm: kms_plane_lowre Tainted: G        W         5.19.0-rc2-323596-g00535de92171 #1
+# Hardware name: Rockchip (Device Tree)
+# Process kms_plane_lowre (pid: 482, stack limit = 0x1193ac2b)
+#  spin_dump from do_raw_spin_lock+0xa4/0xe8
+#  do_raw_spin_lock from wait_for_completion_timeout+0x2c/0x120
+#  wait_for_completion_timeout from drm_crtc_commit_wait+0x18/0x7c
+#  drm_crtc_commit_wait from drm_atomic_helper_wait_for_dependencies+0x44/0x168
+#  drm_atomic_helper_wait_for_dependencies from commit_tail+0x34/0x180
+#  commit_tail from drm_atomic_helper_commit+0x164/0x18c
+#  drm_atomic_helper_commit from drm_atomic_commit+0xac/0xe4
+#  drm_atomic_commit from drm_client_modeset_commit_atomic+0x23c/0x284
+#  drm_client_modeset_commit_atomic from drm_client_modeset_commit_locked+0x60/0x1c8
+#  drm_client_modeset_commit_locked from drm_client_modeset_commit+0x24/0x40
+#  drm_client_modeset_commit from drm_fbdev_client_restore+0x58/0x94
+#  drm_fbdev_client_restore from drm_client_dev_restore+0x70/0xbc
+#  drm_client_dev_restore from drm_release+0xf4/0x114
+#  drm_release from __fput+0x74/0x240
+#  __fput from task_work_run+0x84/0xb4
+#  task_work_run from do_exit+0x34c/0xa20
+#  do_exit from do_group_exit+0x34/0x98
+#  do_group_exit from __wake_up_parent+0x0/0x18
+# Code: e595c008 12843d19 03e00000 03093168 (15940508) 
+# ---[ end trace 0000000000000000 ]---
+# note: kms_plane_lowre[482] exited with preempt_count 1
+# Fixing recursive fault but reboot is needed!
+kms_plane_lowres@pipe-F-tiling-y
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt b/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
new file mode 100644
index 000000000000..0f8afa7e2adc
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
@@ -0,0 +1,86 @@
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_color@pipe-A-legacy-gamma,Fail
+kms_color@pipe-B-legacy-gamma,Fail
+kms_cursor_crc@pipe-A-cursor-32x10-offscreen,Fail
+kms_cursor_crc@pipe-A-cursor-32x10-onscreen,Fail
+kms_cursor_crc@pipe-A-cursor-32x10-random,Fail
+kms_cursor_crc@pipe-A-cursor-32x10-rapid-movement,Fail
+kms_cursor_crc@pipe-A-cursor-32x10-sliding,Fail
+kms_cursor_crc@pipe-A-cursor-32x32-offscreen,Fail
+kms_cursor_crc@pipe-A-cursor-32x32-onscreen,Fail
+kms_cursor_crc@pipe-A-cursor-32x32-random,Fail
+kms_cursor_crc@pipe-A-cursor-32x32-rapid-movement,Fail
+kms_cursor_crc@pipe-A-cursor-32x32-sliding,Fail
+kms_cursor_crc@pipe-A-cursor-64x21-onscreen,Fail
+kms_cursor_crc@pipe-A-cursor-64x21-random,Fail
+kms_cursor_crc@pipe-A-cursor-64x21-sliding,Fail
+kms_cursor_crc@pipe-A-cursor-64x64-offscreen,Fail
+kms_cursor_crc@pipe-A-cursor-64x64-onscreen,Fail
+kms_cursor_crc@pipe-A-cursor-64x64-random,Fail
+kms_cursor_crc@pipe-A-cursor-64x64-rapid-movement,Fail
+kms_cursor_crc@pipe-A-cursor-64x64-sliding,Fail
+kms_cursor_crc@pipe-A-cursor-alpha-opaque,Fail
+kms_cursor_crc@pipe-A-cursor-alpha-transparent,Fail
+kms_cursor_crc@pipe-A-cursor-dpms,Fail
+kms_cursor_crc@pipe-A-cursor-size-change,Fail
+kms_cursor_crc@pipe-B-cursor-32x10-onscreen,Fail
+kms_cursor_crc@pipe-B-cursor-32x10-random,Fail
+kms_cursor_crc@pipe-B-cursor-32x10-rapid-movement,Fail
+kms_cursor_crc@pipe-B-cursor-32x10-sliding,Fail
+kms_cursor_crc@pipe-B-cursor-32x32-offscreen,Fail
+kms_cursor_crc@pipe-B-cursor-32x32-onscreen,Fail
+kms_cursor_crc@pipe-B-cursor-32x32-random,Fail
+kms_cursor_crc@pipe-B-cursor-32x32-rapid-movement,Fail
+kms_cursor_crc@pipe-B-cursor-32x32-sliding,Fail
+kms_cursor_crc@pipe-B-cursor-64x21-onscreen,Fail
+kms_cursor_crc@pipe-B-cursor-64x21-random,Fail
+kms_cursor_crc@pipe-B-cursor-64x21-rapid-movement,Fail
+kms_cursor_crc@pipe-B-cursor-64x64-offscreen,Fail
+kms_cursor_crc@pipe-B-cursor-64x64-onscreen,Fail
+kms_cursor_crc@pipe-B-cursor-64x64-random,Fail
+kms_cursor_crc@pipe-B-cursor-64x64-rapid-movement,Fail
+kms_cursor_crc@pipe-B-cursor-64x64-sliding,Fail
+kms_cursor_crc@pipe-B-cursor-alpha-opaque,Fail
+kms_cursor_crc@pipe-B-cursor-dpms,Fail
+kms_cursor_crc@pipe-B-cursor-size-change,Fail
+kms_cursor_edge_walk@pipe-A-64x64-bottom-edge,Fail
+kms_cursor_edge_walk@pipe-A-64x64-left-edge,Fail
+kms_cursor_edge_walk@pipe-A-64x64-top-edge,Fail
+kms_cursor_edge_walk@pipe-B-64x64-bottom-edge,Fail
+kms_cursor_edge_walk@pipe-B-64x64-right-edge,Fail
+kms_cursor_edge_walk@pipe-B-64x64-top-edge,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-A,Fail
+kms_pipe_crc_basic@nonblocking-crc-pipe-A,Fail
+kms_pipe_crc_basic@nonblocking-crc-pipe-A-frame-sequence,Fail
+kms_pipe_crc_basic@nonblocking-crc-pipe-B,Fail
+kms_pipe_crc_basic@nonblocking-crc-pipe-B-frame-sequence,Fail
+kms_pipe_crc_basic@read-crc-pipe-A,Fail
+kms_pipe_crc_basic@read-crc-pipe-A-frame-sequence,Fail
+kms_pipe_crc_basic@read-crc-pipe-B,Fail
+kms_pipe_crc_basic@read-crc-pipe-B-frame-sequence,Fail
+kms_plane@plane-panning-bottom-right,Fail
+kms_plane@plane-panning-top-left,Fail
+kms_plane_cursor@pipe-B-overlay-size-128,Fail
+kms_plane_cursor@pipe-B-overlay-size-256,Fail
+kms_plane_cursor@pipe-B-overlay-size-64,Fail
+kms_plane_cursor@pipe-B-primary-size-128,Fail
+kms_plane_cursor@pipe-B-primary-size-256,Fail
+kms_plane_cursor@pipe-B-primary-size-64,Fail
+kms_plane_cursor@pipe-B-viewport-size-128,Fail
+kms_plane_cursor@pipe-B-viewport-size-256,Fail
+kms_plane_cursor@pipe-B-viewport-size-64,Fail
+kms_plane_multiple@atomic-pipe-B-tiling-none,Fail
+kms_prime@basic-crc,Fail
+kms_rmfb@close-fd,Fail
+kms_universal_plane@universal-plane-pipe-B-functional,Fail
+kms_vblank@pipe-A-query-forked,Fail
+kms_vblank@pipe-A-query-idle,Fail
+kms_vblank@pipe-A-wait-busy,Fail
+kms_vblank@pipe-A-wait-forked,Fail
+kms_vblank@pipe-A-wait-forked-busy,Fail
+kms_vblank@pipe-B-query-forked,Fail
+kms_vblank@pipe-B-query-idle,Fail
+kms_vblank@pipe-B-wait-busy,Fail
+kms_vblank@pipe-B-wait-forked,Fail
+kms_vblank@pipe-B-wait-forked-busy,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt b/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
new file mode 100644
index 000000000000..de1258fc030b
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
@@ -0,0 +1,26 @@
+kms_cursor_crc@pipe-A-cursor-64x21-offscreen
+kms_cursor_crc@pipe-A-cursor-64x21-rapid-movement
+kms_cursor_crc@pipe-B-cursor-32x10-offscreen
+kms_cursor_crc@pipe-B-cursor-32x10-rapid-movement
+kms_cursor_crc@pipe-B-cursor-32x32-offscreen
+kms_cursor_crc@pipe-B-cursor-32x32-rapid-movement
+kms_cursor_crc@pipe-B-cursor-64x64-offscreen
+kms_cursor_crc@pipe-B-cursor-64x21-offscreen,Fail
+kms_cursor_crc@pipe-B-cursor-64x64-rapid-movement
+kms_cursor_edge_walk@pipe-A-64x64-right-edge
+kms_cursor_edge_walk@pipe-B-64x64-left-edge
+kms_flip@flip-vs-expired-vblank
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-B
+kms_plane_multiple@atomic-pipe-A-tiling-none
+kms_plane@plane-position-hole
+kms_sequence@get-forked
+kms_sequence@get-forked-busy
+kms_setmode@basic
+kms_vblank@pipe-A-accuracy-idle
+kms_vblank@pipe-A-query-busy
+kms_vblank@pipe-A-query-forked-busy
+kms_vblank@pipe-A-wait-idle
+kms_vblank@pipe-B-accuracy-idle
+kms_vblank@pipe-B-query-busy
+kms_vblank@pipe-B-query-forked-busy
+kms_vblank@pipe-B-wait-idle
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt b/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
new file mode 100644
index 000000000000..10c3d81a919a
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
@@ -0,0 +1,5 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# Too unstable, machine ends up hanging after lots of Oopses
+kms_cursor_legacy.*
diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt b/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
new file mode 100644
index 000000000000..2178bdd064dd
--- /dev/null
+++ b/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
@@ -0,0 +1,38 @@
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_addfb_basic@bad-pitch-65536,Fail
+kms_addfb_basic@bo-too-small,Fail
+kms_addfb_basic@size-max,Fail
+kms_addfb_basic@too-high,Fail
+kms_atomic_transition@plane-primary-toggle-with-vblank-wait,Fail
+kms_bw@linear-tiling-1-displays-1920x1080p,Fail
+kms_bw@linear-tiling-1-displays-2560x1440p,Fail
+kms_bw@linear-tiling-1-displays-3840x2160p,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
+kms_plane_scaling@planes-upscale-20x20,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
+kms_plane_scaling@upscale-with-modifier-20x20,Fail
+kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
+kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_vblank@crtc-id,Fail
+kms_vblank@invalid,Fail
+kms_vblank@pipe-A-accuracy-idle,Fail
+kms_vblank@pipe-A-query-busy,Fail
+kms_vblank@pipe-A-query-forked,Fail
+kms_vblank@pipe-A-query-forked-busy,Fail
+kms_vblank@pipe-A-query-idle,Fail
+kms_vblank@pipe-A-ts-continuation-idle,Fail
+kms_vblank@pipe-A-ts-continuation-modeset,Fail
+kms_vblank@pipe-A-ts-continuation-suspend,Fail
+kms_vblank@pipe-A-wait-busy,Fail
+kms_vblank@pipe-A-wait-forked,Fail
+kms_vblank@pipe-A-wait-forked-busy,Fail
+kms_vblank@pipe-A-wait-idle,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt b/drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt b/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt
new file mode 100644
index 000000000000..78be18174012
--- /dev/null
+++ b/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt
@@ -0,0 +1,6 @@
+# Hits a "refcount_t: underflow; use-after-free" in virtio_gpu_fence_event_process
+# When run in a particular order with other tests
+kms_cursor_legacy.*
+
+# Job just hangs without any output
+kms_flip@flip-vs-suspend.*
\ No newline at end of file
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 49+ messages in thread

* [PATCH v7] drm: Add initial ci/ subdirectory
  2022-08-16 15:37         ` [PATCH v6] " Tomeu Vizoso
@ 2022-08-29  9:31           ` Tomeu Vizoso
  2022-09-09 14:15             ` [PATCH v8] " Tomeu Vizoso
  0 siblings, 1 reply; 49+ messages in thread
From: Tomeu Vizoso @ 2022-08-29  9:31 UTC (permalink / raw)
  To: David Airlie, Jonathan Corbet, Carlo Caione, Kevin Hilman,
	Heiko Stuebner, Matthias Brugger, Rob Clark
  Cc: Tomeu Vizoso, linux-doc, Neil Armstrong, linux-kernel, dri-devel,
	linux-rockchip, linux-mediatek, linux-amlogic, kernel,
	linux-arm-kernel

And use it to store expectations about what the DRM drivers are
supposed to pass in the IGT test suite.

Also include a configuration file that points to the out-of-tree CI
scripts.

By storing the test expectations along the code we can make sure both
stay in sync with each other, and so we can know when a code change
breaks those expectations.

This will allow all contributors to drm to reuse the infrastructure
already in gitlab.freedesktop.org to test the driver on several
generations of the hardware.

v2:
  - Fix names of result expectation files to match SoC
  - Don't execute tests that are going to skip on all boards

v3:
  - Remove tracking of dmesg output during test execution

v4:
  - Move up to drivers/gpu/drm
  - Add support for a bunch of other drivers
  - Explain how to incorporate fixes for CI from a
    ${TARGET_BRANCH}-external-fixes branch
  - Remove tests that pass from expected results file, to reduce the
    size of in-tree files
  - Add docs about how to deal with outages in automated testing labs
  - Specify the exact SHA of the CI scripts to be used

v5:
  - Remove unneeded skips from Meson expectations file
  - Use a more advanced runner that detects flakes automatically
  - Use a more succint format for the expectations
  - Run many more tests (and use sharding to finish in time)
  - Use skip lists to avoid hanging machines
  - Add some build testing
  - Build IGT in each pipeline for faster uprevs
  - List failures in the GitLab UI

v6:
  - Rebase on top of latest drm-next
  - Lower priority of LAVA jobs to not impact Mesa CI as much
  - Update docs

v7:
  - Rebase on top of latest drm-next

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
Reviewed-by: Rob Clark <robdclark@gmail.com>
---
 Documentation/gpu/automated_testing.rst       | 86 +++++++++++++++++++
 drivers/gpu/drm/ci/amdgpu-stoney-fails.txt    | 19 ++++
 drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt   | 22 +++++
 drivers/gpu/drm/ci/amdgpu-stoney-skips.txt    |  2 +
 drivers/gpu/drm/ci/gitlab-ci.yml              | 13 +++
 drivers/gpu/drm/ci/i915-amly-flakes.txt       | 32 +++++++
 drivers/gpu/drm/ci/i915-amly-skips.txt        |  2 +
 drivers/gpu/drm/ci/i915-apl-fails.txt         | 29 +++++++
 drivers/gpu/drm/ci/i915-apl-flakes.txt        |  1 +
 drivers/gpu/drm/ci/i915-apl-skips.txt         |  2 +
 drivers/gpu/drm/ci/i915-cml-flakes.txt        | 36 ++++++++
 drivers/gpu/drm/ci/i915-glk-flakes.txt        | 40 +++++++++
 drivers/gpu/drm/ci/i915-glk-skips.txt         |  2 +
 drivers/gpu/drm/ci/i915-kbl-fails.txt         |  8 ++
 drivers/gpu/drm/ci/i915-kbl-flakes.txt        | 24 ++++++
 drivers/gpu/drm/ci/i915-kbl-skips.txt         |  2 +
 drivers/gpu/drm/ci/i915-tgl-fails.txt         | 19 ++++
 drivers/gpu/drm/ci/i915-tgl-flakes.txt        |  6 ++
 drivers/gpu/drm/ci/i915-tgl-skips.txt         |  8 ++
 drivers/gpu/drm/ci/i915-whl-fails.txt         | 30 +++++++
 drivers/gpu/drm/ci/i915-whl-flakes.txt        |  1 +
 drivers/gpu/drm/ci/mediatek-mt8173-fails.txt  | 29 +++++++
 drivers/gpu/drm/ci/mediatek-mt8183-fails.txt  | 10 +++
 drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt | 14 +++
 drivers/gpu/drm/ci/meson-g12b-fails.txt       |  5 ++
 drivers/gpu/drm/ci/meson-g12b-flakes.txt      |  4 +
 drivers/gpu/drm/ci/msm-apq8016-fails.txt      | 15 ++++
 drivers/gpu/drm/ci/msm-apq8016-flakes.txt     |  4 +
 drivers/gpu/drm/ci/msm-apq8096-fails.txt      |  2 +
 drivers/gpu/drm/ci/msm-apq8096-flakes.txt     |  4 +
 drivers/gpu/drm/ci/msm-apq8096-skips.txt      |  2 +
 drivers/gpu/drm/ci/msm-sc7180-fails.txt       | 21 +++++
 drivers/gpu/drm/ci/msm-sc7180-flakes.txt      | 14 +++
 drivers/gpu/drm/ci/msm-sc7180-skips.txt       | 23 +++++
 drivers/gpu/drm/ci/msm-sdm845-fails.txt       | 44 ++++++++++
 drivers/gpu/drm/ci/msm-sdm845-flakes.txt      | 14 +++
 drivers/gpu/drm/ci/msm-sdm845-skips.txt       |  2 +
 drivers/gpu/drm/ci/rockchip-rk3288-fails.txt  | 47 ++++++++++
 drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt |  9 ++
 drivers/gpu/drm/ci/rockchip-rk3288-skips.txt  | 46 ++++++++++
 drivers/gpu/drm/ci/rockchip-rk3399-fails.txt  | 44 ++++++++++
 drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt | 19 ++++
 drivers/gpu/drm/ci/rockchip-rk3399-skips.txt  |  5 ++
 drivers/gpu/drm/ci/virtio_gpu-none-fails.txt  | 38 ++++++++
 drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt |  0
 drivers/gpu/drm/ci/virtio_gpu-none-skips.txt  |  6 ++
 46 files changed, 805 insertions(+)
 create mode 100644 Documentation/gpu/automated_testing.rst
 create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
 create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
 create mode 100644 drivers/gpu/drm/ci/gitlab-ci.yml
 create mode 100644 drivers/gpu/drm/ci/i915-amly-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/i915-amly-skips.txt
 create mode 100644 drivers/gpu/drm/ci/i915-apl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/i915-apl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/i915-apl-skips.txt
 create mode 100644 drivers/gpu/drm/ci/i915-cml-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/i915-glk-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/i915-glk-skips.txt
 create mode 100644 drivers/gpu/drm/ci/i915-kbl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/i915-kbl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/i915-kbl-skips.txt
 create mode 100644 drivers/gpu/drm/ci/i915-tgl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/i915-tgl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/i915-tgl-skips.txt
 create mode 100644 drivers/gpu/drm/ci/i915-whl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/i915-whl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
 create mode 100644 drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
 create mode 100644 drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/meson-g12b-fails.txt
 create mode 100644 drivers/gpu/drm/ci/meson-g12b-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/msm-apq8016-fails.txt
 create mode 100644 drivers/gpu/drm/ci/msm-apq8016-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/msm-apq8096-fails.txt
 create mode 100644 drivers/gpu/drm/ci/msm-apq8096-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/msm-apq8096-skips.txt
 create mode 100644 drivers/gpu/drm/ci/msm-sc7180-fails.txt
 create mode 100644 drivers/gpu/drm/ci/msm-sc7180-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/msm-sc7180-skips.txt
 create mode 100644 drivers/gpu/drm/ci/msm-sdm845-fails.txt
 create mode 100644 drivers/gpu/drm/ci/msm-sdm845-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/msm-sdm845-skips.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
 create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
 create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/virtio_gpu-none-skips.txt

diff --git a/Documentation/gpu/automated_testing.rst b/Documentation/gpu/automated_testing.rst
new file mode 100644
index 000000000000..defee4f5a470
--- /dev/null
+++ b/Documentation/gpu/automated_testing.rst
@@ -0,0 +1,86 @@
+.. SPDX-License-Identifier: GPL-2.0+
+
+=========================================
+Automated testing of the DRM subsystem
+=========================================
+
+
+Introduction
+============
+
+Making sure that changes to the core or drivers don't introduce regressions can be very time-consuming when lots of different hardware configurations need to be tested. Moreover, it isn't practical for each person interested in this testing to have to acquire and maintain what can be a considerable amount of hardware.
+
+Also, it is desirable for developers to check for regressions in their code by themselves, instead of relying on the maintainers to find them and then reporting back.
+
+There are facilities in gitlab.freedesktop.org to automatically test Mesa that can be used as well for testing the DRM subsystem. This document explains how people interested in testing it can use this shared infrastructure to save quite some time and effort.
+
+
+Relevant files
+==============
+
+drivers/gpu/drm/ci/gitlab-ci.yml
+--------------------------------
+
+Specifies the specific version of the scripts to be used. GitLab CI will use the values defined in this file to fetch the right scripts.
+
+
+drivers/gpu/drm/ci/${DRIVER_NAME}_${HW_REVISION}_fails.txt
+----------------------------------------------------------
+
+Lists the known failures for a given driver on a specific hardware revision.
+
+drivers/gpu/drm/ci/${DRIVER_NAME}_${HW_REVISION}_flakes.txt
+-----------------------------------------------------------
+
+Lists the tests that for a given driver on a specific hardware revision are known to behave unreliably. These tests won't cause a job to fail regardless of the result. They will still be run.
+
+drivers/gpu/drm/ci/${DRIVER_NAME}_${HW_REVISION}_skips.txt
+-----------------------------------------------------------
+
+Lists the tests that won't be run for a given driver on a specific hardware revision. These are usually tests that interfere with the running of the test list due to hanging the machine, causing OOM, taking too long, etc.
+
+
+How to enable automated testing on your tree
+============================================
+
+1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one yet
+
+2. In your kernel repo's configuration (eg. https://gitlab.freedesktop.org/tomeu/linux/-/settings/ci_cd), change the CI/CD configuration file from .gitlab-ci.yml to drivers/gpu/drm/ci/gitlab-ci.yml.
+
+3. Next time you push to this repository, you will see a CI pipeline being created (eg. https://gitlab.freedesktop.org/tomeu/linux/-/pipelines)
+
+4. The various jobs will be run and when the pipeline is finished, all jobs should be green unless a regression has been found.
+
+
+How to update test expectations
+===============================
+
+If your changes to the code fix any tests, you will have to remove one or more lines from one or more of the files in drivers/gpu/drm/ci/${DRIVER_NAME}_*_fails.txt, for each of the test platforms affected by the change.
+
+
+How to expand coverage
+======================
+
+If your code changes make it possible to run more tests (by solving reliability issues, for example), you can remove tests from the flakes and/or skips lists, and then the expected results if there are any known failures.
+
+If there is a need for updating the version of IGT being used (maybe you have added more tests to it), follow the instructions at https://gitlab.freedesktop.org/gfx-ci/drm-ci/-/tree/main#upreving-igt.
+
+
+How to test your changes to the scripts
+=======================================
+
+For testing changes to the scripts in the drm-ci repo, change the DRM_CI_PROJECT_PATH and DRM_CI_COMMIT_SHA variables in drivers/gpu/drm/ci/gitlab-ci.yml to match your fork of the project (eg. tomeu/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
+
+
+How to incorporate external fixes in your testing
+=================================================
+
+Often, regressions in other trees will prevent testing changes local to the tree under test. These fixes will be automatically merged in during the build jobs from a branch in the target tree that is named as ${TARGET_BRANCH}-external-fixes.
+
+If the pipeline is not in a merge request and a branch with the same name exists in the local tree, commits from that branch will be merged in as well.
+
+
+How to deal with automated testing labs that may be down
+========================================================
+
+If a hardware farm is down and thus causing pipelines to fail that would otherwise pass, one can disable all jobs that would be submitted to that farm by editing the file at https://gitlab.freedesktop.org/gfx-ci/lab-status/-/blob/main/lab-status.yml.
diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt b/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
new file mode 100644
index 000000000000..b596e5bf5348
--- /dev/null
+++ b/drivers/gpu/drm/ci/amdgpu-stoney-fails.txt
@@ -0,0 +1,19 @@
+kms_bw@linear-tiling-1-displays-2560x1440p,Fail
+kms_bw@linear-tiling-1-displays-3840x2160p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_cursor_crc@pipe-A-cursor-size-change,Fail
+kms_cursor_crc@pipe-B-cursor-size-change,Fail
+kms_hdr@bpc-switch,Fail
+kms_hdr@bpc-switch-dpms,Fail
+kms_plane_multiple@atomic-pipe-A-tiling-none,Fail
+kms_rotation_crc@primary-rotation-180,Fail
+kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
+kms_async_flips@alternate-sync-async-flip,Fail
+kms_async_flips@async-flip-with-page-flip-events,Fail
+kms_async_flips@crc,Fail
+kms_async_flips@invalid-async-flip,Fail
+kms_async_flips@test-cursor,Fail
+kms_async_flips@test-time-stamp,Fail
+kms_addfb_basic@bad-pitch-65536,Fail
+kms_addfb_basic@bo-too-small,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt b/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
new file mode 100644
index 000000000000..f8efb3fd43e0
--- /dev/null
+++ b/drivers/gpu/drm/ci/amdgpu-stoney-flakes.txt
@@ -0,0 +1,22 @@
+kms_addfb_basic@too-high
+kms_atomic_transition@plane-all-modeset-transition-internal-panels
+kms_atomic_transition@plane-all-transition
+kms_atomic_transition@plane-use-after-nonblocking-unbind
+kms_bw@linear-tiling-1-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_cursor_crc@pipe-A-cursor-alpha-opaque
+kms_cursor_crc@pipe-B-cursor-alpha-opaque
+kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
+kms_cursor_edge_walk@pipe-A-64x64-right-edge
+kms_cursor_edge_walk@pipe-A-64x64-top-edge
+kms_cursor_edge_walk@pipe-B-64x64-bottom-edge
+kms_cursor_edge_walk@pipe-B-64x64-left-edge
+kms_cursor_edge_walk@pipe-B-64x64-right-edge
+kms_cursor_edge_walk@pipe-B-64x64-top-edge
+kms_plane_multiple@atomic-pipe-B-tiling-none
+kms_plane@pixel-format
+kms_plane_scaling@downscale-with-rotation-factor-0-5
+kms_universal_plane@disable-primary-vs-flip-pipe-A
diff --git a/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt b/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/amdgpu-stoney-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml
new file mode 100644
index 000000000000..c31e01d55e0f
--- /dev/null
+++ b/drivers/gpu/drm/ci/gitlab-ci.yml
@@ -0,0 +1,13 @@
+variables:
+  # Change this to use your fork of drm-ci
+  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
+  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha 49a26ec13b6c
+
+  UPSTREAM_REPO: git://anongit.freedesktop.org/drm/drm
+  TARGET_BRANCH: drm-next
+
+include:
+  - project: *drm-ci-project-path
+    ref: *drm-ci-commit-sha
+    file:
+      - '.gitlab-ci.yml'
diff --git a/drivers/gpu/drm/ci/i915-amly-flakes.txt b/drivers/gpu/drm/ci/i915-amly-flakes.txt
new file mode 100644
index 000000000000..67d78f10b671
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-amly-flakes.txt
@@ -0,0 +1,32 @@
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-2560x1440p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-A-constant-alpha-max
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-C-constant-alpha-max
+kms_sysfs_edid_timing
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-amly-skips.txt b/drivers/gpu/drm/ci/i915-amly-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-amly-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-apl-fails.txt b/drivers/gpu/drm/ci/i915-apl-fails.txt
new file mode 100644
index 000000000000..a077f29d5cba
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-apl-fails.txt
@@ -0,0 +1,29 @@
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_bw@linear-tiling-4-displays-1920x1080p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-3840x2160p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
+kms_sysfs_edid_timing,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-apl-flakes.txt b/drivers/gpu/drm/ci/i915-apl-flakes.txt
new file mode 100644
index 000000000000..618bbe6bb793
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-apl-flakes.txt
@@ -0,0 +1 @@
+kms_frontbuffer_tracking@fbc-tiling-linear
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-apl-skips.txt b/drivers/gpu/drm/ci/i915-apl-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-apl-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-cml-flakes.txt b/drivers/gpu/drm/ci/i915-cml-flakes.txt
new file mode 100644
index 000000000000..a214419c6dc5
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-cml-flakes.txt
@@ -0,0 +1,36 @@
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-2560x1440p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip@flip-vs-suspend
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
+kms_hdr@bpc-switch-suspend
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-A-constant-alpha-max
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-C-constant-alpha-max
+kms_psr2_su@page_flip-NV12
+kms_psr2_su@page_flip-P010
+kms_setmode@basic
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-glk-flakes.txt b/drivers/gpu/drm/ci/i915-glk-flakes.txt
new file mode 100644
index 000000000000..aedb3d2ef885
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-glk-flakes.txt
@@ -0,0 +1,40 @@
+kms_bw@linear-tiling-1-displays-3840x2160p
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-2560x1440p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip@blocking-wf_vblank
+kms_flip@wf_vblank-ts-check
+kms_flip@wf_vblank-ts-check-interruptible
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
+kms_frontbuffer_tracking@fbc-tiling-linear
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-A-constant-alpha-max
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-C-constant-alpha-max
+kms_rotation_crc@multiplane-rotation
+kms_rotation_crc@multiplane-rotation-cropping-bottom
+kms_rotation_crc@multiplane-rotation-cropping-top
+kms_setmode@basic
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-glk-skips.txt b/drivers/gpu/drm/ci/i915-glk-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-glk-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-kbl-fails.txt b/drivers/gpu/drm/ci/i915-kbl-fails.txt
new file mode 100644
index 000000000000..f81f065e27e8
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-kbl-fails.txt
@@ -0,0 +1,8 @@
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-kbl-flakes.txt b/drivers/gpu/drm/ci/i915-kbl-flakes.txt
new file mode 100644
index 000000000000..f82017654cf5
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-kbl-flakes.txt
@@ -0,0 +1,24 @@
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_sysfs_edid_timing
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-kbl-skips.txt b/drivers/gpu/drm/ci/i915-kbl-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-kbl-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-tgl-fails.txt b/drivers/gpu/drm/ci/i915-tgl-fails.txt
new file mode 100644
index 000000000000..270644ce220c
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-tgl-fails.txt
@@ -0,0 +1,19 @@
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_bw@linear-tiling-4-displays-1920x1080p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-3840x2160p,Fail
+kms_bw@linear-tiling-5-displays-1920x1080p,Fail
+kms_bw@linear-tiling-5-displays-2560x1440p,Fail
+kms_bw@linear-tiling-5-displays-3840x2160p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_rotation_crc@bad-pixel-format,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-tgl-flakes.txt b/drivers/gpu/drm/ci/i915-tgl-flakes.txt
new file mode 100644
index 000000000000..15fba77ff19d
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-tgl-flakes.txt
@@ -0,0 +1,6 @@
+kms_draw_crc@draw-method-rgb565-blt-untiled
+kms_draw_crc@draw-method-xrgb8888-mmap-gtt-untiled
+kms_draw_crc@draw-method-xrgb8888-mmap-gtt-xtiled
+kms_flip@blocking-absolute-wf_vblank
+kms_flip@bo-too-big-interruptible
+kms_flip@flip-vs-rmfb-interruptible
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-tgl-skips.txt b/drivers/gpu/drm/ci/i915-tgl-skips.txt
new file mode 100644
index 000000000000..14f33c7ba03b
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-tgl-skips.txt
@@ -0,0 +1,8 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# GPU hangs, then the whole machine
+gem_eio.*
+
+# Whole machine hangs
+kms_flip@absolute-wf_vblank@a-edp1
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-whl-fails.txt b/drivers/gpu/drm/ci/i915-whl-fails.txt
new file mode 100644
index 000000000000..dbfedfa5d63f
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-whl-fails.txt
@@ -0,0 +1,30 @@
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_bw@linear-tiling-4-displays-1920x1080p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-3840x2160p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_frontbuffer_tracking@fbc-tiling-linear,Fail
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
+kms_sysfs_edid_timing,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/i915-whl-flakes.txt b/drivers/gpu/drm/ci/i915-whl-flakes.txt
new file mode 100644
index 000000000000..6bcac5b84fbb
--- /dev/null
+++ b/drivers/gpu/drm/ci/i915-whl-flakes.txt
@@ -0,0 +1 @@
+kms_flip@flip-vs-suspend
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt b/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
new file mode 100644
index 000000000000..7f74fb9afc99
--- /dev/null
+++ b/drivers/gpu/drm/ci/mediatek-mt8173-fails.txt
@@ -0,0 +1,29 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_bw@linear-tiling-1-displays-1920x1080p,Fail
+kms_bw@linear-tiling-1-displays-2560x1440p,Fail
+kms_bw@linear-tiling-1-displays-3840x2160p,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
+kms_color@pipe-B-invalid-gamma-lut-sizes,Fail
+kms_force_connector_basic@force-connector-state,Fail
+kms_force_connector_basic@force-edid,Fail
+kms_force_connector_basic@force-load-detect,Fail
+kms_force_connector_basic@prune-stale-modes,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_plane_scaling@planes-upscale-20x20,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
+kms_plane_scaling@upscale-with-modifier-20x20,Fail
+kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_properties@get_properties-sanity-atomic,Fail
+kms_properties@plane-properties-atomic,Fail
+kms_properties@plane-properties-legacy,Fail
+kms_rmfb@close-fd,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt b/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
new file mode 100644
index 000000000000..6ff81d00e84e
--- /dev/null
+++ b/drivers/gpu/drm/ci/mediatek-mt8183-fails.txt
@@ -0,0 +1,10 @@
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_bw@linear-tiling-1-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_rmfb@close-fd,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt b/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
new file mode 100644
index 000000000000..208890b79eb0
--- /dev/null
+++ b/drivers/gpu/drm/ci/mediatek-mt8183-flakes.txt
@@ -0,0 +1,14 @@
+core_setmaster_vs_auth
+kms_bw@linear-tiling-1-displays-1920x1080p
+kms_bw@linear-tiling-1-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_cursor_legacy@cursor-vs-flip-atomic
+kms_plane_scaling@invalid-num-scalers
+kms_plane_scaling@planes-upscale-20x20
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5
+kms_plane_scaling@upscale-with-modifier-20x20
+kms_plane_scaling@upscale-with-pixel-format-20x20
+kms_prop_blob@invalid-set-prop-any
+kms_properties@get_properties-sanity-atomic
+kms_properties@plane-properties-atomic
+kms_properties@plane-properties-legacy
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/meson-g12b-fails.txt b/drivers/gpu/drm/ci/meson-g12b-fails.txt
new file mode 100644
index 000000000000..345e1426b3a3
--- /dev/null
+++ b/drivers/gpu/drm/ci/meson-g12b-fails.txt
@@ -0,0 +1,5 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_properties@connector-properties-atomic,Fail
+kms_properties@get_properties-sanity-atomic,Fail
+kms_properties@get_properties-sanity-non-atomic,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/meson-g12b-flakes.txt b/drivers/gpu/drm/ci/meson-g12b-flakes.txt
new file mode 100644
index 000000000000..b63329d06767
--- /dev/null
+++ b/drivers/gpu/drm/ci/meson-g12b-flakes.txt
@@ -0,0 +1,4 @@
+kms_force_connector_basic@force-connector-state
+kms_force_connector_basic@force-edid
+kms_force_connector_basic@force-load-detect
+kms_force_connector_basic@prune-stale-modes
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/msm-apq8016-fails.txt b/drivers/gpu/drm/ci/msm-apq8016-fails.txt
new file mode 100644
index 000000000000..16c2dfab3f16
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-apq8016-fails.txt
@@ -0,0 +1,15 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_cursor_legacy@all-pipes-forked-move,Fail
+kms_cursor_legacy@all-pipes-torture-bo,Fail
+kms_cursor_legacy@all-pipes-forked-bo,Fail
+kms_cursor_legacy@all-pipes-single-bo,Fail
+kms_cursor_legacy@all-pipes-single-move,Fail
+kms_cursor_legacy@all-pipes-torture-move,Fail
+kms_cursor_legacy@pipe-A-forked-bo,Fail
+kms_cursor_legacy@pipe-A-forked-move,Fail
+kms_cursor_legacy@pipe-A-single-bo,Fail
+kms_cursor_legacy@pipe-A-single-move,Fail
+kms_cursor_legacy@pipe-A-torture-bo,Fail
+kms_cursor_legacy@pipe-A-torture-move,Fail
+kms_hdmi_inject@inject-4k,Fail
diff --git a/drivers/gpu/drm/ci/msm-apq8016-flakes.txt b/drivers/gpu/drm/ci/msm-apq8016-flakes.txt
new file mode 100644
index 000000000000..b63329d06767
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-apq8016-flakes.txt
@@ -0,0 +1,4 @@
+kms_force_connector_basic@force-connector-state
+kms_force_connector_basic@force-edid
+kms_force_connector_basic@force-load-detect
+kms_force_connector_basic@prune-stale-modes
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/msm-apq8096-fails.txt b/drivers/gpu/drm/ci/msm-apq8096-fails.txt
new file mode 100644
index 000000000000..88a1fc0a3b0d
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-apq8096-fails.txt
@@ -0,0 +1,2 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
diff --git a/drivers/gpu/drm/ci/msm-apq8096-flakes.txt b/drivers/gpu/drm/ci/msm-apq8096-flakes.txt
new file mode 100644
index 000000000000..b63329d06767
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-apq8096-flakes.txt
@@ -0,0 +1,4 @@
+kms_force_connector_basic@force-connector-state
+kms_force_connector_basic@force-edid
+kms_force_connector_basic@force-load-detect
+kms_force_connector_basic@prune-stale-modes
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/msm-apq8096-skips.txt b/drivers/gpu/drm/ci/msm-apq8096-skips.txt
new file mode 100644
index 000000000000..cd49c8ce2059
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-apq8096-skips.txt
@@ -0,0 +1,2 @@
+# Whole machine hangs
+kms_cursor_legacy@all-pipes-torture-move
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/msm-sc7180-fails.txt b/drivers/gpu/drm/ci/msm-sc7180-fails.txt
new file mode 100644
index 000000000000..cfa25fe97498
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-sc7180-fails.txt
@@ -0,0 +1,21 @@
+kms_cursor_legacy@cursor-vs-flip-toggle,Fail
+kms_cursor_legacy@cursorA-vs-flipA-atomic-transitions,Crash
+kms_plane@pixel-format,Fail
+kms_plane@pixel-format-source-clamping,Fail
+kms_plane@plane-position-covered,Fail
+kms_plane@plane-position-hole,Fail
+kms_plane@plane-position-hole-dpms,Fail
+kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
+kms_plane_alpha_blend@pipe-B-alpha-7efc,Fail
+kms_plane_alpha_blend@pipe-B-alpha-basic,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-mid,Fail
+kms_plane_alpha_blend@pipe-B-coverage-7efc,Fail
+kms_plane_alpha_blend@pipe-B-coverage-vs-premult-vs-constant,Fail
+kms_rmfb@close-fd,Fail
+kms_rotation_crc@primary-rotation-180,Fail
+kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
+kms_universal_plane@disable-primary-vs-flip-pipe-b,Fail
diff --git a/drivers/gpu/drm/ci/msm-sc7180-flakes.txt b/drivers/gpu/drm/ci/msm-sc7180-flakes.txt
new file mode 100644
index 000000000000..49790ece3c13
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-sc7180-flakes.txt
@@ -0,0 +1,14 @@
+# Test ends up reading CRC from frame before cursor update
+# sometimes.. tbd if this is a kernel CRC bug or a test
+# bug
+kms_cursor_crc@.*
+
+kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
+kms_cursor_edge_walk@pipe-A-64x64-left-edge
+kms_cursor_edge_walk@pipe-A-64x64-right-edge
+kms_cursor_edge_walk@pipe-A-64x64-top-edge
+kms_cursor_edge_walk@pipe-B-64x64-bottom-edge
+kms_cursor_edge_walk@pipe-B-64x64-left-edge
+kms_cursor_edge_walk@pipe-B-64x64-right-edge
+kms_cursor_edge_walk@pipe-B-64x64-top-edge
+kms_plane_multiple@atomic-pipe-A-tiling-none
diff --git a/drivers/gpu/drm/ci/msm-sc7180-skips.txt b/drivers/gpu/drm/ci/msm-sc7180-skips.txt
new file mode 100644
index 000000000000..410e0eeb3161
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-sc7180-skips.txt
@@ -0,0 +1,23 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# Test incorrectly assumes that CTM support implies gamma/degamma
+# LUT support.  None of the subtests handle the case of only having
+# CTM support
+kms_color.*
+
+# 4k@60 is not supported on this hw, but driver doesn't handle it
+# too gracefully.. https://gitlab.freedesktop.org/drm/msm/-/issues/15
+kms_bw@linear-tiling-.*-displays-3840x2160p
+
+# Until igt fix lands: https://patchwork.freedesktop.org/patch/493175/
+kms_bw@linear-tiling-2.*
+kms_bw@linear-tiling-3.*
+kms_bw@linear-tiling-4.*
+kms_bw@linear-tiling-5.*
+kms_bw@linear-tiling-6.*
+
+# igt fix posted: https://patchwork.freedesktop.org/patch/499926/
+# failure mode is flakey due to randomization but fails frequently
+# enough to be detected as a Crash or occasionally UnexpectedPass.
+kms_plane_multiple@atomic-pipe-A-tiling-none
diff --git a/drivers/gpu/drm/ci/msm-sdm845-fails.txt b/drivers/gpu/drm/ci/msm-sdm845-fails.txt
new file mode 100644
index 000000000000..8133927a44df
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-sdm845-fails.txt
@@ -0,0 +1,44 @@
+kms_color@pipe-A-ctm-0-25,Fail
+kms_color@pipe-A-ctm-0-5,Fail
+kms_color@pipe-A-ctm-0-75,Fail
+kms_color@pipe-A-ctm-blue-to-red,Fail
+kms_color@pipe-A-ctm-green-to-red,Fail
+kms_color@pipe-A-ctm-max,Fail
+kms_color@pipe-A-ctm-negative,Fail
+kms_color@pipe-A-ctm-red-to-blue,Fail
+kms_color@pipe-A-legacy-gamma,Fail
+kms_cursor_legacy@basic-flip-after-cursor-atomic,Fail
+kms_cursor_legacy@basic-flip-after-cursor-legacy,Fail
+kms_cursor_legacy@basic-flip-before-cursor-atomic,Fail
+kms_cursor_legacy@basic-flip-before-cursor-legacy,Fail
+kms_cursor_legacy@cursor-vs-flip-atomic,Fail
+kms_cursor_legacy@cursor-vs-flip-atomic-transitions,Fail
+kms_cursor_legacy@cursor-vs-flip-legacy,Fail
+kms_cursor_legacy@cursor-vs-flip-toggle,Fail
+kms_cursor_legacy@flip-vs-cursor-atomic,Fail
+kms_cursor_legacy@flip-vs-cursor-crc-atomic,Fail
+kms_cursor_legacy@flip-vs-cursor-crc-legacy,Fail
+kms_cursor_legacy@flip-vs-cursor-legacy,Fail
+kms_cursor_legacy@short-flip-after-cursor-atomic-transitions,Fail
+kms_cursor_legacy@short-flip-after-cursor-toggle,Fail
+kms_cursor_legacy@short-flip-before-cursor-atomic-transitions,Fail
+kms_cursor_legacy@short-flip-before-cursor-toggle,Fail
+kms_plane@pixel-format,Fail
+kms_plane@pixel-format-source-clamping,Fail
+kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
+kms_plane_cursor@pipe-A-overlay-size-128,Fail
+kms_plane_cursor@pipe-A-overlay-size-256,Fail
+kms_plane_cursor@pipe-A-overlay-size-64,Fail
+kms_plane_cursor@pipe-A-viewport-size-128,Fail
+kms_plane_cursor@pipe-A-viewport-size-256,Fail
+kms_plane_cursor@pipe-A-viewport-size-64,Fail
+kms_plane_scaling@downscale-with-pixel-format-factor-0-25,Timeout
+kms_plane_scaling@downscale-with-pixel-format-factor-0-5,Timeout
+kms_plane_scaling@downscale-with-pixel-format-factor-0-75,Timeout
+kms_plane_scaling@invalid-num-scalers,Fail
+kms_plane_scaling@planes-downscale-factor-0-25,Fail
+kms_plane_scaling@scaler-with-clipping-clamping,Timeout
+kms_plane_scaling@scaler-with-pixel-format-unity-scaling,Timeout
+kms_rmfb@close-fd,Fail
diff --git a/drivers/gpu/drm/ci/msm-sdm845-flakes.txt b/drivers/gpu/drm/ci/msm-sdm845-flakes.txt
new file mode 100644
index 000000000000..def5865f92a5
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-sdm845-flakes.txt
@@ -0,0 +1,14 @@
+# Test ends up reading CRC from frame before cursor update
+# sometimes.. tbd if this is a kernel CRC bug or a test
+# bug
+kms_cursor_crc@.*
+
+kms_cursor_legacy@flip-vs-cursor-toggle
+kms_cursor_legacy@pipe-A-forked-bo
+kms_cursor_legacy@pipe-A-forked-move
+kms_cursor_edge_walk@pipe-A-64x64-bottom-edge
+kms_cursor_edge_walk@pipe-A-64x64-left-edge
+kms_cursor_edge_walk@pipe-A-64x64-right-edge
+kms_cursor_edge_walk@pipe-A-64x64-top-edge
+
+kms_flip@dpms-vs-vblank-race-interruptible
diff --git a/drivers/gpu/drm/ci/msm-sdm845-skips.txt b/drivers/gpu/drm/ci/msm-sdm845-skips.txt
new file mode 100644
index 000000000000..42675f1c6d76
--- /dev/null
+++ b/drivers/gpu/drm/ci/msm-sdm845-skips.txt
@@ -0,0 +1,2 @@
+# Hangs machine
+kms_bw.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt b/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
new file mode 100644
index 000000000000..06d4a587ef24
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip-rk3288-fails.txt
@@ -0,0 +1,47 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_force_connector_basic@force-connector-state,Fail
+kms_force_connector_basic@force-edid,Fail
+kms_force_connector_basic@force-load-detect,Fail
+kms_force_connector_basic@prune-stale-modes,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_pipe_crc_basic@nonblocking-crc-pipe-A-frame-sequence,Fail
+kms_pipe_crc_basic@nonblocking-crc-pipe-B-frame-sequence,Fail
+kms_pipe_crc_basic@read-crc-pipe-A-frame-sequence,Fail
+kms_pipe_crc_basic@read-crc-pipe-B-frame-sequence,Fail
+kms_plane_cursor@pipe-A-overlay-size-128,Fail
+kms_plane_cursor@pipe-A-overlay-size-256,Fail
+kms_plane_cursor@pipe-A-overlay-size-64,Fail
+kms_plane_cursor@pipe-A-primary-size-128,Fail
+kms_plane_cursor@pipe-A-primary-size-256,Fail
+kms_plane_cursor@pipe-A-primary-size-64,Fail
+kms_plane_cursor@pipe-A-viewport-size-128,Fail
+kms_plane_cursor@pipe-A-viewport-size-256,Fail
+kms_plane_cursor@pipe-A-viewport-size-64,Fail
+kms_plane_cursor@pipe-B-overlay-size-128,Fail
+kms_plane_cursor@pipe-B-overlay-size-256,Fail
+kms_plane_cursor@pipe-B-overlay-size-64,Fail
+kms_plane_cursor@pipe-B-primary-size-128,Fail
+kms_plane_cursor@pipe-B-primary-size-256,Fail
+kms_plane_cursor@pipe-B-primary-size-64,Fail
+kms_plane_cursor@pipe-B-viewport-size-128,Fail
+kms_plane_cursor@pipe-B-viewport-size-256,Fail
+kms_plane_cursor@pipe-B-viewport-size-64,Fail
+kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
+kms_plane_scaling@upscale-with-modifier-20x20,Fail
+kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
+kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_prime@basic-crc,Fail
+kms_properties@connector-properties-atomic,Fail
+kms_properties@get_properties-sanity-atomic,Fail
+kms_properties@get_properties-sanity-non-atomic,Fail
+kms_rmfb@close-fd,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt b/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
new file mode 100644
index 000000000000..d562589eaf16
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip-rk3288-flakes.txt
@@ -0,0 +1,9 @@
+kms_cursor_crc@.*
+
+kms_cursor_edge_walk@pipe-A-64x64-left-edge
+kms_cursor_edge_walk@pipe-A-64x64-right-edge
+kms_cursor_edge_walk@pipe-A-64x64-top-edge
+kms_cursor_edge_walk@pipe-B-64x64-left-edge
+kms_cursor_edge_walk@pipe-B-64x64-right-edge
+kms_cursor_edge_walk@pipe-B-64x64-top-edge
+kms_pipe_crc_basic@disable-crc-after-crtc-pipe-B
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt b/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
new file mode 100644
index 000000000000..26f9a03fc074
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip-rk3288-skips.txt
@@ -0,0 +1,46 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# Too unstable, machine ends up hanging after lots of Oopses
+kms_cursor_legacy.*
+
+# Started hanging the machine on Linux 5.19-rc2:
+#
+# [IGT] kms_plane_lowres: executing
+# [IGT] kms_plane_lowres: starting subtest pipe-F-tiling-y
+# [IGT] kms_plane_lowres: exiting, ret=77
+# Console: switching to colour frame buffer device 170x48
+# rockchip-drm display-subsystem: [drm] *ERROR* flip_done timed out
+# rockchip-drm display-subsystem: [drm] *ERROR* [CRTC:35:crtc-0] commit wait timed out
+# BUG: spinlock bad magic on CPU#3, kms_plane_lowre/482
+# 8<--- cut here ---
+# Unable to handle kernel paging request at virtual address 7812078e
+# [7812078e] *pgd=00000000
+# Internal error: Oops: 5 [#1] SMP ARM
+# Modules linked in:
+# CPU: 3 PID: 482 Comm: kms_plane_lowre Tainted: G        W         5.19.0-rc2-323596-g00535de92171 #1
+# Hardware name: Rockchip (Device Tree)
+# Process kms_plane_lowre (pid: 482, stack limit = 0x1193ac2b)
+#  spin_dump from do_raw_spin_lock+0xa4/0xe8
+#  do_raw_spin_lock from wait_for_completion_timeout+0x2c/0x120
+#  wait_for_completion_timeout from drm_crtc_commit_wait+0x18/0x7c
+#  drm_crtc_commit_wait from drm_atomic_helper_wait_for_dependencies+0x44/0x168
+#  drm_atomic_helper_wait_for_dependencies from commit_tail+0x34/0x180
+#  commit_tail from drm_atomic_helper_commit+0x164/0x18c
+#  drm_atomic_helper_commit from drm_atomic_commit+0xac/0xe4
+#  drm_atomic_commit from drm_client_modeset_commit_atomic+0x23c/0x284
+#  drm_client_modeset_commit_atomic from drm_client_modeset_commit_locked+0x60/0x1c8
+#  drm_client_modeset_commit_locked from drm_client_modeset_commit+0x24/0x40
+#  drm_client_modeset_commit from drm_fbdev_client_restore+0x58/0x94
+#  drm_fbdev_client_restore from drm_client_dev_restore+0x70/0xbc
+#  drm_client_dev_restore from drm_release+0xf4/0x114
+#  drm_release from __fput+0x74/0x240
+#  __fput from task_work_run+0x84/0xb4
+#  task_work_run from do_exit+0x34c/0xa20
+#  do_exit from do_group_exit+0x34/0x98
+#  do_group_exit from __wake_up_parent+0x0/0x18
+# Code: e595c008 12843d19 03e00000 03093168 (15940508) 
+# ---[ end trace 0000000000000000 ]---
+# note: kms_plane_lowre[482] exited with preempt_count 1
+# Fixing recursive fault but reboot is needed!
+kms_plane_lowres@pipe-F-tiling-y
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt b/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
new file mode 100644
index 000000000000..7a99e41268a9
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip-rk3399-fails.txt
@@ -0,0 +1,44 @@
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_color@pipe-A-legacy-gamma,Fail
+kms_color@pipe-B-legacy-gamma,Fail
+kms_cursor_edge_walk@pipe-A-64x64-bottom-edge,Fail
+kms_cursor_edge_walk@pipe-A-64x64-left-edge,Fail
+kms_cursor_edge_walk@pipe-A-64x64-top-edge,Fail
+kms_cursor_edge_walk@pipe-B-64x64-bottom-edge,Fail
+kms_cursor_edge_walk@pipe-B-64x64-right-edge,Fail
+kms_cursor_edge_walk@pipe-B-64x64-top-edge,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-A,Fail
+kms_pipe_crc_basic@nonblocking-crc-pipe-A,Fail
+kms_pipe_crc_basic@nonblocking-crc-pipe-A-frame-sequence,Fail
+kms_pipe_crc_basic@nonblocking-crc-pipe-B,Fail
+kms_pipe_crc_basic@nonblocking-crc-pipe-B-frame-sequence,Fail
+kms_pipe_crc_basic@read-crc-pipe-A,Fail
+kms_pipe_crc_basic@read-crc-pipe-A-frame-sequence,Fail
+kms_pipe_crc_basic@read-crc-pipe-B,Fail
+kms_pipe_crc_basic@read-crc-pipe-B-frame-sequence,Fail
+kms_plane@plane-panning-bottom-right,Fail
+kms_plane@plane-panning-top-left,Fail
+kms_plane_cursor@pipe-B-overlay-size-128,Fail
+kms_plane_cursor@pipe-B-overlay-size-256,Fail
+kms_plane_cursor@pipe-B-overlay-size-64,Fail
+kms_plane_cursor@pipe-B-primary-size-128,Fail
+kms_plane_cursor@pipe-B-primary-size-256,Fail
+kms_plane_cursor@pipe-B-primary-size-64,Fail
+kms_plane_cursor@pipe-B-viewport-size-128,Fail
+kms_plane_cursor@pipe-B-viewport-size-256,Fail
+kms_plane_cursor@pipe-B-viewport-size-64,Fail
+kms_plane_multiple@atomic-pipe-B-tiling-none,Fail
+kms_prime@basic-crc,Fail
+kms_rmfb@close-fd,Fail
+kms_universal_plane@universal-plane-pipe-B-functional,Fail
+kms_vblank@pipe-A-query-forked,Fail
+kms_vblank@pipe-A-query-idle,Fail
+kms_vblank@pipe-A-wait-busy,Fail
+kms_vblank@pipe-A-wait-forked,Fail
+kms_vblank@pipe-A-wait-forked-busy,Fail
+kms_vblank@pipe-B-query-forked,Fail
+kms_vblank@pipe-B-query-idle,Fail
+kms_vblank@pipe-B-wait-busy,Fail
+kms_vblank@pipe-B-wait-forked,Fail
+kms_vblank@pipe-B-wait-forked-busy,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt b/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
new file mode 100644
index 000000000000..217139a869bc
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip-rk3399-flakes.txt
@@ -0,0 +1,19 @@
+kms_cursor_crc@.*
+
+kms_cursor_edge_walk@pipe-A-64x64-right-edge
+kms_cursor_edge_walk@pipe-B-64x64-left-edge
+kms_flip@flip-vs-expired-vblank
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-B
+kms_plane_multiple@atomic-pipe-A-tiling-none
+kms_plane@plane-position-hole
+kms_sequence@get-forked
+kms_sequence@get-forked-busy
+kms_setmode@basic
+kms_vblank@pipe-A-accuracy-idle
+kms_vblank@pipe-A-query-busy
+kms_vblank@pipe-A-query-forked-busy
+kms_vblank@pipe-A-wait-idle
+kms_vblank@pipe-B-accuracy-idle
+kms_vblank@pipe-B-query-busy
+kms_vblank@pipe-B-query-forked-busy
+kms_vblank@pipe-B-wait-idle
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt b/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
new file mode 100644
index 000000000000..10c3d81a919a
--- /dev/null
+++ b/drivers/gpu/drm/ci/rockchip-rk3399-skips.txt
@@ -0,0 +1,5 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# Too unstable, machine ends up hanging after lots of Oopses
+kms_cursor_legacy.*
diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt b/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
new file mode 100644
index 000000000000..2178bdd064dd
--- /dev/null
+++ b/drivers/gpu/drm/ci/virtio_gpu-none-fails.txt
@@ -0,0 +1,38 @@
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_addfb_basic@bad-pitch-65536,Fail
+kms_addfb_basic@bo-too-small,Fail
+kms_addfb_basic@size-max,Fail
+kms_addfb_basic@too-high,Fail
+kms_atomic_transition@plane-primary-toggle-with-vblank-wait,Fail
+kms_bw@linear-tiling-1-displays-1920x1080p,Fail
+kms_bw@linear-tiling-1-displays-2560x1440p,Fail
+kms_bw@linear-tiling-1-displays-3840x2160p,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
+kms_plane_scaling@planes-upscale-20x20,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
+kms_plane_scaling@upscale-with-modifier-20x20,Fail
+kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
+kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_vblank@crtc-id,Fail
+kms_vblank@invalid,Fail
+kms_vblank@pipe-A-accuracy-idle,Fail
+kms_vblank@pipe-A-query-busy,Fail
+kms_vblank@pipe-A-query-forked,Fail
+kms_vblank@pipe-A-query-forked-busy,Fail
+kms_vblank@pipe-A-query-idle,Fail
+kms_vblank@pipe-A-ts-continuation-idle,Fail
+kms_vblank@pipe-A-ts-continuation-modeset,Fail
+kms_vblank@pipe-A-ts-continuation-suspend,Fail
+kms_vblank@pipe-A-wait-busy,Fail
+kms_vblank@pipe-A-wait-forked,Fail
+kms_vblank@pipe-A-wait-forked-busy,Fail
+kms_vblank@pipe-A-wait-idle,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt b/drivers/gpu/drm/ci/virtio_gpu-none-flakes.txt
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt b/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt
new file mode 100644
index 000000000000..78be18174012
--- /dev/null
+++ b/drivers/gpu/drm/ci/virtio_gpu-none-skips.txt
@@ -0,0 +1,6 @@
+# Hits a "refcount_t: underflow; use-after-free" in virtio_gpu_fence_event_process
+# When run in a particular order with other tests
+kms_cursor_legacy.*
+
+# Job just hangs without any output
+kms_flip@flip-vs-suspend.*
\ No newline at end of file
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 49+ messages in thread

* [PATCH v8] drm: Add initial ci/ subdirectory
  2022-08-29  9:31           ` [PATCH v7] " Tomeu Vizoso
@ 2022-09-09 14:15             ` Tomeu Vizoso
  2022-09-09 17:16               ` Daniel Stone
  2022-09-12  7:29               ` [PATCH v9] " Tomeu Vizoso
  0 siblings, 2 replies; 49+ messages in thread
From: Tomeu Vizoso @ 2022-09-09 14:15 UTC (permalink / raw)
  To: David Airlie, Daniel Vetter, Jonathan Corbet, Carlo Caione,
	Kevin Hilman, Heiko Stuebner, Matthias Brugger, Rob Clark
  Cc: Tomeu Vizoso, linux-doc, Neil Armstrong, linux-kernel, dri-devel,
	linux-rockchip, linux-mediatek, linux-amlogic, kernel,
	linux-arm-kernel

And use it to store expectations about what the DRM drivers are
supposed to pass in the IGT test suite.

Also include a configuration file that points to the out-of-tree CI
scripts.

By storing the test expectations along the code we can make sure both
stay in sync with each other, and so we can know when a code change
breaks those expectations.

This will allow all contributors to drm to reuse the infrastructure
already in gitlab.freedesktop.org to test the driver on several
generations of the hardware.

v2:
  - Fix names of result expectation files to match SoC
  - Don't execute tests that are going to skip on all boards

v3:
  - Remove tracking of dmesg output during test execution

v4:
  - Move up to drivers/gpu/drm
  - Add support for a bunch of other drivers
  - Explain how to incorporate fixes for CI from a
    ${TARGET_BRANCH}-external-fixes branch
  - Remove tests that pass from expected results file, to reduce the
    size of in-tree files
  - Add docs about how to deal with outages in automated testing labs
  - Specify the exact SHA of the CI scripts to be used

v5:
  - Remove unneeded skips from Meson expectations file
  - Use a more advanced runner that detects flakes automatically
  - Use a more succint format for the expectations
  - Run many more tests (and use sharding to finish in time)
  - Use skip lists to avoid hanging machines
  - Add some build testing
  - Build IGT in each pipeline for faster uprevs
  - List failures in the GitLab UI

v6:
  - Rebase on top of latest drm-next
  - Lower priority of LAVA jobs to not impact Mesa CI as much
  - Update docs

v7:
  - Rebase on top of latest drm-next

v8:
  - Move all files specific to testing the kernel into the kernel tree
    (thus I have dropped the r-bs I had collected so far)
  - Uprev Gitlab CI infrastructure scripts to the latest from Mesa
  - Add MAINTAINERS entry
  - Fix boot on MT8173 by adding some Kconfigs that are now needed
  - Link to the docs from index.rst and hard-wrap the file

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
---
 Documentation/gpu/automated_testing.rst       |  144 +
 Documentation/gpu/index.rst                   |    1 +
 MAINTAINERS                                   |    8 +
 drivers/gpu/drm/ci/arm.config                 |   57 +
 drivers/gpu/drm/ci/arm64.config               |  175 ++
 drivers/gpu/drm/ci/build-igt.sh               |   43 +
 drivers/gpu/drm/ci/build.sh                   |  158 +
 drivers/gpu/drm/ci/build.yml                  |  110 +
 drivers/gpu/drm/ci/check-patch.py             |   57 +
 drivers/gpu/drm/ci/container.yml              |   54 +
 drivers/gpu/drm/ci/gitlab-ci.yml              |  226 ++
 drivers/gpu/drm/ci/igt_runner.sh              |   77 +
 drivers/gpu/drm/ci/image-tags.yml             |   13 +
 drivers/gpu/drm/ci/lava-submit.sh             |   53 +
 drivers/gpu/drm/ci/static-checks.yml          |   12 +
 drivers/gpu/drm/ci/test.yml                   |  322 ++
 drivers/gpu/drm/ci/testlist.txt               | 2763 +++++++++++++++++
 drivers/gpu/drm/ci/x86_64.config              |  105 +
 .../gpu/drm/ci/xfails/amdgpu-stoney-fails.txt |   19 +
 .../drm/ci/xfails/amdgpu-stoney-flakes.txt    |   15 +
 .../gpu/drm/ci/xfails/amdgpu-stoney-skips.txt |    2 +
 .../gpu/drm/ci/xfails/i915-amly-flakes.txt    |   32 +
 drivers/gpu/drm/ci/xfails/i915-amly-skips.txt |    2 +
 drivers/gpu/drm/ci/xfails/i915-apl-fails.txt  |   29 +
 drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt |    1 +
 drivers/gpu/drm/ci/xfails/i915-apl-skips.txt  |    2 +
 drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt |   37 +
 drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt |   40 +
 drivers/gpu/drm/ci/xfails/i915-glk-skips.txt  |    2 +
 drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt  |    8 +
 drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt |   25 +
 drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt  |    2 +
 drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt  |   19 +
 drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt |    5 +
 drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt  |    8 +
 drivers/gpu/drm/ci/xfails/i915-whl-fails.txt  |   30 +
 drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt |    1 +
 .../drm/ci/xfails/mediatek-mt8173-fails.txt   |   29 +
 .../drm/ci/xfails/mediatek-mt8183-fails.txt   |   10 +
 .../drm/ci/xfails/mediatek-mt8183-flakes.txt  |   14 +
 .../gpu/drm/ci/xfails/meson-g12b-fails.txt    |    5 +
 .../gpu/drm/ci/xfails/meson-g12b-flakes.txt   |    4 +
 .../gpu/drm/ci/xfails/msm-apq8016-fails.txt   |   15 +
 .../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-apq8096-skips.txt   |    2 +
 .../gpu/drm/ci/xfails/msm-sc7180-fails.txt    |   21 +
 .../gpu/drm/ci/xfails/msm-sc7180-flakes.txt   |    6 +
 .../gpu/drm/ci/xfails/msm-sc7180-skips.txt    |   23 +
 .../gpu/drm/ci/xfails/msm-sdm845-fails.txt    |   44 +
 .../gpu/drm/ci/xfails/msm-sdm845-flakes.txt   |   10 +
 .../gpu/drm/ci/xfails/msm-sdm845-skips.txt    |    2 +
 .../drm/ci/xfails/rockchip-rk3288-fails.txt   |   43 +
 .../drm/ci/xfails/rockchip-rk3288-flakes.txt  |    2 +
 .../drm/ci/xfails/rockchip-rk3288-skips.txt   |   49 +
 .../drm/ci/xfails/rockchip-rk3399-fails.txt   |   29 +
 .../drm/ci/xfails/rockchip-rk3399-flakes.txt  |   20 +
 .../drm/ci/xfails/rockchip-rk3399-skips.txt   |    5 +
 .../drm/ci/xfails/virtio_gpu-none-fails.txt   |   38 +
 .../drm/ci/xfails/virtio_gpu-none-flakes.txt  |    0
 .../drm/ci/xfails/virtio_gpu-none-skips.txt   |    6 +
 62 files changed, 5044 insertions(+)
 create mode 100644 Documentation/gpu/automated_testing.rst
 create mode 100644 drivers/gpu/drm/ci/arm.config
 create mode 100644 drivers/gpu/drm/ci/arm64.config
 create mode 100644 drivers/gpu/drm/ci/build-igt.sh
 create mode 100644 drivers/gpu/drm/ci/build.sh
 create mode 100644 drivers/gpu/drm/ci/build.yml
 create mode 100755 drivers/gpu/drm/ci/check-patch.py
 create mode 100644 drivers/gpu/drm/ci/container.yml
 create mode 100644 drivers/gpu/drm/ci/gitlab-ci.yml
 create mode 100755 drivers/gpu/drm/ci/igt_runner.sh
 create mode 100644 drivers/gpu/drm/ci/image-tags.yml
 create mode 100755 drivers/gpu/drm/ci/lava-submit.sh
 create mode 100644 drivers/gpu/drm/ci/static-checks.yml
 create mode 100644 drivers/gpu/drm/ci/test.yml
 create mode 100644 drivers/gpu/drm/ci/testlist.txt
 create mode 100644 drivers/gpu/drm/ci/x86_64.config
 create mode 100644 drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-amly-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-apl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-apl-skips.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-glk-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-whl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8173-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8183-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8183-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/meson-g12b-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/meson-g12b-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8016-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8016-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8096-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-sc7180-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-sc7180-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-sc7180-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-sdm845-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-sdm845-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3288-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3288-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3288-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3399-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3399-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3399-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/virtio_gpu-none-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/virtio_gpu-none-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/virtio_gpu-none-skips.txt

diff --git a/Documentation/gpu/automated_testing.rst b/Documentation/gpu/automated_testing.rst
new file mode 100644
index 000000000000..1b87b802ac7f
--- /dev/null
+++ b/Documentation/gpu/automated_testing.rst
@@ -0,0 +1,144 @@
+.. SPDX-License-Identifier: GPL-2.0+
+
+=========================================
+Automated testing of the DRM subsystem
+=========================================
+
+Introduction
+============
+
+Making sure that changes to the core or drivers don't introduce regressions can
+be very time-consuming when lots of different hardware configurations need to
+be tested. Moreover, it isn't practical for each person interested in this
+testing to have to acquire and maintain what can be a considerable amount of
+hardware.
+
+Also, it is desirable for developers to check for regressions in their code by
+themselves, instead of relying on the maintainers to find them and then
+reporting back.
+
+There are facilities in gitlab.freedesktop.org to automatically test Mesa that
+can be used as well for testing the DRM subsystem. This document explains how
+people interested in testing it can use this shared infrastructure to save
+quite some time and effort.
+
+
+Relevant files
+==============
+
+drivers/gpu/drm/ci/gitlab-ci.yml
+--------------------------------
+
+This is the root configuration file for GitLab CI. Among other less interesting
+bits, it specifies the specific version of the scripts to be used. There are
+some variables that can be modified to change the behavior of the pipeline:
+
+DRM_CI_PROJECT_PATH
+    Repository that contains the Mesa software infrastructure for CI
+
+DRM_CI_COMMIT_SHA
+    A particular revision to use from that repository
+
+UPSTREAM_REPO
+    URL to git repository containing the target branch
+
+TARGET_BRANCH
+    Branch to which this branch is to be merged into
+
+IGT_VERSION
+    Revision of igt-gpu-tools being used, from
+    https://gitlab.freedesktop.org/drm/igt-gpu-tools
+
+drivers/gpu/drm/ci/testlist.txt
+-------------------------------
+
+IGT tests to be run on all drivers (unless mentioned in a driver's *-skips.txt
+file, see below).
+
+drivers/gpu/drm/ci/${DRIVER_NAME}-${HW_REVISION}-fails.txt
+----------------------------------------------------------
+
+Lists the known failures for a given driver on a specific hardware revision.
+
+drivers/gpu/drm/ci/${DRIVER_NAME}-${HW_REVISION}-flakes.txt
+-----------------------------------------------------------
+
+Lists the tests that for a given driver on a specific hardware revision are
+known to behave unreliably. These tests won't cause a job to fail regardless of
+the result. They will still be run.
+
+drivers/gpu/drm/ci/${DRIVER_NAME}-${HW_REVISION}-skips.txt
+-----------------------------------------------------------
+
+Lists the tests that won't be run for a given driver on a specific hardware
+revision. These are usually tests that interfere with the running of the test
+list due to hanging the machine, causing OOM, taking too long, etc.
+
+
+How to enable automated testing on your tree
+============================================
+
+1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one
+yet
+
+2. In your kernel repo's configuration (eg.
+https://gitlab.freedesktop.org/janedoe/linux/-/settings/ci_cd), change the
+CI/CD configuration file from .gitlab-ci.yml to
+drivers/gpu/drm/ci/gitlab-ci.yml.
+
+3. Next time you push to this repository, you will see a CI pipeline being
+created (eg. https://gitlab.freedesktop.org/janedoe/linux/-/pipelines)
+
+4. The various jobs will be run and when the pipeline is finished, all jobs
+should be green unless a regression has been found.
+
+
+How to update test expectations
+===============================
+
+If your changes to the code fix any tests, you will have to remove one or more
+lines from one or more of the files in
+drivers/gpu/drm/ci/${DRIVER_NAME}_*_fails.txt, for each of the test platforms
+affected by the change.
+
+
+How to expand coverage
+======================
+
+If your code changes make it possible to run more tests (by solving reliability
+issues, for example), you can remove tests from the flakes and/or skips lists,
+and then the expected results if there are any known failures.
+
+If there is a need for updating the version of IGT being used (maybe you have
+added more tests to it), update the IGT_VERSION variable at the top of the
+gitlab-ci.yml file.
+
+
+How to test your changes to the scripts
+=======================================
+
+For testing changes to the scripts in the drm-ci repo, change the
+DRM_CI_PROJECT_PATH and DRM_CI_COMMIT_SHA variables in
+drivers/gpu/drm/ci/gitlab-ci.yml to match your fork of the project (eg.
+janedoe/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
+
+
+How to incorporate external fixes in your testing
+=================================================
+
+Often, regressions in other trees will prevent testing changes local to the
+tree under test. These fixes will be automatically merged in during the build
+jobs from a branch in the target tree that is named as
+${TARGET_BRANCH}-external-fixes.
+
+If the pipeline is not in a merge request and a branch with the same name
+exists in the local tree, commits from that branch will be merged in as well.
+
+
+How to deal with automated testing labs that may be down
+========================================================
+
+If a hardware farm is down and thus causing pipelines to fail that would
+otherwise pass, one can disable all jobs that would be submitted to that farm
+by editing the file at
+https://gitlab.freedesktop.org/gfx-ci/lab-status/-/blob/main/lab-status.yml.
diff --git a/Documentation/gpu/index.rst b/Documentation/gpu/index.rst
index b99dede9a5b1..23fe6600d1e9 100644
--- a/Documentation/gpu/index.rst
+++ b/Documentation/gpu/index.rst
@@ -17,6 +17,7 @@ Linux GPU Driver Developer's Guide
    backlight
    vga-switcheroo
    vgaarbiter
+   automated_testing
    todo
    rfc/index
 
diff --git a/MAINTAINERS b/MAINTAINERS
index 9d7f64dc0efe..6703681e2ad6 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -7075,6 +7075,14 @@ T:	git git://anongit.freedesktop.org/drm/drm-misc
 F:	drivers/gpu/drm/scheduler/
 F:	include/drm/gpu_scheduler.h
 
+DRM AUTOMATED TESTING
+M:	Tomeu Vizoso <tomeu.vizoso@collabora.com>
+L:	dri-devel@lists.freedesktop.org
+S:	Maintained
+T:	git git://anongit.freedesktop.org/drm/drm-misc
+F:	Documentation/gpu/automated_testing.rst
+F:	drivers/gpu/drm/ci/
+
 DSBR100 USB FM RADIO DRIVER
 M:	Alexey Klimov <klimov.linux@gmail.com>
 L:	linux-media@vger.kernel.org
diff --git a/drivers/gpu/drm/ci/arm.config b/drivers/gpu/drm/ci/arm.config
new file mode 100644
index 000000000000..21a5c7c23d58
--- /dev/null
+++ b/drivers/gpu/drm/ci/arm.config
@@ -0,0 +1,57 @@
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_DEBUG_KERNEL=y
+
+# abootimg with a 'dummy' rootfs fails with root=/dev/nfs
+CONFIG_BLK_DEV_INITRD=n
+
+CONFIG_DEVFREQ_GOV_PERFORMANCE=y
+CONFIG_DEVFREQ_GOV_POWERSAVE=y
+CONFIG_DEVFREQ_GOV_USERSPACE=y
+CONFIG_DEVFREQ_GOV_PASSIVE=y
+CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
+
+CONFIG_DRM=y
+CONFIG_DRM_ETNAVIV=y
+CONFIG_DRM_ROCKCHIP=y
+CONFIG_DRM_PANFROST=y
+CONFIG_DRM_LIMA=y
+CONFIG_DRM_PANEL_SIMPLE=y
+CONFIG_PWM_CROS_EC=y
+CONFIG_BACKLIGHT_PWM=y
+
+CONFIG_ROCKCHIP_CDN_DP=n
+
+CONFIG_SPI_ROCKCHIP=y
+CONFIG_PWM_ROCKCHIP=y
+CONFIG_PHY_ROCKCHIP_DP=y
+CONFIG_DWMAC_ROCKCHIP=y
+
+CONFIG_MFD_RK808=y
+CONFIG_REGULATOR_RK808=y
+CONFIG_RTC_DRV_RK808=y
+CONFIG_COMMON_CLK_RK808=y
+
+CONFIG_REGULATOR_FAN53555=y
+CONFIG_REGULATOR=y
+
+CONFIG_REGULATOR_VCTRL=y
+
+CONFIG_KASAN=n
+CONFIG_KASAN_INLINE=n
+CONFIG_STACKTRACE=n
+
+CONFIG_TMPFS=y
+
+CONFIG_PROVE_LOCKING=n
+CONFIG_DEBUG_LOCKDEP=n
+CONFIG_SOFTLOCKUP_DETECTOR=n
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=n
+
+CONFIG_FW_LOADER_COMPRESS=y
+
+CONFIG_USB_USBNET=y
+CONFIG_NETDEVICES=y
+CONFIG_USB_NET_DRIVERS=y
+CONFIG_USB_RTL8152=y
+CONFIG_USB_NET_AX8817X=y
+CONFIG_USB_NET_SMSC95XX=y
diff --git a/drivers/gpu/drm/ci/arm64.config b/drivers/gpu/drm/ci/arm64.config
new file mode 100644
index 000000000000..242176545b72
--- /dev/null
+++ b/drivers/gpu/drm/ci/arm64.config
@@ -0,0 +1,175 @@
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_DEBUG_KERNEL=y
+
+# abootimg with a 'dummy' rootfs fails with root=/dev/nfs
+CONFIG_BLK_DEV_INITRD=n
+
+CONFIG_DEVFREQ_GOV_PERFORMANCE=y
+CONFIG_DEVFREQ_GOV_POWERSAVE=y
+CONFIG_DEVFREQ_GOV_USERSPACE=y
+CONFIG_DEVFREQ_GOV_PASSIVE=y
+
+CONFIG_DRM=y
+CONFIG_DRM_ROCKCHIP=y
+CONFIG_DRM_PANFROST=y
+CONFIG_DRM_LIMA=y
+CONFIG_DRM_PANEL_SIMPLE=y
+CONFIG_DRM_PANEL_EDP=y
+CONFIG_DRM_MSM=y
+CONFIG_DRM_I2C_ADV7511=y
+CONFIG_PWM_CROS_EC=y
+CONFIG_BACKLIGHT_PWM=y
+
+CONFIG_ROCKCHIP_CDN_DP=n
+
+CONFIG_SPI_ROCKCHIP=y
+CONFIG_PWM_ROCKCHIP=y
+CONFIG_PHY_ROCKCHIP_DP=y
+CONFIG_DWMAC_ROCKCHIP=y
+CONFIG_STMMAC_ETH=y
+CONFIG_TYPEC_FUSB302=y
+CONFIG_TYPEC=y
+CONFIG_TYPEC_TCPM=y
+
+# MSM platform bits
+
+# For CONFIG_QCOM_LMH
+CONFIG_OF=y
+
+CONFIG_QCOM_COMMAND_DB=y
+CONFIG_QCOM_RPMHPD=y
+CONFIG_QCOM_RPMPD=y
+CONFIG_SDM_GPUCC_845=y
+CONFIG_SDM_VIDEOCC_845=y
+CONFIG_SDM_DISPCC_845=y
+CONFIG_SDM_LPASSCC_845=y
+CONFIG_SDM_CAMCC_845=y
+CONFIG_RESET_QCOM_PDC=y
+CONFIG_DRM_TI_SN65DSI86=y
+CONFIG_I2C_QCOM_GENI=y
+CONFIG_SPI_QCOM_GENI=y
+CONFIG_PHY_QCOM_QUSB2=y
+CONFIG_PHY_QCOM_QMP=y
+CONFIG_QCOM_CLK_APCC_MSM8996=y
+CONFIG_QCOM_LLCC=y
+CONFIG_QCOM_LMH=y
+CONFIG_QCOM_SPMI_TEMP_ALARM=y
+CONFIG_QCOM_WDT=y
+CONFIG_POWER_RESET_QCOM_PON=y
+CONFIG_RTC_DRV_PM8XXX=y
+CONFIG_INTERCONNECT=y
+CONFIG_INTERCONNECT_QCOM=y
+CONFIG_INTERCONNECT_QCOM_SDM845=y
+CONFIG_INTERCONNECT_QCOM_MSM8916=y
+CONFIG_INTERCONNECT_QCOM_OSM_L3=y
+CONFIG_INTERCONNECT_QCOM_SC7180=y
+CONFIG_CRYPTO_DEV_QCOM_RNG=y
+CONFIG_SC_DISPCC_7180=y
+CONFIG_SC_GPUCC_7180=y
+
+# db410c ethernet
+CONFIG_USB_RTL8152=y
+# db820c ethernet
+CONFIG_ATL1C=y
+
+CONFIG_ARCH_ALPINE=n
+CONFIG_ARCH_BCM2835=n
+CONFIG_ARCH_BCM_IPROC=n
+CONFIG_ARCH_BERLIN=n
+CONFIG_ARCH_BRCMSTB=n
+CONFIG_ARCH_EXYNOS=n
+CONFIG_ARCH_K3=n
+CONFIG_ARCH_LAYERSCAPE=n
+CONFIG_ARCH_LG1K=n
+CONFIG_ARCH_HISI=n
+CONFIG_ARCH_MVEBU=n
+CONFIG_ARCH_SEATTLE=n
+CONFIG_ARCH_SYNQUACER=n
+CONFIG_ARCH_RENESAS=n
+CONFIG_ARCH_R8A774A1=n
+CONFIG_ARCH_R8A774C0=n
+CONFIG_ARCH_R8A7795=n
+CONFIG_ARCH_R8A7796=n
+CONFIG_ARCH_R8A77965=n
+CONFIG_ARCH_R8A77970=n
+CONFIG_ARCH_R8A77980=n
+CONFIG_ARCH_R8A77990=n
+CONFIG_ARCH_R8A77995=n
+CONFIG_ARCH_STRATIX10=n
+CONFIG_ARCH_TEGRA=n
+CONFIG_ARCH_SPRD=n
+CONFIG_ARCH_THUNDER=n
+CONFIG_ARCH_THUNDER2=n
+CONFIG_ARCH_UNIPHIER=n
+CONFIG_ARCH_VEXPRESS=n
+CONFIG_ARCH_XGENE=n
+CONFIG_ARCH_ZX=n
+CONFIG_ARCH_ZYNQMP=n
+
+# Strip out some stuff we don't need for graphics testing, to reduce
+# the build.
+CONFIG_CAN=n
+CONFIG_WIRELESS=n
+CONFIG_RFKILL=n
+CONFIG_WLAN=n
+
+CONFIG_REGULATOR_FAN53555=y
+CONFIG_REGULATOR=y
+
+CONFIG_REGULATOR_VCTRL=y
+
+CONFIG_KASAN=n
+CONFIG_KASAN_INLINE=n
+CONFIG_STACKTRACE=n
+
+CONFIG_TMPFS=y
+
+CONFIG_PROVE_LOCKING=n
+CONFIG_DEBUG_LOCKDEP=n
+CONFIG_SOFTLOCKUP_DETECTOR=y
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
+
+CONFIG_DETECT_HUNG_TASK=y
+
+CONFIG_FW_LOADER_COMPRESS=y
+CONFIG_FW_LOADER_USER_HELPER=n
+
+CONFIG_USB_USBNET=y
+CONFIG_NETDEVICES=y
+CONFIG_USB_NET_DRIVERS=y
+CONFIG_USB_RTL8152=y
+CONFIG_USB_NET_AX8817X=y
+CONFIG_USB_NET_SMSC95XX=y
+
+# For amlogic
+CONFIG_MESON_GXL_PHY=y
+CONFIG_MDIO_BUS_MUX_MESON_G12A=y
+CONFIG_DRM_MESON=y
+
+# For Mediatek
+CONFIG_DRM_MEDIATEK=y
+CONFIG_PWM_MEDIATEK=y
+CONFIG_DRM_MEDIATEK_HDMI=y
+CONFIG_GNSS=y
+CONFIG_GNSS_MTK_SERIAL=y
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_MTK=y
+CONFIG_MTK_DEVAPC=y
+CONFIG_PWM_MTK_DISP=y
+CONFIG_MTK_CMDQ=y
+CONFIG_REGULATOR_DA9211=y
+CONFIG_ARM_MEDIATEK_CPUFREQ=y
+CONFIG_RTC_DRV_MT6397=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
+CONFIG_DRM_NOUVEAU=m
+CONFIG_DRM_TEGRA=m
+CONFIG_R8169=y
+CONFIG_STAGING=y
+CONFIG_DRM_TEGRA_STAGING=y
+CONFIG_TEGRA_HOST1X=y
+CONFIG_ARM_TEGRA_DEVFREQ=y
+CONFIG_TEGRA_SOCTHERM=y
+CONFIG_DRM_TEGRA_DEBUG=y
+CONFIG_PWM_TEGRA=y
diff --git a/drivers/gpu/drm/ci/build-igt.sh b/drivers/gpu/drm/ci/build-igt.sh
new file mode 100644
index 000000000000..8bc2c7334f3f
--- /dev/null
+++ b/drivers/gpu/drm/ci/build-igt.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+# SPDX-License-Identifier: MIT
+
+set -ex
+
+git clone https://gitlab.freedesktop.org/drm/igt-gpu-tools.git --single-branch --no-checkout
+cd igt-gpu-tools
+git checkout $IGT_VERSION
+
+if [[ "$KERNEL_ARCH" = "arm" ]]; then
+    . ../.gitlab-ci/container/create-cross-file.sh armhf
+    EXTRA_MESON_ARGS="--cross-file /cross_file-armhf.txt"
+fi
+
+MESON_OPTIONS="-Doverlay=disabled                    \
+               -Dchamelium=disabled                  \
+               -Dvalgrind=disabled                   \
+               -Dman=enabled                         \
+               -Dtests=enabled                       \
+               -Drunner=enabled                      \
+               -Dlibunwind=enabled                   \
+               -Dprefix=/igt"
+
+# TODO: Remove this once https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1009805 is fixed and libjson-c-dev:armhf is installed in debian/arm-build
+if [[ "$KERNEL_ARCH" = "arm" ]]; then
+    cp /usr/lib/aarch64-linux-gnu/pkgconfig/json-c.pc /usr/lib/arm-linux-gnueabihf/pkgconfig/json-c.pc
+    sed -i 's/aarch64-linux-gnu/arm-linux-gnueabihf/g' /usr/lib/arm-linux-gnueabihf/pkgconfig/json-c.pc
+    ln -s /usr/lib/arm-linux-gnueabihf/libjson-c.so.5.1.0 /usr/lib/arm-linux-gnueabihf/libjson-c.so
+fi
+
+mkdir -p /igt
+meson build $MESON_OPTIONS $EXTRA_MESON_ARGS
+ninja -C build -j${FDO_CI_CONCURRENT:-4} || ninja -C build -j 1
+ninja -C build install
+
+mkdir -p artifacts/
+tar -cf artifacts/igt.tar /igt
+
+# Pass needed files to the test stage
+MINIO_ARTIFACT_NAME="igt.tar.gz"
+gzip -c artifacts/igt.tar > ${MINIO_ARTIFACT_NAME}
+ci-fairy minio login --token-file "${CI_JOB_JWT_FILE}"
+ci-fairy minio cp ${MINIO_ARTIFACT_NAME} minio://${PIPELINE_ARTIFACTS_BASE}/${KERNEL_ARCH}/${MINIO_ARTIFACT_NAME}
diff --git a/drivers/gpu/drm/ci/build.sh b/drivers/gpu/drm/ci/build.sh
new file mode 100644
index 000000000000..cf816444654c
--- /dev/null
+++ b/drivers/gpu/drm/ci/build.sh
@@ -0,0 +1,158 @@
+#!/bin/bash
+# SPDX-License-Identifier: MIT
+
+set -ex
+
+# Clean up stale rebases that GitLab might not have removed when reusing a checkout dir
+rm -rf .git/rebase-apply
+
+. .gitlab-ci/container/container_pre_build.sh
+
+# libssl-dev was uninstalled because it was considered an ephemeral package
+apt-get update
+apt-get install -y libssl-dev
+
+if [[ "$KERNEL_ARCH" = "arm64" ]]; then
+    GCC_ARCH="aarch64-linux-gnu"
+    DEBIAN_ARCH="arm64"
+    DEVICE_TREES="arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/amlogic/meson-gxl-s805x-libretech-ac.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/qcom/apq8016-sbc.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/qcom/apq8096-db820c.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/amlogic/meson-g12b-a311d-khadas-vim3.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/mediatek/mt8173-elm-hana.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-juniper-sku16.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/mediatek/mt8192-asurada-spherion-r0.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-limozeen-nots-r5.dtb"
+elif [[ "$KERNEL_ARCH" = "arm" ]]; then
+    GCC_ARCH="arm-linux-gnueabihf"
+    DEBIAN_ARCH="armhf"
+    DEVICE_TREES="arch/arm/boot/dts/rk3288-veyron-jaq.dtb"
+    DEVICE_TREES+=" arch/arm/boot/dts/sun8i-h3-libretech-all-h3-cc.dtb"
+    DEVICE_TREES+=" arch/arm/boot/dts/imx6q-cubox-i.dtb"
+    apt-get install -y libssl-dev:armhf
+else
+    GCC_ARCH="x86_64-linux-gnu"
+    DEBIAN_ARCH="amd64"
+    DEVICE_TREES=""
+fi
+
+export ARCH=${KERNEL_ARCH}
+export CROSS_COMPILE="${GCC_ARCH}-"
+
+# The kernel doesn't like the gold linker (or the old lld in our debians).
+# Sneak in some override symlinks during kernel build until we can update
+# debian.
+mkdir -p ld-links
+for i in /usr/bin/*-ld /usr/bin/ld; do
+    i=`basename $i`
+    ln -sf /usr/bin/$i.bfd ld-links/$i
+done
+export PATH=`pwd`/ld-links:$PATH
+
+git config --global user.email "fdo@example.com"
+git config --global user.name "freedesktop.org CI"
+
+# Try to merge fixes from target repo
+if [ "$(git ls-remote --exit-code --heads ${UPSTREAM_REPO} ${TARGET_BRANCH}-external-fixes)" ]; then
+    git pull ${UPSTREAM_REPO} ${TARGET_BRANCH}-external-fixes
+fi
+
+# Try to merge fixes from local repo if this isn't a merge request
+if [ -z "$CI_MERGE_REQUEST_PROJECT_PATH" ]; then
+    if [ "$(git ls-remote --exit-code --heads origin ${TARGET_BRANCH}-external-fixes)" ]; then
+        git pull origin ${TARGET_BRANCH}-external-fixes
+    fi
+fi
+
+for opt in $ENABLE_KCONFIGS; do
+  echo CONFIG_$opt=y >> drivers/gpu/drm/ci/${KERNEL_ARCH}.config
+done
+for opt in $DISABLE_KCONFIGS; do
+  echo CONFIG_$opt=n >> drivers/gpu/drm/ci/${KERNEL_ARCH}.config
+done
+
+if [[ -n "${MERGE_FRAGMENT}" ]]; then
+    ./scripts/kconfig/merge_config.sh ${DEFCONFIG} drivers/gpu/drm/ci/${MERGE_FRAGMENT}
+else
+    make `basename ${DEFCONFIG}`
+fi
+
+make ${KERNEL_IMAGE_NAME}
+
+mkdir -p /lava-files/
+for image in ${KERNEL_IMAGE_NAME}; do
+    cp arch/${KERNEL_ARCH}/boot/${image} /lava-files/.
+done
+
+if [[ -n ${DEVICE_TREES} ]]; then
+    make dtbs
+    cp ${DEVICE_TREES} /lava-files/.
+fi
+
+if [[ ${DEBIAN_ARCH} = "amd64" ]]; then
+    make modules
+    mkdir -p install/modules/
+    INSTALL_MOD_PATH=install/modules/ make modules_install
+fi
+
+if [[ ${DEBIAN_ARCH} = "arm64" ]]; then
+    make Image.lzma
+    mkimage \
+        -f auto \
+        -A arm \
+        -O linux \
+        -d arch/arm64/boot/Image.lzma \
+        -C lzma\
+        -b arch/arm64/boot/dts/qcom/sdm845-cheza-r3.dtb \
+        /lava-files/cheza-kernel
+    KERNEL_IMAGE_NAME+=" cheza-kernel"
+
+    # Make a gzipped copy of the Image for db410c.
+    gzip -k /lava-files/Image
+    KERNEL_IMAGE_NAME+=" Image.gz"
+fi
+
+# Pass needed files to the test stage
+mkdir -p install
+cp -rfv .gitlab-ci/* install/.
+cp -rfv install/common install/ci-common
+cp -rfv drivers/gpu/drm/ci/* install/.
+
+. .gitlab-ci/container/container_post_build.sh
+
+if [[ "$UPLOAD_TO_MINIO" = "1" ]]; then
+    xz -7 -c -T${FDO_CI_CONCURRENT:-4} vmlinux > /lava-files/vmlinux.xz
+    ci-fairy minio login --token-file "${CI_JOB_JWT_FILE}"
+    FILES_TO_UPLOAD="$KERNEL_IMAGE_NAME vmlinux.xz"
+
+    if [[ -n $DEVICE_TREES ]]; then
+        FILES_TO_UPLOAD="$FILES_TO_UPLOAD $(basename -a $DEVICE_TREES)"
+    fi
+
+    for f in $FILES_TO_UPLOAD; do
+        ci-fairy minio cp /lava-files/$f \
+                minio://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/$f
+    done
+
+    MINIO_ARTIFACT_NAME="kernel-files.tar.gz"
+    tar -czf $MINIO_ARTIFACT_NAME install
+    ci-fairy minio login --token-file "${CI_JOB_JWT_FILE}"
+    ci-fairy minio cp ${MINIO_ARTIFACT_NAME} minio://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/${MINIO_ARTIFACT_NAME}
+
+    echo "Download vmlinux.xz from https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/vmlinux.xz"
+fi
+
+mkdir -p artifacts/install/lib
+mv install/* artifacts/install/.
+rm -rf artifacts/install/modules
+ln -s common artifacts/install/ci-common
+
+for image in ${KERNEL_IMAGE_NAME}; do
+    cp /lava-files/$image artifacts/install/.
+done
+
+tar -C artifacts -cf artifacts/install.tar install
+rm -rf artifacts/install
diff --git a/drivers/gpu/drm/ci/build.yml b/drivers/gpu/drm/ci/build.yml
new file mode 100644
index 000000000000..08cc817d9a07
--- /dev/null
+++ b/drivers/gpu/drm/ci/build.yml
@@ -0,0 +1,110 @@
+.build:
+  extends:
+    - .build-rules
+  stage: build
+  artifacts:
+    paths:
+      - artifacts
+  script:
+    - FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash drivers/gpu/drm/ci/build.sh
+
+.build:armhf:
+  extends:
+    - .build
+    - .use-debian/arm_build
+  tags:
+    - aarch64
+  variables:
+    DEFCONFIG: "arch/arm/configs/multi_v7_defconfig"
+    KERNEL_IMAGE_NAME: "zImage"
+    KERNEL_ARCH: "arm"
+
+.build:arm64:
+  extends:
+    - .build
+    - .use-debian/arm_build
+  tags:
+    - aarch64
+  variables:
+    DEFCONFIG: "arch/arm64/configs/defconfig"
+    KERNEL_IMAGE_NAME: "Image"
+    KERNEL_ARCH: "arm64"
+
+.build:amd64:
+  extends:
+    - .build
+    - .use-debian/x86_build
+  variables:
+    DEFCONFIG: "arch/x86/configs/x86_64_defconfig"
+    KERNEL_IMAGE_NAME: "bzImage"
+    KERNEL_ARCH: "x86_64"
+
+
+# Build IGT for testing on devices
+
+igt:armhf:
+  extends: .build:armhf
+  script:
+    - FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash drivers/gpu/drm/ci/build-igt.sh
+
+igt:arm64:
+  extends: .build:arm64
+  script:
+    - FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash drivers/gpu/drm/ci/build-igt.sh
+
+igt:amd64:
+  extends: .build:amd64
+  script:
+    - FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash drivers/gpu/drm/ci/build-igt.sh
+
+# Build kernels for testing on devices
+
+testing:armhf:
+  extends: .build:armhf
+  variables:
+    # Would be good to have DEBUG_KMEMLEAK, but it doesn't work well with any of
+    # PROVE_LOCKING and KASAN as of 5.17.
+    #
+    # db410c and db820c don't boot with KASAN_INLINE, probably due to the kernel
+    # becoming too big for their bootloaders.
+    ENABLE_KCONFIGS: "PROVE_LOCKING DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT"
+    UPLOAD_TO_MINIO: 1
+    MERGE_FRAGMENT: arm.config
+
+testing:arm64:
+  extends: .build:arm64
+  variables:
+    # Would be good to have DEBUG_KMEMLEAK, but it doesn't work well with any of
+    # PROVE_LOCKING and KASAN as of 5.17.
+    #
+    # db410c and db820c don't boot with KASAN_INLINE, probably due to the kernel
+    # becoming too big for their bootloaders.
+    ENABLE_KCONFIGS: "PROVE_LOCKING DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT"
+    UPLOAD_TO_MINIO: 1
+    MERGE_FRAGMENT: arm64.config
+
+testing:amd64:
+  extends: .build:amd64
+  variables:
+    # Would be good to have DEBUG_KMEMLEAK, but it doesn't work well with any of
+    # PROVE_LOCKING and KASAN as of 5.17.
+    #
+    # db410c and db820c don't boot with KASAN_INLINE, probably due to the kernel
+    # becoming too big for their bootloaders.
+    ENABLE_KCONFIGS: "PROVE_LOCKING DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT"
+    UPLOAD_TO_MINIO: 1
+    MERGE_FRAGMENT: x86_64.config
+
+
+# Jobs for build-testing different configurations
+
+build:armhf:
+  extends: .build:armhf
+
+build-nodebugfs:arm64:
+  extends: .build:arm64
+  variables:
+    DISABLE_KCONFIGS: "DEBUG_FS"
+
+build:x86_64:
+  extends: .build:amd64
diff --git a/drivers/gpu/drm/ci/check-patch.py b/drivers/gpu/drm/ci/check-patch.py
new file mode 100755
index 000000000000..a5f399a20e25
--- /dev/null
+++ b/drivers/gpu/drm/ci/check-patch.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# check-patch.py: run checkpatch.pl across all commits in a branch
+#
+# Based on qemu/.gitlab-ci.d/check-patch.py
+#
+# Copyright (C) 2020 Red Hat, Inc.
+# Copyright (C) 2022 Collabora Ltd.
+
+import os
+import os.path
+import sys
+import subprocess
+
+repourl = "https://gitlab.freedesktop.org/%s.git" % os.environ["CI_MERGE_REQUEST_PROJECT_PATH"]
+
+# GitLab CI environment does not give us any direct info about the
+# base for the user's branch. We thus need to figure out a common
+# ancestor between the user's branch and current git master.
+os.environ["GIT_DEPTH"] = "1000"
+subprocess.call(["git", "remote", "remove", "check-patch"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
+subprocess.check_call(["git", "remote", "add", "check-patch", repourl])
+subprocess.check_call(["git", "fetch", "check-patch", os.environ["CI_MERGE_REQUEST_TARGET_BRANCH_NAME"]],
+                      stdout=subprocess.DEVNULL,
+                      stderr=subprocess.DEVNULL)
+
+ancestor = subprocess.check_output(["git", "merge-base",
+                                    "check-patch/%s" % os.environ["CI_MERGE_REQUEST_TARGET_BRANCH_NAME"], "HEAD"],
+                                   universal_newlines=True)
+
+ancestor = ancestor.strip()
+
+log = subprocess.check_output(["git", "log", "--format=%H %s",
+                               ancestor + "..."],
+                              universal_newlines=True)
+
+subprocess.check_call(["git", "remote", "rm", "check-patch"])
+
+if log == "":
+    print("\nNo commits since %s, skipping checks\n" % ancestor)
+    sys.exit(0)
+
+errors = False
+
+print("\nChecking all commits since %s...\n" % ancestor, flush=True)
+
+ret = subprocess.run(["scripts/checkpatch.pl",
+                      "--terse",
+                      "--types", os.environ["CHECKPATCH_TYPES"],
+                      "--git", ancestor + "..."])
+
+if ret.returncode != 0:
+    print("    ❌ FAIL one or more commits failed scripts/checkpatch.pl")
+    sys.exit(1)
+
+sys.exit(0)
diff --git a/drivers/gpu/drm/ci/container.yml b/drivers/gpu/drm/ci/container.yml
new file mode 100644
index 000000000000..af2416a84daf
--- /dev/null
+++ b/drivers/gpu/drm/ci/container.yml
@@ -0,0 +1,54 @@
+.container:
+  variables:
+    CI_REPOSITORY_URL: ${DRM_CI_PROJECT_URL}.git # So ci-templates clones drm-ci instead of the repo to test
+    CI_COMMIT_SHA: ${DRM_CI_COMMIT_SHA}
+
+debian/x86_build-base:
+  variables:
+    EXTRA_LOCAL_PACKAGES: "libcairo-dev libdw-dev libjson-c-dev libkmod-dev libpciaccess-dev libprocps-dev libudev-dev libunwind-dev python3-docutils bc curl python3-ply libssl-dev"
+
+debian/x86_test-gl:
+  variables:
+    EXTRA_EPHEMERAL_PACKAGES: "libcairo-dev libdw-dev libjson-c-dev libkmod-dev libpciaccess-dev libprocps-dev libunwind-dev python3-docutils"
+    EXTRA_LOCAL_PACKAGES: "jq libasound2 libcairo2 libdw1 libglib2.0-0 libgsl25 libjson-c5 libkmod2 libprocps8 curl libgles2"
+
+debian/arm_build:
+  variables:
+    EXTRA_LOCAL_PACKAGES: "libcairo-dev libdw-dev libjson-c-dev libkmod-dev libpciaccess-dev libprocps-dev libudev-dev libunwind-dev python3-docutils curl libssl-dev crossbuild-essential-armhf libkmod-dev:armhf libcairo-dev:armhf libdw-dev:armhf libjson-c5:armhf libkmod-dev:armhf libpciaccess-dev:armhf libprocps-dev:armhf libudev-dev:armhf libunwind-dev:armhf"
+
+debian/arm_test:
+  variables:
+    EXTRA_LOCAL_PACKAGES: "curl"
+
+.kernel+rootfs:
+  variables:
+    EXTRA_LOCAL_PACKAGES: "jq libasound2 libcairo2 libdw1 libglib2.0-0 libgsl25 libjson-c5 libprocps8"
+
+# Disable container jobs that we won't use
+debian/x86_test-vk:
+  rules:
+    - when: never
+
+fedora/x86_build:
+  rules:
+    - when: never
+
+debian/android_build:
+  rules:
+    - when: never
+
+windows_build_vs2019:
+  rules:
+    - when: never
+
+windows_test_vs2019:
+  rules:
+    - when: never
+
+debian/x86_build-mingw:
+   rules:
+    - when: never
+
+windows_vs2019:
+   rules:
+    - when: never
diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml
new file mode 100644
index 000000000000..98e47fa80a51
--- /dev/null
+++ b/drivers/gpu/drm/ci/gitlab-ci.yml
@@ -0,0 +1,226 @@
+variables:
+  # Change this to use your fork of drm-ci
+  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
+  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha 09eb70d72f13755b646a20dcd1e7971d69c0a2da
+
+  UPSTREAM_REPO: git://anongit.freedesktop.org/drm/drm
+  TARGET_BRANCH: drm-next
+
+  IGT_VERSION: cffa5fffe9acddf49565b4caeeb5e3355ff2ea44
+
+  DEQP_RUNNER_GIT_URL: https://gitlab.freedesktop.org/anholt/deqp-runner.git
+  DEQP_RUNNER_GIT_TAG: v0.15.0
+
+  FDO_UPSTREAM_REPO: tomeu/linux   # The repo where the git-archive daily runs
+  MESA_TEMPLATES_COMMIT: &ci-templates-commit d5aa3941aa03c2f716595116354fb81eb8012acb
+  DRM_CI_PROJECT_URL: https://gitlab.freedesktop.org/${DRM_CI_PROJECT_PATH}
+  CI_PRE_CLONE_SCRIPT: |-
+          set -o xtrace
+          wget -q -O download-git-cache.sh ${DRM_CI_PROJECT_URL}/-/raw/${DRM_CI_COMMIT_SHA}/.gitlab-ci/download-git-cache.sh
+          bash download-git-cache.sh
+          rm download-git-cache.sh
+          set +o xtrace
+  MINIO_HOST: minio-packet.freedesktop.org
+  # per-pipeline artifact storage on MinIO
+  PIPELINE_ARTIFACTS_BASE: ${MINIO_HOST}/artifacts/${CI_PROJECT_PATH}/${CI_PIPELINE_ID}
+  # per-job artifact storage on MinIO
+  JOB_ARTIFACTS_BASE: ${PIPELINE_ARTIFACTS_BASE}/${CI_JOB_ID}
+
+default:
+  before_script:
+    - echo -e "\e[0Ksection_start:$(date +%s):unset_env_vars_section[collapsed=true]\r\e[0KUnsetting vulnerable environment variables"
+    - export CI_JOB_JWT_FILE="${CI_JOB_JWT_FILE:-$(mktemp)}"
+    - echo -n "${CI_JOB_JWT}" > "${CI_JOB_JWT_FILE}"
+    - unset CI_JOB_JWT
+    - echo -e "\e[0Ksection_end:$(date +%s):unset_env_vars_section\r\e[0K"
+
+    - echo -e "\e[0Ksection_start:$(date +%s):drm_ci_download_section[collapsed=true]\r\e[0KDownloading drm-ci from $DRM_CI_PROJECT_URL/-/archive/$DRM_CI_COMMIT_SHA/drm-ci-$DRM_CI_COMMIT_SHA.tar.gz"
+    - cd $CI_PROJECT_DIR
+    - curl --output - $DRM_CI_PROJECT_URL/-/archive/$DRM_CI_COMMIT_SHA/drm-ci-$DRM_CI_COMMIT_SHA.tar.gz | tar -xz
+    - mv drm-ci-$DRM_CI_COMMIT_SHA/.gitlab-ci* .
+    - rm -rf drm-ci-$DRM_CI_COMMIT_SHA/
+    - echo -e "\e[0Ksection_end:$(date +%s):drm_ci_download_section\r\e[0K"
+
+  after_script:
+    - >
+      set +x
+
+      test -e "${CI_JOB_JWT_FILE}" &&
+      export CI_JOB_JWT="$(<${CI_JOB_JWT_FILE})" &&
+      rm "${CI_JOB_JWT_FILE}"
+
+include:
+  - project: 'freedesktop/ci-templates'
+    ref: 34f4ade99434043f88e164933f570301fd18b125
+    file:
+      - '/templates/ci-fairy.yml'
+  - project: 'freedesktop/ci-templates'
+    ref: *ci-templates-commit
+    file:
+      - '/templates/debian.yml'
+      - '/templates/fedora.yml'
+  - project: *drm-ci-project-path
+    ref: *drm-ci-commit-sha
+    file:
+      - '/.gitlab-ci/container/gitlab-ci.yml'
+      - '/.gitlab-ci/test/gitlab-ci.yml'
+      - '/.gitlab-ci/lava/lava-gitlab-ci.yml'
+  - drivers/gpu/drm/ci/image-tags.yml
+  - drivers/gpu/drm/ci/container.yml
+  - drivers/gpu/drm/ci/static-checks.yml
+  - drivers/gpu/drm/ci/build.yml
+  - drivers/gpu/drm/ci/test.yml
+  - 'https://gitlab.freedesktop.org/gfx-ci/lab-status/-/raw/main/lab-status.yml'
+
+
+stages:
+  - sanity
+  - container
+  - git-archive
+  - build
+  - amdgpu
+  - i915
+  - mediatek
+  - meson
+  - msm
+  - rockchip
+  - virtio-gpu
+
+# YAML anchors for rule conditions
+# --------------------------------
+.rules-anchors:
+  rules:
+    # Pipeline for forked project branch
+    - if: &is-forked-branch '$CI_COMMIT_BRANCH && $CI_PROJECT_NAMESPACE != "mesa"'
+      when: manual
+    # Forked project branch / pre-merge pipeline not for Marge bot
+    - if: &is-forked-branch-or-pre-merge-not-for-marge '$CI_PROJECT_NAMESPACE != "mesa" || ($GITLAB_USER_LOGIN != "marge-bot" && $CI_PIPELINE_SOURCE == "merge_request_event")'
+      when: manual
+    # Pipeline runs for the main branch of the upstream Mesa project
+    - if: &is-mesa-main '$CI_PROJECT_NAMESPACE == "mesa" && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH && $CI_COMMIT_BRANCH'
+      when: always
+    # Post-merge pipeline
+    - if: &is-post-merge '$CI_PROJECT_NAMESPACE == "mesa" && $CI_COMMIT_BRANCH'
+      when: on_success
+    # Post-merge pipeline, not for Marge Bot
+    - if: &is-post-merge-not-for-marge '$CI_PROJECT_NAMESPACE == "mesa" && $GITLAB_USER_LOGIN != "marge-bot" && $CI_COMMIT_BRANCH'
+      when: on_success
+    # Pre-merge pipeline
+    - if: &is-pre-merge '$CI_PIPELINE_SOURCE == "merge_request_event"'
+      when: on_success
+    # Pre-merge pipeline for Marge Bot
+    - if: &is-pre-merge-for-marge '$GITLAB_USER_LOGIN == "marge-bot" && $CI_PIPELINE_SOURCE == "merge_request_event"'
+      when: on_success
+
+# Rule to filter for only scheduled pipelines.
+.scheduled_pipeline-rules:
+  rules:
+    - if: &is-scheduled-pipeline '$CI_PIPELINE_SOURCE == "schedule"'
+      when: on_success
+
+# Generic rule to not run the job during scheduled pipelines. Jobs that aren't
+# something like a nightly run should include this rule.
+.no_scheduled_pipelines-rules:
+  rules:
+    - if: *is-scheduled-pipeline
+      when: never
+
+# When to automatically run the CI for build jobs
+.build-rules:
+  rules:
+    - !reference [.no_scheduled_pipelines-rules, rules]
+    # Allow triggering jobs manually in other cases
+    - when: on_success
+
+
+.ci-deqp-artifacts:
+  artifacts:
+    name: "mesa_${CI_JOB_NAME}"
+    when: always
+    untracked: false
+    paths:
+      # Watch out!  Artifacts are relative to the build dir.
+      # https://gitlab.com/gitlab-org/gitlab-ce/commit/8788fb925706cad594adf6917a6c5f6587dd1521
+      - artifacts
+      - _build/meson-logs/*.txt
+      - _build/meson-logs/strace
+
+
+.container-rules:
+  rules:
+    - !reference [.no_scheduled_pipelines-rules, rules]
+    # Run pipeline by default in the main project if any CI pipeline
+    # configuration files were changed, to ensure docker images are up to date
+    - if: *is-post-merge
+      changes:
+      - .gitlab-ci.yml
+      - .gitlab-ci/**/*
+      when: on_success
+    # Run pipeline by default if it was triggered by Marge Bot, is for a
+    # merge request, and any files affecting the pipeline were changed
+    - if: *is-pre-merge-for-marge
+      when: on_success
+    # Run pipeline by default in the main project if it was not triggered by
+    # Marge Bot, and any files affecting the pipeline were changed
+    - if: *is-post-merge-not-for-marge
+      when: on_success
+    # Allow triggering jobs manually in other cases
+    - when: on_success
+
+
+
+# Git archive
+
+make git archive:
+  extends:
+    - .fdo.ci-fairy
+  stage: git-archive
+  rules:
+    - !reference [.scheduled_pipeline-rules, rules]
+  # ensure we are running on packet
+  tags:
+    - packet.net
+  script:
+    # Remove drm-ci files we just added
+    - rm -rf .gitlab-ci.*
+
+    # Compactify the .git directory
+    - git gc --aggressive
+    # compress the current folder
+    - tar -cvzf ../$CI_PROJECT_NAME.tar.gz .
+
+    # login with the JWT token file
+    - ci-fairy minio login --token-file "${CI_JOB_JWT_FILE}"
+    - ci-fairy minio cp ../$CI_PROJECT_NAME.tar.gz minio://$MINIO_HOST/git-cache/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_PROJECT_NAME.tar.gz
+
+
+# Sanity checks of MR settings and commit logs
+sanity:
+  extends:
+    - .fdo.ci-fairy
+  stage: sanity
+  rules:
+    - if: *is-pre-merge
+      when: on_success
+    # Other cases default to never
+  variables:
+    GIT_STRATEGY: none
+  script:
+    # ci-fairy check-commits --junit-xml=check-commits.xml
+    - ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request.xml
+  artifacts:
+    when: on_failure
+    reports:
+      junit: check-*.xml
+
+# Rules for tests that should not block merging, but should be available to
+# optionally run with the "play" button in the UI in pre-merge non-marge
+# pipelines.  This should appear in "extends:" after any includes of
+# test-source-dep.yml rules, so that these rules replace those.
+.test-manual-mr:
+  rules:
+    - !reference [.no_scheduled_pipelines-rules, rules]
+    - if: *is-forked-branch-or-pre-merge-not-for-marge
+      when: manual
+  variables:
+    JOB_TIMEOUT: 80
diff --git a/drivers/gpu/drm/ci/igt_runner.sh b/drivers/gpu/drm/ci/igt_runner.sh
new file mode 100755
index 000000000000..5bfa78f03d00
--- /dev/null
+++ b/drivers/gpu/drm/ci/igt_runner.sh
@@ -0,0 +1,77 @@
+#!/bin/sh
+# SPDX-License-Identifier: MIT
+
+set -ex
+
+export IGT_FORCE_DRIVER=${DRIVER_NAME}
+export PATH=$PATH:/igt/bin/
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/igt/lib/aarch64-linux-gnu/:/igt/lib/x86_64-linux-gnu:/igt/lib
+
+# Uncomment the below to debug problems with driver probing
+: '
+ls -l /dev/dri/
+cat /sys/kernel/debug/devices_deferred
+cat /sys/kernel/debug/device_component/*
+'
+
+# Dump drm state to confirm that kernel was able to find a connected display:
+# TODO this path might not exist for all drivers.. maybe run modetest instead?
+set +e
+cat /sys/kernel/debug/dri/*/state
+set -e
+
+# Cannot use HWCI_KERNEL_MODULES as at that point we don't have the module in /lib
+if [ "$IGT_FORCE_DRIVER" = "amdgpu" ]; then
+    mv /install/modules/lib/modules/* /lib/modules/.
+    modprobe amdgpu
+fi
+
+if [ -e "/install/xfails/$DRIVER_NAME-$GPU_VERSION-skips.txt" ]; then
+    IGT_SKIPS="--skips /install/xfails/$DRIVER_NAME-$GPU_VERSION-skips.txt"
+fi
+
+if [ -e "/install/xfails/$DRIVER_NAME-$GPU_VERSION-flakes.txt" ]; then
+    IGT_FLAKES="--flakes /install/xfails/$DRIVER_NAME-$GPU_VERSION-flakes.txt"
+fi
+
+if [ -e "/install/xfails/$DRIVER_NAME-$GPU_VERSION-fails.txt" ]; then
+    IGT_FAILS="--baseline /install/xfails/$DRIVER_NAME-$GPU_VERSION-fails.txt"
+fi
+
+if [ "`uname -m`" = "aarch64" ]; then
+    ARCH="arm64"
+elif [ "`uname -m`" = "armv7l" ]; then
+    ARCH="arm"
+else
+    ARCH="x86_64"
+fi
+
+wget -S --progress=dot:giga -O- ${FDO_HTTP_CACHE_URI:-}$PIPELINE_ARTIFACTS_BASE/$ARCH/igt.tar.gz | tar -xz -C /
+
+set +e
+igt-runner \
+    run \
+    --igt-folder /igt/libexec/igt-gpu-tools \
+    --caselist /install/testlist.txt \
+    --output /results \
+    $IGT_SKIPS \
+    $IGT_FLAKES \
+    $IGT_FAILS \
+    --fraction-start $CI_NODE_INDEX \
+    --fraction $CI_NODE_TOTAL \
+    --jobs 1
+ret=$?
+set -e
+
+deqp-runner junit \
+   --testsuite IGT \
+   --results /results/failures.csv \
+   --output /results/junit.xml \
+   --limit 50 \
+   --template "See https://$CI_PROJECT_ROOT_NAMESPACE.pages.freedesktop.org/-/$CI_PROJECT_NAME/-/jobs/$CI_JOB_ID/artifacts/results/{{testcase}}.xml"
+
+# Store the results also in the simpler format used by the runner in ChromeOS CI
+#sed -r 's/(dmesg-warn|pass)/success/g' /results/results.txt > /results/results_simple.txt
+
+cd $oldpath
+exit $ret
diff --git a/drivers/gpu/drm/ci/image-tags.yml b/drivers/gpu/drm/ci/image-tags.yml
new file mode 100644
index 000000000000..6d6773554028
--- /dev/null
+++ b/drivers/gpu/drm/ci/image-tags.yml
@@ -0,0 +1,13 @@
+variables:
+   CONTAINER_TAG: "2022-09-08-mesa-uprev"
+   DEBIAN_X86_BUILD_BASE_IMAGE: "debian/x86_build-base"
+   DEBIAN_BASE_TAG: "${CONTAINER_TAG}"
+
+   DEBIAN_X86_BUILD_IMAGE_PATH: "debian/x86_build"
+   DEBIAN_BUILD_TAG: "${CONTAINER_TAG}"
+
+   KERNEL_ROOTFS_TAG: "${CONTAINER_TAG}"
+
+   DEBIAN_X86_TEST_BASE_IMAGE: "debian/x86_test-base"
+   DEBIAN_X86_TEST_IMAGE_PATH: "debian/x86_test-gl"
+   DEBIAN_X86_TEST_GL_TAG: "${CONTAINER_TAG}"
diff --git a/drivers/gpu/drm/ci/lava-submit.sh b/drivers/gpu/drm/ci/lava-submit.sh
new file mode 100755
index 000000000000..4bc37179687c
--- /dev/null
+++ b/drivers/gpu/drm/ci/lava-submit.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+# SPDX-License-Identifier: MIT
+
+set -e
+set -x
+
+# Try to use the kernel and rootfs built in mainline first, so we're more
+# likely to hit cache
+if wget -q --method=HEAD "https://${BASE_SYSTEM_MAINLINE_HOST_PATH}/done"; then
+	BASE_SYSTEM_HOST_PATH="${BASE_SYSTEM_MAINLINE_HOST_PATH}"
+else
+	BASE_SYSTEM_HOST_PATH="${BASE_SYSTEM_FORK_HOST_PATH}"
+fi
+
+rm -rf results
+mkdir -p results/job-rootfs-overlay/
+
+cp artifacts/ci-common/capture-devcoredump.sh results/job-rootfs-overlay/
+cp artifacts/ci-common/init-*.sh results/job-rootfs-overlay/
+cp artifacts/ci-common/intel-gpu-freq.sh results/job-rootfs-overlay/
+
+# Prepare env vars for upload.
+KERNEL_IMAGE_BASE_URL="https://${BASE_SYSTEM_HOST_PATH}" \
+	artifacts/ci-common/generate-env.sh > results/job-rootfs-overlay/set-job-env-vars.sh
+
+tar zcf job-rootfs-overlay.tar.gz -C results/job-rootfs-overlay/ .
+ci-fairy minio login --token-file "${CI_JOB_JWT_FILE}"
+ci-fairy minio cp job-rootfs-overlay.tar.gz "minio://${JOB_ROOTFS_OVERLAY_PATH}"
+
+touch results/lava.log
+tail -f results/lava.log &
+
+PYTHONPATH=artifacts/ artifacts/lava/lava_job_submitter.py \
+	--dump-yaml \
+	--pipeline-info "$CI_JOB_NAME: $CI_PIPELINE_URL on $CI_COMMIT_REF_NAME ${CI_NODE_INDEX}/${CI_NODE_TOTAL}" \
+	--rootfs-url-prefix "https://${BASE_SYSTEM_HOST_PATH}" \
+	--kernel-url-prefix "https://${PIPELINE_ARTIFACTS_BASE}/${ARCH}" \
+	--build-url "${FDO_HTTP_CACHE_URI:-}https://${PIPELINE_ARTIFACTS_BASE}/${ARCH}/kernel-files.tar.gz" \
+	--job-rootfs-overlay-url "${FDO_HTTP_CACHE_URI:-}https://${JOB_ROOTFS_OVERLAY_PATH}" \
+	--job-timeout ${JOB_TIMEOUT:-30} \
+	--first-stage-init artifacts/ci-common/init-stage1.sh \
+	--ci-project-dir ${CI_PROJECT_DIR} \
+	--device-type ${DEVICE_TYPE} \
+	--dtb ${DTB} \
+	--jwt-file "${CI_JOB_JWT_FILE}" \
+	--kernel-image-name ${KERNEL_IMAGE_NAME} \
+	--kernel-image-type "${KERNEL_IMAGE_TYPE}" \
+	--boot-method ${BOOT_METHOD} \
+	--visibility-group ${VISIBILITY_GROUP} \
+	--priority 50 \
+    --lava-tags "${LAVA_TAGS}" \
+    --mesa-job-name "$CI_JOB_NAME" \
+    >> results/lava.log
diff --git a/drivers/gpu/drm/ci/static-checks.yml b/drivers/gpu/drm/ci/static-checks.yml
new file mode 100644
index 000000000000..213177081914
--- /dev/null
+++ b/drivers/gpu/drm/ci/static-checks.yml
@@ -0,0 +1,12 @@
+check-patch:
+  extends:
+    - .build
+    - .use-debian/x86_build
+  script:
+    - drivers/gpu/drm/ci/check-patch.py
+  variables:
+    CHECKPATCH_TYPES: "BAD_SIGN_OFF,BAD_STABLE_ADDRESS_STYLE,COMMIT_COMMENT_SYMBOL,COMMIT_MESSAGE,EMAIL_SUBJECT,FROM_SIGN_OFF_MISMATCH,MISSING_SIGN_OFF,NO_AUTHOR_SIGN_OFF,DIFF_IN_COMMIT_MSG,GERRIT_CHANGE_ID,GIT_COMMIT_ID,UNKNOWN_COMMIT_ID,CODE_INDENT,BIT_MACRO,DOS_LINE_ENDINGS"
+  rules:
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
+      when: on_success
+    # Other cases default to never
diff --git a/drivers/gpu/drm/ci/test.yml b/drivers/gpu/drm/ci/test.yml
new file mode 100644
index 000000000000..399f0db01aeb
--- /dev/null
+++ b/drivers/gpu/drm/ci/test.yml
@@ -0,0 +1,322 @@
+.test-rules:
+  rules:
+    - if: '$FD_FARM == "offline" && $RUNNER_TAG =~ /^google-freedreno-/'
+      when: never
+    - if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
+      when: never
+    - !reference [.no_scheduled_pipelines-rules, rules]
+    - when: on_success
+
+.lava-test:
+  extends:
+    - .test-rules
+  script:
+    # Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY
+    - rm -rf install
+    - tar -xf artifacts/install.tar
+    - mv install/* artifacts/.
+    # Override it with our lava-submit.sh script
+    - ./artifacts/lava-submit.sh
+
+.lava-igt:armhf:
+  extends:
+    - .lava-test:armhf
+  variables:
+    HWCI_TEST_SCRIPT: "/install/igt_runner.sh"
+    ARCH: "armhf"
+  dependencies:
+    - testing:armhf
+  needs:
+    - kernel+rootfs_armhf
+    - debian/x86_build
+    - testing:armhf
+    - igt:armhf
+
+.lava-igt:arm64:
+  extends:
+    - .lava-test:arm64
+  variables:
+    HWCI_TEST_SCRIPT: "/install/igt_runner.sh"
+    ARCH: "arm64"
+  dependencies:
+    - testing:arm64
+  needs:
+    - kernel+rootfs_arm64
+    - debian/x86_build
+    - testing:arm64
+    - igt:arm64
+
+.lava-igt:amd64:
+  extends:
+    - .lava-test:amd64
+  variables:
+    HWCI_TEST_SCRIPT: "/install/igt_runner.sh"
+    ARCH: "amd64"
+  dependencies:
+    - testing:amd64
+  needs:
+    - kernel+rootfs_amd64
+    - debian/x86_build
+    - testing:amd64
+    - igt:amd64
+
+.baremetal-igt-arm64:
+  extends:
+    - .baremetal-test-arm64
+    - .use-debian/arm_test
+    - .test-rules
+  variables:
+    FDO_CI_CONCURRENT: 10
+    HWCI_TEST_SCRIPT: "/install/igt_runner.sh"
+    MINIO_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"
+  needs:
+    - debian/arm_test
+    - job: testing:arm64
+      artifacts: false
+    - igt:arm64
+  tags:
+    - $RUNNER_TAG
+
+msm:sc7180:
+  extends:
+    - .lava-igt:arm64
+  stage: msm
+  parallel: 2
+  variables:
+    DRIVER_NAME: msm
+    DEVICE_TYPE: sc7180-trogdor-lazor-limozeen
+    DTB: sc7180-trogdor-lazor-limozeen-nots-r5
+    BOOT_METHOD: depthcharge
+    KERNEL_IMAGE_TYPE: ""
+    GPU_VERSION: sc7180
+    RUNNER_TAG: mesa-ci-x86-64-lava-sc7180-trogdor-lazor-limozeen
+
+msm:apq8016:
+  extends:
+    - .baremetal-igt-arm64
+  stage: msm
+  variables:
+    DRIVER_NAME: msm
+    BM_DTB: https://${PIPELINE_ARTIFACTS_BASE}/arm64/apq8016-sbc.dtb
+    GPU_VERSION: apq8016
+    RUNNER_TAG: google-freedreno-db410c
+  script:
+    - ./install/bare-metal/fastboot.sh
+
+msm:apq8096:
+  extends:
+    - .baremetal-igt-arm64
+  stage: msm
+  variables:
+    DRIVER_NAME: msm
+    BM_KERNEL_EXTRA_ARGS: maxcpus=2
+    BM_DTB: https://${PIPELINE_ARTIFACTS_BASE}/arm64/apq8096-db820c.dtb
+    GPU_VERSION: apq8096
+    RUNNER_TAG: google-freedreno-db820c
+  script:
+    - ./install/bare-metal/fastboot.sh
+
+msm:sdm845:
+  extends:
+    - .baremetal-igt-arm64
+  stage: msm
+  parallel: 2
+  variables:
+    DRIVER_NAME: msm
+    BM_KERNEL: https://${PIPELINE_ARTIFACTS_BASE}/arm64/cheza-kernel
+    GPU_VERSION: sdm845
+    RUNNER_TAG: google-freedreno-cheza
+  script:
+    - ./install/bare-metal/cros-servo.sh
+
+rockchip:rk3288:
+  extends:
+    - .lava-igt:armhf
+  stage: rockchip
+  variables:
+    DRIVER_NAME: rockchip
+    DEVICE_TYPE: rk3288-veyron-jaq
+    DTB: ${DEVICE_TYPE}
+    BOOT_METHOD: depthcharge
+    KERNEL_IMAGE_TYPE: "zimage"
+    GPU_VERSION: rk3288
+    RUNNER_TAG: mesa-ci-x86-64-lava-rk3288-veyron-jaq
+
+rockchip:rk3399:
+  extends:
+    - .lava-igt:arm64
+  stage: rockchip
+  parallel: 2
+  variables:
+    DRIVER_NAME: rockchip
+    DEVICE_TYPE: rk3399-gru-kevin
+    DTB: ${DEVICE_TYPE}
+    BOOT_METHOD: depthcharge
+    KERNEL_IMAGE_TYPE: ""
+    GPU_VERSION: rk3399
+    RUNNER_TAG: mesa-ci-x86-64-lava-rk3399-gru-kevin
+
+.i915:
+  extends:
+    - .lava-igt:amd64
+  stage: i915
+  variables:
+    DRIVER_NAME: i915
+    DTB: ""
+    BOOT_METHOD: depthcharge
+    KERNEL_IMAGE_TYPE: ""
+
+i915:apl:
+  extends:
+    - .i915
+  parallel: 6
+  variables:
+    DEVICE_TYPE: asus-C523NA-A20057-coral
+    GPU_VERSION: apl
+    RUNNER_TAG: mesa-ci-x86-64-lava-asus-C523NA-A20057-coral
+
+i915:glk:
+  extends:
+    - .i915
+  parallel: 3
+  variables:
+    DEVICE_TYPE: hp-x360-12b-ca0010nr-n4020-octopus
+    GPU_VERSION: glk
+    RUNNER_TAG: mesa-ci-x86-64-lava-hp-x360-12b-ca0010nr-n4020-octopus
+
+i915:amly:
+  extends:
+    - .i915
+  parallel: 5
+  variables:
+    DEVICE_TYPE: asus-C433TA-AJ0005-rammus
+    GPU_VERSION: amly
+    RUNNER_TAG: mesa-ci-x86-64-lava-asus-C433TA-AJ0005-rammus
+
+i915:kbl:
+  extends:
+    - .i915
+  parallel: 3
+  variables:
+    DEVICE_TYPE: hp-x360-14-G1-sona
+    GPU_VERSION: kbl
+    RUNNER_TAG: mesa-ci-x86-64-lava-hp-x360-14-G1-sona
+
+i915:whl:
+  extends:
+    - .i915
+  parallel: 5
+  variables:
+    DEVICE_TYPE: dell-latitude-5400-8665U-sarien
+    GPU_VERSION: whl
+    RUNNER_TAG: mesa-ci-x86-64-lava-dell-latitude-5400-8665U-sarien
+
+i915:cml:
+  extends:
+    - .i915
+  parallel: 4
+  variables:
+    DEVICE_TYPE: asus-C436FA-Flip-hatch
+    GPU_VERSION: cml
+    RUNNER_TAG: mesa-ci-x86-64-lava-asus-C436FA-flip-hatch
+
+i915:tgl:
+  extends:
+    - .i915
+  parallel: 4
+  variables:
+    DEVICE_TYPE: asus-cx9400-volteer
+    GPU_VERSION: tgl
+    RUNNER_TAG: mesa-ci-x86-64-lava-asus-cx9400-volteer
+
+.amdgpu:
+  extends:
+    - .lava-igt:amd64
+  stage: amdgpu
+  variables:
+    DRIVER_NAME: amdgpu
+    DTB: ""
+    BOOT_METHOD: depthcharge
+    KERNEL_IMAGE_TYPE: ""
+
+amdgpu:stoney:
+  extends:
+    - .amdgpu
+  variables:
+    DEVICE_TYPE: hp-11A-G6-EE-grunt
+    GPU_VERSION: stoney
+    RUNNER_TAG: mesa-ci-x86-64-lava-hp-11A-G6-EE-grunt
+
+.mediatek:
+  extends:
+    - .lava-igt:arm64
+  stage: mediatek
+  variables:
+    DRIVER_NAME: mediatek
+    DTB: ${DEVICE_TYPE}
+    BOOT_METHOD: depthcharge
+    KERNEL_IMAGE_TYPE: ""
+
+mediatek:mt8173:
+  extends:
+    - .mediatek
+  variables:
+    DEVICE_TYPE: mt8173-elm-hana
+    GPU_VERSION: mt8173
+    RUNNER_TAG: mesa-ci-x86-64-lava-mt8173-elm-hana
+
+mediatek:mt8183:
+  extends:
+    - .mediatek
+  variables:
+    DEVICE_TYPE: mt8183-kukui-jacuzzi-juniper-sku16
+    GPU_VERSION: mt8183
+    RUNNER_TAG: mesa-ci-x86-64-lava-mt8183-kukui-jacuzzi-juniper-sku16
+
+# drm-mtk doesn't even probe yet in mainline for mt8192
+.mediatek:mt8192:
+  extends:
+    - .mediatek
+  variables:
+    DEVICE_TYPE: mt8192-asurada-spherion-r0
+    GPU_VERSION: mt8192
+    RUNNER_TAG: mesa-ci-x86-64-lava-mt8192-asurada-spherion-r0
+
+.meson:
+  extends:
+    - .lava-igt:arm64
+  stage: meson
+  variables:
+    DRIVER_NAME: meson
+    DTB: ${DEVICE_TYPE}
+    BOOT_METHOD: u-boot
+    KERNEL_IMAGE_TYPE: "image"
+
+meson:g12b:
+  extends:
+    - .meson
+  variables:
+    DEVICE_TYPE: meson-g12b-a311d-khadas-vim3
+    GPU_VERSION: g12b
+    RUNNER_TAG: mesa-ci-x86-64-lava-meson-g12b-a311d-khadas-vim3
+
+virtio_gpu:none:
+  stage: virtio-gpu
+  variables:
+    CROSVM_GALLIUM_DRIVER: llvmpipe
+    DRIVER_NAME: virtio_gpu
+    GPU_VERSION: none
+  extends:
+    - .test-gl
+  tags:
+    - kvm
+  script:
+    - ln -sf $CI_PROJECT_DIR/install /install
+    - mv install/bzImage /lava-files/bzImage
+    - install/crosvm-runner.sh install/igt_runner.sh
+  needs:
+    - debian/x86_test-gl
+    - testing:amd64
+    - igt:amd64
diff --git a/drivers/gpu/drm/ci/testlist.txt b/drivers/gpu/drm/ci/testlist.txt
new file mode 100644
index 000000000000..e90c3cfe5eed
--- /dev/null
+++ b/drivers/gpu/drm/ci/testlist.txt
@@ -0,0 +1,2763 @@
+core_auth@basic-auth
+core_auth@getclient-master-drop
+core_auth@getclient-simple
+core_auth@many-magics
+core_getclient
+core_getstats
+core_getversion
+core_setmaster_vs_auth
+drm_read@empty-block
+drm_read@empty-nonblock
+drm_read@fault-buffer
+drm_read@invalid-buffer
+drm_read@short-buffer-block
+drm_read@short-buffer-nonblock
+gem_eio@banned
+gem_eio@context-create
+gem_eio@create
+gem_eio@create-ext
+gem_eio@execbuf
+gem_eio@hibernate
+gem_eio@in-flight-10ms
+gem_eio@in-flight-1us
+gem_eio@in-flight-contexts-10ms
+gem_eio@in-flight-contexts-1us
+gem_eio@in-flight-contexts-immediate
+gem_eio@in-flight-external
+gem_eio@in-flight-immediate
+gem_eio@in-flight-internal-10ms
+gem_eio@in-flight-internal-1us
+gem_eio@in-flight-internal-immediate
+gem_eio@kms
+gem_eio@reset-stress
+gem_eio@throttle
+gem_eio@unwedge-stress
+gem_eio@wait-10ms
+gem_eio@wait-1us
+gem_eio@wait-immediate
+gem_eio@wait-wedge-10ms
+gem_eio@wait-wedge-1us
+gem_eio@wait-wedge-immediate
+kms_3d
+kms_addfb_basic@addfb25-4-tiled
+kms_addfb_basic@addfb25-bad-modifier
+kms_addfb_basic@addfb25-framebuffer-vs-set-tiling
+kms_addfb_basic@addfb25-modifier-no-flag
+kms_addfb_basic@addfb25-x-tiled-legacy
+kms_addfb_basic@addfb25-x-tiled-mismatch-legacy
+kms_addfb_basic@addfb25-yf-tiled-legacy
+kms_addfb_basic@addfb25-y-tiled-legacy
+kms_addfb_basic@addfb25-y-tiled-small-legacy
+kms_addfb_basic@bad-pitch-0
+kms_addfb_basic@bad-pitch-1024
+kms_addfb_basic@bad-pitch-128
+kms_addfb_basic@bad-pitch-256
+kms_addfb_basic@bad-pitch-32
+kms_addfb_basic@bad-pitch-63
+kms_addfb_basic@bad-pitch-65536
+kms_addfb_basic@bad-pitch-999
+kms_addfb_basic@basic
+kms_addfb_basic@basic-x-tiled-legacy
+kms_addfb_basic@basic-y-tiled-legacy
+kms_addfb_basic@bo-too-small
+kms_addfb_basic@bo-too-small-due-to-tiling
+kms_addfb_basic@clobberred-modifier
+kms_addfb_basic@framebuffer-vs-set-tiling
+kms_addfb_basic@invalid-get-prop
+kms_addfb_basic@invalid-get-prop-any
+kms_addfb_basic@invalid-set-prop
+kms_addfb_basic@invalid-set-prop-any
+kms_addfb_basic@invalid-smem-bo-on-discrete
+kms_addfb_basic@legacy-format
+kms_addfb_basic@master-rmfb
+kms_addfb_basic@no-handle
+kms_addfb_basic@size-max
+kms_addfb_basic@small-bo
+kms_addfb_basic@tile-pitch-mismatch
+kms_addfb_basic@too-high
+kms_addfb_basic@too-wide
+kms_addfb_basic@unused-handle
+kms_addfb_basic@unused-modifier
+kms_addfb_basic@unused-offsets
+kms_addfb_basic@unused-pitches
+kms_async_flips@alternate-sync-async-flip
+kms_async_flips@async-flip-with-page-flip-events
+kms_async_flips@crc
+kms_async_flips@invalid-async-flip
+kms_async_flips@test-cursor
+kms_async_flips@test-time-stamp
+kms_atomic@atomic-invalid-params
+kms_atomic@atomic_plane_damage
+kms_atomic@crtc-invalid-params
+kms_atomic@crtc-invalid-params-fence
+kms_atomic_interruptible@atomic-setmode
+kms_atomic_interruptible@legacy-cursor
+kms_atomic_interruptible@legacy-dpms
+kms_atomic_interruptible@legacy-pageflip
+kms_atomic_interruptible@legacy-setmode
+kms_atomic_interruptible@universal-setplane-cursor
+kms_atomic_interruptible@universal-setplane-primary
+kms_atomic@plane-cursor-legacy
+kms_atomic@plane-immutable-zpos
+kms_atomic@plane-invalid-params
+kms_atomic@plane-invalid-params-fence
+kms_atomic@plane-overlay-legacy
+kms_atomic@plane-primary-legacy
+kms_atomic@plane-primary-overlay-mutable-zpos
+kms_atomic@test-only
+kms_atomic_transition@plane-all-modeset-transition
+kms_atomic_transition@plane-all-modeset-transition-fencing
+kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels
+kms_atomic_transition@plane-all-transition-fencing
+kms_atomic_transition@plane-all-transition-nonblocking-fencing
+kms_atomic_transition@plane-primary-toggle-with-vblank-wait
+kms_atomic_transition@plane-use-after-nonblocking-unbind
+kms_atomic_transition@plane-use-after-nonblocking-unbind-fencing
+kms_big_fb@4-tiled-16bpp-rotate-0
+kms_big_fb@4-tiled-16bpp-rotate-180
+kms_big_fb@4-tiled-16bpp-rotate-270
+kms_big_fb@4-tiled-16bpp-rotate-90
+kms_big_fb@4-tiled-32bpp-rotate-0
+kms_big_fb@4-tiled-32bpp-rotate-180
+kms_big_fb@4-tiled-32bpp-rotate-270
+kms_big_fb@4-tiled-32bpp-rotate-90
+kms_big_fb@4-tiled-64bpp-rotate-0
+kms_big_fb@4-tiled-64bpp-rotate-180
+kms_big_fb@4-tiled-64bpp-rotate-270
+kms_big_fb@4-tiled-64bpp-rotate-90
+kms_big_fb@4-tiled-8bpp-rotate-0
+kms_big_fb@4-tiled-8bpp-rotate-180
+kms_big_fb@4-tiled-8bpp-rotate-270
+kms_big_fb@4-tiled-8bpp-rotate-90
+kms_big_fb@4-tiled-addfb
+kms_big_fb@4-tiled-addfb-size-offset-overflow
+kms_big_fb@4-tiled-addfb-size-overflow
+kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0
+kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-async-flip
+kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip
+kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip
+kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180
+kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip
+kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip
+kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip
+kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0
+kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-async-flip
+kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip
+kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip
+kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180
+kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-async-flip
+kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip
+kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip
+kms_big_fb@linear-16bpp-rotate-180
+kms_big_fb@linear-16bpp-rotate-270
+kms_big_fb@linear-16bpp-rotate-90
+kms_big_fb@linear-32bpp-rotate-270
+kms_big_fb@linear-32bpp-rotate-90
+kms_big_fb@linear-64bpp-rotate-0
+kms_big_fb@linear-64bpp-rotate-180
+kms_big_fb@linear-64bpp-rotate-270
+kms_big_fb@linear-64bpp-rotate-90
+kms_big_fb@linear-8bpp-rotate-0
+kms_big_fb@linear-8bpp-rotate-180
+kms_big_fb@linear-8bpp-rotate-270
+kms_big_fb@linear-8bpp-rotate-90
+kms_big_fb@linear-addfb
+kms_big_fb@linear-max-hw-stride-32bpp-rotate-0
+kms_big_fb@linear-max-hw-stride-32bpp-rotate-180
+kms_big_fb@linear-max-hw-stride-64bpp-rotate-0
+kms_big_fb@linear-max-hw-stride-64bpp-rotate-180
+kms_big_fb@x-tiled-16bpp-rotate-0
+kms_big_fb@x-tiled-16bpp-rotate-270
+kms_big_fb@x-tiled-16bpp-rotate-90
+kms_big_fb@x-tiled-32bpp-rotate-270
+kms_big_fb@x-tiled-32bpp-rotate-90
+kms_big_fb@x-tiled-64bpp-rotate-0
+kms_big_fb@x-tiled-64bpp-rotate-180
+kms_big_fb@x-tiled-64bpp-rotate-270
+kms_big_fb@x-tiled-64bpp-rotate-90
+kms_big_fb@x-tiled-8bpp-rotate-0
+kms_big_fb@x-tiled-8bpp-rotate-180
+kms_big_fb@x-tiled-8bpp-rotate-270
+kms_big_fb@x-tiled-8bpp-rotate-90
+kms_big_fb@x-tiled-addfb
+kms_big_fb@x-tiled-addfb-size-offset-overflow
+kms_big_fb@x-tiled-addfb-size-overflow
+kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0
+kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-async-flip
+kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-hflip
+kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip
+kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180
+kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip
+kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip
+kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip
+kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0
+kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-async-flip
+kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip
+kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip
+kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180
+kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip
+kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip
+kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip
+kms_big_fb@yf-tiled-16bpp-rotate-180
+kms_big_fb@yf-tiled-16bpp-rotate-270
+kms_big_fb@yf-tiled-16bpp-rotate-90
+kms_big_fb@yf-tiled-64bpp-rotate-0
+kms_big_fb@yf-tiled-64bpp-rotate-180
+kms_big_fb@yf-tiled-64bpp-rotate-270
+kms_big_fb@yf-tiled-64bpp-rotate-90
+kms_big_fb@yf-tiled-8bpp-rotate-0
+kms_big_fb@yf-tiled-8bpp-rotate-180
+kms_big_fb@yf-tiled-8bpp-rotate-270
+kms_big_fb@yf-tiled-8bpp-rotate-90
+kms_big_fb@yf-tiled-addfb
+kms_big_fb@yf-tiled-addfb-size-offset-overflow
+kms_big_fb@yf-tiled-addfb-size-overflow
+kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0
+kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-async-flip
+kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip
+kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip
+kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180
+kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip
+kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip
+kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip
+kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0
+kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-async-flip
+kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip
+kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip
+kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180
+kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip
+kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip
+kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip
+kms_big_fb@y-tiled-16bpp-rotate-0
+kms_big_fb@y-tiled-16bpp-rotate-180
+kms_big_fb@y-tiled-16bpp-rotate-270
+kms_big_fb@y-tiled-16bpp-rotate-90
+kms_big_fb@y-tiled-64bpp-rotate-0
+kms_big_fb@y-tiled-64bpp-rotate-180
+kms_big_fb@y-tiled-64bpp-rotate-270
+kms_big_fb@y-tiled-64bpp-rotate-90
+kms_big_fb@y-tiled-8bpp-rotate-0
+kms_big_fb@y-tiled-8bpp-rotate-180
+kms_big_fb@y-tiled-8bpp-rotate-270
+kms_big_fb@y-tiled-8bpp-rotate-90
+kms_big_fb@y-tiled-addfb
+kms_big_fb@y-tiled-addfb-size-offset-overflow
+kms_big_fb@y-tiled-addfb-size-overflow
+kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0
+kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip
+kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip
+kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip
+kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180
+kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip
+kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip
+kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip
+kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0
+kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip
+kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip
+kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip
+kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180
+kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip
+kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip
+kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip
+kms_big_joiner@2x-modeset
+kms_big_joiner@basic
+kms_big_joiner@invalid-modeset
+kms_busy@basic
+kms_busy@basic-hang
+kms_busy@extended-pageflip-hang-oldfb
+kms_bw@linear-tiling-1-displays-1920x1080p
+kms_bw@linear-tiling-1-displays-2560x1440p
+kms_bw@linear-tiling-1-displays-3840x2160p
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-2560x1440p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_bw@linear-tiling-5-displays-1920x1080p
+kms_bw@linear-tiling-5-displays-2560x1440p
+kms_bw@linear-tiling-5-displays-3840x2160p
+kms_bw@linear-tiling-6-displays-1920x1080p
+kms_bw@linear-tiling-6-displays-2560x1440p
+kms_bw@linear-tiling-6-displays-3840x2160p
+kms_ccs@pipe-A-bad-aux-stride-yf_tiled_ccs
+kms_ccs@pipe-A-bad-aux-stride-y_tiled_ccs
+kms_ccs@pipe-A-bad-aux-stride-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-A-bad-aux-stride-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-A-bad-aux-stride-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-A-bad-pixel-format-yf_tiled_ccs
+kms_ccs@pipe-A-bad-pixel-format-y_tiled_ccs
+kms_ccs@pipe-A-bad-pixel-format-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-A-bad-pixel-format-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-A-bad-pixel-format-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-A-bad-rotation-90-yf_tiled_ccs
+kms_ccs@pipe-A-bad-rotation-90-y_tiled_ccs
+kms_ccs@pipe-A-bad-rotation-90-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-A-bad-rotation-90-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-A-bad-rotation-90-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-A-ccs-on-another-bo-yf_tiled_ccs
+kms_ccs@pipe-A-ccs-on-another-bo-y_tiled_ccs
+kms_ccs@pipe-A-ccs-on-another-bo-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-A-ccs-on-another-bo-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-A-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-A-crc-primary-basic-yf_tiled_ccs
+kms_ccs@pipe-A-crc-primary-basic-y_tiled_ccs
+kms_ccs@pipe-A-crc-primary-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-A-crc-primary-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-A-crc-primary-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-A-crc-primary-rotation-180-yf_tiled_ccs
+kms_ccs@pipe-A-crc-primary-rotation-180-y_tiled_ccs
+kms_ccs@pipe-A-crc-primary-rotation-180-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-A-crc-primary-rotation-180-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-A-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-A-crc-sprite-planes-basic-yf_tiled_ccs
+kms_ccs@pipe-A-crc-sprite-planes-basic-y_tiled_ccs
+kms_ccs@pipe-A-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-A-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-A-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-A-missing-ccs-buffer-yf_tiled_ccs
+kms_ccs@pipe-A-missing-ccs-buffer-y_tiled_ccs
+kms_ccs@pipe-A-missing-ccs-buffer-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-A-missing-ccs-buffer-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-A-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-A-random-ccs-data-yf_tiled_ccs
+kms_ccs@pipe-A-random-ccs-data-y_tiled_ccs
+kms_ccs@pipe-A-random-ccs-data-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-A-random-ccs-data-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-A-random-ccs-data-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-B-bad-aux-stride-yf_tiled_ccs
+kms_ccs@pipe-B-bad-aux-stride-y_tiled_ccs
+kms_ccs@pipe-B-bad-aux-stride-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-B-bad-aux-stride-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-B-bad-aux-stride-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-B-bad-pixel-format-yf_tiled_ccs
+kms_ccs@pipe-B-bad-pixel-format-y_tiled_ccs
+kms_ccs@pipe-B-bad-pixel-format-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-B-bad-pixel-format-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-B-bad-pixel-format-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-B-bad-rotation-90-yf_tiled_ccs
+kms_ccs@pipe-B-bad-rotation-90-y_tiled_ccs
+kms_ccs@pipe-B-bad-rotation-90-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-B-bad-rotation-90-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-B-bad-rotation-90-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-B-ccs-on-another-bo-yf_tiled_ccs
+kms_ccs@pipe-B-ccs-on-another-bo-y_tiled_ccs
+kms_ccs@pipe-B-ccs-on-another-bo-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-B-ccs-on-another-bo-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-B-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-B-crc-primary-basic-yf_tiled_ccs
+kms_ccs@pipe-B-crc-primary-basic-y_tiled_ccs
+kms_ccs@pipe-B-crc-primary-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-B-crc-primary-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-B-crc-primary-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-B-crc-primary-rotation-180-yf_tiled_ccs
+kms_ccs@pipe-B-crc-primary-rotation-180-y_tiled_ccs
+kms_ccs@pipe-B-crc-primary-rotation-180-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-B-crc-primary-rotation-180-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-B-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-B-crc-sprite-planes-basic-yf_tiled_ccs
+kms_ccs@pipe-B-crc-sprite-planes-basic-y_tiled_ccs
+kms_ccs@pipe-B-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-B-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-B-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-B-missing-ccs-buffer-yf_tiled_ccs
+kms_ccs@pipe-B-missing-ccs-buffer-y_tiled_ccs
+kms_ccs@pipe-B-missing-ccs-buffer-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-B-missing-ccs-buffer-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-B-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-B-random-ccs-data-yf_tiled_ccs
+kms_ccs@pipe-B-random-ccs-data-y_tiled_ccs
+kms_ccs@pipe-B-random-ccs-data-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-B-random-ccs-data-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-B-random-ccs-data-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-C-bad-aux-stride-yf_tiled_ccs
+kms_ccs@pipe-C-bad-aux-stride-y_tiled_ccs
+kms_ccs@pipe-C-bad-aux-stride-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-C-bad-aux-stride-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-C-bad-aux-stride-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-C-bad-pixel-format-yf_tiled_ccs
+kms_ccs@pipe-C-bad-pixel-format-y_tiled_ccs
+kms_ccs@pipe-C-bad-pixel-format-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-C-bad-pixel-format-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-C-bad-pixel-format-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-C-bad-rotation-90-yf_tiled_ccs
+kms_ccs@pipe-C-bad-rotation-90-y_tiled_ccs
+kms_ccs@pipe-C-bad-rotation-90-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-C-bad-rotation-90-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-C-bad-rotation-90-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-C-ccs-on-another-bo-yf_tiled_ccs
+kms_ccs@pipe-C-ccs-on-another-bo-y_tiled_ccs
+kms_ccs@pipe-C-ccs-on-another-bo-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-C-ccs-on-another-bo-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-C-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-C-crc-primary-basic-yf_tiled_ccs
+kms_ccs@pipe-C-crc-primary-basic-y_tiled_ccs
+kms_ccs@pipe-C-crc-primary-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-C-crc-primary-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-C-crc-primary-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-C-crc-primary-rotation-180-yf_tiled_ccs
+kms_ccs@pipe-C-crc-primary-rotation-180-y_tiled_ccs
+kms_ccs@pipe-C-crc-primary-rotation-180-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-C-crc-primary-rotation-180-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-C-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-C-crc-sprite-planes-basic-yf_tiled_ccs
+kms_ccs@pipe-C-crc-sprite-planes-basic-y_tiled_ccs
+kms_ccs@pipe-C-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-C-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-C-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-C-missing-ccs-buffer-yf_tiled_ccs
+kms_ccs@pipe-C-missing-ccs-buffer-y_tiled_ccs
+kms_ccs@pipe-C-missing-ccs-buffer-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-C-missing-ccs-buffer-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-C-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-C-random-ccs-data-yf_tiled_ccs
+kms_ccs@pipe-C-random-ccs-data-y_tiled_ccs
+kms_ccs@pipe-C-random-ccs-data-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-C-random-ccs-data-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-C-random-ccs-data-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-D-bad-aux-stride-yf_tiled_ccs
+kms_ccs@pipe-D-bad-aux-stride-y_tiled_ccs
+kms_ccs@pipe-D-bad-aux-stride-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-D-bad-aux-stride-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-D-bad-aux-stride-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-D-bad-pixel-format-yf_tiled_ccs
+kms_ccs@pipe-D-bad-pixel-format-y_tiled_ccs
+kms_ccs@pipe-D-bad-pixel-format-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-D-bad-pixel-format-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-D-bad-pixel-format-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-D-bad-rotation-90-yf_tiled_ccs
+kms_ccs@pipe-D-bad-rotation-90-y_tiled_ccs
+kms_ccs@pipe-D-bad-rotation-90-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-D-bad-rotation-90-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-D-bad-rotation-90-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-D-ccs-on-another-bo-yf_tiled_ccs
+kms_ccs@pipe-D-ccs-on-another-bo-y_tiled_ccs
+kms_ccs@pipe-D-ccs-on-another-bo-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-D-ccs-on-another-bo-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-D-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-D-crc-primary-basic-yf_tiled_ccs
+kms_ccs@pipe-D-crc-primary-basic-y_tiled_ccs
+kms_ccs@pipe-D-crc-primary-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-D-crc-primary-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-D-crc-primary-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-D-crc-primary-rotation-180-yf_tiled_ccs
+kms_ccs@pipe-D-crc-primary-rotation-180-y_tiled_ccs
+kms_ccs@pipe-D-crc-primary-rotation-180-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-D-crc-primary-rotation-180-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-D-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-D-crc-sprite-planes-basic-yf_tiled_ccs
+kms_ccs@pipe-D-crc-sprite-planes-basic-y_tiled_ccs
+kms_ccs@pipe-D-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-D-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-D-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-D-missing-ccs-buffer-yf_tiled_ccs
+kms_ccs@pipe-D-missing-ccs-buffer-y_tiled_ccs
+kms_ccs@pipe-D-missing-ccs-buffer-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-D-missing-ccs-buffer-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-D-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-D-random-ccs-data-yf_tiled_ccs
+kms_ccs@pipe-D-random-ccs-data-y_tiled_ccs
+kms_ccs@pipe-D-random-ccs-data-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-D-random-ccs-data-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-D-random-ccs-data-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-E-bad-aux-stride-yf_tiled_ccs
+kms_ccs@pipe-E-bad-aux-stride-y_tiled_ccs
+kms_ccs@pipe-E-bad-aux-stride-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-E-bad-aux-stride-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-E-bad-aux-stride-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-E-bad-pixel-format-yf_tiled_ccs
+kms_ccs@pipe-E-bad-pixel-format-y_tiled_ccs
+kms_ccs@pipe-E-bad-pixel-format-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-E-bad-pixel-format-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-E-bad-pixel-format-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-E-bad-rotation-90-yf_tiled_ccs
+kms_ccs@pipe-E-bad-rotation-90-y_tiled_ccs
+kms_ccs@pipe-E-bad-rotation-90-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-E-bad-rotation-90-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-E-bad-rotation-90-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-E-ccs-on-another-bo-yf_tiled_ccs
+kms_ccs@pipe-E-ccs-on-another-bo-y_tiled_ccs
+kms_ccs@pipe-E-ccs-on-another-bo-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-E-ccs-on-another-bo-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-E-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-E-crc-primary-basic-yf_tiled_ccs
+kms_ccs@pipe-E-crc-primary-basic-y_tiled_ccs
+kms_ccs@pipe-E-crc-primary-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-E-crc-primary-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-E-crc-primary-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-E-crc-primary-rotation-180-yf_tiled_ccs
+kms_ccs@pipe-E-crc-primary-rotation-180-y_tiled_ccs
+kms_ccs@pipe-E-crc-primary-rotation-180-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-E-crc-primary-rotation-180-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-E-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-E-crc-sprite-planes-basic-yf_tiled_ccs
+kms_ccs@pipe-E-crc-sprite-planes-basic-y_tiled_ccs
+kms_ccs@pipe-E-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-E-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-E-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-E-missing-ccs-buffer-yf_tiled_ccs
+kms_ccs@pipe-E-missing-ccs-buffer-y_tiled_ccs
+kms_ccs@pipe-E-missing-ccs-buffer-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-E-missing-ccs-buffer-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-E-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-E-random-ccs-data-yf_tiled_ccs
+kms_ccs@pipe-E-random-ccs-data-y_tiled_ccs
+kms_ccs@pipe-E-random-ccs-data-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-E-random-ccs-data-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-E-random-ccs-data-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-F-bad-aux-stride-yf_tiled_ccs
+kms_ccs@pipe-F-bad-aux-stride-y_tiled_ccs
+kms_ccs@pipe-F-bad-aux-stride-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-F-bad-aux-stride-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-F-bad-aux-stride-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-F-bad-pixel-format-yf_tiled_ccs
+kms_ccs@pipe-F-bad-pixel-format-y_tiled_ccs
+kms_ccs@pipe-F-bad-pixel-format-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-F-bad-pixel-format-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-F-bad-pixel-format-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-F-bad-rotation-90-yf_tiled_ccs
+kms_ccs@pipe-F-bad-rotation-90-y_tiled_ccs
+kms_ccs@pipe-F-bad-rotation-90-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-F-bad-rotation-90-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-F-bad-rotation-90-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-F-ccs-on-another-bo-yf_tiled_ccs
+kms_ccs@pipe-F-ccs-on-another-bo-y_tiled_ccs
+kms_ccs@pipe-F-ccs-on-another-bo-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-F-ccs-on-another-bo-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-F-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-F-crc-primary-basic-yf_tiled_ccs
+kms_ccs@pipe-F-crc-primary-basic-y_tiled_ccs
+kms_ccs@pipe-F-crc-primary-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-F-crc-primary-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-F-crc-primary-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-F-crc-primary-rotation-180-yf_tiled_ccs
+kms_ccs@pipe-F-crc-primary-rotation-180-y_tiled_ccs
+kms_ccs@pipe-F-crc-primary-rotation-180-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-F-crc-primary-rotation-180-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-F-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-F-crc-sprite-planes-basic-yf_tiled_ccs
+kms_ccs@pipe-F-crc-sprite-planes-basic-y_tiled_ccs
+kms_ccs@pipe-F-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-F-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-F-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-F-missing-ccs-buffer-yf_tiled_ccs
+kms_ccs@pipe-F-missing-ccs-buffer-y_tiled_ccs
+kms_ccs@pipe-F-missing-ccs-buffer-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-F-missing-ccs-buffer-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-F-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-F-random-ccs-data-yf_tiled_ccs
+kms_ccs@pipe-F-random-ccs-data-y_tiled_ccs
+kms_ccs@pipe-F-random-ccs-data-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-F-random-ccs-data-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-F-random-ccs-data-y_tiled_gen12_rc_ccs_cc
+kms_cdclk@mode-transition
+kms_cdclk@plane-scaling
+kms_color@pipe-A-ctm-0-25
+kms_color@pipe-A-ctm-0-5
+kms_color@pipe-A-ctm-0-75
+kms_color@pipe-A-ctm-blue-to-red
+kms_color@pipe-A-ctm-green-to-red
+kms_color@pipe-A-ctm-max
+kms_color@pipe-A-ctm-negative
+kms_color@pipe-A-ctm-red-to-blue
+kms_color@pipe-A-deep-color
+kms_color@pipe-A-degamma
+kms_color@pipe-A-gamma
+kms_color@pipe-A-invalid-ctm-matrix-sizes
+kms_color@pipe-A-invalid-degamma-lut-sizes
+kms_color@pipe-A-invalid-gamma-lut-sizes
+kms_color@pipe-A-legacy-gamma
+kms_color@pipe-A-legacy-gamma-reset
+kms_color@pipe-B-ctm-0-25
+kms_color@pipe-B-ctm-0-5
+kms_color@pipe-B-ctm-0-75
+kms_color@pipe-B-ctm-blue-to-red
+kms_color@pipe-B-ctm-green-to-red
+kms_color@pipe-B-ctm-max
+kms_color@pipe-B-ctm-negative
+kms_color@pipe-B-ctm-red-to-blue
+kms_color@pipe-B-deep-color
+kms_color@pipe-B-degamma
+kms_color@pipe-B-gamma
+kms_color@pipe-B-invalid-ctm-matrix-sizes
+kms_color@pipe-B-invalid-degamma-lut-sizes
+kms_color@pipe-B-invalid-gamma-lut-sizes
+kms_color@pipe-B-legacy-gamma
+kms_color@pipe-B-legacy-gamma-reset
+kms_color@pipe-C-ctm-0-25
+kms_color@pipe-C-ctm-0-5
+kms_color@pipe-C-ctm-0-75
+kms_color@pipe-C-ctm-blue-to-red
+kms_color@pipe-C-ctm-green-to-red
+kms_color@pipe-C-ctm-max
+kms_color@pipe-C-ctm-negative
+kms_color@pipe-C-ctm-red-to-blue
+kms_color@pipe-C-deep-color
+kms_color@pipe-C-degamma
+kms_color@pipe-C-gamma
+kms_color@pipe-C-invalid-ctm-matrix-sizes
+kms_color@pipe-C-invalid-degamma-lut-sizes
+kms_color@pipe-C-invalid-gamma-lut-sizes
+kms_color@pipe-C-legacy-gamma
+kms_color@pipe-C-legacy-gamma-reset
+kms_color@pipe-D-ctm-0-25
+kms_color@pipe-D-ctm-0-5
+kms_color@pipe-D-ctm-0-75
+kms_color@pipe-D-ctm-blue-to-red
+kms_color@pipe-D-ctm-green-to-red
+kms_color@pipe-D-ctm-max
+kms_color@pipe-D-ctm-negative
+kms_color@pipe-D-ctm-red-to-blue
+kms_color@pipe-D-deep-color
+kms_color@pipe-D-degamma
+kms_color@pipe-D-gamma
+kms_color@pipe-D-invalid-ctm-matrix-sizes
+kms_color@pipe-D-invalid-degamma-lut-sizes
+kms_color@pipe-D-invalid-gamma-lut-sizes
+kms_color@pipe-D-legacy-gamma
+kms_color@pipe-D-legacy-gamma-reset
+kms_color@pipe-E-ctm-0-25
+kms_color@pipe-E-ctm-0-5
+kms_color@pipe-E-ctm-0-75
+kms_color@pipe-E-ctm-blue-to-red
+kms_color@pipe-E-ctm-green-to-red
+kms_color@pipe-E-ctm-max
+kms_color@pipe-E-ctm-negative
+kms_color@pipe-E-ctm-red-to-blue
+kms_color@pipe-E-deep-color
+kms_color@pipe-E-degamma
+kms_color@pipe-E-gamma
+kms_color@pipe-E-invalid-ctm-matrix-sizes
+kms_color@pipe-E-invalid-degamma-lut-sizes
+kms_color@pipe-E-invalid-gamma-lut-sizes
+kms_color@pipe-E-legacy-gamma
+kms_color@pipe-E-legacy-gamma-reset
+kms_color@pipe-F-ctm-0-25
+kms_color@pipe-F-ctm-0-5
+kms_color@pipe-F-ctm-0-75
+kms_color@pipe-F-ctm-blue-to-red
+kms_color@pipe-F-ctm-green-to-red
+kms_color@pipe-F-ctm-max
+kms_color@pipe-F-ctm-negative
+kms_color@pipe-F-ctm-red-to-blue
+kms_color@pipe-F-deep-color
+kms_color@pipe-F-degamma
+kms_color@pipe-F-gamma
+kms_color@pipe-F-invalid-ctm-matrix-sizes
+kms_color@pipe-F-invalid-degamma-lut-sizes
+kms_color@pipe-F-invalid-gamma-lut-sizes
+kms_color@pipe-F-legacy-gamma
+kms_color@pipe-F-legacy-gamma-reset
+kms_concurrent@pipe-A
+kms_concurrent@pipe-B
+kms_concurrent@pipe-C
+kms_concurrent@pipe-D
+kms_concurrent@pipe-E
+kms_concurrent@pipe-F
+kms_content_protection@atomic
+kms_content_protection@atomic-dpms
+kms_content_protection@content_type_change
+kms_content_protection@dp-mst-lic-type-0
+kms_content_protection@dp-mst-lic-type-1
+kms_content_protection@dp-mst-type-0
+kms_content_protection@dp-mst-type-1
+kms_content_protection@legacy
+kms_content_protection@LIC
+kms_content_protection@mei_interface
+kms_content_protection@srm
+kms_content_protection@type1
+kms_content_protection@uevent
+kms_cursor_crc@pipe-A-cursor-128x128-offscreen
+kms_cursor_crc@pipe-A-cursor-128x128-onscreen
+kms_cursor_crc@pipe-A-cursor-128x128-rapid-movement
+kms_cursor_crc@pipe-A-cursor-128x128-sliding
+kms_cursor_crc@pipe-A-cursor-128x42-offscreen
+kms_cursor_crc@pipe-A-cursor-128x42-onscreen
+kms_cursor_crc@pipe-A-cursor-128x42-random
+kms_cursor_crc@pipe-A-cursor-128x42-rapid-movement
+kms_cursor_crc@pipe-A-cursor-128x42-sliding
+kms_cursor_crc@pipe-A-cursor-256x256-offscreen
+kms_cursor_crc@pipe-A-cursor-256x256-onscreen
+kms_cursor_crc@pipe-A-cursor-256x256-rapid-movement
+kms_cursor_crc@pipe-A-cursor-256x256-sliding
+kms_cursor_crc@pipe-A-cursor-256x85-offscreen
+kms_cursor_crc@pipe-A-cursor-256x85-onscreen
+kms_cursor_crc@pipe-A-cursor-256x85-random
+kms_cursor_crc@pipe-A-cursor-256x85-rapid-movement
+kms_cursor_crc@pipe-A-cursor-256x85-sliding
+kms_cursor_crc@pipe-A-cursor-32x10-offscreen
+kms_cursor_crc@pipe-A-cursor-32x10-onscreen
+kms_cursor_crc@pipe-A-cursor-32x10-random
+kms_cursor_crc@pipe-A-cursor-32x10-rapid-movement
+kms_cursor_crc@pipe-A-cursor-32x10-sliding
+kms_cursor_crc@pipe-A-cursor-32x32-offscreen
+kms_cursor_crc@pipe-A-cursor-32x32-onscreen
+kms_cursor_crc@pipe-A-cursor-32x32-random
+kms_cursor_crc@pipe-A-cursor-32x32-rapid-movement
+kms_cursor_crc@pipe-A-cursor-32x32-sliding
+kms_cursor_crc@pipe-A-cursor-512x170-offscreen
+kms_cursor_crc@pipe-A-cursor-512x170-onscreen
+kms_cursor_crc@pipe-A-cursor-512x170-random
+kms_cursor_crc@pipe-A-cursor-512x170-rapid-movement
+kms_cursor_crc@pipe-A-cursor-512x170-sliding
+kms_cursor_crc@pipe-A-cursor-512x512-offscreen
+kms_cursor_crc@pipe-A-cursor-512x512-onscreen
+kms_cursor_crc@pipe-A-cursor-512x512-random
+kms_cursor_crc@pipe-A-cursor-512x512-rapid-movement
+kms_cursor_crc@pipe-A-cursor-512x512-sliding
+kms_cursor_crc@pipe-A-cursor-64x21-offscreen
+kms_cursor_crc@pipe-A-cursor-64x21-onscreen
+kms_cursor_crc@pipe-A-cursor-64x21-random
+kms_cursor_crc@pipe-A-cursor-64x21-rapid-movement
+kms_cursor_crc@pipe-A-cursor-64x21-sliding
+kms_cursor_crc@pipe-A-cursor-64x64-offscreen
+kms_cursor_crc@pipe-A-cursor-64x64-onscreen
+kms_cursor_crc@pipe-A-cursor-64x64-random
+kms_cursor_crc@pipe-A-cursor-64x64-rapid-movement
+kms_cursor_crc@pipe-A-cursor-64x64-sliding
+kms_cursor_crc@pipe-A-cursor-alpha-opaque
+kms_cursor_crc@pipe-A-cursor-alpha-transparent
+kms_cursor_crc@pipe-A-cursor-dpms
+kms_cursor_crc@pipe-A-cursor-max-size-offscreen
+kms_cursor_crc@pipe-A-cursor-max-size-onscreen
+kms_cursor_crc@pipe-A-cursor-max-size-random
+kms_cursor_crc@pipe-A-cursor-max-size-rapid-movement
+kms_cursor_crc@pipe-A-cursor-max-size-sliding
+kms_cursor_crc@pipe-A-cursor-size-change
+kms_cursor_crc@pipe-B-cursor-128x128-offscreen
+kms_cursor_crc@pipe-B-cursor-128x128-onscreen
+kms_cursor_crc@pipe-B-cursor-128x128-random
+kms_cursor_crc@pipe-B-cursor-128x128-rapid-movement
+kms_cursor_crc@pipe-B-cursor-128x128-sliding
+kms_cursor_crc@pipe-B-cursor-128x42-offscreen
+kms_cursor_crc@pipe-B-cursor-128x42-onscreen
+kms_cursor_crc@pipe-B-cursor-128x42-rapid-movement
+kms_cursor_crc@pipe-B-cursor-128x42-sliding
+kms_cursor_crc@pipe-B-cursor-256x256-offscreen
+kms_cursor_crc@pipe-B-cursor-256x256-onscreen
+kms_cursor_crc@pipe-B-cursor-256x256-random
+kms_cursor_crc@pipe-B-cursor-256x256-rapid-movement
+kms_cursor_crc@pipe-B-cursor-256x256-sliding
+kms_cursor_crc@pipe-B-cursor-256x85-offscreen
+kms_cursor_crc@pipe-B-cursor-256x85-onscreen
+kms_cursor_crc@pipe-B-cursor-256x85-random
+kms_cursor_crc@pipe-B-cursor-256x85-rapid-movement
+kms_cursor_crc@pipe-B-cursor-256x85-sliding
+kms_cursor_crc@pipe-B-cursor-32x10-offscreen
+kms_cursor_crc@pipe-B-cursor-32x10-onscreen
+kms_cursor_crc@pipe-B-cursor-32x10-random
+kms_cursor_crc@pipe-B-cursor-32x10-rapid-movement
+kms_cursor_crc@pipe-B-cursor-32x10-sliding
+kms_cursor_crc@pipe-B-cursor-32x32-offscreen
+kms_cursor_crc@pipe-B-cursor-32x32-onscreen
+kms_cursor_crc@pipe-B-cursor-32x32-random
+kms_cursor_crc@pipe-B-cursor-32x32-rapid-movement
+kms_cursor_crc@pipe-B-cursor-32x32-sliding
+kms_cursor_crc@pipe-B-cursor-512x170-offscreen
+kms_cursor_crc@pipe-B-cursor-512x170-onscreen
+kms_cursor_crc@pipe-B-cursor-512x170-random
+kms_cursor_crc@pipe-B-cursor-512x170-rapid-movement
+kms_cursor_crc@pipe-B-cursor-512x170-sliding
+kms_cursor_crc@pipe-B-cursor-512x512-offscreen
+kms_cursor_crc@pipe-B-cursor-512x512-onscreen
+kms_cursor_crc@pipe-B-cursor-512x512-random
+kms_cursor_crc@pipe-B-cursor-512x512-rapid-movement
+kms_cursor_crc@pipe-B-cursor-512x512-sliding
+kms_cursor_crc@pipe-B-cursor-64x21-offscreen
+kms_cursor_crc@pipe-B-cursor-64x21-onscreen
+kms_cursor_crc@pipe-B-cursor-64x21-random
+kms_cursor_crc@pipe-B-cursor-64x21-rapid-movement
+kms_cursor_crc@pipe-B-cursor-64x64-offscreen
+kms_cursor_crc@pipe-B-cursor-64x64-onscreen
+kms_cursor_crc@pipe-B-cursor-64x64-random
+kms_cursor_crc@pipe-B-cursor-64x64-rapid-movement
+kms_cursor_crc@pipe-B-cursor-64x64-sliding
+kms_cursor_crc@pipe-B-cursor-alpha-opaque
+kms_cursor_crc@pipe-B-cursor-alpha-transparent
+kms_cursor_crc@pipe-B-cursor-dpms
+kms_cursor_crc@pipe-B-cursor-max-size-offscreen
+kms_cursor_crc@pipe-B-cursor-max-size-onscreen
+kms_cursor_crc@pipe-B-cursor-max-size-random
+kms_cursor_crc@pipe-B-cursor-max-size-rapid-movement
+kms_cursor_crc@pipe-B-cursor-max-size-sliding
+kms_cursor_crc@pipe-B-cursor-size-change
+kms_cursor_crc@pipe-C-cursor-128x128-offscreen
+kms_cursor_crc@pipe-C-cursor-128x128-onscreen
+kms_cursor_crc@pipe-C-cursor-128x128-random
+kms_cursor_crc@pipe-C-cursor-128x128-rapid-movement
+kms_cursor_crc@pipe-C-cursor-128x128-sliding
+kms_cursor_crc@pipe-C-cursor-128x42-offscreen
+kms_cursor_crc@pipe-C-cursor-128x42-onscreen
+kms_cursor_crc@pipe-C-cursor-128x42-random
+kms_cursor_crc@pipe-C-cursor-128x42-rapid-movement
+kms_cursor_crc@pipe-C-cursor-128x42-sliding
+kms_cursor_crc@pipe-C-cursor-256x256-offscreen
+kms_cursor_crc@pipe-C-cursor-256x256-onscreen
+kms_cursor_crc@pipe-C-cursor-256x256-random
+kms_cursor_crc@pipe-C-cursor-256x256-rapid-movement
+kms_cursor_crc@pipe-C-cursor-256x256-sliding
+kms_cursor_crc@pipe-C-cursor-256x85-offscreen
+kms_cursor_crc@pipe-C-cursor-256x85-onscreen
+kms_cursor_crc@pipe-C-cursor-256x85-random
+kms_cursor_crc@pipe-C-cursor-256x85-rapid-movement
+kms_cursor_crc@pipe-C-cursor-256x85-sliding
+kms_cursor_crc@pipe-C-cursor-32x10-offscreen
+kms_cursor_crc@pipe-C-cursor-32x10-onscreen
+kms_cursor_crc@pipe-C-cursor-32x10-random
+kms_cursor_crc@pipe-C-cursor-32x10-rapid-movement
+kms_cursor_crc@pipe-C-cursor-32x10-sliding
+kms_cursor_crc@pipe-C-cursor-32x32-offscreen
+kms_cursor_crc@pipe-C-cursor-32x32-onscreen
+kms_cursor_crc@pipe-C-cursor-32x32-random
+kms_cursor_crc@pipe-C-cursor-32x32-rapid-movement
+kms_cursor_crc@pipe-C-cursor-32x32-sliding
+kms_cursor_crc@pipe-C-cursor-512x170-offscreen
+kms_cursor_crc@pipe-C-cursor-512x170-onscreen
+kms_cursor_crc@pipe-C-cursor-512x170-random
+kms_cursor_crc@pipe-C-cursor-512x170-rapid-movement
+kms_cursor_crc@pipe-C-cursor-512x170-sliding
+kms_cursor_crc@pipe-C-cursor-512x512-offscreen
+kms_cursor_crc@pipe-C-cursor-512x512-onscreen
+kms_cursor_crc@pipe-C-cursor-512x512-random
+kms_cursor_crc@pipe-C-cursor-512x512-rapid-movement
+kms_cursor_crc@pipe-C-cursor-512x512-sliding
+kms_cursor_crc@pipe-C-cursor-64x21-offscreen
+kms_cursor_crc@pipe-C-cursor-64x21-onscreen
+kms_cursor_crc@pipe-C-cursor-64x21-random
+kms_cursor_crc@pipe-C-cursor-64x21-rapid-movement
+kms_cursor_crc@pipe-C-cursor-64x21-sliding
+kms_cursor_crc@pipe-C-cursor-64x64-offscreen
+kms_cursor_crc@pipe-C-cursor-64x64-onscreen
+kms_cursor_crc@pipe-C-cursor-64x64-rapid-movement
+kms_cursor_crc@pipe-C-cursor-64x64-sliding
+kms_cursor_crc@pipe-C-cursor-alpha-opaque
+kms_cursor_crc@pipe-C-cursor-alpha-transparent
+kms_cursor_crc@pipe-C-cursor-dpms
+kms_cursor_crc@pipe-C-cursor-max-size-offscreen
+kms_cursor_crc@pipe-C-cursor-max-size-onscreen
+kms_cursor_crc@pipe-C-cursor-max-size-random
+kms_cursor_crc@pipe-C-cursor-max-size-rapid-movement
+kms_cursor_crc@pipe-C-cursor-max-size-sliding
+kms_cursor_crc@pipe-C-cursor-size-change
+kms_cursor_crc@pipe-D-cursor-128x128-offscreen
+kms_cursor_crc@pipe-D-cursor-128x128-onscreen
+kms_cursor_crc@pipe-D-cursor-128x128-random
+kms_cursor_crc@pipe-D-cursor-128x128-rapid-movement
+kms_cursor_crc@pipe-D-cursor-128x128-sliding
+kms_cursor_crc@pipe-D-cursor-128x42-offscreen
+kms_cursor_crc@pipe-D-cursor-128x42-onscreen
+kms_cursor_crc@pipe-D-cursor-128x42-random
+kms_cursor_crc@pipe-D-cursor-128x42-rapid-movement
+kms_cursor_crc@pipe-D-cursor-128x42-sliding
+kms_cursor_crc@pipe-D-cursor-256x256-offscreen
+kms_cursor_crc@pipe-D-cursor-256x256-onscreen
+kms_cursor_crc@pipe-D-cursor-256x256-random
+kms_cursor_crc@pipe-D-cursor-256x256-rapid-movement
+kms_cursor_crc@pipe-D-cursor-256x256-sliding
+kms_cursor_crc@pipe-D-cursor-256x85-offscreen
+kms_cursor_crc@pipe-D-cursor-256x85-onscreen
+kms_cursor_crc@pipe-D-cursor-256x85-random
+kms_cursor_crc@pipe-D-cursor-256x85-rapid-movement
+kms_cursor_crc@pipe-D-cursor-256x85-sliding
+kms_cursor_crc@pipe-D-cursor-32x10-offscreen
+kms_cursor_crc@pipe-D-cursor-32x10-onscreen
+kms_cursor_crc@pipe-D-cursor-32x10-random
+kms_cursor_crc@pipe-D-cursor-32x10-rapid-movement
+kms_cursor_crc@pipe-D-cursor-32x10-sliding
+kms_cursor_crc@pipe-D-cursor-32x32-offscreen
+kms_cursor_crc@pipe-D-cursor-32x32-onscreen
+kms_cursor_crc@pipe-D-cursor-32x32-random
+kms_cursor_crc@pipe-D-cursor-32x32-rapid-movement
+kms_cursor_crc@pipe-D-cursor-32x32-sliding
+kms_cursor_crc@pipe-D-cursor-512x170-offscreen
+kms_cursor_crc@pipe-D-cursor-512x170-onscreen
+kms_cursor_crc@pipe-D-cursor-512x170-random
+kms_cursor_crc@pipe-D-cursor-512x170-rapid-movement
+kms_cursor_crc@pipe-D-cursor-512x170-sliding
+kms_cursor_crc@pipe-D-cursor-512x512-offscreen
+kms_cursor_crc@pipe-D-cursor-512x512-onscreen
+kms_cursor_crc@pipe-D-cursor-512x512-random
+kms_cursor_crc@pipe-D-cursor-512x512-rapid-movement
+kms_cursor_crc@pipe-D-cursor-512x512-sliding
+kms_cursor_crc@pipe-D-cursor-64x21-offscreen
+kms_cursor_crc@pipe-D-cursor-64x21-onscreen
+kms_cursor_crc@pipe-D-cursor-64x21-random
+kms_cursor_crc@pipe-D-cursor-64x21-rapid-movement
+kms_cursor_crc@pipe-D-cursor-64x21-sliding
+kms_cursor_crc@pipe-D-cursor-64x64-offscreen
+kms_cursor_crc@pipe-D-cursor-64x64-onscreen
+kms_cursor_crc@pipe-D-cursor-64x64-random
+kms_cursor_crc@pipe-D-cursor-64x64-rapid-movement
+kms_cursor_crc@pipe-D-cursor-64x64-sliding
+kms_cursor_crc@pipe-D-cursor-alpha-opaque
+kms_cursor_crc@pipe-D-cursor-alpha-transparent
+kms_cursor_crc@pipe-D-cursor-dpms
+kms_cursor_crc@pipe-D-cursor-max-size-offscreen
+kms_cursor_crc@pipe-D-cursor-max-size-onscreen
+kms_cursor_crc@pipe-D-cursor-max-size-random
+kms_cursor_crc@pipe-D-cursor-max-size-rapid-movement
+kms_cursor_crc@pipe-D-cursor-max-size-sliding
+kms_cursor_crc@pipe-D-cursor-size-change
+kms_cursor_crc@pipe-D-cursor-suspend
+kms_cursor_crc@pipe-E-cursor-128x128-offscreen
+kms_cursor_crc@pipe-E-cursor-128x128-onscreen
+kms_cursor_crc@pipe-E-cursor-128x128-random
+kms_cursor_crc@pipe-E-cursor-128x128-rapid-movement
+kms_cursor_crc@pipe-E-cursor-128x128-sliding
+kms_cursor_crc@pipe-E-cursor-128x42-offscreen
+kms_cursor_crc@pipe-E-cursor-128x42-onscreen
+kms_cursor_crc@pipe-E-cursor-128x42-random
+kms_cursor_crc@pipe-E-cursor-128x42-rapid-movement
+kms_cursor_crc@pipe-E-cursor-128x42-sliding
+kms_cursor_crc@pipe-E-cursor-256x256-offscreen
+kms_cursor_crc@pipe-E-cursor-256x256-onscreen
+kms_cursor_crc@pipe-E-cursor-256x256-random
+kms_cursor_crc@pipe-E-cursor-256x256-rapid-movement
+kms_cursor_crc@pipe-E-cursor-256x256-sliding
+kms_cursor_crc@pipe-E-cursor-256x85-offscreen
+kms_cursor_crc@pipe-E-cursor-256x85-onscreen
+kms_cursor_crc@pipe-E-cursor-256x85-random
+kms_cursor_crc@pipe-E-cursor-256x85-rapid-movement
+kms_cursor_crc@pipe-E-cursor-256x85-sliding
+kms_cursor_crc@pipe-E-cursor-32x10-offscreen
+kms_cursor_crc@pipe-E-cursor-32x10-onscreen
+kms_cursor_crc@pipe-E-cursor-32x10-random
+kms_cursor_crc@pipe-E-cursor-32x10-rapid-movement
+kms_cursor_crc@pipe-E-cursor-32x10-sliding
+kms_cursor_crc@pipe-E-cursor-32x32-offscreen
+kms_cursor_crc@pipe-E-cursor-32x32-onscreen
+kms_cursor_crc@pipe-E-cursor-32x32-random
+kms_cursor_crc@pipe-E-cursor-32x32-rapid-movement
+kms_cursor_crc@pipe-E-cursor-32x32-sliding
+kms_cursor_crc@pipe-E-cursor-512x170-offscreen
+kms_cursor_crc@pipe-E-cursor-512x170-onscreen
+kms_cursor_crc@pipe-E-cursor-512x170-random
+kms_cursor_crc@pipe-E-cursor-512x170-rapid-movement
+kms_cursor_crc@pipe-E-cursor-512x170-sliding
+kms_cursor_crc@pipe-E-cursor-512x512-offscreen
+kms_cursor_crc@pipe-E-cursor-512x512-onscreen
+kms_cursor_crc@pipe-E-cursor-512x512-random
+kms_cursor_crc@pipe-E-cursor-512x512-rapid-movement
+kms_cursor_crc@pipe-E-cursor-512x512-sliding
+kms_cursor_crc@pipe-E-cursor-64x21-offscreen
+kms_cursor_crc@pipe-E-cursor-64x21-onscreen
+kms_cursor_crc@pipe-E-cursor-64x21-random
+kms_cursor_crc@pipe-E-cursor-64x21-rapid-movement
+kms_cursor_crc@pipe-E-cursor-64x21-sliding
+kms_cursor_crc@pipe-E-cursor-64x64-offscreen
+kms_cursor_crc@pipe-E-cursor-64x64-onscreen
+kms_cursor_crc@pipe-E-cursor-64x64-random
+kms_cursor_crc@pipe-E-cursor-64x64-rapid-movement
+kms_cursor_crc@pipe-E-cursor-64x64-sliding
+kms_cursor_crc@pipe-E-cursor-alpha-opaque
+kms_cursor_crc@pipe-E-cursor-alpha-transparent
+kms_cursor_crc@pipe-E-cursor-dpms
+kms_cursor_crc@pipe-E-cursor-max-size-offscreen
+kms_cursor_crc@pipe-E-cursor-max-size-onscreen
+kms_cursor_crc@pipe-E-cursor-max-size-random
+kms_cursor_crc@pipe-E-cursor-max-size-rapid-movement
+kms_cursor_crc@pipe-E-cursor-max-size-sliding
+kms_cursor_crc@pipe-E-cursor-size-change
+kms_cursor_crc@pipe-E-cursor-suspend
+kms_cursor_crc@pipe-F-cursor-128x128-offscreen
+kms_cursor_crc@pipe-F-cursor-128x128-onscreen
+kms_cursor_crc@pipe-F-cursor-128x128-random
+kms_cursor_crc@pipe-F-cursor-128x128-rapid-movement
+kms_cursor_crc@pipe-F-cursor-128x128-sliding
+kms_cursor_crc@pipe-F-cursor-128x42-offscreen
+kms_cursor_crc@pipe-F-cursor-128x42-onscreen
+kms_cursor_crc@pipe-F-cursor-128x42-random
+kms_cursor_crc@pipe-F-cursor-128x42-rapid-movement
+kms_cursor_crc@pipe-F-cursor-128x42-sliding
+kms_cursor_crc@pipe-F-cursor-256x256-offscreen
+kms_cursor_crc@pipe-F-cursor-256x256-onscreen
+kms_cursor_crc@pipe-F-cursor-256x256-random
+kms_cursor_crc@pipe-F-cursor-256x256-rapid-movement
+kms_cursor_crc@pipe-F-cursor-256x256-sliding
+kms_cursor_crc@pipe-F-cursor-256x85-offscreen
+kms_cursor_crc@pipe-F-cursor-256x85-onscreen
+kms_cursor_crc@pipe-F-cursor-256x85-random
+kms_cursor_crc@pipe-F-cursor-256x85-rapid-movement
+kms_cursor_crc@pipe-F-cursor-256x85-sliding
+kms_cursor_crc@pipe-F-cursor-32x10-offscreen
+kms_cursor_crc@pipe-F-cursor-32x10-onscreen
+kms_cursor_crc@pipe-F-cursor-32x10-random
+kms_cursor_crc@pipe-F-cursor-32x10-rapid-movement
+kms_cursor_crc@pipe-F-cursor-32x10-sliding
+kms_cursor_crc@pipe-F-cursor-32x32-offscreen
+kms_cursor_crc@pipe-F-cursor-32x32-onscreen
+kms_cursor_crc@pipe-F-cursor-32x32-random
+kms_cursor_crc@pipe-F-cursor-32x32-rapid-movement
+kms_cursor_crc@pipe-F-cursor-32x32-sliding
+kms_cursor_crc@pipe-F-cursor-512x170-offscreen
+kms_cursor_crc@pipe-F-cursor-512x170-onscreen
+kms_cursor_crc@pipe-F-cursor-512x170-random
+kms_cursor_crc@pipe-F-cursor-512x170-rapid-movement
+kms_cursor_crc@pipe-F-cursor-512x170-sliding
+kms_cursor_crc@pipe-F-cursor-512x512-offscreen
+kms_cursor_crc@pipe-F-cursor-512x512-onscreen
+kms_cursor_crc@pipe-F-cursor-512x512-random
+kms_cursor_crc@pipe-F-cursor-512x512-rapid-movement
+kms_cursor_crc@pipe-F-cursor-512x512-sliding
+kms_cursor_crc@pipe-F-cursor-64x21-offscreen
+kms_cursor_crc@pipe-F-cursor-64x21-onscreen
+kms_cursor_crc@pipe-F-cursor-64x21-random
+kms_cursor_crc@pipe-F-cursor-64x21-rapid-movement
+kms_cursor_crc@pipe-F-cursor-64x21-sliding
+kms_cursor_crc@pipe-F-cursor-64x64-offscreen
+kms_cursor_crc@pipe-F-cursor-64x64-onscreen
+kms_cursor_crc@pipe-F-cursor-64x64-random
+kms_cursor_crc@pipe-F-cursor-64x64-rapid-movement
+kms_cursor_crc@pipe-F-cursor-64x64-sliding
+kms_cursor_crc@pipe-F-cursor-alpha-opaque
+kms_cursor_crc@pipe-F-cursor-alpha-transparent
+kms_cursor_crc@pipe-F-cursor-dpms
+kms_cursor_crc@pipe-F-cursor-max-size-offscreen
+kms_cursor_crc@pipe-F-cursor-max-size-onscreen
+kms_cursor_crc@pipe-F-cursor-max-size-random
+kms_cursor_crc@pipe-F-cursor-max-size-rapid-movement
+kms_cursor_crc@pipe-F-cursor-max-size-sliding
+kms_cursor_crc@pipe-F-cursor-size-change
+kms_cursor_crc@pipe-F-cursor-suspend
+kms_cursor_legacy@2x-cursor-vs-flip-atomic
+kms_cursor_legacy@2x-cursor-vs-flip-legacy
+kms_cursor_legacy@2x-flip-vs-cursor-atomic
+kms_cursor_legacy@2x-flip-vs-cursor-legacy
+kms_cursor_legacy@2x-long-cursor-vs-flip-atomic
+kms_cursor_legacy@2x-long-cursor-vs-flip-legacy
+kms_cursor_legacy@2x-long-flip-vs-cursor-atomic
+kms_cursor_legacy@2x-long-flip-vs-cursor-legacy
+kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic
+kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic
+kms_cursor_legacy@basic-busy-flip-before-cursor-atomic
+kms_cursor_legacy@basic-busy-flip-before-cursor-legacy
+kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size
+kms_cursor_legacy@basic-flip-after-cursor-atomic
+kms_cursor_legacy@basic-flip-after-cursor-legacy
+kms_cursor_legacy@basic-flip-after-cursor-varying-size
+kms_cursor_legacy@basic-flip-before-cursor-atomic
+kms_cursor_legacy@basic-flip-before-cursor-legacy
+kms_cursor_legacy@basic-flip-before-cursor-varying-size
+kms_cursor_legacy@cursorA-vs-flipB-atomic
+kms_cursor_legacy@cursorA-vs-flipB-atomic-transitions
+kms_cursor_legacy@cursorA-vs-flipB-atomic-transitions-varying-size
+kms_cursor_legacy@cursorA-vs-flipB-legacy
+kms_cursor_legacy@cursorA-vs-flipB-toggle
+kms_cursor_legacy@cursorA-vs-flipB-varying-size
+kms_cursor_legacy@cursorB-vs-flipA-atomic
+kms_cursor_legacy@cursorB-vs-flipA-atomic-transitions
+kms_cursor_legacy@cursorB-vs-flipA-atomic-transitions-varying-size
+kms_cursor_legacy@cursorB-vs-flipA-legacy
+kms_cursor_legacy@cursorB-vs-flipA-toggle
+kms_cursor_legacy@cursorB-vs-flipA-varying-size
+kms_cursor_legacy@cursorB-vs-flipB-atomic
+kms_cursor_legacy@cursorB-vs-flipB-atomic-transitions
+kms_cursor_legacy@cursorB-vs-flipB-atomic-transitions-varying-size
+kms_cursor_legacy@cursorB-vs-flipB-legacy
+kms_cursor_legacy@cursorB-vs-flipB-toggle
+kms_cursor_legacy@cursorB-vs-flipB-varying-size
+kms_cursor_legacy@flip-vs-cursor-busy-crc-atomic
+kms_cursor_legacy@flip-vs-cursor-busy-crc-legacy
+kms_cursor_legacy@flip-vs-cursor-crc-atomic
+kms_cursor_legacy@flip-vs-cursor-crc-legacy
+kms_cursor_legacy@nonblocking-modeset-vs-cursor-atomic
+kms_cursor_legacy@pipe-E-forked-bo
+kms_cursor_legacy@pipe-E-forked-move
+kms_cursor_legacy@pipe-E-single-bo
+kms_cursor_legacy@pipe-E-single-move
+kms_cursor_legacy@pipe-E-torture-bo
+kms_cursor_legacy@pipe-E-torture-move
+kms_cursor_legacy@pipe-F-forked-bo
+kms_cursor_legacy@pipe-F-forked-move
+kms_cursor_legacy@pipe-F-single-bo
+kms_cursor_legacy@pipe-F-single-move
+kms_cursor_legacy@pipe-F-torture-bo
+kms_cursor_legacy@pipe-F-torture-move
+kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions
+kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size
+kms_cursor_legacy@short-busy-flip-before-cursor-toggle
+kms_cursor_legacy@short-flip-after-cursor-atomic-transitions
+kms_cursor_legacy@short-flip-after-cursor-atomic-transitions-varying-size
+kms_cursor_legacy@short-flip-after-cursor-toggle
+kms_cursor_legacy@short-flip-before-cursor-atomic-transitions
+kms_cursor_legacy@short-flip-before-cursor-atomic-transitions-varying-size
+kms_cursor_legacy@short-flip-before-cursor-toggle
+kms_dither@FB-8BPC-Vs-Panel-6BPC
+kms_dither@FB-8BPC-Vs-Panel-8BPC
+kms_dp_aux_dev
+kms_dp_tiled_display@basic-test-pattern
+kms_draw_crc@draw-method-rgb565-blt-4tiled
+kms_draw_crc@draw-method-rgb565-blt-untiled
+kms_draw_crc@draw-method-rgb565-blt-xtiled
+kms_draw_crc@draw-method-rgb565-blt-ytiled
+kms_draw_crc@draw-method-rgb565-mmap-cpu-4tiled
+kms_draw_crc@draw-method-rgb565-mmap-cpu-untiled
+kms_draw_crc@draw-method-rgb565-mmap-cpu-xtiled
+kms_draw_crc@draw-method-rgb565-mmap-cpu-ytiled
+kms_draw_crc@draw-method-rgb565-mmap-gtt-4tiled
+kms_draw_crc@draw-method-rgb565-mmap-gtt-untiled
+kms_draw_crc@draw-method-rgb565-mmap-gtt-xtiled
+kms_draw_crc@draw-method-rgb565-mmap-gtt-ytiled
+kms_draw_crc@draw-method-rgb565-mmap-wc-4tiled
+kms_draw_crc@draw-method-rgb565-mmap-wc-untiled
+kms_draw_crc@draw-method-rgb565-mmap-wc-xtiled
+kms_draw_crc@draw-method-rgb565-mmap-wc-ytiled
+kms_draw_crc@draw-method-rgb565-pwrite-4tiled
+kms_draw_crc@draw-method-rgb565-pwrite-untiled
+kms_draw_crc@draw-method-rgb565-pwrite-xtiled
+kms_draw_crc@draw-method-rgb565-pwrite-ytiled
+kms_draw_crc@draw-method-rgb565-render-4tiled
+kms_draw_crc@draw-method-rgb565-render-untiled
+kms_draw_crc@draw-method-rgb565-render-xtiled
+kms_draw_crc@draw-method-rgb565-render-ytiled
+kms_draw_crc@draw-method-xrgb2101010-blt-4tiled
+kms_draw_crc@draw-method-xrgb2101010-blt-untiled
+kms_draw_crc@draw-method-xrgb2101010-blt-xtiled
+kms_draw_crc@draw-method-xrgb2101010-blt-ytiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-cpu-4tiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-cpu-untiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-cpu-xtiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-cpu-ytiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-gtt-4tiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-gtt-untiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-gtt-xtiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-gtt-ytiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-wc-4tiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-wc-untiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-wc-xtiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-wc-ytiled
+kms_draw_crc@draw-method-xrgb2101010-pwrite-4tiled
+kms_draw_crc@draw-method-xrgb2101010-pwrite-untiled
+kms_draw_crc@draw-method-xrgb2101010-pwrite-xtiled
+kms_draw_crc@draw-method-xrgb2101010-pwrite-ytiled
+kms_draw_crc@draw-method-xrgb2101010-render-4tiled
+kms_draw_crc@draw-method-xrgb2101010-render-untiled
+kms_draw_crc@draw-method-xrgb2101010-render-xtiled
+kms_draw_crc@draw-method-xrgb2101010-render-ytiled
+kms_draw_crc@draw-method-xrgb8888-blt-4tiled
+kms_draw_crc@draw-method-xrgb8888-blt-untiled
+kms_draw_crc@draw-method-xrgb8888-blt-xtiled
+kms_draw_crc@draw-method-xrgb8888-blt-ytiled
+kms_draw_crc@draw-method-xrgb8888-mmap-cpu-4tiled
+kms_draw_crc@draw-method-xrgb8888-mmap-cpu-untiled
+kms_draw_crc@draw-method-xrgb8888-mmap-cpu-xtiled
+kms_draw_crc@draw-method-xrgb8888-mmap-cpu-ytiled
+kms_draw_crc@draw-method-xrgb8888-mmap-gtt-4tiled
+kms_draw_crc@draw-method-xrgb8888-mmap-gtt-untiled
+kms_draw_crc@draw-method-xrgb8888-mmap-gtt-xtiled
+kms_draw_crc@draw-method-xrgb8888-mmap-gtt-ytiled
+kms_draw_crc@draw-method-xrgb8888-mmap-wc-4tiled
+kms_draw_crc@draw-method-xrgb8888-mmap-wc-untiled
+kms_draw_crc@draw-method-xrgb8888-mmap-wc-xtiled
+kms_draw_crc@draw-method-xrgb8888-mmap-wc-ytiled
+kms_draw_crc@draw-method-xrgb8888-pwrite-4tiled
+kms_draw_crc@draw-method-xrgb8888-pwrite-untiled
+kms_draw_crc@draw-method-xrgb8888-pwrite-xtiled
+kms_draw_crc@draw-method-xrgb8888-pwrite-ytiled
+kms_draw_crc@draw-method-xrgb8888-render-4tiled
+kms_draw_crc@draw-method-xrgb8888-render-untiled
+kms_draw_crc@draw-method-xrgb8888-render-xtiled
+kms_draw_crc@draw-method-xrgb8888-render-ytiled
+kms_draw_crc@fill-fb
+kms_dsc@basic-dsc-enable
+kms_dsc@XRGB8888-dsc-compression
+kms_fbcon_fbt@fbc
+kms_fbcon_fbt@fbc-suspend
+kms_fbcon_fbt@psr
+kms_fbcon_fbt@psr-suspend
+kms_fence_pin_leak
+kms_flip@2x-absolute-wf_vblank
+kms_flip@2x-absolute-wf_vblank-interruptible
+kms_flip@2x-blocking-absolute-wf_vblank
+kms_flip@2x-blocking-absolute-wf_vblank-interruptible
+kms_flip@2x-blocking-wf_vblank
+kms_flip@2x-busy-flip
+kms_flip@2x-dpms-vs-vblank-race
+kms_flip@2x-dpms-vs-vblank-race-interruptible
+kms_flip@2x-flip-vs-absolute-wf_vblank
+kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible
+kms_flip@2x-flip-vs-blocking-wf-vblank
+kms_flip@2x-flip-vs-dpms
+kms_flip@2x-flip-vs-dpms-off-vs-modeset
+kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible
+kms_flip@2x-flip-vs-expired-vblank
+kms_flip@2x-flip-vs-expired-vblank-interruptible
+kms_flip@2x-flip-vs-fences
+kms_flip@2x-flip-vs-fences-interruptible
+kms_flip@2x-flip-vs-modeset
+kms_flip@2x-flip-vs-modeset-vs-hang
+kms_flip@2x-flip-vs-panning
+kms_flip@2x-flip-vs-panning-interruptible
+kms_flip@2x-flip-vs-panning-vs-hang
+kms_flip@2x-flip-vs-rmfb
+kms_flip@2x-flip-vs-rmfb-interruptible
+kms_flip@2x-flip-vs-suspend
+kms_flip@2x-flip-vs-suspend-interruptible
+kms_flip@2x-flip-vs-wf_vblank
+kms_flip@2x-flip-vs-wf_vblank-interruptible
+kms_flip@2x-modeset-vs-vblank-race
+kms_flip@2x-modeset-vs-vblank-race-interruptible
+kms_flip@2x-nonexisting-fb
+kms_flip@2x-nonexisting-fb-interruptible
+kms_flip@2x-plain-flip
+kms_flip@2x-plain-flip-fb-recreate
+kms_flip@2x-plain-flip-fb-recreate-interruptible
+kms_flip@2x-plain-flip-interruptible
+kms_flip@2x-plain-flip-ts-check
+kms_flip@2x-plain-flip-ts-check-interruptible
+kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset
+kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset-interruptible
+kms_flip@2x-wf_vblank-ts-check
+kms_flip@2x-wf_vblank-ts-check-interruptible
+kms_flip@basic-plain-flip
+kms_flip@busy-flip
+kms_flip_event_leak
+kms_flip@nonblocking-read
+kms_flip@nonexisting-fb
+kms_flip@nonexisting-fb-interruptible
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_force_connector_basic@force-connector-state
+kms_force_connector_basic@force-edid
+kms_force_connector_basic@force-load-detect
+kms_force_connector_basic@prune-stale-modes
+kms_frontbuffer_tracking@basic
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-render
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-shrfb-draw-render
+kms_frontbuffer_tracking@drrs-1p-pri-indfb-multidraw
+kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@drrs-1p-rte
+kms_frontbuffer_tracking@drrs-2p-pri-indfb-multidraw
+kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@drrs-2p-rte
+kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-move
+kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-move
+kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@drrs-farfromfence-mmap-gtt
+kms_frontbuffer_tracking@drrs-indfb-scaledprimary
+kms_frontbuffer_tracking@drrs-modesetfrombusy
+kms_frontbuffer_tracking@drrs-rgb101010-draw-blt
+kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-rgb101010-draw-pwrite
+kms_frontbuffer_tracking@drrs-rgb101010-draw-render
+kms_frontbuffer_tracking@drrs-rgb565-draw-blt
+kms_frontbuffer_tracking@drrs-rgb565-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-rgb565-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-rgb565-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-rgb565-draw-pwrite
+kms_frontbuffer_tracking@drrs-rgb565-draw-render
+kms_frontbuffer_tracking@drrs-shrfb-scaledprimary
+kms_frontbuffer_tracking@drrs-slowdraw
+kms_frontbuffer_tracking@drrs-suspend
+kms_frontbuffer_tracking@fbc-1p-indfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbc-1p-rte
+kms_frontbuffer_tracking@fbc-1p-shrfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-indfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-pri-indfb-multidraw
+kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbc-2p-rte
+kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbc-2p-shrfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-1p-indfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-1p-pri-indfb-multidraw
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbcdrrs-1p-rte
+kms_frontbuffer_tracking@fbcdrrs-1p-shrfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-indfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-pri-indfb-multidraw
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbcdrrs-2p-rte
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbcdrrs-2p-shrfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-badstride
+kms_frontbuffer_tracking@fbcdrrs-farfromfence-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-indfb-scaledprimary
+kms_frontbuffer_tracking@fbcdrrs-modesetfrombusy
+kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-render
+kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-render
+kms_frontbuffer_tracking@fbcdrrs-shrfb-scaledprimary
+kms_frontbuffer_tracking@fbcdrrs-slowdraw
+kms_frontbuffer_tracking@fbcdrrs-stridechange
+kms_frontbuffer_tracking@fbcdrrs-suspend
+kms_frontbuffer_tracking@fbcdrrs-tiling-4
+kms_frontbuffer_tracking@fbcdrrs-tiling-linear
+kms_frontbuffer_tracking@fbcdrrs-tiling-y
+kms_frontbuffer_tracking@fbc-farfromfence-mmap-gtt
+kms_frontbuffer_tracking@fbc-indfb-scaledprimary
+kms_frontbuffer_tracking@fbc-modesetfrombusy
+kms_frontbuffer_tracking@fbcpsr-1p-indfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbcpsr-1p-rte
+kms_frontbuffer_tracking@fbcpsr-1p-shrfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-indfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-pri-indfb-multidraw
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbcpsr-2p-rte
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbcpsr-2p-shrfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-indfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-pri-indfb-multidraw
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-rte
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-shrfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-indfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-pri-indfb-multidraw
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-rte
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-shrfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-badstride
+kms_frontbuffer_tracking@fbcpsrdrrs-farfromfence-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-indfb-scaledprimary
+kms_frontbuffer_tracking@fbcpsrdrrs-modesetfrombusy
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-shrfb-scaledprimary
+kms_frontbuffer_tracking@fbcpsrdrrs-slowdraw
+kms_frontbuffer_tracking@fbcpsrdrrs-stridechange
+kms_frontbuffer_tracking@fbcpsrdrrs-suspend
+kms_frontbuffer_tracking@fbcpsrdrrs-tiling-4
+kms_frontbuffer_tracking@fbcpsrdrrs-tiling-linear
+kms_frontbuffer_tracking@fbcpsrdrrs-tiling-y
+kms_frontbuffer_tracking@fbcpsr-farfromfence-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary
+kms_frontbuffer_tracking@fbcpsr-modesetfrombusy
+kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt
+kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-render
+kms_frontbuffer_tracking@fbcpsr-rgb565-draw-blt
+kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-rgb565-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render
+kms_frontbuffer_tracking@fbcpsr-shrfb-scaledprimary
+kms_frontbuffer_tracking@fbcpsr-stridechange
+kms_frontbuffer_tracking@fbcpsr-tiling-4
+kms_frontbuffer_tracking@fbcpsr-tiling-linear
+kms_frontbuffer_tracking@fbcpsr-tiling-y
+kms_frontbuffer_tracking@fbc-rgb101010-draw-blt
+kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-rgb101010-draw-pwrite
+kms_frontbuffer_tracking@fbc-rgb101010-draw-render
+kms_frontbuffer_tracking@fbc-rgb565-draw-blt
+kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite
+kms_frontbuffer_tracking@fbc-rgb565-draw-render
+kms_frontbuffer_tracking@fbc-shrfb-scaledprimary
+kms_frontbuffer_tracking@fbc-stridechange
+kms_frontbuffer_tracking@fbc-tiling-4
+kms_frontbuffer_tracking@fbc-tiling-linear
+kms_frontbuffer_tracking@fbc-tiling-y
+kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-blt
+kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-render
+kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-render
+kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@psr-1p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@psr-1p-rte
+kms_frontbuffer_tracking@psr-2p-pri-indfb-multidraw
+kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@psr-2p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@psr-2p-rte
+kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-move
+kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-move
+kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-shrfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-1p-pri-indfb-multidraw
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@psrdrrs-1p-rte
+kms_frontbuffer_tracking@psrdrrs-2p-pri-indfb-multidraw
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@psrdrrs-2p-rte
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-move
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-move
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@psrdrrs-farfromfence-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-indfb-scaledprimary
+kms_frontbuffer_tracking@psrdrrs-modesetfrombusy
+kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-blt
+kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-render
+kms_frontbuffer_tracking@psrdrrs-rgb565-draw-blt
+kms_frontbuffer_tracking@psrdrrs-rgb565-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-rgb565-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-rgb565-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-rgb565-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-rgb565-draw-render
+kms_frontbuffer_tracking@psrdrrs-shrfb-scaledprimary
+kms_frontbuffer_tracking@psrdrrs-slowdraw
+kms_frontbuffer_tracking@psrdrrs-suspend
+kms_frontbuffer_tracking@psr-farfromfence-mmap-gtt
+kms_frontbuffer_tracking@psr-indfb-scaledprimary
+kms_frontbuffer_tracking@psr-modesetfrombusy
+kms_frontbuffer_tracking@psr-rgb101010-draw-blt
+kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-wc
+kms_frontbuffer_tracking@psr-rgb101010-draw-pwrite
+kms_frontbuffer_tracking@psr-rgb101010-draw-render
+kms_frontbuffer_tracking@psr-rgb565-draw-blt
+kms_frontbuffer_tracking@psr-rgb565-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-rgb565-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-rgb565-draw-mmap-wc
+kms_frontbuffer_tracking@psr-rgb565-draw-pwrite
+kms_frontbuffer_tracking@psr-rgb565-draw-render
+kms_frontbuffer_tracking@psr-shrfb-scaledprimary
+kms_frontbuffer_tracking@psr-suspend
+kms_getfb@getfb2-accept-ccs
+kms_getfb@getfb2-handle-closed
+kms_getfb@getfb2-handle-not-fb
+kms_getfb@getfb2-handle-protection
+kms_getfb@getfb2-handle-zero
+kms_getfb@getfb2-into-addfb2
+kms_getfb@getfb-addfb-different-handles
+kms_getfb@getfb-handle-closed
+kms_getfb@getfb-handle-not-fb
+kms_getfb@getfb-handle-protection
+kms_getfb@getfb-handle-valid
+kms_getfb@getfb-handle-zero
+kms_getfb@getfb-reject-ccs
+kms_getfb@getfb-repeated-different-handles
+kms_hdmi_inject@inject-audio
+kms_hdr@bpc-switch
+kms_hdr@bpc-switch-dpms
+kms_hdr@bpc-switch-suspend
+kms_hdr@static-swap
+kms_hdr@static-toggle
+kms_hdr@static-toggle-dpms
+kms_hdr@static-toggle-suspend
+kms_invalid_mode@bad-hsync-end
+kms_invalid_mode@bad-hsync-start
+kms_invalid_mode@bad-htotal
+kms_invalid_mode@bad-vsync-end
+kms_invalid_mode@bad-vsync-start
+kms_invalid_mode@bad-vtotal
+kms_invalid_mode@clock-too-high
+kms_invalid_mode@int-max-clock
+kms_invalid_mode@uint-max-clock
+kms_invalid_mode@zero-clock
+kms_invalid_mode@zero-hdisplay
+kms_invalid_mode@zero-vdisplay
+kms_legacy_colorkey
+kms_multipipe_modeset@basic-max-pipe-crc-check
+kms_panel_fitting@atomic-fastset
+kms_panel_fitting@legacy
+kms_pipe_b_c_ivb@disable-pipe-B-enable-pipe-C
+kms_pipe_b_c_ivb@enable-pipe-C-while-B-has-3-lanes
+kms_pipe_b_c_ivb@from-pipe-C-to-B-with-3-lanes
+kms_pipe_b_c_ivb@pipe-B-double-modeset-then-modeset-pipe-C
+kms_pipe_b_c_ivb@pipe-B-dpms-off-modeset-pipe-C
+kms_pipe_crc_basic@bad-source
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-A
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-B
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-C
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-D
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-E
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-F
+kms_pipe_crc_basic@disable-crc-after-crtc-pipe-A
+kms_pipe_crc_basic@disable-crc-after-crtc-pipe-B
+kms_pipe_crc_basic@disable-crc-after-crtc-pipe-C
+kms_pipe_crc_basic@disable-crc-after-crtc-pipe-D
+kms_pipe_crc_basic@disable-crc-after-crtc-pipe-E
+kms_pipe_crc_basic@disable-crc-after-crtc-pipe-F
+kms_pipe_crc_basic@hang-read-crc-pipe-A
+kms_pipe_crc_basic@hang-read-crc-pipe-B
+kms_pipe_crc_basic@hang-read-crc-pipe-C
+kms_pipe_crc_basic@hang-read-crc-pipe-D
+kms_pipe_crc_basic@hang-read-crc-pipe-E
+kms_pipe_crc_basic@hang-read-crc-pipe-F
+kms_pipe_crc_basic@nonblocking-crc-pipe-A
+kms_pipe_crc_basic@nonblocking-crc-pipe-A-frame-sequence
+kms_pipe_crc_basic@nonblocking-crc-pipe-B
+kms_pipe_crc_basic@nonblocking-crc-pipe-B-frame-sequence
+kms_pipe_crc_basic@nonblocking-crc-pipe-C
+kms_pipe_crc_basic@nonblocking-crc-pipe-C-frame-sequence
+kms_pipe_crc_basic@nonblocking-crc-pipe-D
+kms_pipe_crc_basic@nonblocking-crc-pipe-D-frame-sequence
+kms_pipe_crc_basic@nonblocking-crc-pipe-E
+kms_pipe_crc_basic@nonblocking-crc-pipe-E-frame-sequence
+kms_pipe_crc_basic@nonblocking-crc-pipe-F
+kms_pipe_crc_basic@nonblocking-crc-pipe-F-frame-sequence
+kms_pipe_crc_basic@read-crc-pipe-A
+kms_pipe_crc_basic@read-crc-pipe-A-frame-sequence
+kms_pipe_crc_basic@read-crc-pipe-B
+kms_pipe_crc_basic@read-crc-pipe-B-frame-sequence
+kms_pipe_crc_basic@read-crc-pipe-C
+kms_pipe_crc_basic@read-crc-pipe-C-frame-sequence
+kms_pipe_crc_basic@read-crc-pipe-D
+kms_pipe_crc_basic@read-crc-pipe-D-frame-sequence
+kms_pipe_crc_basic@read-crc-pipe-E
+kms_pipe_crc_basic@read-crc-pipe-E-frame-sequence
+kms_pipe_crc_basic@read-crc-pipe-F
+kms_pipe_crc_basic@read-crc-pipe-F-frame-sequence
+kms_pipe_crc_basic@suspend-read-crc-pipe-A
+kms_pipe_crc_basic@suspend-read-crc-pipe-B
+kms_pipe_crc_basic@suspend-read-crc-pipe-C
+kms_pipe_crc_basic@suspend-read-crc-pipe-D
+kms_pipe_crc_basic@suspend-read-crc-pipe-E
+kms_pipe_crc_basic@suspend-read-crc-pipe-F
+kms_plane_alpha_blend@pipe-A-alpha-7efc
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-A-constant-alpha-max
+kms_plane_alpha_blend@pipe-A-constant-alpha-mid
+kms_plane_alpha_blend@pipe-A-constant-alpha-min
+kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant
+kms_plane_alpha_blend@pipe-B-alpha-7efc
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-B-constant-alpha-mid
+kms_plane_alpha_blend@pipe-B-constant-alpha-min
+kms_plane_alpha_blend@pipe-B-coverage-vs-premult-vs-constant
+kms_plane_alpha_blend@pipe-C-alpha-7efc
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-C-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-constant-alpha-mid
+kms_plane_alpha_blend@pipe-C-constant-alpha-min
+kms_plane_alpha_blend@pipe-C-coverage-vs-premult-vs-constant
+kms_plane_alpha_blend@pipe-D-alpha-7efc
+kms_plane_alpha_blend@pipe-D-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-D-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-D-constant-alpha-max
+kms_plane_alpha_blend@pipe-D-constant-alpha-mid
+kms_plane_alpha_blend@pipe-D-constant-alpha-min
+kms_plane_alpha_blend@pipe-D-coverage-vs-premult-vs-constant
+kms_plane_alpha_blend@pipe-E-alpha-7efc
+kms_plane_alpha_blend@pipe-E-alpha-basic
+kms_plane_alpha_blend@pipe-E-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-E-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-E-constant-alpha-max
+kms_plane_alpha_blend@pipe-E-constant-alpha-mid
+kms_plane_alpha_blend@pipe-E-constant-alpha-min
+kms_plane_alpha_blend@pipe-E-coverage-7efc
+kms_plane_alpha_blend@pipe-E-coverage-vs-premult-vs-constant
+kms_plane_alpha_blend@pipe-F-alpha-7efc
+kms_plane_alpha_blend@pipe-F-alpha-basic
+kms_plane_alpha_blend@pipe-F-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-F-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-F-constant-alpha-max
+kms_plane_alpha_blend@pipe-F-constant-alpha-mid
+kms_plane_alpha_blend@pipe-F-constant-alpha-min
+kms_plane_alpha_blend@pipe-F-coverage-7efc
+kms_plane_alpha_blend@pipe-F-coverage-vs-premult-vs-constant
+kms_plane_cursor@pipe-A-overlay-size-128
+kms_plane_cursor@pipe-A-overlay-size-256
+kms_plane_cursor@pipe-A-overlay-size-64
+kms_plane_cursor@pipe-A-primary-size-128
+kms_plane_cursor@pipe-A-primary-size-256
+kms_plane_cursor@pipe-A-primary-size-64
+kms_plane_cursor@pipe-A-viewport-size-128
+kms_plane_cursor@pipe-A-viewport-size-256
+kms_plane_cursor@pipe-A-viewport-size-64
+kms_plane_cursor@pipe-B-overlay-size-128
+kms_plane_cursor@pipe-B-overlay-size-256
+kms_plane_cursor@pipe-B-overlay-size-64
+kms_plane_cursor@pipe-B-primary-size-128
+kms_plane_cursor@pipe-B-primary-size-256
+kms_plane_cursor@pipe-B-primary-size-64
+kms_plane_cursor@pipe-B-viewport-size-128
+kms_plane_cursor@pipe-B-viewport-size-256
+kms_plane_cursor@pipe-B-viewport-size-64
+kms_plane_cursor@pipe-C-overlay-size-128
+kms_plane_cursor@pipe-C-overlay-size-256
+kms_plane_cursor@pipe-C-overlay-size-64
+kms_plane_cursor@pipe-C-primary-size-128
+kms_plane_cursor@pipe-C-primary-size-256
+kms_plane_cursor@pipe-C-primary-size-64
+kms_plane_cursor@pipe-C-viewport-size-128
+kms_plane_cursor@pipe-C-viewport-size-256
+kms_plane_cursor@pipe-C-viewport-size-64
+kms_plane_cursor@pipe-D-overlay-size-128
+kms_plane_cursor@pipe-D-overlay-size-256
+kms_plane_cursor@pipe-D-overlay-size-64
+kms_plane_cursor@pipe-D-primary-size-128
+kms_plane_cursor@pipe-D-primary-size-256
+kms_plane_cursor@pipe-D-primary-size-64
+kms_plane_cursor@pipe-D-viewport-size-128
+kms_plane_cursor@pipe-D-viewport-size-256
+kms_plane_cursor@pipe-D-viewport-size-64
+kms_plane_cursor@pipe-E-overlay-size-128
+kms_plane_cursor@pipe-E-overlay-size-256
+kms_plane_cursor@pipe-E-overlay-size-64
+kms_plane_cursor@pipe-E-primary-size-128
+kms_plane_cursor@pipe-E-primary-size-256
+kms_plane_cursor@pipe-E-primary-size-64
+kms_plane_cursor@pipe-E-viewport-size-128
+kms_plane_cursor@pipe-E-viewport-size-256
+kms_plane_cursor@pipe-E-viewport-size-64
+kms_plane_cursor@pipe-F-overlay-size-128
+kms_plane_cursor@pipe-F-overlay-size-256
+kms_plane_cursor@pipe-F-overlay-size-64
+kms_plane_cursor@pipe-F-primary-size-128
+kms_plane_cursor@pipe-F-primary-size-256
+kms_plane_cursor@pipe-F-primary-size-64
+kms_plane_cursor@pipe-F-viewport-size-128
+kms_plane_cursor@pipe-F-viewport-size-256
+kms_plane_cursor@pipe-F-viewport-size-64
+kms_plane_lowres@pipe-A-tiling-4
+kms_plane_lowres@pipe-A-tiling-none
+kms_plane_lowres@pipe-A-tiling-x
+kms_plane_lowres@pipe-A-tiling-y
+kms_plane_lowres@pipe-A-tiling-yf
+kms_plane_lowres@pipe-B-tiling-4
+kms_plane_lowres@pipe-B-tiling-none
+kms_plane_lowres@pipe-B-tiling-x
+kms_plane_lowres@pipe-B-tiling-y
+kms_plane_lowres@pipe-B-tiling-yf
+kms_plane_lowres@pipe-C-tiling-4
+kms_plane_lowres@pipe-C-tiling-none
+kms_plane_lowres@pipe-C-tiling-x
+kms_plane_lowres@pipe-C-tiling-y
+kms_plane_lowres@pipe-C-tiling-yf
+kms_plane_lowres@pipe-D-tiling-4
+kms_plane_lowres@pipe-D-tiling-none
+kms_plane_lowres@pipe-D-tiling-x
+kms_plane_lowres@pipe-D-tiling-y
+kms_plane_lowres@pipe-D-tiling-yf
+kms_plane_lowres@pipe-E-tiling-4
+kms_plane_lowres@pipe-E-tiling-none
+kms_plane_lowres@pipe-E-tiling-x
+kms_plane_lowres@pipe-E-tiling-y
+kms_plane_lowres@pipe-E-tiling-yf
+kms_plane_lowres@pipe-F-tiling-4
+kms_plane_lowres@pipe-F-tiling-none
+kms_plane_lowres@pipe-F-tiling-x
+kms_plane_lowres@pipe-F-tiling-y
+kms_plane_lowres@pipe-F-tiling-yf
+kms_plane_multiple@atomic-pipe-A-tiling-4
+kms_plane_multiple@atomic-pipe-A-tiling-none
+kms_plane_multiple@atomic-pipe-A-tiling-x
+kms_plane_multiple@atomic-pipe-A-tiling-y
+kms_plane_multiple@atomic-pipe-A-tiling-yf
+kms_plane_multiple@atomic-pipe-B-tiling-4
+kms_plane_multiple@atomic-pipe-B-tiling-none
+kms_plane_multiple@atomic-pipe-B-tiling-x
+kms_plane_multiple@atomic-pipe-B-tiling-y
+kms_plane_multiple@atomic-pipe-B-tiling-yf
+kms_plane_multiple@atomic-pipe-C-tiling-4
+kms_plane_multiple@atomic-pipe-C-tiling-none
+kms_plane_multiple@atomic-pipe-C-tiling-x
+kms_plane_multiple@atomic-pipe-C-tiling-y
+kms_plane_multiple@atomic-pipe-C-tiling-yf
+kms_plane_multiple@atomic-pipe-D-tiling-4
+kms_plane_multiple@atomic-pipe-D-tiling-none
+kms_plane_multiple@atomic-pipe-D-tiling-x
+kms_plane_multiple@atomic-pipe-D-tiling-y
+kms_plane_multiple@atomic-pipe-D-tiling-yf
+kms_plane_multiple@atomic-pipe-E-tiling-4
+kms_plane_multiple@atomic-pipe-E-tiling-none
+kms_plane_multiple@atomic-pipe-E-tiling-x
+kms_plane_multiple@atomic-pipe-E-tiling-y
+kms_plane_multiple@atomic-pipe-E-tiling-yf
+kms_plane_multiple@atomic-pipe-F-tiling-4
+kms_plane_multiple@atomic-pipe-F-tiling-none
+kms_plane_multiple@atomic-pipe-F-tiling-x
+kms_plane_multiple@atomic-pipe-F-tiling-y
+kms_plane_multiple@atomic-pipe-F-tiling-yf
+kms_plane@plane-panning-bottom-right
+kms_plane@plane-panning-top-left
+kms_plane_scaling@2x-scaler-multi-pipe
+kms_plane_scaling@downscale-with-modifier-factor-0-25
+kms_plane_scaling@downscale-with-rotation-factor-0-25
+kms_plane_scaling@invalid-num-scalers
+kms_plane_scaling@planes-downscale-factor-0-25
+kms_plane_scaling@planes-downscale-factor-0-5
+kms_plane_scaling@planes-downscale-factor-0-75
+kms_plane_scaling@planes-scaling-unity-scaling
+kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25
+kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5
+kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75
+kms_plane_scaling@planes-upscale-20x20
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75
+kms_plane_scaling@planes-upscale-factor-0-25
+kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25
+kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5
+kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75
+kms_plane_scaling@upscale-with-modifier-20x20
+kms_plane_scaling@upscale-with-modifier-factor-0-25
+kms_plane_scaling@upscale-with-pixel-format-20x20
+kms_plane_scaling@upscale-with-pixel-format-factor-0-25
+kms_plane_scaling@upscale-with-rotation-20x20
+kms_prime@basic-crc
+kms_prop_blob@basic
+kms_prop_blob@blob-multiple
+kms_prop_blob@blob-prop-core
+kms_prop_blob@blob-prop-lifetime
+kms_prop_blob@blob-prop-validate
+kms_prop_blob@invalid-get-prop
+kms_prop_blob@invalid-get-prop-any
+kms_prop_blob@invalid-set-prop
+kms_prop_blob@invalid-set-prop-any
+kms_properties@connector-properties-atomic
+kms_properties@crtc-properties-atomic
+kms_properties@crtc-properties-legacy
+kms_properties@get_properties-sanity-atomic
+kms_properties@get_properties-sanity-non-atomic
+kms_properties@invalid-properties-atomic
+kms_properties@invalid-properties-legacy
+kms_properties@plane-properties-atomic
+kms_properties@plane-properties-legacy
+kms_psr2_sf@cursor-plane-move-continuous-sf
+kms_psr2_sf@cursor-plane-update-sf
+kms_psr2_sf@overlay-plane-move-continuous-sf
+kms_psr2_sf@overlay-plane-update-continuous-sf
+kms_psr2_sf@overlay-plane-update-sf-dmg-area
+kms_psr2_sf@overlay-primary-update-sf-dmg-area
+kms_psr2_sf@plane-move-sf-dmg-area
+kms_psr2_sf@primary-plane-update-sf-dmg-area
+kms_psr2_su@frontbuffer-XRGB8888
+kms_psr2_su@page_flip-NV12
+kms_psr2_su@page_flip-P010
+kms_psr2_su@page_flip-XRGB8888
+kms_psr@basic
+kms_psr@cursor_blt
+kms_psr@cursor_mmap_cpu
+kms_psr@cursor_mmap_gtt
+kms_psr@cursor_plane_move
+kms_psr@cursor_plane_onoff
+kms_psr@cursor_render
+kms_psr@dpms
+kms_psr@no_drrs
+kms_psr@primary_blt
+kms_psr@primary_mmap_cpu
+kms_psr@primary_mmap_gtt
+kms_psr@primary_page_flip
+kms_psr@primary_render
+kms_psr@psr2_basic
+kms_psr@psr2_cursor_blt
+kms_psr@psr2_cursor_mmap_cpu
+kms_psr@psr2_cursor_mmap_gtt
+kms_psr@psr2_cursor_plane_move
+kms_psr@psr2_cursor_plane_onoff
+kms_psr@psr2_cursor_render
+kms_psr@psr2_dpms
+kms_psr@psr2_no_drrs
+kms_psr@psr2_primary_blt
+kms_psr@psr2_primary_mmap_cpu
+kms_psr@psr2_primary_mmap_gtt
+kms_psr@psr2_primary_page_flip
+kms_psr@psr2_primary_render
+kms_psr@psr2_sprite_blt
+kms_psr@psr2_sprite_mmap_cpu
+kms_psr@psr2_sprite_mmap_gtt
+kms_psr@psr2_sprite_plane_move
+kms_psr@psr2_sprite_plane_onoff
+kms_psr@psr2_sprite_render
+kms_psr@psr2_suspend
+kms_psr@sprite_blt
+kms_psr@sprite_mmap_cpu
+kms_psr@sprite_mmap_gtt
+kms_psr@sprite_plane_move
+kms_psr@sprite_plane_onoff
+kms_psr@sprite_render
+kms_psr@suspend
+kms_pwrite_crc
+kms_rmfb@close-fd
+kms_rmfb@rmfb-ioctl
+kms_rotation_crc@bad-pixel-format
+kms_rotation_crc@bad-tiling
+kms_rotation_crc@cursor-rotation-180
+kms_rotation_crc@exhaust-fences
+kms_rotation_crc@primary-4-tiled-reflect-x-0
+kms_rotation_crc@primary-4-tiled-reflect-x-180
+kms_rotation_crc@primary-rotation-180
+kms_rotation_crc@primary-x-tiled-reflect-x-0
+kms_rotation_crc@primary-x-tiled-reflect-x-180
+kms_rotation_crc@primary-yf-tiled-reflect-x-0
+kms_rotation_crc@primary-yf-tiled-reflect-x-180
+kms_rotation_crc@primary-yf-tiled-reflect-x-270
+kms_rotation_crc@primary-yf-tiled-reflect-x-90
+kms_rotation_crc@primary-y-tiled-reflect-x-0
+kms_rotation_crc@primary-y-tiled-reflect-x-180
+kms_rotation_crc@primary-y-tiled-reflect-x-270
+kms_rotation_crc@primary-y-tiled-reflect-x-90
+kms_rotation_crc@sprite-rotation-180
+kms_scaling_modes@scaling-mode-center
+kms_scaling_modes@scaling-mode-full
+kms_scaling_modes@scaling-mode-full-aspect
+kms_scaling_modes@scaling-mode-none
+kms_selftest@all
+kms_setmode@basic-clone-single-crtc
+kms_setmode@clone-exclusive-crtc
+kms_setmode@invalid-clone-exclusive-crtc
+kms_setmode@invalid-clone-single-crtc
+kms_setmode@invalid-clone-single-crtc-stealing
+kms_sysfs_edid_timing
+kms_tv_load_detect@load-detect
+kms_universal_plane@cursor-fb-leak-pipe-A
+kms_universal_plane@cursor-fb-leak-pipe-B
+kms_universal_plane@cursor-fb-leak-pipe-C
+kms_universal_plane@cursor-fb-leak-pipe-D
+kms_universal_plane@cursor-fb-leak-pipe-E
+kms_universal_plane@cursor-fb-leak-pipe-F
+kms_universal_plane@disable-primary-vs-flip-pipe-A
+kms_universal_plane@disable-primary-vs-flip-pipe-B
+kms_universal_plane@disable-primary-vs-flip-pipe-C
+kms_universal_plane@disable-primary-vs-flip-pipe-D
+kms_universal_plane@disable-primary-vs-flip-pipe-E
+kms_universal_plane@disable-primary-vs-flip-pipe-F
+kms_universal_plane@universal-plane-gen9-features-pipe-A
+kms_universal_plane@universal-plane-gen9-features-pipe-B
+kms_universal_plane@universal-plane-gen9-features-pipe-C
+kms_universal_plane@universal-plane-gen9-features-pipe-D
+kms_universal_plane@universal-plane-gen9-features-pipe-E
+kms_universal_plane@universal-plane-gen9-features-pipe-F
+kms_universal_plane@universal-plane-pipe-A-functional
+kms_universal_plane@universal-plane-pipe-A-sanity
+kms_universal_plane@universal-plane-pipe-B-functional
+kms_universal_plane@universal-plane-pipe-B-sanity
+kms_universal_plane@universal-plane-pipe-C-functional
+kms_universal_plane@universal-plane-pipe-C-sanity
+kms_universal_plane@universal-plane-pipe-D-functional
+kms_universal_plane@universal-plane-pipe-D-sanity
+kms_universal_plane@universal-plane-pipe-E-functional
+kms_universal_plane@universal-plane-pipe-E-sanity
+kms_universal_plane@universal-plane-pipe-F-functional
+kms_universal_plane@universal-plane-pipe-F-sanity
+kms_vblank@crtc-id
+kms_vblank@invalid
+kms_vblank@pipe-A-accuracy-idle
+kms_vblank@pipe-A-query-busy
+kms_vblank@pipe-A-query-forked
+kms_vblank@pipe-A-query-forked-busy
+kms_vblank@pipe-A-query-idle
+kms_vblank@pipe-A-ts-continuation-idle
+kms_vblank@pipe-A-ts-continuation-modeset
+kms_vblank@pipe-A-ts-continuation-suspend
+kms_vblank@pipe-A-wait-busy
+kms_vblank@pipe-A-wait-forked
+kms_vblank@pipe-A-wait-forked-busy
+kms_vblank@pipe-A-wait-idle
+kms_vblank@pipe-B-accuracy-idle
+kms_vblank@pipe-B-query-busy
+kms_vblank@pipe-B-query-forked
+kms_vblank@pipe-B-query-forked-busy
+kms_vblank@pipe-B-query-idle
+kms_vblank@pipe-B-ts-continuation-dpms-suspend
+kms_vblank@pipe-B-ts-continuation-idle
+kms_vblank@pipe-B-ts-continuation-modeset
+kms_vblank@pipe-B-ts-continuation-suspend
+kms_vblank@pipe-B-wait-busy
+kms_vblank@pipe-B-wait-forked
+kms_vblank@pipe-B-wait-forked-busy
+kms_vblank@pipe-B-wait-idle
+kms_vblank@pipe-C-accuracy-idle
+kms_vblank@pipe-C-query-busy
+kms_vblank@pipe-C-query-forked
+kms_vblank@pipe-C-query-forked-busy
+kms_vblank@pipe-C-query-idle
+kms_vblank@pipe-C-ts-continuation-dpms-suspend
+kms_vblank@pipe-C-ts-continuation-idle
+kms_vblank@pipe-C-ts-continuation-modeset
+kms_vblank@pipe-C-ts-continuation-suspend
+kms_vblank@pipe-C-wait-busy
+kms_vblank@pipe-C-wait-forked
+kms_vblank@pipe-C-wait-forked-busy
+kms_vblank@pipe-C-wait-idle
+kms_vblank@pipe-D-accuracy-idle
+kms_vblank@pipe-D-query-busy
+kms_vblank@pipe-D-query-forked
+kms_vblank@pipe-D-query-forked-busy
+kms_vblank@pipe-D-query-idle
+kms_vblank@pipe-D-ts-continuation-dpms-suspend
+kms_vblank@pipe-D-ts-continuation-idle
+kms_vblank@pipe-D-ts-continuation-modeset
+kms_vblank@pipe-D-ts-continuation-suspend
+kms_vblank@pipe-D-wait-busy
+kms_vblank@pipe-D-wait-forked
+kms_vblank@pipe-D-wait-forked-busy
+kms_vblank@pipe-D-wait-idle
+kms_vblank@pipe-E-accuracy-idle
+kms_vblank@pipe-E-query-busy
+kms_vblank@pipe-E-query-busy-hang
+kms_vblank@pipe-E-query-forked
+kms_vblank@pipe-E-query-forked-busy
+kms_vblank@pipe-E-query-forked-busy-hang
+kms_vblank@pipe-E-query-forked-hang
+kms_vblank@pipe-E-query-idle
+kms_vblank@pipe-E-query-idle-hang
+kms_vblank@pipe-E-ts-continuation-dpms-rpm
+kms_vblank@pipe-E-ts-continuation-dpms-suspend
+kms_vblank@pipe-E-ts-continuation-idle
+kms_vblank@pipe-E-ts-continuation-idle-hang
+kms_vblank@pipe-E-ts-continuation-modeset
+kms_vblank@pipe-E-ts-continuation-modeset-hang
+kms_vblank@pipe-E-ts-continuation-modeset-rpm
+kms_vblank@pipe-E-ts-continuation-suspend
+kms_vblank@pipe-E-wait-busy
+kms_vblank@pipe-E-wait-busy-hang
+kms_vblank@pipe-E-wait-forked
+kms_vblank@pipe-E-wait-forked-busy
+kms_vblank@pipe-E-wait-forked-busy-hang
+kms_vblank@pipe-E-wait-forked-hang
+kms_vblank@pipe-E-wait-idle
+kms_vblank@pipe-E-wait-idle-hang
+kms_vblank@pipe-F-accuracy-idle
+kms_vblank@pipe-F-query-busy
+kms_vblank@pipe-F-query-busy-hang
+kms_vblank@pipe-F-query-forked
+kms_vblank@pipe-F-query-forked-busy
+kms_vblank@pipe-F-query-forked-busy-hang
+kms_vblank@pipe-F-query-forked-hang
+kms_vblank@pipe-F-query-idle
+kms_vblank@pipe-F-query-idle-hang
+kms_vblank@pipe-F-ts-continuation-dpms-rpm
+kms_vblank@pipe-F-ts-continuation-dpms-suspend
+kms_vblank@pipe-F-ts-continuation-idle
+kms_vblank@pipe-F-ts-continuation-idle-hang
+kms_vblank@pipe-F-ts-continuation-modeset
+kms_vblank@pipe-F-ts-continuation-modeset-hang
+kms_vblank@pipe-F-ts-continuation-modeset-rpm
+kms_vblank@pipe-F-ts-continuation-suspend
+kms_vblank@pipe-F-wait-busy
+kms_vblank@pipe-F-wait-busy-hang
+kms_vblank@pipe-F-wait-forked
+kms_vblank@pipe-F-wait-forked-busy
+kms_vblank@pipe-F-wait-forked-busy-hang
+kms_vblank@pipe-F-wait-forked-hang
+kms_vblank@pipe-F-wait-idle
+kms_vblank@pipe-F-wait-idle-hang
+kms_vrr@flip-basic
+kms_vrr@flip-dpms
+kms_vrr@flipline
+kms_vrr@flip-suspend
+kms_writeback@writeback-check-output
+kms_writeback@writeback-fb-id
+kms_writeback@writeback-invalid-parameters
+kms_writeback@writeback-pixel-formats
+prime_mmap_kms@buffer-sharing
diff --git a/drivers/gpu/drm/ci/x86_64.config b/drivers/gpu/drm/ci/x86_64.config
new file mode 100644
index 000000000000..8f2cec020bed
--- /dev/null
+++ b/drivers/gpu/drm/ci/x86_64.config
@@ -0,0 +1,105 @@
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_DEBUG_KERNEL=y
+
+CONFIG_PWM=y
+CONFIG_PM_DEVFREQ=y
+CONFIG_OF=y
+CONFIG_CROS_EC=y
+
+# abootimg with a 'dummy' rootfs fails with root=/dev/nfs
+CONFIG_BLK_DEV_INITRD=n
+
+CONFIG_DEVFREQ_GOV_PERFORMANCE=y
+CONFIG_DEVFREQ_GOV_POWERSAVE=y
+CONFIG_DEVFREQ_GOV_USERSPACE=y
+CONFIG_DEVFREQ_GOV_PASSIVE=y
+
+CONFIG_DRM=y
+CONFIG_DRM_PANEL_SIMPLE=y
+CONFIG_PWM_CROS_EC=y
+CONFIG_BACKLIGHT_PWM=y
+
+# Strip out some stuff we don't need for graphics testing, to reduce
+# the build.
+CONFIG_CAN=n
+CONFIG_WIRELESS=n
+CONFIG_RFKILL=n
+CONFIG_WLAN=n
+
+CONFIG_REGULATOR_FAN53555=y
+CONFIG_REGULATOR=y
+
+CONFIG_REGULATOR_VCTRL=y
+
+CONFIG_KASAN=n
+CONFIG_KASAN_INLINE=n
+CONFIG_STACKTRACE=n
+
+CONFIG_TMPFS=y
+
+CONFIG_PROVE_LOCKING=n
+CONFIG_DEBUG_LOCKDEP=n
+CONFIG_SOFTLOCKUP_DETECTOR=y
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
+
+CONFIG_DETECT_HUNG_TASK=y
+
+CONFIG_USB_USBNET=y
+CONFIG_NETDEVICES=y
+CONFIG_USB_NET_DRIVERS=y
+CONFIG_USB_RTL8152=y
+CONFIG_USB_NET_AX8817X=y
+CONFIG_USB_NET_SMSC95XX=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_ETH=y
+
+CONFIG_FW_LOADER_COMPRESS=y
+
+# options for AMD devices
+CONFIG_X86_AMD_PLATFORM_DEVICE=y
+CONFIG_ACPI_VIDEO=y
+CONFIG_X86_AMD_FREQ_SENSITIVITY=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_AMD=y
+CONFIG_DRM_AMDGPU=m
+CONFIG_DRM_AMDGPU_SI=y
+CONFIG_DRM_AMDGPU_USERPTR=y
+CONFIG_DRM_AMD_ACP=n
+CONFIG_ACPI_WMI=y
+CONFIG_MXM_WMI=y
+CONFIG_PARPORT=y
+CONFIG_PARPORT_PC=y
+CONFIG_PARPORT_SERIAL=y
+CONFIG_SERIAL_8250_DW=y
+CONFIG_CHROME_PLATFORMS=y
+CONFIG_KVM_AMD=m
+
+#options for Intel devices
+CONFIG_MFD_INTEL_LPSS_PCI=y
+CONFIG_KVM_INTEL=m
+
+#options for KVM guests
+CONFIG_FUSE_FS=y
+CONFIG_HYPERVISOR_GUEST=y
+CONFIG_KVM=y
+CONFIG_KVM_GUEST=y
+CONFIG_VIRT_DRIVERS=y
+CONFIG_VIRTIO_FS=y
+CONFIG_DRM_VIRTIO_GPU=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_VIRTIO_NET=y
+CONFIG_VIRTIO_CONSOLE=y
+CONFIG_PARAVIRT=y
+CONFIG_VIRTIO_BLK=y
+CONFIG_VIRTUALIZATION=y
+CONFIG_VIRTIO=y
+CONFIG_VIRTIO_PCI=y
+CONFIG_VIRTIO_MMIO=y
+CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
+CONFIG_CRYPTO_DEV_VIRTIO=y
+CONFIG_HW_RANDOM_VIRTIO=y
+CONFIG_BLK_MQ_VIRTIO=y
+CONFIG_TUN=y
+CONFIG_VSOCKETS=y
+CONFIG_VIRTIO_VSOCKETS=y
+CONFIG_VHOST_VSOCK=m
diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt
new file mode 100644
index 000000000000..b596e5bf5348
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt
@@ -0,0 +1,19 @@
+kms_bw@linear-tiling-1-displays-2560x1440p,Fail
+kms_bw@linear-tiling-1-displays-3840x2160p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_cursor_crc@pipe-A-cursor-size-change,Fail
+kms_cursor_crc@pipe-B-cursor-size-change,Fail
+kms_hdr@bpc-switch,Fail
+kms_hdr@bpc-switch-dpms,Fail
+kms_plane_multiple@atomic-pipe-A-tiling-none,Fail
+kms_rotation_crc@primary-rotation-180,Fail
+kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
+kms_async_flips@alternate-sync-async-flip,Fail
+kms_async_flips@async-flip-with-page-flip-events,Fail
+kms_async_flips@crc,Fail
+kms_async_flips@invalid-async-flip,Fail
+kms_async_flips@test-cursor,Fail
+kms_async_flips@test-time-stamp,Fail
+kms_addfb_basic@bad-pitch-65536,Fail
+kms_addfb_basic@bo-too-small,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt
new file mode 100644
index 000000000000..200706d8742b
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt
@@ -0,0 +1,15 @@
+kms_addfb_basic@too-high
+kms_atomic_transition@plane-all-modeset-transition-internal-panels
+kms_atomic_transition@plane-all-transition
+kms_atomic_transition@plane-use-after-nonblocking-unbind
+kms_bw@linear-tiling-1-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_cursor_crc@pipe-A-cursor-alpha-opaque
+kms_cursor_crc@pipe-B-cursor-alpha-opaque
+kms_plane_multiple@atomic-pipe-B-tiling-none
+kms_plane@pixel-format
+kms_plane_scaling@downscale-with-rotation-factor-0-5
+kms_universal_plane@disable-primary-vs-flip-pipe-A
diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt
new file mode 100644
index 000000000000..67d78f10b671
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt
@@ -0,0 +1,32 @@
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-2560x1440p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-A-constant-alpha-max
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-C-constant-alpha-max
+kms_sysfs_edid_timing
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt b/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-apl-fails.txt b/drivers/gpu/drm/ci/xfails/i915-apl-fails.txt
new file mode 100644
index 000000000000..a077f29d5cba
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-apl-fails.txt
@@ -0,0 +1,29 @@
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_bw@linear-tiling-4-displays-1920x1080p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-3840x2160p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
+kms_sysfs_edid_timing,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt
new file mode 100644
index 000000000000..618bbe6bb793
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt
@@ -0,0 +1 @@
+kms_frontbuffer_tracking@fbc-tiling-linear
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt b/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt
new file mode 100644
index 000000000000..13ba297273d0
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt
@@ -0,0 +1,37 @@
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-2560x1440p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip@flip-vs-suspend
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
+kms_hdr@bpc-switch-suspend
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-A-constant-alpha-max
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-C-constant-alpha-max
+kms_psr2_su@page_flip-NV12
+kms_psr2_su@page_flip-P010
+kms_setmode@basic
+kms_draw_crc@draw-method-xrgb8888-render-xtiled
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt
new file mode 100644
index 000000000000..aedb3d2ef885
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt
@@ -0,0 +1,40 @@
+kms_bw@linear-tiling-1-displays-3840x2160p
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-2560x1440p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip@blocking-wf_vblank
+kms_flip@wf_vblank-ts-check
+kms_flip@wf_vblank-ts-check-interruptible
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
+kms_frontbuffer_tracking@fbc-tiling-linear
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-A-constant-alpha-max
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-C-constant-alpha-max
+kms_rotation_crc@multiplane-rotation
+kms_rotation_crc@multiplane-rotation-cropping-bottom
+kms_rotation_crc@multiplane-rotation-cropping-top
+kms_setmode@basic
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt b/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt b/drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt
new file mode 100644
index 000000000000..f81f065e27e8
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt
@@ -0,0 +1,8 @@
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt
new file mode 100644
index 000000000000..752d0d9a5280
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt
@@ -0,0 +1,25 @@
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_sysfs_edid_timing
+kms_async_flips@crc
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt b/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt b/drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt
new file mode 100644
index 000000000000..270644ce220c
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt
@@ -0,0 +1,19 @@
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_bw@linear-tiling-4-displays-1920x1080p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-3840x2160p,Fail
+kms_bw@linear-tiling-5-displays-1920x1080p,Fail
+kms_bw@linear-tiling-5-displays-2560x1440p,Fail
+kms_bw@linear-tiling-5-displays-3840x2160p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_rotation_crc@bad-pixel-format,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt
new file mode 100644
index 000000000000..e23d369bec89
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt
@@ -0,0 +1,5 @@
+kms_draw_crc@.*
+kms_flip@blocking-absolute-wf_vblank
+kms_flip@bo-too-big-interruptible
+kms_flip@flip-vs-rmfb-interruptible
+kms_flip@busy-flip
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt b/drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt
new file mode 100644
index 000000000000..14f33c7ba03b
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt
@@ -0,0 +1,8 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# GPU hangs, then the whole machine
+gem_eio.*
+
+# Whole machine hangs
+kms_flip@absolute-wf_vblank@a-edp1
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-whl-fails.txt b/drivers/gpu/drm/ci/xfails/i915-whl-fails.txt
new file mode 100644
index 000000000000..dbfedfa5d63f
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-whl-fails.txt
@@ -0,0 +1,30 @@
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_bw@linear-tiling-4-displays-1920x1080p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-3840x2160p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_frontbuffer_tracking@fbc-tiling-linear,Fail
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
+kms_sysfs_edid_timing,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt
new file mode 100644
index 000000000000..6bcac5b84fbb
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt
@@ -0,0 +1 @@
+kms_flip@flip-vs-suspend
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/mediatek-mt8173-fails.txt b/drivers/gpu/drm/ci/xfails/mediatek-mt8173-fails.txt
new file mode 100644
index 000000000000..7f74fb9afc99
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/mediatek-mt8173-fails.txt
@@ -0,0 +1,29 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_bw@linear-tiling-1-displays-1920x1080p,Fail
+kms_bw@linear-tiling-1-displays-2560x1440p,Fail
+kms_bw@linear-tiling-1-displays-3840x2160p,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
+kms_color@pipe-B-invalid-gamma-lut-sizes,Fail
+kms_force_connector_basic@force-connector-state,Fail
+kms_force_connector_basic@force-edid,Fail
+kms_force_connector_basic@force-load-detect,Fail
+kms_force_connector_basic@prune-stale-modes,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_plane_scaling@planes-upscale-20x20,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
+kms_plane_scaling@upscale-with-modifier-20x20,Fail
+kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_properties@get_properties-sanity-atomic,Fail
+kms_properties@plane-properties-atomic,Fail
+kms_properties@plane-properties-legacy,Fail
+kms_rmfb@close-fd,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/mediatek-mt8183-fails.txt b/drivers/gpu/drm/ci/xfails/mediatek-mt8183-fails.txt
new file mode 100644
index 000000000000..6ff81d00e84e
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/mediatek-mt8183-fails.txt
@@ -0,0 +1,10 @@
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_bw@linear-tiling-1-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_rmfb@close-fd,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/mediatek-mt8183-flakes.txt b/drivers/gpu/drm/ci/xfails/mediatek-mt8183-flakes.txt
new file mode 100644
index 000000000000..208890b79eb0
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/mediatek-mt8183-flakes.txt
@@ -0,0 +1,14 @@
+core_setmaster_vs_auth
+kms_bw@linear-tiling-1-displays-1920x1080p
+kms_bw@linear-tiling-1-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_cursor_legacy@cursor-vs-flip-atomic
+kms_plane_scaling@invalid-num-scalers
+kms_plane_scaling@planes-upscale-20x20
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5
+kms_plane_scaling@upscale-with-modifier-20x20
+kms_plane_scaling@upscale-with-pixel-format-20x20
+kms_prop_blob@invalid-set-prop-any
+kms_properties@get_properties-sanity-atomic
+kms_properties@plane-properties-atomic
+kms_properties@plane-properties-legacy
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/meson-g12b-fails.txt b/drivers/gpu/drm/ci/xfails/meson-g12b-fails.txt
new file mode 100644
index 000000000000..345e1426b3a3
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/meson-g12b-fails.txt
@@ -0,0 +1,5 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_properties@connector-properties-atomic,Fail
+kms_properties@get_properties-sanity-atomic,Fail
+kms_properties@get_properties-sanity-non-atomic,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/meson-g12b-flakes.txt b/drivers/gpu/drm/ci/xfails/meson-g12b-flakes.txt
new file mode 100644
index 000000000000..b63329d06767
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/meson-g12b-flakes.txt
@@ -0,0 +1,4 @@
+kms_force_connector_basic@force-connector-state
+kms_force_connector_basic@force-edid
+kms_force_connector_basic@force-load-detect
+kms_force_connector_basic@prune-stale-modes
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8016-fails.txt b/drivers/gpu/drm/ci/xfails/msm-apq8016-fails.txt
new file mode 100644
index 000000000000..16c2dfab3f16
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-apq8016-fails.txt
@@ -0,0 +1,15 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_cursor_legacy@all-pipes-forked-move,Fail
+kms_cursor_legacy@all-pipes-torture-bo,Fail
+kms_cursor_legacy@all-pipes-forked-bo,Fail
+kms_cursor_legacy@all-pipes-single-bo,Fail
+kms_cursor_legacy@all-pipes-single-move,Fail
+kms_cursor_legacy@all-pipes-torture-move,Fail
+kms_cursor_legacy@pipe-A-forked-bo,Fail
+kms_cursor_legacy@pipe-A-forked-move,Fail
+kms_cursor_legacy@pipe-A-single-bo,Fail
+kms_cursor_legacy@pipe-A-single-move,Fail
+kms_cursor_legacy@pipe-A-torture-bo,Fail
+kms_cursor_legacy@pipe-A-torture-move,Fail
+kms_hdmi_inject@inject-4k,Fail
diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8016-flakes.txt b/drivers/gpu/drm/ci/xfails/msm-apq8016-flakes.txt
new file mode 100644
index 000000000000..b63329d06767
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-apq8016-flakes.txt
@@ -0,0 +1,4 @@
+kms_force_connector_basic@force-connector-state
+kms_force_connector_basic@force-edid
+kms_force_connector_basic@force-load-detect
+kms_force_connector_basic@prune-stale-modes
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt b/drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt
new file mode 100644
index 000000000000..88a1fc0a3b0d
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt
@@ -0,0 +1,2 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8096-flakes.txt b/drivers/gpu/drm/ci/xfails/msm-apq8096-flakes.txt
new file mode 100644
index 000000000000..b63329d06767
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-apq8096-flakes.txt
@@ -0,0 +1,4 @@
+kms_force_connector_basic@force-connector-state
+kms_force_connector_basic@force-edid
+kms_force_connector_basic@force-load-detect
+kms_force_connector_basic@prune-stale-modes
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt b/drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt
new file mode 100644
index 000000000000..cd49c8ce2059
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt
@@ -0,0 +1,2 @@
+# Whole machine hangs
+kms_cursor_legacy@all-pipes-torture-move
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-fails.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-fails.txt
new file mode 100644
index 000000000000..cfa25fe97498
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-fails.txt
@@ -0,0 +1,21 @@
+kms_cursor_legacy@cursor-vs-flip-toggle,Fail
+kms_cursor_legacy@cursorA-vs-flipA-atomic-transitions,Crash
+kms_plane@pixel-format,Fail
+kms_plane@pixel-format-source-clamping,Fail
+kms_plane@plane-position-covered,Fail
+kms_plane@plane-position-hole,Fail
+kms_plane@plane-position-hole-dpms,Fail
+kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
+kms_plane_alpha_blend@pipe-B-alpha-7efc,Fail
+kms_plane_alpha_blend@pipe-B-alpha-basic,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-mid,Fail
+kms_plane_alpha_blend@pipe-B-coverage-7efc,Fail
+kms_plane_alpha_blend@pipe-B-coverage-vs-premult-vs-constant,Fail
+kms_rmfb@close-fd,Fail
+kms_rotation_crc@primary-rotation-180,Fail
+kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
+kms_universal_plane@disable-primary-vs-flip-pipe-b,Fail
diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-flakes.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-flakes.txt
new file mode 100644
index 000000000000..b01aa5b35dce
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-flakes.txt
@@ -0,0 +1,6 @@
+# Test ends up reading CRC from frame before cursor update
+# sometimes.. tbd if this is a kernel CRC bug or a test
+# bug
+kms_cursor_crc@.*
+
+kms_plane_multiple@atomic-pipe-A-tiling-none
diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-skips.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-skips.txt
new file mode 100644
index 000000000000..410e0eeb3161
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-skips.txt
@@ -0,0 +1,23 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# Test incorrectly assumes that CTM support implies gamma/degamma
+# LUT support.  None of the subtests handle the case of only having
+# CTM support
+kms_color.*
+
+# 4k@60 is not supported on this hw, but driver doesn't handle it
+# too gracefully.. https://gitlab.freedesktop.org/drm/msm/-/issues/15
+kms_bw@linear-tiling-.*-displays-3840x2160p
+
+# Until igt fix lands: https://patchwork.freedesktop.org/patch/493175/
+kms_bw@linear-tiling-2.*
+kms_bw@linear-tiling-3.*
+kms_bw@linear-tiling-4.*
+kms_bw@linear-tiling-5.*
+kms_bw@linear-tiling-6.*
+
+# igt fix posted: https://patchwork.freedesktop.org/patch/499926/
+# failure mode is flakey due to randomization but fails frequently
+# enough to be detected as a Crash or occasionally UnexpectedPass.
+kms_plane_multiple@atomic-pipe-A-tiling-none
diff --git a/drivers/gpu/drm/ci/xfails/msm-sdm845-fails.txt b/drivers/gpu/drm/ci/xfails/msm-sdm845-fails.txt
new file mode 100644
index 000000000000..8133927a44df
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-sdm845-fails.txt
@@ -0,0 +1,44 @@
+kms_color@pipe-A-ctm-0-25,Fail
+kms_color@pipe-A-ctm-0-5,Fail
+kms_color@pipe-A-ctm-0-75,Fail
+kms_color@pipe-A-ctm-blue-to-red,Fail
+kms_color@pipe-A-ctm-green-to-red,Fail
+kms_color@pipe-A-ctm-max,Fail
+kms_color@pipe-A-ctm-negative,Fail
+kms_color@pipe-A-ctm-red-to-blue,Fail
+kms_color@pipe-A-legacy-gamma,Fail
+kms_cursor_legacy@basic-flip-after-cursor-atomic,Fail
+kms_cursor_legacy@basic-flip-after-cursor-legacy,Fail
+kms_cursor_legacy@basic-flip-before-cursor-atomic,Fail
+kms_cursor_legacy@basic-flip-before-cursor-legacy,Fail
+kms_cursor_legacy@cursor-vs-flip-atomic,Fail
+kms_cursor_legacy@cursor-vs-flip-atomic-transitions,Fail
+kms_cursor_legacy@cursor-vs-flip-legacy,Fail
+kms_cursor_legacy@cursor-vs-flip-toggle,Fail
+kms_cursor_legacy@flip-vs-cursor-atomic,Fail
+kms_cursor_legacy@flip-vs-cursor-crc-atomic,Fail
+kms_cursor_legacy@flip-vs-cursor-crc-legacy,Fail
+kms_cursor_legacy@flip-vs-cursor-legacy,Fail
+kms_cursor_legacy@short-flip-after-cursor-atomic-transitions,Fail
+kms_cursor_legacy@short-flip-after-cursor-toggle,Fail
+kms_cursor_legacy@short-flip-before-cursor-atomic-transitions,Fail
+kms_cursor_legacy@short-flip-before-cursor-toggle,Fail
+kms_plane@pixel-format,Fail
+kms_plane@pixel-format-source-clamping,Fail
+kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
+kms_plane_cursor@pipe-A-overlay-size-128,Fail
+kms_plane_cursor@pipe-A-overlay-size-256,Fail
+kms_plane_cursor@pipe-A-overlay-size-64,Fail
+kms_plane_cursor@pipe-A-viewport-size-128,Fail
+kms_plane_cursor@pipe-A-viewport-size-256,Fail
+kms_plane_cursor@pipe-A-viewport-size-64,Fail
+kms_plane_scaling@downscale-with-pixel-format-factor-0-25,Timeout
+kms_plane_scaling@downscale-with-pixel-format-factor-0-5,Timeout
+kms_plane_scaling@downscale-with-pixel-format-factor-0-75,Timeout
+kms_plane_scaling@invalid-num-scalers,Fail
+kms_plane_scaling@planes-downscale-factor-0-25,Fail
+kms_plane_scaling@scaler-with-clipping-clamping,Timeout
+kms_plane_scaling@scaler-with-pixel-format-unity-scaling,Timeout
+kms_rmfb@close-fd,Fail
diff --git a/drivers/gpu/drm/ci/xfails/msm-sdm845-flakes.txt b/drivers/gpu/drm/ci/xfails/msm-sdm845-flakes.txt
new file mode 100644
index 000000000000..10586c628762
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-sdm845-flakes.txt
@@ -0,0 +1,10 @@
+# Test ends up reading CRC from frame before cursor update
+# sometimes.. tbd if this is a kernel CRC bug or a test
+# bug
+kms_cursor_crc@.*
+
+kms_cursor_legacy@flip-vs-cursor-toggle
+kms_cursor_legacy@pipe-A-forked-bo
+kms_cursor_legacy@pipe-A-forked-move
+
+kms_flip@dpms-vs-vblank-race-interruptible
diff --git a/drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt b/drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt
new file mode 100644
index 000000000000..42675f1c6d76
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt
@@ -0,0 +1,2 @@
+# Hangs machine
+kms_bw.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3288-fails.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-fails.txt
new file mode 100644
index 000000000000..0a2f5c04857a
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-fails.txt
@@ -0,0 +1,43 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_force_connector_basic@force-connector-state,Fail
+kms_force_connector_basic@force-edid,Fail
+kms_force_connector_basic@force-load-detect,Fail
+kms_force_connector_basic@prune-stale-modes,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_plane_cursor@pipe-A-overlay-size-128,Fail
+kms_plane_cursor@pipe-A-overlay-size-256,Fail
+kms_plane_cursor@pipe-A-overlay-size-64,Fail
+kms_plane_cursor@pipe-A-primary-size-128,Fail
+kms_plane_cursor@pipe-A-primary-size-256,Fail
+kms_plane_cursor@pipe-A-primary-size-64,Fail
+kms_plane_cursor@pipe-A-viewport-size-128,Fail
+kms_plane_cursor@pipe-A-viewport-size-256,Fail
+kms_plane_cursor@pipe-A-viewport-size-64,Fail
+kms_plane_cursor@pipe-B-overlay-size-128,Fail
+kms_plane_cursor@pipe-B-overlay-size-256,Fail
+kms_plane_cursor@pipe-B-overlay-size-64,Fail
+kms_plane_cursor@pipe-B-primary-size-128,Fail
+kms_plane_cursor@pipe-B-primary-size-256,Fail
+kms_plane_cursor@pipe-B-primary-size-64,Fail
+kms_plane_cursor@pipe-B-viewport-size-128,Fail
+kms_plane_cursor@pipe-B-viewport-size-256,Fail
+kms_plane_cursor@pipe-B-viewport-size-64,Fail
+kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
+kms_plane_scaling@upscale-with-modifier-20x20,Fail
+kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
+kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_prime@basic-crc,Fail
+kms_properties@connector-properties-atomic,Fail
+kms_properties@get_properties-sanity-atomic,Fail
+kms_properties@get_properties-sanity-non-atomic,Fail
+kms_rmfb@close-fd,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3288-flakes.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-flakes.txt
new file mode 100644
index 000000000000..1f20b75a19fa
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-flakes.txt
@@ -0,0 +1,2 @@
+kms_cursor_crc@.*
+kms_pipe_crc_basic@.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3288-skips.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-skips.txt
new file mode 100644
index 000000000000..223937ae7948
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-skips.txt
@@ -0,0 +1,49 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# Too unstable, machine ends up hanging after lots of Oopses
+kms_cursor_legacy.*
+
+# Started hanging the machine on Linux 5.19-rc2:
+#
+# [IGT] kms_plane_lowres: executing
+# [IGT] kms_plane_lowres: starting subtest pipe-F-tiling-y
+# [IGT] kms_plane_lowres: exiting, ret=77
+# Console: switching to colour frame buffer device 170x48
+# rockchip-drm display-subsystem: [drm] *ERROR* flip_done timed out
+# rockchip-drm display-subsystem: [drm] *ERROR* [CRTC:35:crtc-0] commit wait timed out
+# BUG: spinlock bad magic on CPU#3, kms_plane_lowre/482
+# 8<--- cut here ---
+# Unable to handle kernel paging request at virtual address 7812078e
+# [7812078e] *pgd=00000000
+# Internal error: Oops: 5 [#1] SMP ARM
+# Modules linked in:
+# CPU: 3 PID: 482 Comm: kms_plane_lowre Tainted: G        W         5.19.0-rc2-323596-g00535de92171 #1
+# Hardware name: Rockchip (Device Tree)
+# Process kms_plane_lowre (pid: 482, stack limit = 0x1193ac2b)
+#  spin_dump from do_raw_spin_lock+0xa4/0xe8
+#  do_raw_spin_lock from wait_for_completion_timeout+0x2c/0x120
+#  wait_for_completion_timeout from drm_crtc_commit_wait+0x18/0x7c
+#  drm_crtc_commit_wait from drm_atomic_helper_wait_for_dependencies+0x44/0x168
+#  drm_atomic_helper_wait_for_dependencies from commit_tail+0x34/0x180
+#  commit_tail from drm_atomic_helper_commit+0x164/0x18c
+#  drm_atomic_helper_commit from drm_atomic_commit+0xac/0xe4
+#  drm_atomic_commit from drm_client_modeset_commit_atomic+0x23c/0x284
+#  drm_client_modeset_commit_atomic from drm_client_modeset_commit_locked+0x60/0x1c8
+#  drm_client_modeset_commit_locked from drm_client_modeset_commit+0x24/0x40
+#  drm_client_modeset_commit from drm_fbdev_client_restore+0x58/0x94
+#  drm_fbdev_client_restore from drm_client_dev_restore+0x70/0xbc
+#  drm_client_dev_restore from drm_release+0xf4/0x114
+#  drm_release from __fput+0x74/0x240
+#  __fput from task_work_run+0x84/0xb4
+#  task_work_run from do_exit+0x34c/0xa20
+#  do_exit from do_group_exit+0x34/0x98
+#  do_group_exit from __wake_up_parent+0x0/0x18
+# Code: e595c008 12843d19 03e00000 03093168 (15940508)
+# ---[ end trace 0000000000000000 ]---
+# note: kms_plane_lowre[482] exited with preempt_count 1
+# Fixing recursive fault but reboot is needed!
+kms_plane_lowres@pipe-F-tiling-y
+
+# Take too long, we have only two machines, and these are very flaky
+kms_cursor_crc.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3399-fails.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-fails.txt
new file mode 100644
index 000000000000..ebaa2f96e76b
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-fails.txt
@@ -0,0 +1,29 @@
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_color@pipe-A-legacy-gamma,Fail
+kms_color@pipe-B-legacy-gamma,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_plane@plane-panning-bottom-right,Fail
+kms_plane@plane-panning-top-left,Fail
+kms_plane_cursor@pipe-B-overlay-size-128,Fail
+kms_plane_cursor@pipe-B-overlay-size-256,Fail
+kms_plane_cursor@pipe-B-overlay-size-64,Fail
+kms_plane_cursor@pipe-B-primary-size-128,Fail
+kms_plane_cursor@pipe-B-primary-size-256,Fail
+kms_plane_cursor@pipe-B-primary-size-64,Fail
+kms_plane_cursor@pipe-B-viewport-size-128,Fail
+kms_plane_cursor@pipe-B-viewport-size-256,Fail
+kms_plane_cursor@pipe-B-viewport-size-64,Fail
+kms_plane_multiple@atomic-pipe-B-tiling-none,Fail
+kms_prime@basic-crc,Fail
+kms_rmfb@close-fd,Fail
+kms_universal_plane@universal-plane-pipe-B-functional,Fail
+kms_vblank@pipe-A-query-forked,Fail
+kms_vblank@pipe-A-query-idle,Fail
+kms_vblank@pipe-A-wait-busy,Fail
+kms_vblank@pipe-A-wait-forked,Fail
+kms_vblank@pipe-A-wait-forked-busy,Fail
+kms_vblank@pipe-B-query-forked,Fail
+kms_vblank@pipe-B-query-idle,Fail
+kms_vblank@pipe-B-wait-busy,Fail
+kms_vblank@pipe-B-wait-forked,Fail
+kms_vblank@pipe-B-wait-forked-busy,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3399-flakes.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-flakes.txt
new file mode 100644
index 000000000000..5808ccee025d
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-flakes.txt
@@ -0,0 +1,20 @@
+kms_cursor_crc@.*
+kms_pipe_crc_basic@.*
+
+kms_flip@flip-vs-expired-vblank
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-A
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-B
+kms_plane_multiple@atomic-pipe-A-tiling-none
+kms_plane_multiple@atomic-pipe-B-tiling-none
+kms_plane@plane-position-hole
+kms_sequence@get-forked
+kms_sequence@get-forked-busy
+kms_setmode@basic
+kms_vblank@pipe-A-accuracy-idle
+kms_vblank@pipe-A-query-busy
+kms_vblank@pipe-A-query-forked-busy
+kms_vblank@pipe-A-wait-idle
+kms_vblank@pipe-B-accuracy-idle
+kms_vblank@pipe-B-query-busy
+kms_vblank@pipe-B-query-forked-busy
+kms_vblank@pipe-B-wait-idle
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3399-skips.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-skips.txt
new file mode 100644
index 000000000000..10c3d81a919a
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-skips.txt
@@ -0,0 +1,5 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# Too unstable, machine ends up hanging after lots of Oopses
+kms_cursor_legacy.*
diff --git a/drivers/gpu/drm/ci/xfails/virtio_gpu-none-fails.txt b/drivers/gpu/drm/ci/xfails/virtio_gpu-none-fails.txt
new file mode 100644
index 000000000000..2178bdd064dd
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/virtio_gpu-none-fails.txt
@@ -0,0 +1,38 @@
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_addfb_basic@bad-pitch-65536,Fail
+kms_addfb_basic@bo-too-small,Fail
+kms_addfb_basic@size-max,Fail
+kms_addfb_basic@too-high,Fail
+kms_atomic_transition@plane-primary-toggle-with-vblank-wait,Fail
+kms_bw@linear-tiling-1-displays-1920x1080p,Fail
+kms_bw@linear-tiling-1-displays-2560x1440p,Fail
+kms_bw@linear-tiling-1-displays-3840x2160p,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
+kms_plane_scaling@planes-upscale-20x20,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
+kms_plane_scaling@upscale-with-modifier-20x20,Fail
+kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
+kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_vblank@crtc-id,Fail
+kms_vblank@invalid,Fail
+kms_vblank@pipe-A-accuracy-idle,Fail
+kms_vblank@pipe-A-query-busy,Fail
+kms_vblank@pipe-A-query-forked,Fail
+kms_vblank@pipe-A-query-forked-busy,Fail
+kms_vblank@pipe-A-query-idle,Fail
+kms_vblank@pipe-A-ts-continuation-idle,Fail
+kms_vblank@pipe-A-ts-continuation-modeset,Fail
+kms_vblank@pipe-A-ts-continuation-suspend,Fail
+kms_vblank@pipe-A-wait-busy,Fail
+kms_vblank@pipe-A-wait-forked,Fail
+kms_vblank@pipe-A-wait-forked-busy,Fail
+kms_vblank@pipe-A-wait-idle,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/virtio_gpu-none-flakes.txt b/drivers/gpu/drm/ci/xfails/virtio_gpu-none-flakes.txt
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/drivers/gpu/drm/ci/xfails/virtio_gpu-none-skips.txt b/drivers/gpu/drm/ci/xfails/virtio_gpu-none-skips.txt
new file mode 100644
index 000000000000..78be18174012
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/virtio_gpu-none-skips.txt
@@ -0,0 +1,6 @@
+# Hits a "refcount_t: underflow; use-after-free" in virtio_gpu_fence_event_process
+# When run in a particular order with other tests
+kms_cursor_legacy.*
+
+# Job just hangs without any output
+kms_flip@flip-vs-suspend.*
\ No newline at end of file
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 49+ messages in thread

* Re: [PATCH v8] drm: Add initial ci/ subdirectory
  2022-09-09 14:15             ` [PATCH v8] " Tomeu Vizoso
@ 2022-09-09 17:16               ` Daniel Stone
  2022-10-25  7:32                 ` Daniel Vetter
  2022-09-12  7:29               ` [PATCH v9] " Tomeu Vizoso
  1 sibling, 1 reply; 49+ messages in thread
From: Daniel Stone @ 2022-09-09 17:16 UTC (permalink / raw)
  To: Tomeu Vizoso
  Cc: Rob Clark, Jonathan Corbet, David Airlie, Kevin Hilman,
	linux-doc, linux-kernel, dri-devel, Neil Armstrong,
	Matthias Brugger, linux-rockchip, linux-mediatek, Carlo Caione,
	linux-amlogic, kernel, linux-arm-kernel

[-- Attachment #1: Type: text/plain, Size: 1507 bytes --]

Hi,

On Fri, 9 Sept 2022 at 15:15, Tomeu Vizoso <tomeu.vizoso@collabora.com>
wrote:

> Also include a configuration file that points to the out-of-tree CI
> scripts.
>

 I think this para is outdated given ...

v8:
>   - Move all files specific to testing the kernel into the kernel tree
>     (thus I have dropped the r-bs I had collected so far)
>   - Uprev Gitlab CI infrastructure scripts to the latest from Mesa


But equally - and sorry for not jumping on the IRC (?) discussion as I was
in the middle of other stuff when it came up - I'm don't think this is the
right plan.

Mesa having all its CI in-tree makes sense, because merges happen rapidly
to a single canonical tree. If the scripts need to be changed for whatever
reason, we can merge something in under an hour and everyone immediately
gets it. DRM is quite different though, given the forest of trees we have
and the long merge paths between them. I worry that merging the CI scripts
in-tree - especially for our initial attempt at it, when we're likely to
need to make quite a lot of changes before it settles down to become a
stable system that works for everyone - is shooting ourselves in the foot
by limiting our flexibility.

Given that it's currently very dependent on fd.o infrastructure (published
ci-templates, the registry, the specific-tag runners for Collabora/CrOS
DUTs, etc), there isn't much of a portability gain in bringing the scripts
into the tree either. It's a good goal, but not where we are today.

Cheers,
Daniel

[-- Attachment #2: Type: text/html, Size: 2148 bytes --]

^ permalink raw reply	[flat|nested] 49+ messages in thread

* [PATCH v9] drm: Add initial ci/ subdirectory
  2022-09-09 14:15             ` [PATCH v8] " Tomeu Vizoso
  2022-09-09 17:16               ` Daniel Stone
@ 2022-09-12  7:29               ` Tomeu Vizoso
  2022-10-14 17:10                 ` Rob Clark
  2022-10-24 22:06                 ` Jessica Zhang
  1 sibling, 2 replies; 49+ messages in thread
From: Tomeu Vizoso @ 2022-09-12  7:29 UTC (permalink / raw)
  To: David Airlie, Daniel Vetter, Jonathan Corbet, Carlo Caione,
	Kevin Hilman, Heiko Stuebner, Matthias Brugger, Rob Clark
  Cc: Tomeu Vizoso, linux-doc, Neil Armstrong, linux-kernel, dri-devel,
	linux-rockchip, linux-mediatek, linux-amlogic, kernel,
	linux-arm-kernel

And use it to store expectations about what the DRM drivers are
supposed to pass in the IGT test suite.

Also include a configuration file that points to the out-of-tree CI
scripts.

By storing the test expectations along the code we can make sure both
stay in sync with each other, and so we can know when a code change
breaks those expectations.

This will allow all contributors to drm to reuse the infrastructure
already in gitlab.freedesktop.org to test the driver on several
generations of the hardware.

v2:
  - Fix names of result expectation files to match SoC
  - Don't execute tests that are going to skip on all boards

v3:
  - Remove tracking of dmesg output during test execution

v4:
  - Move up to drivers/gpu/drm
  - Add support for a bunch of other drivers
  - Explain how to incorporate fixes for CI from a
    ${TARGET_BRANCH}-external-fixes branch
  - Remove tests that pass from expected results file, to reduce the
    size of in-tree files
  - Add docs about how to deal with outages in automated testing labs
  - Specify the exact SHA of the CI scripts to be used

v5:
  - Remove unneeded skips from Meson expectations file
  - Use a more advanced runner that detects flakes automatically
  - Use a more succint format for the expectations
  - Run many more tests (and use sharding to finish in time)
  - Use skip lists to avoid hanging machines
  - Add some build testing
  - Build IGT in each pipeline for faster uprevs
  - List failures in the GitLab UI

v6:
  - Rebase on top of latest drm-next
  - Lower priority of LAVA jobs to not impact Mesa CI as much
  - Update docs

v7:
  - Rebase on top of latest drm-next

v8:
  - Move all files specific to testing the kernel into the kernel tree
    (thus I have dropped the r-bs I had collected so far)
  - Uprev Gitlab CI infrastructure scripts to the latest from Mesa
  - Add MAINTAINERS entry
  - Fix boot on MT8173 by adding some Kconfigs that are now needed
  - Link to the docs from index.rst and hard-wrap the file

v9:
  - Only automatically run the pipelines for merge requests
  - Switch to zstd for the build artifacts to align with Mesa
  - Add Qcom USB PHYs to config as they are now =m in the defconfig

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
---
 Documentation/gpu/automated_testing.rst       |  144 +
 Documentation/gpu/index.rst                   |    1 +
 MAINTAINERS                                   |    8 +
 drivers/gpu/drm/ci/arm.config                 |   57 +
 drivers/gpu/drm/ci/arm64.config               |  179 ++
 drivers/gpu/drm/ci/build-igt.sh               |   43 +
 drivers/gpu/drm/ci/build.sh                   |  158 +
 drivers/gpu/drm/ci/build.yml                  |  110 +
 drivers/gpu/drm/ci/check-patch.py             |   57 +
 drivers/gpu/drm/ci/container.yml              |   54 +
 drivers/gpu/drm/ci/gitlab-ci.yml              |  225 ++
 drivers/gpu/drm/ci/igt_runner.sh              |   77 +
 drivers/gpu/drm/ci/image-tags.yml             |   13 +
 drivers/gpu/drm/ci/lava-submit.sh             |   53 +
 drivers/gpu/drm/ci/static-checks.yml          |   12 +
 drivers/gpu/drm/ci/test.yml                   |  322 ++
 drivers/gpu/drm/ci/testlist.txt               | 2763 +++++++++++++++++
 drivers/gpu/drm/ci/x86_64.config              |  105 +
 .../gpu/drm/ci/xfails/amdgpu-stoney-fails.txt |   19 +
 .../drm/ci/xfails/amdgpu-stoney-flakes.txt    |   15 +
 .../gpu/drm/ci/xfails/amdgpu-stoney-skips.txt |    2 +
 .../gpu/drm/ci/xfails/i915-amly-flakes.txt    |   32 +
 drivers/gpu/drm/ci/xfails/i915-amly-skips.txt |    2 +
 drivers/gpu/drm/ci/xfails/i915-apl-fails.txt  |   29 +
 drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt |    1 +
 drivers/gpu/drm/ci/xfails/i915-apl-skips.txt  |    2 +
 drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt |   37 +
 drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt |   40 +
 drivers/gpu/drm/ci/xfails/i915-glk-skips.txt  |    2 +
 drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt  |    8 +
 drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt |   25 +
 drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt  |    2 +
 drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt  |   19 +
 drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt |    5 +
 drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt  |    8 +
 drivers/gpu/drm/ci/xfails/i915-whl-fails.txt  |   30 +
 drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt |    1 +
 .../drm/ci/xfails/mediatek-mt8173-fails.txt   |   29 +
 .../drm/ci/xfails/mediatek-mt8183-fails.txt   |   10 +
 .../drm/ci/xfails/mediatek-mt8183-flakes.txt  |   14 +
 .../gpu/drm/ci/xfails/meson-g12b-fails.txt    |    5 +
 .../gpu/drm/ci/xfails/meson-g12b-flakes.txt   |    4 +
 .../gpu/drm/ci/xfails/msm-apq8016-fails.txt   |   15 +
 .../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-apq8096-skips.txt   |    2 +
 .../gpu/drm/ci/xfails/msm-sc7180-fails.txt    |   21 +
 .../gpu/drm/ci/xfails/msm-sc7180-flakes.txt   |    6 +
 .../gpu/drm/ci/xfails/msm-sc7180-skips.txt    |   23 +
 .../gpu/drm/ci/xfails/msm-sdm845-fails.txt    |   43 +
 .../gpu/drm/ci/xfails/msm-sdm845-flakes.txt   |   11 +
 .../gpu/drm/ci/xfails/msm-sdm845-skips.txt    |    2 +
 .../drm/ci/xfails/rockchip-rk3288-fails.txt   |   43 +
 .../drm/ci/xfails/rockchip-rk3288-flakes.txt  |    2 +
 .../drm/ci/xfails/rockchip-rk3288-skips.txt   |   49 +
 .../drm/ci/xfails/rockchip-rk3399-fails.txt   |   29 +
 .../drm/ci/xfails/rockchip-rk3399-flakes.txt  |   20 +
 .../drm/ci/xfails/rockchip-rk3399-skips.txt   |    5 +
 .../drm/ci/xfails/virtio_gpu-none-fails.txt   |   38 +
 .../drm/ci/xfails/virtio_gpu-none-flakes.txt  |    0
 .../drm/ci/xfails/virtio_gpu-none-skips.txt   |    6 +
 62 files changed, 5047 insertions(+)
 create mode 100644 Documentation/gpu/automated_testing.rst
 create mode 100644 drivers/gpu/drm/ci/arm.config
 create mode 100644 drivers/gpu/drm/ci/arm64.config
 create mode 100644 drivers/gpu/drm/ci/build-igt.sh
 create mode 100644 drivers/gpu/drm/ci/build.sh
 create mode 100644 drivers/gpu/drm/ci/build.yml
 create mode 100755 drivers/gpu/drm/ci/check-patch.py
 create mode 100644 drivers/gpu/drm/ci/container.yml
 create mode 100644 drivers/gpu/drm/ci/gitlab-ci.yml
 create mode 100755 drivers/gpu/drm/ci/igt_runner.sh
 create mode 100644 drivers/gpu/drm/ci/image-tags.yml
 create mode 100755 drivers/gpu/drm/ci/lava-submit.sh
 create mode 100644 drivers/gpu/drm/ci/static-checks.yml
 create mode 100644 drivers/gpu/drm/ci/test.yml
 create mode 100644 drivers/gpu/drm/ci/testlist.txt
 create mode 100644 drivers/gpu/drm/ci/x86_64.config
 create mode 100644 drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-amly-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-apl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-apl-skips.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-glk-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-whl-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8173-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8183-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8183-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/meson-g12b-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/meson-g12b-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8016-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8016-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8096-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-sc7180-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-sc7180-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-sc7180-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-sdm845-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-sdm845-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3288-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3288-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3288-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3399-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3399-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3399-skips.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/virtio_gpu-none-fails.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/virtio_gpu-none-flakes.txt
 create mode 100644 drivers/gpu/drm/ci/xfails/virtio_gpu-none-skips.txt

diff --git a/Documentation/gpu/automated_testing.rst b/Documentation/gpu/automated_testing.rst
new file mode 100644
index 000000000000..1b87b802ac7f
--- /dev/null
+++ b/Documentation/gpu/automated_testing.rst
@@ -0,0 +1,144 @@
+.. SPDX-License-Identifier: GPL-2.0+
+
+=========================================
+Automated testing of the DRM subsystem
+=========================================
+
+Introduction
+============
+
+Making sure that changes to the core or drivers don't introduce regressions can
+be very time-consuming when lots of different hardware configurations need to
+be tested. Moreover, it isn't practical for each person interested in this
+testing to have to acquire and maintain what can be a considerable amount of
+hardware.
+
+Also, it is desirable for developers to check for regressions in their code by
+themselves, instead of relying on the maintainers to find them and then
+reporting back.
+
+There are facilities in gitlab.freedesktop.org to automatically test Mesa that
+can be used as well for testing the DRM subsystem. This document explains how
+people interested in testing it can use this shared infrastructure to save
+quite some time and effort.
+
+
+Relevant files
+==============
+
+drivers/gpu/drm/ci/gitlab-ci.yml
+--------------------------------
+
+This is the root configuration file for GitLab CI. Among other less interesting
+bits, it specifies the specific version of the scripts to be used. There are
+some variables that can be modified to change the behavior of the pipeline:
+
+DRM_CI_PROJECT_PATH
+    Repository that contains the Mesa software infrastructure for CI
+
+DRM_CI_COMMIT_SHA
+    A particular revision to use from that repository
+
+UPSTREAM_REPO
+    URL to git repository containing the target branch
+
+TARGET_BRANCH
+    Branch to which this branch is to be merged into
+
+IGT_VERSION
+    Revision of igt-gpu-tools being used, from
+    https://gitlab.freedesktop.org/drm/igt-gpu-tools
+
+drivers/gpu/drm/ci/testlist.txt
+-------------------------------
+
+IGT tests to be run on all drivers (unless mentioned in a driver's *-skips.txt
+file, see below).
+
+drivers/gpu/drm/ci/${DRIVER_NAME}-${HW_REVISION}-fails.txt
+----------------------------------------------------------
+
+Lists the known failures for a given driver on a specific hardware revision.
+
+drivers/gpu/drm/ci/${DRIVER_NAME}-${HW_REVISION}-flakes.txt
+-----------------------------------------------------------
+
+Lists the tests that for a given driver on a specific hardware revision are
+known to behave unreliably. These tests won't cause a job to fail regardless of
+the result. They will still be run.
+
+drivers/gpu/drm/ci/${DRIVER_NAME}-${HW_REVISION}-skips.txt
+-----------------------------------------------------------
+
+Lists the tests that won't be run for a given driver on a specific hardware
+revision. These are usually tests that interfere with the running of the test
+list due to hanging the machine, causing OOM, taking too long, etc.
+
+
+How to enable automated testing on your tree
+============================================
+
+1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one
+yet
+
+2. In your kernel repo's configuration (eg.
+https://gitlab.freedesktop.org/janedoe/linux/-/settings/ci_cd), change the
+CI/CD configuration file from .gitlab-ci.yml to
+drivers/gpu/drm/ci/gitlab-ci.yml.
+
+3. Next time you push to this repository, you will see a CI pipeline being
+created (eg. https://gitlab.freedesktop.org/janedoe/linux/-/pipelines)
+
+4. The various jobs will be run and when the pipeline is finished, all jobs
+should be green unless a regression has been found.
+
+
+How to update test expectations
+===============================
+
+If your changes to the code fix any tests, you will have to remove one or more
+lines from one or more of the files in
+drivers/gpu/drm/ci/${DRIVER_NAME}_*_fails.txt, for each of the test platforms
+affected by the change.
+
+
+How to expand coverage
+======================
+
+If your code changes make it possible to run more tests (by solving reliability
+issues, for example), you can remove tests from the flakes and/or skips lists,
+and then the expected results if there are any known failures.
+
+If there is a need for updating the version of IGT being used (maybe you have
+added more tests to it), update the IGT_VERSION variable at the top of the
+gitlab-ci.yml file.
+
+
+How to test your changes to the scripts
+=======================================
+
+For testing changes to the scripts in the drm-ci repo, change the
+DRM_CI_PROJECT_PATH and DRM_CI_COMMIT_SHA variables in
+drivers/gpu/drm/ci/gitlab-ci.yml to match your fork of the project (eg.
+janedoe/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
+
+
+How to incorporate external fixes in your testing
+=================================================
+
+Often, regressions in other trees will prevent testing changes local to the
+tree under test. These fixes will be automatically merged in during the build
+jobs from a branch in the target tree that is named as
+${TARGET_BRANCH}-external-fixes.
+
+If the pipeline is not in a merge request and a branch with the same name
+exists in the local tree, commits from that branch will be merged in as well.
+
+
+How to deal with automated testing labs that may be down
+========================================================
+
+If a hardware farm is down and thus causing pipelines to fail that would
+otherwise pass, one can disable all jobs that would be submitted to that farm
+by editing the file at
+https://gitlab.freedesktop.org/gfx-ci/lab-status/-/blob/main/lab-status.yml.
diff --git a/Documentation/gpu/index.rst b/Documentation/gpu/index.rst
index b99dede9a5b1..23fe6600d1e9 100644
--- a/Documentation/gpu/index.rst
+++ b/Documentation/gpu/index.rst
@@ -17,6 +17,7 @@ Linux GPU Driver Developer's Guide
    backlight
    vga-switcheroo
    vgaarbiter
+   automated_testing
    todo
    rfc/index
 
diff --git a/MAINTAINERS b/MAINTAINERS
index 9d7f64dc0efe..6703681e2ad6 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -7075,6 +7075,14 @@ T:	git git://anongit.freedesktop.org/drm/drm-misc
 F:	drivers/gpu/drm/scheduler/
 F:	include/drm/gpu_scheduler.h
 
+DRM AUTOMATED TESTING
+M:	Tomeu Vizoso <tomeu.vizoso@collabora.com>
+L:	dri-devel@lists.freedesktop.org
+S:	Maintained
+T:	git git://anongit.freedesktop.org/drm/drm-misc
+F:	Documentation/gpu/automated_testing.rst
+F:	drivers/gpu/drm/ci/
+
 DSBR100 USB FM RADIO DRIVER
 M:	Alexey Klimov <klimov.linux@gmail.com>
 L:	linux-media@vger.kernel.org
diff --git a/drivers/gpu/drm/ci/arm.config b/drivers/gpu/drm/ci/arm.config
new file mode 100644
index 000000000000..21a5c7c23d58
--- /dev/null
+++ b/drivers/gpu/drm/ci/arm.config
@@ -0,0 +1,57 @@
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_DEBUG_KERNEL=y
+
+# abootimg with a 'dummy' rootfs fails with root=/dev/nfs
+CONFIG_BLK_DEV_INITRD=n
+
+CONFIG_DEVFREQ_GOV_PERFORMANCE=y
+CONFIG_DEVFREQ_GOV_POWERSAVE=y
+CONFIG_DEVFREQ_GOV_USERSPACE=y
+CONFIG_DEVFREQ_GOV_PASSIVE=y
+CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
+
+CONFIG_DRM=y
+CONFIG_DRM_ETNAVIV=y
+CONFIG_DRM_ROCKCHIP=y
+CONFIG_DRM_PANFROST=y
+CONFIG_DRM_LIMA=y
+CONFIG_DRM_PANEL_SIMPLE=y
+CONFIG_PWM_CROS_EC=y
+CONFIG_BACKLIGHT_PWM=y
+
+CONFIG_ROCKCHIP_CDN_DP=n
+
+CONFIG_SPI_ROCKCHIP=y
+CONFIG_PWM_ROCKCHIP=y
+CONFIG_PHY_ROCKCHIP_DP=y
+CONFIG_DWMAC_ROCKCHIP=y
+
+CONFIG_MFD_RK808=y
+CONFIG_REGULATOR_RK808=y
+CONFIG_RTC_DRV_RK808=y
+CONFIG_COMMON_CLK_RK808=y
+
+CONFIG_REGULATOR_FAN53555=y
+CONFIG_REGULATOR=y
+
+CONFIG_REGULATOR_VCTRL=y
+
+CONFIG_KASAN=n
+CONFIG_KASAN_INLINE=n
+CONFIG_STACKTRACE=n
+
+CONFIG_TMPFS=y
+
+CONFIG_PROVE_LOCKING=n
+CONFIG_DEBUG_LOCKDEP=n
+CONFIG_SOFTLOCKUP_DETECTOR=n
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=n
+
+CONFIG_FW_LOADER_COMPRESS=y
+
+CONFIG_USB_USBNET=y
+CONFIG_NETDEVICES=y
+CONFIG_USB_NET_DRIVERS=y
+CONFIG_USB_RTL8152=y
+CONFIG_USB_NET_AX8817X=y
+CONFIG_USB_NET_SMSC95XX=y
diff --git a/drivers/gpu/drm/ci/arm64.config b/drivers/gpu/drm/ci/arm64.config
new file mode 100644
index 000000000000..d1219501d3f8
--- /dev/null
+++ b/drivers/gpu/drm/ci/arm64.config
@@ -0,0 +1,179 @@
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_DEBUG_KERNEL=y
+
+# abootimg with a 'dummy' rootfs fails with root=/dev/nfs
+CONFIG_BLK_DEV_INITRD=n
+
+CONFIG_DEVFREQ_GOV_PERFORMANCE=y
+CONFIG_DEVFREQ_GOV_POWERSAVE=y
+CONFIG_DEVFREQ_GOV_USERSPACE=y
+CONFIG_DEVFREQ_GOV_PASSIVE=y
+
+CONFIG_DRM=y
+CONFIG_DRM_ROCKCHIP=y
+CONFIG_DRM_PANFROST=y
+CONFIG_DRM_LIMA=y
+CONFIG_DRM_PANEL_SIMPLE=y
+CONFIG_DRM_PANEL_EDP=y
+CONFIG_DRM_MSM=y
+CONFIG_DRM_I2C_ADV7511=y
+CONFIG_PWM_CROS_EC=y
+CONFIG_BACKLIGHT_PWM=y
+
+CONFIG_ROCKCHIP_CDN_DP=n
+
+CONFIG_SPI_ROCKCHIP=y
+CONFIG_PWM_ROCKCHIP=y
+CONFIG_PHY_ROCKCHIP_DP=y
+CONFIG_DWMAC_ROCKCHIP=y
+CONFIG_STMMAC_ETH=y
+CONFIG_TYPEC_FUSB302=y
+CONFIG_TYPEC=y
+CONFIG_TYPEC_TCPM=y
+
+# MSM platform bits
+
+# For CONFIG_QCOM_LMH
+CONFIG_OF=y
+
+CONFIG_QCOM_COMMAND_DB=y
+CONFIG_QCOM_RPMHPD=y
+CONFIG_QCOM_RPMPD=y
+CONFIG_SDM_GPUCC_845=y
+CONFIG_SDM_VIDEOCC_845=y
+CONFIG_SDM_DISPCC_845=y
+CONFIG_SDM_LPASSCC_845=y
+CONFIG_SDM_CAMCC_845=y
+CONFIG_RESET_QCOM_PDC=y
+CONFIG_DRM_TI_SN65DSI86=y
+CONFIG_I2C_QCOM_GENI=y
+CONFIG_SPI_QCOM_GENI=y
+CONFIG_PHY_QCOM_QUSB2=y
+CONFIG_PHY_QCOM_QMP=y
+CONFIG_QCOM_CLK_APCC_MSM8996=y
+CONFIG_QCOM_LLCC=y
+CONFIG_QCOM_LMH=y
+CONFIG_QCOM_SPMI_TEMP_ALARM=y
+CONFIG_QCOM_WDT=y
+CONFIG_POWER_RESET_QCOM_PON=y
+CONFIG_RTC_DRV_PM8XXX=y
+CONFIG_INTERCONNECT=y
+CONFIG_INTERCONNECT_QCOM=y
+CONFIG_INTERCONNECT_QCOM_SDM845=y
+CONFIG_INTERCONNECT_QCOM_MSM8916=y
+CONFIG_INTERCONNECT_QCOM_OSM_L3=y
+CONFIG_INTERCONNECT_QCOM_SC7180=y
+CONFIG_CRYPTO_DEV_QCOM_RNG=y
+CONFIG_SC_DISPCC_7180=y
+CONFIG_SC_GPUCC_7180=y
+CONFIG_PHY_QCOM_USB_HS=y
+CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2=y
+CONFIG_PHY_QCOM_USB_HS_28NM=y
+CONFIG_PHY_QCOM_USB_SS=y
+
+# db410c ethernet
+CONFIG_USB_RTL8152=y
+# db820c ethernet
+CONFIG_ATL1C=y
+
+CONFIG_ARCH_ALPINE=n
+CONFIG_ARCH_BCM2835=n
+CONFIG_ARCH_BCM_IPROC=n
+CONFIG_ARCH_BERLIN=n
+CONFIG_ARCH_BRCMSTB=n
+CONFIG_ARCH_EXYNOS=n
+CONFIG_ARCH_K3=n
+CONFIG_ARCH_LAYERSCAPE=n
+CONFIG_ARCH_LG1K=n
+CONFIG_ARCH_HISI=n
+CONFIG_ARCH_MVEBU=n
+CONFIG_ARCH_SEATTLE=n
+CONFIG_ARCH_SYNQUACER=n
+CONFIG_ARCH_RENESAS=n
+CONFIG_ARCH_R8A774A1=n
+CONFIG_ARCH_R8A774C0=n
+CONFIG_ARCH_R8A7795=n
+CONFIG_ARCH_R8A7796=n
+CONFIG_ARCH_R8A77965=n
+CONFIG_ARCH_R8A77970=n
+CONFIG_ARCH_R8A77980=n
+CONFIG_ARCH_R8A77990=n
+CONFIG_ARCH_R8A77995=n
+CONFIG_ARCH_STRATIX10=n
+CONFIG_ARCH_TEGRA=n
+CONFIG_ARCH_SPRD=n
+CONFIG_ARCH_THUNDER=n
+CONFIG_ARCH_THUNDER2=n
+CONFIG_ARCH_UNIPHIER=n
+CONFIG_ARCH_VEXPRESS=n
+CONFIG_ARCH_XGENE=n
+CONFIG_ARCH_ZX=n
+CONFIG_ARCH_ZYNQMP=n
+
+# Strip out some stuff we don't need for graphics testing, to reduce
+# the build.
+CONFIG_CAN=n
+CONFIG_WIRELESS=n
+CONFIG_RFKILL=n
+CONFIG_WLAN=n
+
+CONFIG_REGULATOR_FAN53555=y
+CONFIG_REGULATOR=y
+
+CONFIG_REGULATOR_VCTRL=y
+
+CONFIG_KASAN=n
+CONFIG_KASAN_INLINE=n
+CONFIG_STACKTRACE=n
+
+CONFIG_TMPFS=y
+
+CONFIG_PROVE_LOCKING=n
+CONFIG_DEBUG_LOCKDEP=n
+CONFIG_SOFTLOCKUP_DETECTOR=y
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
+
+CONFIG_DETECT_HUNG_TASK=y
+
+CONFIG_FW_LOADER_COMPRESS=y
+CONFIG_FW_LOADER_USER_HELPER=n
+
+CONFIG_USB_USBNET=y
+CONFIG_NETDEVICES=y
+CONFIG_USB_NET_DRIVERS=y
+CONFIG_USB_RTL8152=y
+CONFIG_USB_NET_AX8817X=y
+CONFIG_USB_NET_SMSC95XX=y
+
+# For amlogic
+CONFIG_MESON_GXL_PHY=y
+CONFIG_MDIO_BUS_MUX_MESON_G12A=y
+CONFIG_DRM_MESON=y
+
+# For Mediatek
+CONFIG_DRM_MEDIATEK=y
+CONFIG_PWM_MEDIATEK=y
+CONFIG_DRM_MEDIATEK_HDMI=y
+CONFIG_GNSS=y
+CONFIG_GNSS_MTK_SERIAL=y
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_MTK=y
+CONFIG_MTK_DEVAPC=y
+CONFIG_PWM_MTK_DISP=y
+CONFIG_MTK_CMDQ=y
+CONFIG_REGULATOR_DA9211=y
+CONFIG_ARM_MEDIATEK_CPUFREQ=y
+CONFIG_RTC_DRV_MT6397=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
+CONFIG_DRM_NOUVEAU=m
+CONFIG_DRM_TEGRA=m
+CONFIG_R8169=y
+CONFIG_STAGING=y
+CONFIG_DRM_TEGRA_STAGING=y
+CONFIG_TEGRA_HOST1X=y
+CONFIG_ARM_TEGRA_DEVFREQ=y
+CONFIG_TEGRA_SOCTHERM=y
+CONFIG_DRM_TEGRA_DEBUG=y
+CONFIG_PWM_TEGRA=y
diff --git a/drivers/gpu/drm/ci/build-igt.sh b/drivers/gpu/drm/ci/build-igt.sh
new file mode 100644
index 000000000000..8bc2c7334f3f
--- /dev/null
+++ b/drivers/gpu/drm/ci/build-igt.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+# SPDX-License-Identifier: MIT
+
+set -ex
+
+git clone https://gitlab.freedesktop.org/drm/igt-gpu-tools.git --single-branch --no-checkout
+cd igt-gpu-tools
+git checkout $IGT_VERSION
+
+if [[ "$KERNEL_ARCH" = "arm" ]]; then
+    . ../.gitlab-ci/container/create-cross-file.sh armhf
+    EXTRA_MESON_ARGS="--cross-file /cross_file-armhf.txt"
+fi
+
+MESON_OPTIONS="-Doverlay=disabled                    \
+               -Dchamelium=disabled                  \
+               -Dvalgrind=disabled                   \
+               -Dman=enabled                         \
+               -Dtests=enabled                       \
+               -Drunner=enabled                      \
+               -Dlibunwind=enabled                   \
+               -Dprefix=/igt"
+
+# TODO: Remove this once https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1009805 is fixed and libjson-c-dev:armhf is installed in debian/arm-build
+if [[ "$KERNEL_ARCH" = "arm" ]]; then
+    cp /usr/lib/aarch64-linux-gnu/pkgconfig/json-c.pc /usr/lib/arm-linux-gnueabihf/pkgconfig/json-c.pc
+    sed -i 's/aarch64-linux-gnu/arm-linux-gnueabihf/g' /usr/lib/arm-linux-gnueabihf/pkgconfig/json-c.pc
+    ln -s /usr/lib/arm-linux-gnueabihf/libjson-c.so.5.1.0 /usr/lib/arm-linux-gnueabihf/libjson-c.so
+fi
+
+mkdir -p /igt
+meson build $MESON_OPTIONS $EXTRA_MESON_ARGS
+ninja -C build -j${FDO_CI_CONCURRENT:-4} || ninja -C build -j 1
+ninja -C build install
+
+mkdir -p artifacts/
+tar -cf artifacts/igt.tar /igt
+
+# Pass needed files to the test stage
+MINIO_ARTIFACT_NAME="igt.tar.gz"
+gzip -c artifacts/igt.tar > ${MINIO_ARTIFACT_NAME}
+ci-fairy minio login --token-file "${CI_JOB_JWT_FILE}"
+ci-fairy minio cp ${MINIO_ARTIFACT_NAME} minio://${PIPELINE_ARTIFACTS_BASE}/${KERNEL_ARCH}/${MINIO_ARTIFACT_NAME}
diff --git a/drivers/gpu/drm/ci/build.sh b/drivers/gpu/drm/ci/build.sh
new file mode 100644
index 000000000000..4a93cab34342
--- /dev/null
+++ b/drivers/gpu/drm/ci/build.sh
@@ -0,0 +1,158 @@
+#!/bin/bash
+# SPDX-License-Identifier: MIT
+
+set -ex
+
+# Clean up stale rebases that GitLab might not have removed when reusing a checkout dir
+rm -rf .git/rebase-apply
+
+. .gitlab-ci/container/container_pre_build.sh
+
+# libssl-dev was uninstalled because it was considered an ephemeral package
+apt-get update
+apt-get install -y libssl-dev
+
+if [[ "$KERNEL_ARCH" = "arm64" ]]; then
+    GCC_ARCH="aarch64-linux-gnu"
+    DEBIAN_ARCH="arm64"
+    DEVICE_TREES="arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/amlogic/meson-gxl-s805x-libretech-ac.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/qcom/apq8016-sbc.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/qcom/apq8096-db820c.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/amlogic/meson-g12b-a311d-khadas-vim3.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/mediatek/mt8173-elm-hana.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-juniper-sku16.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/mediatek/mt8192-asurada-spherion-r0.dtb"
+    DEVICE_TREES+=" arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-limozeen-nots-r5.dtb"
+elif [[ "$KERNEL_ARCH" = "arm" ]]; then
+    GCC_ARCH="arm-linux-gnueabihf"
+    DEBIAN_ARCH="armhf"
+    DEVICE_TREES="arch/arm/boot/dts/rk3288-veyron-jaq.dtb"
+    DEVICE_TREES+=" arch/arm/boot/dts/sun8i-h3-libretech-all-h3-cc.dtb"
+    DEVICE_TREES+=" arch/arm/boot/dts/imx6q-cubox-i.dtb"
+    apt-get install -y libssl-dev:armhf
+else
+    GCC_ARCH="x86_64-linux-gnu"
+    DEBIAN_ARCH="amd64"
+    DEVICE_TREES=""
+fi
+
+export ARCH=${KERNEL_ARCH}
+export CROSS_COMPILE="${GCC_ARCH}-"
+
+# The kernel doesn't like the gold linker (or the old lld in our debians).
+# Sneak in some override symlinks during kernel build until we can update
+# debian.
+mkdir -p ld-links
+for i in /usr/bin/*-ld /usr/bin/ld; do
+    i=`basename $i`
+    ln -sf /usr/bin/$i.bfd ld-links/$i
+done
+export PATH=`pwd`/ld-links:$PATH
+
+git config --global user.email "fdo@example.com"
+git config --global user.name "freedesktop.org CI"
+
+# Try to merge fixes from target repo
+if [ "$(git ls-remote --exit-code --heads ${UPSTREAM_REPO} ${TARGET_BRANCH}-external-fixes)" ]; then
+    git pull ${UPSTREAM_REPO} ${TARGET_BRANCH}-external-fixes
+fi
+
+# Try to merge fixes from local repo if this isn't a merge request
+if [ -z "$CI_MERGE_REQUEST_PROJECT_PATH" ]; then
+    if [ "$(git ls-remote --exit-code --heads origin ${TARGET_BRANCH}-external-fixes)" ]; then
+        git pull origin ${TARGET_BRANCH}-external-fixes
+    fi
+fi
+
+for opt in $ENABLE_KCONFIGS; do
+  echo CONFIG_$opt=y >> drivers/gpu/drm/ci/${KERNEL_ARCH}.config
+done
+for opt in $DISABLE_KCONFIGS; do
+  echo CONFIG_$opt=n >> drivers/gpu/drm/ci/${KERNEL_ARCH}.config
+done
+
+if [[ -n "${MERGE_FRAGMENT}" ]]; then
+    ./scripts/kconfig/merge_config.sh ${DEFCONFIG} drivers/gpu/drm/ci/${MERGE_FRAGMENT}
+else
+    make `basename ${DEFCONFIG}`
+fi
+
+make ${KERNEL_IMAGE_NAME}
+
+mkdir -p /lava-files/
+for image in ${KERNEL_IMAGE_NAME}; do
+    cp arch/${KERNEL_ARCH}/boot/${image} /lava-files/.
+done
+
+if [[ -n ${DEVICE_TREES} ]]; then
+    make dtbs
+    cp ${DEVICE_TREES} /lava-files/.
+fi
+
+if [[ ${DEBIAN_ARCH} = "amd64" ]]; then
+    make modules
+    mkdir -p install/modules/
+    INSTALL_MOD_PATH=install/modules/ make modules_install
+fi
+
+if [[ ${DEBIAN_ARCH} = "arm64" ]]; then
+    make Image.lzma
+    mkimage \
+        -f auto \
+        -A arm \
+        -O linux \
+        -d arch/arm64/boot/Image.lzma \
+        -C lzma\
+        -b arch/arm64/boot/dts/qcom/sdm845-cheza-r3.dtb \
+        /lava-files/cheza-kernel
+    KERNEL_IMAGE_NAME+=" cheza-kernel"
+
+    # Make a gzipped copy of the Image for db410c.
+    gzip -k /lava-files/Image
+    KERNEL_IMAGE_NAME+=" Image.gz"
+fi
+
+# Pass needed files to the test stage
+mkdir -p install
+cp -rfv .gitlab-ci/* install/.
+cp -rfv install/common install/ci-common
+cp -rfv drivers/gpu/drm/ci/* install/.
+
+. .gitlab-ci/container/container_post_build.sh
+
+if [[ "$UPLOAD_TO_MINIO" = "1" ]]; then
+    xz -7 -c -T${FDO_CI_CONCURRENT:-4} vmlinux > /lava-files/vmlinux.xz
+    ci-fairy minio login --token-file "${CI_JOB_JWT_FILE}"
+    FILES_TO_UPLOAD="$KERNEL_IMAGE_NAME vmlinux.xz"
+
+    if [[ -n $DEVICE_TREES ]]; then
+        FILES_TO_UPLOAD="$FILES_TO_UPLOAD $(basename -a $DEVICE_TREES)"
+    fi
+
+    for f in $FILES_TO_UPLOAD; do
+        ci-fairy minio cp /lava-files/$f \
+                minio://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/$f
+    done
+
+    MINIO_ARTIFACT_NAME="kernel-files.tar.zst"
+    tar --zstd -cf $MINIO_ARTIFACT_NAME install
+    ci-fairy minio login --token-file "${CI_JOB_JWT_FILE}"
+    ci-fairy minio cp ${MINIO_ARTIFACT_NAME} minio://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/${MINIO_ARTIFACT_NAME}
+
+    echo "Download vmlinux.xz from https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/vmlinux.xz"
+fi
+
+mkdir -p artifacts/install/lib
+mv install/* artifacts/install/.
+rm -rf artifacts/install/modules
+ln -s common artifacts/install/ci-common
+
+for image in ${KERNEL_IMAGE_NAME}; do
+    cp /lava-files/$image artifacts/install/.
+done
+
+tar -C artifacts -cf artifacts/install.tar install
+rm -rf artifacts/install
diff --git a/drivers/gpu/drm/ci/build.yml b/drivers/gpu/drm/ci/build.yml
new file mode 100644
index 000000000000..08cc817d9a07
--- /dev/null
+++ b/drivers/gpu/drm/ci/build.yml
@@ -0,0 +1,110 @@
+.build:
+  extends:
+    - .build-rules
+  stage: build
+  artifacts:
+    paths:
+      - artifacts
+  script:
+    - FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash drivers/gpu/drm/ci/build.sh
+
+.build:armhf:
+  extends:
+    - .build
+    - .use-debian/arm_build
+  tags:
+    - aarch64
+  variables:
+    DEFCONFIG: "arch/arm/configs/multi_v7_defconfig"
+    KERNEL_IMAGE_NAME: "zImage"
+    KERNEL_ARCH: "arm"
+
+.build:arm64:
+  extends:
+    - .build
+    - .use-debian/arm_build
+  tags:
+    - aarch64
+  variables:
+    DEFCONFIG: "arch/arm64/configs/defconfig"
+    KERNEL_IMAGE_NAME: "Image"
+    KERNEL_ARCH: "arm64"
+
+.build:amd64:
+  extends:
+    - .build
+    - .use-debian/x86_build
+  variables:
+    DEFCONFIG: "arch/x86/configs/x86_64_defconfig"
+    KERNEL_IMAGE_NAME: "bzImage"
+    KERNEL_ARCH: "x86_64"
+
+
+# Build IGT for testing on devices
+
+igt:armhf:
+  extends: .build:armhf
+  script:
+    - FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash drivers/gpu/drm/ci/build-igt.sh
+
+igt:arm64:
+  extends: .build:arm64
+  script:
+    - FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash drivers/gpu/drm/ci/build-igt.sh
+
+igt:amd64:
+  extends: .build:amd64
+  script:
+    - FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash drivers/gpu/drm/ci/build-igt.sh
+
+# Build kernels for testing on devices
+
+testing:armhf:
+  extends: .build:armhf
+  variables:
+    # Would be good to have DEBUG_KMEMLEAK, but it doesn't work well with any of
+    # PROVE_LOCKING and KASAN as of 5.17.
+    #
+    # db410c and db820c don't boot with KASAN_INLINE, probably due to the kernel
+    # becoming too big for their bootloaders.
+    ENABLE_KCONFIGS: "PROVE_LOCKING DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT"
+    UPLOAD_TO_MINIO: 1
+    MERGE_FRAGMENT: arm.config
+
+testing:arm64:
+  extends: .build:arm64
+  variables:
+    # Would be good to have DEBUG_KMEMLEAK, but it doesn't work well with any of
+    # PROVE_LOCKING and KASAN as of 5.17.
+    #
+    # db410c and db820c don't boot with KASAN_INLINE, probably due to the kernel
+    # becoming too big for their bootloaders.
+    ENABLE_KCONFIGS: "PROVE_LOCKING DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT"
+    UPLOAD_TO_MINIO: 1
+    MERGE_FRAGMENT: arm64.config
+
+testing:amd64:
+  extends: .build:amd64
+  variables:
+    # Would be good to have DEBUG_KMEMLEAK, but it doesn't work well with any of
+    # PROVE_LOCKING and KASAN as of 5.17.
+    #
+    # db410c and db820c don't boot with KASAN_INLINE, probably due to the kernel
+    # becoming too big for their bootloaders.
+    ENABLE_KCONFIGS: "PROVE_LOCKING DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT"
+    UPLOAD_TO_MINIO: 1
+    MERGE_FRAGMENT: x86_64.config
+
+
+# Jobs for build-testing different configurations
+
+build:armhf:
+  extends: .build:armhf
+
+build-nodebugfs:arm64:
+  extends: .build:arm64
+  variables:
+    DISABLE_KCONFIGS: "DEBUG_FS"
+
+build:x86_64:
+  extends: .build:amd64
diff --git a/drivers/gpu/drm/ci/check-patch.py b/drivers/gpu/drm/ci/check-patch.py
new file mode 100755
index 000000000000..a5f399a20e25
--- /dev/null
+++ b/drivers/gpu/drm/ci/check-patch.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# check-patch.py: run checkpatch.pl across all commits in a branch
+#
+# Based on qemu/.gitlab-ci.d/check-patch.py
+#
+# Copyright (C) 2020 Red Hat, Inc.
+# Copyright (C) 2022 Collabora Ltd.
+
+import os
+import os.path
+import sys
+import subprocess
+
+repourl = "https://gitlab.freedesktop.org/%s.git" % os.environ["CI_MERGE_REQUEST_PROJECT_PATH"]
+
+# GitLab CI environment does not give us any direct info about the
+# base for the user's branch. We thus need to figure out a common
+# ancestor between the user's branch and current git master.
+os.environ["GIT_DEPTH"] = "1000"
+subprocess.call(["git", "remote", "remove", "check-patch"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
+subprocess.check_call(["git", "remote", "add", "check-patch", repourl])
+subprocess.check_call(["git", "fetch", "check-patch", os.environ["CI_MERGE_REQUEST_TARGET_BRANCH_NAME"]],
+                      stdout=subprocess.DEVNULL,
+                      stderr=subprocess.DEVNULL)
+
+ancestor = subprocess.check_output(["git", "merge-base",
+                                    "check-patch/%s" % os.environ["CI_MERGE_REQUEST_TARGET_BRANCH_NAME"], "HEAD"],
+                                   universal_newlines=True)
+
+ancestor = ancestor.strip()
+
+log = subprocess.check_output(["git", "log", "--format=%H %s",
+                               ancestor + "..."],
+                              universal_newlines=True)
+
+subprocess.check_call(["git", "remote", "rm", "check-patch"])
+
+if log == "":
+    print("\nNo commits since %s, skipping checks\n" % ancestor)
+    sys.exit(0)
+
+errors = False
+
+print("\nChecking all commits since %s...\n" % ancestor, flush=True)
+
+ret = subprocess.run(["scripts/checkpatch.pl",
+                      "--terse",
+                      "--types", os.environ["CHECKPATCH_TYPES"],
+                      "--git", ancestor + "..."])
+
+if ret.returncode != 0:
+    print("    ❌ FAIL one or more commits failed scripts/checkpatch.pl")
+    sys.exit(1)
+
+sys.exit(0)
diff --git a/drivers/gpu/drm/ci/container.yml b/drivers/gpu/drm/ci/container.yml
new file mode 100644
index 000000000000..af2416a84daf
--- /dev/null
+++ b/drivers/gpu/drm/ci/container.yml
@@ -0,0 +1,54 @@
+.container:
+  variables:
+    CI_REPOSITORY_URL: ${DRM_CI_PROJECT_URL}.git # So ci-templates clones drm-ci instead of the repo to test
+    CI_COMMIT_SHA: ${DRM_CI_COMMIT_SHA}
+
+debian/x86_build-base:
+  variables:
+    EXTRA_LOCAL_PACKAGES: "libcairo-dev libdw-dev libjson-c-dev libkmod-dev libpciaccess-dev libprocps-dev libudev-dev libunwind-dev python3-docutils bc curl python3-ply libssl-dev"
+
+debian/x86_test-gl:
+  variables:
+    EXTRA_EPHEMERAL_PACKAGES: "libcairo-dev libdw-dev libjson-c-dev libkmod-dev libpciaccess-dev libprocps-dev libunwind-dev python3-docutils"
+    EXTRA_LOCAL_PACKAGES: "jq libasound2 libcairo2 libdw1 libglib2.0-0 libgsl25 libjson-c5 libkmod2 libprocps8 curl libgles2"
+
+debian/arm_build:
+  variables:
+    EXTRA_LOCAL_PACKAGES: "libcairo-dev libdw-dev libjson-c-dev libkmod-dev libpciaccess-dev libprocps-dev libudev-dev libunwind-dev python3-docutils curl libssl-dev crossbuild-essential-armhf libkmod-dev:armhf libcairo-dev:armhf libdw-dev:armhf libjson-c5:armhf libkmod-dev:armhf libpciaccess-dev:armhf libprocps-dev:armhf libudev-dev:armhf libunwind-dev:armhf"
+
+debian/arm_test:
+  variables:
+    EXTRA_LOCAL_PACKAGES: "curl"
+
+.kernel+rootfs:
+  variables:
+    EXTRA_LOCAL_PACKAGES: "jq libasound2 libcairo2 libdw1 libglib2.0-0 libgsl25 libjson-c5 libprocps8"
+
+# Disable container jobs that we won't use
+debian/x86_test-vk:
+  rules:
+    - when: never
+
+fedora/x86_build:
+  rules:
+    - when: never
+
+debian/android_build:
+  rules:
+    - when: never
+
+windows_build_vs2019:
+  rules:
+    - when: never
+
+windows_test_vs2019:
+  rules:
+    - when: never
+
+debian/x86_build-mingw:
+   rules:
+    - when: never
+
+windows_vs2019:
+   rules:
+    - when: never
diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml
new file mode 100644
index 000000000000..8b83d0c4a8c4
--- /dev/null
+++ b/drivers/gpu/drm/ci/gitlab-ci.yml
@@ -0,0 +1,225 @@
+variables:
+  # Change this to use your fork of drm-ci
+  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
+  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha 09eb70d72f13755b646a20dcd1e7971d69c0a2da
+
+  UPSTREAM_REPO: git://anongit.freedesktop.org/drm/drm
+  TARGET_BRANCH: drm-next
+
+  IGT_VERSION: cffa5fffe9acddf49565b4caeeb5e3355ff2ea44
+
+  DEQP_RUNNER_GIT_URL: https://gitlab.freedesktop.org/anholt/deqp-runner.git
+  DEQP_RUNNER_GIT_TAG: v0.15.0
+
+  FDO_UPSTREAM_REPO: tomeu/linux   # The repo where the git-archive daily runs
+  MESA_TEMPLATES_COMMIT: &ci-templates-commit d5aa3941aa03c2f716595116354fb81eb8012acb
+  DRM_CI_PROJECT_URL: https://gitlab.freedesktop.org/${DRM_CI_PROJECT_PATH}
+  CI_PRE_CLONE_SCRIPT: |-
+          set -o xtrace
+          wget -q -O download-git-cache.sh ${DRM_CI_PROJECT_URL}/-/raw/${DRM_CI_COMMIT_SHA}/.gitlab-ci/download-git-cache.sh
+          bash download-git-cache.sh
+          rm download-git-cache.sh
+          set +o xtrace
+  MINIO_HOST: minio-packet.freedesktop.org
+  # per-pipeline artifact storage on MinIO
+  PIPELINE_ARTIFACTS_BASE: ${MINIO_HOST}/artifacts/${CI_PROJECT_PATH}/${CI_PIPELINE_ID}
+  # per-job artifact storage on MinIO
+  JOB_ARTIFACTS_BASE: ${PIPELINE_ARTIFACTS_BASE}/${CI_JOB_ID}
+
+default:
+  before_script:
+    - echo -e "\e[0Ksection_start:$(date +%s):unset_env_vars_section[collapsed=true]\r\e[0KUnsetting vulnerable environment variables"
+    - export CI_JOB_JWT_FILE="${CI_JOB_JWT_FILE:-$(mktemp)}"
+    - echo -n "${CI_JOB_JWT}" > "${CI_JOB_JWT_FILE}"
+    - unset CI_JOB_JWT
+    - echo -e "\e[0Ksection_end:$(date +%s):unset_env_vars_section\r\e[0K"
+
+    - echo -e "\e[0Ksection_start:$(date +%s):drm_ci_download_section[collapsed=true]\r\e[0KDownloading drm-ci from $DRM_CI_PROJECT_URL/-/archive/$DRM_CI_COMMIT_SHA/drm-ci-$DRM_CI_COMMIT_SHA.tar.gz"
+    - cd $CI_PROJECT_DIR
+    - curl --output - $DRM_CI_PROJECT_URL/-/archive/$DRM_CI_COMMIT_SHA/drm-ci-$DRM_CI_COMMIT_SHA.tar.gz | tar -xz
+    - mv drm-ci-$DRM_CI_COMMIT_SHA/.gitlab-ci* .
+    - rm -rf drm-ci-$DRM_CI_COMMIT_SHA/
+    - echo -e "\e[0Ksection_end:$(date +%s):drm_ci_download_section\r\e[0K"
+
+  after_script:
+    - >
+      set +x
+
+      test -e "${CI_JOB_JWT_FILE}" &&
+      export CI_JOB_JWT="$(<${CI_JOB_JWT_FILE})" &&
+      rm "${CI_JOB_JWT_FILE}"
+
+include:
+  - project: 'freedesktop/ci-templates'
+    ref: 34f4ade99434043f88e164933f570301fd18b125
+    file:
+      - '/templates/ci-fairy.yml'
+  - project: 'freedesktop/ci-templates'
+    ref: *ci-templates-commit
+    file:
+      - '/templates/debian.yml'
+      - '/templates/fedora.yml'
+  - project: *drm-ci-project-path
+    ref: *drm-ci-commit-sha
+    file:
+      - '/.gitlab-ci/container/gitlab-ci.yml'
+      - '/.gitlab-ci/test/gitlab-ci.yml'
+      - '/.gitlab-ci/lava/lava-gitlab-ci.yml'
+  - drivers/gpu/drm/ci/image-tags.yml
+  - drivers/gpu/drm/ci/container.yml
+  - drivers/gpu/drm/ci/static-checks.yml
+  - drivers/gpu/drm/ci/build.yml
+  - drivers/gpu/drm/ci/test.yml
+  - 'https://gitlab.freedesktop.org/gfx-ci/lab-status/-/raw/main/lab-status.yml'
+
+
+stages:
+  - sanity
+  - container
+  - git-archive
+  - build
+  - amdgpu
+  - i915
+  - mediatek
+  - meson
+  - msm
+  - rockchip
+  - virtio-gpu
+
+# YAML anchors for rule conditions
+# --------------------------------
+.rules-anchors:
+  rules:
+    # Pipeline for forked project branch
+    - if: &is-forked-branch '$CI_COMMIT_BRANCH && $CI_PROJECT_NAMESPACE != "mesa"'
+      when: manual
+    # Forked project branch / pre-merge pipeline not for Marge bot
+    - if: &is-forked-branch-or-pre-merge-not-for-marge '$CI_PROJECT_NAMESPACE != "mesa" || ($GITLAB_USER_LOGIN != "marge-bot" && $CI_PIPELINE_SOURCE == "merge_request_event")'
+      when: manual
+    # Pipeline runs for the main branch of the upstream Mesa project
+    - if: &is-mesa-main '$CI_PROJECT_NAMESPACE == "mesa" && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH && $CI_COMMIT_BRANCH'
+      when: always
+    # Post-merge pipeline
+    - if: &is-post-merge '$CI_PROJECT_NAMESPACE == "mesa" && $CI_COMMIT_BRANCH'
+      when: on_success
+    # Post-merge pipeline, not for Marge Bot
+    - if: &is-post-merge-not-for-marge '$CI_PROJECT_NAMESPACE == "mesa" && $GITLAB_USER_LOGIN != "marge-bot" && $CI_COMMIT_BRANCH'
+      when: on_success
+    # Pre-merge pipeline
+    - if: &is-pre-merge '$CI_PIPELINE_SOURCE == "merge_request_event"'
+      when: on_success
+    # Pre-merge pipeline for Marge Bot
+    - if: &is-pre-merge-for-marge '$GITLAB_USER_LOGIN == "marge-bot" && $CI_PIPELINE_SOURCE == "merge_request_event"'
+      when: on_success
+
+# Rule to filter for only scheduled pipelines.
+.scheduled_pipeline-rules:
+  rules:
+    - if: &is-scheduled-pipeline '$CI_PIPELINE_SOURCE == "schedule"'
+      when: on_success
+
+# Generic rule to not run the job during scheduled pipelines. Jobs that aren't
+# something like a nightly run should include this rule.
+.no_scheduled_pipelines-rules:
+  rules:
+    - if: *is-scheduled-pipeline
+      when: never
+
+# When to automatically run the CI for build jobs
+.build-rules:
+  rules:
+    - !reference [.no_scheduled_pipelines-rules, rules]
+    # Run automatically once all dependency jobs have passed
+    - when: on_success
+
+
+.ci-deqp-artifacts:
+  artifacts:
+    name: "mesa_${CI_JOB_NAME}"
+    when: always
+    untracked: false
+    paths:
+      # Watch out!  Artifacts are relative to the build dir.
+      # https://gitlab.com/gitlab-org/gitlab-ce/commit/8788fb925706cad594adf6917a6c5f6587dd1521
+      - artifacts
+      - _build/meson-logs/*.txt
+      - _build/meson-logs/strace
+
+
+.container-rules:
+  rules:
+    - !reference [.no_scheduled_pipelines-rules, rules]
+    # Run pipeline by default in the main project if any CI pipeline
+    # configuration files were changed, to ensure docker images are up to date
+    - if: *is-post-merge
+      changes:
+      - drivers/gpu/drm/ci/**/*
+      when: on_success
+    # Run pipeline by default if it was triggered by Marge Bot, is for a
+    # merge request, and any files affecting the pipeline were changed
+    - if: *is-pre-merge-for-marge
+      when: on_success
+    # Run pipeline by default in the main project if it was not triggered by
+    # Marge Bot, and any files affecting the pipeline were changed
+    - if: *is-post-merge-not-for-marge
+      when: on_success
+    # Allow triggering jobs manually in other cases
+    - when: manual
+
+
+
+# Git archive
+
+make git archive:
+  extends:
+    - .fdo.ci-fairy
+  stage: git-archive
+  rules:
+    - !reference [.scheduled_pipeline-rules, rules]
+  # ensure we are running on packet
+  tags:
+    - packet.net
+  script:
+    # Remove drm-ci files we just added
+    - rm -rf .gitlab-ci.*
+
+    # Compactify the .git directory
+    - git gc --aggressive
+    # compress the current folder
+    - tar -cvzf ../$CI_PROJECT_NAME.tar.gz .
+
+    # login with the JWT token file
+    - ci-fairy minio login --token-file "${CI_JOB_JWT_FILE}"
+    - ci-fairy minio cp ../$CI_PROJECT_NAME.tar.gz minio://$MINIO_HOST/git-cache/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_PROJECT_NAME.tar.gz
+
+
+# Sanity checks of MR settings and commit logs
+sanity:
+  extends:
+    - .fdo.ci-fairy
+  stage: sanity
+  rules:
+    - if: *is-pre-merge
+      when: on_success
+    # Other cases default to never
+  variables:
+    GIT_STRATEGY: none
+  script:
+    # ci-fairy check-commits --junit-xml=check-commits.xml
+    - ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request.xml
+  artifacts:
+    when: on_failure
+    reports:
+      junit: check-*.xml
+
+# Rules for tests that should not block merging, but should be available to
+# optionally run with the "play" button in the UI in pre-merge non-marge
+# pipelines.  This should appear in "extends:" after any includes of
+# test-source-dep.yml rules, so that these rules replace those.
+.test-manual-mr:
+  rules:
+    - !reference [.no_scheduled_pipelines-rules, rules]
+    - if: *is-forked-branch-or-pre-merge-not-for-marge
+      when: manual
+  variables:
+    JOB_TIMEOUT: 80
diff --git a/drivers/gpu/drm/ci/igt_runner.sh b/drivers/gpu/drm/ci/igt_runner.sh
new file mode 100755
index 000000000000..5bfa78f03d00
--- /dev/null
+++ b/drivers/gpu/drm/ci/igt_runner.sh
@@ -0,0 +1,77 @@
+#!/bin/sh
+# SPDX-License-Identifier: MIT
+
+set -ex
+
+export IGT_FORCE_DRIVER=${DRIVER_NAME}
+export PATH=$PATH:/igt/bin/
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/igt/lib/aarch64-linux-gnu/:/igt/lib/x86_64-linux-gnu:/igt/lib
+
+# Uncomment the below to debug problems with driver probing
+: '
+ls -l /dev/dri/
+cat /sys/kernel/debug/devices_deferred
+cat /sys/kernel/debug/device_component/*
+'
+
+# Dump drm state to confirm that kernel was able to find a connected display:
+# TODO this path might not exist for all drivers.. maybe run modetest instead?
+set +e
+cat /sys/kernel/debug/dri/*/state
+set -e
+
+# Cannot use HWCI_KERNEL_MODULES as at that point we don't have the module in /lib
+if [ "$IGT_FORCE_DRIVER" = "amdgpu" ]; then
+    mv /install/modules/lib/modules/* /lib/modules/.
+    modprobe amdgpu
+fi
+
+if [ -e "/install/xfails/$DRIVER_NAME-$GPU_VERSION-skips.txt" ]; then
+    IGT_SKIPS="--skips /install/xfails/$DRIVER_NAME-$GPU_VERSION-skips.txt"
+fi
+
+if [ -e "/install/xfails/$DRIVER_NAME-$GPU_VERSION-flakes.txt" ]; then
+    IGT_FLAKES="--flakes /install/xfails/$DRIVER_NAME-$GPU_VERSION-flakes.txt"
+fi
+
+if [ -e "/install/xfails/$DRIVER_NAME-$GPU_VERSION-fails.txt" ]; then
+    IGT_FAILS="--baseline /install/xfails/$DRIVER_NAME-$GPU_VERSION-fails.txt"
+fi
+
+if [ "`uname -m`" = "aarch64" ]; then
+    ARCH="arm64"
+elif [ "`uname -m`" = "armv7l" ]; then
+    ARCH="arm"
+else
+    ARCH="x86_64"
+fi
+
+wget -S --progress=dot:giga -O- ${FDO_HTTP_CACHE_URI:-}$PIPELINE_ARTIFACTS_BASE/$ARCH/igt.tar.gz | tar -xz -C /
+
+set +e
+igt-runner \
+    run \
+    --igt-folder /igt/libexec/igt-gpu-tools \
+    --caselist /install/testlist.txt \
+    --output /results \
+    $IGT_SKIPS \
+    $IGT_FLAKES \
+    $IGT_FAILS \
+    --fraction-start $CI_NODE_INDEX \
+    --fraction $CI_NODE_TOTAL \
+    --jobs 1
+ret=$?
+set -e
+
+deqp-runner junit \
+   --testsuite IGT \
+   --results /results/failures.csv \
+   --output /results/junit.xml \
+   --limit 50 \
+   --template "See https://$CI_PROJECT_ROOT_NAMESPACE.pages.freedesktop.org/-/$CI_PROJECT_NAME/-/jobs/$CI_JOB_ID/artifacts/results/{{testcase}}.xml"
+
+# Store the results also in the simpler format used by the runner in ChromeOS CI
+#sed -r 's/(dmesg-warn|pass)/success/g' /results/results.txt > /results/results_simple.txt
+
+cd $oldpath
+exit $ret
diff --git a/drivers/gpu/drm/ci/image-tags.yml b/drivers/gpu/drm/ci/image-tags.yml
new file mode 100644
index 000000000000..6d6773554028
--- /dev/null
+++ b/drivers/gpu/drm/ci/image-tags.yml
@@ -0,0 +1,13 @@
+variables:
+   CONTAINER_TAG: "2022-09-08-mesa-uprev"
+   DEBIAN_X86_BUILD_BASE_IMAGE: "debian/x86_build-base"
+   DEBIAN_BASE_TAG: "${CONTAINER_TAG}"
+
+   DEBIAN_X86_BUILD_IMAGE_PATH: "debian/x86_build"
+   DEBIAN_BUILD_TAG: "${CONTAINER_TAG}"
+
+   KERNEL_ROOTFS_TAG: "${CONTAINER_TAG}"
+
+   DEBIAN_X86_TEST_BASE_IMAGE: "debian/x86_test-base"
+   DEBIAN_X86_TEST_IMAGE_PATH: "debian/x86_test-gl"
+   DEBIAN_X86_TEST_GL_TAG: "${CONTAINER_TAG}"
diff --git a/drivers/gpu/drm/ci/lava-submit.sh b/drivers/gpu/drm/ci/lava-submit.sh
new file mode 100755
index 000000000000..3dec17dbdd30
--- /dev/null
+++ b/drivers/gpu/drm/ci/lava-submit.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+# SPDX-License-Identifier: MIT
+
+set -e
+set -x
+
+# Try to use the kernel and rootfs built in mainline first, so we're more
+# likely to hit cache
+if wget -q --method=HEAD "https://${BASE_SYSTEM_MAINLINE_HOST_PATH}/done"; then
+	BASE_SYSTEM_HOST_PATH="${BASE_SYSTEM_MAINLINE_HOST_PATH}"
+else
+	BASE_SYSTEM_HOST_PATH="${BASE_SYSTEM_FORK_HOST_PATH}"
+fi
+
+rm -rf results
+mkdir -p results/job-rootfs-overlay/
+
+cp artifacts/ci-common/capture-devcoredump.sh results/job-rootfs-overlay/
+cp artifacts/ci-common/init-*.sh results/job-rootfs-overlay/
+cp artifacts/ci-common/intel-gpu-freq.sh results/job-rootfs-overlay/
+
+# Prepare env vars for upload.
+KERNEL_IMAGE_BASE_URL="https://${BASE_SYSTEM_HOST_PATH}" \
+	artifacts/ci-common/generate-env.sh > results/job-rootfs-overlay/set-job-env-vars.sh
+
+tar zcf job-rootfs-overlay.tar.gz -C results/job-rootfs-overlay/ .
+ci-fairy minio login --token-file "${CI_JOB_JWT_FILE}"
+ci-fairy minio cp job-rootfs-overlay.tar.gz "minio://${JOB_ROOTFS_OVERLAY_PATH}"
+
+touch results/lava.log
+tail -f results/lava.log &
+
+PYTHONPATH=artifacts/ artifacts/lava/lava_job_submitter.py \
+	--dump-yaml \
+	--pipeline-info "$CI_JOB_NAME: $CI_PIPELINE_URL on $CI_COMMIT_REF_NAME ${CI_NODE_INDEX}/${CI_NODE_TOTAL}" \
+	--rootfs-url-prefix "https://${BASE_SYSTEM_HOST_PATH}" \
+	--kernel-url-prefix "https://${PIPELINE_ARTIFACTS_BASE}/${ARCH}" \
+	--build-url "${FDO_HTTP_CACHE_URI:-}https://${PIPELINE_ARTIFACTS_BASE}/${ARCH}/kernel-files.tar.zst" \
+	--job-rootfs-overlay-url "${FDO_HTTP_CACHE_URI:-}https://${JOB_ROOTFS_OVERLAY_PATH}" \
+	--job-timeout ${JOB_TIMEOUT:-30} \
+	--first-stage-init artifacts/ci-common/init-stage1.sh \
+	--ci-project-dir ${CI_PROJECT_DIR} \
+	--device-type ${DEVICE_TYPE} \
+	--dtb ${DTB} \
+	--jwt-file "${CI_JOB_JWT_FILE}" \
+	--kernel-image-name ${KERNEL_IMAGE_NAME} \
+	--kernel-image-type "${KERNEL_IMAGE_TYPE}" \
+	--boot-method ${BOOT_METHOD} \
+	--visibility-group ${VISIBILITY_GROUP} \
+	--priority 50 \
+    --lava-tags "${LAVA_TAGS}" \
+    --mesa-job-name "$CI_JOB_NAME" \
+    >> results/lava.log
diff --git a/drivers/gpu/drm/ci/static-checks.yml b/drivers/gpu/drm/ci/static-checks.yml
new file mode 100644
index 000000000000..213177081914
--- /dev/null
+++ b/drivers/gpu/drm/ci/static-checks.yml
@@ -0,0 +1,12 @@
+check-patch:
+  extends:
+    - .build
+    - .use-debian/x86_build
+  script:
+    - drivers/gpu/drm/ci/check-patch.py
+  variables:
+    CHECKPATCH_TYPES: "BAD_SIGN_OFF,BAD_STABLE_ADDRESS_STYLE,COMMIT_COMMENT_SYMBOL,COMMIT_MESSAGE,EMAIL_SUBJECT,FROM_SIGN_OFF_MISMATCH,MISSING_SIGN_OFF,NO_AUTHOR_SIGN_OFF,DIFF_IN_COMMIT_MSG,GERRIT_CHANGE_ID,GIT_COMMIT_ID,UNKNOWN_COMMIT_ID,CODE_INDENT,BIT_MACRO,DOS_LINE_ENDINGS"
+  rules:
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
+      when: on_success
+    # Other cases default to never
diff --git a/drivers/gpu/drm/ci/test.yml b/drivers/gpu/drm/ci/test.yml
new file mode 100644
index 000000000000..399f0db01aeb
--- /dev/null
+++ b/drivers/gpu/drm/ci/test.yml
@@ -0,0 +1,322 @@
+.test-rules:
+  rules:
+    - if: '$FD_FARM == "offline" && $RUNNER_TAG =~ /^google-freedreno-/'
+      when: never
+    - if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
+      when: never
+    - !reference [.no_scheduled_pipelines-rules, rules]
+    - when: on_success
+
+.lava-test:
+  extends:
+    - .test-rules
+  script:
+    # Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY
+    - rm -rf install
+    - tar -xf artifacts/install.tar
+    - mv install/* artifacts/.
+    # Override it with our lava-submit.sh script
+    - ./artifacts/lava-submit.sh
+
+.lava-igt:armhf:
+  extends:
+    - .lava-test:armhf
+  variables:
+    HWCI_TEST_SCRIPT: "/install/igt_runner.sh"
+    ARCH: "armhf"
+  dependencies:
+    - testing:armhf
+  needs:
+    - kernel+rootfs_armhf
+    - debian/x86_build
+    - testing:armhf
+    - igt:armhf
+
+.lava-igt:arm64:
+  extends:
+    - .lava-test:arm64
+  variables:
+    HWCI_TEST_SCRIPT: "/install/igt_runner.sh"
+    ARCH: "arm64"
+  dependencies:
+    - testing:arm64
+  needs:
+    - kernel+rootfs_arm64
+    - debian/x86_build
+    - testing:arm64
+    - igt:arm64
+
+.lava-igt:amd64:
+  extends:
+    - .lava-test:amd64
+  variables:
+    HWCI_TEST_SCRIPT: "/install/igt_runner.sh"
+    ARCH: "amd64"
+  dependencies:
+    - testing:amd64
+  needs:
+    - kernel+rootfs_amd64
+    - debian/x86_build
+    - testing:amd64
+    - igt:amd64
+
+.baremetal-igt-arm64:
+  extends:
+    - .baremetal-test-arm64
+    - .use-debian/arm_test
+    - .test-rules
+  variables:
+    FDO_CI_CONCURRENT: 10
+    HWCI_TEST_SCRIPT: "/install/igt_runner.sh"
+    MINIO_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"
+  needs:
+    - debian/arm_test
+    - job: testing:arm64
+      artifacts: false
+    - igt:arm64
+  tags:
+    - $RUNNER_TAG
+
+msm:sc7180:
+  extends:
+    - .lava-igt:arm64
+  stage: msm
+  parallel: 2
+  variables:
+    DRIVER_NAME: msm
+    DEVICE_TYPE: sc7180-trogdor-lazor-limozeen
+    DTB: sc7180-trogdor-lazor-limozeen-nots-r5
+    BOOT_METHOD: depthcharge
+    KERNEL_IMAGE_TYPE: ""
+    GPU_VERSION: sc7180
+    RUNNER_TAG: mesa-ci-x86-64-lava-sc7180-trogdor-lazor-limozeen
+
+msm:apq8016:
+  extends:
+    - .baremetal-igt-arm64
+  stage: msm
+  variables:
+    DRIVER_NAME: msm
+    BM_DTB: https://${PIPELINE_ARTIFACTS_BASE}/arm64/apq8016-sbc.dtb
+    GPU_VERSION: apq8016
+    RUNNER_TAG: google-freedreno-db410c
+  script:
+    - ./install/bare-metal/fastboot.sh
+
+msm:apq8096:
+  extends:
+    - .baremetal-igt-arm64
+  stage: msm
+  variables:
+    DRIVER_NAME: msm
+    BM_KERNEL_EXTRA_ARGS: maxcpus=2
+    BM_DTB: https://${PIPELINE_ARTIFACTS_BASE}/arm64/apq8096-db820c.dtb
+    GPU_VERSION: apq8096
+    RUNNER_TAG: google-freedreno-db820c
+  script:
+    - ./install/bare-metal/fastboot.sh
+
+msm:sdm845:
+  extends:
+    - .baremetal-igt-arm64
+  stage: msm
+  parallel: 2
+  variables:
+    DRIVER_NAME: msm
+    BM_KERNEL: https://${PIPELINE_ARTIFACTS_BASE}/arm64/cheza-kernel
+    GPU_VERSION: sdm845
+    RUNNER_TAG: google-freedreno-cheza
+  script:
+    - ./install/bare-metal/cros-servo.sh
+
+rockchip:rk3288:
+  extends:
+    - .lava-igt:armhf
+  stage: rockchip
+  variables:
+    DRIVER_NAME: rockchip
+    DEVICE_TYPE: rk3288-veyron-jaq
+    DTB: ${DEVICE_TYPE}
+    BOOT_METHOD: depthcharge
+    KERNEL_IMAGE_TYPE: "zimage"
+    GPU_VERSION: rk3288
+    RUNNER_TAG: mesa-ci-x86-64-lava-rk3288-veyron-jaq
+
+rockchip:rk3399:
+  extends:
+    - .lava-igt:arm64
+  stage: rockchip
+  parallel: 2
+  variables:
+    DRIVER_NAME: rockchip
+    DEVICE_TYPE: rk3399-gru-kevin
+    DTB: ${DEVICE_TYPE}
+    BOOT_METHOD: depthcharge
+    KERNEL_IMAGE_TYPE: ""
+    GPU_VERSION: rk3399
+    RUNNER_TAG: mesa-ci-x86-64-lava-rk3399-gru-kevin
+
+.i915:
+  extends:
+    - .lava-igt:amd64
+  stage: i915
+  variables:
+    DRIVER_NAME: i915
+    DTB: ""
+    BOOT_METHOD: depthcharge
+    KERNEL_IMAGE_TYPE: ""
+
+i915:apl:
+  extends:
+    - .i915
+  parallel: 6
+  variables:
+    DEVICE_TYPE: asus-C523NA-A20057-coral
+    GPU_VERSION: apl
+    RUNNER_TAG: mesa-ci-x86-64-lava-asus-C523NA-A20057-coral
+
+i915:glk:
+  extends:
+    - .i915
+  parallel: 3
+  variables:
+    DEVICE_TYPE: hp-x360-12b-ca0010nr-n4020-octopus
+    GPU_VERSION: glk
+    RUNNER_TAG: mesa-ci-x86-64-lava-hp-x360-12b-ca0010nr-n4020-octopus
+
+i915:amly:
+  extends:
+    - .i915
+  parallel: 5
+  variables:
+    DEVICE_TYPE: asus-C433TA-AJ0005-rammus
+    GPU_VERSION: amly
+    RUNNER_TAG: mesa-ci-x86-64-lava-asus-C433TA-AJ0005-rammus
+
+i915:kbl:
+  extends:
+    - .i915
+  parallel: 3
+  variables:
+    DEVICE_TYPE: hp-x360-14-G1-sona
+    GPU_VERSION: kbl
+    RUNNER_TAG: mesa-ci-x86-64-lava-hp-x360-14-G1-sona
+
+i915:whl:
+  extends:
+    - .i915
+  parallel: 5
+  variables:
+    DEVICE_TYPE: dell-latitude-5400-8665U-sarien
+    GPU_VERSION: whl
+    RUNNER_TAG: mesa-ci-x86-64-lava-dell-latitude-5400-8665U-sarien
+
+i915:cml:
+  extends:
+    - .i915
+  parallel: 4
+  variables:
+    DEVICE_TYPE: asus-C436FA-Flip-hatch
+    GPU_VERSION: cml
+    RUNNER_TAG: mesa-ci-x86-64-lava-asus-C436FA-flip-hatch
+
+i915:tgl:
+  extends:
+    - .i915
+  parallel: 4
+  variables:
+    DEVICE_TYPE: asus-cx9400-volteer
+    GPU_VERSION: tgl
+    RUNNER_TAG: mesa-ci-x86-64-lava-asus-cx9400-volteer
+
+.amdgpu:
+  extends:
+    - .lava-igt:amd64
+  stage: amdgpu
+  variables:
+    DRIVER_NAME: amdgpu
+    DTB: ""
+    BOOT_METHOD: depthcharge
+    KERNEL_IMAGE_TYPE: ""
+
+amdgpu:stoney:
+  extends:
+    - .amdgpu
+  variables:
+    DEVICE_TYPE: hp-11A-G6-EE-grunt
+    GPU_VERSION: stoney
+    RUNNER_TAG: mesa-ci-x86-64-lava-hp-11A-G6-EE-grunt
+
+.mediatek:
+  extends:
+    - .lava-igt:arm64
+  stage: mediatek
+  variables:
+    DRIVER_NAME: mediatek
+    DTB: ${DEVICE_TYPE}
+    BOOT_METHOD: depthcharge
+    KERNEL_IMAGE_TYPE: ""
+
+mediatek:mt8173:
+  extends:
+    - .mediatek
+  variables:
+    DEVICE_TYPE: mt8173-elm-hana
+    GPU_VERSION: mt8173
+    RUNNER_TAG: mesa-ci-x86-64-lava-mt8173-elm-hana
+
+mediatek:mt8183:
+  extends:
+    - .mediatek
+  variables:
+    DEVICE_TYPE: mt8183-kukui-jacuzzi-juniper-sku16
+    GPU_VERSION: mt8183
+    RUNNER_TAG: mesa-ci-x86-64-lava-mt8183-kukui-jacuzzi-juniper-sku16
+
+# drm-mtk doesn't even probe yet in mainline for mt8192
+.mediatek:mt8192:
+  extends:
+    - .mediatek
+  variables:
+    DEVICE_TYPE: mt8192-asurada-spherion-r0
+    GPU_VERSION: mt8192
+    RUNNER_TAG: mesa-ci-x86-64-lava-mt8192-asurada-spherion-r0
+
+.meson:
+  extends:
+    - .lava-igt:arm64
+  stage: meson
+  variables:
+    DRIVER_NAME: meson
+    DTB: ${DEVICE_TYPE}
+    BOOT_METHOD: u-boot
+    KERNEL_IMAGE_TYPE: "image"
+
+meson:g12b:
+  extends:
+    - .meson
+  variables:
+    DEVICE_TYPE: meson-g12b-a311d-khadas-vim3
+    GPU_VERSION: g12b
+    RUNNER_TAG: mesa-ci-x86-64-lava-meson-g12b-a311d-khadas-vim3
+
+virtio_gpu:none:
+  stage: virtio-gpu
+  variables:
+    CROSVM_GALLIUM_DRIVER: llvmpipe
+    DRIVER_NAME: virtio_gpu
+    GPU_VERSION: none
+  extends:
+    - .test-gl
+  tags:
+    - kvm
+  script:
+    - ln -sf $CI_PROJECT_DIR/install /install
+    - mv install/bzImage /lava-files/bzImage
+    - install/crosvm-runner.sh install/igt_runner.sh
+  needs:
+    - debian/x86_test-gl
+    - testing:amd64
+    - igt:amd64
diff --git a/drivers/gpu/drm/ci/testlist.txt b/drivers/gpu/drm/ci/testlist.txt
new file mode 100644
index 000000000000..e90c3cfe5eed
--- /dev/null
+++ b/drivers/gpu/drm/ci/testlist.txt
@@ -0,0 +1,2763 @@
+core_auth@basic-auth
+core_auth@getclient-master-drop
+core_auth@getclient-simple
+core_auth@many-magics
+core_getclient
+core_getstats
+core_getversion
+core_setmaster_vs_auth
+drm_read@empty-block
+drm_read@empty-nonblock
+drm_read@fault-buffer
+drm_read@invalid-buffer
+drm_read@short-buffer-block
+drm_read@short-buffer-nonblock
+gem_eio@banned
+gem_eio@context-create
+gem_eio@create
+gem_eio@create-ext
+gem_eio@execbuf
+gem_eio@hibernate
+gem_eio@in-flight-10ms
+gem_eio@in-flight-1us
+gem_eio@in-flight-contexts-10ms
+gem_eio@in-flight-contexts-1us
+gem_eio@in-flight-contexts-immediate
+gem_eio@in-flight-external
+gem_eio@in-flight-immediate
+gem_eio@in-flight-internal-10ms
+gem_eio@in-flight-internal-1us
+gem_eio@in-flight-internal-immediate
+gem_eio@kms
+gem_eio@reset-stress
+gem_eio@throttle
+gem_eio@unwedge-stress
+gem_eio@wait-10ms
+gem_eio@wait-1us
+gem_eio@wait-immediate
+gem_eio@wait-wedge-10ms
+gem_eio@wait-wedge-1us
+gem_eio@wait-wedge-immediate
+kms_3d
+kms_addfb_basic@addfb25-4-tiled
+kms_addfb_basic@addfb25-bad-modifier
+kms_addfb_basic@addfb25-framebuffer-vs-set-tiling
+kms_addfb_basic@addfb25-modifier-no-flag
+kms_addfb_basic@addfb25-x-tiled-legacy
+kms_addfb_basic@addfb25-x-tiled-mismatch-legacy
+kms_addfb_basic@addfb25-yf-tiled-legacy
+kms_addfb_basic@addfb25-y-tiled-legacy
+kms_addfb_basic@addfb25-y-tiled-small-legacy
+kms_addfb_basic@bad-pitch-0
+kms_addfb_basic@bad-pitch-1024
+kms_addfb_basic@bad-pitch-128
+kms_addfb_basic@bad-pitch-256
+kms_addfb_basic@bad-pitch-32
+kms_addfb_basic@bad-pitch-63
+kms_addfb_basic@bad-pitch-65536
+kms_addfb_basic@bad-pitch-999
+kms_addfb_basic@basic
+kms_addfb_basic@basic-x-tiled-legacy
+kms_addfb_basic@basic-y-tiled-legacy
+kms_addfb_basic@bo-too-small
+kms_addfb_basic@bo-too-small-due-to-tiling
+kms_addfb_basic@clobberred-modifier
+kms_addfb_basic@framebuffer-vs-set-tiling
+kms_addfb_basic@invalid-get-prop
+kms_addfb_basic@invalid-get-prop-any
+kms_addfb_basic@invalid-set-prop
+kms_addfb_basic@invalid-set-prop-any
+kms_addfb_basic@invalid-smem-bo-on-discrete
+kms_addfb_basic@legacy-format
+kms_addfb_basic@master-rmfb
+kms_addfb_basic@no-handle
+kms_addfb_basic@size-max
+kms_addfb_basic@small-bo
+kms_addfb_basic@tile-pitch-mismatch
+kms_addfb_basic@too-high
+kms_addfb_basic@too-wide
+kms_addfb_basic@unused-handle
+kms_addfb_basic@unused-modifier
+kms_addfb_basic@unused-offsets
+kms_addfb_basic@unused-pitches
+kms_async_flips@alternate-sync-async-flip
+kms_async_flips@async-flip-with-page-flip-events
+kms_async_flips@crc
+kms_async_flips@invalid-async-flip
+kms_async_flips@test-cursor
+kms_async_flips@test-time-stamp
+kms_atomic@atomic-invalid-params
+kms_atomic@atomic_plane_damage
+kms_atomic@crtc-invalid-params
+kms_atomic@crtc-invalid-params-fence
+kms_atomic_interruptible@atomic-setmode
+kms_atomic_interruptible@legacy-cursor
+kms_atomic_interruptible@legacy-dpms
+kms_atomic_interruptible@legacy-pageflip
+kms_atomic_interruptible@legacy-setmode
+kms_atomic_interruptible@universal-setplane-cursor
+kms_atomic_interruptible@universal-setplane-primary
+kms_atomic@plane-cursor-legacy
+kms_atomic@plane-immutable-zpos
+kms_atomic@plane-invalid-params
+kms_atomic@plane-invalid-params-fence
+kms_atomic@plane-overlay-legacy
+kms_atomic@plane-primary-legacy
+kms_atomic@plane-primary-overlay-mutable-zpos
+kms_atomic@test-only
+kms_atomic_transition@plane-all-modeset-transition
+kms_atomic_transition@plane-all-modeset-transition-fencing
+kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels
+kms_atomic_transition@plane-all-transition-fencing
+kms_atomic_transition@plane-all-transition-nonblocking-fencing
+kms_atomic_transition@plane-primary-toggle-with-vblank-wait
+kms_atomic_transition@plane-use-after-nonblocking-unbind
+kms_atomic_transition@plane-use-after-nonblocking-unbind-fencing
+kms_big_fb@4-tiled-16bpp-rotate-0
+kms_big_fb@4-tiled-16bpp-rotate-180
+kms_big_fb@4-tiled-16bpp-rotate-270
+kms_big_fb@4-tiled-16bpp-rotate-90
+kms_big_fb@4-tiled-32bpp-rotate-0
+kms_big_fb@4-tiled-32bpp-rotate-180
+kms_big_fb@4-tiled-32bpp-rotate-270
+kms_big_fb@4-tiled-32bpp-rotate-90
+kms_big_fb@4-tiled-64bpp-rotate-0
+kms_big_fb@4-tiled-64bpp-rotate-180
+kms_big_fb@4-tiled-64bpp-rotate-270
+kms_big_fb@4-tiled-64bpp-rotate-90
+kms_big_fb@4-tiled-8bpp-rotate-0
+kms_big_fb@4-tiled-8bpp-rotate-180
+kms_big_fb@4-tiled-8bpp-rotate-270
+kms_big_fb@4-tiled-8bpp-rotate-90
+kms_big_fb@4-tiled-addfb
+kms_big_fb@4-tiled-addfb-size-offset-overflow
+kms_big_fb@4-tiled-addfb-size-overflow
+kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0
+kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-async-flip
+kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip
+kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip
+kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180
+kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip
+kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip
+kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip
+kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0
+kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-async-flip
+kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip
+kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip
+kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180
+kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-async-flip
+kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip
+kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip
+kms_big_fb@linear-16bpp-rotate-180
+kms_big_fb@linear-16bpp-rotate-270
+kms_big_fb@linear-16bpp-rotate-90
+kms_big_fb@linear-32bpp-rotate-270
+kms_big_fb@linear-32bpp-rotate-90
+kms_big_fb@linear-64bpp-rotate-0
+kms_big_fb@linear-64bpp-rotate-180
+kms_big_fb@linear-64bpp-rotate-270
+kms_big_fb@linear-64bpp-rotate-90
+kms_big_fb@linear-8bpp-rotate-0
+kms_big_fb@linear-8bpp-rotate-180
+kms_big_fb@linear-8bpp-rotate-270
+kms_big_fb@linear-8bpp-rotate-90
+kms_big_fb@linear-addfb
+kms_big_fb@linear-max-hw-stride-32bpp-rotate-0
+kms_big_fb@linear-max-hw-stride-32bpp-rotate-180
+kms_big_fb@linear-max-hw-stride-64bpp-rotate-0
+kms_big_fb@linear-max-hw-stride-64bpp-rotate-180
+kms_big_fb@x-tiled-16bpp-rotate-0
+kms_big_fb@x-tiled-16bpp-rotate-270
+kms_big_fb@x-tiled-16bpp-rotate-90
+kms_big_fb@x-tiled-32bpp-rotate-270
+kms_big_fb@x-tiled-32bpp-rotate-90
+kms_big_fb@x-tiled-64bpp-rotate-0
+kms_big_fb@x-tiled-64bpp-rotate-180
+kms_big_fb@x-tiled-64bpp-rotate-270
+kms_big_fb@x-tiled-64bpp-rotate-90
+kms_big_fb@x-tiled-8bpp-rotate-0
+kms_big_fb@x-tiled-8bpp-rotate-180
+kms_big_fb@x-tiled-8bpp-rotate-270
+kms_big_fb@x-tiled-8bpp-rotate-90
+kms_big_fb@x-tiled-addfb
+kms_big_fb@x-tiled-addfb-size-offset-overflow
+kms_big_fb@x-tiled-addfb-size-overflow
+kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0
+kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-async-flip
+kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-hflip
+kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip
+kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180
+kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip
+kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip
+kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip
+kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0
+kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-async-flip
+kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip
+kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip
+kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180
+kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip
+kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip
+kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip
+kms_big_fb@yf-tiled-16bpp-rotate-180
+kms_big_fb@yf-tiled-16bpp-rotate-270
+kms_big_fb@yf-tiled-16bpp-rotate-90
+kms_big_fb@yf-tiled-64bpp-rotate-0
+kms_big_fb@yf-tiled-64bpp-rotate-180
+kms_big_fb@yf-tiled-64bpp-rotate-270
+kms_big_fb@yf-tiled-64bpp-rotate-90
+kms_big_fb@yf-tiled-8bpp-rotate-0
+kms_big_fb@yf-tiled-8bpp-rotate-180
+kms_big_fb@yf-tiled-8bpp-rotate-270
+kms_big_fb@yf-tiled-8bpp-rotate-90
+kms_big_fb@yf-tiled-addfb
+kms_big_fb@yf-tiled-addfb-size-offset-overflow
+kms_big_fb@yf-tiled-addfb-size-overflow
+kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0
+kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-async-flip
+kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip
+kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip
+kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180
+kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip
+kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip
+kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip
+kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0
+kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-async-flip
+kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip
+kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip
+kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180
+kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip
+kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip
+kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip
+kms_big_fb@y-tiled-16bpp-rotate-0
+kms_big_fb@y-tiled-16bpp-rotate-180
+kms_big_fb@y-tiled-16bpp-rotate-270
+kms_big_fb@y-tiled-16bpp-rotate-90
+kms_big_fb@y-tiled-64bpp-rotate-0
+kms_big_fb@y-tiled-64bpp-rotate-180
+kms_big_fb@y-tiled-64bpp-rotate-270
+kms_big_fb@y-tiled-64bpp-rotate-90
+kms_big_fb@y-tiled-8bpp-rotate-0
+kms_big_fb@y-tiled-8bpp-rotate-180
+kms_big_fb@y-tiled-8bpp-rotate-270
+kms_big_fb@y-tiled-8bpp-rotate-90
+kms_big_fb@y-tiled-addfb
+kms_big_fb@y-tiled-addfb-size-offset-overflow
+kms_big_fb@y-tiled-addfb-size-overflow
+kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0
+kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip
+kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip
+kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip
+kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180
+kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip
+kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip
+kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip
+kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0
+kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip
+kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip
+kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip
+kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180
+kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip
+kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip
+kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip
+kms_big_joiner@2x-modeset
+kms_big_joiner@basic
+kms_big_joiner@invalid-modeset
+kms_busy@basic
+kms_busy@basic-hang
+kms_busy@extended-pageflip-hang-oldfb
+kms_bw@linear-tiling-1-displays-1920x1080p
+kms_bw@linear-tiling-1-displays-2560x1440p
+kms_bw@linear-tiling-1-displays-3840x2160p
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-2560x1440p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_bw@linear-tiling-5-displays-1920x1080p
+kms_bw@linear-tiling-5-displays-2560x1440p
+kms_bw@linear-tiling-5-displays-3840x2160p
+kms_bw@linear-tiling-6-displays-1920x1080p
+kms_bw@linear-tiling-6-displays-2560x1440p
+kms_bw@linear-tiling-6-displays-3840x2160p
+kms_ccs@pipe-A-bad-aux-stride-yf_tiled_ccs
+kms_ccs@pipe-A-bad-aux-stride-y_tiled_ccs
+kms_ccs@pipe-A-bad-aux-stride-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-A-bad-aux-stride-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-A-bad-aux-stride-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-A-bad-pixel-format-yf_tiled_ccs
+kms_ccs@pipe-A-bad-pixel-format-y_tiled_ccs
+kms_ccs@pipe-A-bad-pixel-format-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-A-bad-pixel-format-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-A-bad-pixel-format-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-A-bad-rotation-90-yf_tiled_ccs
+kms_ccs@pipe-A-bad-rotation-90-y_tiled_ccs
+kms_ccs@pipe-A-bad-rotation-90-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-A-bad-rotation-90-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-A-bad-rotation-90-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-A-ccs-on-another-bo-yf_tiled_ccs
+kms_ccs@pipe-A-ccs-on-another-bo-y_tiled_ccs
+kms_ccs@pipe-A-ccs-on-another-bo-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-A-ccs-on-another-bo-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-A-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-A-crc-primary-basic-yf_tiled_ccs
+kms_ccs@pipe-A-crc-primary-basic-y_tiled_ccs
+kms_ccs@pipe-A-crc-primary-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-A-crc-primary-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-A-crc-primary-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-A-crc-primary-rotation-180-yf_tiled_ccs
+kms_ccs@pipe-A-crc-primary-rotation-180-y_tiled_ccs
+kms_ccs@pipe-A-crc-primary-rotation-180-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-A-crc-primary-rotation-180-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-A-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-A-crc-sprite-planes-basic-yf_tiled_ccs
+kms_ccs@pipe-A-crc-sprite-planes-basic-y_tiled_ccs
+kms_ccs@pipe-A-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-A-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-A-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-A-missing-ccs-buffer-yf_tiled_ccs
+kms_ccs@pipe-A-missing-ccs-buffer-y_tiled_ccs
+kms_ccs@pipe-A-missing-ccs-buffer-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-A-missing-ccs-buffer-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-A-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-A-random-ccs-data-yf_tiled_ccs
+kms_ccs@pipe-A-random-ccs-data-y_tiled_ccs
+kms_ccs@pipe-A-random-ccs-data-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-A-random-ccs-data-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-A-random-ccs-data-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-B-bad-aux-stride-yf_tiled_ccs
+kms_ccs@pipe-B-bad-aux-stride-y_tiled_ccs
+kms_ccs@pipe-B-bad-aux-stride-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-B-bad-aux-stride-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-B-bad-aux-stride-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-B-bad-pixel-format-yf_tiled_ccs
+kms_ccs@pipe-B-bad-pixel-format-y_tiled_ccs
+kms_ccs@pipe-B-bad-pixel-format-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-B-bad-pixel-format-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-B-bad-pixel-format-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-B-bad-rotation-90-yf_tiled_ccs
+kms_ccs@pipe-B-bad-rotation-90-y_tiled_ccs
+kms_ccs@pipe-B-bad-rotation-90-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-B-bad-rotation-90-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-B-bad-rotation-90-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-B-ccs-on-another-bo-yf_tiled_ccs
+kms_ccs@pipe-B-ccs-on-another-bo-y_tiled_ccs
+kms_ccs@pipe-B-ccs-on-another-bo-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-B-ccs-on-another-bo-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-B-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-B-crc-primary-basic-yf_tiled_ccs
+kms_ccs@pipe-B-crc-primary-basic-y_tiled_ccs
+kms_ccs@pipe-B-crc-primary-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-B-crc-primary-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-B-crc-primary-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-B-crc-primary-rotation-180-yf_tiled_ccs
+kms_ccs@pipe-B-crc-primary-rotation-180-y_tiled_ccs
+kms_ccs@pipe-B-crc-primary-rotation-180-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-B-crc-primary-rotation-180-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-B-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-B-crc-sprite-planes-basic-yf_tiled_ccs
+kms_ccs@pipe-B-crc-sprite-planes-basic-y_tiled_ccs
+kms_ccs@pipe-B-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-B-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-B-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-B-missing-ccs-buffer-yf_tiled_ccs
+kms_ccs@pipe-B-missing-ccs-buffer-y_tiled_ccs
+kms_ccs@pipe-B-missing-ccs-buffer-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-B-missing-ccs-buffer-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-B-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-B-random-ccs-data-yf_tiled_ccs
+kms_ccs@pipe-B-random-ccs-data-y_tiled_ccs
+kms_ccs@pipe-B-random-ccs-data-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-B-random-ccs-data-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-B-random-ccs-data-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-C-bad-aux-stride-yf_tiled_ccs
+kms_ccs@pipe-C-bad-aux-stride-y_tiled_ccs
+kms_ccs@pipe-C-bad-aux-stride-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-C-bad-aux-stride-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-C-bad-aux-stride-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-C-bad-pixel-format-yf_tiled_ccs
+kms_ccs@pipe-C-bad-pixel-format-y_tiled_ccs
+kms_ccs@pipe-C-bad-pixel-format-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-C-bad-pixel-format-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-C-bad-pixel-format-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-C-bad-rotation-90-yf_tiled_ccs
+kms_ccs@pipe-C-bad-rotation-90-y_tiled_ccs
+kms_ccs@pipe-C-bad-rotation-90-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-C-bad-rotation-90-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-C-bad-rotation-90-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-C-ccs-on-another-bo-yf_tiled_ccs
+kms_ccs@pipe-C-ccs-on-another-bo-y_tiled_ccs
+kms_ccs@pipe-C-ccs-on-another-bo-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-C-ccs-on-another-bo-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-C-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-C-crc-primary-basic-yf_tiled_ccs
+kms_ccs@pipe-C-crc-primary-basic-y_tiled_ccs
+kms_ccs@pipe-C-crc-primary-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-C-crc-primary-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-C-crc-primary-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-C-crc-primary-rotation-180-yf_tiled_ccs
+kms_ccs@pipe-C-crc-primary-rotation-180-y_tiled_ccs
+kms_ccs@pipe-C-crc-primary-rotation-180-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-C-crc-primary-rotation-180-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-C-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-C-crc-sprite-planes-basic-yf_tiled_ccs
+kms_ccs@pipe-C-crc-sprite-planes-basic-y_tiled_ccs
+kms_ccs@pipe-C-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-C-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-C-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-C-missing-ccs-buffer-yf_tiled_ccs
+kms_ccs@pipe-C-missing-ccs-buffer-y_tiled_ccs
+kms_ccs@pipe-C-missing-ccs-buffer-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-C-missing-ccs-buffer-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-C-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-C-random-ccs-data-yf_tiled_ccs
+kms_ccs@pipe-C-random-ccs-data-y_tiled_ccs
+kms_ccs@pipe-C-random-ccs-data-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-C-random-ccs-data-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-C-random-ccs-data-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-D-bad-aux-stride-yf_tiled_ccs
+kms_ccs@pipe-D-bad-aux-stride-y_tiled_ccs
+kms_ccs@pipe-D-bad-aux-stride-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-D-bad-aux-stride-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-D-bad-aux-stride-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-D-bad-pixel-format-yf_tiled_ccs
+kms_ccs@pipe-D-bad-pixel-format-y_tiled_ccs
+kms_ccs@pipe-D-bad-pixel-format-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-D-bad-pixel-format-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-D-bad-pixel-format-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-D-bad-rotation-90-yf_tiled_ccs
+kms_ccs@pipe-D-bad-rotation-90-y_tiled_ccs
+kms_ccs@pipe-D-bad-rotation-90-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-D-bad-rotation-90-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-D-bad-rotation-90-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-D-ccs-on-another-bo-yf_tiled_ccs
+kms_ccs@pipe-D-ccs-on-another-bo-y_tiled_ccs
+kms_ccs@pipe-D-ccs-on-another-bo-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-D-ccs-on-another-bo-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-D-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-D-crc-primary-basic-yf_tiled_ccs
+kms_ccs@pipe-D-crc-primary-basic-y_tiled_ccs
+kms_ccs@pipe-D-crc-primary-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-D-crc-primary-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-D-crc-primary-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-D-crc-primary-rotation-180-yf_tiled_ccs
+kms_ccs@pipe-D-crc-primary-rotation-180-y_tiled_ccs
+kms_ccs@pipe-D-crc-primary-rotation-180-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-D-crc-primary-rotation-180-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-D-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-D-crc-sprite-planes-basic-yf_tiled_ccs
+kms_ccs@pipe-D-crc-sprite-planes-basic-y_tiled_ccs
+kms_ccs@pipe-D-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-D-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-D-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-D-missing-ccs-buffer-yf_tiled_ccs
+kms_ccs@pipe-D-missing-ccs-buffer-y_tiled_ccs
+kms_ccs@pipe-D-missing-ccs-buffer-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-D-missing-ccs-buffer-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-D-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-D-random-ccs-data-yf_tiled_ccs
+kms_ccs@pipe-D-random-ccs-data-y_tiled_ccs
+kms_ccs@pipe-D-random-ccs-data-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-D-random-ccs-data-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-D-random-ccs-data-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-E-bad-aux-stride-yf_tiled_ccs
+kms_ccs@pipe-E-bad-aux-stride-y_tiled_ccs
+kms_ccs@pipe-E-bad-aux-stride-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-E-bad-aux-stride-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-E-bad-aux-stride-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-E-bad-pixel-format-yf_tiled_ccs
+kms_ccs@pipe-E-bad-pixel-format-y_tiled_ccs
+kms_ccs@pipe-E-bad-pixel-format-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-E-bad-pixel-format-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-E-bad-pixel-format-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-E-bad-rotation-90-yf_tiled_ccs
+kms_ccs@pipe-E-bad-rotation-90-y_tiled_ccs
+kms_ccs@pipe-E-bad-rotation-90-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-E-bad-rotation-90-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-E-bad-rotation-90-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-E-ccs-on-another-bo-yf_tiled_ccs
+kms_ccs@pipe-E-ccs-on-another-bo-y_tiled_ccs
+kms_ccs@pipe-E-ccs-on-another-bo-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-E-ccs-on-another-bo-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-E-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-E-crc-primary-basic-yf_tiled_ccs
+kms_ccs@pipe-E-crc-primary-basic-y_tiled_ccs
+kms_ccs@pipe-E-crc-primary-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-E-crc-primary-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-E-crc-primary-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-E-crc-primary-rotation-180-yf_tiled_ccs
+kms_ccs@pipe-E-crc-primary-rotation-180-y_tiled_ccs
+kms_ccs@pipe-E-crc-primary-rotation-180-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-E-crc-primary-rotation-180-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-E-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-E-crc-sprite-planes-basic-yf_tiled_ccs
+kms_ccs@pipe-E-crc-sprite-planes-basic-y_tiled_ccs
+kms_ccs@pipe-E-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-E-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-E-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-E-missing-ccs-buffer-yf_tiled_ccs
+kms_ccs@pipe-E-missing-ccs-buffer-y_tiled_ccs
+kms_ccs@pipe-E-missing-ccs-buffer-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-E-missing-ccs-buffer-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-E-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-E-random-ccs-data-yf_tiled_ccs
+kms_ccs@pipe-E-random-ccs-data-y_tiled_ccs
+kms_ccs@pipe-E-random-ccs-data-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-E-random-ccs-data-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-E-random-ccs-data-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-F-bad-aux-stride-yf_tiled_ccs
+kms_ccs@pipe-F-bad-aux-stride-y_tiled_ccs
+kms_ccs@pipe-F-bad-aux-stride-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-F-bad-aux-stride-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-F-bad-aux-stride-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-F-bad-pixel-format-yf_tiled_ccs
+kms_ccs@pipe-F-bad-pixel-format-y_tiled_ccs
+kms_ccs@pipe-F-bad-pixel-format-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-F-bad-pixel-format-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-F-bad-pixel-format-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-F-bad-rotation-90-yf_tiled_ccs
+kms_ccs@pipe-F-bad-rotation-90-y_tiled_ccs
+kms_ccs@pipe-F-bad-rotation-90-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-F-bad-rotation-90-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-F-bad-rotation-90-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-F-ccs-on-another-bo-yf_tiled_ccs
+kms_ccs@pipe-F-ccs-on-another-bo-y_tiled_ccs
+kms_ccs@pipe-F-ccs-on-another-bo-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-F-ccs-on-another-bo-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-F-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-F-crc-primary-basic-yf_tiled_ccs
+kms_ccs@pipe-F-crc-primary-basic-y_tiled_ccs
+kms_ccs@pipe-F-crc-primary-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-F-crc-primary-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-F-crc-primary-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-F-crc-primary-rotation-180-yf_tiled_ccs
+kms_ccs@pipe-F-crc-primary-rotation-180-y_tiled_ccs
+kms_ccs@pipe-F-crc-primary-rotation-180-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-F-crc-primary-rotation-180-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-F-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-F-crc-sprite-planes-basic-yf_tiled_ccs
+kms_ccs@pipe-F-crc-sprite-planes-basic-y_tiled_ccs
+kms_ccs@pipe-F-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-F-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-F-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-F-missing-ccs-buffer-yf_tiled_ccs
+kms_ccs@pipe-F-missing-ccs-buffer-y_tiled_ccs
+kms_ccs@pipe-F-missing-ccs-buffer-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-F-missing-ccs-buffer-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-F-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc
+kms_ccs@pipe-F-random-ccs-data-yf_tiled_ccs
+kms_ccs@pipe-F-random-ccs-data-y_tiled_ccs
+kms_ccs@pipe-F-random-ccs-data-y_tiled_gen12_mc_ccs
+kms_ccs@pipe-F-random-ccs-data-y_tiled_gen12_rc_ccs
+kms_ccs@pipe-F-random-ccs-data-y_tiled_gen12_rc_ccs_cc
+kms_cdclk@mode-transition
+kms_cdclk@plane-scaling
+kms_color@pipe-A-ctm-0-25
+kms_color@pipe-A-ctm-0-5
+kms_color@pipe-A-ctm-0-75
+kms_color@pipe-A-ctm-blue-to-red
+kms_color@pipe-A-ctm-green-to-red
+kms_color@pipe-A-ctm-max
+kms_color@pipe-A-ctm-negative
+kms_color@pipe-A-ctm-red-to-blue
+kms_color@pipe-A-deep-color
+kms_color@pipe-A-degamma
+kms_color@pipe-A-gamma
+kms_color@pipe-A-invalid-ctm-matrix-sizes
+kms_color@pipe-A-invalid-degamma-lut-sizes
+kms_color@pipe-A-invalid-gamma-lut-sizes
+kms_color@pipe-A-legacy-gamma
+kms_color@pipe-A-legacy-gamma-reset
+kms_color@pipe-B-ctm-0-25
+kms_color@pipe-B-ctm-0-5
+kms_color@pipe-B-ctm-0-75
+kms_color@pipe-B-ctm-blue-to-red
+kms_color@pipe-B-ctm-green-to-red
+kms_color@pipe-B-ctm-max
+kms_color@pipe-B-ctm-negative
+kms_color@pipe-B-ctm-red-to-blue
+kms_color@pipe-B-deep-color
+kms_color@pipe-B-degamma
+kms_color@pipe-B-gamma
+kms_color@pipe-B-invalid-ctm-matrix-sizes
+kms_color@pipe-B-invalid-degamma-lut-sizes
+kms_color@pipe-B-invalid-gamma-lut-sizes
+kms_color@pipe-B-legacy-gamma
+kms_color@pipe-B-legacy-gamma-reset
+kms_color@pipe-C-ctm-0-25
+kms_color@pipe-C-ctm-0-5
+kms_color@pipe-C-ctm-0-75
+kms_color@pipe-C-ctm-blue-to-red
+kms_color@pipe-C-ctm-green-to-red
+kms_color@pipe-C-ctm-max
+kms_color@pipe-C-ctm-negative
+kms_color@pipe-C-ctm-red-to-blue
+kms_color@pipe-C-deep-color
+kms_color@pipe-C-degamma
+kms_color@pipe-C-gamma
+kms_color@pipe-C-invalid-ctm-matrix-sizes
+kms_color@pipe-C-invalid-degamma-lut-sizes
+kms_color@pipe-C-invalid-gamma-lut-sizes
+kms_color@pipe-C-legacy-gamma
+kms_color@pipe-C-legacy-gamma-reset
+kms_color@pipe-D-ctm-0-25
+kms_color@pipe-D-ctm-0-5
+kms_color@pipe-D-ctm-0-75
+kms_color@pipe-D-ctm-blue-to-red
+kms_color@pipe-D-ctm-green-to-red
+kms_color@pipe-D-ctm-max
+kms_color@pipe-D-ctm-negative
+kms_color@pipe-D-ctm-red-to-blue
+kms_color@pipe-D-deep-color
+kms_color@pipe-D-degamma
+kms_color@pipe-D-gamma
+kms_color@pipe-D-invalid-ctm-matrix-sizes
+kms_color@pipe-D-invalid-degamma-lut-sizes
+kms_color@pipe-D-invalid-gamma-lut-sizes
+kms_color@pipe-D-legacy-gamma
+kms_color@pipe-D-legacy-gamma-reset
+kms_color@pipe-E-ctm-0-25
+kms_color@pipe-E-ctm-0-5
+kms_color@pipe-E-ctm-0-75
+kms_color@pipe-E-ctm-blue-to-red
+kms_color@pipe-E-ctm-green-to-red
+kms_color@pipe-E-ctm-max
+kms_color@pipe-E-ctm-negative
+kms_color@pipe-E-ctm-red-to-blue
+kms_color@pipe-E-deep-color
+kms_color@pipe-E-degamma
+kms_color@pipe-E-gamma
+kms_color@pipe-E-invalid-ctm-matrix-sizes
+kms_color@pipe-E-invalid-degamma-lut-sizes
+kms_color@pipe-E-invalid-gamma-lut-sizes
+kms_color@pipe-E-legacy-gamma
+kms_color@pipe-E-legacy-gamma-reset
+kms_color@pipe-F-ctm-0-25
+kms_color@pipe-F-ctm-0-5
+kms_color@pipe-F-ctm-0-75
+kms_color@pipe-F-ctm-blue-to-red
+kms_color@pipe-F-ctm-green-to-red
+kms_color@pipe-F-ctm-max
+kms_color@pipe-F-ctm-negative
+kms_color@pipe-F-ctm-red-to-blue
+kms_color@pipe-F-deep-color
+kms_color@pipe-F-degamma
+kms_color@pipe-F-gamma
+kms_color@pipe-F-invalid-ctm-matrix-sizes
+kms_color@pipe-F-invalid-degamma-lut-sizes
+kms_color@pipe-F-invalid-gamma-lut-sizes
+kms_color@pipe-F-legacy-gamma
+kms_color@pipe-F-legacy-gamma-reset
+kms_concurrent@pipe-A
+kms_concurrent@pipe-B
+kms_concurrent@pipe-C
+kms_concurrent@pipe-D
+kms_concurrent@pipe-E
+kms_concurrent@pipe-F
+kms_content_protection@atomic
+kms_content_protection@atomic-dpms
+kms_content_protection@content_type_change
+kms_content_protection@dp-mst-lic-type-0
+kms_content_protection@dp-mst-lic-type-1
+kms_content_protection@dp-mst-type-0
+kms_content_protection@dp-mst-type-1
+kms_content_protection@legacy
+kms_content_protection@LIC
+kms_content_protection@mei_interface
+kms_content_protection@srm
+kms_content_protection@type1
+kms_content_protection@uevent
+kms_cursor_crc@pipe-A-cursor-128x128-offscreen
+kms_cursor_crc@pipe-A-cursor-128x128-onscreen
+kms_cursor_crc@pipe-A-cursor-128x128-rapid-movement
+kms_cursor_crc@pipe-A-cursor-128x128-sliding
+kms_cursor_crc@pipe-A-cursor-128x42-offscreen
+kms_cursor_crc@pipe-A-cursor-128x42-onscreen
+kms_cursor_crc@pipe-A-cursor-128x42-random
+kms_cursor_crc@pipe-A-cursor-128x42-rapid-movement
+kms_cursor_crc@pipe-A-cursor-128x42-sliding
+kms_cursor_crc@pipe-A-cursor-256x256-offscreen
+kms_cursor_crc@pipe-A-cursor-256x256-onscreen
+kms_cursor_crc@pipe-A-cursor-256x256-rapid-movement
+kms_cursor_crc@pipe-A-cursor-256x256-sliding
+kms_cursor_crc@pipe-A-cursor-256x85-offscreen
+kms_cursor_crc@pipe-A-cursor-256x85-onscreen
+kms_cursor_crc@pipe-A-cursor-256x85-random
+kms_cursor_crc@pipe-A-cursor-256x85-rapid-movement
+kms_cursor_crc@pipe-A-cursor-256x85-sliding
+kms_cursor_crc@pipe-A-cursor-32x10-offscreen
+kms_cursor_crc@pipe-A-cursor-32x10-onscreen
+kms_cursor_crc@pipe-A-cursor-32x10-random
+kms_cursor_crc@pipe-A-cursor-32x10-rapid-movement
+kms_cursor_crc@pipe-A-cursor-32x10-sliding
+kms_cursor_crc@pipe-A-cursor-32x32-offscreen
+kms_cursor_crc@pipe-A-cursor-32x32-onscreen
+kms_cursor_crc@pipe-A-cursor-32x32-random
+kms_cursor_crc@pipe-A-cursor-32x32-rapid-movement
+kms_cursor_crc@pipe-A-cursor-32x32-sliding
+kms_cursor_crc@pipe-A-cursor-512x170-offscreen
+kms_cursor_crc@pipe-A-cursor-512x170-onscreen
+kms_cursor_crc@pipe-A-cursor-512x170-random
+kms_cursor_crc@pipe-A-cursor-512x170-rapid-movement
+kms_cursor_crc@pipe-A-cursor-512x170-sliding
+kms_cursor_crc@pipe-A-cursor-512x512-offscreen
+kms_cursor_crc@pipe-A-cursor-512x512-onscreen
+kms_cursor_crc@pipe-A-cursor-512x512-random
+kms_cursor_crc@pipe-A-cursor-512x512-rapid-movement
+kms_cursor_crc@pipe-A-cursor-512x512-sliding
+kms_cursor_crc@pipe-A-cursor-64x21-offscreen
+kms_cursor_crc@pipe-A-cursor-64x21-onscreen
+kms_cursor_crc@pipe-A-cursor-64x21-random
+kms_cursor_crc@pipe-A-cursor-64x21-rapid-movement
+kms_cursor_crc@pipe-A-cursor-64x21-sliding
+kms_cursor_crc@pipe-A-cursor-64x64-offscreen
+kms_cursor_crc@pipe-A-cursor-64x64-onscreen
+kms_cursor_crc@pipe-A-cursor-64x64-random
+kms_cursor_crc@pipe-A-cursor-64x64-rapid-movement
+kms_cursor_crc@pipe-A-cursor-64x64-sliding
+kms_cursor_crc@pipe-A-cursor-alpha-opaque
+kms_cursor_crc@pipe-A-cursor-alpha-transparent
+kms_cursor_crc@pipe-A-cursor-dpms
+kms_cursor_crc@pipe-A-cursor-max-size-offscreen
+kms_cursor_crc@pipe-A-cursor-max-size-onscreen
+kms_cursor_crc@pipe-A-cursor-max-size-random
+kms_cursor_crc@pipe-A-cursor-max-size-rapid-movement
+kms_cursor_crc@pipe-A-cursor-max-size-sliding
+kms_cursor_crc@pipe-A-cursor-size-change
+kms_cursor_crc@pipe-B-cursor-128x128-offscreen
+kms_cursor_crc@pipe-B-cursor-128x128-onscreen
+kms_cursor_crc@pipe-B-cursor-128x128-random
+kms_cursor_crc@pipe-B-cursor-128x128-rapid-movement
+kms_cursor_crc@pipe-B-cursor-128x128-sliding
+kms_cursor_crc@pipe-B-cursor-128x42-offscreen
+kms_cursor_crc@pipe-B-cursor-128x42-onscreen
+kms_cursor_crc@pipe-B-cursor-128x42-rapid-movement
+kms_cursor_crc@pipe-B-cursor-128x42-sliding
+kms_cursor_crc@pipe-B-cursor-256x256-offscreen
+kms_cursor_crc@pipe-B-cursor-256x256-onscreen
+kms_cursor_crc@pipe-B-cursor-256x256-random
+kms_cursor_crc@pipe-B-cursor-256x256-rapid-movement
+kms_cursor_crc@pipe-B-cursor-256x256-sliding
+kms_cursor_crc@pipe-B-cursor-256x85-offscreen
+kms_cursor_crc@pipe-B-cursor-256x85-onscreen
+kms_cursor_crc@pipe-B-cursor-256x85-random
+kms_cursor_crc@pipe-B-cursor-256x85-rapid-movement
+kms_cursor_crc@pipe-B-cursor-256x85-sliding
+kms_cursor_crc@pipe-B-cursor-32x10-offscreen
+kms_cursor_crc@pipe-B-cursor-32x10-onscreen
+kms_cursor_crc@pipe-B-cursor-32x10-random
+kms_cursor_crc@pipe-B-cursor-32x10-rapid-movement
+kms_cursor_crc@pipe-B-cursor-32x10-sliding
+kms_cursor_crc@pipe-B-cursor-32x32-offscreen
+kms_cursor_crc@pipe-B-cursor-32x32-onscreen
+kms_cursor_crc@pipe-B-cursor-32x32-random
+kms_cursor_crc@pipe-B-cursor-32x32-rapid-movement
+kms_cursor_crc@pipe-B-cursor-32x32-sliding
+kms_cursor_crc@pipe-B-cursor-512x170-offscreen
+kms_cursor_crc@pipe-B-cursor-512x170-onscreen
+kms_cursor_crc@pipe-B-cursor-512x170-random
+kms_cursor_crc@pipe-B-cursor-512x170-rapid-movement
+kms_cursor_crc@pipe-B-cursor-512x170-sliding
+kms_cursor_crc@pipe-B-cursor-512x512-offscreen
+kms_cursor_crc@pipe-B-cursor-512x512-onscreen
+kms_cursor_crc@pipe-B-cursor-512x512-random
+kms_cursor_crc@pipe-B-cursor-512x512-rapid-movement
+kms_cursor_crc@pipe-B-cursor-512x512-sliding
+kms_cursor_crc@pipe-B-cursor-64x21-offscreen
+kms_cursor_crc@pipe-B-cursor-64x21-onscreen
+kms_cursor_crc@pipe-B-cursor-64x21-random
+kms_cursor_crc@pipe-B-cursor-64x21-rapid-movement
+kms_cursor_crc@pipe-B-cursor-64x64-offscreen
+kms_cursor_crc@pipe-B-cursor-64x64-onscreen
+kms_cursor_crc@pipe-B-cursor-64x64-random
+kms_cursor_crc@pipe-B-cursor-64x64-rapid-movement
+kms_cursor_crc@pipe-B-cursor-64x64-sliding
+kms_cursor_crc@pipe-B-cursor-alpha-opaque
+kms_cursor_crc@pipe-B-cursor-alpha-transparent
+kms_cursor_crc@pipe-B-cursor-dpms
+kms_cursor_crc@pipe-B-cursor-max-size-offscreen
+kms_cursor_crc@pipe-B-cursor-max-size-onscreen
+kms_cursor_crc@pipe-B-cursor-max-size-random
+kms_cursor_crc@pipe-B-cursor-max-size-rapid-movement
+kms_cursor_crc@pipe-B-cursor-max-size-sliding
+kms_cursor_crc@pipe-B-cursor-size-change
+kms_cursor_crc@pipe-C-cursor-128x128-offscreen
+kms_cursor_crc@pipe-C-cursor-128x128-onscreen
+kms_cursor_crc@pipe-C-cursor-128x128-random
+kms_cursor_crc@pipe-C-cursor-128x128-rapid-movement
+kms_cursor_crc@pipe-C-cursor-128x128-sliding
+kms_cursor_crc@pipe-C-cursor-128x42-offscreen
+kms_cursor_crc@pipe-C-cursor-128x42-onscreen
+kms_cursor_crc@pipe-C-cursor-128x42-random
+kms_cursor_crc@pipe-C-cursor-128x42-rapid-movement
+kms_cursor_crc@pipe-C-cursor-128x42-sliding
+kms_cursor_crc@pipe-C-cursor-256x256-offscreen
+kms_cursor_crc@pipe-C-cursor-256x256-onscreen
+kms_cursor_crc@pipe-C-cursor-256x256-random
+kms_cursor_crc@pipe-C-cursor-256x256-rapid-movement
+kms_cursor_crc@pipe-C-cursor-256x256-sliding
+kms_cursor_crc@pipe-C-cursor-256x85-offscreen
+kms_cursor_crc@pipe-C-cursor-256x85-onscreen
+kms_cursor_crc@pipe-C-cursor-256x85-random
+kms_cursor_crc@pipe-C-cursor-256x85-rapid-movement
+kms_cursor_crc@pipe-C-cursor-256x85-sliding
+kms_cursor_crc@pipe-C-cursor-32x10-offscreen
+kms_cursor_crc@pipe-C-cursor-32x10-onscreen
+kms_cursor_crc@pipe-C-cursor-32x10-random
+kms_cursor_crc@pipe-C-cursor-32x10-rapid-movement
+kms_cursor_crc@pipe-C-cursor-32x10-sliding
+kms_cursor_crc@pipe-C-cursor-32x32-offscreen
+kms_cursor_crc@pipe-C-cursor-32x32-onscreen
+kms_cursor_crc@pipe-C-cursor-32x32-random
+kms_cursor_crc@pipe-C-cursor-32x32-rapid-movement
+kms_cursor_crc@pipe-C-cursor-32x32-sliding
+kms_cursor_crc@pipe-C-cursor-512x170-offscreen
+kms_cursor_crc@pipe-C-cursor-512x170-onscreen
+kms_cursor_crc@pipe-C-cursor-512x170-random
+kms_cursor_crc@pipe-C-cursor-512x170-rapid-movement
+kms_cursor_crc@pipe-C-cursor-512x170-sliding
+kms_cursor_crc@pipe-C-cursor-512x512-offscreen
+kms_cursor_crc@pipe-C-cursor-512x512-onscreen
+kms_cursor_crc@pipe-C-cursor-512x512-random
+kms_cursor_crc@pipe-C-cursor-512x512-rapid-movement
+kms_cursor_crc@pipe-C-cursor-512x512-sliding
+kms_cursor_crc@pipe-C-cursor-64x21-offscreen
+kms_cursor_crc@pipe-C-cursor-64x21-onscreen
+kms_cursor_crc@pipe-C-cursor-64x21-random
+kms_cursor_crc@pipe-C-cursor-64x21-rapid-movement
+kms_cursor_crc@pipe-C-cursor-64x21-sliding
+kms_cursor_crc@pipe-C-cursor-64x64-offscreen
+kms_cursor_crc@pipe-C-cursor-64x64-onscreen
+kms_cursor_crc@pipe-C-cursor-64x64-rapid-movement
+kms_cursor_crc@pipe-C-cursor-64x64-sliding
+kms_cursor_crc@pipe-C-cursor-alpha-opaque
+kms_cursor_crc@pipe-C-cursor-alpha-transparent
+kms_cursor_crc@pipe-C-cursor-dpms
+kms_cursor_crc@pipe-C-cursor-max-size-offscreen
+kms_cursor_crc@pipe-C-cursor-max-size-onscreen
+kms_cursor_crc@pipe-C-cursor-max-size-random
+kms_cursor_crc@pipe-C-cursor-max-size-rapid-movement
+kms_cursor_crc@pipe-C-cursor-max-size-sliding
+kms_cursor_crc@pipe-C-cursor-size-change
+kms_cursor_crc@pipe-D-cursor-128x128-offscreen
+kms_cursor_crc@pipe-D-cursor-128x128-onscreen
+kms_cursor_crc@pipe-D-cursor-128x128-random
+kms_cursor_crc@pipe-D-cursor-128x128-rapid-movement
+kms_cursor_crc@pipe-D-cursor-128x128-sliding
+kms_cursor_crc@pipe-D-cursor-128x42-offscreen
+kms_cursor_crc@pipe-D-cursor-128x42-onscreen
+kms_cursor_crc@pipe-D-cursor-128x42-random
+kms_cursor_crc@pipe-D-cursor-128x42-rapid-movement
+kms_cursor_crc@pipe-D-cursor-128x42-sliding
+kms_cursor_crc@pipe-D-cursor-256x256-offscreen
+kms_cursor_crc@pipe-D-cursor-256x256-onscreen
+kms_cursor_crc@pipe-D-cursor-256x256-random
+kms_cursor_crc@pipe-D-cursor-256x256-rapid-movement
+kms_cursor_crc@pipe-D-cursor-256x256-sliding
+kms_cursor_crc@pipe-D-cursor-256x85-offscreen
+kms_cursor_crc@pipe-D-cursor-256x85-onscreen
+kms_cursor_crc@pipe-D-cursor-256x85-random
+kms_cursor_crc@pipe-D-cursor-256x85-rapid-movement
+kms_cursor_crc@pipe-D-cursor-256x85-sliding
+kms_cursor_crc@pipe-D-cursor-32x10-offscreen
+kms_cursor_crc@pipe-D-cursor-32x10-onscreen
+kms_cursor_crc@pipe-D-cursor-32x10-random
+kms_cursor_crc@pipe-D-cursor-32x10-rapid-movement
+kms_cursor_crc@pipe-D-cursor-32x10-sliding
+kms_cursor_crc@pipe-D-cursor-32x32-offscreen
+kms_cursor_crc@pipe-D-cursor-32x32-onscreen
+kms_cursor_crc@pipe-D-cursor-32x32-random
+kms_cursor_crc@pipe-D-cursor-32x32-rapid-movement
+kms_cursor_crc@pipe-D-cursor-32x32-sliding
+kms_cursor_crc@pipe-D-cursor-512x170-offscreen
+kms_cursor_crc@pipe-D-cursor-512x170-onscreen
+kms_cursor_crc@pipe-D-cursor-512x170-random
+kms_cursor_crc@pipe-D-cursor-512x170-rapid-movement
+kms_cursor_crc@pipe-D-cursor-512x170-sliding
+kms_cursor_crc@pipe-D-cursor-512x512-offscreen
+kms_cursor_crc@pipe-D-cursor-512x512-onscreen
+kms_cursor_crc@pipe-D-cursor-512x512-random
+kms_cursor_crc@pipe-D-cursor-512x512-rapid-movement
+kms_cursor_crc@pipe-D-cursor-512x512-sliding
+kms_cursor_crc@pipe-D-cursor-64x21-offscreen
+kms_cursor_crc@pipe-D-cursor-64x21-onscreen
+kms_cursor_crc@pipe-D-cursor-64x21-random
+kms_cursor_crc@pipe-D-cursor-64x21-rapid-movement
+kms_cursor_crc@pipe-D-cursor-64x21-sliding
+kms_cursor_crc@pipe-D-cursor-64x64-offscreen
+kms_cursor_crc@pipe-D-cursor-64x64-onscreen
+kms_cursor_crc@pipe-D-cursor-64x64-random
+kms_cursor_crc@pipe-D-cursor-64x64-rapid-movement
+kms_cursor_crc@pipe-D-cursor-64x64-sliding
+kms_cursor_crc@pipe-D-cursor-alpha-opaque
+kms_cursor_crc@pipe-D-cursor-alpha-transparent
+kms_cursor_crc@pipe-D-cursor-dpms
+kms_cursor_crc@pipe-D-cursor-max-size-offscreen
+kms_cursor_crc@pipe-D-cursor-max-size-onscreen
+kms_cursor_crc@pipe-D-cursor-max-size-random
+kms_cursor_crc@pipe-D-cursor-max-size-rapid-movement
+kms_cursor_crc@pipe-D-cursor-max-size-sliding
+kms_cursor_crc@pipe-D-cursor-size-change
+kms_cursor_crc@pipe-D-cursor-suspend
+kms_cursor_crc@pipe-E-cursor-128x128-offscreen
+kms_cursor_crc@pipe-E-cursor-128x128-onscreen
+kms_cursor_crc@pipe-E-cursor-128x128-random
+kms_cursor_crc@pipe-E-cursor-128x128-rapid-movement
+kms_cursor_crc@pipe-E-cursor-128x128-sliding
+kms_cursor_crc@pipe-E-cursor-128x42-offscreen
+kms_cursor_crc@pipe-E-cursor-128x42-onscreen
+kms_cursor_crc@pipe-E-cursor-128x42-random
+kms_cursor_crc@pipe-E-cursor-128x42-rapid-movement
+kms_cursor_crc@pipe-E-cursor-128x42-sliding
+kms_cursor_crc@pipe-E-cursor-256x256-offscreen
+kms_cursor_crc@pipe-E-cursor-256x256-onscreen
+kms_cursor_crc@pipe-E-cursor-256x256-random
+kms_cursor_crc@pipe-E-cursor-256x256-rapid-movement
+kms_cursor_crc@pipe-E-cursor-256x256-sliding
+kms_cursor_crc@pipe-E-cursor-256x85-offscreen
+kms_cursor_crc@pipe-E-cursor-256x85-onscreen
+kms_cursor_crc@pipe-E-cursor-256x85-random
+kms_cursor_crc@pipe-E-cursor-256x85-rapid-movement
+kms_cursor_crc@pipe-E-cursor-256x85-sliding
+kms_cursor_crc@pipe-E-cursor-32x10-offscreen
+kms_cursor_crc@pipe-E-cursor-32x10-onscreen
+kms_cursor_crc@pipe-E-cursor-32x10-random
+kms_cursor_crc@pipe-E-cursor-32x10-rapid-movement
+kms_cursor_crc@pipe-E-cursor-32x10-sliding
+kms_cursor_crc@pipe-E-cursor-32x32-offscreen
+kms_cursor_crc@pipe-E-cursor-32x32-onscreen
+kms_cursor_crc@pipe-E-cursor-32x32-random
+kms_cursor_crc@pipe-E-cursor-32x32-rapid-movement
+kms_cursor_crc@pipe-E-cursor-32x32-sliding
+kms_cursor_crc@pipe-E-cursor-512x170-offscreen
+kms_cursor_crc@pipe-E-cursor-512x170-onscreen
+kms_cursor_crc@pipe-E-cursor-512x170-random
+kms_cursor_crc@pipe-E-cursor-512x170-rapid-movement
+kms_cursor_crc@pipe-E-cursor-512x170-sliding
+kms_cursor_crc@pipe-E-cursor-512x512-offscreen
+kms_cursor_crc@pipe-E-cursor-512x512-onscreen
+kms_cursor_crc@pipe-E-cursor-512x512-random
+kms_cursor_crc@pipe-E-cursor-512x512-rapid-movement
+kms_cursor_crc@pipe-E-cursor-512x512-sliding
+kms_cursor_crc@pipe-E-cursor-64x21-offscreen
+kms_cursor_crc@pipe-E-cursor-64x21-onscreen
+kms_cursor_crc@pipe-E-cursor-64x21-random
+kms_cursor_crc@pipe-E-cursor-64x21-rapid-movement
+kms_cursor_crc@pipe-E-cursor-64x21-sliding
+kms_cursor_crc@pipe-E-cursor-64x64-offscreen
+kms_cursor_crc@pipe-E-cursor-64x64-onscreen
+kms_cursor_crc@pipe-E-cursor-64x64-random
+kms_cursor_crc@pipe-E-cursor-64x64-rapid-movement
+kms_cursor_crc@pipe-E-cursor-64x64-sliding
+kms_cursor_crc@pipe-E-cursor-alpha-opaque
+kms_cursor_crc@pipe-E-cursor-alpha-transparent
+kms_cursor_crc@pipe-E-cursor-dpms
+kms_cursor_crc@pipe-E-cursor-max-size-offscreen
+kms_cursor_crc@pipe-E-cursor-max-size-onscreen
+kms_cursor_crc@pipe-E-cursor-max-size-random
+kms_cursor_crc@pipe-E-cursor-max-size-rapid-movement
+kms_cursor_crc@pipe-E-cursor-max-size-sliding
+kms_cursor_crc@pipe-E-cursor-size-change
+kms_cursor_crc@pipe-E-cursor-suspend
+kms_cursor_crc@pipe-F-cursor-128x128-offscreen
+kms_cursor_crc@pipe-F-cursor-128x128-onscreen
+kms_cursor_crc@pipe-F-cursor-128x128-random
+kms_cursor_crc@pipe-F-cursor-128x128-rapid-movement
+kms_cursor_crc@pipe-F-cursor-128x128-sliding
+kms_cursor_crc@pipe-F-cursor-128x42-offscreen
+kms_cursor_crc@pipe-F-cursor-128x42-onscreen
+kms_cursor_crc@pipe-F-cursor-128x42-random
+kms_cursor_crc@pipe-F-cursor-128x42-rapid-movement
+kms_cursor_crc@pipe-F-cursor-128x42-sliding
+kms_cursor_crc@pipe-F-cursor-256x256-offscreen
+kms_cursor_crc@pipe-F-cursor-256x256-onscreen
+kms_cursor_crc@pipe-F-cursor-256x256-random
+kms_cursor_crc@pipe-F-cursor-256x256-rapid-movement
+kms_cursor_crc@pipe-F-cursor-256x256-sliding
+kms_cursor_crc@pipe-F-cursor-256x85-offscreen
+kms_cursor_crc@pipe-F-cursor-256x85-onscreen
+kms_cursor_crc@pipe-F-cursor-256x85-random
+kms_cursor_crc@pipe-F-cursor-256x85-rapid-movement
+kms_cursor_crc@pipe-F-cursor-256x85-sliding
+kms_cursor_crc@pipe-F-cursor-32x10-offscreen
+kms_cursor_crc@pipe-F-cursor-32x10-onscreen
+kms_cursor_crc@pipe-F-cursor-32x10-random
+kms_cursor_crc@pipe-F-cursor-32x10-rapid-movement
+kms_cursor_crc@pipe-F-cursor-32x10-sliding
+kms_cursor_crc@pipe-F-cursor-32x32-offscreen
+kms_cursor_crc@pipe-F-cursor-32x32-onscreen
+kms_cursor_crc@pipe-F-cursor-32x32-random
+kms_cursor_crc@pipe-F-cursor-32x32-rapid-movement
+kms_cursor_crc@pipe-F-cursor-32x32-sliding
+kms_cursor_crc@pipe-F-cursor-512x170-offscreen
+kms_cursor_crc@pipe-F-cursor-512x170-onscreen
+kms_cursor_crc@pipe-F-cursor-512x170-random
+kms_cursor_crc@pipe-F-cursor-512x170-rapid-movement
+kms_cursor_crc@pipe-F-cursor-512x170-sliding
+kms_cursor_crc@pipe-F-cursor-512x512-offscreen
+kms_cursor_crc@pipe-F-cursor-512x512-onscreen
+kms_cursor_crc@pipe-F-cursor-512x512-random
+kms_cursor_crc@pipe-F-cursor-512x512-rapid-movement
+kms_cursor_crc@pipe-F-cursor-512x512-sliding
+kms_cursor_crc@pipe-F-cursor-64x21-offscreen
+kms_cursor_crc@pipe-F-cursor-64x21-onscreen
+kms_cursor_crc@pipe-F-cursor-64x21-random
+kms_cursor_crc@pipe-F-cursor-64x21-rapid-movement
+kms_cursor_crc@pipe-F-cursor-64x21-sliding
+kms_cursor_crc@pipe-F-cursor-64x64-offscreen
+kms_cursor_crc@pipe-F-cursor-64x64-onscreen
+kms_cursor_crc@pipe-F-cursor-64x64-random
+kms_cursor_crc@pipe-F-cursor-64x64-rapid-movement
+kms_cursor_crc@pipe-F-cursor-64x64-sliding
+kms_cursor_crc@pipe-F-cursor-alpha-opaque
+kms_cursor_crc@pipe-F-cursor-alpha-transparent
+kms_cursor_crc@pipe-F-cursor-dpms
+kms_cursor_crc@pipe-F-cursor-max-size-offscreen
+kms_cursor_crc@pipe-F-cursor-max-size-onscreen
+kms_cursor_crc@pipe-F-cursor-max-size-random
+kms_cursor_crc@pipe-F-cursor-max-size-rapid-movement
+kms_cursor_crc@pipe-F-cursor-max-size-sliding
+kms_cursor_crc@pipe-F-cursor-size-change
+kms_cursor_crc@pipe-F-cursor-suspend
+kms_cursor_legacy@2x-cursor-vs-flip-atomic
+kms_cursor_legacy@2x-cursor-vs-flip-legacy
+kms_cursor_legacy@2x-flip-vs-cursor-atomic
+kms_cursor_legacy@2x-flip-vs-cursor-legacy
+kms_cursor_legacy@2x-long-cursor-vs-flip-atomic
+kms_cursor_legacy@2x-long-cursor-vs-flip-legacy
+kms_cursor_legacy@2x-long-flip-vs-cursor-atomic
+kms_cursor_legacy@2x-long-flip-vs-cursor-legacy
+kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic
+kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic
+kms_cursor_legacy@basic-busy-flip-before-cursor-atomic
+kms_cursor_legacy@basic-busy-flip-before-cursor-legacy
+kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size
+kms_cursor_legacy@basic-flip-after-cursor-atomic
+kms_cursor_legacy@basic-flip-after-cursor-legacy
+kms_cursor_legacy@basic-flip-after-cursor-varying-size
+kms_cursor_legacy@basic-flip-before-cursor-atomic
+kms_cursor_legacy@basic-flip-before-cursor-legacy
+kms_cursor_legacy@basic-flip-before-cursor-varying-size
+kms_cursor_legacy@cursorA-vs-flipB-atomic
+kms_cursor_legacy@cursorA-vs-flipB-atomic-transitions
+kms_cursor_legacy@cursorA-vs-flipB-atomic-transitions-varying-size
+kms_cursor_legacy@cursorA-vs-flipB-legacy
+kms_cursor_legacy@cursorA-vs-flipB-toggle
+kms_cursor_legacy@cursorA-vs-flipB-varying-size
+kms_cursor_legacy@cursorB-vs-flipA-atomic
+kms_cursor_legacy@cursorB-vs-flipA-atomic-transitions
+kms_cursor_legacy@cursorB-vs-flipA-atomic-transitions-varying-size
+kms_cursor_legacy@cursorB-vs-flipA-legacy
+kms_cursor_legacy@cursorB-vs-flipA-toggle
+kms_cursor_legacy@cursorB-vs-flipA-varying-size
+kms_cursor_legacy@cursorB-vs-flipB-atomic
+kms_cursor_legacy@cursorB-vs-flipB-atomic-transitions
+kms_cursor_legacy@cursorB-vs-flipB-atomic-transitions-varying-size
+kms_cursor_legacy@cursorB-vs-flipB-legacy
+kms_cursor_legacy@cursorB-vs-flipB-toggle
+kms_cursor_legacy@cursorB-vs-flipB-varying-size
+kms_cursor_legacy@flip-vs-cursor-busy-crc-atomic
+kms_cursor_legacy@flip-vs-cursor-busy-crc-legacy
+kms_cursor_legacy@flip-vs-cursor-crc-atomic
+kms_cursor_legacy@flip-vs-cursor-crc-legacy
+kms_cursor_legacy@nonblocking-modeset-vs-cursor-atomic
+kms_cursor_legacy@pipe-E-forked-bo
+kms_cursor_legacy@pipe-E-forked-move
+kms_cursor_legacy@pipe-E-single-bo
+kms_cursor_legacy@pipe-E-single-move
+kms_cursor_legacy@pipe-E-torture-bo
+kms_cursor_legacy@pipe-E-torture-move
+kms_cursor_legacy@pipe-F-forked-bo
+kms_cursor_legacy@pipe-F-forked-move
+kms_cursor_legacy@pipe-F-single-bo
+kms_cursor_legacy@pipe-F-single-move
+kms_cursor_legacy@pipe-F-torture-bo
+kms_cursor_legacy@pipe-F-torture-move
+kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions
+kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size
+kms_cursor_legacy@short-busy-flip-before-cursor-toggle
+kms_cursor_legacy@short-flip-after-cursor-atomic-transitions
+kms_cursor_legacy@short-flip-after-cursor-atomic-transitions-varying-size
+kms_cursor_legacy@short-flip-after-cursor-toggle
+kms_cursor_legacy@short-flip-before-cursor-atomic-transitions
+kms_cursor_legacy@short-flip-before-cursor-atomic-transitions-varying-size
+kms_cursor_legacy@short-flip-before-cursor-toggle
+kms_dither@FB-8BPC-Vs-Panel-6BPC
+kms_dither@FB-8BPC-Vs-Panel-8BPC
+kms_dp_aux_dev
+kms_dp_tiled_display@basic-test-pattern
+kms_draw_crc@draw-method-rgb565-blt-4tiled
+kms_draw_crc@draw-method-rgb565-blt-untiled
+kms_draw_crc@draw-method-rgb565-blt-xtiled
+kms_draw_crc@draw-method-rgb565-blt-ytiled
+kms_draw_crc@draw-method-rgb565-mmap-cpu-4tiled
+kms_draw_crc@draw-method-rgb565-mmap-cpu-untiled
+kms_draw_crc@draw-method-rgb565-mmap-cpu-xtiled
+kms_draw_crc@draw-method-rgb565-mmap-cpu-ytiled
+kms_draw_crc@draw-method-rgb565-mmap-gtt-4tiled
+kms_draw_crc@draw-method-rgb565-mmap-gtt-untiled
+kms_draw_crc@draw-method-rgb565-mmap-gtt-xtiled
+kms_draw_crc@draw-method-rgb565-mmap-gtt-ytiled
+kms_draw_crc@draw-method-rgb565-mmap-wc-4tiled
+kms_draw_crc@draw-method-rgb565-mmap-wc-untiled
+kms_draw_crc@draw-method-rgb565-mmap-wc-xtiled
+kms_draw_crc@draw-method-rgb565-mmap-wc-ytiled
+kms_draw_crc@draw-method-rgb565-pwrite-4tiled
+kms_draw_crc@draw-method-rgb565-pwrite-untiled
+kms_draw_crc@draw-method-rgb565-pwrite-xtiled
+kms_draw_crc@draw-method-rgb565-pwrite-ytiled
+kms_draw_crc@draw-method-rgb565-render-4tiled
+kms_draw_crc@draw-method-rgb565-render-untiled
+kms_draw_crc@draw-method-rgb565-render-xtiled
+kms_draw_crc@draw-method-rgb565-render-ytiled
+kms_draw_crc@draw-method-xrgb2101010-blt-4tiled
+kms_draw_crc@draw-method-xrgb2101010-blt-untiled
+kms_draw_crc@draw-method-xrgb2101010-blt-xtiled
+kms_draw_crc@draw-method-xrgb2101010-blt-ytiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-cpu-4tiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-cpu-untiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-cpu-xtiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-cpu-ytiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-gtt-4tiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-gtt-untiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-gtt-xtiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-gtt-ytiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-wc-4tiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-wc-untiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-wc-xtiled
+kms_draw_crc@draw-method-xrgb2101010-mmap-wc-ytiled
+kms_draw_crc@draw-method-xrgb2101010-pwrite-4tiled
+kms_draw_crc@draw-method-xrgb2101010-pwrite-untiled
+kms_draw_crc@draw-method-xrgb2101010-pwrite-xtiled
+kms_draw_crc@draw-method-xrgb2101010-pwrite-ytiled
+kms_draw_crc@draw-method-xrgb2101010-render-4tiled
+kms_draw_crc@draw-method-xrgb2101010-render-untiled
+kms_draw_crc@draw-method-xrgb2101010-render-xtiled
+kms_draw_crc@draw-method-xrgb2101010-render-ytiled
+kms_draw_crc@draw-method-xrgb8888-blt-4tiled
+kms_draw_crc@draw-method-xrgb8888-blt-untiled
+kms_draw_crc@draw-method-xrgb8888-blt-xtiled
+kms_draw_crc@draw-method-xrgb8888-blt-ytiled
+kms_draw_crc@draw-method-xrgb8888-mmap-cpu-4tiled
+kms_draw_crc@draw-method-xrgb8888-mmap-cpu-untiled
+kms_draw_crc@draw-method-xrgb8888-mmap-cpu-xtiled
+kms_draw_crc@draw-method-xrgb8888-mmap-cpu-ytiled
+kms_draw_crc@draw-method-xrgb8888-mmap-gtt-4tiled
+kms_draw_crc@draw-method-xrgb8888-mmap-gtt-untiled
+kms_draw_crc@draw-method-xrgb8888-mmap-gtt-xtiled
+kms_draw_crc@draw-method-xrgb8888-mmap-gtt-ytiled
+kms_draw_crc@draw-method-xrgb8888-mmap-wc-4tiled
+kms_draw_crc@draw-method-xrgb8888-mmap-wc-untiled
+kms_draw_crc@draw-method-xrgb8888-mmap-wc-xtiled
+kms_draw_crc@draw-method-xrgb8888-mmap-wc-ytiled
+kms_draw_crc@draw-method-xrgb8888-pwrite-4tiled
+kms_draw_crc@draw-method-xrgb8888-pwrite-untiled
+kms_draw_crc@draw-method-xrgb8888-pwrite-xtiled
+kms_draw_crc@draw-method-xrgb8888-pwrite-ytiled
+kms_draw_crc@draw-method-xrgb8888-render-4tiled
+kms_draw_crc@draw-method-xrgb8888-render-untiled
+kms_draw_crc@draw-method-xrgb8888-render-xtiled
+kms_draw_crc@draw-method-xrgb8888-render-ytiled
+kms_draw_crc@fill-fb
+kms_dsc@basic-dsc-enable
+kms_dsc@XRGB8888-dsc-compression
+kms_fbcon_fbt@fbc
+kms_fbcon_fbt@fbc-suspend
+kms_fbcon_fbt@psr
+kms_fbcon_fbt@psr-suspend
+kms_fence_pin_leak
+kms_flip@2x-absolute-wf_vblank
+kms_flip@2x-absolute-wf_vblank-interruptible
+kms_flip@2x-blocking-absolute-wf_vblank
+kms_flip@2x-blocking-absolute-wf_vblank-interruptible
+kms_flip@2x-blocking-wf_vblank
+kms_flip@2x-busy-flip
+kms_flip@2x-dpms-vs-vblank-race
+kms_flip@2x-dpms-vs-vblank-race-interruptible
+kms_flip@2x-flip-vs-absolute-wf_vblank
+kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible
+kms_flip@2x-flip-vs-blocking-wf-vblank
+kms_flip@2x-flip-vs-dpms
+kms_flip@2x-flip-vs-dpms-off-vs-modeset
+kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible
+kms_flip@2x-flip-vs-expired-vblank
+kms_flip@2x-flip-vs-expired-vblank-interruptible
+kms_flip@2x-flip-vs-fences
+kms_flip@2x-flip-vs-fences-interruptible
+kms_flip@2x-flip-vs-modeset
+kms_flip@2x-flip-vs-modeset-vs-hang
+kms_flip@2x-flip-vs-panning
+kms_flip@2x-flip-vs-panning-interruptible
+kms_flip@2x-flip-vs-panning-vs-hang
+kms_flip@2x-flip-vs-rmfb
+kms_flip@2x-flip-vs-rmfb-interruptible
+kms_flip@2x-flip-vs-suspend
+kms_flip@2x-flip-vs-suspend-interruptible
+kms_flip@2x-flip-vs-wf_vblank
+kms_flip@2x-flip-vs-wf_vblank-interruptible
+kms_flip@2x-modeset-vs-vblank-race
+kms_flip@2x-modeset-vs-vblank-race-interruptible
+kms_flip@2x-nonexisting-fb
+kms_flip@2x-nonexisting-fb-interruptible
+kms_flip@2x-plain-flip
+kms_flip@2x-plain-flip-fb-recreate
+kms_flip@2x-plain-flip-fb-recreate-interruptible
+kms_flip@2x-plain-flip-interruptible
+kms_flip@2x-plain-flip-ts-check
+kms_flip@2x-plain-flip-ts-check-interruptible
+kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset
+kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset-interruptible
+kms_flip@2x-wf_vblank-ts-check
+kms_flip@2x-wf_vblank-ts-check-interruptible
+kms_flip@basic-plain-flip
+kms_flip@busy-flip
+kms_flip_event_leak
+kms_flip@nonblocking-read
+kms_flip@nonexisting-fb
+kms_flip@nonexisting-fb-interruptible
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_force_connector_basic@force-connector-state
+kms_force_connector_basic@force-edid
+kms_force_connector_basic@force-load-detect
+kms_force_connector_basic@prune-stale-modes
+kms_frontbuffer_tracking@basic
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-render
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-1p-offscren-pri-shrfb-draw-render
+kms_frontbuffer_tracking@drrs-1p-pri-indfb-multidraw
+kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@drrs-1p-rte
+kms_frontbuffer_tracking@drrs-2p-pri-indfb-multidraw
+kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@drrs-2p-rte
+kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-move
+kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-move
+kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@drrs-farfromfence-mmap-gtt
+kms_frontbuffer_tracking@drrs-indfb-scaledprimary
+kms_frontbuffer_tracking@drrs-modesetfrombusy
+kms_frontbuffer_tracking@drrs-rgb101010-draw-blt
+kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-rgb101010-draw-pwrite
+kms_frontbuffer_tracking@drrs-rgb101010-draw-render
+kms_frontbuffer_tracking@drrs-rgb565-draw-blt
+kms_frontbuffer_tracking@drrs-rgb565-draw-mmap-cpu
+kms_frontbuffer_tracking@drrs-rgb565-draw-mmap-gtt
+kms_frontbuffer_tracking@drrs-rgb565-draw-mmap-wc
+kms_frontbuffer_tracking@drrs-rgb565-draw-pwrite
+kms_frontbuffer_tracking@drrs-rgb565-draw-render
+kms_frontbuffer_tracking@drrs-shrfb-scaledprimary
+kms_frontbuffer_tracking@drrs-slowdraw
+kms_frontbuffer_tracking@drrs-suspend
+kms_frontbuffer_tracking@fbc-1p-indfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbc-1p-rte
+kms_frontbuffer_tracking@fbc-1p-shrfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-indfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-pri-indfb-multidraw
+kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbc-2p-rte
+kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbc-2p-shrfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-1p-indfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-1p-pri-indfb-multidraw
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbcdrrs-1p-rte
+kms_frontbuffer_tracking@fbcdrrs-1p-shrfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-indfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-pri-indfb-multidraw
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbcdrrs-2p-rte
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbcdrrs-2p-shrfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-badstride
+kms_frontbuffer_tracking@fbcdrrs-farfromfence-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-indfb-scaledprimary
+kms_frontbuffer_tracking@fbcdrrs-modesetfrombusy
+kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-render
+kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-blt
+kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-mmap-wc
+kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-pwrite
+kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-render
+kms_frontbuffer_tracking@fbcdrrs-shrfb-scaledprimary
+kms_frontbuffer_tracking@fbcdrrs-slowdraw
+kms_frontbuffer_tracking@fbcdrrs-stridechange
+kms_frontbuffer_tracking@fbcdrrs-suspend
+kms_frontbuffer_tracking@fbcdrrs-tiling-4
+kms_frontbuffer_tracking@fbcdrrs-tiling-linear
+kms_frontbuffer_tracking@fbcdrrs-tiling-y
+kms_frontbuffer_tracking@fbc-farfromfence-mmap-gtt
+kms_frontbuffer_tracking@fbc-indfb-scaledprimary
+kms_frontbuffer_tracking@fbc-modesetfrombusy
+kms_frontbuffer_tracking@fbcpsr-1p-indfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbcpsr-1p-rte
+kms_frontbuffer_tracking@fbcpsr-1p-shrfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-indfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-pri-indfb-multidraw
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbcpsr-2p-rte
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbcpsr-2p-shrfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-indfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-pri-indfb-multidraw
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-rte
+kms_frontbuffer_tracking@fbcpsrdrrs-1p-shrfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-indfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-pri-indfb-multidraw
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-rte
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-move
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-move
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@fbcpsrdrrs-2p-shrfb-fliptrack-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-badstride
+kms_frontbuffer_tracking@fbcpsrdrrs-farfromfence-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-indfb-scaledprimary
+kms_frontbuffer_tracking@fbcpsrdrrs-modesetfrombusy
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-blt
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-pwrite
+kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-render
+kms_frontbuffer_tracking@fbcpsrdrrs-shrfb-scaledprimary
+kms_frontbuffer_tracking@fbcpsrdrrs-slowdraw
+kms_frontbuffer_tracking@fbcpsrdrrs-stridechange
+kms_frontbuffer_tracking@fbcpsrdrrs-suspend
+kms_frontbuffer_tracking@fbcpsrdrrs-tiling-4
+kms_frontbuffer_tracking@fbcpsrdrrs-tiling-linear
+kms_frontbuffer_tracking@fbcpsrdrrs-tiling-y
+kms_frontbuffer_tracking@fbcpsr-farfromfence-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary
+kms_frontbuffer_tracking@fbcpsr-modesetfrombusy
+kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt
+kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-render
+kms_frontbuffer_tracking@fbcpsr-rgb565-draw-blt
+kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-cpu
+kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-gtt
+kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-wc
+kms_frontbuffer_tracking@fbcpsr-rgb565-draw-pwrite
+kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render
+kms_frontbuffer_tracking@fbcpsr-shrfb-scaledprimary
+kms_frontbuffer_tracking@fbcpsr-stridechange
+kms_frontbuffer_tracking@fbcpsr-tiling-4
+kms_frontbuffer_tracking@fbcpsr-tiling-linear
+kms_frontbuffer_tracking@fbcpsr-tiling-y
+kms_frontbuffer_tracking@fbc-rgb101010-draw-blt
+kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-rgb101010-draw-pwrite
+kms_frontbuffer_tracking@fbc-rgb101010-draw-render
+kms_frontbuffer_tracking@fbc-rgb565-draw-blt
+kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-cpu
+kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-gtt
+kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-wc
+kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite
+kms_frontbuffer_tracking@fbc-rgb565-draw-render
+kms_frontbuffer_tracking@fbc-shrfb-scaledprimary
+kms_frontbuffer_tracking@fbc-stridechange
+kms_frontbuffer_tracking@fbc-tiling-4
+kms_frontbuffer_tracking@fbc-tiling-linear
+kms_frontbuffer_tracking@fbc-tiling-y
+kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-blt
+kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-render
+kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-render
+kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@psr-1p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@psr-1p-rte
+kms_frontbuffer_tracking@psr-2p-pri-indfb-multidraw
+kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@psr-2p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@psr-2p-rte
+kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-move
+kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-move
+kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-shrfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-1p-pri-indfb-multidraw
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@psrdrrs-1p-rte
+kms_frontbuffer_tracking@psrdrrs-2p-pri-indfb-multidraw
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-move
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-move
+kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@psrdrrs-2p-rte
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-move
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-onoff
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-indfb-msflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-indfb-pgflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-indfb-plflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-shrfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-shrfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-shrfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-shrfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-shrfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-shrfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-shrfb-msflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-shrfb-pgflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-shrfb-plflip-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-draw-blt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-draw-render
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-fullscreen
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-move
+kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-onoff
+kms_frontbuffer_tracking@psrdrrs-farfromfence-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-indfb-scaledprimary
+kms_frontbuffer_tracking@psrdrrs-modesetfrombusy
+kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-blt
+kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-render
+kms_frontbuffer_tracking@psrdrrs-rgb565-draw-blt
+kms_frontbuffer_tracking@psrdrrs-rgb565-draw-mmap-cpu
+kms_frontbuffer_tracking@psrdrrs-rgb565-draw-mmap-gtt
+kms_frontbuffer_tracking@psrdrrs-rgb565-draw-mmap-wc
+kms_frontbuffer_tracking@psrdrrs-rgb565-draw-pwrite
+kms_frontbuffer_tracking@psrdrrs-rgb565-draw-render
+kms_frontbuffer_tracking@psrdrrs-shrfb-scaledprimary
+kms_frontbuffer_tracking@psrdrrs-slowdraw
+kms_frontbuffer_tracking@psrdrrs-suspend
+kms_frontbuffer_tracking@psr-farfromfence-mmap-gtt
+kms_frontbuffer_tracking@psr-indfb-scaledprimary
+kms_frontbuffer_tracking@psr-modesetfrombusy
+kms_frontbuffer_tracking@psr-rgb101010-draw-blt
+kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-wc
+kms_frontbuffer_tracking@psr-rgb101010-draw-pwrite
+kms_frontbuffer_tracking@psr-rgb101010-draw-render
+kms_frontbuffer_tracking@psr-rgb565-draw-blt
+kms_frontbuffer_tracking@psr-rgb565-draw-mmap-cpu
+kms_frontbuffer_tracking@psr-rgb565-draw-mmap-gtt
+kms_frontbuffer_tracking@psr-rgb565-draw-mmap-wc
+kms_frontbuffer_tracking@psr-rgb565-draw-pwrite
+kms_frontbuffer_tracking@psr-rgb565-draw-render
+kms_frontbuffer_tracking@psr-shrfb-scaledprimary
+kms_frontbuffer_tracking@psr-suspend
+kms_getfb@getfb2-accept-ccs
+kms_getfb@getfb2-handle-closed
+kms_getfb@getfb2-handle-not-fb
+kms_getfb@getfb2-handle-protection
+kms_getfb@getfb2-handle-zero
+kms_getfb@getfb2-into-addfb2
+kms_getfb@getfb-addfb-different-handles
+kms_getfb@getfb-handle-closed
+kms_getfb@getfb-handle-not-fb
+kms_getfb@getfb-handle-protection
+kms_getfb@getfb-handle-valid
+kms_getfb@getfb-handle-zero
+kms_getfb@getfb-reject-ccs
+kms_getfb@getfb-repeated-different-handles
+kms_hdmi_inject@inject-audio
+kms_hdr@bpc-switch
+kms_hdr@bpc-switch-dpms
+kms_hdr@bpc-switch-suspend
+kms_hdr@static-swap
+kms_hdr@static-toggle
+kms_hdr@static-toggle-dpms
+kms_hdr@static-toggle-suspend
+kms_invalid_mode@bad-hsync-end
+kms_invalid_mode@bad-hsync-start
+kms_invalid_mode@bad-htotal
+kms_invalid_mode@bad-vsync-end
+kms_invalid_mode@bad-vsync-start
+kms_invalid_mode@bad-vtotal
+kms_invalid_mode@clock-too-high
+kms_invalid_mode@int-max-clock
+kms_invalid_mode@uint-max-clock
+kms_invalid_mode@zero-clock
+kms_invalid_mode@zero-hdisplay
+kms_invalid_mode@zero-vdisplay
+kms_legacy_colorkey
+kms_multipipe_modeset@basic-max-pipe-crc-check
+kms_panel_fitting@atomic-fastset
+kms_panel_fitting@legacy
+kms_pipe_b_c_ivb@disable-pipe-B-enable-pipe-C
+kms_pipe_b_c_ivb@enable-pipe-C-while-B-has-3-lanes
+kms_pipe_b_c_ivb@from-pipe-C-to-B-with-3-lanes
+kms_pipe_b_c_ivb@pipe-B-double-modeset-then-modeset-pipe-C
+kms_pipe_b_c_ivb@pipe-B-dpms-off-modeset-pipe-C
+kms_pipe_crc_basic@bad-source
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-A
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-B
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-C
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-D
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-E
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-F
+kms_pipe_crc_basic@disable-crc-after-crtc-pipe-A
+kms_pipe_crc_basic@disable-crc-after-crtc-pipe-B
+kms_pipe_crc_basic@disable-crc-after-crtc-pipe-C
+kms_pipe_crc_basic@disable-crc-after-crtc-pipe-D
+kms_pipe_crc_basic@disable-crc-after-crtc-pipe-E
+kms_pipe_crc_basic@disable-crc-after-crtc-pipe-F
+kms_pipe_crc_basic@hang-read-crc-pipe-A
+kms_pipe_crc_basic@hang-read-crc-pipe-B
+kms_pipe_crc_basic@hang-read-crc-pipe-C
+kms_pipe_crc_basic@hang-read-crc-pipe-D
+kms_pipe_crc_basic@hang-read-crc-pipe-E
+kms_pipe_crc_basic@hang-read-crc-pipe-F
+kms_pipe_crc_basic@nonblocking-crc-pipe-A
+kms_pipe_crc_basic@nonblocking-crc-pipe-A-frame-sequence
+kms_pipe_crc_basic@nonblocking-crc-pipe-B
+kms_pipe_crc_basic@nonblocking-crc-pipe-B-frame-sequence
+kms_pipe_crc_basic@nonblocking-crc-pipe-C
+kms_pipe_crc_basic@nonblocking-crc-pipe-C-frame-sequence
+kms_pipe_crc_basic@nonblocking-crc-pipe-D
+kms_pipe_crc_basic@nonblocking-crc-pipe-D-frame-sequence
+kms_pipe_crc_basic@nonblocking-crc-pipe-E
+kms_pipe_crc_basic@nonblocking-crc-pipe-E-frame-sequence
+kms_pipe_crc_basic@nonblocking-crc-pipe-F
+kms_pipe_crc_basic@nonblocking-crc-pipe-F-frame-sequence
+kms_pipe_crc_basic@read-crc-pipe-A
+kms_pipe_crc_basic@read-crc-pipe-A-frame-sequence
+kms_pipe_crc_basic@read-crc-pipe-B
+kms_pipe_crc_basic@read-crc-pipe-B-frame-sequence
+kms_pipe_crc_basic@read-crc-pipe-C
+kms_pipe_crc_basic@read-crc-pipe-C-frame-sequence
+kms_pipe_crc_basic@read-crc-pipe-D
+kms_pipe_crc_basic@read-crc-pipe-D-frame-sequence
+kms_pipe_crc_basic@read-crc-pipe-E
+kms_pipe_crc_basic@read-crc-pipe-E-frame-sequence
+kms_pipe_crc_basic@read-crc-pipe-F
+kms_pipe_crc_basic@read-crc-pipe-F-frame-sequence
+kms_pipe_crc_basic@suspend-read-crc-pipe-A
+kms_pipe_crc_basic@suspend-read-crc-pipe-B
+kms_pipe_crc_basic@suspend-read-crc-pipe-C
+kms_pipe_crc_basic@suspend-read-crc-pipe-D
+kms_pipe_crc_basic@suspend-read-crc-pipe-E
+kms_pipe_crc_basic@suspend-read-crc-pipe-F
+kms_plane_alpha_blend@pipe-A-alpha-7efc
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-A-constant-alpha-max
+kms_plane_alpha_blend@pipe-A-constant-alpha-mid
+kms_plane_alpha_blend@pipe-A-constant-alpha-min
+kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant
+kms_plane_alpha_blend@pipe-B-alpha-7efc
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-B-constant-alpha-mid
+kms_plane_alpha_blend@pipe-B-constant-alpha-min
+kms_plane_alpha_blend@pipe-B-coverage-vs-premult-vs-constant
+kms_plane_alpha_blend@pipe-C-alpha-7efc
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-C-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-constant-alpha-mid
+kms_plane_alpha_blend@pipe-C-constant-alpha-min
+kms_plane_alpha_blend@pipe-C-coverage-vs-premult-vs-constant
+kms_plane_alpha_blend@pipe-D-alpha-7efc
+kms_plane_alpha_blend@pipe-D-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-D-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-D-constant-alpha-max
+kms_plane_alpha_blend@pipe-D-constant-alpha-mid
+kms_plane_alpha_blend@pipe-D-constant-alpha-min
+kms_plane_alpha_blend@pipe-D-coverage-vs-premult-vs-constant
+kms_plane_alpha_blend@pipe-E-alpha-7efc
+kms_plane_alpha_blend@pipe-E-alpha-basic
+kms_plane_alpha_blend@pipe-E-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-E-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-E-constant-alpha-max
+kms_plane_alpha_blend@pipe-E-constant-alpha-mid
+kms_plane_alpha_blend@pipe-E-constant-alpha-min
+kms_plane_alpha_blend@pipe-E-coverage-7efc
+kms_plane_alpha_blend@pipe-E-coverage-vs-premult-vs-constant
+kms_plane_alpha_blend@pipe-F-alpha-7efc
+kms_plane_alpha_blend@pipe-F-alpha-basic
+kms_plane_alpha_blend@pipe-F-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-F-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-F-constant-alpha-max
+kms_plane_alpha_blend@pipe-F-constant-alpha-mid
+kms_plane_alpha_blend@pipe-F-constant-alpha-min
+kms_plane_alpha_blend@pipe-F-coverage-7efc
+kms_plane_alpha_blend@pipe-F-coverage-vs-premult-vs-constant
+kms_plane_cursor@pipe-A-overlay-size-128
+kms_plane_cursor@pipe-A-overlay-size-256
+kms_plane_cursor@pipe-A-overlay-size-64
+kms_plane_cursor@pipe-A-primary-size-128
+kms_plane_cursor@pipe-A-primary-size-256
+kms_plane_cursor@pipe-A-primary-size-64
+kms_plane_cursor@pipe-A-viewport-size-128
+kms_plane_cursor@pipe-A-viewport-size-256
+kms_plane_cursor@pipe-A-viewport-size-64
+kms_plane_cursor@pipe-B-overlay-size-128
+kms_plane_cursor@pipe-B-overlay-size-256
+kms_plane_cursor@pipe-B-overlay-size-64
+kms_plane_cursor@pipe-B-primary-size-128
+kms_plane_cursor@pipe-B-primary-size-256
+kms_plane_cursor@pipe-B-primary-size-64
+kms_plane_cursor@pipe-B-viewport-size-128
+kms_plane_cursor@pipe-B-viewport-size-256
+kms_plane_cursor@pipe-B-viewport-size-64
+kms_plane_cursor@pipe-C-overlay-size-128
+kms_plane_cursor@pipe-C-overlay-size-256
+kms_plane_cursor@pipe-C-overlay-size-64
+kms_plane_cursor@pipe-C-primary-size-128
+kms_plane_cursor@pipe-C-primary-size-256
+kms_plane_cursor@pipe-C-primary-size-64
+kms_plane_cursor@pipe-C-viewport-size-128
+kms_plane_cursor@pipe-C-viewport-size-256
+kms_plane_cursor@pipe-C-viewport-size-64
+kms_plane_cursor@pipe-D-overlay-size-128
+kms_plane_cursor@pipe-D-overlay-size-256
+kms_plane_cursor@pipe-D-overlay-size-64
+kms_plane_cursor@pipe-D-primary-size-128
+kms_plane_cursor@pipe-D-primary-size-256
+kms_plane_cursor@pipe-D-primary-size-64
+kms_plane_cursor@pipe-D-viewport-size-128
+kms_plane_cursor@pipe-D-viewport-size-256
+kms_plane_cursor@pipe-D-viewport-size-64
+kms_plane_cursor@pipe-E-overlay-size-128
+kms_plane_cursor@pipe-E-overlay-size-256
+kms_plane_cursor@pipe-E-overlay-size-64
+kms_plane_cursor@pipe-E-primary-size-128
+kms_plane_cursor@pipe-E-primary-size-256
+kms_plane_cursor@pipe-E-primary-size-64
+kms_plane_cursor@pipe-E-viewport-size-128
+kms_plane_cursor@pipe-E-viewport-size-256
+kms_plane_cursor@pipe-E-viewport-size-64
+kms_plane_cursor@pipe-F-overlay-size-128
+kms_plane_cursor@pipe-F-overlay-size-256
+kms_plane_cursor@pipe-F-overlay-size-64
+kms_plane_cursor@pipe-F-primary-size-128
+kms_plane_cursor@pipe-F-primary-size-256
+kms_plane_cursor@pipe-F-primary-size-64
+kms_plane_cursor@pipe-F-viewport-size-128
+kms_plane_cursor@pipe-F-viewport-size-256
+kms_plane_cursor@pipe-F-viewport-size-64
+kms_plane_lowres@pipe-A-tiling-4
+kms_plane_lowres@pipe-A-tiling-none
+kms_plane_lowres@pipe-A-tiling-x
+kms_plane_lowres@pipe-A-tiling-y
+kms_plane_lowres@pipe-A-tiling-yf
+kms_plane_lowres@pipe-B-tiling-4
+kms_plane_lowres@pipe-B-tiling-none
+kms_plane_lowres@pipe-B-tiling-x
+kms_plane_lowres@pipe-B-tiling-y
+kms_plane_lowres@pipe-B-tiling-yf
+kms_plane_lowres@pipe-C-tiling-4
+kms_plane_lowres@pipe-C-tiling-none
+kms_plane_lowres@pipe-C-tiling-x
+kms_plane_lowres@pipe-C-tiling-y
+kms_plane_lowres@pipe-C-tiling-yf
+kms_plane_lowres@pipe-D-tiling-4
+kms_plane_lowres@pipe-D-tiling-none
+kms_plane_lowres@pipe-D-tiling-x
+kms_plane_lowres@pipe-D-tiling-y
+kms_plane_lowres@pipe-D-tiling-yf
+kms_plane_lowres@pipe-E-tiling-4
+kms_plane_lowres@pipe-E-tiling-none
+kms_plane_lowres@pipe-E-tiling-x
+kms_plane_lowres@pipe-E-tiling-y
+kms_plane_lowres@pipe-E-tiling-yf
+kms_plane_lowres@pipe-F-tiling-4
+kms_plane_lowres@pipe-F-tiling-none
+kms_plane_lowres@pipe-F-tiling-x
+kms_plane_lowres@pipe-F-tiling-y
+kms_plane_lowres@pipe-F-tiling-yf
+kms_plane_multiple@atomic-pipe-A-tiling-4
+kms_plane_multiple@atomic-pipe-A-tiling-none
+kms_plane_multiple@atomic-pipe-A-tiling-x
+kms_plane_multiple@atomic-pipe-A-tiling-y
+kms_plane_multiple@atomic-pipe-A-tiling-yf
+kms_plane_multiple@atomic-pipe-B-tiling-4
+kms_plane_multiple@atomic-pipe-B-tiling-none
+kms_plane_multiple@atomic-pipe-B-tiling-x
+kms_plane_multiple@atomic-pipe-B-tiling-y
+kms_plane_multiple@atomic-pipe-B-tiling-yf
+kms_plane_multiple@atomic-pipe-C-tiling-4
+kms_plane_multiple@atomic-pipe-C-tiling-none
+kms_plane_multiple@atomic-pipe-C-tiling-x
+kms_plane_multiple@atomic-pipe-C-tiling-y
+kms_plane_multiple@atomic-pipe-C-tiling-yf
+kms_plane_multiple@atomic-pipe-D-tiling-4
+kms_plane_multiple@atomic-pipe-D-tiling-none
+kms_plane_multiple@atomic-pipe-D-tiling-x
+kms_plane_multiple@atomic-pipe-D-tiling-y
+kms_plane_multiple@atomic-pipe-D-tiling-yf
+kms_plane_multiple@atomic-pipe-E-tiling-4
+kms_plane_multiple@atomic-pipe-E-tiling-none
+kms_plane_multiple@atomic-pipe-E-tiling-x
+kms_plane_multiple@atomic-pipe-E-tiling-y
+kms_plane_multiple@atomic-pipe-E-tiling-yf
+kms_plane_multiple@atomic-pipe-F-tiling-4
+kms_plane_multiple@atomic-pipe-F-tiling-none
+kms_plane_multiple@atomic-pipe-F-tiling-x
+kms_plane_multiple@atomic-pipe-F-tiling-y
+kms_plane_multiple@atomic-pipe-F-tiling-yf
+kms_plane@plane-panning-bottom-right
+kms_plane@plane-panning-top-left
+kms_plane_scaling@2x-scaler-multi-pipe
+kms_plane_scaling@downscale-with-modifier-factor-0-25
+kms_plane_scaling@downscale-with-rotation-factor-0-25
+kms_plane_scaling@invalid-num-scalers
+kms_plane_scaling@planes-downscale-factor-0-25
+kms_plane_scaling@planes-downscale-factor-0-5
+kms_plane_scaling@planes-downscale-factor-0-75
+kms_plane_scaling@planes-scaling-unity-scaling
+kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25
+kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5
+kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75
+kms_plane_scaling@planes-upscale-20x20
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75
+kms_plane_scaling@planes-upscale-factor-0-25
+kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25
+kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5
+kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75
+kms_plane_scaling@upscale-with-modifier-20x20
+kms_plane_scaling@upscale-with-modifier-factor-0-25
+kms_plane_scaling@upscale-with-pixel-format-20x20
+kms_plane_scaling@upscale-with-pixel-format-factor-0-25
+kms_plane_scaling@upscale-with-rotation-20x20
+kms_prime@basic-crc
+kms_prop_blob@basic
+kms_prop_blob@blob-multiple
+kms_prop_blob@blob-prop-core
+kms_prop_blob@blob-prop-lifetime
+kms_prop_blob@blob-prop-validate
+kms_prop_blob@invalid-get-prop
+kms_prop_blob@invalid-get-prop-any
+kms_prop_blob@invalid-set-prop
+kms_prop_blob@invalid-set-prop-any
+kms_properties@connector-properties-atomic
+kms_properties@crtc-properties-atomic
+kms_properties@crtc-properties-legacy
+kms_properties@get_properties-sanity-atomic
+kms_properties@get_properties-sanity-non-atomic
+kms_properties@invalid-properties-atomic
+kms_properties@invalid-properties-legacy
+kms_properties@plane-properties-atomic
+kms_properties@plane-properties-legacy
+kms_psr2_sf@cursor-plane-move-continuous-sf
+kms_psr2_sf@cursor-plane-update-sf
+kms_psr2_sf@overlay-plane-move-continuous-sf
+kms_psr2_sf@overlay-plane-update-continuous-sf
+kms_psr2_sf@overlay-plane-update-sf-dmg-area
+kms_psr2_sf@overlay-primary-update-sf-dmg-area
+kms_psr2_sf@plane-move-sf-dmg-area
+kms_psr2_sf@primary-plane-update-sf-dmg-area
+kms_psr2_su@frontbuffer-XRGB8888
+kms_psr2_su@page_flip-NV12
+kms_psr2_su@page_flip-P010
+kms_psr2_su@page_flip-XRGB8888
+kms_psr@basic
+kms_psr@cursor_blt
+kms_psr@cursor_mmap_cpu
+kms_psr@cursor_mmap_gtt
+kms_psr@cursor_plane_move
+kms_psr@cursor_plane_onoff
+kms_psr@cursor_render
+kms_psr@dpms
+kms_psr@no_drrs
+kms_psr@primary_blt
+kms_psr@primary_mmap_cpu
+kms_psr@primary_mmap_gtt
+kms_psr@primary_page_flip
+kms_psr@primary_render
+kms_psr@psr2_basic
+kms_psr@psr2_cursor_blt
+kms_psr@psr2_cursor_mmap_cpu
+kms_psr@psr2_cursor_mmap_gtt
+kms_psr@psr2_cursor_plane_move
+kms_psr@psr2_cursor_plane_onoff
+kms_psr@psr2_cursor_render
+kms_psr@psr2_dpms
+kms_psr@psr2_no_drrs
+kms_psr@psr2_primary_blt
+kms_psr@psr2_primary_mmap_cpu
+kms_psr@psr2_primary_mmap_gtt
+kms_psr@psr2_primary_page_flip
+kms_psr@psr2_primary_render
+kms_psr@psr2_sprite_blt
+kms_psr@psr2_sprite_mmap_cpu
+kms_psr@psr2_sprite_mmap_gtt
+kms_psr@psr2_sprite_plane_move
+kms_psr@psr2_sprite_plane_onoff
+kms_psr@psr2_sprite_render
+kms_psr@psr2_suspend
+kms_psr@sprite_blt
+kms_psr@sprite_mmap_cpu
+kms_psr@sprite_mmap_gtt
+kms_psr@sprite_plane_move
+kms_psr@sprite_plane_onoff
+kms_psr@sprite_render
+kms_psr@suspend
+kms_pwrite_crc
+kms_rmfb@close-fd
+kms_rmfb@rmfb-ioctl
+kms_rotation_crc@bad-pixel-format
+kms_rotation_crc@bad-tiling
+kms_rotation_crc@cursor-rotation-180
+kms_rotation_crc@exhaust-fences
+kms_rotation_crc@primary-4-tiled-reflect-x-0
+kms_rotation_crc@primary-4-tiled-reflect-x-180
+kms_rotation_crc@primary-rotation-180
+kms_rotation_crc@primary-x-tiled-reflect-x-0
+kms_rotation_crc@primary-x-tiled-reflect-x-180
+kms_rotation_crc@primary-yf-tiled-reflect-x-0
+kms_rotation_crc@primary-yf-tiled-reflect-x-180
+kms_rotation_crc@primary-yf-tiled-reflect-x-270
+kms_rotation_crc@primary-yf-tiled-reflect-x-90
+kms_rotation_crc@primary-y-tiled-reflect-x-0
+kms_rotation_crc@primary-y-tiled-reflect-x-180
+kms_rotation_crc@primary-y-tiled-reflect-x-270
+kms_rotation_crc@primary-y-tiled-reflect-x-90
+kms_rotation_crc@sprite-rotation-180
+kms_scaling_modes@scaling-mode-center
+kms_scaling_modes@scaling-mode-full
+kms_scaling_modes@scaling-mode-full-aspect
+kms_scaling_modes@scaling-mode-none
+kms_selftest@all
+kms_setmode@basic-clone-single-crtc
+kms_setmode@clone-exclusive-crtc
+kms_setmode@invalid-clone-exclusive-crtc
+kms_setmode@invalid-clone-single-crtc
+kms_setmode@invalid-clone-single-crtc-stealing
+kms_sysfs_edid_timing
+kms_tv_load_detect@load-detect
+kms_universal_plane@cursor-fb-leak-pipe-A
+kms_universal_plane@cursor-fb-leak-pipe-B
+kms_universal_plane@cursor-fb-leak-pipe-C
+kms_universal_plane@cursor-fb-leak-pipe-D
+kms_universal_plane@cursor-fb-leak-pipe-E
+kms_universal_plane@cursor-fb-leak-pipe-F
+kms_universal_plane@disable-primary-vs-flip-pipe-A
+kms_universal_plane@disable-primary-vs-flip-pipe-B
+kms_universal_plane@disable-primary-vs-flip-pipe-C
+kms_universal_plane@disable-primary-vs-flip-pipe-D
+kms_universal_plane@disable-primary-vs-flip-pipe-E
+kms_universal_plane@disable-primary-vs-flip-pipe-F
+kms_universal_plane@universal-plane-gen9-features-pipe-A
+kms_universal_plane@universal-plane-gen9-features-pipe-B
+kms_universal_plane@universal-plane-gen9-features-pipe-C
+kms_universal_plane@universal-plane-gen9-features-pipe-D
+kms_universal_plane@universal-plane-gen9-features-pipe-E
+kms_universal_plane@universal-plane-gen9-features-pipe-F
+kms_universal_plane@universal-plane-pipe-A-functional
+kms_universal_plane@universal-plane-pipe-A-sanity
+kms_universal_plane@universal-plane-pipe-B-functional
+kms_universal_plane@universal-plane-pipe-B-sanity
+kms_universal_plane@universal-plane-pipe-C-functional
+kms_universal_plane@universal-plane-pipe-C-sanity
+kms_universal_plane@universal-plane-pipe-D-functional
+kms_universal_plane@universal-plane-pipe-D-sanity
+kms_universal_plane@universal-plane-pipe-E-functional
+kms_universal_plane@universal-plane-pipe-E-sanity
+kms_universal_plane@universal-plane-pipe-F-functional
+kms_universal_plane@universal-plane-pipe-F-sanity
+kms_vblank@crtc-id
+kms_vblank@invalid
+kms_vblank@pipe-A-accuracy-idle
+kms_vblank@pipe-A-query-busy
+kms_vblank@pipe-A-query-forked
+kms_vblank@pipe-A-query-forked-busy
+kms_vblank@pipe-A-query-idle
+kms_vblank@pipe-A-ts-continuation-idle
+kms_vblank@pipe-A-ts-continuation-modeset
+kms_vblank@pipe-A-ts-continuation-suspend
+kms_vblank@pipe-A-wait-busy
+kms_vblank@pipe-A-wait-forked
+kms_vblank@pipe-A-wait-forked-busy
+kms_vblank@pipe-A-wait-idle
+kms_vblank@pipe-B-accuracy-idle
+kms_vblank@pipe-B-query-busy
+kms_vblank@pipe-B-query-forked
+kms_vblank@pipe-B-query-forked-busy
+kms_vblank@pipe-B-query-idle
+kms_vblank@pipe-B-ts-continuation-dpms-suspend
+kms_vblank@pipe-B-ts-continuation-idle
+kms_vblank@pipe-B-ts-continuation-modeset
+kms_vblank@pipe-B-ts-continuation-suspend
+kms_vblank@pipe-B-wait-busy
+kms_vblank@pipe-B-wait-forked
+kms_vblank@pipe-B-wait-forked-busy
+kms_vblank@pipe-B-wait-idle
+kms_vblank@pipe-C-accuracy-idle
+kms_vblank@pipe-C-query-busy
+kms_vblank@pipe-C-query-forked
+kms_vblank@pipe-C-query-forked-busy
+kms_vblank@pipe-C-query-idle
+kms_vblank@pipe-C-ts-continuation-dpms-suspend
+kms_vblank@pipe-C-ts-continuation-idle
+kms_vblank@pipe-C-ts-continuation-modeset
+kms_vblank@pipe-C-ts-continuation-suspend
+kms_vblank@pipe-C-wait-busy
+kms_vblank@pipe-C-wait-forked
+kms_vblank@pipe-C-wait-forked-busy
+kms_vblank@pipe-C-wait-idle
+kms_vblank@pipe-D-accuracy-idle
+kms_vblank@pipe-D-query-busy
+kms_vblank@pipe-D-query-forked
+kms_vblank@pipe-D-query-forked-busy
+kms_vblank@pipe-D-query-idle
+kms_vblank@pipe-D-ts-continuation-dpms-suspend
+kms_vblank@pipe-D-ts-continuation-idle
+kms_vblank@pipe-D-ts-continuation-modeset
+kms_vblank@pipe-D-ts-continuation-suspend
+kms_vblank@pipe-D-wait-busy
+kms_vblank@pipe-D-wait-forked
+kms_vblank@pipe-D-wait-forked-busy
+kms_vblank@pipe-D-wait-idle
+kms_vblank@pipe-E-accuracy-idle
+kms_vblank@pipe-E-query-busy
+kms_vblank@pipe-E-query-busy-hang
+kms_vblank@pipe-E-query-forked
+kms_vblank@pipe-E-query-forked-busy
+kms_vblank@pipe-E-query-forked-busy-hang
+kms_vblank@pipe-E-query-forked-hang
+kms_vblank@pipe-E-query-idle
+kms_vblank@pipe-E-query-idle-hang
+kms_vblank@pipe-E-ts-continuation-dpms-rpm
+kms_vblank@pipe-E-ts-continuation-dpms-suspend
+kms_vblank@pipe-E-ts-continuation-idle
+kms_vblank@pipe-E-ts-continuation-idle-hang
+kms_vblank@pipe-E-ts-continuation-modeset
+kms_vblank@pipe-E-ts-continuation-modeset-hang
+kms_vblank@pipe-E-ts-continuation-modeset-rpm
+kms_vblank@pipe-E-ts-continuation-suspend
+kms_vblank@pipe-E-wait-busy
+kms_vblank@pipe-E-wait-busy-hang
+kms_vblank@pipe-E-wait-forked
+kms_vblank@pipe-E-wait-forked-busy
+kms_vblank@pipe-E-wait-forked-busy-hang
+kms_vblank@pipe-E-wait-forked-hang
+kms_vblank@pipe-E-wait-idle
+kms_vblank@pipe-E-wait-idle-hang
+kms_vblank@pipe-F-accuracy-idle
+kms_vblank@pipe-F-query-busy
+kms_vblank@pipe-F-query-busy-hang
+kms_vblank@pipe-F-query-forked
+kms_vblank@pipe-F-query-forked-busy
+kms_vblank@pipe-F-query-forked-busy-hang
+kms_vblank@pipe-F-query-forked-hang
+kms_vblank@pipe-F-query-idle
+kms_vblank@pipe-F-query-idle-hang
+kms_vblank@pipe-F-ts-continuation-dpms-rpm
+kms_vblank@pipe-F-ts-continuation-dpms-suspend
+kms_vblank@pipe-F-ts-continuation-idle
+kms_vblank@pipe-F-ts-continuation-idle-hang
+kms_vblank@pipe-F-ts-continuation-modeset
+kms_vblank@pipe-F-ts-continuation-modeset-hang
+kms_vblank@pipe-F-ts-continuation-modeset-rpm
+kms_vblank@pipe-F-ts-continuation-suspend
+kms_vblank@pipe-F-wait-busy
+kms_vblank@pipe-F-wait-busy-hang
+kms_vblank@pipe-F-wait-forked
+kms_vblank@pipe-F-wait-forked-busy
+kms_vblank@pipe-F-wait-forked-busy-hang
+kms_vblank@pipe-F-wait-forked-hang
+kms_vblank@pipe-F-wait-idle
+kms_vblank@pipe-F-wait-idle-hang
+kms_vrr@flip-basic
+kms_vrr@flip-dpms
+kms_vrr@flipline
+kms_vrr@flip-suspend
+kms_writeback@writeback-check-output
+kms_writeback@writeback-fb-id
+kms_writeback@writeback-invalid-parameters
+kms_writeback@writeback-pixel-formats
+prime_mmap_kms@buffer-sharing
diff --git a/drivers/gpu/drm/ci/x86_64.config b/drivers/gpu/drm/ci/x86_64.config
new file mode 100644
index 000000000000..8f2cec020bed
--- /dev/null
+++ b/drivers/gpu/drm/ci/x86_64.config
@@ -0,0 +1,105 @@
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_DEBUG_KERNEL=y
+
+CONFIG_PWM=y
+CONFIG_PM_DEVFREQ=y
+CONFIG_OF=y
+CONFIG_CROS_EC=y
+
+# abootimg with a 'dummy' rootfs fails with root=/dev/nfs
+CONFIG_BLK_DEV_INITRD=n
+
+CONFIG_DEVFREQ_GOV_PERFORMANCE=y
+CONFIG_DEVFREQ_GOV_POWERSAVE=y
+CONFIG_DEVFREQ_GOV_USERSPACE=y
+CONFIG_DEVFREQ_GOV_PASSIVE=y
+
+CONFIG_DRM=y
+CONFIG_DRM_PANEL_SIMPLE=y
+CONFIG_PWM_CROS_EC=y
+CONFIG_BACKLIGHT_PWM=y
+
+# Strip out some stuff we don't need for graphics testing, to reduce
+# the build.
+CONFIG_CAN=n
+CONFIG_WIRELESS=n
+CONFIG_RFKILL=n
+CONFIG_WLAN=n
+
+CONFIG_REGULATOR_FAN53555=y
+CONFIG_REGULATOR=y
+
+CONFIG_REGULATOR_VCTRL=y
+
+CONFIG_KASAN=n
+CONFIG_KASAN_INLINE=n
+CONFIG_STACKTRACE=n
+
+CONFIG_TMPFS=y
+
+CONFIG_PROVE_LOCKING=n
+CONFIG_DEBUG_LOCKDEP=n
+CONFIG_SOFTLOCKUP_DETECTOR=y
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
+
+CONFIG_DETECT_HUNG_TASK=y
+
+CONFIG_USB_USBNET=y
+CONFIG_NETDEVICES=y
+CONFIG_USB_NET_DRIVERS=y
+CONFIG_USB_RTL8152=y
+CONFIG_USB_NET_AX8817X=y
+CONFIG_USB_NET_SMSC95XX=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_ETH=y
+
+CONFIG_FW_LOADER_COMPRESS=y
+
+# options for AMD devices
+CONFIG_X86_AMD_PLATFORM_DEVICE=y
+CONFIG_ACPI_VIDEO=y
+CONFIG_X86_AMD_FREQ_SENSITIVITY=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_AMD=y
+CONFIG_DRM_AMDGPU=m
+CONFIG_DRM_AMDGPU_SI=y
+CONFIG_DRM_AMDGPU_USERPTR=y
+CONFIG_DRM_AMD_ACP=n
+CONFIG_ACPI_WMI=y
+CONFIG_MXM_WMI=y
+CONFIG_PARPORT=y
+CONFIG_PARPORT_PC=y
+CONFIG_PARPORT_SERIAL=y
+CONFIG_SERIAL_8250_DW=y
+CONFIG_CHROME_PLATFORMS=y
+CONFIG_KVM_AMD=m
+
+#options for Intel devices
+CONFIG_MFD_INTEL_LPSS_PCI=y
+CONFIG_KVM_INTEL=m
+
+#options for KVM guests
+CONFIG_FUSE_FS=y
+CONFIG_HYPERVISOR_GUEST=y
+CONFIG_KVM=y
+CONFIG_KVM_GUEST=y
+CONFIG_VIRT_DRIVERS=y
+CONFIG_VIRTIO_FS=y
+CONFIG_DRM_VIRTIO_GPU=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_VIRTIO_NET=y
+CONFIG_VIRTIO_CONSOLE=y
+CONFIG_PARAVIRT=y
+CONFIG_VIRTIO_BLK=y
+CONFIG_VIRTUALIZATION=y
+CONFIG_VIRTIO=y
+CONFIG_VIRTIO_PCI=y
+CONFIG_VIRTIO_MMIO=y
+CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
+CONFIG_CRYPTO_DEV_VIRTIO=y
+CONFIG_HW_RANDOM_VIRTIO=y
+CONFIG_BLK_MQ_VIRTIO=y
+CONFIG_TUN=y
+CONFIG_VSOCKETS=y
+CONFIG_VIRTIO_VSOCKETS=y
+CONFIG_VHOST_VSOCK=m
diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt
new file mode 100644
index 000000000000..b596e5bf5348
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt
@@ -0,0 +1,19 @@
+kms_bw@linear-tiling-1-displays-2560x1440p,Fail
+kms_bw@linear-tiling-1-displays-3840x2160p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_cursor_crc@pipe-A-cursor-size-change,Fail
+kms_cursor_crc@pipe-B-cursor-size-change,Fail
+kms_hdr@bpc-switch,Fail
+kms_hdr@bpc-switch-dpms,Fail
+kms_plane_multiple@atomic-pipe-A-tiling-none,Fail
+kms_rotation_crc@primary-rotation-180,Fail
+kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
+kms_async_flips@alternate-sync-async-flip,Fail
+kms_async_flips@async-flip-with-page-flip-events,Fail
+kms_async_flips@crc,Fail
+kms_async_flips@invalid-async-flip,Fail
+kms_async_flips@test-cursor,Fail
+kms_async_flips@test-time-stamp,Fail
+kms_addfb_basic@bad-pitch-65536,Fail
+kms_addfb_basic@bo-too-small,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt
new file mode 100644
index 000000000000..200706d8742b
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt
@@ -0,0 +1,15 @@
+kms_addfb_basic@too-high
+kms_atomic_transition@plane-all-modeset-transition-internal-panels
+kms_atomic_transition@plane-all-transition
+kms_atomic_transition@plane-use-after-nonblocking-unbind
+kms_bw@linear-tiling-1-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_cursor_crc@pipe-A-cursor-alpha-opaque
+kms_cursor_crc@pipe-B-cursor-alpha-opaque
+kms_plane_multiple@atomic-pipe-B-tiling-none
+kms_plane@pixel-format
+kms_plane_scaling@downscale-with-rotation-factor-0-5
+kms_universal_plane@disable-primary-vs-flip-pipe-A
diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt
new file mode 100644
index 000000000000..67d78f10b671
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt
@@ -0,0 +1,32 @@
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-2560x1440p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-A-constant-alpha-max
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-C-constant-alpha-max
+kms_sysfs_edid_timing
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt b/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-apl-fails.txt b/drivers/gpu/drm/ci/xfails/i915-apl-fails.txt
new file mode 100644
index 000000000000..a077f29d5cba
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-apl-fails.txt
@@ -0,0 +1,29 @@
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_bw@linear-tiling-4-displays-1920x1080p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-3840x2160p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
+kms_sysfs_edid_timing,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt
new file mode 100644
index 000000000000..618bbe6bb793
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt
@@ -0,0 +1 @@
+kms_frontbuffer_tracking@fbc-tiling-linear
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt b/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt
new file mode 100644
index 000000000000..13ba297273d0
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt
@@ -0,0 +1,37 @@
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-2560x1440p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip@flip-vs-suspend
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
+kms_hdr@bpc-switch-suspend
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-A-constant-alpha-max
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-C-constant-alpha-max
+kms_psr2_su@page_flip-NV12
+kms_psr2_su@page_flip-P010
+kms_setmode@basic
+kms_draw_crc@draw-method-xrgb8888-render-xtiled
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt
new file mode 100644
index 000000000000..aedb3d2ef885
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt
@@ -0,0 +1,40 @@
+kms_bw@linear-tiling-1-displays-3840x2160p
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-2560x1440p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-2560x1440p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip@blocking-wf_vblank
+kms_flip@wf_vblank-ts-check
+kms_flip@wf_vblank-ts-check-interruptible
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
+kms_frontbuffer_tracking@fbc-tiling-linear
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-A-constant-alpha-max
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-C-constant-alpha-max
+kms_rotation_crc@multiplane-rotation
+kms_rotation_crc@multiplane-rotation-cropping-bottom
+kms_rotation_crc@multiplane-rotation-cropping-top
+kms_setmode@basic
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt b/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt b/drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt
new file mode 100644
index 000000000000..f81f065e27e8
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt
@@ -0,0 +1,8 @@
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt
new file mode 100644
index 000000000000..752d0d9a5280
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt
@@ -0,0 +1,25 @@
+kms_bw@linear-tiling-2-displays-1920x1080p
+kms_bw@linear-tiling-2-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_bw@linear-tiling-3-displays-2560x1440p
+kms_bw@linear-tiling-3-displays-3840x2160p
+kms_bw@linear-tiling-4-displays-1920x1080p
+kms_bw@linear-tiling-4-displays-3840x2160p
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
+kms_plane_alpha_blend@pipe-A-alpha-basic
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-alpha-basic
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
+kms_plane_alpha_blend@pipe-B-constant-alpha-max
+kms_plane_alpha_blend@pipe-C-alpha-basic
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
+kms_sysfs_edid_timing
+kms_async_flips@crc
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt b/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt
new file mode 100644
index 000000000000..e2c538a0f954
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt
@@ -0,0 +1,2 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt b/drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt
new file mode 100644
index 000000000000..270644ce220c
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt
@@ -0,0 +1,19 @@
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_bw@linear-tiling-4-displays-1920x1080p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-3840x2160p,Fail
+kms_bw@linear-tiling-5-displays-1920x1080p,Fail
+kms_bw@linear-tiling-5-displays-2560x1440p,Fail
+kms_bw@linear-tiling-5-displays-3840x2160p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_rotation_crc@bad-pixel-format,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt
new file mode 100644
index 000000000000..e23d369bec89
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt
@@ -0,0 +1,5 @@
+kms_draw_crc@.*
+kms_flip@blocking-absolute-wf_vblank
+kms_flip@bo-too-big-interruptible
+kms_flip@flip-vs-rmfb-interruptible
+kms_flip@busy-flip
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt b/drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt
new file mode 100644
index 000000000000..14f33c7ba03b
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt
@@ -0,0 +1,8 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# GPU hangs, then the whole machine
+gem_eio.*
+
+# Whole machine hangs
+kms_flip@absolute-wf_vblank@a-edp1
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-whl-fails.txt b/drivers/gpu/drm/ci/xfails/i915-whl-fails.txt
new file mode 100644
index 000000000000..dbfedfa5d63f
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-whl-fails.txt
@@ -0,0 +1,30 @@
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_bw@linear-tiling-4-displays-1920x1080p,Fail
+kms_bw@linear-tiling-4-displays-2560x1440p,Fail
+kms_bw@linear-tiling-4-displays-3840x2160p,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
+kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
+kms_frontbuffer_tracking@fbc-tiling-linear,Fail
+kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
+kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
+kms_sysfs_edid_timing,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt
new file mode 100644
index 000000000000..6bcac5b84fbb
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt
@@ -0,0 +1 @@
+kms_flip@flip-vs-suspend
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/mediatek-mt8173-fails.txt b/drivers/gpu/drm/ci/xfails/mediatek-mt8173-fails.txt
new file mode 100644
index 000000000000..7f74fb9afc99
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/mediatek-mt8173-fails.txt
@@ -0,0 +1,29 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_bw@linear-tiling-1-displays-1920x1080p,Fail
+kms_bw@linear-tiling-1-displays-2560x1440p,Fail
+kms_bw@linear-tiling-1-displays-3840x2160p,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
+kms_color@pipe-B-invalid-gamma-lut-sizes,Fail
+kms_force_connector_basic@force-connector-state,Fail
+kms_force_connector_basic@force-edid,Fail
+kms_force_connector_basic@force-load-detect,Fail
+kms_force_connector_basic@prune-stale-modes,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_plane_scaling@planes-upscale-20x20,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
+kms_plane_scaling@upscale-with-modifier-20x20,Fail
+kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_properties@get_properties-sanity-atomic,Fail
+kms_properties@plane-properties-atomic,Fail
+kms_properties@plane-properties-legacy,Fail
+kms_rmfb@close-fd,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/mediatek-mt8183-fails.txt b/drivers/gpu/drm/ci/xfails/mediatek-mt8183-fails.txt
new file mode 100644
index 000000000000..6ff81d00e84e
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/mediatek-mt8183-fails.txt
@@ -0,0 +1,10 @@
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_bw@linear-tiling-1-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_rmfb@close-fd,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/mediatek-mt8183-flakes.txt b/drivers/gpu/drm/ci/xfails/mediatek-mt8183-flakes.txt
new file mode 100644
index 000000000000..208890b79eb0
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/mediatek-mt8183-flakes.txt
@@ -0,0 +1,14 @@
+core_setmaster_vs_auth
+kms_bw@linear-tiling-1-displays-1920x1080p
+kms_bw@linear-tiling-1-displays-3840x2160p
+kms_bw@linear-tiling-3-displays-1920x1080p
+kms_cursor_legacy@cursor-vs-flip-atomic
+kms_plane_scaling@invalid-num-scalers
+kms_plane_scaling@planes-upscale-20x20
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5
+kms_plane_scaling@upscale-with-modifier-20x20
+kms_plane_scaling@upscale-with-pixel-format-20x20
+kms_prop_blob@invalid-set-prop-any
+kms_properties@get_properties-sanity-atomic
+kms_properties@plane-properties-atomic
+kms_properties@plane-properties-legacy
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/meson-g12b-fails.txt b/drivers/gpu/drm/ci/xfails/meson-g12b-fails.txt
new file mode 100644
index 000000000000..345e1426b3a3
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/meson-g12b-fails.txt
@@ -0,0 +1,5 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_properties@connector-properties-atomic,Fail
+kms_properties@get_properties-sanity-atomic,Fail
+kms_properties@get_properties-sanity-non-atomic,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/meson-g12b-flakes.txt b/drivers/gpu/drm/ci/xfails/meson-g12b-flakes.txt
new file mode 100644
index 000000000000..b63329d06767
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/meson-g12b-flakes.txt
@@ -0,0 +1,4 @@
+kms_force_connector_basic@force-connector-state
+kms_force_connector_basic@force-edid
+kms_force_connector_basic@force-load-detect
+kms_force_connector_basic@prune-stale-modes
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8016-fails.txt b/drivers/gpu/drm/ci/xfails/msm-apq8016-fails.txt
new file mode 100644
index 000000000000..16c2dfab3f16
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-apq8016-fails.txt
@@ -0,0 +1,15 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_cursor_legacy@all-pipes-forked-move,Fail
+kms_cursor_legacy@all-pipes-torture-bo,Fail
+kms_cursor_legacy@all-pipes-forked-bo,Fail
+kms_cursor_legacy@all-pipes-single-bo,Fail
+kms_cursor_legacy@all-pipes-single-move,Fail
+kms_cursor_legacy@all-pipes-torture-move,Fail
+kms_cursor_legacy@pipe-A-forked-bo,Fail
+kms_cursor_legacy@pipe-A-forked-move,Fail
+kms_cursor_legacy@pipe-A-single-bo,Fail
+kms_cursor_legacy@pipe-A-single-move,Fail
+kms_cursor_legacy@pipe-A-torture-bo,Fail
+kms_cursor_legacy@pipe-A-torture-move,Fail
+kms_hdmi_inject@inject-4k,Fail
diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8016-flakes.txt b/drivers/gpu/drm/ci/xfails/msm-apq8016-flakes.txt
new file mode 100644
index 000000000000..b63329d06767
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-apq8016-flakes.txt
@@ -0,0 +1,4 @@
+kms_force_connector_basic@force-connector-state
+kms_force_connector_basic@force-edid
+kms_force_connector_basic@force-load-detect
+kms_force_connector_basic@prune-stale-modes
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt b/drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt
new file mode 100644
index 000000000000..88a1fc0a3b0d
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt
@@ -0,0 +1,2 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8096-flakes.txt b/drivers/gpu/drm/ci/xfails/msm-apq8096-flakes.txt
new file mode 100644
index 000000000000..b63329d06767
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-apq8096-flakes.txt
@@ -0,0 +1,4 @@
+kms_force_connector_basic@force-connector-state
+kms_force_connector_basic@force-edid
+kms_force_connector_basic@force-load-detect
+kms_force_connector_basic@prune-stale-modes
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt b/drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt
new file mode 100644
index 000000000000..cd49c8ce2059
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt
@@ -0,0 +1,2 @@
+# Whole machine hangs
+kms_cursor_legacy@all-pipes-torture-move
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-fails.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-fails.txt
new file mode 100644
index 000000000000..cfa25fe97498
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-fails.txt
@@ -0,0 +1,21 @@
+kms_cursor_legacy@cursor-vs-flip-toggle,Fail
+kms_cursor_legacy@cursorA-vs-flipA-atomic-transitions,Crash
+kms_plane@pixel-format,Fail
+kms_plane@pixel-format-source-clamping,Fail
+kms_plane@plane-position-covered,Fail
+kms_plane@plane-position-hole,Fail
+kms_plane@plane-position-hole-dpms,Fail
+kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
+kms_plane_alpha_blend@pipe-B-alpha-7efc,Fail
+kms_plane_alpha_blend@pipe-B-alpha-basic,Fail
+kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
+kms_plane_alpha_blend@pipe-B-constant-alpha-mid,Fail
+kms_plane_alpha_blend@pipe-B-coverage-7efc,Fail
+kms_plane_alpha_blend@pipe-B-coverage-vs-premult-vs-constant,Fail
+kms_rmfb@close-fd,Fail
+kms_rotation_crc@primary-rotation-180,Fail
+kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
+kms_universal_plane@disable-primary-vs-flip-pipe-b,Fail
diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-flakes.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-flakes.txt
new file mode 100644
index 000000000000..b01aa5b35dce
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-flakes.txt
@@ -0,0 +1,6 @@
+# Test ends up reading CRC from frame before cursor update
+# sometimes.. tbd if this is a kernel CRC bug or a test
+# bug
+kms_cursor_crc@.*
+
+kms_plane_multiple@atomic-pipe-A-tiling-none
diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-skips.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-skips.txt
new file mode 100644
index 000000000000..410e0eeb3161
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-skips.txt
@@ -0,0 +1,23 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# Test incorrectly assumes that CTM support implies gamma/degamma
+# LUT support.  None of the subtests handle the case of only having
+# CTM support
+kms_color.*
+
+# 4k@60 is not supported on this hw, but driver doesn't handle it
+# too gracefully.. https://gitlab.freedesktop.org/drm/msm/-/issues/15
+kms_bw@linear-tiling-.*-displays-3840x2160p
+
+# Until igt fix lands: https://patchwork.freedesktop.org/patch/493175/
+kms_bw@linear-tiling-2.*
+kms_bw@linear-tiling-3.*
+kms_bw@linear-tiling-4.*
+kms_bw@linear-tiling-5.*
+kms_bw@linear-tiling-6.*
+
+# igt fix posted: https://patchwork.freedesktop.org/patch/499926/
+# failure mode is flakey due to randomization but fails frequently
+# enough to be detected as a Crash or occasionally UnexpectedPass.
+kms_plane_multiple@atomic-pipe-A-tiling-none
diff --git a/drivers/gpu/drm/ci/xfails/msm-sdm845-fails.txt b/drivers/gpu/drm/ci/xfails/msm-sdm845-fails.txt
new file mode 100644
index 000000000000..e07bb8c4216c
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-sdm845-fails.txt
@@ -0,0 +1,43 @@
+kms_color@pipe-A-ctm-0-25,Fail
+kms_color@pipe-A-ctm-0-5,Fail
+kms_color@pipe-A-ctm-0-75,Fail
+kms_color@pipe-A-ctm-blue-to-red,Fail
+kms_color@pipe-A-ctm-green-to-red,Fail
+kms_color@pipe-A-ctm-max,Fail
+kms_color@pipe-A-ctm-negative,Fail
+kms_color@pipe-A-ctm-red-to-blue,Fail
+kms_color@pipe-A-legacy-gamma,Fail
+kms_cursor_legacy@basic-flip-after-cursor-atomic,Fail
+kms_cursor_legacy@basic-flip-after-cursor-legacy,Fail
+kms_cursor_legacy@basic-flip-before-cursor-atomic,Fail
+kms_cursor_legacy@basic-flip-before-cursor-legacy,Fail
+kms_cursor_legacy@cursor-vs-flip-atomic,Fail
+kms_cursor_legacy@cursor-vs-flip-atomic-transitions,Fail
+kms_cursor_legacy@cursor-vs-flip-legacy,Fail
+kms_cursor_legacy@cursor-vs-flip-toggle,Fail
+kms_cursor_legacy@flip-vs-cursor-atomic,Fail
+kms_cursor_legacy@flip-vs-cursor-crc-atomic,Fail
+kms_cursor_legacy@flip-vs-cursor-crc-legacy,Fail
+kms_cursor_legacy@flip-vs-cursor-legacy,Fail
+kms_cursor_legacy@short-flip-after-cursor-atomic-transitions,Fail
+kms_cursor_legacy@short-flip-after-cursor-toggle,Fail
+kms_cursor_legacy@short-flip-before-cursor-atomic-transitions,Fail
+kms_plane@pixel-format,Fail
+kms_plane@pixel-format-source-clamping,Fail
+kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
+kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
+kms_plane_cursor@pipe-A-overlay-size-128,Fail
+kms_plane_cursor@pipe-A-overlay-size-256,Fail
+kms_plane_cursor@pipe-A-overlay-size-64,Fail
+kms_plane_cursor@pipe-A-viewport-size-128,Fail
+kms_plane_cursor@pipe-A-viewport-size-256,Fail
+kms_plane_cursor@pipe-A-viewport-size-64,Fail
+kms_plane_scaling@downscale-with-pixel-format-factor-0-25,Timeout
+kms_plane_scaling@downscale-with-pixel-format-factor-0-5,Timeout
+kms_plane_scaling@downscale-with-pixel-format-factor-0-75,Timeout
+kms_plane_scaling@invalid-num-scalers,Fail
+kms_plane_scaling@planes-downscale-factor-0-25,Fail
+kms_plane_scaling@scaler-with-clipping-clamping,Timeout
+kms_plane_scaling@scaler-with-pixel-format-unity-scaling,Timeout
+kms_rmfb@close-fd,Fail
diff --git a/drivers/gpu/drm/ci/xfails/msm-sdm845-flakes.txt b/drivers/gpu/drm/ci/xfails/msm-sdm845-flakes.txt
new file mode 100644
index 000000000000..ceccd9947c82
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-sdm845-flakes.txt
@@ -0,0 +1,11 @@
+# Test ends up reading CRC from frame before cursor update
+# sometimes.. tbd if this is a kernel CRC bug or a test
+# bug
+kms_cursor_crc@.*
+
+kms_cursor_legacy@flip-vs-cursor-toggle
+kms_cursor_legacy@pipe-A-forked-bo
+kms_cursor_legacy@pipe-A-forked-move
+kms_cursor_legacy@short-flip-before-cursor-toggle
+
+kms_flip@dpms-vs-vblank-race-interruptible
diff --git a/drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt b/drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt
new file mode 100644
index 000000000000..42675f1c6d76
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt
@@ -0,0 +1,2 @@
+# Hangs machine
+kms_bw.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3288-fails.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-fails.txt
new file mode 100644
index 000000000000..0a2f5c04857a
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-fails.txt
@@ -0,0 +1,43 @@
+kms_3d,Fail
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_bw@linear-tiling-3-displays-1920x1080p,Fail
+kms_bw@linear-tiling-3-displays-2560x1440p,Fail
+kms_bw@linear-tiling-3-displays-3840x2160p,Fail
+kms_force_connector_basic@force-connector-state,Fail
+kms_force_connector_basic@force-edid,Fail
+kms_force_connector_basic@force-load-detect,Fail
+kms_force_connector_basic@prune-stale-modes,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_plane_cursor@pipe-A-overlay-size-128,Fail
+kms_plane_cursor@pipe-A-overlay-size-256,Fail
+kms_plane_cursor@pipe-A-overlay-size-64,Fail
+kms_plane_cursor@pipe-A-primary-size-128,Fail
+kms_plane_cursor@pipe-A-primary-size-256,Fail
+kms_plane_cursor@pipe-A-primary-size-64,Fail
+kms_plane_cursor@pipe-A-viewport-size-128,Fail
+kms_plane_cursor@pipe-A-viewport-size-256,Fail
+kms_plane_cursor@pipe-A-viewport-size-64,Fail
+kms_plane_cursor@pipe-B-overlay-size-128,Fail
+kms_plane_cursor@pipe-B-overlay-size-256,Fail
+kms_plane_cursor@pipe-B-overlay-size-64,Fail
+kms_plane_cursor@pipe-B-primary-size-128,Fail
+kms_plane_cursor@pipe-B-primary-size-256,Fail
+kms_plane_cursor@pipe-B-primary-size-64,Fail
+kms_plane_cursor@pipe-B-viewport-size-128,Fail
+kms_plane_cursor@pipe-B-viewport-size-256,Fail
+kms_plane_cursor@pipe-B-viewport-size-64,Fail
+kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
+kms_plane_scaling@upscale-with-modifier-20x20,Fail
+kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
+kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_prime@basic-crc,Fail
+kms_properties@connector-properties-atomic,Fail
+kms_properties@get_properties-sanity-atomic,Fail
+kms_properties@get_properties-sanity-non-atomic,Fail
+kms_rmfb@close-fd,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3288-flakes.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-flakes.txt
new file mode 100644
index 000000000000..1f20b75a19fa
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-flakes.txt
@@ -0,0 +1,2 @@
+kms_cursor_crc@.*
+kms_pipe_crc_basic@.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3288-skips.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-skips.txt
new file mode 100644
index 000000000000..223937ae7948
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-skips.txt
@@ -0,0 +1,49 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# Too unstable, machine ends up hanging after lots of Oopses
+kms_cursor_legacy.*
+
+# Started hanging the machine on Linux 5.19-rc2:
+#
+# [IGT] kms_plane_lowres: executing
+# [IGT] kms_plane_lowres: starting subtest pipe-F-tiling-y
+# [IGT] kms_plane_lowres: exiting, ret=77
+# Console: switching to colour frame buffer device 170x48
+# rockchip-drm display-subsystem: [drm] *ERROR* flip_done timed out
+# rockchip-drm display-subsystem: [drm] *ERROR* [CRTC:35:crtc-0] commit wait timed out
+# BUG: spinlock bad magic on CPU#3, kms_plane_lowre/482
+# 8<--- cut here ---
+# Unable to handle kernel paging request at virtual address 7812078e
+# [7812078e] *pgd=00000000
+# Internal error: Oops: 5 [#1] SMP ARM
+# Modules linked in:
+# CPU: 3 PID: 482 Comm: kms_plane_lowre Tainted: G        W         5.19.0-rc2-323596-g00535de92171 #1
+# Hardware name: Rockchip (Device Tree)
+# Process kms_plane_lowre (pid: 482, stack limit = 0x1193ac2b)
+#  spin_dump from do_raw_spin_lock+0xa4/0xe8
+#  do_raw_spin_lock from wait_for_completion_timeout+0x2c/0x120
+#  wait_for_completion_timeout from drm_crtc_commit_wait+0x18/0x7c
+#  drm_crtc_commit_wait from drm_atomic_helper_wait_for_dependencies+0x44/0x168
+#  drm_atomic_helper_wait_for_dependencies from commit_tail+0x34/0x180
+#  commit_tail from drm_atomic_helper_commit+0x164/0x18c
+#  drm_atomic_helper_commit from drm_atomic_commit+0xac/0xe4
+#  drm_atomic_commit from drm_client_modeset_commit_atomic+0x23c/0x284
+#  drm_client_modeset_commit_atomic from drm_client_modeset_commit_locked+0x60/0x1c8
+#  drm_client_modeset_commit_locked from drm_client_modeset_commit+0x24/0x40
+#  drm_client_modeset_commit from drm_fbdev_client_restore+0x58/0x94
+#  drm_fbdev_client_restore from drm_client_dev_restore+0x70/0xbc
+#  drm_client_dev_restore from drm_release+0xf4/0x114
+#  drm_release from __fput+0x74/0x240
+#  __fput from task_work_run+0x84/0xb4
+#  task_work_run from do_exit+0x34c/0xa20
+#  do_exit from do_group_exit+0x34/0x98
+#  do_group_exit from __wake_up_parent+0x0/0x18
+# Code: e595c008 12843d19 03e00000 03093168 (15940508)
+# ---[ end trace 0000000000000000 ]---
+# note: kms_plane_lowre[482] exited with preempt_count 1
+# Fixing recursive fault but reboot is needed!
+kms_plane_lowres@pipe-F-tiling-y
+
+# Take too long, we have only two machines, and these are very flaky
+kms_cursor_crc.*
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3399-fails.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-fails.txt
new file mode 100644
index 000000000000..ebaa2f96e76b
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-fails.txt
@@ -0,0 +1,29 @@
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_color@pipe-A-legacy-gamma,Fail
+kms_color@pipe-B-legacy-gamma,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_plane@plane-panning-bottom-right,Fail
+kms_plane@plane-panning-top-left,Fail
+kms_plane_cursor@pipe-B-overlay-size-128,Fail
+kms_plane_cursor@pipe-B-overlay-size-256,Fail
+kms_plane_cursor@pipe-B-overlay-size-64,Fail
+kms_plane_cursor@pipe-B-primary-size-128,Fail
+kms_plane_cursor@pipe-B-primary-size-256,Fail
+kms_plane_cursor@pipe-B-primary-size-64,Fail
+kms_plane_cursor@pipe-B-viewport-size-128,Fail
+kms_plane_cursor@pipe-B-viewport-size-256,Fail
+kms_plane_cursor@pipe-B-viewport-size-64,Fail
+kms_plane_multiple@atomic-pipe-B-tiling-none,Fail
+kms_prime@basic-crc,Fail
+kms_rmfb@close-fd,Fail
+kms_universal_plane@universal-plane-pipe-B-functional,Fail
+kms_vblank@pipe-A-query-forked,Fail
+kms_vblank@pipe-A-query-idle,Fail
+kms_vblank@pipe-A-wait-busy,Fail
+kms_vblank@pipe-A-wait-forked,Fail
+kms_vblank@pipe-A-wait-forked-busy,Fail
+kms_vblank@pipe-B-query-forked,Fail
+kms_vblank@pipe-B-query-idle,Fail
+kms_vblank@pipe-B-wait-busy,Fail
+kms_vblank@pipe-B-wait-forked,Fail
+kms_vblank@pipe-B-wait-forked-busy,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3399-flakes.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-flakes.txt
new file mode 100644
index 000000000000..5808ccee025d
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-flakes.txt
@@ -0,0 +1,20 @@
+kms_cursor_crc@.*
+kms_pipe_crc_basic@.*
+
+kms_flip@flip-vs-expired-vblank
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-A
+kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-B
+kms_plane_multiple@atomic-pipe-A-tiling-none
+kms_plane_multiple@atomic-pipe-B-tiling-none
+kms_plane@plane-position-hole
+kms_sequence@get-forked
+kms_sequence@get-forked-busy
+kms_setmode@basic
+kms_vblank@pipe-A-accuracy-idle
+kms_vblank@pipe-A-query-busy
+kms_vblank@pipe-A-query-forked-busy
+kms_vblank@pipe-A-wait-idle
+kms_vblank@pipe-B-accuracy-idle
+kms_vblank@pipe-B-query-busy
+kms_vblank@pipe-B-query-forked-busy
+kms_vblank@pipe-B-wait-idle
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3399-skips.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-skips.txt
new file mode 100644
index 000000000000..10c3d81a919a
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-skips.txt
@@ -0,0 +1,5 @@
+# Suspend to RAM seems to be broken on this machine
+.*suspend.*
+
+# Too unstable, machine ends up hanging after lots of Oopses
+kms_cursor_legacy.*
diff --git a/drivers/gpu/drm/ci/xfails/virtio_gpu-none-fails.txt b/drivers/gpu/drm/ci/xfails/virtio_gpu-none-fails.txt
new file mode 100644
index 000000000000..2178bdd064dd
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/virtio_gpu-none-fails.txt
@@ -0,0 +1,38 @@
+kms_addfb_basic@addfb25-bad-modifier,Fail
+kms_addfb_basic@bad-pitch-65536,Fail
+kms_addfb_basic@bo-too-small,Fail
+kms_addfb_basic@size-max,Fail
+kms_addfb_basic@too-high,Fail
+kms_atomic_transition@plane-primary-toggle-with-vblank-wait,Fail
+kms_bw@linear-tiling-1-displays-1920x1080p,Fail
+kms_bw@linear-tiling-1-displays-2560x1440p,Fail
+kms_bw@linear-tiling-1-displays-3840x2160p,Fail
+kms_bw@linear-tiling-2-displays-1920x1080p,Fail
+kms_bw@linear-tiling-2-displays-2560x1440p,Fail
+kms_bw@linear-tiling-2-displays-3840x2160p,Fail
+kms_invalid_mode@int-max-clock,Fail
+kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
+kms_plane_scaling@planes-upscale-20x20,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
+kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
+kms_plane_scaling@upscale-with-modifier-20x20,Fail
+kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
+kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
+kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
+kms_plane_scaling@upscale-with-rotation-20x20,Fail
+kms_vblank@crtc-id,Fail
+kms_vblank@invalid,Fail
+kms_vblank@pipe-A-accuracy-idle,Fail
+kms_vblank@pipe-A-query-busy,Fail
+kms_vblank@pipe-A-query-forked,Fail
+kms_vblank@pipe-A-query-forked-busy,Fail
+kms_vblank@pipe-A-query-idle,Fail
+kms_vblank@pipe-A-ts-continuation-idle,Fail
+kms_vblank@pipe-A-ts-continuation-modeset,Fail
+kms_vblank@pipe-A-ts-continuation-suspend,Fail
+kms_vblank@pipe-A-wait-busy,Fail
+kms_vblank@pipe-A-wait-forked,Fail
+kms_vblank@pipe-A-wait-forked-busy,Fail
+kms_vblank@pipe-A-wait-idle,Fail
\ No newline at end of file
diff --git a/drivers/gpu/drm/ci/xfails/virtio_gpu-none-flakes.txt b/drivers/gpu/drm/ci/xfails/virtio_gpu-none-flakes.txt
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/drivers/gpu/drm/ci/xfails/virtio_gpu-none-skips.txt b/drivers/gpu/drm/ci/xfails/virtio_gpu-none-skips.txt
new file mode 100644
index 000000000000..78be18174012
--- /dev/null
+++ b/drivers/gpu/drm/ci/xfails/virtio_gpu-none-skips.txt
@@ -0,0 +1,6 @@
+# Hits a "refcount_t: underflow; use-after-free" in virtio_gpu_fence_event_process
+# When run in a particular order with other tests
+kms_cursor_legacy.*
+
+# Job just hangs without any output
+kms_flip@flip-vs-suspend.*
\ No newline at end of file
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 49+ messages in thread

* Re: [PATCH v9] drm: Add initial ci/ subdirectory
  2022-09-12  7:29               ` [PATCH v9] " Tomeu Vizoso
@ 2022-10-14 17:10                 ` Rob Clark
  2022-10-24 22:06                 ` Jessica Zhang
  1 sibling, 0 replies; 49+ messages in thread
From: Rob Clark @ 2022-10-14 17:10 UTC (permalink / raw)
  To: Tomeu Vizoso
  Cc: Rob Clark, Jonathan Corbet, David Airlie, Kevin Hilman,
	linux-doc, linux-kernel, dri-devel, Neil Armstrong,
	Matthias Brugger, linux-rockchip, linux-mediatek, Carlo Caione,
	linux-amlogic, kernel, linux-arm-kernel

On Mon, Sep 12, 2022 at 12:29 AM Tomeu Vizoso
<tomeu.vizoso@collabora.com> wrote:
>
> And use it to store expectations about what the DRM drivers are
> supposed to pass in the IGT test suite.
>
> Also include a configuration file that points to the out-of-tree CI
> scripts.
>
> By storing the test expectations along the code we can make sure both
> stay in sync with each other, and so we can know when a code change
> breaks those expectations.
>
> This will allow all contributors to drm to reuse the infrastructure
> already in gitlab.freedesktop.org to test the driver on several
> generations of the hardware.
>
> v2:
>   - Fix names of result expectation files to match SoC
>   - Don't execute tests that are going to skip on all boards
>
> v3:
>   - Remove tracking of dmesg output during test execution
>
> v4:
>   - Move up to drivers/gpu/drm
>   - Add support for a bunch of other drivers
>   - Explain how to incorporate fixes for CI from a
>     ${TARGET_BRANCH}-external-fixes branch
>   - Remove tests that pass from expected results file, to reduce the
>     size of in-tree files
>   - Add docs about how to deal with outages in automated testing labs
>   - Specify the exact SHA of the CI scripts to be used
>
> v5:
>   - Remove unneeded skips from Meson expectations file
>   - Use a more advanced runner that detects flakes automatically
>   - Use a more succint format for the expectations
>   - Run many more tests (and use sharding to finish in time)
>   - Use skip lists to avoid hanging machines
>   - Add some build testing
>   - Build IGT in each pipeline for faster uprevs
>   - List failures in the GitLab UI
>
> v6:
>   - Rebase on top of latest drm-next
>   - Lower priority of LAVA jobs to not impact Mesa CI as much
>   - Update docs
>
> v7:
>   - Rebase on top of latest drm-next
>
> v8:
>   - Move all files specific to testing the kernel into the kernel tree
>     (thus I have dropped the r-bs I had collected so far)
>   - Uprev Gitlab CI infrastructure scripts to the latest from Mesa
>   - Add MAINTAINERS entry
>   - Fix boot on MT8173 by adding some Kconfigs that are now needed
>   - Link to the docs from index.rst and hard-wrap the file
>
> v9:
>   - Only automatically run the pipelines for merge requests
>   - Switch to zstd for the build artifacts to align with Mesa
>   - Add Qcom USB PHYs to config as they are now =m in the defconfig
>
> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>

Reviewed-by: Rob Clark <robdclark@gmail.com>

> ---
>  Documentation/gpu/automated_testing.rst       |  144 +
>  Documentation/gpu/index.rst                   |    1 +
>  MAINTAINERS                                   |    8 +
>  drivers/gpu/drm/ci/arm.config                 |   57 +
>  drivers/gpu/drm/ci/arm64.config               |  179 ++
>  drivers/gpu/drm/ci/build-igt.sh               |   43 +
>  drivers/gpu/drm/ci/build.sh                   |  158 +
>  drivers/gpu/drm/ci/build.yml                  |  110 +
>  drivers/gpu/drm/ci/check-patch.py             |   57 +
>  drivers/gpu/drm/ci/container.yml              |   54 +
>  drivers/gpu/drm/ci/gitlab-ci.yml              |  225 ++
>  drivers/gpu/drm/ci/igt_runner.sh              |   77 +
>  drivers/gpu/drm/ci/image-tags.yml             |   13 +
>  drivers/gpu/drm/ci/lava-submit.sh             |   53 +
>  drivers/gpu/drm/ci/static-checks.yml          |   12 +
>  drivers/gpu/drm/ci/test.yml                   |  322 ++
>  drivers/gpu/drm/ci/testlist.txt               | 2763 +++++++++++++++++
>  drivers/gpu/drm/ci/x86_64.config              |  105 +
>  .../gpu/drm/ci/xfails/amdgpu-stoney-fails.txt |   19 +
>  .../drm/ci/xfails/amdgpu-stoney-flakes.txt    |   15 +
>  .../gpu/drm/ci/xfails/amdgpu-stoney-skips.txt |    2 +
>  .../gpu/drm/ci/xfails/i915-amly-flakes.txt    |   32 +
>  drivers/gpu/drm/ci/xfails/i915-amly-skips.txt |    2 +
>  drivers/gpu/drm/ci/xfails/i915-apl-fails.txt  |   29 +
>  drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt |    1 +
>  drivers/gpu/drm/ci/xfails/i915-apl-skips.txt  |    2 +
>  drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt |   37 +
>  drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt |   40 +
>  drivers/gpu/drm/ci/xfails/i915-glk-skips.txt  |    2 +
>  drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt  |    8 +
>  drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt |   25 +
>  drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt  |    2 +
>  drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt  |   19 +
>  drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt |    5 +
>  drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt  |    8 +
>  drivers/gpu/drm/ci/xfails/i915-whl-fails.txt  |   30 +
>  drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt |    1 +
>  .../drm/ci/xfails/mediatek-mt8173-fails.txt   |   29 +
>  .../drm/ci/xfails/mediatek-mt8183-fails.txt   |   10 +
>  .../drm/ci/xfails/mediatek-mt8183-flakes.txt  |   14 +
>  .../gpu/drm/ci/xfails/meson-g12b-fails.txt    |    5 +
>  .../gpu/drm/ci/xfails/meson-g12b-flakes.txt   |    4 +
>  .../gpu/drm/ci/xfails/msm-apq8016-fails.txt   |   15 +
>  .../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-apq8096-skips.txt   |    2 +
>  .../gpu/drm/ci/xfails/msm-sc7180-fails.txt    |   21 +
>  .../gpu/drm/ci/xfails/msm-sc7180-flakes.txt   |    6 +
>  .../gpu/drm/ci/xfails/msm-sc7180-skips.txt    |   23 +
>  .../gpu/drm/ci/xfails/msm-sdm845-fails.txt    |   43 +
>  .../gpu/drm/ci/xfails/msm-sdm845-flakes.txt   |   11 +
>  .../gpu/drm/ci/xfails/msm-sdm845-skips.txt    |    2 +
>  .../drm/ci/xfails/rockchip-rk3288-fails.txt   |   43 +
>  .../drm/ci/xfails/rockchip-rk3288-flakes.txt  |    2 +
>  .../drm/ci/xfails/rockchip-rk3288-skips.txt   |   49 +
>  .../drm/ci/xfails/rockchip-rk3399-fails.txt   |   29 +
>  .../drm/ci/xfails/rockchip-rk3399-flakes.txt  |   20 +
>  .../drm/ci/xfails/rockchip-rk3399-skips.txt   |    5 +
>  .../drm/ci/xfails/virtio_gpu-none-fails.txt   |   38 +
>  .../drm/ci/xfails/virtio_gpu-none-flakes.txt  |    0
>  .../drm/ci/xfails/virtio_gpu-none-skips.txt   |    6 +
>  62 files changed, 5047 insertions(+)
>  create mode 100644 Documentation/gpu/automated_testing.rst
>  create mode 100644 drivers/gpu/drm/ci/arm.config
>  create mode 100644 drivers/gpu/drm/ci/arm64.config
>  create mode 100644 drivers/gpu/drm/ci/build-igt.sh
>  create mode 100644 drivers/gpu/drm/ci/build.sh
>  create mode 100644 drivers/gpu/drm/ci/build.yml
>  create mode 100755 drivers/gpu/drm/ci/check-patch.py
>  create mode 100644 drivers/gpu/drm/ci/container.yml
>  create mode 100644 drivers/gpu/drm/ci/gitlab-ci.yml
>  create mode 100755 drivers/gpu/drm/ci/igt_runner.sh
>  create mode 100644 drivers/gpu/drm/ci/image-tags.yml
>  create mode 100755 drivers/gpu/drm/ci/lava-submit.sh
>  create mode 100644 drivers/gpu/drm/ci/static-checks.yml
>  create mode 100644 drivers/gpu/drm/ci/test.yml
>  create mode 100644 drivers/gpu/drm/ci/testlist.txt
>  create mode 100644 drivers/gpu/drm/ci/x86_64.config
>  create mode 100644 drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/i915-amly-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/i915-apl-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/i915-apl-skips.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-glk-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/i915-whl-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8173-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8183-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8183-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/meson-g12b-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/meson-g12b-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8016-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8016-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8096-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/msm-sc7180-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/msm-sc7180-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/msm-sc7180-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/msm-sdm845-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/msm-sdm845-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3288-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3288-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3288-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3399-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3399-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3399-skips.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/virtio_gpu-none-fails.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/virtio_gpu-none-flakes.txt
>  create mode 100644 drivers/gpu/drm/ci/xfails/virtio_gpu-none-skips.txt
>
[snip]

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [PATCH v9] drm: Add initial ci/ subdirectory
  2022-09-12  7:29               ` [PATCH v9] " Tomeu Vizoso
  2022-10-14 17:10                 ` Rob Clark
@ 2022-10-24 22:06                 ` Jessica Zhang
  1 sibling, 0 replies; 49+ messages in thread
From: Jessica Zhang @ 2022-10-24 22:06 UTC (permalink / raw)
  To: Tomeu Vizoso, David Airlie, Daniel Vetter, Jonathan Corbet,
	Carlo Caione, Kevin Hilman, Heiko Stuebner, Matthias Brugger,
	Rob Clark
  Cc: Neil Armstrong, linux-doc, linux-kernel, dri-devel,
	linux-rockchip, linux-mediatek, linux-amlogic, kernel,
	linux-arm-kernel



On 9/12/2022 12:29 AM, Tomeu Vizoso wrote:
> And use it to store expectations about what the DRM drivers are
> supposed to pass in the IGT test suite.
> 
> Also include a configuration file that points to the out-of-tree CI
> scripts.
> 
> By storing the test expectations along the code we can make sure both
> stay in sync with each other, and so we can know when a code change
> breaks those expectations.
> 
> This will allow all contributors to drm to reuse the infrastructure
> already in gitlab.freedesktop.org to test the driver on several
> generations of the hardware.
> 
> v2:
>    - Fix names of result expectation files to match SoC
>    - Don't execute tests that are going to skip on all boards
> 
> v3:
>    - Remove tracking of dmesg output during test execution
> 
> v4:
>    - Move up to drivers/gpu/drm
>    - Add support for a bunch of other drivers
>    - Explain how to incorporate fixes for CI from a
>      ${TARGET_BRANCH}-external-fixes branch
>    - Remove tests that pass from expected results file, to reduce the
>      size of in-tree files
>    - Add docs about how to deal with outages in automated testing labs
>    - Specify the exact SHA of the CI scripts to be used
> 
> v5:
>    - Remove unneeded skips from Meson expectations file
>    - Use a more advanced runner that detects flakes automatically
>    - Use a more succint format for the expectations
>    - Run many more tests (and use sharding to finish in time)
>    - Use skip lists to avoid hanging machines
>    - Add some build testing
>    - Build IGT in each pipeline for faster uprevs
>    - List failures in the GitLab UI
> 
> v6:
>    - Rebase on top of latest drm-next
>    - Lower priority of LAVA jobs to not impact Mesa CI as much
>    - Update docs
> 
> v7:
>    - Rebase on top of latest drm-next
> 
> v8:
>    - Move all files specific to testing the kernel into the kernel tree
>      (thus I have dropped the r-bs I had collected so far)
>    - Uprev Gitlab CI infrastructure scripts to the latest from Mesa
>    - Add MAINTAINERS entry
>    - Fix boot on MT8173 by adding some Kconfigs that are now needed
>    - Link to the docs from index.rst and hard-wrap the file
> 
> v9:
>    - Only automatically run the pipelines for merge requests
>    - Switch to zstd for the build artifacts to align with Mesa
>    - Add Qcom USB PHYs to config as they are now =m in the defconfig
> 
> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>

Acked-by: Jessica Zhang <quic_jesszhan@quicinc.com>

> ---
>   Documentation/gpu/automated_testing.rst       |  144 +
>   Documentation/gpu/index.rst                   |    1 +
>   MAINTAINERS                                   |    8 +
>   drivers/gpu/drm/ci/arm.config                 |   57 +
>   drivers/gpu/drm/ci/arm64.config               |  179 ++
>   drivers/gpu/drm/ci/build-igt.sh               |   43 +
>   drivers/gpu/drm/ci/build.sh                   |  158 +
>   drivers/gpu/drm/ci/build.yml                  |  110 +
>   drivers/gpu/drm/ci/check-patch.py             |   57 +
>   drivers/gpu/drm/ci/container.yml              |   54 +
>   drivers/gpu/drm/ci/gitlab-ci.yml              |  225 ++
>   drivers/gpu/drm/ci/igt_runner.sh              |   77 +
>   drivers/gpu/drm/ci/image-tags.yml             |   13 +
>   drivers/gpu/drm/ci/lava-submit.sh             |   53 +
>   drivers/gpu/drm/ci/static-checks.yml          |   12 +
>   drivers/gpu/drm/ci/test.yml                   |  322 ++
>   drivers/gpu/drm/ci/testlist.txt               | 2763 +++++++++++++++++
>   drivers/gpu/drm/ci/x86_64.config              |  105 +
>   .../gpu/drm/ci/xfails/amdgpu-stoney-fails.txt |   19 +
>   .../drm/ci/xfails/amdgpu-stoney-flakes.txt    |   15 +
>   .../gpu/drm/ci/xfails/amdgpu-stoney-skips.txt |    2 +
>   .../gpu/drm/ci/xfails/i915-amly-flakes.txt    |   32 +
>   drivers/gpu/drm/ci/xfails/i915-amly-skips.txt |    2 +
>   drivers/gpu/drm/ci/xfails/i915-apl-fails.txt  |   29 +
>   drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt |    1 +
>   drivers/gpu/drm/ci/xfails/i915-apl-skips.txt  |    2 +
>   drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt |   37 +
>   drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt |   40 +
>   drivers/gpu/drm/ci/xfails/i915-glk-skips.txt  |    2 +
>   drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt  |    8 +
>   drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt |   25 +
>   drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt  |    2 +
>   drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt  |   19 +
>   drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt |    5 +
>   drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt  |    8 +
>   drivers/gpu/drm/ci/xfails/i915-whl-fails.txt  |   30 +
>   drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt |    1 +
>   .../drm/ci/xfails/mediatek-mt8173-fails.txt   |   29 +
>   .../drm/ci/xfails/mediatek-mt8183-fails.txt   |   10 +
>   .../drm/ci/xfails/mediatek-mt8183-flakes.txt  |   14 +
>   .../gpu/drm/ci/xfails/meson-g12b-fails.txt    |    5 +
>   .../gpu/drm/ci/xfails/meson-g12b-flakes.txt   |    4 +
>   .../gpu/drm/ci/xfails/msm-apq8016-fails.txt   |   15 +
>   .../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-apq8096-skips.txt   |    2 +
>   .../gpu/drm/ci/xfails/msm-sc7180-fails.txt    |   21 +
>   .../gpu/drm/ci/xfails/msm-sc7180-flakes.txt   |    6 +
>   .../gpu/drm/ci/xfails/msm-sc7180-skips.txt    |   23 +
>   .../gpu/drm/ci/xfails/msm-sdm845-fails.txt    |   43 +
>   .../gpu/drm/ci/xfails/msm-sdm845-flakes.txt   |   11 +
>   .../gpu/drm/ci/xfails/msm-sdm845-skips.txt    |    2 +
>   .../drm/ci/xfails/rockchip-rk3288-fails.txt   |   43 +
>   .../drm/ci/xfails/rockchip-rk3288-flakes.txt  |    2 +
>   .../drm/ci/xfails/rockchip-rk3288-skips.txt   |   49 +
>   .../drm/ci/xfails/rockchip-rk3399-fails.txt   |   29 +
>   .../drm/ci/xfails/rockchip-rk3399-flakes.txt  |   20 +
>   .../drm/ci/xfails/rockchip-rk3399-skips.txt   |    5 +
>   .../drm/ci/xfails/virtio_gpu-none-fails.txt   |   38 +
>   .../drm/ci/xfails/virtio_gpu-none-flakes.txt  |    0
>   .../drm/ci/xfails/virtio_gpu-none-skips.txt   |    6 +
>   62 files changed, 5047 insertions(+)
>   create mode 100644 Documentation/gpu/automated_testing.rst
>   create mode 100644 drivers/gpu/drm/ci/arm.config
>   create mode 100644 drivers/gpu/drm/ci/arm64.config
>   create mode 100644 drivers/gpu/drm/ci/build-igt.sh
>   create mode 100644 drivers/gpu/drm/ci/build.sh
>   create mode 100644 drivers/gpu/drm/ci/build.yml
>   create mode 100755 drivers/gpu/drm/ci/check-patch.py
>   create mode 100644 drivers/gpu/drm/ci/container.yml
>   create mode 100644 drivers/gpu/drm/ci/gitlab-ci.yml
>   create mode 100755 drivers/gpu/drm/ci/igt_runner.sh
>   create mode 100644 drivers/gpu/drm/ci/image-tags.yml
>   create mode 100755 drivers/gpu/drm/ci/lava-submit.sh
>   create mode 100644 drivers/gpu/drm/ci/static-checks.yml
>   create mode 100644 drivers/gpu/drm/ci/test.yml
>   create mode 100644 drivers/gpu/drm/ci/testlist.txt
>   create mode 100644 drivers/gpu/drm/ci/x86_64.config
>   create mode 100644 drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/i915-amly-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/i915-apl-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/i915-apl-skips.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-glk-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/i915-whl-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8173-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8183-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/mediatek-mt8183-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/meson-g12b-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/meson-g12b-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8016-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8016-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8096-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/msm-sc7180-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/msm-sc7180-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/msm-sc7180-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/msm-sdm845-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/msm-sdm845-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3288-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3288-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3288-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3399-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3399-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/rockchip-rk3399-skips.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/virtio_gpu-none-fails.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/virtio_gpu-none-flakes.txt
>   create mode 100644 drivers/gpu/drm/ci/xfails/virtio_gpu-none-skips.txt
> 
> diff --git a/Documentation/gpu/automated_testing.rst b/Documentation/gpu/automated_testing.rst
> new file mode 100644
> index 000000000000..1b87b802ac7f
> --- /dev/null
> +++ b/Documentation/gpu/automated_testing.rst
> @@ -0,0 +1,144 @@
> +.. SPDX-License-Identifier: GPL-2.0+
> +
> +=========================================
> +Automated testing of the DRM subsystem
> +=========================================
> +
> +Introduction
> +============
> +
> +Making sure that changes to the core or drivers don't introduce regressions can
> +be very time-consuming when lots of different hardware configurations need to
> +be tested. Moreover, it isn't practical for each person interested in this
> +testing to have to acquire and maintain what can be a considerable amount of
> +hardware.
> +
> +Also, it is desirable for developers to check for regressions in their code by
> +themselves, instead of relying on the maintainers to find them and then
> +reporting back.
> +
> +There are facilities in gitlab.freedesktop.org to automatically test Mesa that
> +can be used as well for testing the DRM subsystem. This document explains how
> +people interested in testing it can use this shared infrastructure to save
> +quite some time and effort.
> +
> +
> +Relevant files
> +==============
> +
> +drivers/gpu/drm/ci/gitlab-ci.yml
> +--------------------------------
> +
> +This is the root configuration file for GitLab CI. Among other less interesting
> +bits, it specifies the specific version of the scripts to be used. There are
> +some variables that can be modified to change the behavior of the pipeline:
> +
> +DRM_CI_PROJECT_PATH
> +    Repository that contains the Mesa software infrastructure for CI
> +
> +DRM_CI_COMMIT_SHA
> +    A particular revision to use from that repository
> +
> +UPSTREAM_REPO
> +    URL to git repository containing the target branch
> +
> +TARGET_BRANCH
> +    Branch to which this branch is to be merged into
> +
> +IGT_VERSION
> +    Revision of igt-gpu-tools being used, from
> +    https://gitlab.freedesktop.org/drm/igt-gpu-tools
> +
> +drivers/gpu/drm/ci/testlist.txt
> +-------------------------------
> +
> +IGT tests to be run on all drivers (unless mentioned in a driver's *-skips.txt
> +file, see below).
> +
> +drivers/gpu/drm/ci/${DRIVER_NAME}-${HW_REVISION}-fails.txt
> +----------------------------------------------------------
> +
> +Lists the known failures for a given driver on a specific hardware revision.
> +
> +drivers/gpu/drm/ci/${DRIVER_NAME}-${HW_REVISION}-flakes.txt
> +-----------------------------------------------------------
> +
> +Lists the tests that for a given driver on a specific hardware revision are
> +known to behave unreliably. These tests won't cause a job to fail regardless of
> +the result. They will still be run.
> +
> +drivers/gpu/drm/ci/${DRIVER_NAME}-${HW_REVISION}-skips.txt
> +-----------------------------------------------------------
> +
> +Lists the tests that won't be run for a given driver on a specific hardware
> +revision. These are usually tests that interfere with the running of the test
> +list due to hanging the machine, causing OOM, taking too long, etc.
> +
> +
> +How to enable automated testing on your tree
> +============================================
> +
> +1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one
> +yet
> +
> +2. In your kernel repo's configuration (eg.
> +https://gitlab.freedesktop.org/janedoe/linux/-/settings/ci_cd), change the
> +CI/CD configuration file from .gitlab-ci.yml to
> +drivers/gpu/drm/ci/gitlab-ci.yml.
> +
> +3. Next time you push to this repository, you will see a CI pipeline being
> +created (eg. https://gitlab.freedesktop.org/janedoe/linux/-/pipelines)
> +
> +4. The various jobs will be run and when the pipeline is finished, all jobs
> +should be green unless a regression has been found.
> +
> +
> +How to update test expectations
> +===============================
> +
> +If your changes to the code fix any tests, you will have to remove one or more
> +lines from one or more of the files in
> +drivers/gpu/drm/ci/${DRIVER_NAME}_*_fails.txt, for each of the test platforms
> +affected by the change.
> +
> +
> +How to expand coverage
> +======================
> +
> +If your code changes make it possible to run more tests (by solving reliability
> +issues, for example), you can remove tests from the flakes and/or skips lists,
> +and then the expected results if there are any known failures.
> +
> +If there is a need for updating the version of IGT being used (maybe you have
> +added more tests to it), update the IGT_VERSION variable at the top of the
> +gitlab-ci.yml file.
> +
> +
> +How to test your changes to the scripts
> +=======================================
> +
> +For testing changes to the scripts in the drm-ci repo, change the
> +DRM_CI_PROJECT_PATH and DRM_CI_COMMIT_SHA variables in
> +drivers/gpu/drm/ci/gitlab-ci.yml to match your fork of the project (eg.
> +janedoe/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
> +
> +
> +How to incorporate external fixes in your testing
> +=================================================
> +
> +Often, regressions in other trees will prevent testing changes local to the
> +tree under test. These fixes will be automatically merged in during the build
> +jobs from a branch in the target tree that is named as
> +${TARGET_BRANCH}-external-fixes.
> +
> +If the pipeline is not in a merge request and a branch with the same name
> +exists in the local tree, commits from that branch will be merged in as well.
> +
> +
> +How to deal with automated testing labs that may be down
> +========================================================
> +
> +If a hardware farm is down and thus causing pipelines to fail that would
> +otherwise pass, one can disable all jobs that would be submitted to that farm
> +by editing the file at
> +https://gitlab.freedesktop.org/gfx-ci/lab-status/-/blob/main/lab-status.yml.
> diff --git a/Documentation/gpu/index.rst b/Documentation/gpu/index.rst
> index b99dede9a5b1..23fe6600d1e9 100644
> --- a/Documentation/gpu/index.rst
> +++ b/Documentation/gpu/index.rst
> @@ -17,6 +17,7 @@ Linux GPU Driver Developer's Guide
>      backlight
>      vga-switcheroo
>      vgaarbiter
> +   automated_testing
>      todo
>      rfc/index
>   
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 9d7f64dc0efe..6703681e2ad6 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -7075,6 +7075,14 @@ T:	git git://anongit.freedesktop.org/drm/drm-misc
>   F:	drivers/gpu/drm/scheduler/
>   F:	include/drm/gpu_scheduler.h
>   
> +DRM AUTOMATED TESTING
> +M:	Tomeu Vizoso <tomeu.vizoso@collabora.com>
> +L:	dri-devel@lists.freedesktop.org
> +S:	Maintained
> +T:	git git://anongit.freedesktop.org/drm/drm-misc
> +F:	Documentation/gpu/automated_testing.rst
> +F:	drivers/gpu/drm/ci/
> +
>   DSBR100 USB FM RADIO DRIVER
>   M:	Alexey Klimov <klimov.linux@gmail.com>
>   L:	linux-media@vger.kernel.org
> diff --git a/drivers/gpu/drm/ci/arm.config b/drivers/gpu/drm/ci/arm.config
> new file mode 100644
> index 000000000000..21a5c7c23d58
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/arm.config
> @@ -0,0 +1,57 @@
> +CONFIG_LOCALVERSION_AUTO=y
> +CONFIG_DEBUG_KERNEL=y
> +
> +# abootimg with a 'dummy' rootfs fails with root=/dev/nfs
> +CONFIG_BLK_DEV_INITRD=n
> +
> +CONFIG_DEVFREQ_GOV_PERFORMANCE=y
> +CONFIG_DEVFREQ_GOV_POWERSAVE=y
> +CONFIG_DEVFREQ_GOV_USERSPACE=y
> +CONFIG_DEVFREQ_GOV_PASSIVE=y
> +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
> +
> +CONFIG_DRM=y
> +CONFIG_DRM_ETNAVIV=y
> +CONFIG_DRM_ROCKCHIP=y
> +CONFIG_DRM_PANFROST=y
> +CONFIG_DRM_LIMA=y
> +CONFIG_DRM_PANEL_SIMPLE=y
> +CONFIG_PWM_CROS_EC=y
> +CONFIG_BACKLIGHT_PWM=y
> +
> +CONFIG_ROCKCHIP_CDN_DP=n
> +
> +CONFIG_SPI_ROCKCHIP=y
> +CONFIG_PWM_ROCKCHIP=y
> +CONFIG_PHY_ROCKCHIP_DP=y
> +CONFIG_DWMAC_ROCKCHIP=y
> +
> +CONFIG_MFD_RK808=y
> +CONFIG_REGULATOR_RK808=y
> +CONFIG_RTC_DRV_RK808=y
> +CONFIG_COMMON_CLK_RK808=y
> +
> +CONFIG_REGULATOR_FAN53555=y
> +CONFIG_REGULATOR=y
> +
> +CONFIG_REGULATOR_VCTRL=y
> +
> +CONFIG_KASAN=n
> +CONFIG_KASAN_INLINE=n
> +CONFIG_STACKTRACE=n
> +
> +CONFIG_TMPFS=y
> +
> +CONFIG_PROVE_LOCKING=n
> +CONFIG_DEBUG_LOCKDEP=n
> +CONFIG_SOFTLOCKUP_DETECTOR=n
> +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=n
> +
> +CONFIG_FW_LOADER_COMPRESS=y
> +
> +CONFIG_USB_USBNET=y
> +CONFIG_NETDEVICES=y
> +CONFIG_USB_NET_DRIVERS=y
> +CONFIG_USB_RTL8152=y
> +CONFIG_USB_NET_AX8817X=y
> +CONFIG_USB_NET_SMSC95XX=y
> diff --git a/drivers/gpu/drm/ci/arm64.config b/drivers/gpu/drm/ci/arm64.config
> new file mode 100644
> index 000000000000..d1219501d3f8
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/arm64.config
> @@ -0,0 +1,179 @@
> +CONFIG_LOCALVERSION_AUTO=y
> +CONFIG_DEBUG_KERNEL=y
> +
> +# abootimg with a 'dummy' rootfs fails with root=/dev/nfs
> +CONFIG_BLK_DEV_INITRD=n
> +
> +CONFIG_DEVFREQ_GOV_PERFORMANCE=y
> +CONFIG_DEVFREQ_GOV_POWERSAVE=y
> +CONFIG_DEVFREQ_GOV_USERSPACE=y
> +CONFIG_DEVFREQ_GOV_PASSIVE=y
> +
> +CONFIG_DRM=y
> +CONFIG_DRM_ROCKCHIP=y
> +CONFIG_DRM_PANFROST=y
> +CONFIG_DRM_LIMA=y
> +CONFIG_DRM_PANEL_SIMPLE=y
> +CONFIG_DRM_PANEL_EDP=y
> +CONFIG_DRM_MSM=y
> +CONFIG_DRM_I2C_ADV7511=y
> +CONFIG_PWM_CROS_EC=y
> +CONFIG_BACKLIGHT_PWM=y
> +
> +CONFIG_ROCKCHIP_CDN_DP=n
> +
> +CONFIG_SPI_ROCKCHIP=y
> +CONFIG_PWM_ROCKCHIP=y
> +CONFIG_PHY_ROCKCHIP_DP=y
> +CONFIG_DWMAC_ROCKCHIP=y
> +CONFIG_STMMAC_ETH=y
> +CONFIG_TYPEC_FUSB302=y
> +CONFIG_TYPEC=y
> +CONFIG_TYPEC_TCPM=y
> +
> +# MSM platform bits
> +
> +# For CONFIG_QCOM_LMH
> +CONFIG_OF=y
> +
> +CONFIG_QCOM_COMMAND_DB=y
> +CONFIG_QCOM_RPMHPD=y
> +CONFIG_QCOM_RPMPD=y
> +CONFIG_SDM_GPUCC_845=y
> +CONFIG_SDM_VIDEOCC_845=y
> +CONFIG_SDM_DISPCC_845=y
> +CONFIG_SDM_LPASSCC_845=y
> +CONFIG_SDM_CAMCC_845=y
> +CONFIG_RESET_QCOM_PDC=y
> +CONFIG_DRM_TI_SN65DSI86=y
> +CONFIG_I2C_QCOM_GENI=y
> +CONFIG_SPI_QCOM_GENI=y
> +CONFIG_PHY_QCOM_QUSB2=y
> +CONFIG_PHY_QCOM_QMP=y
> +CONFIG_QCOM_CLK_APCC_MSM8996=y
> +CONFIG_QCOM_LLCC=y
> +CONFIG_QCOM_LMH=y
> +CONFIG_QCOM_SPMI_TEMP_ALARM=y
> +CONFIG_QCOM_WDT=y
> +CONFIG_POWER_RESET_QCOM_PON=y
> +CONFIG_RTC_DRV_PM8XXX=y
> +CONFIG_INTERCONNECT=y
> +CONFIG_INTERCONNECT_QCOM=y
> +CONFIG_INTERCONNECT_QCOM_SDM845=y
> +CONFIG_INTERCONNECT_QCOM_MSM8916=y
> +CONFIG_INTERCONNECT_QCOM_OSM_L3=y
> +CONFIG_INTERCONNECT_QCOM_SC7180=y
> +CONFIG_CRYPTO_DEV_QCOM_RNG=y
> +CONFIG_SC_DISPCC_7180=y
> +CONFIG_SC_GPUCC_7180=y
> +CONFIG_PHY_QCOM_USB_HS=y
> +CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2=y
> +CONFIG_PHY_QCOM_USB_HS_28NM=y
> +CONFIG_PHY_QCOM_USB_SS=y
> +
> +# db410c ethernet
> +CONFIG_USB_RTL8152=y
> +# db820c ethernet
> +CONFIG_ATL1C=y
> +
> +CONFIG_ARCH_ALPINE=n
> +CONFIG_ARCH_BCM2835=n
> +CONFIG_ARCH_BCM_IPROC=n
> +CONFIG_ARCH_BERLIN=n
> +CONFIG_ARCH_BRCMSTB=n
> +CONFIG_ARCH_EXYNOS=n
> +CONFIG_ARCH_K3=n
> +CONFIG_ARCH_LAYERSCAPE=n
> +CONFIG_ARCH_LG1K=n
> +CONFIG_ARCH_HISI=n
> +CONFIG_ARCH_MVEBU=n
> +CONFIG_ARCH_SEATTLE=n
> +CONFIG_ARCH_SYNQUACER=n
> +CONFIG_ARCH_RENESAS=n
> +CONFIG_ARCH_R8A774A1=n
> +CONFIG_ARCH_R8A774C0=n
> +CONFIG_ARCH_R8A7795=n
> +CONFIG_ARCH_R8A7796=n
> +CONFIG_ARCH_R8A77965=n
> +CONFIG_ARCH_R8A77970=n
> +CONFIG_ARCH_R8A77980=n
> +CONFIG_ARCH_R8A77990=n
> +CONFIG_ARCH_R8A77995=n
> +CONFIG_ARCH_STRATIX10=n
> +CONFIG_ARCH_TEGRA=n
> +CONFIG_ARCH_SPRD=n
> +CONFIG_ARCH_THUNDER=n
> +CONFIG_ARCH_THUNDER2=n
> +CONFIG_ARCH_UNIPHIER=n
> +CONFIG_ARCH_VEXPRESS=n
> +CONFIG_ARCH_XGENE=n
> +CONFIG_ARCH_ZX=n
> +CONFIG_ARCH_ZYNQMP=n
> +
> +# Strip out some stuff we don't need for graphics testing, to reduce
> +# the build.
> +CONFIG_CAN=n
> +CONFIG_WIRELESS=n
> +CONFIG_RFKILL=n
> +CONFIG_WLAN=n
> +
> +CONFIG_REGULATOR_FAN53555=y
> +CONFIG_REGULATOR=y
> +
> +CONFIG_REGULATOR_VCTRL=y
> +
> +CONFIG_KASAN=n
> +CONFIG_KASAN_INLINE=n
> +CONFIG_STACKTRACE=n
> +
> +CONFIG_TMPFS=y
> +
> +CONFIG_PROVE_LOCKING=n
> +CONFIG_DEBUG_LOCKDEP=n
> +CONFIG_SOFTLOCKUP_DETECTOR=y
> +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
> +
> +CONFIG_DETECT_HUNG_TASK=y
> +
> +CONFIG_FW_LOADER_COMPRESS=y
> +CONFIG_FW_LOADER_USER_HELPER=n
> +
> +CONFIG_USB_USBNET=y
> +CONFIG_NETDEVICES=y
> +CONFIG_USB_NET_DRIVERS=y
> +CONFIG_USB_RTL8152=y
> +CONFIG_USB_NET_AX8817X=y
> +CONFIG_USB_NET_SMSC95XX=y
> +
> +# For amlogic
> +CONFIG_MESON_GXL_PHY=y
> +CONFIG_MDIO_BUS_MUX_MESON_G12A=y
> +CONFIG_DRM_MESON=y
> +
> +# For Mediatek
> +CONFIG_DRM_MEDIATEK=y
> +CONFIG_PWM_MEDIATEK=y
> +CONFIG_DRM_MEDIATEK_HDMI=y
> +CONFIG_GNSS=y
> +CONFIG_GNSS_MTK_SERIAL=y
> +CONFIG_HW_RANDOM=y
> +CONFIG_HW_RANDOM_MTK=y
> +CONFIG_MTK_DEVAPC=y
> +CONFIG_PWM_MTK_DISP=y
> +CONFIG_MTK_CMDQ=y
> +CONFIG_REGULATOR_DA9211=y
> +CONFIG_ARM_MEDIATEK_CPUFREQ=y
> +CONFIG_RTC_DRV_MT6397=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
> +CONFIG_DRM_NOUVEAU=m
> +CONFIG_DRM_TEGRA=m
> +CONFIG_R8169=y
> +CONFIG_STAGING=y
> +CONFIG_DRM_TEGRA_STAGING=y
> +CONFIG_TEGRA_HOST1X=y
> +CONFIG_ARM_TEGRA_DEVFREQ=y
> +CONFIG_TEGRA_SOCTHERM=y
> +CONFIG_DRM_TEGRA_DEBUG=y
> +CONFIG_PWM_TEGRA=y
> diff --git a/drivers/gpu/drm/ci/build-igt.sh b/drivers/gpu/drm/ci/build-igt.sh
> new file mode 100644
> index 000000000000..8bc2c7334f3f
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/build-igt.sh
> @@ -0,0 +1,43 @@
> +#!/bin/bash
> +# SPDX-License-Identifier: MIT
> +
> +set -ex
> +
> +git clone https://gitlab.freedesktop.org/drm/igt-gpu-tools.git --single-branch --no-checkout
> +cd igt-gpu-tools
> +git checkout $IGT_VERSION
> +
> +if [[ "$KERNEL_ARCH" = "arm" ]]; then
> +    . ../.gitlab-ci/container/create-cross-file.sh armhf
> +    EXTRA_MESON_ARGS="--cross-file /cross_file-armhf.txt"
> +fi
> +
> +MESON_OPTIONS="-Doverlay=disabled                    \
> +               -Dchamelium=disabled                  \
> +               -Dvalgrind=disabled                   \
> +               -Dman=enabled                         \
> +               -Dtests=enabled                       \
> +               -Drunner=enabled                      \
> +               -Dlibunwind=enabled                   \
> +               -Dprefix=/igt"
> +
> +# TODO: Remove this once https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1009805 is fixed and libjson-c-dev:armhf is installed in debian/arm-build
> +if [[ "$KERNEL_ARCH" = "arm" ]]; then
> +    cp /usr/lib/aarch64-linux-gnu/pkgconfig/json-c.pc /usr/lib/arm-linux-gnueabihf/pkgconfig/json-c.pc
> +    sed -i 's/aarch64-linux-gnu/arm-linux-gnueabihf/g' /usr/lib/arm-linux-gnueabihf/pkgconfig/json-c.pc
> +    ln -s /usr/lib/arm-linux-gnueabihf/libjson-c.so.5.1.0 /usr/lib/arm-linux-gnueabihf/libjson-c.so
> +fi
> +
> +mkdir -p /igt
> +meson build $MESON_OPTIONS $EXTRA_MESON_ARGS
> +ninja -C build -j${FDO_CI_CONCURRENT:-4} || ninja -C build -j 1
> +ninja -C build install
> +
> +mkdir -p artifacts/
> +tar -cf artifacts/igt.tar /igt
> +
> +# Pass needed files to the test stage
> +MINIO_ARTIFACT_NAME="igt.tar.gz"
> +gzip -c artifacts/igt.tar > ${MINIO_ARTIFACT_NAME}
> +ci-fairy minio login --token-file "${CI_JOB_JWT_FILE}"
> +ci-fairy minio cp ${MINIO_ARTIFACT_NAME} minio://${PIPELINE_ARTIFACTS_BASE}/${KERNEL_ARCH}/${MINIO_ARTIFACT_NAME}
> diff --git a/drivers/gpu/drm/ci/build.sh b/drivers/gpu/drm/ci/build.sh
> new file mode 100644
> index 000000000000..4a93cab34342
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/build.sh
> @@ -0,0 +1,158 @@
> +#!/bin/bash
> +# SPDX-License-Identifier: MIT
> +
> +set -ex
> +
> +# Clean up stale rebases that GitLab might not have removed when reusing a checkout dir
> +rm -rf .git/rebase-apply
> +
> +. .gitlab-ci/container/container_pre_build.sh
> +
> +# libssl-dev was uninstalled because it was considered an ephemeral package
> +apt-get update
> +apt-get install -y libssl-dev
> +
> +if [[ "$KERNEL_ARCH" = "arm64" ]]; then
> +    GCC_ARCH="aarch64-linux-gnu"
> +    DEBIAN_ARCH="arm64"
> +    DEVICE_TREES="arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb"
> +    DEVICE_TREES+=" arch/arm64/boot/dts/amlogic/meson-gxl-s805x-libretech-ac.dtb"
> +    DEVICE_TREES+=" arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dtb"
> +    DEVICE_TREES+=" arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dtb"
> +    DEVICE_TREES+=" arch/arm64/boot/dts/qcom/apq8016-sbc.dtb"
> +    DEVICE_TREES+=" arch/arm64/boot/dts/qcom/apq8096-db820c.dtb"
> +    DEVICE_TREES+=" arch/arm64/boot/dts/amlogic/meson-g12b-a311d-khadas-vim3.dtb"
> +    DEVICE_TREES+=" arch/arm64/boot/dts/mediatek/mt8173-elm-hana.dtb"
> +    DEVICE_TREES+=" arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-juniper-sku16.dtb"
> +    DEVICE_TREES+=" arch/arm64/boot/dts/mediatek/mt8192-asurada-spherion-r0.dtb"
> +    DEVICE_TREES+=" arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-limozeen-nots-r5.dtb"
> +elif [[ "$KERNEL_ARCH" = "arm" ]]; then
> +    GCC_ARCH="arm-linux-gnueabihf"
> +    DEBIAN_ARCH="armhf"
> +    DEVICE_TREES="arch/arm/boot/dts/rk3288-veyron-jaq.dtb"
> +    DEVICE_TREES+=" arch/arm/boot/dts/sun8i-h3-libretech-all-h3-cc.dtb"
> +    DEVICE_TREES+=" arch/arm/boot/dts/imx6q-cubox-i.dtb"
> +    apt-get install -y libssl-dev:armhf
> +else
> +    GCC_ARCH="x86_64-linux-gnu"
> +    DEBIAN_ARCH="amd64"
> +    DEVICE_TREES=""
> +fi
> +
> +export ARCH=${KERNEL_ARCH}
> +export CROSS_COMPILE="${GCC_ARCH}-"
> +
> +# The kernel doesn't like the gold linker (or the old lld in our debians).
> +# Sneak in some override symlinks during kernel build until we can update
> +# debian.
> +mkdir -p ld-links
> +for i in /usr/bin/*-ld /usr/bin/ld; do
> +    i=`basename $i`
> +    ln -sf /usr/bin/$i.bfd ld-links/$i
> +done
> +export PATH=`pwd`/ld-links:$PATH
> +
> +git config --global user.email "fdo@example.com"
> +git config --global user.name "freedesktop.org CI"
> +
> +# Try to merge fixes from target repo
> +if [ "$(git ls-remote --exit-code --heads ${UPSTREAM_REPO} ${TARGET_BRANCH}-external-fixes)" ]; then
> +    git pull ${UPSTREAM_REPO} ${TARGET_BRANCH}-external-fixes
> +fi
> +
> +# Try to merge fixes from local repo if this isn't a merge request
> +if [ -z "$CI_MERGE_REQUEST_PROJECT_PATH" ]; then
> +    if [ "$(git ls-remote --exit-code --heads origin ${TARGET_BRANCH}-external-fixes)" ]; then
> +        git pull origin ${TARGET_BRANCH}-external-fixes
> +    fi
> +fi
> +
> +for opt in $ENABLE_KCONFIGS; do
> +  echo CONFIG_$opt=y >> drivers/gpu/drm/ci/${KERNEL_ARCH}.config
> +done
> +for opt in $DISABLE_KCONFIGS; do
> +  echo CONFIG_$opt=n >> drivers/gpu/drm/ci/${KERNEL_ARCH}.config
> +done
> +
> +if [[ -n "${MERGE_FRAGMENT}" ]]; then
> +    ./scripts/kconfig/merge_config.sh ${DEFCONFIG} drivers/gpu/drm/ci/${MERGE_FRAGMENT}
> +else
> +    make `basename ${DEFCONFIG}`
> +fi
> +
> +make ${KERNEL_IMAGE_NAME}
> +
> +mkdir -p /lava-files/
> +for image in ${KERNEL_IMAGE_NAME}; do
> +    cp arch/${KERNEL_ARCH}/boot/${image} /lava-files/.
> +done
> +
> +if [[ -n ${DEVICE_TREES} ]]; then
> +    make dtbs
> +    cp ${DEVICE_TREES} /lava-files/.
> +fi
> +
> +if [[ ${DEBIAN_ARCH} = "amd64" ]]; then
> +    make modules
> +    mkdir -p install/modules/
> +    INSTALL_MOD_PATH=install/modules/ make modules_install
> +fi
> +
> +if [[ ${DEBIAN_ARCH} = "arm64" ]]; then
> +    make Image.lzma
> +    mkimage \
> +        -f auto \
> +        -A arm \
> +        -O linux \
> +        -d arch/arm64/boot/Image.lzma \
> +        -C lzma\
> +        -b arch/arm64/boot/dts/qcom/sdm845-cheza-r3.dtb \
> +        /lava-files/cheza-kernel
> +    KERNEL_IMAGE_NAME+=" cheza-kernel"
> +
> +    # Make a gzipped copy of the Image for db410c.
> +    gzip -k /lava-files/Image
> +    KERNEL_IMAGE_NAME+=" Image.gz"
> +fi
> +
> +# Pass needed files to the test stage
> +mkdir -p install
> +cp -rfv .gitlab-ci/* install/.
> +cp -rfv install/common install/ci-common
> +cp -rfv drivers/gpu/drm/ci/* install/.
> +
> +. .gitlab-ci/container/container_post_build.sh
> +
> +if [[ "$UPLOAD_TO_MINIO" = "1" ]]; then
> +    xz -7 -c -T${FDO_CI_CONCURRENT:-4} vmlinux > /lava-files/vmlinux.xz
> +    ci-fairy minio login --token-file "${CI_JOB_JWT_FILE}"
> +    FILES_TO_UPLOAD="$KERNEL_IMAGE_NAME vmlinux.xz"
> +
> +    if [[ -n $DEVICE_TREES ]]; then
> +        FILES_TO_UPLOAD="$FILES_TO_UPLOAD $(basename -a $DEVICE_TREES)"
> +    fi
> +
> +    for f in $FILES_TO_UPLOAD; do
> +        ci-fairy minio cp /lava-files/$f \
> +                minio://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/$f
> +    done
> +
> +    MINIO_ARTIFACT_NAME="kernel-files.tar.zst"
> +    tar --zstd -cf $MINIO_ARTIFACT_NAME install
> +    ci-fairy minio login --token-file "${CI_JOB_JWT_FILE}"
> +    ci-fairy minio cp ${MINIO_ARTIFACT_NAME} minio://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/${MINIO_ARTIFACT_NAME}
> +
> +    echo "Download vmlinux.xz from https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/vmlinux.xz"
> +fi
> +
> +mkdir -p artifacts/install/lib
> +mv install/* artifacts/install/.
> +rm -rf artifacts/install/modules
> +ln -s common artifacts/install/ci-common
> +
> +for image in ${KERNEL_IMAGE_NAME}; do
> +    cp /lava-files/$image artifacts/install/.
> +done
> +
> +tar -C artifacts -cf artifacts/install.tar install
> +rm -rf artifacts/install
> diff --git a/drivers/gpu/drm/ci/build.yml b/drivers/gpu/drm/ci/build.yml
> new file mode 100644
> index 000000000000..08cc817d9a07
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/build.yml
> @@ -0,0 +1,110 @@
> +.build:
> +  extends:
> +    - .build-rules
> +  stage: build
> +  artifacts:
> +    paths:
> +      - artifacts
> +  script:
> +    - FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash drivers/gpu/drm/ci/build.sh
> +
> +.build:armhf:
> +  extends:
> +    - .build
> +    - .use-debian/arm_build
> +  tags:
> +    - aarch64
> +  variables:
> +    DEFCONFIG: "arch/arm/configs/multi_v7_defconfig"
> +    KERNEL_IMAGE_NAME: "zImage"
> +    KERNEL_ARCH: "arm"
> +
> +.build:arm64:
> +  extends:
> +    - .build
> +    - .use-debian/arm_build
> +  tags:
> +    - aarch64
> +  variables:
> +    DEFCONFIG: "arch/arm64/configs/defconfig"
> +    KERNEL_IMAGE_NAME: "Image"
> +    KERNEL_ARCH: "arm64"
> +
> +.build:amd64:
> +  extends:
> +    - .build
> +    - .use-debian/x86_build
> +  variables:
> +    DEFCONFIG: "arch/x86/configs/x86_64_defconfig"
> +    KERNEL_IMAGE_NAME: "bzImage"
> +    KERNEL_ARCH: "x86_64"
> +
> +
> +# Build IGT for testing on devices
> +
> +igt:armhf:
> +  extends: .build:armhf
> +  script:
> +    - FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash drivers/gpu/drm/ci/build-igt.sh
> +
> +igt:arm64:
> +  extends: .build:arm64
> +  script:
> +    - FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash drivers/gpu/drm/ci/build-igt.sh
> +
> +igt:amd64:
> +  extends: .build:amd64
> +  script:
> +    - FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash drivers/gpu/drm/ci/build-igt.sh
> +
> +# Build kernels for testing on devices
> +
> +testing:armhf:
> +  extends: .build:armhf
> +  variables:
> +    # Would be good to have DEBUG_KMEMLEAK, but it doesn't work well with any of
> +    # PROVE_LOCKING and KASAN as of 5.17.
> +    #
> +    # db410c and db820c don't boot with KASAN_INLINE, probably due to the kernel
> +    # becoming too big for their bootloaders.
> +    ENABLE_KCONFIGS: "PROVE_LOCKING DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT"
> +    UPLOAD_TO_MINIO: 1
> +    MERGE_FRAGMENT: arm.config
> +
> +testing:arm64:
> +  extends: .build:arm64
> +  variables:
> +    # Would be good to have DEBUG_KMEMLEAK, but it doesn't work well with any of
> +    # PROVE_LOCKING and KASAN as of 5.17.
> +    #
> +    # db410c and db820c don't boot with KASAN_INLINE, probably due to the kernel
> +    # becoming too big for their bootloaders.
> +    ENABLE_KCONFIGS: "PROVE_LOCKING DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT"
> +    UPLOAD_TO_MINIO: 1
> +    MERGE_FRAGMENT: arm64.config
> +
> +testing:amd64:
> +  extends: .build:amd64
> +  variables:
> +    # Would be good to have DEBUG_KMEMLEAK, but it doesn't work well with any of
> +    # PROVE_LOCKING and KASAN as of 5.17.
> +    #
> +    # db410c and db820c don't boot with KASAN_INLINE, probably due to the kernel
> +    # becoming too big for their bootloaders.
> +    ENABLE_KCONFIGS: "PROVE_LOCKING DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT"
> +    UPLOAD_TO_MINIO: 1
> +    MERGE_FRAGMENT: x86_64.config
> +
> +
> +# Jobs for build-testing different configurations
> +
> +build:armhf:
> +  extends: .build:armhf
> +
> +build-nodebugfs:arm64:
> +  extends: .build:arm64
> +  variables:
> +    DISABLE_KCONFIGS: "DEBUG_FS"
> +
> +build:x86_64:
> +  extends: .build:amd64
> diff --git a/drivers/gpu/drm/ci/check-patch.py b/drivers/gpu/drm/ci/check-patch.py
> new file mode 100755
> index 000000000000..a5f399a20e25
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/check-patch.py
> @@ -0,0 +1,57 @@
> +#!/usr/bin/env python3
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +#
> +# check-patch.py: run checkpatch.pl across all commits in a branch
> +#
> +# Based on qemu/.gitlab-ci.d/check-patch.py
> +#
> +# Copyright (C) 2020 Red Hat, Inc.
> +# Copyright (C) 2022 Collabora Ltd.
> +
> +import os
> +import os.path
> +import sys
> +import subprocess
> +
> +repourl = "https://gitlab.freedesktop.org/%s.git" % os.environ["CI_MERGE_REQUEST_PROJECT_PATH"]
> +
> +# GitLab CI environment does not give us any direct info about the
> +# base for the user's branch. We thus need to figure out a common
> +# ancestor between the user's branch and current git master.
> +os.environ["GIT_DEPTH"] = "1000"
> +subprocess.call(["git", "remote", "remove", "check-patch"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
> +subprocess.check_call(["git", "remote", "add", "check-patch", repourl])
> +subprocess.check_call(["git", "fetch", "check-patch", os.environ["CI_MERGE_REQUEST_TARGET_BRANCH_NAME"]],
> +                      stdout=subprocess.DEVNULL,
> +                      stderr=subprocess.DEVNULL)
> +
> +ancestor = subprocess.check_output(["git", "merge-base",
> +                                    "check-patch/%s" % os.environ["CI_MERGE_REQUEST_TARGET_BRANCH_NAME"], "HEAD"],
> +                                   universal_newlines=True)
> +
> +ancestor = ancestor.strip()
> +
> +log = subprocess.check_output(["git", "log", "--format=%H %s",
> +                               ancestor + "..."],
> +                              universal_newlines=True)
> +
> +subprocess.check_call(["git", "remote", "rm", "check-patch"])
> +
> +if log == "":
> +    print("\nNo commits since %s, skipping checks\n" % ancestor)
> +    sys.exit(0)
> +
> +errors = False
> +
> +print("\nChecking all commits since %s...\n" % ancestor, flush=True)
> +
> +ret = subprocess.run(["scripts/checkpatch.pl",
> +                      "--terse",
> +                      "--types", os.environ["CHECKPATCH_TYPES"],
> +                      "--git", ancestor + "..."])
> +
> +if ret.returncode != 0:
> +    print("    ❌ FAIL one or more commits failed scripts/checkpatch.pl")
> +    sys.exit(1)
> +
> +sys.exit(0)
> diff --git a/drivers/gpu/drm/ci/container.yml b/drivers/gpu/drm/ci/container.yml
> new file mode 100644
> index 000000000000..af2416a84daf
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/container.yml
> @@ -0,0 +1,54 @@
> +.container:
> +  variables:
> +    CI_REPOSITORY_URL: ${DRM_CI_PROJECT_URL}.git # So ci-templates clones drm-ci instead of the repo to test
> +    CI_COMMIT_SHA: ${DRM_CI_COMMIT_SHA}
> +
> +debian/x86_build-base:
> +  variables:
> +    EXTRA_LOCAL_PACKAGES: "libcairo-dev libdw-dev libjson-c-dev libkmod-dev libpciaccess-dev libprocps-dev libudev-dev libunwind-dev python3-docutils bc curl python3-ply libssl-dev"
> +
> +debian/x86_test-gl:
> +  variables:
> +    EXTRA_EPHEMERAL_PACKAGES: "libcairo-dev libdw-dev libjson-c-dev libkmod-dev libpciaccess-dev libprocps-dev libunwind-dev python3-docutils"
> +    EXTRA_LOCAL_PACKAGES: "jq libasound2 libcairo2 libdw1 libglib2.0-0 libgsl25 libjson-c5 libkmod2 libprocps8 curl libgles2"
> +
> +debian/arm_build:
> +  variables:
> +    EXTRA_LOCAL_PACKAGES: "libcairo-dev libdw-dev libjson-c-dev libkmod-dev libpciaccess-dev libprocps-dev libudev-dev libunwind-dev python3-docutils curl libssl-dev crossbuild-essential-armhf libkmod-dev:armhf libcairo-dev:armhf libdw-dev:armhf libjson-c5:armhf libkmod-dev:armhf libpciaccess-dev:armhf libprocps-dev:armhf libudev-dev:armhf libunwind-dev:armhf"
> +
> +debian/arm_test:
> +  variables:
> +    EXTRA_LOCAL_PACKAGES: "curl"
> +
> +.kernel+rootfs:
> +  variables:
> +    EXTRA_LOCAL_PACKAGES: "jq libasound2 libcairo2 libdw1 libglib2.0-0 libgsl25 libjson-c5 libprocps8"
> +
> +# Disable container jobs that we won't use
> +debian/x86_test-vk:
> +  rules:
> +    - when: never
> +
> +fedora/x86_build:
> +  rules:
> +    - when: never
> +
> +debian/android_build:
> +  rules:
> +    - when: never
> +
> +windows_build_vs2019:
> +  rules:
> +    - when: never
> +
> +windows_test_vs2019:
> +  rules:
> +    - when: never
> +
> +debian/x86_build-mingw:
> +   rules:
> +    - when: never
> +
> +windows_vs2019:
> +   rules:
> +    - when: never
> diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml
> new file mode 100644
> index 000000000000..8b83d0c4a8c4
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/gitlab-ci.yml
> @@ -0,0 +1,225 @@
> +variables:
> +  # Change this to use your fork of drm-ci
> +  DRM_CI_PROJECT_PATH: &drm-ci-project-path gfx-ci/drm-ci
> +  DRM_CI_COMMIT_SHA: &drm-ci-commit-sha 09eb70d72f13755b646a20dcd1e7971d69c0a2da
> +
> +  UPSTREAM_REPO: git://anongit.freedesktop.org/drm/drm
> +  TARGET_BRANCH: drm-next
> +
> +  IGT_VERSION: cffa5fffe9acddf49565b4caeeb5e3355ff2ea44
> +
> +  DEQP_RUNNER_GIT_URL: https://gitlab.freedesktop.org/anholt/deqp-runner.git
> +  DEQP_RUNNER_GIT_TAG: v0.15.0
> +
> +  FDO_UPSTREAM_REPO: tomeu/linux   # The repo where the git-archive daily runs
> +  MESA_TEMPLATES_COMMIT: &ci-templates-commit d5aa3941aa03c2f716595116354fb81eb8012acb
> +  DRM_CI_PROJECT_URL: https://gitlab.freedesktop.org/${DRM_CI_PROJECT_PATH}
> +  CI_PRE_CLONE_SCRIPT: |-
> +          set -o xtrace
> +          wget -q -O download-git-cache.sh ${DRM_CI_PROJECT_URL}/-/raw/${DRM_CI_COMMIT_SHA}/.gitlab-ci/download-git-cache.sh
> +          bash download-git-cache.sh
> +          rm download-git-cache.sh
> +          set +o xtrace
> +  MINIO_HOST: minio-packet.freedesktop.org
> +  # per-pipeline artifact storage on MinIO
> +  PIPELINE_ARTIFACTS_BASE: ${MINIO_HOST}/artifacts/${CI_PROJECT_PATH}/${CI_PIPELINE_ID}
> +  # per-job artifact storage on MinIO
> +  JOB_ARTIFACTS_BASE: ${PIPELINE_ARTIFACTS_BASE}/${CI_JOB_ID}
> +
> +default:
> +  before_script:
> +    - echo -e "\e[0Ksection_start:$(date +%s):unset_env_vars_section[collapsed=true]\r\e[0KUnsetting vulnerable environment variables"
> +    - export CI_JOB_JWT_FILE="${CI_JOB_JWT_FILE:-$(mktemp)}"
> +    - echo -n "${CI_JOB_JWT}" > "${CI_JOB_JWT_FILE}"
> +    - unset CI_JOB_JWT
> +    - echo -e "\e[0Ksection_end:$(date +%s):unset_env_vars_section\r\e[0K"
> +
> +    - echo -e "\e[0Ksection_start:$(date +%s):drm_ci_download_section[collapsed=true]\r\e[0KDownloading drm-ci from $DRM_CI_PROJECT_URL/-/archive/$DRM_CI_COMMIT_SHA/drm-ci-$DRM_CI_COMMIT_SHA.tar.gz"
> +    - cd $CI_PROJECT_DIR
> +    - curl --output - $DRM_CI_PROJECT_URL/-/archive/$DRM_CI_COMMIT_SHA/drm-ci-$DRM_CI_COMMIT_SHA.tar.gz | tar -xz
> +    - mv drm-ci-$DRM_CI_COMMIT_SHA/.gitlab-ci* .
> +    - rm -rf drm-ci-$DRM_CI_COMMIT_SHA/
> +    - echo -e "\e[0Ksection_end:$(date +%s):drm_ci_download_section\r\e[0K"
> +
> +  after_script:
> +    - >
> +      set +x
> +
> +      test -e "${CI_JOB_JWT_FILE}" &&
> +      export CI_JOB_JWT="$(<${CI_JOB_JWT_FILE})" &&
> +      rm "${CI_JOB_JWT_FILE}"
> +
> +include:
> +  - project: 'freedesktop/ci-templates'
> +    ref: 34f4ade99434043f88e164933f570301fd18b125
> +    file:
> +      - '/templates/ci-fairy.yml'
> +  - project: 'freedesktop/ci-templates'
> +    ref: *ci-templates-commit
> +    file:
> +      - '/templates/debian.yml'
> +      - '/templates/fedora.yml'
> +  - project: *drm-ci-project-path
> +    ref: *drm-ci-commit-sha
> +    file:
> +      - '/.gitlab-ci/container/gitlab-ci.yml'
> +      - '/.gitlab-ci/test/gitlab-ci.yml'
> +      - '/.gitlab-ci/lava/lava-gitlab-ci.yml'
> +  - drivers/gpu/drm/ci/image-tags.yml
> +  - drivers/gpu/drm/ci/container.yml
> +  - drivers/gpu/drm/ci/static-checks.yml
> +  - drivers/gpu/drm/ci/build.yml
> +  - drivers/gpu/drm/ci/test.yml
> +  - 'https://gitlab.freedesktop.org/gfx-ci/lab-status/-/raw/main/lab-status.yml'
> +
> +
> +stages:
> +  - sanity
> +  - container
> +  - git-archive
> +  - build
> +  - amdgpu
> +  - i915
> +  - mediatek
> +  - meson
> +  - msm
> +  - rockchip
> +  - virtio-gpu
> +
> +# YAML anchors for rule conditions
> +# --------------------------------
> +.rules-anchors:
> +  rules:
> +    # Pipeline for forked project branch
> +    - if: &is-forked-branch '$CI_COMMIT_BRANCH && $CI_PROJECT_NAMESPACE != "mesa"'
> +      when: manual
> +    # Forked project branch / pre-merge pipeline not for Marge bot
> +    - if: &is-forked-branch-or-pre-merge-not-for-marge '$CI_PROJECT_NAMESPACE != "mesa" || ($GITLAB_USER_LOGIN != "marge-bot" && $CI_PIPELINE_SOURCE == "merge_request_event")'
> +      when: manual
> +    # Pipeline runs for the main branch of the upstream Mesa project
> +    - if: &is-mesa-main '$CI_PROJECT_NAMESPACE == "mesa" && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH && $CI_COMMIT_BRANCH'
> +      when: always
> +    # Post-merge pipeline
> +    - if: &is-post-merge '$CI_PROJECT_NAMESPACE == "mesa" && $CI_COMMIT_BRANCH'
> +      when: on_success
> +    # Post-merge pipeline, not for Marge Bot
> +    - if: &is-post-merge-not-for-marge '$CI_PROJECT_NAMESPACE == "mesa" && $GITLAB_USER_LOGIN != "marge-bot" && $CI_COMMIT_BRANCH'
> +      when: on_success
> +    # Pre-merge pipeline
> +    - if: &is-pre-merge '$CI_PIPELINE_SOURCE == "merge_request_event"'
> +      when: on_success
> +    # Pre-merge pipeline for Marge Bot
> +    - if: &is-pre-merge-for-marge '$GITLAB_USER_LOGIN == "marge-bot" && $CI_PIPELINE_SOURCE == "merge_request_event"'
> +      when: on_success
> +
> +# Rule to filter for only scheduled pipelines.
> +.scheduled_pipeline-rules:
> +  rules:
> +    - if: &is-scheduled-pipeline '$CI_PIPELINE_SOURCE == "schedule"'
> +      when: on_success
> +
> +# Generic rule to not run the job during scheduled pipelines. Jobs that aren't
> +# something like a nightly run should include this rule.
> +.no_scheduled_pipelines-rules:
> +  rules:
> +    - if: *is-scheduled-pipeline
> +      when: never
> +
> +# When to automatically run the CI for build jobs
> +.build-rules:
> +  rules:
> +    - !reference [.no_scheduled_pipelines-rules, rules]
> +    # Run automatically once all dependency jobs have passed
> +    - when: on_success
> +
> +
> +.ci-deqp-artifacts:
> +  artifacts:
> +    name: "mesa_${CI_JOB_NAME}"
> +    when: always
> +    untracked: false
> +    paths:
> +      # Watch out!  Artifacts are relative to the build dir.
> +      # https://gitlab.com/gitlab-org/gitlab-ce/commit/8788fb925706cad594adf6917a6c5f6587dd1521
> +      - artifacts
> +      - _build/meson-logs/*.txt
> +      - _build/meson-logs/strace
> +
> +
> +.container-rules:
> +  rules:
> +    - !reference [.no_scheduled_pipelines-rules, rules]
> +    # Run pipeline by default in the main project if any CI pipeline
> +    # configuration files were changed, to ensure docker images are up to date
> +    - if: *is-post-merge
> +      changes:
> +      - drivers/gpu/drm/ci/**/*
> +      when: on_success
> +    # Run pipeline by default if it was triggered by Marge Bot, is for a
> +    # merge request, and any files affecting the pipeline were changed
> +    - if: *is-pre-merge-for-marge
> +      when: on_success
> +    # Run pipeline by default in the main project if it was not triggered by
> +    # Marge Bot, and any files affecting the pipeline were changed
> +    - if: *is-post-merge-not-for-marge
> +      when: on_success
> +    # Allow triggering jobs manually in other cases
> +    - when: manual
> +
> +
> +
> +# Git archive
> +
> +make git archive:
> +  extends:
> +    - .fdo.ci-fairy
> +  stage: git-archive
> +  rules:
> +    - !reference [.scheduled_pipeline-rules, rules]
> +  # ensure we are running on packet
> +  tags:
> +    - packet.net
> +  script:
> +    # Remove drm-ci files we just added
> +    - rm -rf .gitlab-ci.*
> +
> +    # Compactify the .git directory
> +    - git gc --aggressive
> +    # compress the current folder
> +    - tar -cvzf ../$CI_PROJECT_NAME.tar.gz .
> +
> +    # login with the JWT token file
> +    - ci-fairy minio login --token-file "${CI_JOB_JWT_FILE}"
> +    - ci-fairy minio cp ../$CI_PROJECT_NAME.tar.gz minio://$MINIO_HOST/git-cache/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_PROJECT_NAME.tar.gz
> +
> +
> +# Sanity checks of MR settings and commit logs
> +sanity:
> +  extends:
> +    - .fdo.ci-fairy
> +  stage: sanity
> +  rules:
> +    - if: *is-pre-merge
> +      when: on_success
> +    # Other cases default to never
> +  variables:
> +    GIT_STRATEGY: none
> +  script:
> +    # ci-fairy check-commits --junit-xml=check-commits.xml
> +    - ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request.xml
> +  artifacts:
> +    when: on_failure
> +    reports:
> +      junit: check-*.xml
> +
> +# Rules for tests that should not block merging, but should be available to
> +# optionally run with the "play" button in the UI in pre-merge non-marge
> +# pipelines.  This should appear in "extends:" after any includes of
> +# test-source-dep.yml rules, so that these rules replace those.
> +.test-manual-mr:
> +  rules:
> +    - !reference [.no_scheduled_pipelines-rules, rules]
> +    - if: *is-forked-branch-or-pre-merge-not-for-marge
> +      when: manual
> +  variables:
> +    JOB_TIMEOUT: 80
> diff --git a/drivers/gpu/drm/ci/igt_runner.sh b/drivers/gpu/drm/ci/igt_runner.sh
> new file mode 100755
> index 000000000000..5bfa78f03d00
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/igt_runner.sh
> @@ -0,0 +1,77 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: MIT
> +
> +set -ex
> +
> +export IGT_FORCE_DRIVER=${DRIVER_NAME}
> +export PATH=$PATH:/igt/bin/
> +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/igt/lib/aarch64-linux-gnu/:/igt/lib/x86_64-linux-gnu:/igt/lib
> +
> +# Uncomment the below to debug problems with driver probing
> +: '
> +ls -l /dev/dri/
> +cat /sys/kernel/debug/devices_deferred
> +cat /sys/kernel/debug/device_component/*
> +'
> +
> +# Dump drm state to confirm that kernel was able to find a connected display:
> +# TODO this path might not exist for all drivers.. maybe run modetest instead?
> +set +e
> +cat /sys/kernel/debug/dri/*/state
> +set -e
> +
> +# Cannot use HWCI_KERNEL_MODULES as at that point we don't have the module in /lib
> +if [ "$IGT_FORCE_DRIVER" = "amdgpu" ]; then
> +    mv /install/modules/lib/modules/* /lib/modules/.
> +    modprobe amdgpu
> +fi
> +
> +if [ -e "/install/xfails/$DRIVER_NAME-$GPU_VERSION-skips.txt" ]; then
> +    IGT_SKIPS="--skips /install/xfails/$DRIVER_NAME-$GPU_VERSION-skips.txt"
> +fi
> +
> +if [ -e "/install/xfails/$DRIVER_NAME-$GPU_VERSION-flakes.txt" ]; then
> +    IGT_FLAKES="--flakes /install/xfails/$DRIVER_NAME-$GPU_VERSION-flakes.txt"
> +fi
> +
> +if [ -e "/install/xfails/$DRIVER_NAME-$GPU_VERSION-fails.txt" ]; then
> +    IGT_FAILS="--baseline /install/xfails/$DRIVER_NAME-$GPU_VERSION-fails.txt"
> +fi
> +
> +if [ "`uname -m`" = "aarch64" ]; then
> +    ARCH="arm64"
> +elif [ "`uname -m`" = "armv7l" ]; then
> +    ARCH="arm"
> +else
> +    ARCH="x86_64"
> +fi
> +
> +wget -S --progress=dot:giga -O- ${FDO_HTTP_CACHE_URI:-}$PIPELINE_ARTIFACTS_BASE/$ARCH/igt.tar.gz | tar -xz -C /
> +
> +set +e
> +igt-runner \
> +    run \
> +    --igt-folder /igt/libexec/igt-gpu-tools \
> +    --caselist /install/testlist.txt \
> +    --output /results \
> +    $IGT_SKIPS \
> +    $IGT_FLAKES \
> +    $IGT_FAILS \
> +    --fraction-start $CI_NODE_INDEX \
> +    --fraction $CI_NODE_TOTAL \
> +    --jobs 1
> +ret=$?
> +set -e
> +
> +deqp-runner junit \
> +   --testsuite IGT \
> +   --results /results/failures.csv \
> +   --output /results/junit.xml \
> +   --limit 50 \
> +   --template "See https://$CI_PROJECT_ROOT_NAMESPACE.pages.freedesktop.org/-/$CI_PROJECT_NAME/-/jobs/$CI_JOB_ID/artifacts/results/{{testcase}}.xml"
> +
> +# Store the results also in the simpler format used by the runner in ChromeOS CI
> +#sed -r 's/(dmesg-warn|pass)/success/g' /results/results.txt > /results/results_simple.txt
> +
> +cd $oldpath
> +exit $ret
> diff --git a/drivers/gpu/drm/ci/image-tags.yml b/drivers/gpu/drm/ci/image-tags.yml
> new file mode 100644
> index 000000000000..6d6773554028
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/image-tags.yml
> @@ -0,0 +1,13 @@
> +variables:
> +   CONTAINER_TAG: "2022-09-08-mesa-uprev"
> +   DEBIAN_X86_BUILD_BASE_IMAGE: "debian/x86_build-base"
> +   DEBIAN_BASE_TAG: "${CONTAINER_TAG}"
> +
> +   DEBIAN_X86_BUILD_IMAGE_PATH: "debian/x86_build"
> +   DEBIAN_BUILD_TAG: "${CONTAINER_TAG}"
> +
> +   KERNEL_ROOTFS_TAG: "${CONTAINER_TAG}"
> +
> +   DEBIAN_X86_TEST_BASE_IMAGE: "debian/x86_test-base"
> +   DEBIAN_X86_TEST_IMAGE_PATH: "debian/x86_test-gl"
> +   DEBIAN_X86_TEST_GL_TAG: "${CONTAINER_TAG}"
> diff --git a/drivers/gpu/drm/ci/lava-submit.sh b/drivers/gpu/drm/ci/lava-submit.sh
> new file mode 100755
> index 000000000000..3dec17dbdd30
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/lava-submit.sh
> @@ -0,0 +1,53 @@
> +#!/bin/bash
> +# SPDX-License-Identifier: MIT
> +
> +set -e
> +set -x
> +
> +# Try to use the kernel and rootfs built in mainline first, so we're more
> +# likely to hit cache
> +if wget -q --method=HEAD "https://${BASE_SYSTEM_MAINLINE_HOST_PATH}/done"; then
> +	BASE_SYSTEM_HOST_PATH="${BASE_SYSTEM_MAINLINE_HOST_PATH}"
> +else
> +	BASE_SYSTEM_HOST_PATH="${BASE_SYSTEM_FORK_HOST_PATH}"
> +fi
> +
> +rm -rf results
> +mkdir -p results/job-rootfs-overlay/
> +
> +cp artifacts/ci-common/capture-devcoredump.sh results/job-rootfs-overlay/
> +cp artifacts/ci-common/init-*.sh results/job-rootfs-overlay/
> +cp artifacts/ci-common/intel-gpu-freq.sh results/job-rootfs-overlay/
> +
> +# Prepare env vars for upload.
> +KERNEL_IMAGE_BASE_URL="https://${BASE_SYSTEM_HOST_PATH}" \
> +	artifacts/ci-common/generate-env.sh > results/job-rootfs-overlay/set-job-env-vars.sh
> +
> +tar zcf job-rootfs-overlay.tar.gz -C results/job-rootfs-overlay/ .
> +ci-fairy minio login --token-file "${CI_JOB_JWT_FILE}"
> +ci-fairy minio cp job-rootfs-overlay.tar.gz "minio://${JOB_ROOTFS_OVERLAY_PATH}"
> +
> +touch results/lava.log
> +tail -f results/lava.log &
> +
> +PYTHONPATH=artifacts/ artifacts/lava/lava_job_submitter.py \
> +	--dump-yaml \
> +	--pipeline-info "$CI_JOB_NAME: $CI_PIPELINE_URL on $CI_COMMIT_REF_NAME ${CI_NODE_INDEX}/${CI_NODE_TOTAL}" \
> +	--rootfs-url-prefix "https://${BASE_SYSTEM_HOST_PATH}" \
> +	--kernel-url-prefix "https://${PIPELINE_ARTIFACTS_BASE}/${ARCH}" \
> +	--build-url "${FDO_HTTP_CACHE_URI:-}https://${PIPELINE_ARTIFACTS_BASE}/${ARCH}/kernel-files.tar.zst" \
> +	--job-rootfs-overlay-url "${FDO_HTTP_CACHE_URI:-}https://${JOB_ROOTFS_OVERLAY_PATH}" \
> +	--job-timeout ${JOB_TIMEOUT:-30} \
> +	--first-stage-init artifacts/ci-common/init-stage1.sh \
> +	--ci-project-dir ${CI_PROJECT_DIR} \
> +	--device-type ${DEVICE_TYPE} \
> +	--dtb ${DTB} \
> +	--jwt-file "${CI_JOB_JWT_FILE}" \
> +	--kernel-image-name ${KERNEL_IMAGE_NAME} \
> +	--kernel-image-type "${KERNEL_IMAGE_TYPE}" \
> +	--boot-method ${BOOT_METHOD} \
> +	--visibility-group ${VISIBILITY_GROUP} \
> +	--priority 50 \
> +    --lava-tags "${LAVA_TAGS}" \
> +    --mesa-job-name "$CI_JOB_NAME" \
> +    >> results/lava.log
> diff --git a/drivers/gpu/drm/ci/static-checks.yml b/drivers/gpu/drm/ci/static-checks.yml
> new file mode 100644
> index 000000000000..213177081914
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/static-checks.yml
> @@ -0,0 +1,12 @@
> +check-patch:
> +  extends:
> +    - .build
> +    - .use-debian/x86_build
> +  script:
> +    - drivers/gpu/drm/ci/check-patch.py
> +  variables:
> +    CHECKPATCH_TYPES: "BAD_SIGN_OFF,BAD_STABLE_ADDRESS_STYLE,COMMIT_COMMENT_SYMBOL,COMMIT_MESSAGE,EMAIL_SUBJECT,FROM_SIGN_OFF_MISMATCH,MISSING_SIGN_OFF,NO_AUTHOR_SIGN_OFF,DIFF_IN_COMMIT_MSG,GERRIT_CHANGE_ID,GIT_COMMIT_ID,UNKNOWN_COMMIT_ID,CODE_INDENT,BIT_MACRO,DOS_LINE_ENDINGS"
> +  rules:
> +    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
> +      when: on_success
> +    # Other cases default to never
> diff --git a/drivers/gpu/drm/ci/test.yml b/drivers/gpu/drm/ci/test.yml
> new file mode 100644
> index 000000000000..399f0db01aeb
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/test.yml
> @@ -0,0 +1,322 @@
> +.test-rules:
> +  rules:
> +    - if: '$FD_FARM == "offline" && $RUNNER_TAG =~ /^google-freedreno-/'
> +      when: never
> +    - if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
> +      when: never
> +    - !reference [.no_scheduled_pipelines-rules, rules]
> +    - when: on_success
> +
> +.lava-test:
> +  extends:
> +    - .test-rules
> +  script:
> +    # Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY
> +    - rm -rf install
> +    - tar -xf artifacts/install.tar
> +    - mv install/* artifacts/.
> +    # Override it with our lava-submit.sh script
> +    - ./artifacts/lava-submit.sh
> +
> +.lava-igt:armhf:
> +  extends:
> +    - .lava-test:armhf
> +  variables:
> +    HWCI_TEST_SCRIPT: "/install/igt_runner.sh"
> +    ARCH: "armhf"
> +  dependencies:
> +    - testing:armhf
> +  needs:
> +    - kernel+rootfs_armhf
> +    - debian/x86_build
> +    - testing:armhf
> +    - igt:armhf
> +
> +.lava-igt:arm64:
> +  extends:
> +    - .lava-test:arm64
> +  variables:
> +    HWCI_TEST_SCRIPT: "/install/igt_runner.sh"
> +    ARCH: "arm64"
> +  dependencies:
> +    - testing:arm64
> +  needs:
> +    - kernel+rootfs_arm64
> +    - debian/x86_build
> +    - testing:arm64
> +    - igt:arm64
> +
> +.lava-igt:amd64:
> +  extends:
> +    - .lava-test:amd64
> +  variables:
> +    HWCI_TEST_SCRIPT: "/install/igt_runner.sh"
> +    ARCH: "amd64"
> +  dependencies:
> +    - testing:amd64
> +  needs:
> +    - kernel+rootfs_amd64
> +    - debian/x86_build
> +    - testing:amd64
> +    - igt:amd64
> +
> +.baremetal-igt-arm64:
> +  extends:
> +    - .baremetal-test-arm64
> +    - .use-debian/arm_test
> +    - .test-rules
> +  variables:
> +    FDO_CI_CONCURRENT: 10
> +    HWCI_TEST_SCRIPT: "/install/igt_runner.sh"
> +    MINIO_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"
> +  needs:
> +    - debian/arm_test
> +    - job: testing:arm64
> +      artifacts: false
> +    - igt:arm64
> +  tags:
> +    - $RUNNER_TAG
> +
> +msm:sc7180:
> +  extends:
> +    - .lava-igt:arm64
> +  stage: msm
> +  parallel: 2
> +  variables:
> +    DRIVER_NAME: msm
> +    DEVICE_TYPE: sc7180-trogdor-lazor-limozeen
> +    DTB: sc7180-trogdor-lazor-limozeen-nots-r5
> +    BOOT_METHOD: depthcharge
> +    KERNEL_IMAGE_TYPE: ""
> +    GPU_VERSION: sc7180
> +    RUNNER_TAG: mesa-ci-x86-64-lava-sc7180-trogdor-lazor-limozeen
> +
> +msm:apq8016:
> +  extends:
> +    - .baremetal-igt-arm64
> +  stage: msm
> +  variables:
> +    DRIVER_NAME: msm
> +    BM_DTB: https://${PIPELINE_ARTIFACTS_BASE}/arm64/apq8016-sbc.dtb
> +    GPU_VERSION: apq8016
> +    RUNNER_TAG: google-freedreno-db410c
> +  script:
> +    - ./install/bare-metal/fastboot.sh
> +
> +msm:apq8096:
> +  extends:
> +    - .baremetal-igt-arm64
> +  stage: msm
> +  variables:
> +    DRIVER_NAME: msm
> +    BM_KERNEL_EXTRA_ARGS: maxcpus=2
> +    BM_DTB: https://${PIPELINE_ARTIFACTS_BASE}/arm64/apq8096-db820c.dtb
> +    GPU_VERSION: apq8096
> +    RUNNER_TAG: google-freedreno-db820c
> +  script:
> +    - ./install/bare-metal/fastboot.sh
> +
> +msm:sdm845:
> +  extends:
> +    - .baremetal-igt-arm64
> +  stage: msm
> +  parallel: 2
> +  variables:
> +    DRIVER_NAME: msm
> +    BM_KERNEL: https://${PIPELINE_ARTIFACTS_BASE}/arm64/cheza-kernel
> +    GPU_VERSION: sdm845
> +    RUNNER_TAG: google-freedreno-cheza
> +  script:
> +    - ./install/bare-metal/cros-servo.sh
> +
> +rockchip:rk3288:
> +  extends:
> +    - .lava-igt:armhf
> +  stage: rockchip
> +  variables:
> +    DRIVER_NAME: rockchip
> +    DEVICE_TYPE: rk3288-veyron-jaq
> +    DTB: ${DEVICE_TYPE}
> +    BOOT_METHOD: depthcharge
> +    KERNEL_IMAGE_TYPE: "zimage"
> +    GPU_VERSION: rk3288
> +    RUNNER_TAG: mesa-ci-x86-64-lava-rk3288-veyron-jaq
> +
> +rockchip:rk3399:
> +  extends:
> +    - .lava-igt:arm64
> +  stage: rockchip
> +  parallel: 2
> +  variables:
> +    DRIVER_NAME: rockchip
> +    DEVICE_TYPE: rk3399-gru-kevin
> +    DTB: ${DEVICE_TYPE}
> +    BOOT_METHOD: depthcharge
> +    KERNEL_IMAGE_TYPE: ""
> +    GPU_VERSION: rk3399
> +    RUNNER_TAG: mesa-ci-x86-64-lava-rk3399-gru-kevin
> +
> +.i915:
> +  extends:
> +    - .lava-igt:amd64
> +  stage: i915
> +  variables:
> +    DRIVER_NAME: i915
> +    DTB: ""
> +    BOOT_METHOD: depthcharge
> +    KERNEL_IMAGE_TYPE: ""
> +
> +i915:apl:
> +  extends:
> +    - .i915
> +  parallel: 6
> +  variables:
> +    DEVICE_TYPE: asus-C523NA-A20057-coral
> +    GPU_VERSION: apl
> +    RUNNER_TAG: mesa-ci-x86-64-lava-asus-C523NA-A20057-coral
> +
> +i915:glk:
> +  extends:
> +    - .i915
> +  parallel: 3
> +  variables:
> +    DEVICE_TYPE: hp-x360-12b-ca0010nr-n4020-octopus
> +    GPU_VERSION: glk
> +    RUNNER_TAG: mesa-ci-x86-64-lava-hp-x360-12b-ca0010nr-n4020-octopus
> +
> +i915:amly:
> +  extends:
> +    - .i915
> +  parallel: 5
> +  variables:
> +    DEVICE_TYPE: asus-C433TA-AJ0005-rammus
> +    GPU_VERSION: amly
> +    RUNNER_TAG: mesa-ci-x86-64-lava-asus-C433TA-AJ0005-rammus
> +
> +i915:kbl:
> +  extends:
> +    - .i915
> +  parallel: 3
> +  variables:
> +    DEVICE_TYPE: hp-x360-14-G1-sona
> +    GPU_VERSION: kbl
> +    RUNNER_TAG: mesa-ci-x86-64-lava-hp-x360-14-G1-sona
> +
> +i915:whl:
> +  extends:
> +    - .i915
> +  parallel: 5
> +  variables:
> +    DEVICE_TYPE: dell-latitude-5400-8665U-sarien
> +    GPU_VERSION: whl
> +    RUNNER_TAG: mesa-ci-x86-64-lava-dell-latitude-5400-8665U-sarien
> +
> +i915:cml:
> +  extends:
> +    - .i915
> +  parallel: 4
> +  variables:
> +    DEVICE_TYPE: asus-C436FA-Flip-hatch
> +    GPU_VERSION: cml
> +    RUNNER_TAG: mesa-ci-x86-64-lava-asus-C436FA-flip-hatch
> +
> +i915:tgl:
> +  extends:
> +    - .i915
> +  parallel: 4
> +  variables:
> +    DEVICE_TYPE: asus-cx9400-volteer
> +    GPU_VERSION: tgl
> +    RUNNER_TAG: mesa-ci-x86-64-lava-asus-cx9400-volteer
> +
> +.amdgpu:
> +  extends:
> +    - .lava-igt:amd64
> +  stage: amdgpu
> +  variables:
> +    DRIVER_NAME: amdgpu
> +    DTB: ""
> +    BOOT_METHOD: depthcharge
> +    KERNEL_IMAGE_TYPE: ""
> +
> +amdgpu:stoney:
> +  extends:
> +    - .amdgpu
> +  variables:
> +    DEVICE_TYPE: hp-11A-G6-EE-grunt
> +    GPU_VERSION: stoney
> +    RUNNER_TAG: mesa-ci-x86-64-lava-hp-11A-G6-EE-grunt
> +
> +.mediatek:
> +  extends:
> +    - .lava-igt:arm64
> +  stage: mediatek
> +  variables:
> +    DRIVER_NAME: mediatek
> +    DTB: ${DEVICE_TYPE}
> +    BOOT_METHOD: depthcharge
> +    KERNEL_IMAGE_TYPE: ""
> +
> +mediatek:mt8173:
> +  extends:
> +    - .mediatek
> +  variables:
> +    DEVICE_TYPE: mt8173-elm-hana
> +    GPU_VERSION: mt8173
> +    RUNNER_TAG: mesa-ci-x86-64-lava-mt8173-elm-hana
> +
> +mediatek:mt8183:
> +  extends:
> +    - .mediatek
> +  variables:
> +    DEVICE_TYPE: mt8183-kukui-jacuzzi-juniper-sku16
> +    GPU_VERSION: mt8183
> +    RUNNER_TAG: mesa-ci-x86-64-lava-mt8183-kukui-jacuzzi-juniper-sku16
> +
> +# drm-mtk doesn't even probe yet in mainline for mt8192
> +.mediatek:mt8192:
> +  extends:
> +    - .mediatek
> +  variables:
> +    DEVICE_TYPE: mt8192-asurada-spherion-r0
> +    GPU_VERSION: mt8192
> +    RUNNER_TAG: mesa-ci-x86-64-lava-mt8192-asurada-spherion-r0
> +
> +.meson:
> +  extends:
> +    - .lava-igt:arm64
> +  stage: meson
> +  variables:
> +    DRIVER_NAME: meson
> +    DTB: ${DEVICE_TYPE}
> +    BOOT_METHOD: u-boot
> +    KERNEL_IMAGE_TYPE: "image"
> +
> +meson:g12b:
> +  extends:
> +    - .meson
> +  variables:
> +    DEVICE_TYPE: meson-g12b-a311d-khadas-vim3
> +    GPU_VERSION: g12b
> +    RUNNER_TAG: mesa-ci-x86-64-lava-meson-g12b-a311d-khadas-vim3
> +
> +virtio_gpu:none:
> +  stage: virtio-gpu
> +  variables:
> +    CROSVM_GALLIUM_DRIVER: llvmpipe
> +    DRIVER_NAME: virtio_gpu
> +    GPU_VERSION: none
> +  extends:
> +    - .test-gl
> +  tags:
> +    - kvm
> +  script:
> +    - ln -sf $CI_PROJECT_DIR/install /install
> +    - mv install/bzImage /lava-files/bzImage
> +    - install/crosvm-runner.sh install/igt_runner.sh
> +  needs:
> +    - debian/x86_test-gl
> +    - testing:amd64
> +    - igt:amd64
> diff --git a/drivers/gpu/drm/ci/testlist.txt b/drivers/gpu/drm/ci/testlist.txt
> new file mode 100644
> index 000000000000..e90c3cfe5eed
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/testlist.txt
> @@ -0,0 +1,2763 @@
> +core_auth@basic-auth
> +core_auth@getclient-master-drop
> +core_auth@getclient-simple
> +core_auth@many-magics
> +core_getclient
> +core_getstats
> +core_getversion
> +core_setmaster_vs_auth
> +drm_read@empty-block
> +drm_read@empty-nonblock
> +drm_read@fault-buffer
> +drm_read@invalid-buffer
> +drm_read@short-buffer-block
> +drm_read@short-buffer-nonblock
> +gem_eio@banned
> +gem_eio@context-create
> +gem_eio@create
> +gem_eio@create-ext
> +gem_eio@execbuf
> +gem_eio@hibernate
> +gem_eio@in-flight-10ms
> +gem_eio@in-flight-1us
> +gem_eio@in-flight-contexts-10ms
> +gem_eio@in-flight-contexts-1us
> +gem_eio@in-flight-contexts-immediate
> +gem_eio@in-flight-external
> +gem_eio@in-flight-immediate
> +gem_eio@in-flight-internal-10ms
> +gem_eio@in-flight-internal-1us
> +gem_eio@in-flight-internal-immediate
> +gem_eio@kms
> +gem_eio@reset-stress
> +gem_eio@throttle
> +gem_eio@unwedge-stress
> +gem_eio@wait-10ms
> +gem_eio@wait-1us
> +gem_eio@wait-immediate
> +gem_eio@wait-wedge-10ms
> +gem_eio@wait-wedge-1us
> +gem_eio@wait-wedge-immediate
> +kms_3d
> +kms_addfb_basic@addfb25-4-tiled
> +kms_addfb_basic@addfb25-bad-modifier
> +kms_addfb_basic@addfb25-framebuffer-vs-set-tiling
> +kms_addfb_basic@addfb25-modifier-no-flag
> +kms_addfb_basic@addfb25-x-tiled-legacy
> +kms_addfb_basic@addfb25-x-tiled-mismatch-legacy
> +kms_addfb_basic@addfb25-yf-tiled-legacy
> +kms_addfb_basic@addfb25-y-tiled-legacy
> +kms_addfb_basic@addfb25-y-tiled-small-legacy
> +kms_addfb_basic@bad-pitch-0
> +kms_addfb_basic@bad-pitch-1024
> +kms_addfb_basic@bad-pitch-128
> +kms_addfb_basic@bad-pitch-256
> +kms_addfb_basic@bad-pitch-32
> +kms_addfb_basic@bad-pitch-63
> +kms_addfb_basic@bad-pitch-65536
> +kms_addfb_basic@bad-pitch-999
> +kms_addfb_basic@basic
> +kms_addfb_basic@basic-x-tiled-legacy
> +kms_addfb_basic@basic-y-tiled-legacy
> +kms_addfb_basic@bo-too-small
> +kms_addfb_basic@bo-too-small-due-to-tiling
> +kms_addfb_basic@clobberred-modifier
> +kms_addfb_basic@framebuffer-vs-set-tiling
> +kms_addfb_basic@invalid-get-prop
> +kms_addfb_basic@invalid-get-prop-any
> +kms_addfb_basic@invalid-set-prop
> +kms_addfb_basic@invalid-set-prop-any
> +kms_addfb_basic@invalid-smem-bo-on-discrete
> +kms_addfb_basic@legacy-format
> +kms_addfb_basic@master-rmfb
> +kms_addfb_basic@no-handle
> +kms_addfb_basic@size-max
> +kms_addfb_basic@small-bo
> +kms_addfb_basic@tile-pitch-mismatch
> +kms_addfb_basic@too-high
> +kms_addfb_basic@too-wide
> +kms_addfb_basic@unused-handle
> +kms_addfb_basic@unused-modifier
> +kms_addfb_basic@unused-offsets
> +kms_addfb_basic@unused-pitches
> +kms_async_flips@alternate-sync-async-flip
> +kms_async_flips@async-flip-with-page-flip-events
> +kms_async_flips@crc
> +kms_async_flips@invalid-async-flip
> +kms_async_flips@test-cursor
> +kms_async_flips@test-time-stamp
> +kms_atomic@atomic-invalid-params
> +kms_atomic@atomic_plane_damage
> +kms_atomic@crtc-invalid-params
> +kms_atomic@crtc-invalid-params-fence
> +kms_atomic_interruptible@atomic-setmode
> +kms_atomic_interruptible@legacy-cursor
> +kms_atomic_interruptible@legacy-dpms
> +kms_atomic_interruptible@legacy-pageflip
> +kms_atomic_interruptible@legacy-setmode
> +kms_atomic_interruptible@universal-setplane-cursor
> +kms_atomic_interruptible@universal-setplane-primary
> +kms_atomic@plane-cursor-legacy
> +kms_atomic@plane-immutable-zpos
> +kms_atomic@plane-invalid-params
> +kms_atomic@plane-invalid-params-fence
> +kms_atomic@plane-overlay-legacy
> +kms_atomic@plane-primary-legacy
> +kms_atomic@plane-primary-overlay-mutable-zpos
> +kms_atomic@test-only
> +kms_atomic_transition@plane-all-modeset-transition
> +kms_atomic_transition@plane-all-modeset-transition-fencing
> +kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels
> +kms_atomic_transition@plane-all-transition-fencing
> +kms_atomic_transition@plane-all-transition-nonblocking-fencing
> +kms_atomic_transition@plane-primary-toggle-with-vblank-wait
> +kms_atomic_transition@plane-use-after-nonblocking-unbind
> +kms_atomic_transition@plane-use-after-nonblocking-unbind-fencing
> +kms_big_fb@4-tiled-16bpp-rotate-0
> +kms_big_fb@4-tiled-16bpp-rotate-180
> +kms_big_fb@4-tiled-16bpp-rotate-270
> +kms_big_fb@4-tiled-16bpp-rotate-90
> +kms_big_fb@4-tiled-32bpp-rotate-0
> +kms_big_fb@4-tiled-32bpp-rotate-180
> +kms_big_fb@4-tiled-32bpp-rotate-270
> +kms_big_fb@4-tiled-32bpp-rotate-90
> +kms_big_fb@4-tiled-64bpp-rotate-0
> +kms_big_fb@4-tiled-64bpp-rotate-180
> +kms_big_fb@4-tiled-64bpp-rotate-270
> +kms_big_fb@4-tiled-64bpp-rotate-90
> +kms_big_fb@4-tiled-8bpp-rotate-0
> +kms_big_fb@4-tiled-8bpp-rotate-180
> +kms_big_fb@4-tiled-8bpp-rotate-270
> +kms_big_fb@4-tiled-8bpp-rotate-90
> +kms_big_fb@4-tiled-addfb
> +kms_big_fb@4-tiled-addfb-size-offset-overflow
> +kms_big_fb@4-tiled-addfb-size-overflow
> +kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0
> +kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-async-flip
> +kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip
> +kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip
> +kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180
> +kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip
> +kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip
> +kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip
> +kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0
> +kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-async-flip
> +kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip
> +kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip
> +kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180
> +kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-async-flip
> +kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip
> +kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip
> +kms_big_fb@linear-16bpp-rotate-180
> +kms_big_fb@linear-16bpp-rotate-270
> +kms_big_fb@linear-16bpp-rotate-90
> +kms_big_fb@linear-32bpp-rotate-270
> +kms_big_fb@linear-32bpp-rotate-90
> +kms_big_fb@linear-64bpp-rotate-0
> +kms_big_fb@linear-64bpp-rotate-180
> +kms_big_fb@linear-64bpp-rotate-270
> +kms_big_fb@linear-64bpp-rotate-90
> +kms_big_fb@linear-8bpp-rotate-0
> +kms_big_fb@linear-8bpp-rotate-180
> +kms_big_fb@linear-8bpp-rotate-270
> +kms_big_fb@linear-8bpp-rotate-90
> +kms_big_fb@linear-addfb
> +kms_big_fb@linear-max-hw-stride-32bpp-rotate-0
> +kms_big_fb@linear-max-hw-stride-32bpp-rotate-180
> +kms_big_fb@linear-max-hw-stride-64bpp-rotate-0
> +kms_big_fb@linear-max-hw-stride-64bpp-rotate-180
> +kms_big_fb@x-tiled-16bpp-rotate-0
> +kms_big_fb@x-tiled-16bpp-rotate-270
> +kms_big_fb@x-tiled-16bpp-rotate-90
> +kms_big_fb@x-tiled-32bpp-rotate-270
> +kms_big_fb@x-tiled-32bpp-rotate-90
> +kms_big_fb@x-tiled-64bpp-rotate-0
> +kms_big_fb@x-tiled-64bpp-rotate-180
> +kms_big_fb@x-tiled-64bpp-rotate-270
> +kms_big_fb@x-tiled-64bpp-rotate-90
> +kms_big_fb@x-tiled-8bpp-rotate-0
> +kms_big_fb@x-tiled-8bpp-rotate-180
> +kms_big_fb@x-tiled-8bpp-rotate-270
> +kms_big_fb@x-tiled-8bpp-rotate-90
> +kms_big_fb@x-tiled-addfb
> +kms_big_fb@x-tiled-addfb-size-offset-overflow
> +kms_big_fb@x-tiled-addfb-size-overflow
> +kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0
> +kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-async-flip
> +kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-hflip
> +kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip
> +kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180
> +kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip
> +kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip
> +kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip
> +kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0
> +kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-async-flip
> +kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip
> +kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip
> +kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180
> +kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip
> +kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip
> +kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip
> +kms_big_fb@yf-tiled-16bpp-rotate-180
> +kms_big_fb@yf-tiled-16bpp-rotate-270
> +kms_big_fb@yf-tiled-16bpp-rotate-90
> +kms_big_fb@yf-tiled-64bpp-rotate-0
> +kms_big_fb@yf-tiled-64bpp-rotate-180
> +kms_big_fb@yf-tiled-64bpp-rotate-270
> +kms_big_fb@yf-tiled-64bpp-rotate-90
> +kms_big_fb@yf-tiled-8bpp-rotate-0
> +kms_big_fb@yf-tiled-8bpp-rotate-180
> +kms_big_fb@yf-tiled-8bpp-rotate-270
> +kms_big_fb@yf-tiled-8bpp-rotate-90
> +kms_big_fb@yf-tiled-addfb
> +kms_big_fb@yf-tiled-addfb-size-offset-overflow
> +kms_big_fb@yf-tiled-addfb-size-overflow
> +kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0
> +kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-async-flip
> +kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip
> +kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip
> +kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180
> +kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip
> +kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip
> +kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip
> +kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0
> +kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-async-flip
> +kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip
> +kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip
> +kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180
> +kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip
> +kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip
> +kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip
> +kms_big_fb@y-tiled-16bpp-rotate-0
> +kms_big_fb@y-tiled-16bpp-rotate-180
> +kms_big_fb@y-tiled-16bpp-rotate-270
> +kms_big_fb@y-tiled-16bpp-rotate-90
> +kms_big_fb@y-tiled-64bpp-rotate-0
> +kms_big_fb@y-tiled-64bpp-rotate-180
> +kms_big_fb@y-tiled-64bpp-rotate-270
> +kms_big_fb@y-tiled-64bpp-rotate-90
> +kms_big_fb@y-tiled-8bpp-rotate-0
> +kms_big_fb@y-tiled-8bpp-rotate-180
> +kms_big_fb@y-tiled-8bpp-rotate-270
> +kms_big_fb@y-tiled-8bpp-rotate-90
> +kms_big_fb@y-tiled-addfb
> +kms_big_fb@y-tiled-addfb-size-offset-overflow
> +kms_big_fb@y-tiled-addfb-size-overflow
> +kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0
> +kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip
> +kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip
> +kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip
> +kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180
> +kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip
> +kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip
> +kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip
> +kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0
> +kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip
> +kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip
> +kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip
> +kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180
> +kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip
> +kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip
> +kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip
> +kms_big_joiner@2x-modeset
> +kms_big_joiner@basic
> +kms_big_joiner@invalid-modeset
> +kms_busy@basic
> +kms_busy@basic-hang
> +kms_busy@extended-pageflip-hang-oldfb
> +kms_bw@linear-tiling-1-displays-1920x1080p
> +kms_bw@linear-tiling-1-displays-2560x1440p
> +kms_bw@linear-tiling-1-displays-3840x2160p
> +kms_bw@linear-tiling-2-displays-1920x1080p
> +kms_bw@linear-tiling-2-displays-2560x1440p
> +kms_bw@linear-tiling-2-displays-3840x2160p
> +kms_bw@linear-tiling-3-displays-1920x1080p
> +kms_bw@linear-tiling-3-displays-2560x1440p
> +kms_bw@linear-tiling-3-displays-3840x2160p
> +kms_bw@linear-tiling-4-displays-1920x1080p
> +kms_bw@linear-tiling-4-displays-2560x1440p
> +kms_bw@linear-tiling-4-displays-3840x2160p
> +kms_bw@linear-tiling-5-displays-1920x1080p
> +kms_bw@linear-tiling-5-displays-2560x1440p
> +kms_bw@linear-tiling-5-displays-3840x2160p
> +kms_bw@linear-tiling-6-displays-1920x1080p
> +kms_bw@linear-tiling-6-displays-2560x1440p
> +kms_bw@linear-tiling-6-displays-3840x2160p
> +kms_ccs@pipe-A-bad-aux-stride-yf_tiled_ccs
> +kms_ccs@pipe-A-bad-aux-stride-y_tiled_ccs
> +kms_ccs@pipe-A-bad-aux-stride-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-A-bad-aux-stride-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-A-bad-aux-stride-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-A-bad-pixel-format-yf_tiled_ccs
> +kms_ccs@pipe-A-bad-pixel-format-y_tiled_ccs
> +kms_ccs@pipe-A-bad-pixel-format-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-A-bad-pixel-format-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-A-bad-pixel-format-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-A-bad-rotation-90-yf_tiled_ccs
> +kms_ccs@pipe-A-bad-rotation-90-y_tiled_ccs
> +kms_ccs@pipe-A-bad-rotation-90-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-A-bad-rotation-90-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-A-bad-rotation-90-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-A-ccs-on-another-bo-yf_tiled_ccs
> +kms_ccs@pipe-A-ccs-on-another-bo-y_tiled_ccs
> +kms_ccs@pipe-A-ccs-on-another-bo-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-A-ccs-on-another-bo-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-A-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-A-crc-primary-basic-yf_tiled_ccs
> +kms_ccs@pipe-A-crc-primary-basic-y_tiled_ccs
> +kms_ccs@pipe-A-crc-primary-basic-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-A-crc-primary-basic-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-A-crc-primary-basic-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-A-crc-primary-rotation-180-yf_tiled_ccs
> +kms_ccs@pipe-A-crc-primary-rotation-180-y_tiled_ccs
> +kms_ccs@pipe-A-crc-primary-rotation-180-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-A-crc-primary-rotation-180-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-A-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-A-crc-sprite-planes-basic-yf_tiled_ccs
> +kms_ccs@pipe-A-crc-sprite-planes-basic-y_tiled_ccs
> +kms_ccs@pipe-A-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-A-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-A-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-A-missing-ccs-buffer-yf_tiled_ccs
> +kms_ccs@pipe-A-missing-ccs-buffer-y_tiled_ccs
> +kms_ccs@pipe-A-missing-ccs-buffer-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-A-missing-ccs-buffer-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-A-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-A-random-ccs-data-yf_tiled_ccs
> +kms_ccs@pipe-A-random-ccs-data-y_tiled_ccs
> +kms_ccs@pipe-A-random-ccs-data-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-A-random-ccs-data-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-A-random-ccs-data-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-B-bad-aux-stride-yf_tiled_ccs
> +kms_ccs@pipe-B-bad-aux-stride-y_tiled_ccs
> +kms_ccs@pipe-B-bad-aux-stride-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-B-bad-aux-stride-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-B-bad-aux-stride-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-B-bad-pixel-format-yf_tiled_ccs
> +kms_ccs@pipe-B-bad-pixel-format-y_tiled_ccs
> +kms_ccs@pipe-B-bad-pixel-format-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-B-bad-pixel-format-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-B-bad-pixel-format-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-B-bad-rotation-90-yf_tiled_ccs
> +kms_ccs@pipe-B-bad-rotation-90-y_tiled_ccs
> +kms_ccs@pipe-B-bad-rotation-90-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-B-bad-rotation-90-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-B-bad-rotation-90-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-B-ccs-on-another-bo-yf_tiled_ccs
> +kms_ccs@pipe-B-ccs-on-another-bo-y_tiled_ccs
> +kms_ccs@pipe-B-ccs-on-another-bo-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-B-ccs-on-another-bo-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-B-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-B-crc-primary-basic-yf_tiled_ccs
> +kms_ccs@pipe-B-crc-primary-basic-y_tiled_ccs
> +kms_ccs@pipe-B-crc-primary-basic-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-B-crc-primary-basic-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-B-crc-primary-basic-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-B-crc-primary-rotation-180-yf_tiled_ccs
> +kms_ccs@pipe-B-crc-primary-rotation-180-y_tiled_ccs
> +kms_ccs@pipe-B-crc-primary-rotation-180-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-B-crc-primary-rotation-180-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-B-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-B-crc-sprite-planes-basic-yf_tiled_ccs
> +kms_ccs@pipe-B-crc-sprite-planes-basic-y_tiled_ccs
> +kms_ccs@pipe-B-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-B-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-B-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-B-missing-ccs-buffer-yf_tiled_ccs
> +kms_ccs@pipe-B-missing-ccs-buffer-y_tiled_ccs
> +kms_ccs@pipe-B-missing-ccs-buffer-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-B-missing-ccs-buffer-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-B-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-B-random-ccs-data-yf_tiled_ccs
> +kms_ccs@pipe-B-random-ccs-data-y_tiled_ccs
> +kms_ccs@pipe-B-random-ccs-data-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-B-random-ccs-data-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-B-random-ccs-data-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-C-bad-aux-stride-yf_tiled_ccs
> +kms_ccs@pipe-C-bad-aux-stride-y_tiled_ccs
> +kms_ccs@pipe-C-bad-aux-stride-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-C-bad-aux-stride-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-C-bad-aux-stride-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-C-bad-pixel-format-yf_tiled_ccs
> +kms_ccs@pipe-C-bad-pixel-format-y_tiled_ccs
> +kms_ccs@pipe-C-bad-pixel-format-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-C-bad-pixel-format-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-C-bad-pixel-format-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-C-bad-rotation-90-yf_tiled_ccs
> +kms_ccs@pipe-C-bad-rotation-90-y_tiled_ccs
> +kms_ccs@pipe-C-bad-rotation-90-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-C-bad-rotation-90-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-C-bad-rotation-90-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-C-ccs-on-another-bo-yf_tiled_ccs
> +kms_ccs@pipe-C-ccs-on-another-bo-y_tiled_ccs
> +kms_ccs@pipe-C-ccs-on-another-bo-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-C-ccs-on-another-bo-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-C-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-C-crc-primary-basic-yf_tiled_ccs
> +kms_ccs@pipe-C-crc-primary-basic-y_tiled_ccs
> +kms_ccs@pipe-C-crc-primary-basic-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-C-crc-primary-basic-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-C-crc-primary-basic-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-C-crc-primary-rotation-180-yf_tiled_ccs
> +kms_ccs@pipe-C-crc-primary-rotation-180-y_tiled_ccs
> +kms_ccs@pipe-C-crc-primary-rotation-180-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-C-crc-primary-rotation-180-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-C-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-C-crc-sprite-planes-basic-yf_tiled_ccs
> +kms_ccs@pipe-C-crc-sprite-planes-basic-y_tiled_ccs
> +kms_ccs@pipe-C-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-C-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-C-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-C-missing-ccs-buffer-yf_tiled_ccs
> +kms_ccs@pipe-C-missing-ccs-buffer-y_tiled_ccs
> +kms_ccs@pipe-C-missing-ccs-buffer-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-C-missing-ccs-buffer-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-C-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-C-random-ccs-data-yf_tiled_ccs
> +kms_ccs@pipe-C-random-ccs-data-y_tiled_ccs
> +kms_ccs@pipe-C-random-ccs-data-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-C-random-ccs-data-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-C-random-ccs-data-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-D-bad-aux-stride-yf_tiled_ccs
> +kms_ccs@pipe-D-bad-aux-stride-y_tiled_ccs
> +kms_ccs@pipe-D-bad-aux-stride-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-D-bad-aux-stride-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-D-bad-aux-stride-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-D-bad-pixel-format-yf_tiled_ccs
> +kms_ccs@pipe-D-bad-pixel-format-y_tiled_ccs
> +kms_ccs@pipe-D-bad-pixel-format-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-D-bad-pixel-format-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-D-bad-pixel-format-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-D-bad-rotation-90-yf_tiled_ccs
> +kms_ccs@pipe-D-bad-rotation-90-y_tiled_ccs
> +kms_ccs@pipe-D-bad-rotation-90-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-D-bad-rotation-90-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-D-bad-rotation-90-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-D-ccs-on-another-bo-yf_tiled_ccs
> +kms_ccs@pipe-D-ccs-on-another-bo-y_tiled_ccs
> +kms_ccs@pipe-D-ccs-on-another-bo-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-D-ccs-on-another-bo-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-D-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-D-crc-primary-basic-yf_tiled_ccs
> +kms_ccs@pipe-D-crc-primary-basic-y_tiled_ccs
> +kms_ccs@pipe-D-crc-primary-basic-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-D-crc-primary-basic-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-D-crc-primary-basic-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-D-crc-primary-rotation-180-yf_tiled_ccs
> +kms_ccs@pipe-D-crc-primary-rotation-180-y_tiled_ccs
> +kms_ccs@pipe-D-crc-primary-rotation-180-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-D-crc-primary-rotation-180-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-D-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-D-crc-sprite-planes-basic-yf_tiled_ccs
> +kms_ccs@pipe-D-crc-sprite-planes-basic-y_tiled_ccs
> +kms_ccs@pipe-D-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-D-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-D-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-D-missing-ccs-buffer-yf_tiled_ccs
> +kms_ccs@pipe-D-missing-ccs-buffer-y_tiled_ccs
> +kms_ccs@pipe-D-missing-ccs-buffer-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-D-missing-ccs-buffer-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-D-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-D-random-ccs-data-yf_tiled_ccs
> +kms_ccs@pipe-D-random-ccs-data-y_tiled_ccs
> +kms_ccs@pipe-D-random-ccs-data-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-D-random-ccs-data-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-D-random-ccs-data-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-E-bad-aux-stride-yf_tiled_ccs
> +kms_ccs@pipe-E-bad-aux-stride-y_tiled_ccs
> +kms_ccs@pipe-E-bad-aux-stride-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-E-bad-aux-stride-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-E-bad-aux-stride-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-E-bad-pixel-format-yf_tiled_ccs
> +kms_ccs@pipe-E-bad-pixel-format-y_tiled_ccs
> +kms_ccs@pipe-E-bad-pixel-format-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-E-bad-pixel-format-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-E-bad-pixel-format-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-E-bad-rotation-90-yf_tiled_ccs
> +kms_ccs@pipe-E-bad-rotation-90-y_tiled_ccs
> +kms_ccs@pipe-E-bad-rotation-90-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-E-bad-rotation-90-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-E-bad-rotation-90-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-E-ccs-on-another-bo-yf_tiled_ccs
> +kms_ccs@pipe-E-ccs-on-another-bo-y_tiled_ccs
> +kms_ccs@pipe-E-ccs-on-another-bo-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-E-ccs-on-another-bo-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-E-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-E-crc-primary-basic-yf_tiled_ccs
> +kms_ccs@pipe-E-crc-primary-basic-y_tiled_ccs
> +kms_ccs@pipe-E-crc-primary-basic-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-E-crc-primary-basic-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-E-crc-primary-basic-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-E-crc-primary-rotation-180-yf_tiled_ccs
> +kms_ccs@pipe-E-crc-primary-rotation-180-y_tiled_ccs
> +kms_ccs@pipe-E-crc-primary-rotation-180-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-E-crc-primary-rotation-180-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-E-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-E-crc-sprite-planes-basic-yf_tiled_ccs
> +kms_ccs@pipe-E-crc-sprite-planes-basic-y_tiled_ccs
> +kms_ccs@pipe-E-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-E-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-E-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-E-missing-ccs-buffer-yf_tiled_ccs
> +kms_ccs@pipe-E-missing-ccs-buffer-y_tiled_ccs
> +kms_ccs@pipe-E-missing-ccs-buffer-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-E-missing-ccs-buffer-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-E-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-E-random-ccs-data-yf_tiled_ccs
> +kms_ccs@pipe-E-random-ccs-data-y_tiled_ccs
> +kms_ccs@pipe-E-random-ccs-data-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-E-random-ccs-data-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-E-random-ccs-data-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-F-bad-aux-stride-yf_tiled_ccs
> +kms_ccs@pipe-F-bad-aux-stride-y_tiled_ccs
> +kms_ccs@pipe-F-bad-aux-stride-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-F-bad-aux-stride-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-F-bad-aux-stride-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-F-bad-pixel-format-yf_tiled_ccs
> +kms_ccs@pipe-F-bad-pixel-format-y_tiled_ccs
> +kms_ccs@pipe-F-bad-pixel-format-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-F-bad-pixel-format-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-F-bad-pixel-format-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-F-bad-rotation-90-yf_tiled_ccs
> +kms_ccs@pipe-F-bad-rotation-90-y_tiled_ccs
> +kms_ccs@pipe-F-bad-rotation-90-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-F-bad-rotation-90-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-F-bad-rotation-90-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-F-ccs-on-another-bo-yf_tiled_ccs
> +kms_ccs@pipe-F-ccs-on-another-bo-y_tiled_ccs
> +kms_ccs@pipe-F-ccs-on-another-bo-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-F-ccs-on-another-bo-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-F-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-F-crc-primary-basic-yf_tiled_ccs
> +kms_ccs@pipe-F-crc-primary-basic-y_tiled_ccs
> +kms_ccs@pipe-F-crc-primary-basic-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-F-crc-primary-basic-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-F-crc-primary-basic-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-F-crc-primary-rotation-180-yf_tiled_ccs
> +kms_ccs@pipe-F-crc-primary-rotation-180-y_tiled_ccs
> +kms_ccs@pipe-F-crc-primary-rotation-180-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-F-crc-primary-rotation-180-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-F-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-F-crc-sprite-planes-basic-yf_tiled_ccs
> +kms_ccs@pipe-F-crc-sprite-planes-basic-y_tiled_ccs
> +kms_ccs@pipe-F-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-F-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-F-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-F-missing-ccs-buffer-yf_tiled_ccs
> +kms_ccs@pipe-F-missing-ccs-buffer-y_tiled_ccs
> +kms_ccs@pipe-F-missing-ccs-buffer-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-F-missing-ccs-buffer-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-F-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc
> +kms_ccs@pipe-F-random-ccs-data-yf_tiled_ccs
> +kms_ccs@pipe-F-random-ccs-data-y_tiled_ccs
> +kms_ccs@pipe-F-random-ccs-data-y_tiled_gen12_mc_ccs
> +kms_ccs@pipe-F-random-ccs-data-y_tiled_gen12_rc_ccs
> +kms_ccs@pipe-F-random-ccs-data-y_tiled_gen12_rc_ccs_cc
> +kms_cdclk@mode-transition
> +kms_cdclk@plane-scaling
> +kms_color@pipe-A-ctm-0-25
> +kms_color@pipe-A-ctm-0-5
> +kms_color@pipe-A-ctm-0-75
> +kms_color@pipe-A-ctm-blue-to-red
> +kms_color@pipe-A-ctm-green-to-red
> +kms_color@pipe-A-ctm-max
> +kms_color@pipe-A-ctm-negative
> +kms_color@pipe-A-ctm-red-to-blue
> +kms_color@pipe-A-deep-color
> +kms_color@pipe-A-degamma
> +kms_color@pipe-A-gamma
> +kms_color@pipe-A-invalid-ctm-matrix-sizes
> +kms_color@pipe-A-invalid-degamma-lut-sizes
> +kms_color@pipe-A-invalid-gamma-lut-sizes
> +kms_color@pipe-A-legacy-gamma
> +kms_color@pipe-A-legacy-gamma-reset
> +kms_color@pipe-B-ctm-0-25
> +kms_color@pipe-B-ctm-0-5
> +kms_color@pipe-B-ctm-0-75
> +kms_color@pipe-B-ctm-blue-to-red
> +kms_color@pipe-B-ctm-green-to-red
> +kms_color@pipe-B-ctm-max
> +kms_color@pipe-B-ctm-negative
> +kms_color@pipe-B-ctm-red-to-blue
> +kms_color@pipe-B-deep-color
> +kms_color@pipe-B-degamma
> +kms_color@pipe-B-gamma
> +kms_color@pipe-B-invalid-ctm-matrix-sizes
> +kms_color@pipe-B-invalid-degamma-lut-sizes
> +kms_color@pipe-B-invalid-gamma-lut-sizes
> +kms_color@pipe-B-legacy-gamma
> +kms_color@pipe-B-legacy-gamma-reset
> +kms_color@pipe-C-ctm-0-25
> +kms_color@pipe-C-ctm-0-5
> +kms_color@pipe-C-ctm-0-75
> +kms_color@pipe-C-ctm-blue-to-red
> +kms_color@pipe-C-ctm-green-to-red
> +kms_color@pipe-C-ctm-max
> +kms_color@pipe-C-ctm-negative
> +kms_color@pipe-C-ctm-red-to-blue
> +kms_color@pipe-C-deep-color
> +kms_color@pipe-C-degamma
> +kms_color@pipe-C-gamma
> +kms_color@pipe-C-invalid-ctm-matrix-sizes
> +kms_color@pipe-C-invalid-degamma-lut-sizes
> +kms_color@pipe-C-invalid-gamma-lut-sizes
> +kms_color@pipe-C-legacy-gamma
> +kms_color@pipe-C-legacy-gamma-reset
> +kms_color@pipe-D-ctm-0-25
> +kms_color@pipe-D-ctm-0-5
> +kms_color@pipe-D-ctm-0-75
> +kms_color@pipe-D-ctm-blue-to-red
> +kms_color@pipe-D-ctm-green-to-red
> +kms_color@pipe-D-ctm-max
> +kms_color@pipe-D-ctm-negative
> +kms_color@pipe-D-ctm-red-to-blue
> +kms_color@pipe-D-deep-color
> +kms_color@pipe-D-degamma
> +kms_color@pipe-D-gamma
> +kms_color@pipe-D-invalid-ctm-matrix-sizes
> +kms_color@pipe-D-invalid-degamma-lut-sizes
> +kms_color@pipe-D-invalid-gamma-lut-sizes
> +kms_color@pipe-D-legacy-gamma
> +kms_color@pipe-D-legacy-gamma-reset
> +kms_color@pipe-E-ctm-0-25
> +kms_color@pipe-E-ctm-0-5
> +kms_color@pipe-E-ctm-0-75
> +kms_color@pipe-E-ctm-blue-to-red
> +kms_color@pipe-E-ctm-green-to-red
> +kms_color@pipe-E-ctm-max
> +kms_color@pipe-E-ctm-negative
> +kms_color@pipe-E-ctm-red-to-blue
> +kms_color@pipe-E-deep-color
> +kms_color@pipe-E-degamma
> +kms_color@pipe-E-gamma
> +kms_color@pipe-E-invalid-ctm-matrix-sizes
> +kms_color@pipe-E-invalid-degamma-lut-sizes
> +kms_color@pipe-E-invalid-gamma-lut-sizes
> +kms_color@pipe-E-legacy-gamma
> +kms_color@pipe-E-legacy-gamma-reset
> +kms_color@pipe-F-ctm-0-25
> +kms_color@pipe-F-ctm-0-5
> +kms_color@pipe-F-ctm-0-75
> +kms_color@pipe-F-ctm-blue-to-red
> +kms_color@pipe-F-ctm-green-to-red
> +kms_color@pipe-F-ctm-max
> +kms_color@pipe-F-ctm-negative
> +kms_color@pipe-F-ctm-red-to-blue
> +kms_color@pipe-F-deep-color
> +kms_color@pipe-F-degamma
> +kms_color@pipe-F-gamma
> +kms_color@pipe-F-invalid-ctm-matrix-sizes
> +kms_color@pipe-F-invalid-degamma-lut-sizes
> +kms_color@pipe-F-invalid-gamma-lut-sizes
> +kms_color@pipe-F-legacy-gamma
> +kms_color@pipe-F-legacy-gamma-reset
> +kms_concurrent@pipe-A
> +kms_concurrent@pipe-B
> +kms_concurrent@pipe-C
> +kms_concurrent@pipe-D
> +kms_concurrent@pipe-E
> +kms_concurrent@pipe-F
> +kms_content_protection@atomic
> +kms_content_protection@atomic-dpms
> +kms_content_protection@content_type_change
> +kms_content_protection@dp-mst-lic-type-0
> +kms_content_protection@dp-mst-lic-type-1
> +kms_content_protection@dp-mst-type-0
> +kms_content_protection@dp-mst-type-1
> +kms_content_protection@legacy
> +kms_content_protection@LIC
> +kms_content_protection@mei_interface
> +kms_content_protection@srm
> +kms_content_protection@type1
> +kms_content_protection@uevent
> +kms_cursor_crc@pipe-A-cursor-128x128-offscreen
> +kms_cursor_crc@pipe-A-cursor-128x128-onscreen
> +kms_cursor_crc@pipe-A-cursor-128x128-rapid-movement
> +kms_cursor_crc@pipe-A-cursor-128x128-sliding
> +kms_cursor_crc@pipe-A-cursor-128x42-offscreen
> +kms_cursor_crc@pipe-A-cursor-128x42-onscreen
> +kms_cursor_crc@pipe-A-cursor-128x42-random
> +kms_cursor_crc@pipe-A-cursor-128x42-rapid-movement
> +kms_cursor_crc@pipe-A-cursor-128x42-sliding
> +kms_cursor_crc@pipe-A-cursor-256x256-offscreen
> +kms_cursor_crc@pipe-A-cursor-256x256-onscreen
> +kms_cursor_crc@pipe-A-cursor-256x256-rapid-movement
> +kms_cursor_crc@pipe-A-cursor-256x256-sliding
> +kms_cursor_crc@pipe-A-cursor-256x85-offscreen
> +kms_cursor_crc@pipe-A-cursor-256x85-onscreen
> +kms_cursor_crc@pipe-A-cursor-256x85-random
> +kms_cursor_crc@pipe-A-cursor-256x85-rapid-movement
> +kms_cursor_crc@pipe-A-cursor-256x85-sliding
> +kms_cursor_crc@pipe-A-cursor-32x10-offscreen
> +kms_cursor_crc@pipe-A-cursor-32x10-onscreen
> +kms_cursor_crc@pipe-A-cursor-32x10-random
> +kms_cursor_crc@pipe-A-cursor-32x10-rapid-movement
> +kms_cursor_crc@pipe-A-cursor-32x10-sliding
> +kms_cursor_crc@pipe-A-cursor-32x32-offscreen
> +kms_cursor_crc@pipe-A-cursor-32x32-onscreen
> +kms_cursor_crc@pipe-A-cursor-32x32-random
> +kms_cursor_crc@pipe-A-cursor-32x32-rapid-movement
> +kms_cursor_crc@pipe-A-cursor-32x32-sliding
> +kms_cursor_crc@pipe-A-cursor-512x170-offscreen
> +kms_cursor_crc@pipe-A-cursor-512x170-onscreen
> +kms_cursor_crc@pipe-A-cursor-512x170-random
> +kms_cursor_crc@pipe-A-cursor-512x170-rapid-movement
> +kms_cursor_crc@pipe-A-cursor-512x170-sliding
> +kms_cursor_crc@pipe-A-cursor-512x512-offscreen
> +kms_cursor_crc@pipe-A-cursor-512x512-onscreen
> +kms_cursor_crc@pipe-A-cursor-512x512-random
> +kms_cursor_crc@pipe-A-cursor-512x512-rapid-movement
> +kms_cursor_crc@pipe-A-cursor-512x512-sliding
> +kms_cursor_crc@pipe-A-cursor-64x21-offscreen
> +kms_cursor_crc@pipe-A-cursor-64x21-onscreen
> +kms_cursor_crc@pipe-A-cursor-64x21-random
> +kms_cursor_crc@pipe-A-cursor-64x21-rapid-movement
> +kms_cursor_crc@pipe-A-cursor-64x21-sliding
> +kms_cursor_crc@pipe-A-cursor-64x64-offscreen
> +kms_cursor_crc@pipe-A-cursor-64x64-onscreen
> +kms_cursor_crc@pipe-A-cursor-64x64-random
> +kms_cursor_crc@pipe-A-cursor-64x64-rapid-movement
> +kms_cursor_crc@pipe-A-cursor-64x64-sliding
> +kms_cursor_crc@pipe-A-cursor-alpha-opaque
> +kms_cursor_crc@pipe-A-cursor-alpha-transparent
> +kms_cursor_crc@pipe-A-cursor-dpms
> +kms_cursor_crc@pipe-A-cursor-max-size-offscreen
> +kms_cursor_crc@pipe-A-cursor-max-size-onscreen
> +kms_cursor_crc@pipe-A-cursor-max-size-random
> +kms_cursor_crc@pipe-A-cursor-max-size-rapid-movement
> +kms_cursor_crc@pipe-A-cursor-max-size-sliding
> +kms_cursor_crc@pipe-A-cursor-size-change
> +kms_cursor_crc@pipe-B-cursor-128x128-offscreen
> +kms_cursor_crc@pipe-B-cursor-128x128-onscreen
> +kms_cursor_crc@pipe-B-cursor-128x128-random
> +kms_cursor_crc@pipe-B-cursor-128x128-rapid-movement
> +kms_cursor_crc@pipe-B-cursor-128x128-sliding
> +kms_cursor_crc@pipe-B-cursor-128x42-offscreen
> +kms_cursor_crc@pipe-B-cursor-128x42-onscreen
> +kms_cursor_crc@pipe-B-cursor-128x42-rapid-movement
> +kms_cursor_crc@pipe-B-cursor-128x42-sliding
> +kms_cursor_crc@pipe-B-cursor-256x256-offscreen
> +kms_cursor_crc@pipe-B-cursor-256x256-onscreen
> +kms_cursor_crc@pipe-B-cursor-256x256-random
> +kms_cursor_crc@pipe-B-cursor-256x256-rapid-movement
> +kms_cursor_crc@pipe-B-cursor-256x256-sliding
> +kms_cursor_crc@pipe-B-cursor-256x85-offscreen
> +kms_cursor_crc@pipe-B-cursor-256x85-onscreen
> +kms_cursor_crc@pipe-B-cursor-256x85-random
> +kms_cursor_crc@pipe-B-cursor-256x85-rapid-movement
> +kms_cursor_crc@pipe-B-cursor-256x85-sliding
> +kms_cursor_crc@pipe-B-cursor-32x10-offscreen
> +kms_cursor_crc@pipe-B-cursor-32x10-onscreen
> +kms_cursor_crc@pipe-B-cursor-32x10-random
> +kms_cursor_crc@pipe-B-cursor-32x10-rapid-movement
> +kms_cursor_crc@pipe-B-cursor-32x10-sliding
> +kms_cursor_crc@pipe-B-cursor-32x32-offscreen
> +kms_cursor_crc@pipe-B-cursor-32x32-onscreen
> +kms_cursor_crc@pipe-B-cursor-32x32-random
> +kms_cursor_crc@pipe-B-cursor-32x32-rapid-movement
> +kms_cursor_crc@pipe-B-cursor-32x32-sliding
> +kms_cursor_crc@pipe-B-cursor-512x170-offscreen
> +kms_cursor_crc@pipe-B-cursor-512x170-onscreen
> +kms_cursor_crc@pipe-B-cursor-512x170-random
> +kms_cursor_crc@pipe-B-cursor-512x170-rapid-movement
> +kms_cursor_crc@pipe-B-cursor-512x170-sliding
> +kms_cursor_crc@pipe-B-cursor-512x512-offscreen
> +kms_cursor_crc@pipe-B-cursor-512x512-onscreen
> +kms_cursor_crc@pipe-B-cursor-512x512-random
> +kms_cursor_crc@pipe-B-cursor-512x512-rapid-movement
> +kms_cursor_crc@pipe-B-cursor-512x512-sliding
> +kms_cursor_crc@pipe-B-cursor-64x21-offscreen
> +kms_cursor_crc@pipe-B-cursor-64x21-onscreen
> +kms_cursor_crc@pipe-B-cursor-64x21-random
> +kms_cursor_crc@pipe-B-cursor-64x21-rapid-movement
> +kms_cursor_crc@pipe-B-cursor-64x64-offscreen
> +kms_cursor_crc@pipe-B-cursor-64x64-onscreen
> +kms_cursor_crc@pipe-B-cursor-64x64-random
> +kms_cursor_crc@pipe-B-cursor-64x64-rapid-movement
> +kms_cursor_crc@pipe-B-cursor-64x64-sliding
> +kms_cursor_crc@pipe-B-cursor-alpha-opaque
> +kms_cursor_crc@pipe-B-cursor-alpha-transparent
> +kms_cursor_crc@pipe-B-cursor-dpms
> +kms_cursor_crc@pipe-B-cursor-max-size-offscreen
> +kms_cursor_crc@pipe-B-cursor-max-size-onscreen
> +kms_cursor_crc@pipe-B-cursor-max-size-random
> +kms_cursor_crc@pipe-B-cursor-max-size-rapid-movement
> +kms_cursor_crc@pipe-B-cursor-max-size-sliding
> +kms_cursor_crc@pipe-B-cursor-size-change
> +kms_cursor_crc@pipe-C-cursor-128x128-offscreen
> +kms_cursor_crc@pipe-C-cursor-128x128-onscreen
> +kms_cursor_crc@pipe-C-cursor-128x128-random
> +kms_cursor_crc@pipe-C-cursor-128x128-rapid-movement
> +kms_cursor_crc@pipe-C-cursor-128x128-sliding
> +kms_cursor_crc@pipe-C-cursor-128x42-offscreen
> +kms_cursor_crc@pipe-C-cursor-128x42-onscreen
> +kms_cursor_crc@pipe-C-cursor-128x42-random
> +kms_cursor_crc@pipe-C-cursor-128x42-rapid-movement
> +kms_cursor_crc@pipe-C-cursor-128x42-sliding
> +kms_cursor_crc@pipe-C-cursor-256x256-offscreen
> +kms_cursor_crc@pipe-C-cursor-256x256-onscreen
> +kms_cursor_crc@pipe-C-cursor-256x256-random
> +kms_cursor_crc@pipe-C-cursor-256x256-rapid-movement
> +kms_cursor_crc@pipe-C-cursor-256x256-sliding
> +kms_cursor_crc@pipe-C-cursor-256x85-offscreen
> +kms_cursor_crc@pipe-C-cursor-256x85-onscreen
> +kms_cursor_crc@pipe-C-cursor-256x85-random
> +kms_cursor_crc@pipe-C-cursor-256x85-rapid-movement
> +kms_cursor_crc@pipe-C-cursor-256x85-sliding
> +kms_cursor_crc@pipe-C-cursor-32x10-offscreen
> +kms_cursor_crc@pipe-C-cursor-32x10-onscreen
> +kms_cursor_crc@pipe-C-cursor-32x10-random
> +kms_cursor_crc@pipe-C-cursor-32x10-rapid-movement
> +kms_cursor_crc@pipe-C-cursor-32x10-sliding
> +kms_cursor_crc@pipe-C-cursor-32x32-offscreen
> +kms_cursor_crc@pipe-C-cursor-32x32-onscreen
> +kms_cursor_crc@pipe-C-cursor-32x32-random
> +kms_cursor_crc@pipe-C-cursor-32x32-rapid-movement
> +kms_cursor_crc@pipe-C-cursor-32x32-sliding
> +kms_cursor_crc@pipe-C-cursor-512x170-offscreen
> +kms_cursor_crc@pipe-C-cursor-512x170-onscreen
> +kms_cursor_crc@pipe-C-cursor-512x170-random
> +kms_cursor_crc@pipe-C-cursor-512x170-rapid-movement
> +kms_cursor_crc@pipe-C-cursor-512x170-sliding
> +kms_cursor_crc@pipe-C-cursor-512x512-offscreen
> +kms_cursor_crc@pipe-C-cursor-512x512-onscreen
> +kms_cursor_crc@pipe-C-cursor-512x512-random
> +kms_cursor_crc@pipe-C-cursor-512x512-rapid-movement
> +kms_cursor_crc@pipe-C-cursor-512x512-sliding
> +kms_cursor_crc@pipe-C-cursor-64x21-offscreen
> +kms_cursor_crc@pipe-C-cursor-64x21-onscreen
> +kms_cursor_crc@pipe-C-cursor-64x21-random
> +kms_cursor_crc@pipe-C-cursor-64x21-rapid-movement
> +kms_cursor_crc@pipe-C-cursor-64x21-sliding
> +kms_cursor_crc@pipe-C-cursor-64x64-offscreen
> +kms_cursor_crc@pipe-C-cursor-64x64-onscreen
> +kms_cursor_crc@pipe-C-cursor-64x64-rapid-movement
> +kms_cursor_crc@pipe-C-cursor-64x64-sliding
> +kms_cursor_crc@pipe-C-cursor-alpha-opaque
> +kms_cursor_crc@pipe-C-cursor-alpha-transparent
> +kms_cursor_crc@pipe-C-cursor-dpms
> +kms_cursor_crc@pipe-C-cursor-max-size-offscreen
> +kms_cursor_crc@pipe-C-cursor-max-size-onscreen
> +kms_cursor_crc@pipe-C-cursor-max-size-random
> +kms_cursor_crc@pipe-C-cursor-max-size-rapid-movement
> +kms_cursor_crc@pipe-C-cursor-max-size-sliding
> +kms_cursor_crc@pipe-C-cursor-size-change
> +kms_cursor_crc@pipe-D-cursor-128x128-offscreen
> +kms_cursor_crc@pipe-D-cursor-128x128-onscreen
> +kms_cursor_crc@pipe-D-cursor-128x128-random
> +kms_cursor_crc@pipe-D-cursor-128x128-rapid-movement
> +kms_cursor_crc@pipe-D-cursor-128x128-sliding
> +kms_cursor_crc@pipe-D-cursor-128x42-offscreen
> +kms_cursor_crc@pipe-D-cursor-128x42-onscreen
> +kms_cursor_crc@pipe-D-cursor-128x42-random
> +kms_cursor_crc@pipe-D-cursor-128x42-rapid-movement
> +kms_cursor_crc@pipe-D-cursor-128x42-sliding
> +kms_cursor_crc@pipe-D-cursor-256x256-offscreen
> +kms_cursor_crc@pipe-D-cursor-256x256-onscreen
> +kms_cursor_crc@pipe-D-cursor-256x256-random
> +kms_cursor_crc@pipe-D-cursor-256x256-rapid-movement
> +kms_cursor_crc@pipe-D-cursor-256x256-sliding
> +kms_cursor_crc@pipe-D-cursor-256x85-offscreen
> +kms_cursor_crc@pipe-D-cursor-256x85-onscreen
> +kms_cursor_crc@pipe-D-cursor-256x85-random
> +kms_cursor_crc@pipe-D-cursor-256x85-rapid-movement
> +kms_cursor_crc@pipe-D-cursor-256x85-sliding
> +kms_cursor_crc@pipe-D-cursor-32x10-offscreen
> +kms_cursor_crc@pipe-D-cursor-32x10-onscreen
> +kms_cursor_crc@pipe-D-cursor-32x10-random
> +kms_cursor_crc@pipe-D-cursor-32x10-rapid-movement
> +kms_cursor_crc@pipe-D-cursor-32x10-sliding
> +kms_cursor_crc@pipe-D-cursor-32x32-offscreen
> +kms_cursor_crc@pipe-D-cursor-32x32-onscreen
> +kms_cursor_crc@pipe-D-cursor-32x32-random
> +kms_cursor_crc@pipe-D-cursor-32x32-rapid-movement
> +kms_cursor_crc@pipe-D-cursor-32x32-sliding
> +kms_cursor_crc@pipe-D-cursor-512x170-offscreen
> +kms_cursor_crc@pipe-D-cursor-512x170-onscreen
> +kms_cursor_crc@pipe-D-cursor-512x170-random
> +kms_cursor_crc@pipe-D-cursor-512x170-rapid-movement
> +kms_cursor_crc@pipe-D-cursor-512x170-sliding
> +kms_cursor_crc@pipe-D-cursor-512x512-offscreen
> +kms_cursor_crc@pipe-D-cursor-512x512-onscreen
> +kms_cursor_crc@pipe-D-cursor-512x512-random
> +kms_cursor_crc@pipe-D-cursor-512x512-rapid-movement
> +kms_cursor_crc@pipe-D-cursor-512x512-sliding
> +kms_cursor_crc@pipe-D-cursor-64x21-offscreen
> +kms_cursor_crc@pipe-D-cursor-64x21-onscreen
> +kms_cursor_crc@pipe-D-cursor-64x21-random
> +kms_cursor_crc@pipe-D-cursor-64x21-rapid-movement
> +kms_cursor_crc@pipe-D-cursor-64x21-sliding
> +kms_cursor_crc@pipe-D-cursor-64x64-offscreen
> +kms_cursor_crc@pipe-D-cursor-64x64-onscreen
> +kms_cursor_crc@pipe-D-cursor-64x64-random
> +kms_cursor_crc@pipe-D-cursor-64x64-rapid-movement
> +kms_cursor_crc@pipe-D-cursor-64x64-sliding
> +kms_cursor_crc@pipe-D-cursor-alpha-opaque
> +kms_cursor_crc@pipe-D-cursor-alpha-transparent
> +kms_cursor_crc@pipe-D-cursor-dpms
> +kms_cursor_crc@pipe-D-cursor-max-size-offscreen
> +kms_cursor_crc@pipe-D-cursor-max-size-onscreen
> +kms_cursor_crc@pipe-D-cursor-max-size-random
> +kms_cursor_crc@pipe-D-cursor-max-size-rapid-movement
> +kms_cursor_crc@pipe-D-cursor-max-size-sliding
> +kms_cursor_crc@pipe-D-cursor-size-change
> +kms_cursor_crc@pipe-D-cursor-suspend
> +kms_cursor_crc@pipe-E-cursor-128x128-offscreen
> +kms_cursor_crc@pipe-E-cursor-128x128-onscreen
> +kms_cursor_crc@pipe-E-cursor-128x128-random
> +kms_cursor_crc@pipe-E-cursor-128x128-rapid-movement
> +kms_cursor_crc@pipe-E-cursor-128x128-sliding
> +kms_cursor_crc@pipe-E-cursor-128x42-offscreen
> +kms_cursor_crc@pipe-E-cursor-128x42-onscreen
> +kms_cursor_crc@pipe-E-cursor-128x42-random
> +kms_cursor_crc@pipe-E-cursor-128x42-rapid-movement
> +kms_cursor_crc@pipe-E-cursor-128x42-sliding
> +kms_cursor_crc@pipe-E-cursor-256x256-offscreen
> +kms_cursor_crc@pipe-E-cursor-256x256-onscreen
> +kms_cursor_crc@pipe-E-cursor-256x256-random
> +kms_cursor_crc@pipe-E-cursor-256x256-rapid-movement
> +kms_cursor_crc@pipe-E-cursor-256x256-sliding
> +kms_cursor_crc@pipe-E-cursor-256x85-offscreen
> +kms_cursor_crc@pipe-E-cursor-256x85-onscreen
> +kms_cursor_crc@pipe-E-cursor-256x85-random
> +kms_cursor_crc@pipe-E-cursor-256x85-rapid-movement
> +kms_cursor_crc@pipe-E-cursor-256x85-sliding
> +kms_cursor_crc@pipe-E-cursor-32x10-offscreen
> +kms_cursor_crc@pipe-E-cursor-32x10-onscreen
> +kms_cursor_crc@pipe-E-cursor-32x10-random
> +kms_cursor_crc@pipe-E-cursor-32x10-rapid-movement
> +kms_cursor_crc@pipe-E-cursor-32x10-sliding
> +kms_cursor_crc@pipe-E-cursor-32x32-offscreen
> +kms_cursor_crc@pipe-E-cursor-32x32-onscreen
> +kms_cursor_crc@pipe-E-cursor-32x32-random
> +kms_cursor_crc@pipe-E-cursor-32x32-rapid-movement
> +kms_cursor_crc@pipe-E-cursor-32x32-sliding
> +kms_cursor_crc@pipe-E-cursor-512x170-offscreen
> +kms_cursor_crc@pipe-E-cursor-512x170-onscreen
> +kms_cursor_crc@pipe-E-cursor-512x170-random
> +kms_cursor_crc@pipe-E-cursor-512x170-rapid-movement
> +kms_cursor_crc@pipe-E-cursor-512x170-sliding
> +kms_cursor_crc@pipe-E-cursor-512x512-offscreen
> +kms_cursor_crc@pipe-E-cursor-512x512-onscreen
> +kms_cursor_crc@pipe-E-cursor-512x512-random
> +kms_cursor_crc@pipe-E-cursor-512x512-rapid-movement
> +kms_cursor_crc@pipe-E-cursor-512x512-sliding
> +kms_cursor_crc@pipe-E-cursor-64x21-offscreen
> +kms_cursor_crc@pipe-E-cursor-64x21-onscreen
> +kms_cursor_crc@pipe-E-cursor-64x21-random
> +kms_cursor_crc@pipe-E-cursor-64x21-rapid-movement
> +kms_cursor_crc@pipe-E-cursor-64x21-sliding
> +kms_cursor_crc@pipe-E-cursor-64x64-offscreen
> +kms_cursor_crc@pipe-E-cursor-64x64-onscreen
> +kms_cursor_crc@pipe-E-cursor-64x64-random
> +kms_cursor_crc@pipe-E-cursor-64x64-rapid-movement
> +kms_cursor_crc@pipe-E-cursor-64x64-sliding
> +kms_cursor_crc@pipe-E-cursor-alpha-opaque
> +kms_cursor_crc@pipe-E-cursor-alpha-transparent
> +kms_cursor_crc@pipe-E-cursor-dpms
> +kms_cursor_crc@pipe-E-cursor-max-size-offscreen
> +kms_cursor_crc@pipe-E-cursor-max-size-onscreen
> +kms_cursor_crc@pipe-E-cursor-max-size-random
> +kms_cursor_crc@pipe-E-cursor-max-size-rapid-movement
> +kms_cursor_crc@pipe-E-cursor-max-size-sliding
> +kms_cursor_crc@pipe-E-cursor-size-change
> +kms_cursor_crc@pipe-E-cursor-suspend
> +kms_cursor_crc@pipe-F-cursor-128x128-offscreen
> +kms_cursor_crc@pipe-F-cursor-128x128-onscreen
> +kms_cursor_crc@pipe-F-cursor-128x128-random
> +kms_cursor_crc@pipe-F-cursor-128x128-rapid-movement
> +kms_cursor_crc@pipe-F-cursor-128x128-sliding
> +kms_cursor_crc@pipe-F-cursor-128x42-offscreen
> +kms_cursor_crc@pipe-F-cursor-128x42-onscreen
> +kms_cursor_crc@pipe-F-cursor-128x42-random
> +kms_cursor_crc@pipe-F-cursor-128x42-rapid-movement
> +kms_cursor_crc@pipe-F-cursor-128x42-sliding
> +kms_cursor_crc@pipe-F-cursor-256x256-offscreen
> +kms_cursor_crc@pipe-F-cursor-256x256-onscreen
> +kms_cursor_crc@pipe-F-cursor-256x256-random
> +kms_cursor_crc@pipe-F-cursor-256x256-rapid-movement
> +kms_cursor_crc@pipe-F-cursor-256x256-sliding
> +kms_cursor_crc@pipe-F-cursor-256x85-offscreen
> +kms_cursor_crc@pipe-F-cursor-256x85-onscreen
> +kms_cursor_crc@pipe-F-cursor-256x85-random
> +kms_cursor_crc@pipe-F-cursor-256x85-rapid-movement
> +kms_cursor_crc@pipe-F-cursor-256x85-sliding
> +kms_cursor_crc@pipe-F-cursor-32x10-offscreen
> +kms_cursor_crc@pipe-F-cursor-32x10-onscreen
> +kms_cursor_crc@pipe-F-cursor-32x10-random
> +kms_cursor_crc@pipe-F-cursor-32x10-rapid-movement
> +kms_cursor_crc@pipe-F-cursor-32x10-sliding
> +kms_cursor_crc@pipe-F-cursor-32x32-offscreen
> +kms_cursor_crc@pipe-F-cursor-32x32-onscreen
> +kms_cursor_crc@pipe-F-cursor-32x32-random
> +kms_cursor_crc@pipe-F-cursor-32x32-rapid-movement
> +kms_cursor_crc@pipe-F-cursor-32x32-sliding
> +kms_cursor_crc@pipe-F-cursor-512x170-offscreen
> +kms_cursor_crc@pipe-F-cursor-512x170-onscreen
> +kms_cursor_crc@pipe-F-cursor-512x170-random
> +kms_cursor_crc@pipe-F-cursor-512x170-rapid-movement
> +kms_cursor_crc@pipe-F-cursor-512x170-sliding
> +kms_cursor_crc@pipe-F-cursor-512x512-offscreen
> +kms_cursor_crc@pipe-F-cursor-512x512-onscreen
> +kms_cursor_crc@pipe-F-cursor-512x512-random
> +kms_cursor_crc@pipe-F-cursor-512x512-rapid-movement
> +kms_cursor_crc@pipe-F-cursor-512x512-sliding
> +kms_cursor_crc@pipe-F-cursor-64x21-offscreen
> +kms_cursor_crc@pipe-F-cursor-64x21-onscreen
> +kms_cursor_crc@pipe-F-cursor-64x21-random
> +kms_cursor_crc@pipe-F-cursor-64x21-rapid-movement
> +kms_cursor_crc@pipe-F-cursor-64x21-sliding
> +kms_cursor_crc@pipe-F-cursor-64x64-offscreen
> +kms_cursor_crc@pipe-F-cursor-64x64-onscreen
> +kms_cursor_crc@pipe-F-cursor-64x64-random
> +kms_cursor_crc@pipe-F-cursor-64x64-rapid-movement
> +kms_cursor_crc@pipe-F-cursor-64x64-sliding
> +kms_cursor_crc@pipe-F-cursor-alpha-opaque
> +kms_cursor_crc@pipe-F-cursor-alpha-transparent
> +kms_cursor_crc@pipe-F-cursor-dpms
> +kms_cursor_crc@pipe-F-cursor-max-size-offscreen
> +kms_cursor_crc@pipe-F-cursor-max-size-onscreen
> +kms_cursor_crc@pipe-F-cursor-max-size-random
> +kms_cursor_crc@pipe-F-cursor-max-size-rapid-movement
> +kms_cursor_crc@pipe-F-cursor-max-size-sliding
> +kms_cursor_crc@pipe-F-cursor-size-change
> +kms_cursor_crc@pipe-F-cursor-suspend
> +kms_cursor_legacy@2x-cursor-vs-flip-atomic
> +kms_cursor_legacy@2x-cursor-vs-flip-legacy
> +kms_cursor_legacy@2x-flip-vs-cursor-atomic
> +kms_cursor_legacy@2x-flip-vs-cursor-legacy
> +kms_cursor_legacy@2x-long-cursor-vs-flip-atomic
> +kms_cursor_legacy@2x-long-cursor-vs-flip-legacy
> +kms_cursor_legacy@2x-long-flip-vs-cursor-atomic
> +kms_cursor_legacy@2x-long-flip-vs-cursor-legacy
> +kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic
> +kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic
> +kms_cursor_legacy@basic-busy-flip-before-cursor-atomic
> +kms_cursor_legacy@basic-busy-flip-before-cursor-legacy
> +kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size
> +kms_cursor_legacy@basic-flip-after-cursor-atomic
> +kms_cursor_legacy@basic-flip-after-cursor-legacy
> +kms_cursor_legacy@basic-flip-after-cursor-varying-size
> +kms_cursor_legacy@basic-flip-before-cursor-atomic
> +kms_cursor_legacy@basic-flip-before-cursor-legacy
> +kms_cursor_legacy@basic-flip-before-cursor-varying-size
> +kms_cursor_legacy@cursorA-vs-flipB-atomic
> +kms_cursor_legacy@cursorA-vs-flipB-atomic-transitions
> +kms_cursor_legacy@cursorA-vs-flipB-atomic-transitions-varying-size
> +kms_cursor_legacy@cursorA-vs-flipB-legacy
> +kms_cursor_legacy@cursorA-vs-flipB-toggle
> +kms_cursor_legacy@cursorA-vs-flipB-varying-size
> +kms_cursor_legacy@cursorB-vs-flipA-atomic
> +kms_cursor_legacy@cursorB-vs-flipA-atomic-transitions
> +kms_cursor_legacy@cursorB-vs-flipA-atomic-transitions-varying-size
> +kms_cursor_legacy@cursorB-vs-flipA-legacy
> +kms_cursor_legacy@cursorB-vs-flipA-toggle
> +kms_cursor_legacy@cursorB-vs-flipA-varying-size
> +kms_cursor_legacy@cursorB-vs-flipB-atomic
> +kms_cursor_legacy@cursorB-vs-flipB-atomic-transitions
> +kms_cursor_legacy@cursorB-vs-flipB-atomic-transitions-varying-size
> +kms_cursor_legacy@cursorB-vs-flipB-legacy
> +kms_cursor_legacy@cursorB-vs-flipB-toggle
> +kms_cursor_legacy@cursorB-vs-flipB-varying-size
> +kms_cursor_legacy@flip-vs-cursor-busy-crc-atomic
> +kms_cursor_legacy@flip-vs-cursor-busy-crc-legacy
> +kms_cursor_legacy@flip-vs-cursor-crc-atomic
> +kms_cursor_legacy@flip-vs-cursor-crc-legacy
> +kms_cursor_legacy@nonblocking-modeset-vs-cursor-atomic
> +kms_cursor_legacy@pipe-E-forked-bo
> +kms_cursor_legacy@pipe-E-forked-move
> +kms_cursor_legacy@pipe-E-single-bo
> +kms_cursor_legacy@pipe-E-single-move
> +kms_cursor_legacy@pipe-E-torture-bo
> +kms_cursor_legacy@pipe-E-torture-move
> +kms_cursor_legacy@pipe-F-forked-bo
> +kms_cursor_legacy@pipe-F-forked-move
> +kms_cursor_legacy@pipe-F-single-bo
> +kms_cursor_legacy@pipe-F-single-move
> +kms_cursor_legacy@pipe-F-torture-bo
> +kms_cursor_legacy@pipe-F-torture-move
> +kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions
> +kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size
> +kms_cursor_legacy@short-busy-flip-before-cursor-toggle
> +kms_cursor_legacy@short-flip-after-cursor-atomic-transitions
> +kms_cursor_legacy@short-flip-after-cursor-atomic-transitions-varying-size
> +kms_cursor_legacy@short-flip-after-cursor-toggle
> +kms_cursor_legacy@short-flip-before-cursor-atomic-transitions
> +kms_cursor_legacy@short-flip-before-cursor-atomic-transitions-varying-size
> +kms_cursor_legacy@short-flip-before-cursor-toggle
> +kms_dither@FB-8BPC-Vs-Panel-6BPC
> +kms_dither@FB-8BPC-Vs-Panel-8BPC
> +kms_dp_aux_dev
> +kms_dp_tiled_display@basic-test-pattern
> +kms_draw_crc@draw-method-rgb565-blt-4tiled
> +kms_draw_crc@draw-method-rgb565-blt-untiled
> +kms_draw_crc@draw-method-rgb565-blt-xtiled
> +kms_draw_crc@draw-method-rgb565-blt-ytiled
> +kms_draw_crc@draw-method-rgb565-mmap-cpu-4tiled
> +kms_draw_crc@draw-method-rgb565-mmap-cpu-untiled
> +kms_draw_crc@draw-method-rgb565-mmap-cpu-xtiled
> +kms_draw_crc@draw-method-rgb565-mmap-cpu-ytiled
> +kms_draw_crc@draw-method-rgb565-mmap-gtt-4tiled
> +kms_draw_crc@draw-method-rgb565-mmap-gtt-untiled
> +kms_draw_crc@draw-method-rgb565-mmap-gtt-xtiled
> +kms_draw_crc@draw-method-rgb565-mmap-gtt-ytiled
> +kms_draw_crc@draw-method-rgb565-mmap-wc-4tiled
> +kms_draw_crc@draw-method-rgb565-mmap-wc-untiled
> +kms_draw_crc@draw-method-rgb565-mmap-wc-xtiled
> +kms_draw_crc@draw-method-rgb565-mmap-wc-ytiled
> +kms_draw_crc@draw-method-rgb565-pwrite-4tiled
> +kms_draw_crc@draw-method-rgb565-pwrite-untiled
> +kms_draw_crc@draw-method-rgb565-pwrite-xtiled
> +kms_draw_crc@draw-method-rgb565-pwrite-ytiled
> +kms_draw_crc@draw-method-rgb565-render-4tiled
> +kms_draw_crc@draw-method-rgb565-render-untiled
> +kms_draw_crc@draw-method-rgb565-render-xtiled
> +kms_draw_crc@draw-method-rgb565-render-ytiled
> +kms_draw_crc@draw-method-xrgb2101010-blt-4tiled
> +kms_draw_crc@draw-method-xrgb2101010-blt-untiled
> +kms_draw_crc@draw-method-xrgb2101010-blt-xtiled
> +kms_draw_crc@draw-method-xrgb2101010-blt-ytiled
> +kms_draw_crc@draw-method-xrgb2101010-mmap-cpu-4tiled
> +kms_draw_crc@draw-method-xrgb2101010-mmap-cpu-untiled
> +kms_draw_crc@draw-method-xrgb2101010-mmap-cpu-xtiled
> +kms_draw_crc@draw-method-xrgb2101010-mmap-cpu-ytiled
> +kms_draw_crc@draw-method-xrgb2101010-mmap-gtt-4tiled
> +kms_draw_crc@draw-method-xrgb2101010-mmap-gtt-untiled
> +kms_draw_crc@draw-method-xrgb2101010-mmap-gtt-xtiled
> +kms_draw_crc@draw-method-xrgb2101010-mmap-gtt-ytiled
> +kms_draw_crc@draw-method-xrgb2101010-mmap-wc-4tiled
> +kms_draw_crc@draw-method-xrgb2101010-mmap-wc-untiled
> +kms_draw_crc@draw-method-xrgb2101010-mmap-wc-xtiled
> +kms_draw_crc@draw-method-xrgb2101010-mmap-wc-ytiled
> +kms_draw_crc@draw-method-xrgb2101010-pwrite-4tiled
> +kms_draw_crc@draw-method-xrgb2101010-pwrite-untiled
> +kms_draw_crc@draw-method-xrgb2101010-pwrite-xtiled
> +kms_draw_crc@draw-method-xrgb2101010-pwrite-ytiled
> +kms_draw_crc@draw-method-xrgb2101010-render-4tiled
> +kms_draw_crc@draw-method-xrgb2101010-render-untiled
> +kms_draw_crc@draw-method-xrgb2101010-render-xtiled
> +kms_draw_crc@draw-method-xrgb2101010-render-ytiled
> +kms_draw_crc@draw-method-xrgb8888-blt-4tiled
> +kms_draw_crc@draw-method-xrgb8888-blt-untiled
> +kms_draw_crc@draw-method-xrgb8888-blt-xtiled
> +kms_draw_crc@draw-method-xrgb8888-blt-ytiled
> +kms_draw_crc@draw-method-xrgb8888-mmap-cpu-4tiled
> +kms_draw_crc@draw-method-xrgb8888-mmap-cpu-untiled
> +kms_draw_crc@draw-method-xrgb8888-mmap-cpu-xtiled
> +kms_draw_crc@draw-method-xrgb8888-mmap-cpu-ytiled
> +kms_draw_crc@draw-method-xrgb8888-mmap-gtt-4tiled
> +kms_draw_crc@draw-method-xrgb8888-mmap-gtt-untiled
> +kms_draw_crc@draw-method-xrgb8888-mmap-gtt-xtiled
> +kms_draw_crc@draw-method-xrgb8888-mmap-gtt-ytiled
> +kms_draw_crc@draw-method-xrgb8888-mmap-wc-4tiled
> +kms_draw_crc@draw-method-xrgb8888-mmap-wc-untiled
> +kms_draw_crc@draw-method-xrgb8888-mmap-wc-xtiled
> +kms_draw_crc@draw-method-xrgb8888-mmap-wc-ytiled
> +kms_draw_crc@draw-method-xrgb8888-pwrite-4tiled
> +kms_draw_crc@draw-method-xrgb8888-pwrite-untiled
> +kms_draw_crc@draw-method-xrgb8888-pwrite-xtiled
> +kms_draw_crc@draw-method-xrgb8888-pwrite-ytiled
> +kms_draw_crc@draw-method-xrgb8888-render-4tiled
> +kms_draw_crc@draw-method-xrgb8888-render-untiled
> +kms_draw_crc@draw-method-xrgb8888-render-xtiled
> +kms_draw_crc@draw-method-xrgb8888-render-ytiled
> +kms_draw_crc@fill-fb
> +kms_dsc@basic-dsc-enable
> +kms_dsc@XRGB8888-dsc-compression
> +kms_fbcon_fbt@fbc
> +kms_fbcon_fbt@fbc-suspend
> +kms_fbcon_fbt@psr
> +kms_fbcon_fbt@psr-suspend
> +kms_fence_pin_leak
> +kms_flip@2x-absolute-wf_vblank
> +kms_flip@2x-absolute-wf_vblank-interruptible
> +kms_flip@2x-blocking-absolute-wf_vblank
> +kms_flip@2x-blocking-absolute-wf_vblank-interruptible
> +kms_flip@2x-blocking-wf_vblank
> +kms_flip@2x-busy-flip
> +kms_flip@2x-dpms-vs-vblank-race
> +kms_flip@2x-dpms-vs-vblank-race-interruptible
> +kms_flip@2x-flip-vs-absolute-wf_vblank
> +kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible
> +kms_flip@2x-flip-vs-blocking-wf-vblank
> +kms_flip@2x-flip-vs-dpms
> +kms_flip@2x-flip-vs-dpms-off-vs-modeset
> +kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible
> +kms_flip@2x-flip-vs-expired-vblank
> +kms_flip@2x-flip-vs-expired-vblank-interruptible
> +kms_flip@2x-flip-vs-fences
> +kms_flip@2x-flip-vs-fences-interruptible
> +kms_flip@2x-flip-vs-modeset
> +kms_flip@2x-flip-vs-modeset-vs-hang
> +kms_flip@2x-flip-vs-panning
> +kms_flip@2x-flip-vs-panning-interruptible
> +kms_flip@2x-flip-vs-panning-vs-hang
> +kms_flip@2x-flip-vs-rmfb
> +kms_flip@2x-flip-vs-rmfb-interruptible
> +kms_flip@2x-flip-vs-suspend
> +kms_flip@2x-flip-vs-suspend-interruptible
> +kms_flip@2x-flip-vs-wf_vblank
> +kms_flip@2x-flip-vs-wf_vblank-interruptible
> +kms_flip@2x-modeset-vs-vblank-race
> +kms_flip@2x-modeset-vs-vblank-race-interruptible
> +kms_flip@2x-nonexisting-fb
> +kms_flip@2x-nonexisting-fb-interruptible
> +kms_flip@2x-plain-flip
> +kms_flip@2x-plain-flip-fb-recreate
> +kms_flip@2x-plain-flip-fb-recreate-interruptible
> +kms_flip@2x-plain-flip-interruptible
> +kms_flip@2x-plain-flip-ts-check
> +kms_flip@2x-plain-flip-ts-check-interruptible
> +kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset
> +kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset-interruptible
> +kms_flip@2x-wf_vblank-ts-check
> +kms_flip@2x-wf_vblank-ts-check-interruptible
> +kms_flip@basic-plain-flip
> +kms_flip@busy-flip
> +kms_flip_event_leak
> +kms_flip@nonblocking-read
> +kms_flip@nonexisting-fb
> +kms_flip@nonexisting-fb-interruptible
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
> +kms_force_connector_basic@force-connector-state
> +kms_force_connector_basic@force-edid
> +kms_force_connector_basic@force-load-detect
> +kms_force_connector_basic@prune-stale-modes
> +kms_frontbuffer_tracking@basic
> +kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-render
> +kms_frontbuffer_tracking@drrs-1p-offscren-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@drrs-1p-offscren-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@drrs-1p-offscren-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@drrs-1p-offscren-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@drrs-1p-offscren-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@drrs-1p-offscren-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@drrs-1p-pri-indfb-multidraw
> +kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-move
> +kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-move
> +kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@drrs-1p-rte
> +kms_frontbuffer_tracking@drrs-2p-pri-indfb-multidraw
> +kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-move
> +kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-move
> +kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@drrs-2p-rte
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-move
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-move
> +kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@drrs-farfromfence-mmap-gtt
> +kms_frontbuffer_tracking@drrs-indfb-scaledprimary
> +kms_frontbuffer_tracking@drrs-modesetfrombusy
> +kms_frontbuffer_tracking@drrs-rgb101010-draw-blt
> +kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-cpu
> +kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-gtt
> +kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-wc
> +kms_frontbuffer_tracking@drrs-rgb101010-draw-pwrite
> +kms_frontbuffer_tracking@drrs-rgb101010-draw-render
> +kms_frontbuffer_tracking@drrs-rgb565-draw-blt
> +kms_frontbuffer_tracking@drrs-rgb565-draw-mmap-cpu
> +kms_frontbuffer_tracking@drrs-rgb565-draw-mmap-gtt
> +kms_frontbuffer_tracking@drrs-rgb565-draw-mmap-wc
> +kms_frontbuffer_tracking@drrs-rgb565-draw-pwrite
> +kms_frontbuffer_tracking@drrs-rgb565-draw-render
> +kms_frontbuffer_tracking@drrs-shrfb-scaledprimary
> +kms_frontbuffer_tracking@drrs-slowdraw
> +kms_frontbuffer_tracking@drrs-suspend
> +kms_frontbuffer_tracking@fbc-1p-indfb-fliptrack-mmap-gtt
> +kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-render
> +kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move
> +kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-move
> +kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@fbc-1p-rte
> +kms_frontbuffer_tracking@fbc-1p-shrfb-fliptrack-mmap-gtt
> +kms_frontbuffer_tracking@fbc-2p-indfb-fliptrack-mmap-gtt
> +kms_frontbuffer_tracking@fbc-2p-pri-indfb-multidraw
> +kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move
> +kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-move
> +kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@fbc-2p-rte
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-move
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-move
> +kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@fbc-2p-shrfb-fliptrack-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-1p-indfb-fliptrack-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-render
> +kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@fbcdrrs-1p-pri-indfb-multidraw
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-move
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-move
> +kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@fbcdrrs-1p-rte
> +kms_frontbuffer_tracking@fbcdrrs-1p-shrfb-fliptrack-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-2p-indfb-fliptrack-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-2p-pri-indfb-multidraw
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-move
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-move
> +kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@fbcdrrs-2p-rte
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-move
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-move
> +kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@fbcdrrs-2p-shrfb-fliptrack-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-badstride
> +kms_frontbuffer_tracking@fbcdrrs-farfromfence-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-indfb-scaledprimary
> +kms_frontbuffer_tracking@fbcdrrs-modesetfrombusy
> +kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-blt
> +kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-pwrite
> +kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-render
> +kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-blt
> +kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-pwrite
> +kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-render
> +kms_frontbuffer_tracking@fbcdrrs-shrfb-scaledprimary
> +kms_frontbuffer_tracking@fbcdrrs-slowdraw
> +kms_frontbuffer_tracking@fbcdrrs-stridechange
> +kms_frontbuffer_tracking@fbcdrrs-suspend
> +kms_frontbuffer_tracking@fbcdrrs-tiling-4
> +kms_frontbuffer_tracking@fbcdrrs-tiling-linear
> +kms_frontbuffer_tracking@fbcdrrs-tiling-y
> +kms_frontbuffer_tracking@fbc-farfromfence-mmap-gtt
> +kms_frontbuffer_tracking@fbc-indfb-scaledprimary
> +kms_frontbuffer_tracking@fbc-modesetfrombusy
> +kms_frontbuffer_tracking@fbcpsr-1p-indfb-fliptrack-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-move
> +kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@fbcpsr-1p-rte
> +kms_frontbuffer_tracking@fbcpsr-1p-shrfb-fliptrack-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-2p-indfb-fliptrack-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-2p-pri-indfb-multidraw
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-move
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-move
> +kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@fbcpsr-2p-rte
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-move
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-move
> +kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@fbcpsr-2p-shrfb-fliptrack-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-indfb-fliptrack-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-pri-indfb-multidraw
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-move
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-move
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-rte
> +kms_frontbuffer_tracking@fbcpsrdrrs-1p-shrfb-fliptrack-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-indfb-fliptrack-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-pri-indfb-multidraw
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-move
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-move
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-rte
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-move
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-move
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@fbcpsrdrrs-2p-shrfb-fliptrack-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-badstride
> +kms_frontbuffer_tracking@fbcpsrdrrs-farfromfence-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-indfb-scaledprimary
> +kms_frontbuffer_tracking@fbcpsrdrrs-modesetfrombusy
> +kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-render
> +kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-blt
> +kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-render
> +kms_frontbuffer_tracking@fbcpsrdrrs-shrfb-scaledprimary
> +kms_frontbuffer_tracking@fbcpsrdrrs-slowdraw
> +kms_frontbuffer_tracking@fbcpsrdrrs-stridechange
> +kms_frontbuffer_tracking@fbcpsrdrrs-suspend
> +kms_frontbuffer_tracking@fbcpsrdrrs-tiling-4
> +kms_frontbuffer_tracking@fbcpsrdrrs-tiling-linear
> +kms_frontbuffer_tracking@fbcpsrdrrs-tiling-y
> +kms_frontbuffer_tracking@fbcpsr-farfromfence-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary
> +kms_frontbuffer_tracking@fbcpsr-modesetfrombusy
> +kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt
> +kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-render
> +kms_frontbuffer_tracking@fbcpsr-rgb565-draw-blt
> +kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-wc
> +kms_frontbuffer_tracking@fbcpsr-rgb565-draw-pwrite
> +kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render
> +kms_frontbuffer_tracking@fbcpsr-shrfb-scaledprimary
> +kms_frontbuffer_tracking@fbcpsr-stridechange
> +kms_frontbuffer_tracking@fbcpsr-tiling-4
> +kms_frontbuffer_tracking@fbcpsr-tiling-linear
> +kms_frontbuffer_tracking@fbcpsr-tiling-y
> +kms_frontbuffer_tracking@fbc-rgb101010-draw-blt
> +kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-wc
> +kms_frontbuffer_tracking@fbc-rgb101010-draw-pwrite
> +kms_frontbuffer_tracking@fbc-rgb101010-draw-render
> +kms_frontbuffer_tracking@fbc-rgb565-draw-blt
> +kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-cpu
> +kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-gtt
> +kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-wc
> +kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite
> +kms_frontbuffer_tracking@fbc-rgb565-draw-render
> +kms_frontbuffer_tracking@fbc-shrfb-scaledprimary
> +kms_frontbuffer_tracking@fbc-stridechange
> +kms_frontbuffer_tracking@fbc-tiling-4
> +kms_frontbuffer_tracking@fbc-tiling-linear
> +kms_frontbuffer_tracking@fbc-tiling-y
> +kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-render
> +kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move
> +kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@psr-1p-primscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@psr-1p-primscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-move
> +kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@psr-1p-rte
> +kms_frontbuffer_tracking@psr-2p-pri-indfb-multidraw
> +kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-move
> +kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@psr-2p-primscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@psr-2p-primscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@psr-2p-primscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-move
> +kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@psr-2p-rte
> +kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-move
> +kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-move
> +kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-indfb-draw-render
> +kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@psrdrrs-1p-pri-indfb-multidraw
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-move
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-move
> +kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@psrdrrs-1p-rte
> +kms_frontbuffer_tracking@psrdrrs-2p-pri-indfb-multidraw
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-move
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-move
> +kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@psrdrrs-2p-rte
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-draw-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-draw-render
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-move
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-onoff
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-indfb-msflip-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-indfb-pgflip-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-indfb-plflip-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-indfb-draw-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-indfb-draw-render
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-shrfb-draw-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-shrfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-shrfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-shrfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-shrfb-draw-pwrite
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-shrfb-draw-render
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-shrfb-msflip-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-shrfb-pgflip-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-shrfb-plflip-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-draw-blt
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-draw-mmap-cpu
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-draw-mmap-gtt
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-draw-mmap-wc
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-draw-pwrite
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-draw-render
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-fullscreen
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-move
> +kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-onoff
> +kms_frontbuffer_tracking@psrdrrs-farfromfence-mmap-gtt
> +kms_frontbuffer_tracking@psrdrrs-indfb-scaledprimary
> +kms_frontbuffer_tracking@psrdrrs-modesetfrombusy
> +kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-blt
> +kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-mmap-cpu
> +kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-mmap-gtt
> +kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-mmap-wc
> +kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-pwrite
> +kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-render
> +kms_frontbuffer_tracking@psrdrrs-rgb565-draw-blt
> +kms_frontbuffer_tracking@psrdrrs-rgb565-draw-mmap-cpu
> +kms_frontbuffer_tracking@psrdrrs-rgb565-draw-mmap-gtt
> +kms_frontbuffer_tracking@psrdrrs-rgb565-draw-mmap-wc
> +kms_frontbuffer_tracking@psrdrrs-rgb565-draw-pwrite
> +kms_frontbuffer_tracking@psrdrrs-rgb565-draw-render
> +kms_frontbuffer_tracking@psrdrrs-shrfb-scaledprimary
> +kms_frontbuffer_tracking@psrdrrs-slowdraw
> +kms_frontbuffer_tracking@psrdrrs-suspend
> +kms_frontbuffer_tracking@psr-farfromfence-mmap-gtt
> +kms_frontbuffer_tracking@psr-indfb-scaledprimary
> +kms_frontbuffer_tracking@psr-modesetfrombusy
> +kms_frontbuffer_tracking@psr-rgb101010-draw-blt
> +kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-cpu
> +kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-gtt
> +kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-wc
> +kms_frontbuffer_tracking@psr-rgb101010-draw-pwrite
> +kms_frontbuffer_tracking@psr-rgb101010-draw-render
> +kms_frontbuffer_tracking@psr-rgb565-draw-blt
> +kms_frontbuffer_tracking@psr-rgb565-draw-mmap-cpu
> +kms_frontbuffer_tracking@psr-rgb565-draw-mmap-gtt
> +kms_frontbuffer_tracking@psr-rgb565-draw-mmap-wc
> +kms_frontbuffer_tracking@psr-rgb565-draw-pwrite
> +kms_frontbuffer_tracking@psr-rgb565-draw-render
> +kms_frontbuffer_tracking@psr-shrfb-scaledprimary
> +kms_frontbuffer_tracking@psr-suspend
> +kms_getfb@getfb2-accept-ccs
> +kms_getfb@getfb2-handle-closed
> +kms_getfb@getfb2-handle-not-fb
> +kms_getfb@getfb2-handle-protection
> +kms_getfb@getfb2-handle-zero
> +kms_getfb@getfb2-into-addfb2
> +kms_getfb@getfb-addfb-different-handles
> +kms_getfb@getfb-handle-closed
> +kms_getfb@getfb-handle-not-fb
> +kms_getfb@getfb-handle-protection
> +kms_getfb@getfb-handle-valid
> +kms_getfb@getfb-handle-zero
> +kms_getfb@getfb-reject-ccs
> +kms_getfb@getfb-repeated-different-handles
> +kms_hdmi_inject@inject-audio
> +kms_hdr@bpc-switch
> +kms_hdr@bpc-switch-dpms
> +kms_hdr@bpc-switch-suspend
> +kms_hdr@static-swap
> +kms_hdr@static-toggle
> +kms_hdr@static-toggle-dpms
> +kms_hdr@static-toggle-suspend
> +kms_invalid_mode@bad-hsync-end
> +kms_invalid_mode@bad-hsync-start
> +kms_invalid_mode@bad-htotal
> +kms_invalid_mode@bad-vsync-end
> +kms_invalid_mode@bad-vsync-start
> +kms_invalid_mode@bad-vtotal
> +kms_invalid_mode@clock-too-high
> +kms_invalid_mode@int-max-clock
> +kms_invalid_mode@uint-max-clock
> +kms_invalid_mode@zero-clock
> +kms_invalid_mode@zero-hdisplay
> +kms_invalid_mode@zero-vdisplay
> +kms_legacy_colorkey
> +kms_multipipe_modeset@basic-max-pipe-crc-check
> +kms_panel_fitting@atomic-fastset
> +kms_panel_fitting@legacy
> +kms_pipe_b_c_ivb@disable-pipe-B-enable-pipe-C
> +kms_pipe_b_c_ivb@enable-pipe-C-while-B-has-3-lanes
> +kms_pipe_b_c_ivb@from-pipe-C-to-B-with-3-lanes
> +kms_pipe_b_c_ivb@pipe-B-double-modeset-then-modeset-pipe-C
> +kms_pipe_b_c_ivb@pipe-B-dpms-off-modeset-pipe-C
> +kms_pipe_crc_basic@bad-source
> +kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-A
> +kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-B
> +kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-C
> +kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-D
> +kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-E
> +kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-F
> +kms_pipe_crc_basic@disable-crc-after-crtc-pipe-A
> +kms_pipe_crc_basic@disable-crc-after-crtc-pipe-B
> +kms_pipe_crc_basic@disable-crc-after-crtc-pipe-C
> +kms_pipe_crc_basic@disable-crc-after-crtc-pipe-D
> +kms_pipe_crc_basic@disable-crc-after-crtc-pipe-E
> +kms_pipe_crc_basic@disable-crc-after-crtc-pipe-F
> +kms_pipe_crc_basic@hang-read-crc-pipe-A
> +kms_pipe_crc_basic@hang-read-crc-pipe-B
> +kms_pipe_crc_basic@hang-read-crc-pipe-C
> +kms_pipe_crc_basic@hang-read-crc-pipe-D
> +kms_pipe_crc_basic@hang-read-crc-pipe-E
> +kms_pipe_crc_basic@hang-read-crc-pipe-F
> +kms_pipe_crc_basic@nonblocking-crc-pipe-A
> +kms_pipe_crc_basic@nonblocking-crc-pipe-A-frame-sequence
> +kms_pipe_crc_basic@nonblocking-crc-pipe-B
> +kms_pipe_crc_basic@nonblocking-crc-pipe-B-frame-sequence
> +kms_pipe_crc_basic@nonblocking-crc-pipe-C
> +kms_pipe_crc_basic@nonblocking-crc-pipe-C-frame-sequence
> +kms_pipe_crc_basic@nonblocking-crc-pipe-D
> +kms_pipe_crc_basic@nonblocking-crc-pipe-D-frame-sequence
> +kms_pipe_crc_basic@nonblocking-crc-pipe-E
> +kms_pipe_crc_basic@nonblocking-crc-pipe-E-frame-sequence
> +kms_pipe_crc_basic@nonblocking-crc-pipe-F
> +kms_pipe_crc_basic@nonblocking-crc-pipe-F-frame-sequence
> +kms_pipe_crc_basic@read-crc-pipe-A
> +kms_pipe_crc_basic@read-crc-pipe-A-frame-sequence
> +kms_pipe_crc_basic@read-crc-pipe-B
> +kms_pipe_crc_basic@read-crc-pipe-B-frame-sequence
> +kms_pipe_crc_basic@read-crc-pipe-C
> +kms_pipe_crc_basic@read-crc-pipe-C-frame-sequence
> +kms_pipe_crc_basic@read-crc-pipe-D
> +kms_pipe_crc_basic@read-crc-pipe-D-frame-sequence
> +kms_pipe_crc_basic@read-crc-pipe-E
> +kms_pipe_crc_basic@read-crc-pipe-E-frame-sequence
> +kms_pipe_crc_basic@read-crc-pipe-F
> +kms_pipe_crc_basic@read-crc-pipe-F-frame-sequence
> +kms_pipe_crc_basic@suspend-read-crc-pipe-A
> +kms_pipe_crc_basic@suspend-read-crc-pipe-B
> +kms_pipe_crc_basic@suspend-read-crc-pipe-C
> +kms_pipe_crc_basic@suspend-read-crc-pipe-D
> +kms_pipe_crc_basic@suspend-read-crc-pipe-E
> +kms_pipe_crc_basic@suspend-read-crc-pipe-F
> +kms_plane_alpha_blend@pipe-A-alpha-7efc
> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-A-constant-alpha-max
> +kms_plane_alpha_blend@pipe-A-constant-alpha-mid
> +kms_plane_alpha_blend@pipe-A-constant-alpha-min
> +kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant
> +kms_plane_alpha_blend@pipe-B-alpha-7efc
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max
> +kms_plane_alpha_blend@pipe-B-constant-alpha-mid
> +kms_plane_alpha_blend@pipe-B-constant-alpha-min
> +kms_plane_alpha_blend@pipe-B-coverage-vs-premult-vs-constant
> +kms_plane_alpha_blend@pipe-C-alpha-7efc
> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-C-constant-alpha-max
> +kms_plane_alpha_blend@pipe-C-constant-alpha-mid
> +kms_plane_alpha_blend@pipe-C-constant-alpha-min
> +kms_plane_alpha_blend@pipe-C-coverage-vs-premult-vs-constant
> +kms_plane_alpha_blend@pipe-D-alpha-7efc
> +kms_plane_alpha_blend@pipe-D-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-D-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-D-constant-alpha-max
> +kms_plane_alpha_blend@pipe-D-constant-alpha-mid
> +kms_plane_alpha_blend@pipe-D-constant-alpha-min
> +kms_plane_alpha_blend@pipe-D-coverage-vs-premult-vs-constant
> +kms_plane_alpha_blend@pipe-E-alpha-7efc
> +kms_plane_alpha_blend@pipe-E-alpha-basic
> +kms_plane_alpha_blend@pipe-E-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-E-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-E-constant-alpha-max
> +kms_plane_alpha_blend@pipe-E-constant-alpha-mid
> +kms_plane_alpha_blend@pipe-E-constant-alpha-min
> +kms_plane_alpha_blend@pipe-E-coverage-7efc
> +kms_plane_alpha_blend@pipe-E-coverage-vs-premult-vs-constant
> +kms_plane_alpha_blend@pipe-F-alpha-7efc
> +kms_plane_alpha_blend@pipe-F-alpha-basic
> +kms_plane_alpha_blend@pipe-F-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-F-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-F-constant-alpha-max
> +kms_plane_alpha_blend@pipe-F-constant-alpha-mid
> +kms_plane_alpha_blend@pipe-F-constant-alpha-min
> +kms_plane_alpha_blend@pipe-F-coverage-7efc
> +kms_plane_alpha_blend@pipe-F-coverage-vs-premult-vs-constant
> +kms_plane_cursor@pipe-A-overlay-size-128
> +kms_plane_cursor@pipe-A-overlay-size-256
> +kms_plane_cursor@pipe-A-overlay-size-64
> +kms_plane_cursor@pipe-A-primary-size-128
> +kms_plane_cursor@pipe-A-primary-size-256
> +kms_plane_cursor@pipe-A-primary-size-64
> +kms_plane_cursor@pipe-A-viewport-size-128
> +kms_plane_cursor@pipe-A-viewport-size-256
> +kms_plane_cursor@pipe-A-viewport-size-64
> +kms_plane_cursor@pipe-B-overlay-size-128
> +kms_plane_cursor@pipe-B-overlay-size-256
> +kms_plane_cursor@pipe-B-overlay-size-64
> +kms_plane_cursor@pipe-B-primary-size-128
> +kms_plane_cursor@pipe-B-primary-size-256
> +kms_plane_cursor@pipe-B-primary-size-64
> +kms_plane_cursor@pipe-B-viewport-size-128
> +kms_plane_cursor@pipe-B-viewport-size-256
> +kms_plane_cursor@pipe-B-viewport-size-64
> +kms_plane_cursor@pipe-C-overlay-size-128
> +kms_plane_cursor@pipe-C-overlay-size-256
> +kms_plane_cursor@pipe-C-overlay-size-64
> +kms_plane_cursor@pipe-C-primary-size-128
> +kms_plane_cursor@pipe-C-primary-size-256
> +kms_plane_cursor@pipe-C-primary-size-64
> +kms_plane_cursor@pipe-C-viewport-size-128
> +kms_plane_cursor@pipe-C-viewport-size-256
> +kms_plane_cursor@pipe-C-viewport-size-64
> +kms_plane_cursor@pipe-D-overlay-size-128
> +kms_plane_cursor@pipe-D-overlay-size-256
> +kms_plane_cursor@pipe-D-overlay-size-64
> +kms_plane_cursor@pipe-D-primary-size-128
> +kms_plane_cursor@pipe-D-primary-size-256
> +kms_plane_cursor@pipe-D-primary-size-64
> +kms_plane_cursor@pipe-D-viewport-size-128
> +kms_plane_cursor@pipe-D-viewport-size-256
> +kms_plane_cursor@pipe-D-viewport-size-64
> +kms_plane_cursor@pipe-E-overlay-size-128
> +kms_plane_cursor@pipe-E-overlay-size-256
> +kms_plane_cursor@pipe-E-overlay-size-64
> +kms_plane_cursor@pipe-E-primary-size-128
> +kms_plane_cursor@pipe-E-primary-size-256
> +kms_plane_cursor@pipe-E-primary-size-64
> +kms_plane_cursor@pipe-E-viewport-size-128
> +kms_plane_cursor@pipe-E-viewport-size-256
> +kms_plane_cursor@pipe-E-viewport-size-64
> +kms_plane_cursor@pipe-F-overlay-size-128
> +kms_plane_cursor@pipe-F-overlay-size-256
> +kms_plane_cursor@pipe-F-overlay-size-64
> +kms_plane_cursor@pipe-F-primary-size-128
> +kms_plane_cursor@pipe-F-primary-size-256
> +kms_plane_cursor@pipe-F-primary-size-64
> +kms_plane_cursor@pipe-F-viewport-size-128
> +kms_plane_cursor@pipe-F-viewport-size-256
> +kms_plane_cursor@pipe-F-viewport-size-64
> +kms_plane_lowres@pipe-A-tiling-4
> +kms_plane_lowres@pipe-A-tiling-none
> +kms_plane_lowres@pipe-A-tiling-x
> +kms_plane_lowres@pipe-A-tiling-y
> +kms_plane_lowres@pipe-A-tiling-yf
> +kms_plane_lowres@pipe-B-tiling-4
> +kms_plane_lowres@pipe-B-tiling-none
> +kms_plane_lowres@pipe-B-tiling-x
> +kms_plane_lowres@pipe-B-tiling-y
> +kms_plane_lowres@pipe-B-tiling-yf
> +kms_plane_lowres@pipe-C-tiling-4
> +kms_plane_lowres@pipe-C-tiling-none
> +kms_plane_lowres@pipe-C-tiling-x
> +kms_plane_lowres@pipe-C-tiling-y
> +kms_plane_lowres@pipe-C-tiling-yf
> +kms_plane_lowres@pipe-D-tiling-4
> +kms_plane_lowres@pipe-D-tiling-none
> +kms_plane_lowres@pipe-D-tiling-x
> +kms_plane_lowres@pipe-D-tiling-y
> +kms_plane_lowres@pipe-D-tiling-yf
> +kms_plane_lowres@pipe-E-tiling-4
> +kms_plane_lowres@pipe-E-tiling-none
> +kms_plane_lowres@pipe-E-tiling-x
> +kms_plane_lowres@pipe-E-tiling-y
> +kms_plane_lowres@pipe-E-tiling-yf
> +kms_plane_lowres@pipe-F-tiling-4
> +kms_plane_lowres@pipe-F-tiling-none
> +kms_plane_lowres@pipe-F-tiling-x
> +kms_plane_lowres@pipe-F-tiling-y
> +kms_plane_lowres@pipe-F-tiling-yf
> +kms_plane_multiple@atomic-pipe-A-tiling-4
> +kms_plane_multiple@atomic-pipe-A-tiling-none
> +kms_plane_multiple@atomic-pipe-A-tiling-x
> +kms_plane_multiple@atomic-pipe-A-tiling-y
> +kms_plane_multiple@atomic-pipe-A-tiling-yf
> +kms_plane_multiple@atomic-pipe-B-tiling-4
> +kms_plane_multiple@atomic-pipe-B-tiling-none
> +kms_plane_multiple@atomic-pipe-B-tiling-x
> +kms_plane_multiple@atomic-pipe-B-tiling-y
> +kms_plane_multiple@atomic-pipe-B-tiling-yf
> +kms_plane_multiple@atomic-pipe-C-tiling-4
> +kms_plane_multiple@atomic-pipe-C-tiling-none
> +kms_plane_multiple@atomic-pipe-C-tiling-x
> +kms_plane_multiple@atomic-pipe-C-tiling-y
> +kms_plane_multiple@atomic-pipe-C-tiling-yf
> +kms_plane_multiple@atomic-pipe-D-tiling-4
> +kms_plane_multiple@atomic-pipe-D-tiling-none
> +kms_plane_multiple@atomic-pipe-D-tiling-x
> +kms_plane_multiple@atomic-pipe-D-tiling-y
> +kms_plane_multiple@atomic-pipe-D-tiling-yf
> +kms_plane_multiple@atomic-pipe-E-tiling-4
> +kms_plane_multiple@atomic-pipe-E-tiling-none
> +kms_plane_multiple@atomic-pipe-E-tiling-x
> +kms_plane_multiple@atomic-pipe-E-tiling-y
> +kms_plane_multiple@atomic-pipe-E-tiling-yf
> +kms_plane_multiple@atomic-pipe-F-tiling-4
> +kms_plane_multiple@atomic-pipe-F-tiling-none
> +kms_plane_multiple@atomic-pipe-F-tiling-x
> +kms_plane_multiple@atomic-pipe-F-tiling-y
> +kms_plane_multiple@atomic-pipe-F-tiling-yf
> +kms_plane@plane-panning-bottom-right
> +kms_plane@plane-panning-top-left
> +kms_plane_scaling@2x-scaler-multi-pipe
> +kms_plane_scaling@downscale-with-modifier-factor-0-25
> +kms_plane_scaling@downscale-with-rotation-factor-0-25
> +kms_plane_scaling@invalid-num-scalers
> +kms_plane_scaling@planes-downscale-factor-0-25
> +kms_plane_scaling@planes-downscale-factor-0-5
> +kms_plane_scaling@planes-downscale-factor-0-75
> +kms_plane_scaling@planes-scaling-unity-scaling
> +kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25
> +kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5
> +kms_plane_scaling@planes-unity-scaling-downscale-factor-0-75
> +kms_plane_scaling@planes-upscale-20x20
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75
> +kms_plane_scaling@planes-upscale-factor-0-25
> +kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25
> +kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5
> +kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75
> +kms_plane_scaling@upscale-with-modifier-20x20
> +kms_plane_scaling@upscale-with-modifier-factor-0-25
> +kms_plane_scaling@upscale-with-pixel-format-20x20
> +kms_plane_scaling@upscale-with-pixel-format-factor-0-25
> +kms_plane_scaling@upscale-with-rotation-20x20
> +kms_prime@basic-crc
> +kms_prop_blob@basic
> +kms_prop_blob@blob-multiple
> +kms_prop_blob@blob-prop-core
> +kms_prop_blob@blob-prop-lifetime
> +kms_prop_blob@blob-prop-validate
> +kms_prop_blob@invalid-get-prop
> +kms_prop_blob@invalid-get-prop-any
> +kms_prop_blob@invalid-set-prop
> +kms_prop_blob@invalid-set-prop-any
> +kms_properties@connector-properties-atomic
> +kms_properties@crtc-properties-atomic
> +kms_properties@crtc-properties-legacy
> +kms_properties@get_properties-sanity-atomic
> +kms_properties@get_properties-sanity-non-atomic
> +kms_properties@invalid-properties-atomic
> +kms_properties@invalid-properties-legacy
> +kms_properties@plane-properties-atomic
> +kms_properties@plane-properties-legacy
> +kms_psr2_sf@cursor-plane-move-continuous-sf
> +kms_psr2_sf@cursor-plane-update-sf
> +kms_psr2_sf@overlay-plane-move-continuous-sf
> +kms_psr2_sf@overlay-plane-update-continuous-sf
> +kms_psr2_sf@overlay-plane-update-sf-dmg-area
> +kms_psr2_sf@overlay-primary-update-sf-dmg-area
> +kms_psr2_sf@plane-move-sf-dmg-area
> +kms_psr2_sf@primary-plane-update-sf-dmg-area
> +kms_psr2_su@frontbuffer-XRGB8888
> +kms_psr2_su@page_flip-NV12
> +kms_psr2_su@page_flip-P010
> +kms_psr2_su@page_flip-XRGB8888
> +kms_psr@basic
> +kms_psr@cursor_blt
> +kms_psr@cursor_mmap_cpu
> +kms_psr@cursor_mmap_gtt
> +kms_psr@cursor_plane_move
> +kms_psr@cursor_plane_onoff
> +kms_psr@cursor_render
> +kms_psr@dpms
> +kms_psr@no_drrs
> +kms_psr@primary_blt
> +kms_psr@primary_mmap_cpu
> +kms_psr@primary_mmap_gtt
> +kms_psr@primary_page_flip
> +kms_psr@primary_render
> +kms_psr@psr2_basic
> +kms_psr@psr2_cursor_blt
> +kms_psr@psr2_cursor_mmap_cpu
> +kms_psr@psr2_cursor_mmap_gtt
> +kms_psr@psr2_cursor_plane_move
> +kms_psr@psr2_cursor_plane_onoff
> +kms_psr@psr2_cursor_render
> +kms_psr@psr2_dpms
> +kms_psr@psr2_no_drrs
> +kms_psr@psr2_primary_blt
> +kms_psr@psr2_primary_mmap_cpu
> +kms_psr@psr2_primary_mmap_gtt
> +kms_psr@psr2_primary_page_flip
> +kms_psr@psr2_primary_render
> +kms_psr@psr2_sprite_blt
> +kms_psr@psr2_sprite_mmap_cpu
> +kms_psr@psr2_sprite_mmap_gtt
> +kms_psr@psr2_sprite_plane_move
> +kms_psr@psr2_sprite_plane_onoff
> +kms_psr@psr2_sprite_render
> +kms_psr@psr2_suspend
> +kms_psr@sprite_blt
> +kms_psr@sprite_mmap_cpu
> +kms_psr@sprite_mmap_gtt
> +kms_psr@sprite_plane_move
> +kms_psr@sprite_plane_onoff
> +kms_psr@sprite_render
> +kms_psr@suspend
> +kms_pwrite_crc
> +kms_rmfb@close-fd
> +kms_rmfb@rmfb-ioctl
> +kms_rotation_crc@bad-pixel-format
> +kms_rotation_crc@bad-tiling
> +kms_rotation_crc@cursor-rotation-180
> +kms_rotation_crc@exhaust-fences
> +kms_rotation_crc@primary-4-tiled-reflect-x-0
> +kms_rotation_crc@primary-4-tiled-reflect-x-180
> +kms_rotation_crc@primary-rotation-180
> +kms_rotation_crc@primary-x-tiled-reflect-x-0
> +kms_rotation_crc@primary-x-tiled-reflect-x-180
> +kms_rotation_crc@primary-yf-tiled-reflect-x-0
> +kms_rotation_crc@primary-yf-tiled-reflect-x-180
> +kms_rotation_crc@primary-yf-tiled-reflect-x-270
> +kms_rotation_crc@primary-yf-tiled-reflect-x-90
> +kms_rotation_crc@primary-y-tiled-reflect-x-0
> +kms_rotation_crc@primary-y-tiled-reflect-x-180
> +kms_rotation_crc@primary-y-tiled-reflect-x-270
> +kms_rotation_crc@primary-y-tiled-reflect-x-90
> +kms_rotation_crc@sprite-rotation-180
> +kms_scaling_modes@scaling-mode-center
> +kms_scaling_modes@scaling-mode-full
> +kms_scaling_modes@scaling-mode-full-aspect
> +kms_scaling_modes@scaling-mode-none
> +kms_selftest@all
> +kms_setmode@basic-clone-single-crtc
> +kms_setmode@clone-exclusive-crtc
> +kms_setmode@invalid-clone-exclusive-crtc
> +kms_setmode@invalid-clone-single-crtc
> +kms_setmode@invalid-clone-single-crtc-stealing
> +kms_sysfs_edid_timing
> +kms_tv_load_detect@load-detect
> +kms_universal_plane@cursor-fb-leak-pipe-A
> +kms_universal_plane@cursor-fb-leak-pipe-B
> +kms_universal_plane@cursor-fb-leak-pipe-C
> +kms_universal_plane@cursor-fb-leak-pipe-D
> +kms_universal_plane@cursor-fb-leak-pipe-E
> +kms_universal_plane@cursor-fb-leak-pipe-F
> +kms_universal_plane@disable-primary-vs-flip-pipe-A
> +kms_universal_plane@disable-primary-vs-flip-pipe-B
> +kms_universal_plane@disable-primary-vs-flip-pipe-C
> +kms_universal_plane@disable-primary-vs-flip-pipe-D
> +kms_universal_plane@disable-primary-vs-flip-pipe-E
> +kms_universal_plane@disable-primary-vs-flip-pipe-F
> +kms_universal_plane@universal-plane-gen9-features-pipe-A
> +kms_universal_plane@universal-plane-gen9-features-pipe-B
> +kms_universal_plane@universal-plane-gen9-features-pipe-C
> +kms_universal_plane@universal-plane-gen9-features-pipe-D
> +kms_universal_plane@universal-plane-gen9-features-pipe-E
> +kms_universal_plane@universal-plane-gen9-features-pipe-F
> +kms_universal_plane@universal-plane-pipe-A-functional
> +kms_universal_plane@universal-plane-pipe-A-sanity
> +kms_universal_plane@universal-plane-pipe-B-functional
> +kms_universal_plane@universal-plane-pipe-B-sanity
> +kms_universal_plane@universal-plane-pipe-C-functional
> +kms_universal_plane@universal-plane-pipe-C-sanity
> +kms_universal_plane@universal-plane-pipe-D-functional
> +kms_universal_plane@universal-plane-pipe-D-sanity
> +kms_universal_plane@universal-plane-pipe-E-functional
> +kms_universal_plane@universal-plane-pipe-E-sanity
> +kms_universal_plane@universal-plane-pipe-F-functional
> +kms_universal_plane@universal-plane-pipe-F-sanity
> +kms_vblank@crtc-id
> +kms_vblank@invalid
> +kms_vblank@pipe-A-accuracy-idle
> +kms_vblank@pipe-A-query-busy
> +kms_vblank@pipe-A-query-forked
> +kms_vblank@pipe-A-query-forked-busy
> +kms_vblank@pipe-A-query-idle
> +kms_vblank@pipe-A-ts-continuation-idle
> +kms_vblank@pipe-A-ts-continuation-modeset
> +kms_vblank@pipe-A-ts-continuation-suspend
> +kms_vblank@pipe-A-wait-busy
> +kms_vblank@pipe-A-wait-forked
> +kms_vblank@pipe-A-wait-forked-busy
> +kms_vblank@pipe-A-wait-idle
> +kms_vblank@pipe-B-accuracy-idle
> +kms_vblank@pipe-B-query-busy
> +kms_vblank@pipe-B-query-forked
> +kms_vblank@pipe-B-query-forked-busy
> +kms_vblank@pipe-B-query-idle
> +kms_vblank@pipe-B-ts-continuation-dpms-suspend
> +kms_vblank@pipe-B-ts-continuation-idle
> +kms_vblank@pipe-B-ts-continuation-modeset
> +kms_vblank@pipe-B-ts-continuation-suspend
> +kms_vblank@pipe-B-wait-busy
> +kms_vblank@pipe-B-wait-forked
> +kms_vblank@pipe-B-wait-forked-busy
> +kms_vblank@pipe-B-wait-idle
> +kms_vblank@pipe-C-accuracy-idle
> +kms_vblank@pipe-C-query-busy
> +kms_vblank@pipe-C-query-forked
> +kms_vblank@pipe-C-query-forked-busy
> +kms_vblank@pipe-C-query-idle
> +kms_vblank@pipe-C-ts-continuation-dpms-suspend
> +kms_vblank@pipe-C-ts-continuation-idle
> +kms_vblank@pipe-C-ts-continuation-modeset
> +kms_vblank@pipe-C-ts-continuation-suspend
> +kms_vblank@pipe-C-wait-busy
> +kms_vblank@pipe-C-wait-forked
> +kms_vblank@pipe-C-wait-forked-busy
> +kms_vblank@pipe-C-wait-idle
> +kms_vblank@pipe-D-accuracy-idle
> +kms_vblank@pipe-D-query-busy
> +kms_vblank@pipe-D-query-forked
> +kms_vblank@pipe-D-query-forked-busy
> +kms_vblank@pipe-D-query-idle
> +kms_vblank@pipe-D-ts-continuation-dpms-suspend
> +kms_vblank@pipe-D-ts-continuation-idle
> +kms_vblank@pipe-D-ts-continuation-modeset
> +kms_vblank@pipe-D-ts-continuation-suspend
> +kms_vblank@pipe-D-wait-busy
> +kms_vblank@pipe-D-wait-forked
> +kms_vblank@pipe-D-wait-forked-busy
> +kms_vblank@pipe-D-wait-idle
> +kms_vblank@pipe-E-accuracy-idle
> +kms_vblank@pipe-E-query-busy
> +kms_vblank@pipe-E-query-busy-hang
> +kms_vblank@pipe-E-query-forked
> +kms_vblank@pipe-E-query-forked-busy
> +kms_vblank@pipe-E-query-forked-busy-hang
> +kms_vblank@pipe-E-query-forked-hang
> +kms_vblank@pipe-E-query-idle
> +kms_vblank@pipe-E-query-idle-hang
> +kms_vblank@pipe-E-ts-continuation-dpms-rpm
> +kms_vblank@pipe-E-ts-continuation-dpms-suspend
> +kms_vblank@pipe-E-ts-continuation-idle
> +kms_vblank@pipe-E-ts-continuation-idle-hang
> +kms_vblank@pipe-E-ts-continuation-modeset
> +kms_vblank@pipe-E-ts-continuation-modeset-hang
> +kms_vblank@pipe-E-ts-continuation-modeset-rpm
> +kms_vblank@pipe-E-ts-continuation-suspend
> +kms_vblank@pipe-E-wait-busy
> +kms_vblank@pipe-E-wait-busy-hang
> +kms_vblank@pipe-E-wait-forked
> +kms_vblank@pipe-E-wait-forked-busy
> +kms_vblank@pipe-E-wait-forked-busy-hang
> +kms_vblank@pipe-E-wait-forked-hang
> +kms_vblank@pipe-E-wait-idle
> +kms_vblank@pipe-E-wait-idle-hang
> +kms_vblank@pipe-F-accuracy-idle
> +kms_vblank@pipe-F-query-busy
> +kms_vblank@pipe-F-query-busy-hang
> +kms_vblank@pipe-F-query-forked
> +kms_vblank@pipe-F-query-forked-busy
> +kms_vblank@pipe-F-query-forked-busy-hang
> +kms_vblank@pipe-F-query-forked-hang
> +kms_vblank@pipe-F-query-idle
> +kms_vblank@pipe-F-query-idle-hang
> +kms_vblank@pipe-F-ts-continuation-dpms-rpm
> +kms_vblank@pipe-F-ts-continuation-dpms-suspend
> +kms_vblank@pipe-F-ts-continuation-idle
> +kms_vblank@pipe-F-ts-continuation-idle-hang
> +kms_vblank@pipe-F-ts-continuation-modeset
> +kms_vblank@pipe-F-ts-continuation-modeset-hang
> +kms_vblank@pipe-F-ts-continuation-modeset-rpm
> +kms_vblank@pipe-F-ts-continuation-suspend
> +kms_vblank@pipe-F-wait-busy
> +kms_vblank@pipe-F-wait-busy-hang
> +kms_vblank@pipe-F-wait-forked
> +kms_vblank@pipe-F-wait-forked-busy
> +kms_vblank@pipe-F-wait-forked-busy-hang
> +kms_vblank@pipe-F-wait-forked-hang
> +kms_vblank@pipe-F-wait-idle
> +kms_vblank@pipe-F-wait-idle-hang
> +kms_vrr@flip-basic
> +kms_vrr@flip-dpms
> +kms_vrr@flipline
> +kms_vrr@flip-suspend
> +kms_writeback@writeback-check-output
> +kms_writeback@writeback-fb-id
> +kms_writeback@writeback-invalid-parameters
> +kms_writeback@writeback-pixel-formats
> +prime_mmap_kms@buffer-sharing
> diff --git a/drivers/gpu/drm/ci/x86_64.config b/drivers/gpu/drm/ci/x86_64.config
> new file mode 100644
> index 000000000000..8f2cec020bed
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/x86_64.config
> @@ -0,0 +1,105 @@
> +CONFIG_LOCALVERSION_AUTO=y
> +CONFIG_DEBUG_KERNEL=y
> +
> +CONFIG_PWM=y
> +CONFIG_PM_DEVFREQ=y
> +CONFIG_OF=y
> +CONFIG_CROS_EC=y
> +
> +# abootimg with a 'dummy' rootfs fails with root=/dev/nfs
> +CONFIG_BLK_DEV_INITRD=n
> +
> +CONFIG_DEVFREQ_GOV_PERFORMANCE=y
> +CONFIG_DEVFREQ_GOV_POWERSAVE=y
> +CONFIG_DEVFREQ_GOV_USERSPACE=y
> +CONFIG_DEVFREQ_GOV_PASSIVE=y
> +
> +CONFIG_DRM=y
> +CONFIG_DRM_PANEL_SIMPLE=y
> +CONFIG_PWM_CROS_EC=y
> +CONFIG_BACKLIGHT_PWM=y
> +
> +# Strip out some stuff we don't need for graphics testing, to reduce
> +# the build.
> +CONFIG_CAN=n
> +CONFIG_WIRELESS=n
> +CONFIG_RFKILL=n
> +CONFIG_WLAN=n
> +
> +CONFIG_REGULATOR_FAN53555=y
> +CONFIG_REGULATOR=y
> +
> +CONFIG_REGULATOR_VCTRL=y
> +
> +CONFIG_KASAN=n
> +CONFIG_KASAN_INLINE=n
> +CONFIG_STACKTRACE=n
> +
> +CONFIG_TMPFS=y
> +
> +CONFIG_PROVE_LOCKING=n
> +CONFIG_DEBUG_LOCKDEP=n
> +CONFIG_SOFTLOCKUP_DETECTOR=y
> +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
> +
> +CONFIG_DETECT_HUNG_TASK=y
> +
> +CONFIG_USB_USBNET=y
> +CONFIG_NETDEVICES=y
> +CONFIG_USB_NET_DRIVERS=y
> +CONFIG_USB_RTL8152=y
> +CONFIG_USB_NET_AX8817X=y
> +CONFIG_USB_NET_SMSC95XX=y
> +CONFIG_USB_GADGET=y
> +CONFIG_USB_ETH=y
> +
> +CONFIG_FW_LOADER_COMPRESS=y
> +
> +# options for AMD devices
> +CONFIG_X86_AMD_PLATFORM_DEVICE=y
> +CONFIG_ACPI_VIDEO=y
> +CONFIG_X86_AMD_FREQ_SENSITIVITY=y
> +CONFIG_PINCTRL=y
> +CONFIG_PINCTRL_AMD=y
> +CONFIG_DRM_AMDGPU=m
> +CONFIG_DRM_AMDGPU_SI=y
> +CONFIG_DRM_AMDGPU_USERPTR=y
> +CONFIG_DRM_AMD_ACP=n
> +CONFIG_ACPI_WMI=y
> +CONFIG_MXM_WMI=y
> +CONFIG_PARPORT=y
> +CONFIG_PARPORT_PC=y
> +CONFIG_PARPORT_SERIAL=y
> +CONFIG_SERIAL_8250_DW=y
> +CONFIG_CHROME_PLATFORMS=y
> +CONFIG_KVM_AMD=m
> +
> +#options for Intel devices
> +CONFIG_MFD_INTEL_LPSS_PCI=y
> +CONFIG_KVM_INTEL=m
> +
> +#options for KVM guests
> +CONFIG_FUSE_FS=y
> +CONFIG_HYPERVISOR_GUEST=y
> +CONFIG_KVM=y
> +CONFIG_KVM_GUEST=y
> +CONFIG_VIRT_DRIVERS=y
> +CONFIG_VIRTIO_FS=y
> +CONFIG_DRM_VIRTIO_GPU=y
> +CONFIG_SERIAL_8250_CONSOLE=y
> +CONFIG_VIRTIO_NET=y
> +CONFIG_VIRTIO_CONSOLE=y
> +CONFIG_PARAVIRT=y
> +CONFIG_VIRTIO_BLK=y
> +CONFIG_VIRTUALIZATION=y
> +CONFIG_VIRTIO=y
> +CONFIG_VIRTIO_PCI=y
> +CONFIG_VIRTIO_MMIO=y
> +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
> +CONFIG_CRYPTO_DEV_VIRTIO=y
> +CONFIG_HW_RANDOM_VIRTIO=y
> +CONFIG_BLK_MQ_VIRTIO=y
> +CONFIG_TUN=y
> +CONFIG_VSOCKETS=y
> +CONFIG_VIRTIO_VSOCKETS=y
> +CONFIG_VHOST_VSOCK=m
> diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt
> new file mode 100644
> index 000000000000..b596e5bf5348
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt
> @@ -0,0 +1,19 @@
> +kms_bw@linear-tiling-1-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-1-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> +kms_cursor_crc@pipe-A-cursor-size-change,Fail
> +kms_cursor_crc@pipe-B-cursor-size-change,Fail
> +kms_hdr@bpc-switch,Fail
> +kms_hdr@bpc-switch-dpms,Fail
> +kms_plane_multiple@atomic-pipe-A-tiling-none,Fail
> +kms_rotation_crc@primary-rotation-180,Fail
> +kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
> +kms_async_flips@alternate-sync-async-flip,Fail
> +kms_async_flips@async-flip-with-page-flip-events,Fail
> +kms_async_flips@crc,Fail
> +kms_async_flips@invalid-async-flip,Fail
> +kms_async_flips@test-cursor,Fail
> +kms_async_flips@test-time-stamp,Fail
> +kms_addfb_basic@bad-pitch-65536,Fail
> +kms_addfb_basic@bo-too-small,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt
> new file mode 100644
> index 000000000000..200706d8742b
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt
> @@ -0,0 +1,15 @@
> +kms_addfb_basic@too-high
> +kms_atomic_transition@plane-all-modeset-transition-internal-panels
> +kms_atomic_transition@plane-all-transition
> +kms_atomic_transition@plane-use-after-nonblocking-unbind
> +kms_bw@linear-tiling-1-displays-1920x1080p
> +kms_bw@linear-tiling-2-displays-1920x1080p
> +kms_bw@linear-tiling-2-displays-2560x1440p
> +kms_bw@linear-tiling-3-displays-2560x1440p
> +kms_bw@linear-tiling-3-displays-3840x2160p
> +kms_cursor_crc@pipe-A-cursor-alpha-opaque
> +kms_cursor_crc@pipe-B-cursor-alpha-opaque
> +kms_plane_multiple@atomic-pipe-B-tiling-none
> +kms_plane@pixel-format
> +kms_plane_scaling@downscale-with-rotation-factor-0-5
> +kms_universal_plane@disable-primary-vs-flip-pipe-A
> diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt
> new file mode 100644
> index 000000000000..e2c538a0f954
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt
> @@ -0,0 +1,2 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt
> new file mode 100644
> index 000000000000..67d78f10b671
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt
> @@ -0,0 +1,32 @@
> +kms_bw@linear-tiling-2-displays-1920x1080p
> +kms_bw@linear-tiling-2-displays-2560x1440p
> +kms_bw@linear-tiling-2-displays-3840x2160p
> +kms_bw@linear-tiling-3-displays-1920x1080p
> +kms_bw@linear-tiling-3-displays-2560x1440p
> +kms_bw@linear-tiling-3-displays-3840x2160p
> +kms_bw@linear-tiling-4-displays-1920x1080p
> +kms_bw@linear-tiling-4-displays-2560x1440p
> +kms_bw@linear-tiling-4-displays-3840x2160p
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
> +kms_plane_alpha_blend@pipe-A-alpha-basic
> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-A-constant-alpha-max
> +kms_plane_alpha_blend@pipe-B-alpha-basic
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max
> +kms_plane_alpha_blend@pipe-C-alpha-basic
> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-C-constant-alpha-max
> +kms_sysfs_edid_timing
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt b/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt
> new file mode 100644
> index 000000000000..e2c538a0f954
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt
> @@ -0,0 +1,2 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/i915-apl-fails.txt b/drivers/gpu/drm/ci/xfails/i915-apl-fails.txt
> new file mode 100644
> index 000000000000..a077f29d5cba
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/i915-apl-fails.txt
> @@ -0,0 +1,29 @@
> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-4-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-4-displays-3840x2160p,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
> +kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
> +kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
> +kms_sysfs_edid_timing,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt
> new file mode 100644
> index 000000000000..618bbe6bb793
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt
> @@ -0,0 +1 @@
> +kms_frontbuffer_tracking@fbc-tiling-linear
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt b/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt
> new file mode 100644
> index 000000000000..e2c538a0f954
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt
> @@ -0,0 +1,2 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt
> new file mode 100644
> index 000000000000..13ba297273d0
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt
> @@ -0,0 +1,37 @@
> +kms_bw@linear-tiling-2-displays-1920x1080p
> +kms_bw@linear-tiling-2-displays-2560x1440p
> +kms_bw@linear-tiling-2-displays-3840x2160p
> +kms_bw@linear-tiling-3-displays-1920x1080p
> +kms_bw@linear-tiling-3-displays-2560x1440p
> +kms_bw@linear-tiling-3-displays-3840x2160p
> +kms_bw@linear-tiling-4-displays-1920x1080p
> +kms_bw@linear-tiling-4-displays-2560x1440p
> +kms_bw@linear-tiling-4-displays-3840x2160p
> +kms_flip@flip-vs-suspend
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
> +kms_hdr@bpc-switch-suspend
> +kms_plane_alpha_blend@pipe-A-alpha-basic
> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-A-constant-alpha-max
> +kms_plane_alpha_blend@pipe-B-alpha-basic
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max
> +kms_plane_alpha_blend@pipe-C-alpha-basic
> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-C-constant-alpha-max
> +kms_psr2_su@page_flip-NV12
> +kms_psr2_su@page_flip-P010
> +kms_setmode@basic
> +kms_draw_crc@draw-method-xrgb8888-render-xtiled
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt
> new file mode 100644
> index 000000000000..aedb3d2ef885
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt
> @@ -0,0 +1,40 @@
> +kms_bw@linear-tiling-1-displays-3840x2160p
> +kms_bw@linear-tiling-2-displays-1920x1080p
> +kms_bw@linear-tiling-2-displays-2560x1440p
> +kms_bw@linear-tiling-2-displays-3840x2160p
> +kms_bw@linear-tiling-3-displays-1920x1080p
> +kms_bw@linear-tiling-3-displays-2560x1440p
> +kms_bw@linear-tiling-3-displays-3840x2160p
> +kms_bw@linear-tiling-4-displays-1920x1080p
> +kms_bw@linear-tiling-4-displays-2560x1440p
> +kms_bw@linear-tiling-4-displays-3840x2160p
> +kms_flip@blocking-wf_vblank
> +kms_flip@wf_vblank-ts-check
> +kms_flip@wf_vblank-ts-check-interruptible
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling
> +kms_frontbuffer_tracking@fbc-tiling-linear
> +kms_plane_alpha_blend@pipe-A-alpha-basic
> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-A-constant-alpha-max
> +kms_plane_alpha_blend@pipe-B-alpha-basic
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max
> +kms_plane_alpha_blend@pipe-C-alpha-basic
> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-C-constant-alpha-max
> +kms_rotation_crc@multiplane-rotation
> +kms_rotation_crc@multiplane-rotation-cropping-bottom
> +kms_rotation_crc@multiplane-rotation-cropping-top
> +kms_setmode@basic
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt b/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt
> new file mode 100644
> index 000000000000..e2c538a0f954
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt
> @@ -0,0 +1,2 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt b/drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt
> new file mode 100644
> index 000000000000..f81f065e27e8
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt
> @@ -0,0 +1,8 @@
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
> +kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt
> new file mode 100644
> index 000000000000..752d0d9a5280
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt
> @@ -0,0 +1,25 @@
> +kms_bw@linear-tiling-2-displays-1920x1080p
> +kms_bw@linear-tiling-2-displays-3840x2160p
> +kms_bw@linear-tiling-3-displays-1920x1080p
> +kms_bw@linear-tiling-3-displays-2560x1440p
> +kms_bw@linear-tiling-3-displays-3840x2160p
> +kms_bw@linear-tiling-4-displays-1920x1080p
> +kms_bw@linear-tiling-4-displays-3840x2160p
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling
> +kms_plane_alpha_blend@pipe-A-alpha-basic
> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-B-alpha-basic
> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max
> +kms_plane_alpha_blend@pipe-C-alpha-basic
> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb
> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb
> +kms_sysfs_edid_timing
> +kms_async_flips@crc
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt b/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt
> new file mode 100644
> index 000000000000..e2c538a0f954
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt
> @@ -0,0 +1,2 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt b/drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt
> new file mode 100644
> index 000000000000..270644ce220c
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt
> @@ -0,0 +1,19 @@
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-4-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-4-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-5-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-5-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-5-displays-3840x2160p,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
> +kms_rotation_crc@bad-pixel-format,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt
> new file mode 100644
> index 000000000000..e23d369bec89
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/i915-tgl-flakes.txt
> @@ -0,0 +1,5 @@
> +kms_draw_crc@.*
> +kms_flip@blocking-absolute-wf_vblank
> +kms_flip@bo-too-big-interruptible
> +kms_flip@flip-vs-rmfb-interruptible
> +kms_flip@busy-flip
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt b/drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt
> new file mode 100644
> index 000000000000..14f33c7ba03b
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt
> @@ -0,0 +1,8 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> +
> +# GPU hangs, then the whole machine
> +gem_eio.*
> +
> +# Whole machine hangs
> +kms_flip@absolute-wf_vblank@a-edp1
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/i915-whl-fails.txt b/drivers/gpu/drm/ci/xfails/i915-whl-fails.txt
> new file mode 100644
> index 000000000000..dbfedfa5d63f
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/i915-whl-fails.txt
> @@ -0,0 +1,30 @@
> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-4-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-4-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-4-displays-3840x2160p,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail
> +kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-upscaling,Fail
> +kms_frontbuffer_tracking@fbc-tiling-linear,Fail
> +kms_plane_alpha_blend@pipe-A-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-A-alpha-transparent-fb,Fail
> +kms_plane_alpha_blend@pipe-A-constant-alpha-max,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-transparent-fb,Fail
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
> +kms_plane_alpha_blend@pipe-C-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-C-alpha-transparent-fb,Fail
> +kms_plane_alpha_blend@pipe-C-constant-alpha-max,Fail
> +kms_sysfs_edid_timing,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt
> new file mode 100644
> index 000000000000..6bcac5b84fbb
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt
> @@ -0,0 +1 @@
> +kms_flip@flip-vs-suspend
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/mediatek-mt8173-fails.txt b/drivers/gpu/drm/ci/xfails/mediatek-mt8173-fails.txt
> new file mode 100644
> index 000000000000..7f74fb9afc99
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/mediatek-mt8173-fails.txt
> @@ -0,0 +1,29 @@
> +kms_3d,Fail
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_bw@linear-tiling-1-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-1-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-1-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> +kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
> +kms_color@pipe-B-invalid-gamma-lut-sizes,Fail
> +kms_force_connector_basic@force-connector-state,Fail
> +kms_force_connector_basic@force-edid,Fail
> +kms_force_connector_basic@force-load-detect,Fail
> +kms_force_connector_basic@prune-stale-modes,Fail
> +kms_invalid_mode@int-max-clock,Fail
> +kms_plane_scaling@planes-upscale-20x20,Fail
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
> +kms_plane_scaling@upscale-with-modifier-20x20,Fail
> +kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
> +kms_plane_scaling@upscale-with-rotation-20x20,Fail
> +kms_properties@get_properties-sanity-atomic,Fail
> +kms_properties@plane-properties-atomic,Fail
> +kms_properties@plane-properties-legacy,Fail
> +kms_rmfb@close-fd,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/mediatek-mt8183-fails.txt b/drivers/gpu/drm/ci/xfails/mediatek-mt8183-fails.txt
> new file mode 100644
> index 000000000000..6ff81d00e84e
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/mediatek-mt8183-fails.txt
> @@ -0,0 +1,10 @@
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_bw@linear-tiling-1-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> +kms_color@pipe-A-invalid-gamma-lut-sizes,Fail
> +kms_plane_scaling@upscale-with-rotation-20x20,Fail
> +kms_rmfb@close-fd,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/mediatek-mt8183-flakes.txt b/drivers/gpu/drm/ci/xfails/mediatek-mt8183-flakes.txt
> new file mode 100644
> index 000000000000..208890b79eb0
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/mediatek-mt8183-flakes.txt
> @@ -0,0 +1,14 @@
> +core_setmaster_vs_auth
> +kms_bw@linear-tiling-1-displays-1920x1080p
> +kms_bw@linear-tiling-1-displays-3840x2160p
> +kms_bw@linear-tiling-3-displays-1920x1080p
> +kms_cursor_legacy@cursor-vs-flip-atomic
> +kms_plane_scaling@invalid-num-scalers
> +kms_plane_scaling@planes-upscale-20x20
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5
> +kms_plane_scaling@upscale-with-modifier-20x20
> +kms_plane_scaling@upscale-with-pixel-format-20x20
> +kms_prop_blob@invalid-set-prop-any
> +kms_properties@get_properties-sanity-atomic
> +kms_properties@plane-properties-atomic
> +kms_properties@plane-properties-legacy
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/meson-g12b-fails.txt b/drivers/gpu/drm/ci/xfails/meson-g12b-fails.txt
> new file mode 100644
> index 000000000000..345e1426b3a3
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/meson-g12b-fails.txt
> @@ -0,0 +1,5 @@
> +kms_3d,Fail
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_properties@connector-properties-atomic,Fail
> +kms_properties@get_properties-sanity-atomic,Fail
> +kms_properties@get_properties-sanity-non-atomic,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/meson-g12b-flakes.txt b/drivers/gpu/drm/ci/xfails/meson-g12b-flakes.txt
> new file mode 100644
> index 000000000000..b63329d06767
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/meson-g12b-flakes.txt
> @@ -0,0 +1,4 @@
> +kms_force_connector_basic@force-connector-state
> +kms_force_connector_basic@force-edid
> +kms_force_connector_basic@force-load-detect
> +kms_force_connector_basic@prune-stale-modes
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8016-fails.txt b/drivers/gpu/drm/ci/xfails/msm-apq8016-fails.txt
> new file mode 100644
> index 000000000000..16c2dfab3f16
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/msm-apq8016-fails.txt
> @@ -0,0 +1,15 @@
> +kms_3d,Fail
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_cursor_legacy@all-pipes-forked-move,Fail
> +kms_cursor_legacy@all-pipes-torture-bo,Fail
> +kms_cursor_legacy@all-pipes-forked-bo,Fail
> +kms_cursor_legacy@all-pipes-single-bo,Fail
> +kms_cursor_legacy@all-pipes-single-move,Fail
> +kms_cursor_legacy@all-pipes-torture-move,Fail
> +kms_cursor_legacy@pipe-A-forked-bo,Fail
> +kms_cursor_legacy@pipe-A-forked-move,Fail
> +kms_cursor_legacy@pipe-A-single-bo,Fail
> +kms_cursor_legacy@pipe-A-single-move,Fail
> +kms_cursor_legacy@pipe-A-torture-bo,Fail
> +kms_cursor_legacy@pipe-A-torture-move,Fail
> +kms_hdmi_inject@inject-4k,Fail
> diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8016-flakes.txt b/drivers/gpu/drm/ci/xfails/msm-apq8016-flakes.txt
> new file mode 100644
> index 000000000000..b63329d06767
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/msm-apq8016-flakes.txt
> @@ -0,0 +1,4 @@
> +kms_force_connector_basic@force-connector-state
> +kms_force_connector_basic@force-edid
> +kms_force_connector_basic@force-load-detect
> +kms_force_connector_basic@prune-stale-modes
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt b/drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt
> new file mode 100644
> index 000000000000..88a1fc0a3b0d
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt
> @@ -0,0 +1,2 @@
> +kms_3d,Fail
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8096-flakes.txt b/drivers/gpu/drm/ci/xfails/msm-apq8096-flakes.txt
> new file mode 100644
> index 000000000000..b63329d06767
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/msm-apq8096-flakes.txt
> @@ -0,0 +1,4 @@
> +kms_force_connector_basic@force-connector-state
> +kms_force_connector_basic@force-edid
> +kms_force_connector_basic@force-load-detect
> +kms_force_connector_basic@prune-stale-modes
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt b/drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt
> new file mode 100644
> index 000000000000..cd49c8ce2059
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt
> @@ -0,0 +1,2 @@
> +# Whole machine hangs
> +kms_cursor_legacy@all-pipes-torture-move
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-fails.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-fails.txt
> new file mode 100644
> index 000000000000..cfa25fe97498
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-fails.txt
> @@ -0,0 +1,21 @@
> +kms_cursor_legacy@cursor-vs-flip-toggle,Fail
> +kms_cursor_legacy@cursorA-vs-flipA-atomic-transitions,Crash
> +kms_plane@pixel-format,Fail
> +kms_plane@pixel-format-source-clamping,Fail
> +kms_plane@plane-position-covered,Fail
> +kms_plane@plane-position-hole,Fail
> +kms_plane@plane-position-hole-dpms,Fail
> +kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
> +kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
> +kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-7efc,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-basic,Fail
> +kms_plane_alpha_blend@pipe-B-alpha-opaque-fb,Fail
> +kms_plane_alpha_blend@pipe-B-constant-alpha-max,Fail
> +kms_plane_alpha_blend@pipe-B-constant-alpha-mid,Fail
> +kms_plane_alpha_blend@pipe-B-coverage-7efc,Fail
> +kms_plane_alpha_blend@pipe-B-coverage-vs-premult-vs-constant,Fail
> +kms_rmfb@close-fd,Fail
> +kms_rotation_crc@primary-rotation-180,Fail
> +kms_universal_plane@disable-primary-vs-flip-pipe-B,Fail
> +kms_universal_plane@disable-primary-vs-flip-pipe-b,Fail
> diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-flakes.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-flakes.txt
> new file mode 100644
> index 000000000000..b01aa5b35dce
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-flakes.txt
> @@ -0,0 +1,6 @@
> +# Test ends up reading CRC from frame before cursor update
> +# sometimes.. tbd if this is a kernel CRC bug or a test
> +# bug
> +kms_cursor_crc@.*
> +
> +kms_plane_multiple@atomic-pipe-A-tiling-none
> diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-skips.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-skips.txt
> new file mode 100644
> index 000000000000..410e0eeb3161
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-skips.txt
> @@ -0,0 +1,23 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> +
> +# Test incorrectly assumes that CTM support implies gamma/degamma
> +# LUT support.  None of the subtests handle the case of only having
> +# CTM support
> +kms_color.*
> +
> +# 4k@60 is not supported on this hw, but driver doesn't handle it
> +# too gracefully.. https://gitlab.freedesktop.org/drm/msm/-/issues/15
> +kms_bw@linear-tiling-.*-displays-3840x2160p
> +
> +# Until igt fix lands: https://patchwork.freedesktop.org/patch/493175/
> +kms_bw@linear-tiling-2.*
> +kms_bw@linear-tiling-3.*
> +kms_bw@linear-tiling-4.*
> +kms_bw@linear-tiling-5.*
> +kms_bw@linear-tiling-6.*
> +
> +# igt fix posted: https://patchwork.freedesktop.org/patch/499926/
> +# failure mode is flakey due to randomization but fails frequently
> +# enough to be detected as a Crash or occasionally UnexpectedPass.
> +kms_plane_multiple@atomic-pipe-A-tiling-none
> diff --git a/drivers/gpu/drm/ci/xfails/msm-sdm845-fails.txt b/drivers/gpu/drm/ci/xfails/msm-sdm845-fails.txt
> new file mode 100644
> index 000000000000..e07bb8c4216c
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/msm-sdm845-fails.txt
> @@ -0,0 +1,43 @@
> +kms_color@pipe-A-ctm-0-25,Fail
> +kms_color@pipe-A-ctm-0-5,Fail
> +kms_color@pipe-A-ctm-0-75,Fail
> +kms_color@pipe-A-ctm-blue-to-red,Fail
> +kms_color@pipe-A-ctm-green-to-red,Fail
> +kms_color@pipe-A-ctm-max,Fail
> +kms_color@pipe-A-ctm-negative,Fail
> +kms_color@pipe-A-ctm-red-to-blue,Fail
> +kms_color@pipe-A-legacy-gamma,Fail
> +kms_cursor_legacy@basic-flip-after-cursor-atomic,Fail
> +kms_cursor_legacy@basic-flip-after-cursor-legacy,Fail
> +kms_cursor_legacy@basic-flip-before-cursor-atomic,Fail
> +kms_cursor_legacy@basic-flip-before-cursor-legacy,Fail
> +kms_cursor_legacy@cursor-vs-flip-atomic,Fail
> +kms_cursor_legacy@cursor-vs-flip-atomic-transitions,Fail
> +kms_cursor_legacy@cursor-vs-flip-legacy,Fail
> +kms_cursor_legacy@cursor-vs-flip-toggle,Fail
> +kms_cursor_legacy@flip-vs-cursor-atomic,Fail
> +kms_cursor_legacy@flip-vs-cursor-crc-atomic,Fail
> +kms_cursor_legacy@flip-vs-cursor-crc-legacy,Fail
> +kms_cursor_legacy@flip-vs-cursor-legacy,Fail
> +kms_cursor_legacy@short-flip-after-cursor-atomic-transitions,Fail
> +kms_cursor_legacy@short-flip-after-cursor-toggle,Fail
> +kms_cursor_legacy@short-flip-before-cursor-atomic-transitions,Fail
> +kms_plane@pixel-format,Fail
> +kms_plane@pixel-format-source-clamping,Fail
> +kms_plane_alpha_blend@pipe-A-alpha-7efc,Fail
> +kms_plane_alpha_blend@pipe-A-coverage-7efc,Fail
> +kms_plane_alpha_blend@pipe-A-coverage-vs-premult-vs-constant,Fail
> +kms_plane_cursor@pipe-A-overlay-size-128,Fail
> +kms_plane_cursor@pipe-A-overlay-size-256,Fail
> +kms_plane_cursor@pipe-A-overlay-size-64,Fail
> +kms_plane_cursor@pipe-A-viewport-size-128,Fail
> +kms_plane_cursor@pipe-A-viewport-size-256,Fail
> +kms_plane_cursor@pipe-A-viewport-size-64,Fail
> +kms_plane_scaling@downscale-with-pixel-format-factor-0-25,Timeout
> +kms_plane_scaling@downscale-with-pixel-format-factor-0-5,Timeout
> +kms_plane_scaling@downscale-with-pixel-format-factor-0-75,Timeout
> +kms_plane_scaling@invalid-num-scalers,Fail
> +kms_plane_scaling@planes-downscale-factor-0-25,Fail
> +kms_plane_scaling@scaler-with-clipping-clamping,Timeout
> +kms_plane_scaling@scaler-with-pixel-format-unity-scaling,Timeout
> +kms_rmfb@close-fd,Fail
> diff --git a/drivers/gpu/drm/ci/xfails/msm-sdm845-flakes.txt b/drivers/gpu/drm/ci/xfails/msm-sdm845-flakes.txt
> new file mode 100644
> index 000000000000..ceccd9947c82
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/msm-sdm845-flakes.txt
> @@ -0,0 +1,11 @@
> +# Test ends up reading CRC from frame before cursor update
> +# sometimes.. tbd if this is a kernel CRC bug or a test
> +# bug
> +kms_cursor_crc@.*
> +
> +kms_cursor_legacy@flip-vs-cursor-toggle
> +kms_cursor_legacy@pipe-A-forked-bo
> +kms_cursor_legacy@pipe-A-forked-move
> +kms_cursor_legacy@short-flip-before-cursor-toggle
> +
> +kms_flip@dpms-vs-vblank-race-interruptible
> diff --git a/drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt b/drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt
> new file mode 100644
> index 000000000000..42675f1c6d76
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt
> @@ -0,0 +1,2 @@
> +# Hangs machine
> +kms_bw.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3288-fails.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-fails.txt
> new file mode 100644
> index 000000000000..0a2f5c04857a
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-fails.txt
> @@ -0,0 +1,43 @@
> +kms_3d,Fail
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-3-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-3-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-3-displays-3840x2160p,Fail
> +kms_force_connector_basic@force-connector-state,Fail
> +kms_force_connector_basic@force-edid,Fail
> +kms_force_connector_basic@force-load-detect,Fail
> +kms_force_connector_basic@prune-stale-modes,Fail
> +kms_invalid_mode@int-max-clock,Fail
> +kms_plane_cursor@pipe-A-overlay-size-128,Fail
> +kms_plane_cursor@pipe-A-overlay-size-256,Fail
> +kms_plane_cursor@pipe-A-overlay-size-64,Fail
> +kms_plane_cursor@pipe-A-primary-size-128,Fail
> +kms_plane_cursor@pipe-A-primary-size-256,Fail
> +kms_plane_cursor@pipe-A-primary-size-64,Fail
> +kms_plane_cursor@pipe-A-viewport-size-128,Fail
> +kms_plane_cursor@pipe-A-viewport-size-256,Fail
> +kms_plane_cursor@pipe-A-viewport-size-64,Fail
> +kms_plane_cursor@pipe-B-overlay-size-128,Fail
> +kms_plane_cursor@pipe-B-overlay-size-256,Fail
> +kms_plane_cursor@pipe-B-overlay-size-64,Fail
> +kms_plane_cursor@pipe-B-primary-size-128,Fail
> +kms_plane_cursor@pipe-B-primary-size-256,Fail
> +kms_plane_cursor@pipe-B-primary-size-64,Fail
> +kms_plane_cursor@pipe-B-viewport-size-128,Fail
> +kms_plane_cursor@pipe-B-viewport-size-256,Fail
> +kms_plane_cursor@pipe-B-viewport-size-64,Fail
> +kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
> +kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
> +kms_plane_scaling@upscale-with-modifier-20x20,Fail
> +kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
> +kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
> +kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
> +kms_plane_scaling@upscale-with-rotation-20x20,Fail
> +kms_prime@basic-crc,Fail
> +kms_properties@connector-properties-atomic,Fail
> +kms_properties@get_properties-sanity-atomic,Fail
> +kms_properties@get_properties-sanity-non-atomic,Fail
> +kms_rmfb@close-fd,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3288-flakes.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-flakes.txt
> new file mode 100644
> index 000000000000..1f20b75a19fa
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-flakes.txt
> @@ -0,0 +1,2 @@
> +kms_cursor_crc@.*
> +kms_pipe_crc_basic@.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3288-skips.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-skips.txt
> new file mode 100644
> index 000000000000..223937ae7948
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-skips.txt
> @@ -0,0 +1,49 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> +
> +# Too unstable, machine ends up hanging after lots of Oopses
> +kms_cursor_legacy.*
> +
> +# Started hanging the machine on Linux 5.19-rc2:
> +#
> +# [IGT] kms_plane_lowres: executing
> +# [IGT] kms_plane_lowres: starting subtest pipe-F-tiling-y
> +# [IGT] kms_plane_lowres: exiting, ret=77
> +# Console: switching to colour frame buffer device 170x48
> +# rockchip-drm display-subsystem: [drm] *ERROR* flip_done timed out
> +# rockchip-drm display-subsystem: [drm] *ERROR* [CRTC:35:crtc-0] commit wait timed out
> +# BUG: spinlock bad magic on CPU#3, kms_plane_lowre/482
> +# 8<--- cut here ---
> +# Unable to handle kernel paging request at virtual address 7812078e
> +# [7812078e] *pgd=00000000
> +# Internal error: Oops: 5 [#1] SMP ARM
> +# Modules linked in:
> +# CPU: 3 PID: 482 Comm: kms_plane_lowre Tainted: G        W         5.19.0-rc2-323596-g00535de92171 #1
> +# Hardware name: Rockchip (Device Tree)
> +# Process kms_plane_lowre (pid: 482, stack limit = 0x1193ac2b)
> +#  spin_dump from do_raw_spin_lock+0xa4/0xe8
> +#  do_raw_spin_lock from wait_for_completion_timeout+0x2c/0x120
> +#  wait_for_completion_timeout from drm_crtc_commit_wait+0x18/0x7c
> +#  drm_crtc_commit_wait from drm_atomic_helper_wait_for_dependencies+0x44/0x168
> +#  drm_atomic_helper_wait_for_dependencies from commit_tail+0x34/0x180
> +#  commit_tail from drm_atomic_helper_commit+0x164/0x18c
> +#  drm_atomic_helper_commit from drm_atomic_commit+0xac/0xe4
> +#  drm_atomic_commit from drm_client_modeset_commit_atomic+0x23c/0x284
> +#  drm_client_modeset_commit_atomic from drm_client_modeset_commit_locked+0x60/0x1c8
> +#  drm_client_modeset_commit_locked from drm_client_modeset_commit+0x24/0x40
> +#  drm_client_modeset_commit from drm_fbdev_client_restore+0x58/0x94
> +#  drm_fbdev_client_restore from drm_client_dev_restore+0x70/0xbc
> +#  drm_client_dev_restore from drm_release+0xf4/0x114
> +#  drm_release from __fput+0x74/0x240
> +#  __fput from task_work_run+0x84/0xb4
> +#  task_work_run from do_exit+0x34c/0xa20
> +#  do_exit from do_group_exit+0x34/0x98
> +#  do_group_exit from __wake_up_parent+0x0/0x18
> +# Code: e595c008 12843d19 03e00000 03093168 (15940508)
> +# ---[ end trace 0000000000000000 ]---
> +# note: kms_plane_lowre[482] exited with preempt_count 1
> +# Fixing recursive fault but reboot is needed!
> +kms_plane_lowres@pipe-F-tiling-y
> +
> +# Take too long, we have only two machines, and these are very flaky
> +kms_cursor_crc.*
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3399-fails.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-fails.txt
> new file mode 100644
> index 000000000000..ebaa2f96e76b
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-fails.txt
> @@ -0,0 +1,29 @@
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_color@pipe-A-legacy-gamma,Fail
> +kms_color@pipe-B-legacy-gamma,Fail
> +kms_invalid_mode@int-max-clock,Fail
> +kms_plane@plane-panning-bottom-right,Fail
> +kms_plane@plane-panning-top-left,Fail
> +kms_plane_cursor@pipe-B-overlay-size-128,Fail
> +kms_plane_cursor@pipe-B-overlay-size-256,Fail
> +kms_plane_cursor@pipe-B-overlay-size-64,Fail
> +kms_plane_cursor@pipe-B-primary-size-128,Fail
> +kms_plane_cursor@pipe-B-primary-size-256,Fail
> +kms_plane_cursor@pipe-B-primary-size-64,Fail
> +kms_plane_cursor@pipe-B-viewport-size-128,Fail
> +kms_plane_cursor@pipe-B-viewport-size-256,Fail
> +kms_plane_cursor@pipe-B-viewport-size-64,Fail
> +kms_plane_multiple@atomic-pipe-B-tiling-none,Fail
> +kms_prime@basic-crc,Fail
> +kms_rmfb@close-fd,Fail
> +kms_universal_plane@universal-plane-pipe-B-functional,Fail
> +kms_vblank@pipe-A-query-forked,Fail
> +kms_vblank@pipe-A-query-idle,Fail
> +kms_vblank@pipe-A-wait-busy,Fail
> +kms_vblank@pipe-A-wait-forked,Fail
> +kms_vblank@pipe-A-wait-forked-busy,Fail
> +kms_vblank@pipe-B-query-forked,Fail
> +kms_vblank@pipe-B-query-idle,Fail
> +kms_vblank@pipe-B-wait-busy,Fail
> +kms_vblank@pipe-B-wait-forked,Fail
> +kms_vblank@pipe-B-wait-forked-busy,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3399-flakes.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-flakes.txt
> new file mode 100644
> index 000000000000..5808ccee025d
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-flakes.txt
> @@ -0,0 +1,20 @@
> +kms_cursor_crc@.*
> +kms_pipe_crc_basic@.*
> +
> +kms_flip@flip-vs-expired-vblank
> +kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-A
> +kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-B
> +kms_plane_multiple@atomic-pipe-A-tiling-none
> +kms_plane_multiple@atomic-pipe-B-tiling-none
> +kms_plane@plane-position-hole
> +kms_sequence@get-forked
> +kms_sequence@get-forked-busy
> +kms_setmode@basic
> +kms_vblank@pipe-A-accuracy-idle
> +kms_vblank@pipe-A-query-busy
> +kms_vblank@pipe-A-query-forked-busy
> +kms_vblank@pipe-A-wait-idle
> +kms_vblank@pipe-B-accuracy-idle
> +kms_vblank@pipe-B-query-busy
> +kms_vblank@pipe-B-query-forked-busy
> +kms_vblank@pipe-B-wait-idle
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3399-skips.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-skips.txt
> new file mode 100644
> index 000000000000..10c3d81a919a
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-skips.txt
> @@ -0,0 +1,5 @@
> +# Suspend to RAM seems to be broken on this machine
> +.*suspend.*
> +
> +# Too unstable, machine ends up hanging after lots of Oopses
> +kms_cursor_legacy.*
> diff --git a/drivers/gpu/drm/ci/xfails/virtio_gpu-none-fails.txt b/drivers/gpu/drm/ci/xfails/virtio_gpu-none-fails.txt
> new file mode 100644
> index 000000000000..2178bdd064dd
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/virtio_gpu-none-fails.txt
> @@ -0,0 +1,38 @@
> +kms_addfb_basic@addfb25-bad-modifier,Fail
> +kms_addfb_basic@bad-pitch-65536,Fail
> +kms_addfb_basic@bo-too-small,Fail
> +kms_addfb_basic@size-max,Fail
> +kms_addfb_basic@too-high,Fail
> +kms_atomic_transition@plane-primary-toggle-with-vblank-wait,Fail
> +kms_bw@linear-tiling-1-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-1-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-1-displays-3840x2160p,Fail
> +kms_bw@linear-tiling-2-displays-1920x1080p,Fail
> +kms_bw@linear-tiling-2-displays-2560x1440p,Fail
> +kms_bw@linear-tiling-2-displays-3840x2160p,Fail
> +kms_invalid_mode@int-max-clock,Fail
> +kms_plane_scaling@downscale-with-modifier-factor-0-25,Fail
> +kms_plane_scaling@downscale-with-rotation-factor-0-25,Fail
> +kms_plane_scaling@planes-upscale-20x20,Fail
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25,Fail
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5,Fail
> +kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75,Fail
> +kms_plane_scaling@upscale-with-modifier-20x20,Fail
> +kms_plane_scaling@upscale-with-modifier-factor-0-25,Fail
> +kms_plane_scaling@upscale-with-pixel-format-20x20,Fail
> +kms_plane_scaling@upscale-with-pixel-format-factor-0-25,Fail
> +kms_plane_scaling@upscale-with-rotation-20x20,Fail
> +kms_vblank@crtc-id,Fail
> +kms_vblank@invalid,Fail
> +kms_vblank@pipe-A-accuracy-idle,Fail
> +kms_vblank@pipe-A-query-busy,Fail
> +kms_vblank@pipe-A-query-forked,Fail
> +kms_vblank@pipe-A-query-forked-busy,Fail
> +kms_vblank@pipe-A-query-idle,Fail
> +kms_vblank@pipe-A-ts-continuation-idle,Fail
> +kms_vblank@pipe-A-ts-continuation-modeset,Fail
> +kms_vblank@pipe-A-ts-continuation-suspend,Fail
> +kms_vblank@pipe-A-wait-busy,Fail
> +kms_vblank@pipe-A-wait-forked,Fail
> +kms_vblank@pipe-A-wait-forked-busy,Fail
> +kms_vblank@pipe-A-wait-idle,Fail
> \ No newline at end of file
> diff --git a/drivers/gpu/drm/ci/xfails/virtio_gpu-none-flakes.txt b/drivers/gpu/drm/ci/xfails/virtio_gpu-none-flakes.txt
> new file mode 100644
> index 000000000000..e69de29bb2d1
> diff --git a/drivers/gpu/drm/ci/xfails/virtio_gpu-none-skips.txt b/drivers/gpu/drm/ci/xfails/virtio_gpu-none-skips.txt
> new file mode 100644
> index 000000000000..78be18174012
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/xfails/virtio_gpu-none-skips.txt
> @@ -0,0 +1,6 @@
> +# Hits a "refcount_t: underflow; use-after-free" in virtio_gpu_fence_event_process
> +# When run in a particular order with other tests
> +kms_cursor_legacy.*
> +
> +# Job just hangs without any output
> +kms_flip@flip-vs-suspend.*
> \ No newline at end of file
> -- 
> 2.31.1
> 

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [PATCH v8] drm: Add initial ci/ subdirectory
  2022-09-09 17:16               ` Daniel Stone
@ 2022-10-25  7:32                 ` Daniel Vetter
  2022-10-25 15:06                   ` Daniel Stone
  0 siblings, 1 reply; 49+ messages in thread
From: Daniel Vetter @ 2022-10-25  7:32 UTC (permalink / raw)
  To: Daniel Stone
  Cc: Rob Clark, Tomeu Vizoso, Jonathan Corbet, David Airlie,
	Kevin Hilman, linux-doc, linux-kernel, dri-devel, Neil Armstrong,
	Matthias Brugger, linux-rockchip, linux-mediatek, Carlo Caione,
	linux-amlogic, kernel, linux-arm-kernel

On Fri, 9 Sept 2022 at 19:18, Daniel Stone <daniel@fooishbar.org> wrote:
>
> Hi,
>
> On Fri, 9 Sept 2022 at 15:15, Tomeu Vizoso <tomeu.vizoso@collabora.com> wrote:
>>
>> Also include a configuration file that points to the out-of-tree CI
>> scripts.
>
>
>  I think this para is outdated given ...
>
>> v8:
>>   - Move all files specific to testing the kernel into the kernel tree
>>     (thus I have dropped the r-bs I had collected so far)
>>   - Uprev Gitlab CI infrastructure scripts to the latest from Mesa
>
>
> But equally - and sorry for not jumping on the IRC (?) discussion as I was in the middle of other stuff when it came up - I'm don't think this is the right plan.
>
> Mesa having all its CI in-tree makes sense, because merges happen rapidly to a single canonical tree. If the scripts need to be changed for whatever reason, we can merge something in under an hour and everyone immediately gets it. DRM is quite different though, given the forest of trees we have and the long merge paths between them. I worry that merging the CI scripts in-tree - especially for our initial attempt at it, when we're likely to need to make quite a lot of changes before it settles down to become a stable system that works for everyone - is shooting ourselves in the foot by limiting our flexibility.

So the entire "we have multiple trees" is why I want at least the
gitlab-ci.yaml in tree, to force people to collaborate more on one
thing instead of everyone rolling their own fun and hacking stuff up.
And there's still tons of stuff outside in the separate repo, like the
lab status so Linus doesn't get a silly history of lab flapping.

Also wrt "developers don't get the update right away due to
backmerge/pull delays", that's why integration trees like drm-tip or
linux-next exist. So maybe initially we should make sure the ci
patches go in through drm-misc, to maximize how many people see it.
And even for mesa it's not fully automatic, you still have the rebase
your branch if you picked a bad one for development (but yeah marge
does that if the MR is ready). If you're doing kernel development on a
linear tree instead of an integration tree, you're doing it very
wrong.

What I think everyone agrees on is that we probably get the split
wrong and need to shuffle some files back&forth, and that's something
we need to warn Linus about I guess. But somewhere we do need a split
between internal and external stuff, and personally I'd like if at
least the pure sw testing (build and virtual stuff) could be all in
upstream.

> Given that it's currently very dependent on fd.o infrastructure (published ci-templates, the registry, the specific-tag runners for Collabora/CrOS DUTs, etc), there isn't much of a portability gain in bringing the scripts into the tree either. It's a good goal, but not where we are today.

I don't think there's huge chances for any non-fdo gitlab anytime
soon. Once we get there we might need to figure out how to standardize
the hw lab interfacing, and if we have all the sw targets in upstream
that should help with shuffling stuff around for a hypothetical LF
gitlab CI (or whatever it is).
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: [PATCH v8] drm: Add initial ci/ subdirectory
  2022-10-25  7:32                 ` Daniel Vetter
@ 2022-10-25 15:06                   ` Daniel Stone
  0 siblings, 0 replies; 49+ messages in thread
From: Daniel Stone @ 2022-10-25 15:06 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: Rob Clark, Tomeu Vizoso, Jonathan Corbet, David Airlie,
	Kevin Hilman, linux-doc, linux-kernel, dri-devel, Neil Armstrong,
	Matthias Brugger, linux-rockchip, linux-mediatek, Carlo Caione,
	linux-amlogic, kernel, linux-arm-kernel

Hi all,

On Tue, 25 Oct 2022 at 08:32, Daniel Vetter <daniel@ffwll.ch> wrote:
> On Fri, 9 Sept 2022 at 19:18, Daniel Stone <daniel@fooishbar.org> wrote:
> > But equally - and sorry for not jumping on the IRC (?) discussion as I was in the middle of other stuff when it came up - I'm don't think this is the right plan.
> >
> > Mesa having all its CI in-tree makes sense, because merges happen rapidly to a single canonical tree. If the scripts need to be changed for whatever reason, we can merge something in under an hour and everyone immediately gets it. DRM is quite different though, given the forest of trees we have and the long merge paths between them. I worry that merging the CI scripts in-tree - especially for our initial attempt at it, when we're likely to need to make quite a lot of changes before it settles down to become a stable system that works for everyone - is shooting ourselves in the foot by limiting our flexibility.
>
> So the entire "we have multiple trees" is why I want at least the
> gitlab-ci.yaml in tree, to force people to collaborate more on one
> thing instead of everyone rolling their own fun and hacking stuff up.
> And there's still tons of stuff outside in the separate repo, like the
> lab status so Linus doesn't get a silly history of lab flapping.
>
> Also wrt "developers don't get the update right away due to
> backmerge/pull delays", that's why integration trees like drm-tip or
> linux-next exist. So maybe initially we should make sure the ci
> patches go in through drm-misc, to maximize how many people see it.
> And even for mesa it's not fully automatic, you still have the rebase
> your branch if you picked a bad one for development (but yeah marge
> does that if the MR is ready). If you're doing kernel development on a
> linear tree instead of an integration tree, you're doing it very
> wrong.
>
> What I think everyone agrees on is that we probably get the split
> wrong and need to shuffle some files back&forth, and that's something
> we need to warn Linus about I guess. But somewhere we do need a split
> between internal and external stuff, and personally I'd like if at
> least the pure sw testing (build and virtual stuff) could be all in
> upstream.
>
> > Given that it's currently very dependent on fd.o infrastructure (published ci-templates, the registry, the specific-tag runners for Collabora/CrOS DUTs, etc), there isn't much of a portability gain in bringing the scripts into the tree either. It's a good goal, but not where we are today.
>
> I don't think there's huge chances for any non-fdo gitlab anytime
> soon. Once we get there we might need to figure out how to standardize
> the hw lab interfacing, and if we have all the sw targets in upstream
> that should help with shuffling stuff around for a hypothetical LF
> gitlab CI (or whatever it is).

Yep, having talked through things on IRC, I'm happy with where we are;
let's give it a go and find out.

Acked-by: Daniel Stone <daniels@collabora.com>

Cheers,
Daniel

^ permalink raw reply	[flat|nested] 49+ messages in thread

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

Thread overview: 49+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-10  7:01 [RFC] drm/msm: Add initial ci/ subdirectory Tomeu Vizoso
2022-05-10 14:13 ` [RFC v2] " Tomeu Vizoso
2022-05-10 19:39   ` [Freedreno] " Jessica Zhang
2022-05-10 20:25     ` Rob Clark
2022-05-11 17:12       ` Daniel Vetter
2022-05-11 17:46         ` Rob Clark
2022-05-11 19:14           ` Daniel Vetter
2022-05-11 20:32             ` Rob Clark
2022-05-11 21:09               ` Daniel Vetter
2022-05-12 13:28           ` Tomeu Vizoso
2022-05-12 14:02             ` Daniel Vetter
2022-05-11  4:25     ` Tomeu Vizoso
2022-05-11  5:06   ` Adding CI results to the kernel tree was " Dave Airlie
2022-05-11  6:22     ` Greg Kroah-Hartman
2022-05-11 10:26       ` Michel Dänzer
2022-05-11 11:50         ` Greg Kroah-Hartman
2022-05-11 13:33           ` [Freedreno] " Rob Clark
2022-05-11 16:43             ` Daniel Vetter
2022-05-11 17:23               ` Rob Clark
2022-05-12  2:24             ` Theodore Ts'o
2022-05-11 17:33     ` Linus Torvalds
2022-05-11 18:39       ` Rob Clark
2022-05-11 19:08         ` Linus Torvalds
2022-05-11 19:12           ` Linus Torvalds
2022-05-11 20:14             ` [Freedreno] " Rob Clark
2022-05-11 20:06           ` Rob Clark
2022-05-11 19:39       ` Daniel Vetter
2022-05-11  6:15   ` [RFC v3] " Tomeu Vizoso
2022-05-11 13:20     ` Rob Clark
2022-05-11 14:03       ` Tomeu Vizoso
2022-05-17  8:16     ` [RFC v4] drm: " Tomeu Vizoso
2022-05-17  9:18       ` Neil Armstrong
2022-05-17  9:24         ` Tomeu Vizoso
2022-07-26 18:16       ` [PATCH v5] " Tomeu Vizoso
2022-07-29 15:43         ` Rob Clark
2022-08-10 18:24         ` Rodrigo Siqueira Jordao
2022-08-10 22:08           ` Rob Clark
2022-08-11 10:10           ` Tomeu Vizoso
2022-08-16 15:37         ` [PATCH v6] " Tomeu Vizoso
2022-08-29  9:31           ` [PATCH v7] " Tomeu Vizoso
2022-09-09 14:15             ` [PATCH v8] " Tomeu Vizoso
2022-09-09 17:16               ` Daniel Stone
2022-10-25  7:32                 ` Daniel Vetter
2022-10-25 15:06                   ` Daniel Stone
2022-09-12  7:29               ` [PATCH v9] " Tomeu Vizoso
2022-10-14 17:10                 ` Rob Clark
2022-10-24 22:06                 ` Jessica Zhang
2022-05-11 14:26 ` [RFC] drm/msm: " Jani Nikula
2022-05-11 14:41   ` Rob Clark

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).