diff options
author | Dave Airlie <airlied@redhat.com> | 2024-06-21 02:49:58 +0200 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2024-06-21 02:50:04 +0200 |
commit | 91c93e475ca4b4bd5f1e8d525c9a9810283db056 (patch) | |
tree | 12535c83d8ed077d5245c52febf4b5727c3f606a | |
parent | Merge tag 'drm-misc-next-2024-06-06' of https://gitlab.freedesktop.org/drm/mi... (diff) | |
parent | drm/panel: himax-hx83102: fix incorrect argument to mipi_dsi_msleep (diff) | |
download | linux-91c93e475ca4b4bd5f1e8d525c9a9810283db056.tar.xz linux-91c93e475ca4b4bd5f1e8d525c9a9810283db056.zip |
Merge tag 'drm-misc-next-2024-06-13' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next
drm-misc-next for 6.11:
UAPI Changes:
Cross-subsystem Changes:
Core Changes:
- Sprinkle MODULE_DESCRIPTIONS everywhere they are missing
- bridge: Remove drm_bridge_chain_mode_fixup
- ci: Require a more recent version of mesa, improve farm estup and
test generation
- mipi-dbi: Remove mipi_dbi_machine_little_endian, make SPI bits per
word configurable, support RGB888, and allow pixel formats to be
specified in the DT.
- mm: Remove drm_mm_replace_node
- panic: Allow to dump kmsg to the screen
- print: Add a drm prefix to warn level messages too, remove
___drm_dbg, consolidate prefix handling
Driver Changes:
- sun4i: Rework the blender setup for DE2
- bridges:
- bridge-connector: Plumb in the new HDMI helpers
- samsung-dsim: Fix timings calculation
- tc358767: Plenty of small fixes
- panels:
- More cleanup of prepare / enable state tracking in drivers
- New panel: PrimeView PM070WL4,
Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Maxime Ripard <mripard@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240613-cicada-of-infinite-unity-0955ca@houat
145 files changed, 2231 insertions, 4114 deletions
diff --git a/Documentation/devicetree/bindings/display/panel/panel-mipi-dbi-spi.yaml b/Documentation/devicetree/bindings/display/panel/panel-mipi-dbi-spi.yaml index d0ac31ab60cf..6f0290c4e291 100644 --- a/Documentation/devicetree/bindings/display/panel/panel-mipi-dbi-spi.yaml +++ b/Documentation/devicetree/bindings/display/panel/panel-mipi-dbi-spi.yaml @@ -50,6 +50,12 @@ description: | | Command or data | |<D7><D6><D5><D4><D3><D2><D1><D0>| + The standard defines one pixel format for type C: RGB111. The industry + however has decided to provide the type A/B interface pixel formats also on + the Type C interface and most common among these are RGB565 and RGB666. + The MIPI DCS command set_address_mode (36h) has one bit that controls RGB/BGR + order. This gives each supported RGB format a BGR variant. + The panel resolution is specified using the panel-timing node properties hactive (width) and vactive (height). The other mandatory panel-timing properties should be set to zero except clock-frequency which can be @@ -93,6 +99,28 @@ properties: spi-3wire: true + format: + description: > + Pixel format in bit order as going on the wire: + * `x2r1g1b1r1g1b1` - RGB111, 2 pixels per byte + * `x2b1g1r1b1g1r1` - BGR111, 2 pixels per byte + * `x1r1g1b1x1r1g1b1` - RGB111, 2 pixels per byte + * `x1b1g1r1x1b1g1r1` - BGR111, 2 pixels per byte + * `r5g6b5` - RGB565, 2 bytes + * `b5g6r5` - BGR565, 2 bytes + * `r6x2g6x2b6x2` - RGB666, 3 bytes + * `b6x2g6x2r6x2` - BGR666, 3 bytes + enum: + - x2r1g1b1r1g1b1 + - x2b1g1r1b1g1r1 + - x1r1g1b1x1r1g1b1 + - x1b1g1r1x1b1g1r1 + - r5g6b5 + - b5g6r5 + - r6x2g6x2b6x2 + - b6x2g6x2r6x2 + default: r5g6b5 + required: - compatible - reg @@ -119,6 +147,8 @@ examples: reset-gpios = <&gpio 25 GPIO_ACTIVE_HIGH>; write-only; + format = "r5g6b5"; + backlight = <&backlight>; width-mm = <35>; diff --git a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml index 54651a5c9a8d..2ffb2c2e84f9 100644 --- a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml +++ b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml @@ -236,6 +236,8 @@ properties: - powertip,ph128800t006-zhc01 # POWERTIP PH800480T013-IDF2 7.0" WVGA TFT LCD panel - powertip,ph800480t013-idf02 + # PrimeView PM070WL4 7.0" 800x480 TFT LCD panel + - primeview,pm070wl4 # QiaoDian XianShi Corporation 4"3 TFT LCD panel - qiaodian,qd43003c0-40 # Shenzhen QiShenglong Industrialist Co., Ltd. Gopher 2b 4.3" 480(RGB)x272 TFT LCD panel diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml index 51ca841db26e..77eccc5c4889 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml @@ -1164,6 +1164,8 @@ patternProperties: description: PowerVR (deprecated, use img) "^powkiddy,.*": description: Powkiddy + "^primeview,.*": + description: Prime View International (PVI) "^primux,.*": description: Primux Trading, S.L. "^probox2,.*": diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst index 2734b8a34541..2ea6ffc9b22b 100644 --- a/Documentation/gpu/todo.rst +++ b/Documentation/gpu/todo.rst @@ -469,30 +469,35 @@ Contact: Thomas Zimmermann <tzimmermann@suse.de> Level: Starter -Clean up checks for already prepared/enabled in panels ------------------------------------------------------- - -In a whole pile of panel drivers, we have code to make the -prepare/unprepare/enable/disable callbacks behave as no-ops if they've already -been called. To get some idea of the duplicated code, try:: - - git grep 'if.*>prepared' -- drivers/gpu/drm/panel - git grep 'if.*>enabled' -- drivers/gpu/drm/panel - -In the patch ("drm/panel: Check for already prepared/enabled in drm_panel") -we've moved this check to the core. Now we can most definitely remove the -check from the individual panels and save a pile of code. - -In adition to removing the check from the individual panels, it is believed -that even the core shouldn't need this check and that should be considered -an error if other code ever relies on this check. The check in the core -currently prints a warning whenever something is relying on this check with -dev_warn(). After a little while, we likely want to promote this to a -WARN(1) to help encourage folks not to rely on this behavior. +Remove disable/unprepare in remove/shutdown in panel-simple and panel-edp +------------------------------------------------------------------------- + +As of commit d2aacaf07395 ("drm/panel: Check for already prepared/enabled in +drm_panel"), we have a check in the drm_panel core to make sure nobody +double-calls prepare/enable/disable/unprepare. Eventually that should probably +be turned into a WARN_ON() or somehow made louder, but right now we actually +expect it to trigger and so we don't want it to be too loud. + +Specifically, that warning will trigger for panel-edp and panel-simple at +shutdown time because those panels hardcode a call to drm_panel_disable() +and drm_panel_unprepare() at shutdown and remove time that they call regardless +of panel state. On systems with a properly coded DRM modeset driver that +calls drm_atomic_helper_shutdown() this is pretty much guaranteed to cause +the warning to fire. + +Unfortunately we can't safely remove the calls in panel-edp and panel-simple +until we're sure that all DRM modeset drivers that are used with those panels +properly call drm_atomic_helper_shutdown(). This TODO item is to validate +that all DRM modeset drivers used with panel-edp and panel-simple properly +call drm_atomic_helper_shutdown() and then remove the calls to +disable/unprepare from those panels. Alternatively, this TODO item could be +removed by convincing stakeholders that those calls are fine and downgrading +the error message in drm_panel_disable() / drm_panel_unprepare() to a +debug-level message. Contact: Douglas Anderson <dianders@chromium.org> -Level: Starter/Intermediate +Level: Intermediate Transition away from using mipi_dsi_*_write_seq() ------------------------------------------------- diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index 9703429de6b9..a9df94291622 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -137,6 +137,19 @@ config DRM_PANIC_DEBUG This is unsafe and should not be enabled on a production build. If in doubt, say "N". +config DRM_PANIC_SCREEN + string "Panic screen formater" + default "user" + depends on DRM_PANIC + help + This option enable to choose what will be displayed when a kernel + panic occurs. You can choose between "user", a short message telling + the user to reboot the system, or "kmsg" which will display the last + lines of kmsg. + This can also be overridden by drm.panic_screen=xxxx kernel parameter + or by writing to /sys/module/drm/parameters/panic_screen sysfs entry + Default is "user" + config DRM_DEBUG_DP_MST_TOPOLOGY_REFS bool "Enable refcount backtrace history in the DP MST helpers" depends on STACKTRACE_SUPPORT diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/ite-it6505.c index cd1b5057ddfb..1e1c06fdf206 100644 --- a/drivers/gpu/drm/bridge/ite-it6505.c +++ b/drivers/gpu/drm/bridge/ite-it6505.c @@ -2615,7 +2615,7 @@ static int it6505_poweron(struct it6505 *it6505) gpiod_set_value_cansleep(pdata->gpiod_reset, 0); usleep_range(1000, 2000); gpiod_set_value_cansleep(pdata->gpiod_reset, 1); - usleep_range(10000, 20000); + usleep_range(25000, 35000); } it6505->powered = true; diff --git a/drivers/gpu/drm/bridge/lontium-lt9611.c b/drivers/gpu/drm/bridge/lontium-lt9611.c index b99fe87ec738..73983f9b50cb 100644 --- a/drivers/gpu/drm/bridge/lontium-lt9611.c +++ b/drivers/gpu/drm/bridge/lontium-lt9611.c @@ -1195,4 +1195,5 @@ static struct i2c_driver lt9611_driver = { }; module_i2c_driver(lt9611_driver); +MODULE_DESCRIPTION("Lontium LT9611 DSI/HDMI bridge driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c index f864c033ba81..4e802b54a1cb 100644 --- a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c +++ b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c @@ -1016,6 +1016,7 @@ static struct i2c_driver lt9611uxc_driver = { module_i2c_driver(lt9611uxc_driver); MODULE_AUTHOR("Dmitry Baryshkov <dmitry.baryshkov@linaro.org>"); +MODULE_DESCRIPTION("Lontium LT9611UXC DSI/HDMI bridge driver"); MODULE_LICENSE("GPL v2"); MODULE_FIRMWARE(FW_FILE); diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge/samsung-dsim.c index 95fedc68b0ae..e7e53a9e42af 100644 --- a/drivers/gpu/drm/bridge/samsung-dsim.c +++ b/drivers/gpu/drm/bridge/samsung-dsim.c @@ -574,8 +574,8 @@ static unsigned long samsung_dsim_pll_find_pms(struct samsung_dsim *dsi, u16 _m, best_m; u8 _s, best_s; - p_min = DIV_ROUND_UP(fin, (12 * MHZ)); - p_max = fin / (6 * MHZ); + p_min = DIV_ROUND_UP(fin, (driver_data->pll_fin_max * MHZ)); + p_max = fin / (driver_data->pll_fin_min * MHZ); for (_p = p_min; _p <= p_max; ++_p) { for (_s = 0; _s <= 5; ++_s) { @@ -1606,6 +1606,27 @@ static int samsung_dsim_atomic_check(struct drm_bridge *bridge, adjusted_mode->flags |= (DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC); } + /* + * When using video sync pulses, the HFP, HBP, and HSA are divided between + * the available lanes if there is more than one lane. For certain + * timings and lane configurations, the HFP may not be evenly divisible. + * If the HFP is rounded down, it ends up being too small which can cause + * some monitors to not sync properly. In these instances, adjust htotal + * and hsync to round the HFP up, and recalculate the htotal. Through trial + * and error, it appears that the HBP and HSA do not appearto need the same + * correction that HFP does. + */ + if (dsi->lanes > 1) { + int hfp = adjusted_mode->hsync_start - adjusted_mode->hdisplay; + int remainder = hfp % dsi->lanes; + + if (remainder) { + adjusted_mode->hsync_start += remainder; + adjusted_mode->hsync_end += remainder; + adjusted_mode->htotal += remainder; + } + } + return 0; } diff --git a/drivers/gpu/drm/bridge/sii9234.c b/drivers/gpu/drm/bridge/sii9234.c index d8373d918324..0c74cdc07032 100644 --- a/drivers/gpu/drm/bridge/sii9234.c +++ b/drivers/gpu/drm/bridge/sii9234.c @@ -961,4 +961,5 @@ static struct i2c_driver sii9234_driver = { }; module_i2c_driver(sii9234_driver); +MODULE_DESCRIPTION("Silicon Image SII9234 HDMI/MHL bridge driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/bridge/sil-sii8620.c b/drivers/gpu/drm/bridge/sil-sii8620.c index 599164e3877d..6bb755e9f0a5 100644 --- a/drivers/gpu/drm/bridge/sil-sii8620.c +++ b/drivers/gpu/drm/bridge/sil-sii8620.c @@ -2384,4 +2384,5 @@ static struct i2c_driver sii8620_driver = { }; module_i2c_driver(sii8620_driver); +MODULE_DESCRIPTION("Silicon Image SiI8620 HDMI/MHL bridge driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c index fe2b93546eae..87c7346d037e 100644 --- a/drivers/gpu/drm/bridge/tc358767.c +++ b/drivers/gpu/drm/bridge/tc358767.c @@ -1646,7 +1646,7 @@ tc_edp_mode_valid(struct drm_bridge *bridge, u32 req, avail; u32 bits_per_pixel = 24; - /* DPI interface clock limitation: upto 154 MHz */ + /* DPI->(e)DP interface clock limitation: up to 154 MHz */ if (mode->clock > 154000) return MODE_CLOCK_HIGH; @@ -2152,7 +2152,7 @@ static irqreturn_t tc_irq_handler(int irq, void *arg) dev_err(tc->dev, "syserr %x\n", stat); } - if (tc->hpd_pin >= 0 && tc->bridge.dev) { + if (tc->hpd_pin >= 0 && tc->bridge.dev && tc->aux.drm_dev) { /* * H is triggered when the GPIO goes high. * diff --git a/drivers/gpu/drm/ci/build-igt.sh b/drivers/gpu/drm/ci/build-igt.sh index 500fa4f5c30a..eddb5f782a5e 100644 --- a/drivers/gpu/drm/ci/build-igt.sh +++ b/drivers/gpu/drm/ci/build-igt.sh @@ -3,6 +3,30 @@ set -ex +function generate_testlist { + set +x + while read -r line; do + if [ "$line" = "TESTLIST" ] || [ "$line" = "END TESTLIST" ]; then + continue + fi + + tests=$(echo "$line" | tr ' ' '\n') + + for test in $tests; do + output=$(/igt/libexec/igt-gpu-tools/"$test" --list-subtests || true) + + if [ -z "$output" ]; then + echo "$test" + else + echo "$output" | while read -r subtest; do + echo "$test@$subtest" + done + fi + done + done < /igt/libexec/igt-gpu-tools/test-list.txt > /igt/libexec/igt-gpu-tools/ci-testlist.txt + set -x +} + git clone https://gitlab.freedesktop.org/drm/igt-gpu-tools.git --single-branch --no-checkout cd igt-gpu-tools git checkout $IGT_VERSION @@ -21,15 +45,30 @@ MESON_OPTIONS="-Doverlay=disabled \ -Dlibunwind=enabled \ -Dprefix=/igt" +if [[ "$KERNEL_ARCH" = "arm64" ]] || [[ "$KERNEL_ARCH" = "arm" ]]; then + MESON_OPTIONS="$MESON_OPTIONS -Dxe_driver=disabled" +fi + mkdir -p /igt meson build $MESON_OPTIONS $EXTRA_MESON_ARGS ninja -C build -j${FDO_CI_CONCURRENT:-4} || ninja -C build -j 1 ninja -C build install +if [[ "$KERNEL_ARCH" = "arm64" ]]; then + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/igt/lib/aarch64-linux-gnu +elif [[ "$KERNEL_ARCH" = "arm" ]]; then + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/igt/lib +else + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/igt/lib64 +fi + +echo "Generating ci-testlist.txt" +generate_testlist + mkdir -p artifacts/ tar -cf artifacts/igt.tar /igt # Pass needed files to the test stage S3_ARTIFACT_NAME="igt.tar.gz" gzip -c artifacts/igt.tar > ${S3_ARTIFACT_NAME} -ci-fairy s3cp --token-file "${CI_JOB_JWT_FILE}" ${S3_ARTIFACT_NAME} https://${PIPELINE_ARTIFACTS_BASE}/${KERNEL_ARCH}/${S3_ARTIFACT_NAME} +ci-fairy s3cp --token-file "${S3_JWT_FILE}" ${S3_ARTIFACT_NAME} https://${PIPELINE_ARTIFACTS_BASE}/${KERNEL_ARCH}/${S3_ARTIFACT_NAME} diff --git a/drivers/gpu/drm/ci/build.sh b/drivers/gpu/drm/ci/build.sh index 28a495c0c39c..97e920b9d257 100644 --- a/drivers/gpu/drm/ci/build.sh +++ b/drivers/gpu/drm/ci/build.sh @@ -131,6 +131,7 @@ fi # Pass needed files to the test stage mkdir -p install cp -rfv .gitlab-ci/* install/. +cp -rfv ci/* install/. cp -rfv install/common install/ci-common cp -rfv drivers/gpu/drm/ci/* install/. @@ -144,14 +145,15 @@ if [[ "$UPLOAD_TO_MINIO" = "1" ]]; then FILES_TO_UPLOAD="$FILES_TO_UPLOAD $(basename -a $DEVICE_TREES)" fi + ls -l "${S3_JWT_FILE}" for f in $FILES_TO_UPLOAD; do - ci-fairy s3cp --token-file "${CI_JOB_JWT_FILE}" /lava-files/$f \ + ci-fairy s3cp --token-file "${S3_JWT_FILE}" /lava-files/$f \ https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/$f done S3_ARTIFACT_NAME="kernel-files.tar.zst" tar --zstd -cf $S3_ARTIFACT_NAME install - ci-fairy s3cp --token-file "${CI_JOB_JWT_FILE}" ${S3_ARTIFACT_NAME} https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/${S3_ARTIFACT_NAME} + ci-fairy s3cp --token-file "${S3_JWT_FILE}" ${S3_ARTIFACT_NAME} https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/${S3_ARTIFACT_NAME} echo "Download vmlinux.xz from https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/vmlinux.xz" fi diff --git a/drivers/gpu/drm/ci/container.yml b/drivers/gpu/drm/ci/container.yml index 9764e7921a4f..d6edf3635b23 100644 --- a/drivers/gpu/drm/ci/container.yml +++ b/drivers/gpu/drm/ci/container.yml @@ -36,15 +36,15 @@ debian/android_build: rules: - when: never -debian/x86_64_test-android: +.debian/x86_64_test-android: rules: - when: never -windows_build_vs2019: +windows_build_msvc: rules: - when: never -windows_test_vs2019: +windows_test_msvc: rules: - when: never @@ -56,10 +56,6 @@ rustfmt: rules: - when: never -windows_vs2019: - rules: - - when: never - -clang-format: +windows_msvc: rules: - when: never
\ No newline at end of file diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml index 084e3ff8e3f4..1b29c3b6406b 100644 --- a/drivers/gpu/drm/ci/gitlab-ci.yml +++ b/drivers/gpu/drm/ci/gitlab-ci.yml @@ -1,11 +1,11 @@ variables: DRM_CI_PROJECT_PATH: &drm-ci-project-path mesa/mesa - DRM_CI_COMMIT_SHA: &drm-ci-commit-sha 9d162de9a05155e1c4041857a5848842749164cf + DRM_CI_COMMIT_SHA: &drm-ci-commit-sha e2b9c5a9e3e4f9b532067af8022eaef8d6fc6c00 UPSTREAM_REPO: git://anongit.freedesktop.org/drm/drm TARGET_BRANCH: drm-next - IGT_VERSION: d2af13d9f5be5ce23d996e4afd3e45990f5ab977 + IGT_VERSION: 0df7b9b97f9da0e364f5ee30fe331004b8c86b56 DEQP_RUNNER_GIT_URL: https://gitlab.freedesktop.org/anholt/deqp-runner.git DEQP_RUNNER_GIT_TAG: v0.15.0 @@ -19,33 +19,47 @@ variables: bash download-git-cache.sh rm download-git-cache.sh set +o xtrace + S3_JWT_FILE: /s3_jwt S3_HOST: s3.freedesktop.org + # This bucket is used to fetch the kernel image + S3_KERNEL_BUCKET: mesa-rootfs + # Bucket for git cache + S3_GITCACHE_BUCKET: git-cache + # Bucket for the pipeline artifacts pushed to S3 + S3_ARTIFACTS_BUCKET: artifacts # per-pipeline artifact storage on MinIO - PIPELINE_ARTIFACTS_BASE: ${S3_HOST}/artifacts/${CI_PROJECT_PATH}/${CI_PIPELINE_ID} + PIPELINE_ARTIFACTS_BASE: ${S3_HOST}/${S3_ARTIFACTS_BUCKET}/${CI_PROJECT_PATH}/${CI_PIPELINE_ID} # per-job artifact storage on MinIO JOB_ARTIFACTS_BASE: ${PIPELINE_ARTIFACTS_BASE}/${CI_JOB_ID} # default kernel for rootfs before injecting the current kernel tree KERNEL_REPO: "gfx-ci/linux" - KERNEL_TAG: "v6.6.4-for-mesa-ci-e4f4c500f7fb" - KERNEL_IMAGE_BASE: https://${S3_HOST}/mesa-lava/${KERNEL_REPO}/${KERNEL_TAG} + KERNEL_TAG: "v6.6.21-mesa-f8ea" + KERNEL_IMAGE_BASE: https://${S3_HOST}/${S3_KERNEL_BUCKET}/${KERNEL_REPO}/${KERNEL_TAG} + PKG_REPO_REV: "3cc12a2a" LAVA_TAGS: subset-1-gfx LAVA_JOB_PRIORITY: 30 + ARTIFACTS_BASE_URL: https://${CI_PROJECT_ROOT_NAMESPACE}.${CI_PAGES_DOMAIN}/-/${CI_PROJECT_NAME}/-/jobs/${CI_JOB_ID}/artifacts + # Python scripts for structured logger + PYTHONPATH: "$PYTHONPATH:$CI_PROJECT_DIR/install" default: + id_tokens: + S3_JWT: + aud: https://s3.freedesktop.org before_script: - export SCRIPTS_DIR=$(mktemp -d) - curl -L -s --retry 4 -f --retry-all-errors --retry-delay 60 -O --output-dir "${SCRIPTS_DIR}" "${DRM_CI_PROJECT_URL}/-/raw/${DRM_CI_COMMIT_SHA}/.gitlab-ci/setup-test-env.sh" - source ${SCRIPTS_DIR}/setup-test-env.sh - 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 -n "${S3_JWT}" > "${S3_JWT_FILE}" + - unset CI_JOB_JWT S3_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 mesa from $DRM_CI_PROJECT_URL/-/archive/$DRM_CI_COMMIT_SHA/mesa-$DRM_CI_COMMIT_SHA.tar.gz" - cd $CI_PROJECT_DIR - curl --output - $DRM_CI_PROJECT_URL/-/archive/$DRM_CI_COMMIT_SHA/mesa-$DRM_CI_COMMIT_SHA.tar.gz | tar -xz - mv mesa-$DRM_CI_COMMIT_SHA/.gitlab-ci* . + - mv mesa-$DRM_CI_COMMIT_SHA/bin/ci . - rm -rf mesa-$DRM_CI_COMMIT_SHA/ - echo -e "\e[0Ksection_end:$(date +%s):drm_ci_download_section\r\e[0K" @@ -53,9 +67,9 @@ default: - > set +x - test -e "${CI_JOB_JWT_FILE}" && - export CI_JOB_JWT="$(<${CI_JOB_JWT_FILE})" && - rm "${CI_JOB_JWT_FILE}" + test -e "${S3_JWT_FILE}" && + export S3_JWT="$(<${S3_JWT_FILE})" && + rm "${S3_JWT_FILE}" include: - project: 'freedesktop/ci-templates' @@ -87,6 +101,7 @@ include: - '/src/intel/ci/gitlab-ci-inc.yml' - '/src/freedreno/ci/gitlab-ci-inc.yml' - '/src/amd/ci/gitlab-ci-inc.yml' + - '/src/virtio/ci/gitlab-ci-inc.yml' - drivers/gpu/drm/ci/image-tags.yml - drivers/gpu/drm/ci/container.yml - drivers/gpu/drm/ci/static-checks.yml @@ -98,6 +113,7 @@ include: stages: - sanity - container + - code-validation - git-archive - build - amdgpu @@ -107,7 +123,6 @@ stages: - msm - rockchip - virtio-gpu - - lint # YAML anchors for rule conditions # -------------------------------- @@ -218,14 +233,15 @@ make git archive: script: # Remove drm-ci files we just added - rm -rf .gitlab-ci.* + - rm -rf ci # Compactify the .git directory - git gc --aggressive # compress the current folder - tar -cvzf ../$CI_PROJECT_NAME.tar.gz . - # login with the JWT token file - - ci-fairy s3cp --token-file "${CI_JOB_JWT_FILE}" ../$CI_PROJECT_NAME.tar.gz https://$S3_HOST/git-cache/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_PROJECT_NAME.tar.gz + # Use id_tokens for JWT auth + - ci-fairy s3cp --token-file "${S3_JWT_FILE}" ../$CI_PROJECT_NAME.tar.gz https://$S3_HOST/${S3_GITCACHE_BUCKET}/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_PROJECT_NAME.tar.gz # Sanity checks of MR settings and commit logs @@ -262,4 +278,4 @@ sanity: # Jobs that need to pass before spending hardware resources on further testing .required-for-hardware-jobs: - needs: []
\ No newline at end of file + needs: [] diff --git a/drivers/gpu/drm/ci/igt_runner.sh b/drivers/gpu/drm/ci/igt_runner.sh index f1a08b9b146f..d49ad434b580 100755 --- a/drivers/gpu/drm/ci/igt_runner.sh +++ b/drivers/gpu/drm/ci/igt_runner.sh @@ -59,25 +59,26 @@ fi curl -L --retry 4 -f --retry-all-errors --retry-delay 60 -s ${FDO_HTTP_CACHE_URI:-}$PIPELINE_ARTIFACTS_BASE/$ARCH/igt.tar.gz | tar --zstd -v -x -C / +TESTLIST="/igt/libexec/igt-gpu-tools/ci-testlist.txt" # If the job is parallel at the gitab job level, take the corresponding fraction # of the caselist. if [ -n "$CI_NODE_INDEX" ]; then - sed -ni $CI_NODE_INDEX~$CI_NODE_TOTAL"p" /install/testlist.txt + sed -ni $CI_NODE_INDEX~$CI_NODE_TOTAL"p" $TESTLIST fi # core_getversion checks if the driver is loaded and probed correctly # so run it in all shards -if ! grep -q "core_getversion" /install/testlist.txt; then +if ! grep -q "core_getversion" $TESTLIST; then # Add the line to the file - echo "core_getversion" >> /install/testlist.txt + echo "core_getversion" >> $TESTLIST fi set +e igt-runner \ run \ --igt-folder /igt/libexec/igt-gpu-tools \ - --caselist /install/testlist.txt \ + --caselist $TESTLIST \ --output /results \ $IGT_SKIPS \ $IGT_FLAKES \ diff --git a/drivers/gpu/drm/ci/image-tags.yml b/drivers/gpu/drm/ci/image-tags.yml index 7ab4f2514da8..60323ebc7304 100644 --- a/drivers/gpu/drm/ci/image-tags.yml +++ b/drivers/gpu/drm/ci/image-tags.yml @@ -1,5 +1,5 @@ variables: - CONTAINER_TAG: "2023-10-11-mesa-uprev" + CONTAINER_TAG: "2024-05-09-mesa-uprev" DEBIAN_X86_64_BUILD_BASE_IMAGE: "debian/x86_64_build-base" DEBIAN_BASE_TAG: "${CONTAINER_TAG}" diff --git a/drivers/gpu/drm/ci/lava-submit.sh b/drivers/gpu/drm/ci/lava-submit.sh index 3d39b0c916a8..0707fa706a48 100755 --- a/drivers/gpu/drm/ci/lava-submit.sh +++ b/drivers/gpu/drm/ci/lava-submit.sh @@ -27,7 +27,7 @@ KERNEL_IMAGE_BASE="https://${BASE_SYSTEM_HOST_PATH}" \ section_end variables tar zcf job-rootfs-overlay.tar.gz -C results/job-rootfs-overlay/ . -ci-fairy s3cp --token-file "${CI_JOB_JWT_FILE}" job-rootfs-overlay.tar.gz "https://${JOB_ROOTFS_OVERLAY_PATH}" +ci-fairy s3cp --token-file "${S3_JWT_FILE}" job-rootfs-overlay.tar.gz "https://${JOB_ROOTFS_OVERLAY_PATH}" touch results/lava.log tail -f results/lava.log & @@ -45,7 +45,7 @@ PYTHONPATH=artifacts/ artifacts/lava/lava_job_submitter.py \ --ci-project-dir "${CI_PROJECT_DIR}" \ --device-type "${DEVICE_TYPE}" \ --dtb-filename "${DTB}" \ - --jwt-file "${CI_JOB_JWT_FILE}" \ + --jwt-file "${S3_JWT_FILE}" \ --kernel-image-name "${KERNEL_IMAGE_NAME}" \ --kernel-image-type "${KERNEL_IMAGE_TYPE}" \ --boot-method "${BOOT_METHOD}" \ diff --git a/drivers/gpu/drm/ci/test.yml b/drivers/gpu/drm/ci/test.yml index 8bc63912fddb..322cce714657 100644 --- a/drivers/gpu/drm/ci/test.yml +++ b/drivers/gpu/drm/ci/test.yml @@ -24,6 +24,7 @@ variables: HWCI_TEST_SCRIPT: "/install/igt_runner.sh" DEBIAN_ARCH: "armhf" + FARM: collabora dependencies: - testing:arm32 needs: @@ -39,6 +40,7 @@ variables: HWCI_TEST_SCRIPT: "/install/igt_runner.sh" DEBIAN_ARCH: "arm64" + FARM: collabora dependencies: - testing:arm64 needs: @@ -54,6 +56,7 @@ variables: HWCI_TEST_SCRIPT: "/install/igt_runner.sh" DEBIAN_ARCH: "amd64" + FARM: collabora dependencies: - testing:x86_64 needs: @@ -74,6 +77,7 @@ S3_ARTIFACT_NAME: "arm64/kernel-files" BM_KERNEL: https://${PIPELINE_ARTIFACTS_BASE}/arm64/Image.gz BM_CMDLINE: "ip=dhcp console=ttyMSM0,115200n8 $BM_KERNEL_EXTRA_ARGS root=/dev/nfs rw nfsrootdebug nfsroot=,tcp,nfsvers=4.2 init=/init $BM_KERNELARGS" + FARM: google needs: - debian/arm64_test - job: testing:arm64 @@ -116,8 +120,9 @@ msm:apq8016: - .baremetal-igt-arm64 stage: msm variables: + DEVICE_TYPE: apq8016-sbc-usb-host DRIVER_NAME: msm - BM_DTB: https://${PIPELINE_ARTIFACTS_BASE}/arm64/apq8016-sbc-usb-host.dtb + BM_DTB: https://${PIPELINE_ARTIFACTS_BASE}/arm64/${DEVICE_TYPE}.dtb GPU_VERSION: apq8016 # disabling unused clocks congests with the MDSS runtime PM trying to # disable those clocks and causes boot to fail. @@ -132,9 +137,10 @@ msm:apq8096: - .baremetal-igt-arm64 stage: msm variables: + DEVICE_TYPE: apq8096-db820c DRIVER_NAME: msm BM_KERNEL_EXTRA_ARGS: maxcpus=2 - BM_DTB: https://${PIPELINE_ARTIFACTS_BASE}/arm64/apq8096-db820c.dtb + BM_DTB: https://${PIPELINE_ARTIFACTS_BASE}/arm64/${DEVICE_TYPE}.dtb GPU_VERSION: apq8096 RUNNER_TAG: google-freedreno-db820c script: @@ -146,6 +152,7 @@ msm:sdm845: stage: msm parallel: 6 variables: + DEVICE_TYPE: sdm845-cheza-r3 DRIVER_NAME: msm BM_KERNEL: https://${PIPELINE_ARTIFACTS_BASE}/arm64/cheza-kernel GPU_VERSION: sdm845 @@ -184,6 +191,7 @@ rockchip:rk3399: extends: - .lava-igt:x86_64 stage: i915 + timeout: "1h30m" variables: DRIVER_NAME: i915 DTB: "" @@ -194,7 +202,6 @@ i915:apl: extends: - .i915 parallel: 3 - timeout: "1h30m" variables: DEVICE_TYPE: asus-C523NA-A20057-coral GPU_VERSION: apl @@ -204,7 +211,6 @@ i915:glk: extends: - .i915 parallel: 2 - timeout: "1h30m" variables: DEVICE_TYPE: hp-x360-12b-ca0010nr-n4020-octopus GPU_VERSION: glk @@ -214,7 +220,6 @@ i915:amly: extends: - .i915 parallel: 2 - timeout: "1h30m" variables: DEVICE_TYPE: asus-C433TA-AJ0005-rammus GPU_VERSION: amly @@ -233,7 +238,6 @@ i915:whl: extends: - .i915 parallel: 2 - timeout: "1h30m" variables: DEVICE_TYPE: dell-latitude-5400-8665U-sarien GPU_VERSION: whl @@ -243,7 +247,6 @@ i915:cml: extends: - .i915 parallel: 2 - timeout: "1h30m" variables: DEVICE_TYPE: asus-C436FA-Flip-hatch GPU_VERSION: cml diff --git a/drivers/gpu/drm/ci/testlist.txt b/drivers/gpu/drm/ci/testlist.txt deleted file mode 100644 index 3377f002f8c5..000000000000 --- a/drivers/gpu/drm/ci/testlist.txt +++ /dev/null @@ -1,2761 +0,0 @@ -core_auth@getclient-simple -core_auth@getclient-master-drop -core_auth@basic-auth -core_auth@many-magics -core_getclient -core_getstats -core_getversion -core_setmaster_vs_auth -drm_read@invalid-buffer -drm_read@fault-buffer -drm_read@empty-block -drm_read@empty-nonblock -drm_read@short-buffer-block -drm_read@short-buffer-nonblock -drm_read@short-buffer-wakeup -gem_eio@throttle -gem_eio@create -gem_eio@create-ext -gem_eio@context-create -gem_eio@execbuf -gem_eio@banned -gem_eio@suspend -gem_eio@hibernate -gem_eio@in-flight-external -gem_eio@in-flight-suspend -gem_eio@reset-stress -gem_eio@unwedge-stress -gem_eio@wait-immediate -gem_eio@wait-wedge-immediate -gem_eio@in-flight-immediate -gem_eio@in-flight-contexts-immediate -gem_eio@in-flight-internal-immediate -gem_eio@wait-1us -gem_eio@wait-wedge-1us -gem_eio@in-flight-1us -gem_eio@in-flight-contexts-1us -gem_eio@in-flight-internal-1us -gem_eio@wait-10ms -gem_eio@wait-wedge-10ms -gem_eio@in-flight-10ms -gem_eio@in-flight-contexts-10ms -gem_eio@in-flight-internal-10ms -gem_eio@kms -kms_3d -kms_addfb_basic@unused-handle -kms_addfb_basic@unused-pitches -kms_addfb_basic@unused-offsets -kms_addfb_basic@unused-modifier -kms_addfb_basic@clobberred-modifier -kms_addfb_basic@invalid-smem-bo-on-discrete -kms_addfb_basic@legacy-format -kms_addfb_basic@no-handle -kms_addfb_basic@basic -kms_addfb_basic@bad-pitch-0 -kms_addfb_basic@bad-pitch-32 -kms_addfb_basic@bad-pitch-63 -kms_addfb_basic@bad-pitch-128 -kms_addfb_basic@bad-pitch-256 -kms_addfb_basic@bad-pitch-1024 -kms_addfb_basic@bad-pitch-999 -kms_addfb_basic@bad-pitch-65536 -kms_addfb_basic@invalid-get-prop-any -kms_addfb_basic@invalid-get-prop -kms_addfb_basic@invalid-set-prop-any -kms_addfb_basic@invalid-set-prop -kms_addfb_basic@master-rmfb -kms_addfb_basic@addfb25-modifier-no-flag -kms_addfb_basic@addfb25-bad-modifier -kms_addfb_basic@addfb25-x-tiled-mismatch-legacy -kms_addfb_basic@addfb25-x-tiled-legacy -kms_addfb_basic@addfb25-framebuffer-vs-set-tiling -kms_addfb_basic@basic-x-tiled-legacy -kms_addfb_basic@framebuffer-vs-set-tiling -kms_addfb_basic@tile-pitch-mismatch -kms_addfb_basic@basic-y-tiled-legacy -kms_addfb_basic@size-max -kms_addfb_basic@too-wide -kms_addfb_basic@too-high -kms_addfb_basic@bo-too-small -kms_addfb_basic@small-bo -kms_addfb_basic@bo-too-small-due-to-tiling -kms_addfb_basic@addfb25-y-tiled-legacy -kms_addfb_basic@addfb25-yf-tiled-legacy -kms_addfb_basic@addfb25-y-tiled-small-legacy -kms_addfb_basic@addfb25-4-tiled -kms_async_flips@async-flip-with-page-flip-events -kms_async_flips@alternate-sync-async-flip -kms_async_flips@test-time-stamp -kms_async_flips@test-cursor -kms_async_flips@invalid-async-flip -kms_async_flips@crc -kms_atomic@plane-overlay-legacy -kms_atomic@plane-primary-legacy -kms_atomic@plane-primary-overlay-mutable-zpos -kms_atomic@plane-immutable-zpos -kms_atomic@test-only -kms_atomic@plane-cursor-legacy -kms_atomic@plane-invalid-params -kms_atomic@plane-invalid-params-fence -kms_atomic@crtc-invalid-params -kms_atomic@crtc-invalid-params-fence -kms_atomic@atomic-invalid-params -kms_atomic@atomic-plane-damage -kms_atomic_interruptible@legacy-setmode -kms_atomic_interruptible@atomic-setmode -kms_atomic_interruptible@legacy-dpms -kms_atomic_interruptible@legacy-pageflip -kms_atomic_interruptible@legacy-cursor -kms_atomic_interruptible@universal-setplane-primary -kms_atomic_interruptible@universal-setplane-cursor -kms_atomic_transition@plane-primary-toggle-with-vblank-wait -kms_atomic_transition@plane-all-transition -kms_atomic_transition@plane-all-transition-fencing -kms_atomic_transition@plane-all-transition-nonblocking -kms_atomic_transition@plane-all-transition-nonblocking-fencing -kms_atomic_transition@plane-use-after-nonblocking-unbind -kms_atomic_transition@plane-use-after-nonblocking-unbind-fencing -kms_atomic_transition@plane-all-modeset-transition -kms_atomic_transition@plane-all-modeset-transition-fencing -kms_atomic_transition@plane-all-modeset-transition-internal-panels -kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels -kms_atomic_transition@plane-toggle-modeset-transition -kms_atomic_transition@modeset-transition -kms_atomic_transition@modeset-transition-fencing -kms_atomic_transition@modeset-transition-nonblocking -kms_atomic_transition@modeset-transition-nonblocking-fencing -kms_big_fb@x-tiled-addfb-size-overflow -kms_big_fb@y-tiled-addfb-size-overflow -kms_big_fb@yf-tiled-addfb-size-overflow -kms_big_fb@4-tiled-addfb-size-overflow -kms_big_fb@x-tiled-addfb-size-offset-overflow -kms_big_fb@y-tiled-addfb-size-offset-overflow -kms_big_fb@yf-tiled-addfb-size-offset-overflow -kms_big_fb@4-tiled-addfb-size-offset-overflow -kms_big_fb@linear-addfb -kms_big_fb@x-tiled-addfb -kms_big_fb@y-tiled-addfb -kms_big_fb@yf-tiled-addfb -kms_big_fb@4-tiled-addfb -kms_big_fb@linear-8bpp-rotate-0 -kms_big_fb@linear-8bpp-rotate-90 -kms_big_fb@linear-8bpp-rotate-180 -kms_big_fb@linear-8bpp-rotate-270 -kms_big_fb@linear-16bpp-rotate-0 -kms_big_fb@linear-16bpp-rotate-90 -kms_big_fb@linear-16bpp-rotate-180 -kms_big_fb@linear-16bpp-rotate-270 -kms_big_fb@linear-32bpp-rotate-0 -kms_big_fb@linear-32bpp-rotate-90 -kms_big_fb@linear-32bpp-rotate-180 -kms_big_fb@linear-32bpp-rotate-270 -kms_big_fb@linear-64bpp-rotate-0 -kms_big_fb@linear-64bpp-rotate-90 -kms_big_fb@linear-64bpp-rotate-180 -kms_big_fb@linear-64bpp-rotate-270 -kms_big_fb@x-tiled-8bpp-rotate-0 -kms_big_fb@x-tiled-8bpp-rotate-90 -kms_big_fb@x-tiled-8bpp-rotate-180 -kms_big_fb@x-tiled-8bpp-rotate-270 -kms_big_fb@x-tiled-16bpp-rotate-0 -kms_big_fb@x-tiled-16bpp-rotate-90 -kms_big_fb@x-tiled-16bpp-rotate-180 -kms_big_fb@x-tiled-16bpp-rotate-270 -kms_big_fb@x-tiled-32bpp-rotate-0 -kms_big_fb@x-tiled-32bpp-rotate-90 -kms_big_fb@x-tiled-32bpp-rotate-180 -kms_big_fb@x-tiled-32bpp-rotate-270 -kms_big_fb@x-tiled-64bpp-rotate-0 -kms_big_fb@x-tiled-64bpp-rotate-90 -kms_big_fb@x-tiled-64bpp-rotate-180 -kms_big_fb@x-tiled-64bpp-rotate-270 -kms_big_fb@y-tiled-8bpp-rotate-0 -kms_big_fb@y-tiled-8bpp-rotate-90 -kms_big_fb@y-tiled-8bpp-rotate-180 -kms_big_fb@y-tiled-8bpp-rotate-270 -kms_big_fb@y-tiled-16bpp-rotate-0 -kms_big_fb@y-tiled-16bpp-rotate-90 -kms_big_fb@y-tiled-16bpp-rotate-180 -kms_big_fb@y-tiled-16bpp-rotate-270 -kms_big_fb@y-tiled-32bpp-rotate-0 -kms_big_fb@y-tiled-32bpp-rotate-90 -kms_big_fb@y-tiled-32bpp-rotate-180 -kms_big_fb@y-tiled-32bpp-rotate-270 -kms_big_fb@y-tiled-64bpp-rotate-0 -kms_big_fb@y-tiled-64bpp-rotate-90 -kms_big_fb@y-tiled-64bpp-rotate-180 -kms_big_fb@y-tiled-64bpp-rotate-270 -kms_big_fb@yf-tiled-8bpp-rotate-0 -kms_big_fb@yf-tiled-8bpp-rotate-90 -kms_big_fb@yf-tiled-8bpp-rotate-180 -kms_big_fb@yf-tiled-8bpp-rotate-270 -kms_big_fb@yf-tiled-16bpp-rotate-0 -kms_big_fb@yf-tiled-16bpp-rotate-90 -kms_big_fb@yf-tiled-16bpp-rotate-180 -kms_big_fb@yf-tiled-16bpp-rotate-270 -kms_big_fb@yf-tiled-32bpp-rotate-0 -kms_big_fb@yf-tiled-32bpp-rotate-90 -kms_big_fb@yf-tiled-32bpp-rotate-180 -kms_big_fb@yf-tiled-32bpp-rotate-270 -kms_big_fb@yf-tiled-64bpp-rotate-0 -kms_big_fb@yf-tiled-64bpp-rotate-90 -kms_big_fb@yf-tiled-64bpp-rotate-180 -kms_big_fb@yf-tiled-64bpp-rotate-270 -kms_big_fb@4-tiled-8bpp-rotate-0 -kms_big_fb@4-tiled-8bpp-rotate-90 -kms_big_fb@4-tiled-8bpp-rotate-180 -kms_big_fb@4-tiled-8bpp-rotate-270 -kms_big_fb@4-tiled-16bpp-rotate-0 -kms_big_fb@4-tiled-16bpp-rotate-90 -kms_big_fb@4-tiled-16bpp-rotate-180 -kms_big_fb@4-tiled-16bpp-rotate-270 -kms_big_fb@4-tiled-32bpp-rotate-0 -kms_big_fb@4-tiled-32bpp-rotate-90 -kms_big_fb@4-tiled-32bpp-rotate-180 -kms_big_fb@4-tiled-32bpp-rotate-270 -kms_big_fb@4-tiled-64bpp-rotate-0 -kms_big_fb@4-tiled-64bpp-rotate-90 -kms_big_fb@4-tiled-64bpp-rotate-180 -kms_big_fb@4-tiled-64bpp-rotate-270 -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-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-180 -kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-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-180 -kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-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-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-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-hflip -kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip -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-180 -kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-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-180 -kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-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-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-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-hflip -kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip -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-180 -kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-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-180 -kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-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-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-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-hflip -kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip -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-180 -kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-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-180 -kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-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-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-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-hflip -kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip -kms_big_joiner@basic -kms_big_joiner@invalid-modeset -kms_big_joiner@2x-modeset -kms_busy@basic -kms_busy@basic-hang -kms_busy@extended-pageflip-modeset-hang-oldfb -kms_busy@extended-pageflip-hang-oldfb -kms_busy@extended-pageflip-hang-newfb -kms_busy@extended-modeset-hang-oldfb -kms_busy@extended-modeset-hang-newfb -kms_busy@extended-modeset-hang-oldfb-with-reset -kms_busy@extended-modeset-hang-newfb-with-reset -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_bw@linear-tiling-7-displays-1920x1080p -kms_bw@linear-tiling-7-displays-2560x1440p -kms_bw@linear-tiling-7-displays-3840x2160p -kms_bw@linear-tiling-8-displays-1920x1080p -kms_bw@linear-tiling-8-displays-2560x1440p -kms_bw@linear-tiling-8-displays-3840x2160p -kms_ccs@pipe-A-bad-pixel-format-y-tiled-ccs -kms_ccs@pipe-A-bad-pixel-format-yf-tiled-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-pixel-format-y-tiled-gen12-mc-ccs -kms_ccs@pipe-A-bad-pixel-format-4-tiled-dg2-rc-ccs -kms_ccs@pipe-A-bad-pixel-format-4-tiled-dg2-mc-ccs -kms_ccs@pipe-A-bad-pixel-format-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-A-bad-pixel-format-4-tiled-mtl-rc-ccs -kms_ccs@pipe-A-bad-pixel-format-4-tiled-mtl-mc-ccs -kms_ccs@pipe-A-bad-pixel-format-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-A-bad-rotation-90-y-tiled-ccs -kms_ccs@pipe-A-bad-rotation-90-yf-tiled-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-bad-rotation-90-y-tiled-gen12-mc-ccs -kms_ccs@pipe-A-bad-rotation-90-4-tiled-dg2-rc-ccs -kms_ccs@pipe-A-bad-rotation-90-4-tiled-dg2-mc-ccs -kms_ccs@pipe-A-bad-rotation-90-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-A-bad-rotation-90-4-tiled-mtl-rc-ccs -kms_ccs@pipe-A-bad-rotation-90-4-tiled-mtl-mc-ccs -kms_ccs@pipe-A-bad-rotation-90-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-A-crc-primary-basic-y-tiled-ccs -kms_ccs@pipe-A-crc-primary-basic-yf-tiled-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-basic-y-tiled-gen12-mc-ccs -kms_ccs@pipe-A-crc-primary-basic-4-tiled-dg2-rc-ccs -kms_ccs@pipe-A-crc-primary-basic-4-tiled-dg2-mc-ccs -kms_ccs@pipe-A-crc-primary-basic-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-A-crc-primary-basic-4-tiled-mtl-rc-ccs -kms_ccs@pipe-A-crc-primary-basic-4-tiled-mtl-mc-ccs -kms_ccs@pipe-A-crc-primary-basic-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-A-crc-primary-rotation-180-y-tiled-ccs -kms_ccs@pipe-A-crc-primary-rotation-180-yf-tiled-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-primary-rotation-180-y-tiled-gen12-mc-ccs -kms_ccs@pipe-A-crc-primary-rotation-180-4-tiled-dg2-rc-ccs -kms_ccs@pipe-A-crc-primary-rotation-180-4-tiled-dg2-mc-ccs -kms_ccs@pipe-A-crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-A-crc-primary-rotation-180-4-tiled-mtl-rc-ccs -kms_ccs@pipe-A-crc-primary-rotation-180-4-tiled-mtl-mc-ccs -kms_ccs@pipe-A-crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-A-random-ccs-data-y-tiled-ccs -kms_ccs@pipe-A-random-ccs-data-yf-tiled-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-A-random-ccs-data-y-tiled-gen12-mc-ccs -kms_ccs@pipe-A-random-ccs-data-4-tiled-dg2-rc-ccs -kms_ccs@pipe-A-random-ccs-data-4-tiled-dg2-mc-ccs -kms_ccs@pipe-A-random-ccs-data-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-A-random-ccs-data-4-tiled-mtl-rc-ccs -kms_ccs@pipe-A-random-ccs-data-4-tiled-mtl-mc-ccs -kms_ccs@pipe-A-random-ccs-data-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-A-missing-ccs-buffer-y-tiled-ccs -kms_ccs@pipe-A-missing-ccs-buffer-yf-tiled-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-missing-ccs-buffer-y-tiled-gen12-mc-ccs -kms_ccs@pipe-A-missing-ccs-buffer-4-tiled-mtl-rc-ccs -kms_ccs@pipe-A-missing-ccs-buffer-4-tiled-mtl-mc-ccs -kms_ccs@pipe-A-missing-ccs-buffer-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-A-ccs-on-another-bo-y-tiled-ccs -kms_ccs@pipe-A-ccs-on-another-bo-yf-tiled-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-ccs-on-another-bo-y-tiled-gen12-mc-ccs -kms_ccs@pipe-A-ccs-on-another-bo-4-tiled-mtl-rc-ccs -kms_ccs@pipe-A-ccs-on-another-bo-4-tiled-mtl-mc-ccs -kms_ccs@pipe-A-ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-A-bad-aux-stride-y-tiled-ccs -kms_ccs@pipe-A-bad-aux-stride-yf-tiled-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-aux-stride-y-tiled-gen12-mc-ccs -kms_ccs@pipe-A-bad-aux-stride-4-tiled-mtl-rc-ccs -kms_ccs@pipe-A-bad-aux-stride-4-tiled-mtl-mc-ccs -kms_ccs@pipe-A-bad-aux-stride-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-A-crc-sprite-planes-basic-y-tiled-ccs -kms_ccs@pipe-A-crc-sprite-planes-basic-yf-tiled-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-crc-sprite-planes-basic-y-tiled-gen12-mc-ccs -kms_ccs@pipe-A-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs -kms_ccs@pipe-A-crc-sprite-planes-basic-4-tiled-dg2-mc-ccs -kms_ccs@pipe-A-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-A-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs -kms_ccs@pipe-A-crc-sprite-planes-basic-4-tiled-mtl-mc-ccs -kms_ccs@pipe-A-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-B-bad-pixel-format-y-tiled-ccs -kms_ccs@pipe-B-bad-pixel-format-yf-tiled-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-pixel-format-y-tiled-gen12-mc-ccs -kms_ccs@pipe-B-bad-pixel-format-4-tiled-dg2-rc-ccs -kms_ccs@pipe-B-bad-pixel-format-4-tiled-dg2-mc-ccs -kms_ccs@pipe-B-bad-pixel-format-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-B-bad-pixel-format-4-tiled-mtl-rc-ccs -kms_ccs@pipe-B-bad-pixel-format-4-tiled-mtl-mc-ccs -kms_ccs@pipe-B-bad-pixel-format-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-B-bad-rotation-90-y-tiled-ccs -kms_ccs@pipe-B-bad-rotation-90-yf-tiled-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-bad-rotation-90-y-tiled-gen12-mc-ccs -kms_ccs@pipe-B-bad-rotation-90-4-tiled-dg2-rc-ccs -kms_ccs@pipe-B-bad-rotation-90-4-tiled-dg2-mc-ccs -kms_ccs@pipe-B-bad-rotation-90-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-B-bad-rotation-90-4-tiled-mtl-rc-ccs -kms_ccs@pipe-B-bad-rotation-90-4-tiled-mtl-mc-ccs -kms_ccs@pipe-B-bad-rotation-90-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-B-crc-primary-basic-y-tiled-ccs -kms_ccs@pipe-B-crc-primary-basic-yf-tiled-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-basic-y-tiled-gen12-mc-ccs -kms_ccs@pipe-B-crc-primary-basic-4-tiled-dg2-rc-ccs -kms_ccs@pipe-B-crc-primary-basic-4-tiled-dg2-mc-ccs -kms_ccs@pipe-B-crc-primary-basic-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-B-crc-primary-basic-4-tiled-mtl-rc-ccs -kms_ccs@pipe-B-crc-primary-basic-4-tiled-mtl-mc-ccs -kms_ccs@pipe-B-crc-primary-basic-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-B-crc-primary-rotation-180-y-tiled-ccs -kms_ccs@pipe-B-crc-primary-rotation-180-yf-tiled-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-primary-rotation-180-y-tiled-gen12-mc-ccs -kms_ccs@pipe-B-crc-primary-rotation-180-4-tiled-dg2-rc-ccs -kms_ccs@pipe-B-crc-primary-rotation-180-4-tiled-dg2-mc-ccs -kms_ccs@pipe-B-crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-B-crc-primary-rotation-180-4-tiled-mtl-rc-ccs -kms_ccs@pipe-B-crc-primary-rotation-180-4-tiled-mtl-mc-ccs -kms_ccs@pipe-B-crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-B-random-ccs-data-y-tiled-ccs -kms_ccs@pipe-B-random-ccs-data-yf-tiled-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-B-random-ccs-data-y-tiled-gen12-mc-ccs -kms_ccs@pipe-B-random-ccs-data-4-tiled-dg2-rc-ccs -kms_ccs@pipe-B-random-ccs-data-4-tiled-dg2-mc-ccs -kms_ccs@pipe-B-random-ccs-data-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-B-random-ccs-data-4-tiled-mtl-rc-ccs -kms_ccs@pipe-B-random-ccs-data-4-tiled-mtl-mc-ccs -kms_ccs@pipe-B-random-ccs-data-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-B-missing-ccs-buffer-y-tiled-ccs -kms_ccs@pipe-B-missing-ccs-buffer-yf-tiled-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-missing-ccs-buffer-y-tiled-gen12-mc-ccs -kms_ccs@pipe-B-missing-ccs-buffer-4-tiled-mtl-rc-ccs -kms_ccs@pipe-B-missing-ccs-buffer-4-tiled-mtl-mc-ccs -kms_ccs@pipe-B-missing-ccs-buffer-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-B-ccs-on-another-bo-y-tiled-ccs -kms_ccs@pipe-B-ccs-on-another-bo-yf-tiled-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-ccs-on-another-bo-y-tiled-gen12-mc-ccs -kms_ccs@pipe-B-ccs-on-another-bo-4-tiled-mtl-rc-ccs -kms_ccs@pipe-B-ccs-on-another-bo-4-tiled-mtl-mc-ccs -kms_ccs@pipe-B-ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-B-bad-aux-stride-y-tiled-ccs -kms_ccs@pipe-B-bad-aux-stride-yf-tiled-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-aux-stride-y-tiled-gen12-mc-ccs -kms_ccs@pipe-B-bad-aux-stride-4-tiled-mtl-rc-ccs -kms_ccs@pipe-B-bad-aux-stride-4-tiled-mtl-mc-ccs -kms_ccs@pipe-B-bad-aux-stride-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-B-crc-sprite-planes-basic-y-tiled-ccs -kms_ccs@pipe-B-crc-sprite-planes-basic-yf-tiled-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-crc-sprite-planes-basic-y-tiled-gen12-mc-ccs -kms_ccs@pipe-B-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs -kms_ccs@pipe-B-crc-sprite-planes-basic-4-tiled-dg2-mc-ccs -kms_ccs@pipe-B-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-B-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs -kms_ccs@pipe-B-crc-sprite-planes-basic-4-tiled-mtl-mc-ccs -kms_ccs@pipe-B-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-C-bad-pixel-format-y-tiled-ccs -kms_ccs@pipe-C-bad-pixel-format-yf-tiled-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-pixel-format-y-tiled-gen12-mc-ccs -kms_ccs@pipe-C-bad-pixel-format-4-tiled-dg2-rc-ccs -kms_ccs@pipe-C-bad-pixel-format-4-tiled-dg2-mc-ccs -kms_ccs@pipe-C-bad-pixel-format-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-C-bad-pixel-format-4-tiled-mtl-rc-ccs -kms_ccs@pipe-C-bad-pixel-format-4-tiled-mtl-mc-ccs -kms_ccs@pipe-C-bad-pixel-format-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-C-bad-rotation-90-y-tiled-ccs -kms_ccs@pipe-C-bad-rotation-90-yf-tiled-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-bad-rotation-90-y-tiled-gen12-mc-ccs -kms_ccs@pipe-C-bad-rotation-90-4-tiled-dg2-rc-ccs -kms_ccs@pipe-C-bad-rotation-90-4-tiled-dg2-mc-ccs -kms_ccs@pipe-C-bad-rotation-90-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-C-bad-rotation-90-4-tiled-mtl-rc-ccs -kms_ccs@pipe-C-bad-rotation-90-4-tiled-mtl-mc-ccs -kms_ccs@pipe-C-bad-rotation-90-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-C-crc-primary-basic-y-tiled-ccs -kms_ccs@pipe-C-crc-primary-basic-yf-tiled-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-basic-y-tiled-gen12-mc-ccs -kms_ccs@pipe-C-crc-primary-basic-4-tiled-dg2-rc-ccs -kms_ccs@pipe-C-crc-primary-basic-4-tiled-dg2-mc-ccs -kms_ccs@pipe-C-crc-primary-basic-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-C-crc-primary-basic-4-tiled-mtl-rc-ccs -kms_ccs@pipe-C-crc-primary-basic-4-tiled-mtl-mc-ccs -kms_ccs@pipe-C-crc-primary-basic-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-C-crc-primary-rotation-180-y-tiled-ccs -kms_ccs@pipe-C-crc-primary-rotation-180-yf-tiled-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-primary-rotation-180-y-tiled-gen12-mc-ccs -kms_ccs@pipe-C-crc-primary-rotation-180-4-tiled-dg2-rc-ccs -kms_ccs@pipe-C-crc-primary-rotation-180-4-tiled-dg2-mc-ccs -kms_ccs@pipe-C-crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-C-crc-primary-rotation-180-4-tiled-mtl-rc-ccs -kms_ccs@pipe-C-crc-primary-rotation-180-4-tiled-mtl-mc-ccs -kms_ccs@pipe-C-crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-C-random-ccs-data-y-tiled-ccs -kms_ccs@pipe-C-random-ccs-data-yf-tiled-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-C-random-ccs-data-y-tiled-gen12-mc-ccs -kms_ccs@pipe-C-random-ccs-data-4-tiled-dg2-rc-ccs -kms_ccs@pipe-C-random-ccs-data-4-tiled-dg2-mc-ccs -kms_ccs@pipe-C-random-ccs-data-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-C-random-ccs-data-4-tiled-mtl-rc-ccs -kms_ccs@pipe-C-random-ccs-data-4-tiled-mtl-mc-ccs -kms_ccs@pipe-C-random-ccs-data-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-C-missing-ccs-buffer-y-tiled-ccs -kms_ccs@pipe-C-missing-ccs-buffer-yf-tiled-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-missing-ccs-buffer-y-tiled-gen12-mc-ccs -kms_ccs@pipe-C-missing-ccs-buffer-4-tiled-mtl-rc-ccs -kms_ccs@pipe-C-missing-ccs-buffer-4-tiled-mtl-mc-ccs -kms_ccs@pipe-C-missing-ccs-buffer-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-C-ccs-on-another-bo-y-tiled-ccs -kms_ccs@pipe-C-ccs-on-another-bo-yf-tiled-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-ccs-on-another-bo-y-tiled-gen12-mc-ccs -kms_ccs@pipe-C-ccs-on-another-bo-4-tiled-mtl-rc-ccs -kms_ccs@pipe-C-ccs-on-another-bo-4-tiled-mtl-mc-ccs -kms_ccs@pipe-C-ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-C-bad-aux-stride-y-tiled-ccs -kms_ccs@pipe-C-bad-aux-stride-yf-tiled-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-aux-stride-y-tiled-gen12-mc-ccs -kms_ccs@pipe-C-bad-aux-stride-4-tiled-mtl-rc-ccs -kms_ccs@pipe-C-bad-aux-stride-4-tiled-mtl-mc-ccs -kms_ccs@pipe-C-bad-aux-stride-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-C-crc-sprite-planes-basic-y-tiled-ccs -kms_ccs@pipe-C-crc-sprite-planes-basic-yf-tiled-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-crc-sprite-planes-basic-y-tiled-gen12-mc-ccs -kms_ccs@pipe-C-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs -kms_ccs@pipe-C-crc-sprite-planes-basic-4-tiled-dg2-mc-ccs -kms_ccs@pipe-C-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-C-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs -kms_ccs@pipe-C-crc-sprite-planes-basic-4-tiled-mtl-mc-ccs -kms_ccs@pipe-C-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-D-bad-pixel-format-y-tiled-ccs -kms_ccs@pipe-D-bad-pixel-format-yf-tiled-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-pixel-format-y-tiled-gen12-mc-ccs -kms_ccs@pipe-D-bad-pixel-format-4-tiled-dg2-rc-ccs -kms_ccs@pipe-D-bad-pixel-format-4-tiled-dg2-mc-ccs -kms_ccs@pipe-D-bad-pixel-format-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-D-bad-pixel-format-4-tiled-mtl-rc-ccs -kms_ccs@pipe-D-bad-pixel-format-4-tiled-mtl-mc-ccs -kms_ccs@pipe-D-bad-pixel-format-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-D-bad-rotation-90-y-tiled-ccs -kms_ccs@pipe-D-bad-rotation-90-yf-tiled-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-bad-rotation-90-y-tiled-gen12-mc-ccs -kms_ccs@pipe-D-bad-rotation-90-4-tiled-dg2-rc-ccs -kms_ccs@pipe-D-bad-rotation-90-4-tiled-dg2-mc-ccs -kms_ccs@pipe-D-bad-rotation-90-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-D-bad-rotation-90-4-tiled-mtl-rc-ccs -kms_ccs@pipe-D-bad-rotation-90-4-tiled-mtl-mc-ccs -kms_ccs@pipe-D-bad-rotation-90-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-D-crc-primary-basic-y-tiled-ccs -kms_ccs@pipe-D-crc-primary-basic-yf-tiled-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-basic-y-tiled-gen12-mc-ccs -kms_ccs@pipe-D-crc-primary-basic-4-tiled-dg2-rc-ccs -kms_ccs@pipe-D-crc-primary-basic-4-tiled-dg2-mc-ccs -kms_ccs@pipe-D-crc-primary-basic-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-D-crc-primary-basic-4-tiled-mtl-rc-ccs -kms_ccs@pipe-D-crc-primary-basic-4-tiled-mtl-mc-ccs -kms_ccs@pipe-D-crc-primary-basic-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-D-crc-primary-rotation-180-y-tiled-ccs -kms_ccs@pipe-D-crc-primary-rotation-180-yf-tiled-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-primary-rotation-180-y-tiled-gen12-mc-ccs -kms_ccs@pipe-D-crc-primary-rotation-180-4-tiled-dg2-rc-ccs -kms_ccs@pipe-D-crc-primary-rotation-180-4-tiled-dg2-mc-ccs -kms_ccs@pipe-D-crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-D-crc-primary-rotation-180-4-tiled-mtl-rc-ccs -kms_ccs@pipe-D-crc-primary-rotation-180-4-tiled-mtl-mc-ccs -kms_ccs@pipe-D-crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-D-random-ccs-data-y-tiled-ccs -kms_ccs@pipe-D-random-ccs-data-yf-tiled-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-D-random-ccs-data-y-tiled-gen12-mc-ccs -kms_ccs@pipe-D-random-ccs-data-4-tiled-dg2-rc-ccs -kms_ccs@pipe-D-random-ccs-data-4-tiled-dg2-mc-ccs -kms_ccs@pipe-D-random-ccs-data-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-D-random-ccs-data-4-tiled-mtl-rc-ccs -kms_ccs@pipe-D-random-ccs-data-4-tiled-mtl-mc-ccs -kms_ccs@pipe-D-random-ccs-data-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-D-missing-ccs-buffer-y-tiled-ccs -kms_ccs@pipe-D-missing-ccs-buffer-yf-tiled-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-missing-ccs-buffer-y-tiled-gen12-mc-ccs -kms_ccs@pipe-D-missing-ccs-buffer-4-tiled-mtl-rc-ccs -kms_ccs@pipe-D-missing-ccs-buffer-4-tiled-mtl-mc-ccs -kms_ccs@pipe-D-missing-ccs-buffer-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-D-ccs-on-another-bo-y-tiled-ccs -kms_ccs@pipe-D-ccs-on-another-bo-yf-tiled-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-ccs-on-another-bo-y-tiled-gen12-mc-ccs -kms_ccs@pipe-D-ccs-on-another-bo-4-tiled-mtl-rc-ccs -kms_ccs@pipe-D-ccs-on-another-bo-4-tiled-mtl-mc-ccs -kms_ccs@pipe-D-ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-D-bad-aux-stride-y-tiled-ccs -kms_ccs@pipe-D-bad-aux-stride-yf-tiled-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-aux-stride-y-tiled-gen12-mc-ccs -kms_ccs@pipe-D-bad-aux-stride-4-tiled-mtl-rc-ccs -kms_ccs@pipe-D-bad-aux-stride-4-tiled-mtl-mc-ccs -kms_ccs@pipe-D-bad-aux-stride-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-D-crc-sprite-planes-basic-y-tiled-ccs -kms_ccs@pipe-D-crc-sprite-planes-basic-yf-tiled-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-crc-sprite-planes-basic-y-tiled-gen12-mc-ccs -kms_ccs@pipe-D-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs -kms_ccs@pipe-D-crc-sprite-planes-basic-4-tiled-dg2-mc-ccs -kms_ccs@pipe-D-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-D-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs -kms_ccs@pipe-D-crc-sprite-planes-basic-4-tiled-mtl-mc-ccs -kms_ccs@pipe-D-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-E-bad-pixel-format-y-tiled-ccs -kms_ccs@pipe-E-bad-pixel-format-yf-tiled-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-pixel-format-y-tiled-gen12-mc-ccs -kms_ccs@pipe-E-bad-pixel-format-4-tiled-dg2-rc-ccs -kms_ccs@pipe-E-bad-pixel-format-4-tiled-dg2-mc-ccs -kms_ccs@pipe-E-bad-pixel-format-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-E-bad-pixel-format-4-tiled-mtl-rc-ccs -kms_ccs@pipe-E-bad-pixel-format-4-tiled-mtl-mc-ccs -kms_ccs@pipe-E-bad-pixel-format-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-E-bad-rotation-90-y-tiled-ccs -kms_ccs@pipe-E-bad-rotation-90-yf-tiled-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-bad-rotation-90-y-tiled-gen12-mc-ccs -kms_ccs@pipe-E-bad-rotation-90-4-tiled-dg2-rc-ccs -kms_ccs@pipe-E-bad-rotation-90-4-tiled-dg2-mc-ccs -kms_ccs@pipe-E-bad-rotation-90-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-E-bad-rotation-90-4-tiled-mtl-rc-ccs -kms_ccs@pipe-E-bad-rotation-90-4-tiled-mtl-mc-ccs -kms_ccs@pipe-E-bad-rotation-90-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-E-crc-primary-basic-y-tiled-ccs -kms_ccs@pipe-E-crc-primary-basic-yf-tiled-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-basic-y-tiled-gen12-mc-ccs -kms_ccs@pipe-E-crc-primary-basic-4-tiled-dg2-rc-ccs -kms_ccs@pipe-E-crc-primary-basic-4-tiled-dg2-mc-ccs -kms_ccs@pipe-E-crc-primary-basic-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-E-crc-primary-basic-4-tiled-mtl-rc-ccs -kms_ccs@pipe-E-crc-primary-basic-4-tiled-mtl-mc-ccs -kms_ccs@pipe-E-crc-primary-basic-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-E-crc-primary-rotation-180-y-tiled-ccs -kms_ccs@pipe-E-crc-primary-rotation-180-yf-tiled-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-primary-rotation-180-y-tiled-gen12-mc-ccs -kms_ccs@pipe-E-crc-primary-rotation-180-4-tiled-dg2-rc-ccs -kms_ccs@pipe-E-crc-primary-rotation-180-4-tiled-dg2-mc-ccs -kms_ccs@pipe-E-crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-E-crc-primary-rotation-180-4-tiled-mtl-rc-ccs -kms_ccs@pipe-E-crc-primary-rotation-180-4-tiled-mtl-mc-ccs -kms_ccs@pipe-E-crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-E-random-ccs-data-y-tiled-ccs -kms_ccs@pipe-E-random-ccs-data-yf-tiled-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-E-random-ccs-data-y-tiled-gen12-mc-ccs -kms_ccs@pipe-E-random-ccs-data-4-tiled-dg2-rc-ccs -kms_ccs@pipe-E-random-ccs-data-4-tiled-dg2-mc-ccs -kms_ccs@pipe-E-random-ccs-data-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-E-random-ccs-data-4-tiled-mtl-rc-ccs -kms_ccs@pipe-E-random-ccs-data-4-tiled-mtl-mc-ccs -kms_ccs@pipe-E-random-ccs-data-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-E-missing-ccs-buffer-y-tiled-ccs -kms_ccs@pipe-E-missing-ccs-buffer-yf-tiled-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-missing-ccs-buffer-y-tiled-gen12-mc-ccs -kms_ccs@pipe-E-missing-ccs-buffer-4-tiled-mtl-rc-ccs -kms_ccs@pipe-E-missing-ccs-buffer-4-tiled-mtl-mc-ccs -kms_ccs@pipe-E-missing-ccs-buffer-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-E-ccs-on-another-bo-y-tiled-ccs -kms_ccs@pipe-E-ccs-on-another-bo-yf-tiled-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-ccs-on-another-bo-y-tiled-gen12-mc-ccs -kms_ccs@pipe-E-ccs-on-another-bo-4-tiled-mtl-rc-ccs -kms_ccs@pipe-E-ccs-on-another-bo-4-tiled-mtl-mc-ccs -kms_ccs@pipe-E-ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-E-bad-aux-stride-y-tiled-ccs -kms_ccs@pipe-E-bad-aux-stride-yf-tiled-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-aux-stride-y-tiled-gen12-mc-ccs -kms_ccs@pipe-E-bad-aux-stride-4-tiled-mtl-rc-ccs -kms_ccs@pipe-E-bad-aux-stride-4-tiled-mtl-mc-ccs -kms_ccs@pipe-E-bad-aux-stride-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-E-crc-sprite-planes-basic-y-tiled-ccs -kms_ccs@pipe-E-crc-sprite-planes-basic-yf-tiled-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-crc-sprite-planes-basic-y-tiled-gen12-mc-ccs -kms_ccs@pipe-E-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs -kms_ccs@pipe-E-crc-sprite-planes-basic-4-tiled-dg2-mc-ccs -kms_ccs@pipe-E-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-E-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs -kms_ccs@pipe-E-crc-sprite-planes-basic-4-tiled-mtl-mc-ccs -kms_ccs@pipe-E-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-F-bad-pixel-format-y-tiled-ccs -kms_ccs@pipe-F-bad-pixel-format-yf-tiled-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-pixel-format-y-tiled-gen12-mc-ccs -kms_ccs@pipe-F-bad-pixel-format-4-tiled-dg2-rc-ccs -kms_ccs@pipe-F-bad-pixel-format-4-tiled-dg2-mc-ccs -kms_ccs@pipe-F-bad-pixel-format-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-F-bad-pixel-format-4-tiled-mtl-rc-ccs -kms_ccs@pipe-F-bad-pixel-format-4-tiled-mtl-mc-ccs -kms_ccs@pipe-F-bad-pixel-format-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-F-bad-rotation-90-y-tiled-ccs -kms_ccs@pipe-F-bad-rotation-90-yf-tiled-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-bad-rotation-90-y-tiled-gen12-mc-ccs -kms_ccs@pipe-F-bad-rotation-90-4-tiled-dg2-rc-ccs -kms_ccs@pipe-F-bad-rotation-90-4-tiled-dg2-mc-ccs -kms_ccs@pipe-F-bad-rotation-90-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-F-bad-rotation-90-4-tiled-mtl-rc-ccs -kms_ccs@pipe-F-bad-rotation-90-4-tiled-mtl-mc-ccs -kms_ccs@pipe-F-bad-rotation-90-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-F-crc-primary-basic-y-tiled-ccs -kms_ccs@pipe-F-crc-primary-basic-yf-tiled-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-basic-y-tiled-gen12-mc-ccs -kms_ccs@pipe-F-crc-primary-basic-4-tiled-dg2-rc-ccs -kms_ccs@pipe-F-crc-primary-basic-4-tiled-dg2-mc-ccs -kms_ccs@pipe-F-crc-primary-basic-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-F-crc-primary-basic-4-tiled-mtl-rc-ccs -kms_ccs@pipe-F-crc-primary-basic-4-tiled-mtl-mc-ccs -kms_ccs@pipe-F-crc-primary-basic-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-F-crc-primary-rotation-180-y-tiled-ccs -kms_ccs@pipe-F-crc-primary-rotation-180-yf-tiled-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-primary-rotation-180-y-tiled-gen12-mc-ccs -kms_ccs@pipe-F-crc-primary-rotation-180-4-tiled-dg2-rc-ccs -kms_ccs@pipe-F-crc-primary-rotation-180-4-tiled-dg2-mc-ccs -kms_ccs@pipe-F-crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-F-crc-primary-rotation-180-4-tiled-mtl-rc-ccs -kms_ccs@pipe-F-crc-primary-rotation-180-4-tiled-mtl-mc-ccs -kms_ccs@pipe-F-crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-F-random-ccs-data-y-tiled-ccs -kms_ccs@pipe-F-random-ccs-data-yf-tiled-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_ccs@pipe-F-random-ccs-data-y-tiled-gen12-mc-ccs -kms_ccs@pipe-F-random-ccs-data-4-tiled-dg2-rc-ccs -kms_ccs@pipe-F-random-ccs-data-4-tiled-dg2-mc-ccs -kms_ccs@pipe-F-random-ccs-data-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-F-random-ccs-data-4-tiled-mtl-rc-ccs -kms_ccs@pipe-F-random-ccs-data-4-tiled-mtl-mc-ccs -kms_ccs@pipe-F-random-ccs-data-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-F-missing-ccs-buffer-y-tiled-ccs -kms_ccs@pipe-F-missing-ccs-buffer-yf-tiled-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-missing-ccs-buffer-y-tiled-gen12-mc-ccs -kms_ccs@pipe-F-missing-ccs-buffer-4-tiled-mtl-rc-ccs -kms_ccs@pipe-F-missing-ccs-buffer-4-tiled-mtl-mc-ccs -kms_ccs@pipe-F-missing-ccs-buffer-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-F-ccs-on-another-bo-y-tiled-ccs -kms_ccs@pipe-F-ccs-on-another-bo-yf-tiled-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-ccs-on-another-bo-y-tiled-gen12-mc-ccs -kms_ccs@pipe-F-ccs-on-another-bo-4-tiled-mtl-rc-ccs -kms_ccs@pipe-F-ccs-on-another-bo-4-tiled-mtl-mc-ccs -kms_ccs@pipe-F-ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-F-bad-aux-stride-y-tiled-ccs -kms_ccs@pipe-F-bad-aux-stride-yf-tiled-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-aux-stride-y-tiled-gen12-mc-ccs -kms_ccs@pipe-F-bad-aux-stride-4-tiled-mtl-rc-ccs -kms_ccs@pipe-F-bad-aux-stride-4-tiled-mtl-mc-ccs -kms_ccs@pipe-F-bad-aux-stride-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-F-crc-sprite-planes-basic-y-tiled-ccs -kms_ccs@pipe-F-crc-sprite-planes-basic-yf-tiled-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-crc-sprite-planes-basic-y-tiled-gen12-mc-ccs -kms_ccs@pipe-F-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs -kms_ccs@pipe-F-crc-sprite-planes-basic-4-tiled-dg2-mc-ccs -kms_ccs@pipe-F-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-F-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs -kms_ccs@pipe-F-crc-sprite-planes-basic-4-tiled-mtl-mc-ccs -kms_ccs@pipe-F-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-G-bad-pixel-format-y-tiled-ccs -kms_ccs@pipe-G-bad-pixel-format-yf-tiled-ccs -kms_ccs@pipe-G-bad-pixel-format-y-tiled-gen12-rc-ccs -kms_ccs@pipe-G-bad-pixel-format-y-tiled-gen12-rc-ccs-cc -kms_ccs@pipe-G-bad-pixel-format-y-tiled-gen12-mc-ccs -kms_ccs@pipe-G-bad-pixel-format-4-tiled-dg2-rc-ccs -kms_ccs@pipe-G-bad-pixel-format-4-tiled-dg2-mc-ccs -kms_ccs@pipe-G-bad-pixel-format-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-G-bad-pixel-format-4-tiled-mtl-rc-ccs -kms_ccs@pipe-G-bad-pixel-format-4-tiled-mtl-mc-ccs -kms_ccs@pipe-G-bad-pixel-format-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-G-bad-rotation-90-y-tiled-ccs -kms_ccs@pipe-G-bad-rotation-90-yf-tiled-ccs -kms_ccs@pipe-G-bad-rotation-90-y-tiled-gen12-rc-ccs -kms_ccs@pipe-G-bad-rotation-90-y-tiled-gen12-rc-ccs-cc -kms_ccs@pipe-G-bad-rotation-90-y-tiled-gen12-mc-ccs -kms_ccs@pipe-G-bad-rotation-90-4-tiled-dg2-rc-ccs -kms_ccs@pipe-G-bad-rotation-90-4-tiled-dg2-mc-ccs -kms_ccs@pipe-G-bad-rotation-90-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-G-bad-rotation-90-4-tiled-mtl-rc-ccs -kms_ccs@pipe-G-bad-rotation-90-4-tiled-mtl-mc-ccs -kms_ccs@pipe-G-bad-rotation-90-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-G-crc-primary-basic-y-tiled-ccs -kms_ccs@pipe-G-crc-primary-basic-yf-tiled-ccs -kms_ccs@pipe-G-crc-primary-basic-y-tiled-gen12-rc-ccs -kms_ccs@pipe-G-crc-primary-basic-y-tiled-gen12-rc-ccs-cc -kms_ccs@pipe-G-crc-primary-basic-y-tiled-gen12-mc-ccs -kms_ccs@pipe-G-crc-primary-basic-4-tiled-dg2-rc-ccs -kms_ccs@pipe-G-crc-primary-basic-4-tiled-dg2-mc-ccs -kms_ccs@pipe-G-crc-primary-basic-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-G-crc-primary-basic-4-tiled-mtl-rc-ccs -kms_ccs@pipe-G-crc-primary-basic-4-tiled-mtl-mc-ccs -kms_ccs@pipe-G-crc-primary-basic-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-G-crc-primary-rotation-180-y-tiled-ccs -kms_ccs@pipe-G-crc-primary-rotation-180-yf-tiled-ccs -kms_ccs@pipe-G-crc-primary-rotation-180-y-tiled-gen12-rc-ccs -kms_ccs@pipe-G-crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc -kms_ccs@pipe-G-crc-primary-rotation-180-y-tiled-gen12-mc-ccs -kms_ccs@pipe-G-crc-primary-rotation-180-4-tiled-dg2-rc-ccs -kms_ccs@pipe-G-crc-primary-rotation-180-4-tiled-dg2-mc-ccs -kms_ccs@pipe-G-crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-G-crc-primary-rotation-180-4-tiled-mtl-rc-ccs -kms_ccs@pipe-G-crc-primary-rotation-180-4-tiled-mtl-mc-ccs -kms_ccs@pipe-G-crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-G-random-ccs-data-y-tiled-ccs -kms_ccs@pipe-G-random-ccs-data-yf-tiled-ccs -kms_ccs@pipe-G-random-ccs-data-y-tiled-gen12-rc-ccs -kms_ccs@pipe-G-random-ccs-data-y-tiled-gen12-rc-ccs-cc -kms_ccs@pipe-G-random-ccs-data-y-tiled-gen12-mc-ccs -kms_ccs@pipe-G-random-ccs-data-4-tiled-dg2-rc-ccs -kms_ccs@pipe-G-random-ccs-data-4-tiled-dg2-mc-ccs -kms_ccs@pipe-G-random-ccs-data-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-G-random-ccs-data-4-tiled-mtl-rc-ccs -kms_ccs@pipe-G-random-ccs-data-4-tiled-mtl-mc-ccs -kms_ccs@pipe-G-random-ccs-data-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-G-missing-ccs-buffer-y-tiled-ccs -kms_ccs@pipe-G-missing-ccs-buffer-yf-tiled-ccs -kms_ccs@pipe-G-missing-ccs-buffer-y-tiled-gen12-rc-ccs -kms_ccs@pipe-G-missing-ccs-buffer-y-tiled-gen12-rc-ccs-cc -kms_ccs@pipe-G-missing-ccs-buffer-y-tiled-gen12-mc-ccs -kms_ccs@pipe-G-missing-ccs-buffer-4-tiled-mtl-rc-ccs -kms_ccs@pipe-G-missing-ccs-buffer-4-tiled-mtl-mc-ccs -kms_ccs@pipe-G-missing-ccs-buffer-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-G-ccs-on-another-bo-y-tiled-ccs -kms_ccs@pipe-G-ccs-on-another-bo-yf-tiled-ccs -kms_ccs@pipe-G-ccs-on-another-bo-y-tiled-gen12-rc-ccs -kms_ccs@pipe-G-ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc -kms_ccs@pipe-G-ccs-on-another-bo-y-tiled-gen12-mc-ccs -kms_ccs@pipe-G-ccs-on-another-bo-4-tiled-mtl-rc-ccs -kms_ccs@pipe-G-ccs-on-another-bo-4-tiled-mtl-mc-ccs -kms_ccs@pipe-G-ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-G-bad-aux-stride-y-tiled-ccs -kms_ccs@pipe-G-bad-aux-stride-yf-tiled-ccs -kms_ccs@pipe-G-bad-aux-stride-y-tiled-gen12-rc-ccs -kms_ccs@pipe-G-bad-aux-stride-y-tiled-gen12-rc-ccs-cc -kms_ccs@pipe-G-bad-aux-stride-y-tiled-gen12-mc-ccs -kms_ccs@pipe-G-bad-aux-stride-4-tiled-mtl-rc-ccs -kms_ccs@pipe-G-bad-aux-stride-4-tiled-mtl-mc-ccs -kms_ccs@pipe-G-bad-aux-stride-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-G-crc-sprite-planes-basic-y-tiled-ccs -kms_ccs@pipe-G-crc-sprite-planes-basic-yf-tiled-ccs -kms_ccs@pipe-G-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs -kms_ccs@pipe-G-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs-cc -kms_ccs@pipe-G-crc-sprite-planes-basic-y-tiled-gen12-mc-ccs -kms_ccs@pipe-G-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs -kms_ccs@pipe-G-crc-sprite-planes-basic-4-tiled-dg2-mc-ccs -kms_ccs@pipe-G-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-G-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs -kms_ccs@pipe-G-crc-sprite-planes-basic-4-tiled-mtl-mc-ccs -kms_ccs@pipe-G-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-H-bad-pixel-format-y-tiled-ccs -kms_ccs@pipe-H-bad-pixel-format-yf-tiled-ccs -kms_ccs@pipe-H-bad-pixel-format-y-tiled-gen12-rc-ccs -kms_ccs@pipe-H-bad-pixel-format-y-tiled-gen12-rc-ccs-cc -kms_ccs@pipe-H-bad-pixel-format-y-tiled-gen12-mc-ccs -kms_ccs@pipe-H-bad-pixel-format-4-tiled-dg2-rc-ccs -kms_ccs@pipe-H-bad-pixel-format-4-tiled-dg2-mc-ccs -kms_ccs@pipe-H-bad-pixel-format-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-H-bad-pixel-format-4-tiled-mtl-rc-ccs -kms_ccs@pipe-H-bad-pixel-format-4-tiled-mtl-mc-ccs -kms_ccs@pipe-H-bad-pixel-format-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-H-bad-rotation-90-y-tiled-ccs -kms_ccs@pipe-H-bad-rotation-90-yf-tiled-ccs -kms_ccs@pipe-H-bad-rotation-90-y-tiled-gen12-rc-ccs -kms_ccs@pipe-H-bad-rotation-90-y-tiled-gen12-rc-ccs-cc -kms_ccs@pipe-H-bad-rotation-90-y-tiled-gen12-mc-ccs -kms_ccs@pipe-H-bad-rotation-90-4-tiled-dg2-rc-ccs -kms_ccs@pipe-H-bad-rotation-90-4-tiled-dg2-mc-ccs -kms_ccs@pipe-H-bad-rotation-90-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-H-bad-rotation-90-4-tiled-mtl-rc-ccs -kms_ccs@pipe-H-bad-rotation-90-4-tiled-mtl-mc-ccs -kms_ccs@pipe-H-bad-rotation-90-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-H-crc-primary-basic-y-tiled-ccs -kms_ccs@pipe-H-crc-primary-basic-yf-tiled-ccs -kms_ccs@pipe-H-crc-primary-basic-y-tiled-gen12-rc-ccs -kms_ccs@pipe-H-crc-primary-basic-y-tiled-gen12-rc-ccs-cc -kms_ccs@pipe-H-crc-primary-basic-y-tiled-gen12-mc-ccs -kms_ccs@pipe-H-crc-primary-basic-4-tiled-dg2-rc-ccs -kms_ccs@pipe-H-crc-primary-basic-4-tiled-dg2-mc-ccs -kms_ccs@pipe-H-crc-primary-basic-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-H-crc-primary-basic-4-tiled-mtl-rc-ccs -kms_ccs@pipe-H-crc-primary-basic-4-tiled-mtl-mc-ccs -kms_ccs@pipe-H-crc-primary-basic-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-H-crc-primary-rotation-180-y-tiled-ccs -kms_ccs@pipe-H-crc-primary-rotation-180-yf-tiled-ccs -kms_ccs@pipe-H-crc-primary-rotation-180-y-tiled-gen12-rc-ccs -kms_ccs@pipe-H-crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc -kms_ccs@pipe-H-crc-primary-rotation-180-y-tiled-gen12-mc-ccs -kms_ccs@pipe-H-crc-primary-rotation-180-4-tiled-dg2-rc-ccs -kms_ccs@pipe-H-crc-primary-rotation-180-4-tiled-dg2-mc-ccs -kms_ccs@pipe-H-crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-H-crc-primary-rotation-180-4-tiled-mtl-rc-ccs -kms_ccs@pipe-H-crc-primary-rotation-180-4-tiled-mtl-mc-ccs -kms_ccs@pipe-H-crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-H-random-ccs-data-y-tiled-ccs -kms_ccs@pipe-H-random-ccs-data-yf-tiled-ccs -kms_ccs@pipe-H-random-ccs-data-y-tiled-gen12-rc-ccs -kms_ccs@pipe-H-random-ccs-data-y-tiled-gen12-rc-ccs-cc -kms_ccs@pipe-H-random-ccs-data-y-tiled-gen12-mc-ccs -kms_ccs@pipe-H-random-ccs-data-4-tiled-dg2-rc-ccs -kms_ccs@pipe-H-random-ccs-data-4-tiled-dg2-mc-ccs -kms_ccs@pipe-H-random-ccs-data-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-H-random-ccs-data-4-tiled-mtl-rc-ccs -kms_ccs@pipe-H-random-ccs-data-4-tiled-mtl-mc-ccs -kms_ccs@pipe-H-random-ccs-data-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-H-missing-ccs-buffer-y-tiled-ccs -kms_ccs@pipe-H-missing-ccs-buffer-yf-tiled-ccs -kms_ccs@pipe-H-missing-ccs-buffer-y-tiled-gen12-rc-ccs -kms_ccs@pipe-H-missing-ccs-buffer-y-tiled-gen12-rc-ccs-cc -kms_ccs@pipe-H-missing-ccs-buffer-y-tiled-gen12-mc-ccs -kms_ccs@pipe-H-missing-ccs-buffer-4-tiled-mtl-rc-ccs -kms_ccs@pipe-H-missing-ccs-buffer-4-tiled-mtl-mc-ccs -kms_ccs@pipe-H-missing-ccs-buffer-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-H-ccs-on-another-bo-y-tiled-ccs -kms_ccs@pipe-H-ccs-on-another-bo-yf-tiled-ccs -kms_ccs@pipe-H-ccs-on-another-bo-y-tiled-gen12-rc-ccs -kms_ccs@pipe-H-ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc -kms_ccs@pipe-H-ccs-on-another-bo-y-tiled-gen12-mc-ccs -kms_ccs@pipe-H-ccs-on-another-bo-4-tiled-mtl-rc-ccs -kms_ccs@pipe-H-ccs-on-another-bo-4-tiled-mtl-mc-ccs -kms_ccs@pipe-H-ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-H-bad-aux-stride-y-tiled-ccs -kms_ccs@pipe-H-bad-aux-stride-yf-tiled-ccs -kms_ccs@pipe-H-bad-aux-stride-y-tiled-gen12-rc-ccs -kms_ccs@pipe-H-bad-aux-stride-y-tiled-gen12-rc-ccs-cc -kms_ccs@pipe-H-bad-aux-stride-y-tiled-gen12-mc-ccs -kms_ccs@pipe-H-bad-aux-stride-4-tiled-mtl-rc-ccs -kms_ccs@pipe-H-bad-aux-stride-4-tiled-mtl-mc-ccs -kms_ccs@pipe-H-bad-aux-stride-4-tiled-mtl-rc-ccs-cc -kms_ccs@pipe-H-crc-sprite-planes-basic-y-tiled-ccs -kms_ccs@pipe-H-crc-sprite-planes-basic-yf-tiled-ccs -kms_ccs@pipe-H-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs -kms_ccs@pipe-H-crc-sprite-planes-basic-y-tiled-gen12-rc-ccs-cc -kms_ccs@pipe-H-crc-sprite-planes-basic-y-tiled-gen12-mc-ccs -kms_ccs@pipe-H-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs -kms_ccs@pipe-H-crc-sprite-planes-basic-4-tiled-dg2-mc-ccs -kms_ccs@pipe-H-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc -kms_ccs@pipe-H-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs -kms_ccs@pipe-H-crc-sprite-planes-basic-4-tiled-mtl-mc-ccs -kms_ccs@pipe-H-crc-sprite-planes-basic-4-tiled-mtl-rc-ccs-cc -kms_cdclk@plane-scaling -kms_cdclk@mode-transition -kms_cdclk@mode-transition-all-outputs -kms_color@degamma -kms_color@gamma -kms_color@legacy-gamma -kms_color@legacy-gamma-reset -kms_color@ctm-red-to-blue -kms_color@ctm-green-to-red -kms_color@ctm-blue-to-red -kms_color@ctm-max -kms_color@ctm-negative -kms_color@ctm-0-25 -kms_color@ctm-0-50 -kms_color@ctm-0-75 -kms_color@ctm-signed -kms_color@deep-color -kms_color@invalid-gamma-lut-sizes -kms_color@invalid-degamma-lut-sizes -kms_color@invalid-ctm-matrix-sizes -kms_concurrent@multi-plane-atomic-lowres -kms_content_protection@legacy -kms_content_protection@atomic -kms_content_protection@atomic-dpms -kms_content_protection@lic -kms_content_protection@type1 -kms_content_protection@mei-interface -kms_content_protection@content-type-change -kms_content_protection@uevent -kms_content_protection@srm -kms_content_protection@dp-mst-type-0 -kms_content_protection@dp-mst-lic-type-0 -kms_content_protection@dp-mst-type-1 -kms_content_protection@dp-mst-lic-type-1 -kms_cursor_crc@cursor-size-change -kms_cursor_crc@cursor-alpha-opaque -kms_cursor_crc@cursor-alpha-transparent -kms_cursor_crc@cursor-dpms -kms_cursor_crc@cursor-suspend -kms_cursor_crc@cursor-onscreen-32x32 -kms_cursor_crc@cursor-offscreen-32x32 -kms_cursor_crc@cursor-sliding-32x32 -kms_cursor_crc@cursor-random-32x32 -kms_cursor_crc@cursor-rapid-movement-32x32 -kms_cursor_crc@cursor-onscreen-32x10 -kms_cursor_crc@cursor-offscreen-32x10 -kms_cursor_crc@cursor-sliding-32x10 -kms_cursor_crc@cursor-random-32x10 -kms_cursor_crc@cursor-rapid-movement-32x10 -kms_cursor_crc@cursor-onscreen-64x64 -kms_cursor_crc@cursor-offscreen-64x64 -kms_cursor_crc@cursor-sliding-64x64 -kms_cursor_crc@cursor-random-64x64 -kms_cursor_crc@cursor-rapid-movement-64x64 -kms_cursor_crc@cursor-onscreen-64x21 -kms_cursor_crc@cursor-offscreen-64x21 -kms_cursor_crc@cursor-sliding-64x21 -kms_cursor_crc@cursor-random-64x21 -kms_cursor_crc@cursor-rapid-movement-64x21 -kms_cursor_crc@cursor-onscreen-128x128 -kms_cursor_crc@cursor-offscreen-128x128 -kms_cursor_crc@cursor-sliding-128x128 -kms_cursor_crc@cursor-random-128x128 -kms_cursor_crc@cursor-rapid-movement-128x128 -kms_cursor_crc@cursor-onscreen-128x42 -kms_cursor_crc@cursor-offscreen-128x42 -kms_cursor_crc@cursor-sliding-128x42 -kms_cursor_crc@cursor-random-128x42 -kms_cursor_crc@cursor-rapid-movement-128x42 -kms_cursor_crc@cursor-onscreen-256x256 -kms_cursor_crc@cursor-offscreen-256x256 -kms_cursor_crc@cursor-sliding-256x256 -kms_cursor_crc@cursor-random-256x256 -kms_cursor_crc@cursor-rapid-movement-256x256 -kms_cursor_crc@cursor-onscreen-256x85 -kms_cursor_crc@cursor-offscreen-256x85 -kms_cursor_crc@cursor-sliding-256x85 -kms_cursor_crc@cursor-random-256x85 -kms_cursor_crc@cursor-rapid-movement-256x85 -kms_cursor_crc@cursor-onscreen-512x512 -kms_cursor_crc@cursor-offscreen-512x512 -kms_cursor_crc@cursor-sliding-512x512 -kms_cursor_crc@cursor-random-512x512 -kms_cursor_crc@cursor-rapid-movement-512x512 -kms_cursor_crc@cursor-onscreen-512x170 -kms_cursor_crc@cursor-offscreen-512x170 -kms_cursor_crc@cursor-sliding-512x170 -kms_cursor_crc@cursor-random-512x170 -kms_cursor_crc@cursor-rapid-movement-512x170 -kms_cursor_crc@cursor-onscreen-max-size -kms_cursor_crc@cursor-offscreen-max-size -kms_cursor_crc@cursor-sliding-max-size -kms_cursor_crc@cursor-random-max-size -kms_cursor_crc@cursor-rapid-movement-max-size -kms_cursor_legacy@single-bo -kms_cursor_legacy@single-move -kms_cursor_legacy@forked-bo -kms_cursor_legacy@forked-move -kms_cursor_legacy@torture-bo -kms_cursor_legacy@torture-move -kms_cursor_legacy@nonblocking-modeset-vs-cursor-atomic -kms_cursor_legacy@long-nonblocking-modeset-vs-cursor-atomic -kms_cursor_legacy@2x-flip-vs-cursor-legacy -kms_cursor_legacy@2x-flip-vs-cursor-atomic -kms_cursor_legacy@2x-long-flip-vs-cursor-legacy -kms_cursor_legacy@2x-long-flip-vs-cursor-atomic -kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic -kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic -kms_cursor_legacy@2x-cursor-vs-flip-legacy -kms_cursor_legacy@2x-long-cursor-vs-flip-legacy -kms_cursor_legacy@2x-cursor-vs-flip-atomic -kms_cursor_legacy@2x-long-cursor-vs-flip-atomic -kms_cursor_legacy@flip-vs-cursor-crc-legacy -kms_cursor_legacy@flip-vs-cursor-crc-atomic -kms_cursor_legacy@flip-vs-cursor-busy-crc-legacy -kms_cursor_legacy@flip-vs-cursor-busy-crc-atomic -kms_cursor_legacy@basic-flip-before-cursor-legacy -kms_cursor_legacy@basic-busy-flip-before-cursor-legacy -kms_cursor_legacy@basic-flip-after-cursor-legacy -kms_cursor_legacy@basic-flip-before-cursor-varying-size -kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size -kms_cursor_legacy@basic-flip-after-cursor-varying-size -kms_cursor_legacy@short-flip-before-cursor-toggle -kms_cursor_legacy@short-busy-flip-before-cursor-toggle -kms_cursor_legacy@short-flip-after-cursor-toggle -kms_cursor_legacy@basic-flip-before-cursor-atomic -kms_cursor_legacy@basic-busy-flip-before-cursor-atomic -kms_cursor_legacy@basic-flip-after-cursor-atomic -kms_cursor_legacy@short-flip-before-cursor-atomic-transitions -kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions -kms_cursor_legacy@short-flip-after-cursor-atomic-transitions -kms_cursor_legacy@short-flip-before-cursor-atomic-transitions-varying-size -kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size -kms_cursor_legacy@short-flip-after-cursor-atomic-transitions-varying-size -kms_cursor_legacy@cursor-vs-flip-legacy -kms_cursor_legacy@flip-vs-cursor-legacy -kms_cursor_legacy@cursorA-vs-flipA-legacy -kms_cursor_legacy@cursorA-vs-flipB-legacy -kms_cursor_legacy@cursorB-vs-flipA-legacy -kms_cursor_legacy@cursorB-vs-flipB-legacy -kms_cursor_legacy@cursor-vs-flip-varying-size -kms_cursor_legacy@flip-vs-cursor-varying-size -kms_cursor_legacy@cursorA-vs-flipA-varying-size -kms_cursor_legacy@cursorA-vs-flipB-varying-size -kms_cursor_legacy@cursorB-vs-flipA-varying-size -kms_cursor_legacy@cursorB-vs-flipB-varying-size -kms_cursor_legacy@cursor-vs-flip-toggle -kms_cursor_legacy@flip-vs-cursor-toggle -kms_cursor_legacy@cursorA-vs-flipA-toggle -kms_cursor_legacy@cursorA-vs-flipB-toggle -kms_cursor_legacy@cursorB-vs-flipA-toggle -kms_cursor_legacy@cursorB-vs-flipB-toggle -kms_cursor_legacy@cursor-vs-flip-atomic -kms_cursor_legacy@flip-vs-cursor-atomic -kms_cursor_legacy@cursorA-vs-flipA-atomic -kms_cursor_legacy@cursorA-vs-flipB-atomic -kms_cursor_legacy@cursorB-vs-flipA-atomic -kms_cursor_legacy@cursorB-vs-flipB-atomic -kms_cursor_legacy@cursor-vs-flip-atomic-transitions -kms_cursor_legacy@flip-vs-cursor-atomic-transitions -kms_cursor_legacy@cursorA-vs-flipA-atomic-transitions -kms_cursor_legacy@cursorA-vs-flipB-atomic-transitions -kms_cursor_legacy@cursorB-vs-flipA-atomic-transitions -kms_cursor_legacy@cursorB-vs-flipB-atomic-transitions -kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size -kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size -kms_cursor_legacy@cursorA-vs-flipA-atomic-transitions-varying-size -kms_cursor_legacy@cursorA-vs-flipB-atomic-transitions-varying-size -kms_cursor_legacy@cursorB-vs-flipA-atomic-transitions-varying-size -kms_cursor_legacy@cursorB-vs-flipB-atomic-transitions-varying-size -kms_dither@fb-8bpc-vs-panel-6bpc -kms_dither@fb-8bpc-vs-panel-8bpc -kms_dp_aux_dev -kms_tiled_display@basic-test-pattern -kms_tiled_display@basic-test-pattern-with-chamelium -kms_draw_crc@draw-method-mmap-cpu -kms_draw_crc@draw-method-mmap-gtt -kms_draw_crc@draw-method-mmap-wc -kms_draw_crc@draw-method-pwrite -kms_draw_crc@draw-method-blt -kms_draw_crc@draw-method-render -kms_draw_crc@fill-fb -kms_dsc@dsc-basic -kms_dsc@dsc-with-formats -kms_dsc@dsc-with-bpc -kms_dsc@dsc-with-bpc-formats -kms_dsc@dsc-with-output-formats -kms_fbcon_fbt@fbc -kms_fbcon_fbt@psr -kms_fbcon_fbt@fbc-suspend -kms_fbcon_fbt@psr-suspend -kms_fence_pin_leak -kms_flip@nonblocking-read -kms_flip@wf_vblank-ts-check -kms_flip@2x-wf_vblank-ts-check -kms_flip@blocking-wf_vblank -kms_flip@2x-blocking-wf_vblank -kms_flip@absolute-wf_vblank -kms_flip@2x-absolute-wf_vblank -kms_flip@blocking-absolute-wf_vblank -kms_flip@2x-blocking-absolute-wf_vblank -kms_flip@basic-plain-flip -kms_flip@2x-plain-flip -kms_flip@busy-flip -kms_flip@2x-busy-flip -kms_flip@flip-vs-fences -kms_flip@2x-flip-vs-fences -kms_flip@plain-flip-ts-check -kms_flip@2x-plain-flip-ts-check -kms_flip@plain-flip-fb-recreate -kms_flip@2x-plain-flip-fb-recreate -kms_flip@flip-vs-rmfb -kms_flip@2x-flip-vs-rmfb -kms_flip@basic-flip-vs-dpms -kms_flip@2x-flip-vs-dpms -kms_flip@flip-vs-panning -kms_flip@2x-flip-vs-panning -kms_flip@basic-flip-vs-modeset -kms_flip@2x-flip-vs-modeset -kms_flip@flip-vs-expired-vblank -kms_flip@2x-flip-vs-expired-vblank -kms_flip@flip-vs-absolute-wf_vblank -kms_flip@2x-flip-vs-absolute-wf_vblank -kms_flip@basic-flip-vs-wf_vblank -kms_flip@2x-flip-vs-wf_vblank -kms_flip@flip-vs-blocking-wf-vblank -kms_flip@2x-flip-vs-blocking-wf-vblank -kms_flip@flip-vs-modeset-vs-hang -kms_flip@2x-flip-vs-modeset-vs-hang -kms_flip@flip-vs-panning-vs-hang -kms_flip@2x-flip-vs-panning-vs-hang -kms_flip@flip-vs-dpms-off-vs-modeset -kms_flip@2x-flip-vs-dpms-off-vs-modeset -kms_flip@single-buffer-flip-vs-dpms-off-vs-modeset -kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset -kms_flip@dpms-off-confusion -kms_flip@nonexisting-fb -kms_flip@2x-nonexisting-fb -kms_flip@dpms-vs-vblank-race -kms_flip@2x-dpms-vs-vblank-race -kms_flip@modeset-vs-vblank-race -kms_flip@2x-modeset-vs-vblank-race -kms_flip@bo-too-big -kms_flip@flip-vs-suspend -kms_flip@2x-flip-vs-suspend -kms_flip@wf_vblank-ts-check-interruptible -kms_flip@2x-wf_vblank-ts-check-interruptible -kms_flip@absolute-wf_vblank-interruptible -kms_flip@2x-absolute-wf_vblank-interruptible -kms_flip@blocking-absolute-wf_vblank-interruptible -kms_flip@2x-blocking-absolute-wf_vblank-interruptible -kms_flip@plain-flip-interruptible -kms_flip@2x-plain-flip-interruptible -kms_flip@flip-vs-fences-interruptible -kms_flip@2x-flip-vs-fences-interruptible -kms_flip@plain-flip-ts-check-interruptible -kms_flip@2x-plain-flip-ts-check-interruptible -kms_flip@plain-flip-fb-recreate-interruptible -kms_flip@2x-plain-flip-fb-recreate-interruptible -kms_flip@flip-vs-rmfb-interruptible -kms_flip@2x-flip-vs-rmfb-interruptible -kms_flip@flip-vs-panning-interruptible -kms_flip@2x-flip-vs-panning-interruptible -kms_flip@flip-vs-expired-vblank-interruptible -kms_flip@2x-flip-vs-expired-vblank-interruptible -kms_flip@flip-vs-absolute-wf_vblank-interruptible -kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible -kms_flip@flip-vs-wf_vblank-interruptible -kms_flip@2x-flip-vs-wf_vblank-interruptible -kms_flip@flip-vs-dpms-off-vs-modeset-interruptible -kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible -kms_flip@single-buffer-flip-vs-dpms-off-vs-modeset-interruptible -kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset-interruptible -kms_flip@dpms-off-confusion-interruptible -kms_flip@nonexisting-fb-interruptible -kms_flip@2x-nonexisting-fb-interruptible -kms_flip@dpms-vs-vblank-race-interruptible -kms_flip@2x-dpms-vs-vblank-race-interruptible -kms_flip@modeset-vs-vblank-race-interruptible -kms_flip@2x-modeset-vs-vblank-race-interruptible -kms_flip@bo-too-big-interruptible -kms_flip@flip-vs-suspend-interruptible -kms_flip@2x-flip-vs-suspend-interruptible -kms_flip_event_leak@basic -kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling -kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling -kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling -kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling -kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling -kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling -kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling -kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling -kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling -kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling -kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling -kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling -kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling -kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling -kms_flip_scaled_crc@flip-64bpp-linear-to-16bpp-linear-downscaling -kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling -kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling -kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling -kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling -kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling -kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling -kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling -kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling -kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling -kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling -kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-upscaling -kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling -kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-upscaling -kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling -kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling -kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-upscaling -kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling -kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-upscaling -kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling -kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling -kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-upscaling -kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling -kms_flip_scaled_crc@flip-64bpp-linear-to-16bpp-linear-upscaling -kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling -kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling -kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling -kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling -kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling -kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling -kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling -kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling -kms_force_connector_basic@force-load-detect -kms_force_connector_basic@force-connector-state -kms_force_connector_basic@force-edid -kms_force_connector_basic@prune-stale-modes -kms_frontbuffer_tracking@fbc-1p-rte -kms_frontbuffer_tracking@fbc-2p-rte -kms_frontbuffer_tracking@psr-1p-rte -kms_frontbuffer_tracking@psr-2p-rte -kms_frontbuffer_tracking@fbcpsr-1p-rte -kms_frontbuffer_tracking@fbcpsr-2p-rte -kms_frontbuffer_tracking@drrs-1p-rte -kms_frontbuffer_tracking@drrs-2p-rte -kms_frontbuffer_tracking@fbcdrrs-1p-rte -kms_frontbuffer_tracking@fbcdrrs-2p-rte -kms_frontbuffer_tracking@psrdrrs-1p-rte -kms_frontbuffer_tracking@psrdrrs-2p-rte -kms_frontbuffer_tracking@fbcpsrdrrs-1p-rte -kms_frontbuffer_tracking@fbcpsrdrrs-2p-rte -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-blt -kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@drrs-1p-offscren-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psrdrrs-1p-primscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psrdrrs-1p-offscren-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psrdrrs-2p-primscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsrdrrs-1p-offscren-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-pri-shrfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-draw-render -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-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-draw-render -kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-msflip-blt -kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-plflip-blt -kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-msflip-blt -kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-plflip-blt -kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-msflip-blt -kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt -kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@psr-1p-primscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@psr-1p-primscrn-indfb-msflip-blt -kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt -kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@psr-2p-primscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@psr-2p-primscrn-indfb-msflip-blt -kms_frontbuffer_tracking@psr-2p-primscrn-indfb-plflip-blt -kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt -kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-plflip-blt -kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-msflip-blt -kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt -kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-msflip-blt -kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-plflip-blt -kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-msflip-blt -kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-plflip-blt -kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-msflip-blt -kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-plflip-blt -kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-msflip-blt -kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-plflip-blt -kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-msflip-blt -kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-plflip-blt -kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-msflip-blt -kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-plflip-blt -kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-msflip-blt -kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-plflip-blt -kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-msflip-blt -kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-plflip-blt -kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@psrdrrs-1p-primscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@psrdrrs-1p-primscrn-indfb-msflip-blt -kms_frontbuffer_tracking@psrdrrs-1p-primscrn-indfb-plflip-blt -kms_frontbuffer_tracking@psrdrrs-1p-primscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@psrdrrs-1p-primscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@psrdrrs-1p-primscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@psrdrrs-2p-primscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@psrdrrs-2p-primscrn-indfb-msflip-blt -kms_frontbuffer_tracking@psrdrrs-2p-primscrn-indfb-plflip-blt -kms_frontbuffer_tracking@psrdrrs-2p-primscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@psrdrrs-2p-primscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@psrdrrs-2p-primscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-indfb-msflip-blt -kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-indfb-plflip-blt -kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-indfb-msflip-blt -kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-indfb-plflip-blt -kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-indfb-msflip-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-indfb-plflip-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-indfb-pgflip-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-indfb-msflip-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-indfb-plflip-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-shrfb-pgflip-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-shrfb-msflip-blt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-shrfb-plflip-blt -kms_frontbuffer_tracking@fbc-1p-indfb-fliptrack-mmap-gtt -kms_frontbuffer_tracking@fbc-1p-shrfb-fliptrack-mmap-gtt -kms_frontbuffer_tracking@fbc-2p-indfb-fliptrack-mmap-gtt -kms_frontbuffer_tracking@fbc-2p-shrfb-fliptrack-mmap-gtt -kms_frontbuffer_tracking@fbcpsr-1p-indfb-fliptrack-mmap-gtt -kms_frontbuffer_tracking@fbcpsr-1p-shrfb-fliptrack-mmap-gtt -kms_frontbuffer_tracking@fbcpsr-2p-indfb-fliptrack-mmap-gtt -kms_frontbuffer_tracking@fbcpsr-2p-shrfb-fliptrack-mmap-gtt -kms_frontbuffer_tracking@fbcdrrs-1p-indfb-fliptrack-mmap-gtt -kms_frontbuffer_tracking@fbcdrrs-1p-shrfb-fliptrack-mmap-gtt -kms_frontbuffer_tracking@fbcdrrs-2p-indfb-fliptrack-mmap-gtt -kms_frontbuffer_tracking@fbcdrrs-2p-shrfb-fliptrack-mmap-gtt -kms_frontbuffer_tracking@fbcpsrdrrs-1p-indfb-fliptrack-mmap-gtt -kms_frontbuffer_tracking@fbcpsrdrrs-1p-shrfb-fliptrack-mmap-gtt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-indfb-fliptrack-mmap-gtt -kms_frontbuffer_tracking@fbcpsrdrrs-2p-shrfb-fliptrack-mmap-gtt -kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move -kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-onoff -kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-move -kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff -kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move -kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-onoff -kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-move -kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff -kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-move -kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-onoff -kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-move -kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff -kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move -kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-onoff -kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-move -kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-onoff -kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-move -kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-onoff -kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-move -kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-onoff -kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-move -kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-onoff -kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-move -kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-onoff -kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move -kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-onoff -kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-move -kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-onoff -kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-move -kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-onoff -kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-move -kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-onoff -kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-move -kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-onoff -kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-move -kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff -kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-move -kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-onoff -kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-move -kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-onoff -kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-move -kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-onoff -kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-move -kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-onoff -kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-move -kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-onoff -kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-move -kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-onoff -kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-move -kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-onoff -kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-move -kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-onoff -kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-move -kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-onoff -kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-move -kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-onoff -kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-move -kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-onoff -kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-move -kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-onoff -kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-move -kms_frontbuffer_tracking@psrdrrs-1p-primscrn-cur-indfb-onoff -kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-move -kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-onoff -kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-move -kms_frontbuffer_tracking@psrdrrs-2p-primscrn-cur-indfb-onoff -kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-move -kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-onoff -kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-move -kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-cur-indfb-onoff -kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-move -kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-onoff -kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-move -kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-cur-indfb-onoff -kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-move -kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-onoff -kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-move -kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-cur-indfb-onoff -kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-move -kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-onoff -kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-move -kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-cur-indfb-onoff -kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-move -kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-onoff -kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@psrdrrs-1p-primscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@psrdrrs-2p-primscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@psrdrrs-2p-scndscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@fbcpsrdrrs-1p-primscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@fbcpsrdrrs-2p-primscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@fbcpsrdrrs-2p-scndscrn-spr-indfb-fullscreen -kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw -kms_frontbuffer_tracking@fbc-2p-pri-indfb-multidraw -kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw -kms_frontbuffer_tracking@psr-2p-pri-indfb-multidraw -kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw -kms_frontbuffer_tracking@fbcpsr-2p-pri-indfb-multidraw -kms_frontbuffer_tracking@drrs-1p-pri-indfb-multidraw -kms_frontbuffer_tracking@drrs-2p-pri-indfb-multidraw -kms_frontbuffer_tracking@fbcdrrs-1p-pri-indfb-multidraw -kms_frontbuffer_tracking@fbcdrrs-2p-pri-indfb-multidraw -kms_frontbuffer_tracking@psrdrrs-1p-pri-indfb-multidraw -kms_frontbuffer_tracking@psrdrrs-2p-pri-indfb-multidraw -kms_frontbuffer_tracking@fbcpsrdrrs-1p-pri-indfb-multidraw -kms_frontbuffer_tracking@fbcpsrdrrs-2p-pri-indfb-multidraw -kms_frontbuffer_tracking@fbc-farfromfence-mmap-gtt -kms_frontbuffer_tracking@psr-farfromfence-mmap-gtt -kms_frontbuffer_tracking@fbcpsr-farfromfence-mmap-gtt -kms_frontbuffer_tracking@drrs-farfromfence-mmap-gtt -kms_frontbuffer_tracking@fbcdrrs-farfromfence-mmap-gtt -kms_frontbuffer_tracking@psrdrrs-farfromfence-mmap-gtt -kms_frontbuffer_tracking@fbcpsrdrrs-farfromfence-mmap-gtt -kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-cpu -kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-cpu -kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-gtt -kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-gtt -kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-wc -kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-wc -kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite -kms_frontbuffer_tracking@fbc-rgb101010-draw-pwrite -kms_frontbuffer_tracking@fbc-rgb565-draw-blt -kms_frontbuffer_tracking@fbc-rgb101010-draw-blt -kms_frontbuffer_tracking@fbc-rgb565-draw-render -kms_frontbuffer_tracking@fbc-rgb101010-draw-render -kms_frontbuffer_tracking@psr-rgb565-draw-mmap-cpu -kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-cpu -kms_frontbuffer_tracking@psr-rgb565-draw-mmap-gtt -kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-gtt -kms_frontbuffer_tracking@psr-rgb565-draw-mmap-wc -kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-wc -kms_frontbuffer_tracking@psr-rgb565-draw-pwrite -kms_frontbuffer_tracking@psr-rgb101010-draw-pwrite -kms_frontbuffer_tracking@psr-rgb565-draw-blt -kms_frontbuffer_tracking@psr-rgb101010-draw-blt -kms_frontbuffer_tracking@psr-rgb565-draw-render -kms_frontbuffer_tracking@psr-rgb101010-draw-render -kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-cpu -kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-cpu -kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-gtt -kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-gtt -kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-wc -kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc -kms_frontbuffer_tracking@fbcpsr-rgb565-draw-pwrite -kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-pwrite -kms_frontbuffer_tracking@fbcpsr-rgb565-draw-blt -kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt -kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render -kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-render -kms_frontbuffer_tracking@drrs-rgb565-draw-mmap-cpu -kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-cpu -kms_frontbuffer_tracking@drrs-rgb565-draw-mmap-gtt -kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-gtt -kms_frontbuffer_tracking@drrs-rgb565-draw-mmap-wc -kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-wc -kms_frontbuffer_tracking@drrs-rgb565-draw-pwrite -kms_frontbuffer_tracking@drrs-rgb101010-draw-pwrite -kms_frontbuffer_tracking@drrs-rgb565-draw-blt -kms_frontbuffer_tracking@drrs-rgb101010-draw-blt -kms_frontbuffer_tracking@drrs-rgb565-draw-render -kms_frontbuffer_tracking@drrs-rgb101010-draw-render -kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-mmap-cpu -kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-cpu -kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-mmap-gtt -kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-gtt -kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-mmap-wc -kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-wc -kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-pwrite -kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-pwrite -kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-blt -kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-blt -kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-render -kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-render -kms_frontbuffer_tracking@psrdrrs-rgb565-draw-mmap-cpu -kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-mmap-cpu -kms_frontbuffer_tracking@psrdrrs-rgb565-draw-mmap-gtt -kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-mmap-gtt -kms_frontbuffer_tracking@psrdrrs-rgb565-draw-mmap-wc -kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-mmap-wc -kms_frontbuffer_tracking@psrdrrs-rgb565-draw-pwrite -kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-pwrite -kms_frontbuffer_tracking@psrdrrs-rgb565-draw-blt -kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-blt -kms_frontbuffer_tracking@psrdrrs-rgb565-draw-render -kms_frontbuffer_tracking@psrdrrs-rgb101010-draw-render -kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-mmap-cpu -kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-mmap-cpu -kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-mmap-gtt -kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-mmap-gtt -kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-mmap-wc -kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-mmap-wc -kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-pwrite -kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-pwrite -kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-blt -kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-blt -kms_frontbuffer_tracking@fbcpsrdrrs-rgb565-draw-render -kms_frontbuffer_tracking@fbcpsrdrrs-rgb101010-draw-render -kms_frontbuffer_tracking@fbc-indfb-scaledprimary -kms_frontbuffer_tracking@fbc-shrfb-scaledprimary -kms_frontbuffer_tracking@psr-indfb-scaledprimary -kms_frontbuffer_tracking@psr-shrfb-scaledprimary -kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary -kms_frontbuffer_tracking@fbcpsr-shrfb-scaledprimary -kms_frontbuffer_tracking@drrs-indfb-scaledprimary -kms_frontbuffer_tracking@drrs-shrfb-scaledprimary -kms_frontbuffer_tracking@fbcdrrs-indfb-scaledprimary -kms_frontbuffer_tracking@fbcdrrs-shrfb-scaledprimary -kms_frontbuffer_tracking@psrdrrs-indfb-scaledprimary -kms_frontbuffer_tracking@psrdrrs-shrfb-scaledprimary -kms_frontbuffer_tracking@fbcpsrdrrs-indfb-scaledprimary -kms_frontbuffer_tracking@fbcpsrdrrs-shrfb-scaledprimary -kms_frontbuffer_tracking@fbc-modesetfrombusy -kms_frontbuffer_tracking@fbc-stridechange -kms_frontbuffer_tracking@fbc-tiling-linear -kms_frontbuffer_tracking@fbc-tiling-y -kms_frontbuffer_tracking@fbc-tiling-4 -kms_frontbuffer_tracking@fbc-suspend -kms_frontbuffer_tracking@psr-modesetfrombusy -kms_frontbuffer_tracking@psr-slowdraw -kms_frontbuffer_tracking@psr-suspend -kms_frontbuffer_tracking@fbcpsr-modesetfrombusy -kms_frontbuffer_tracking@fbcpsr-stridechange -kms_frontbuffer_tracking@fbcpsr-tiling-linear -kms_frontbuffer_tracking@fbcpsr-tiling-y -kms_frontbuffer_tracking@fbcpsr-tiling-4 -kms_frontbuffer_tracking@fbcpsr-slowdraw -kms_frontbuffer_tracking@fbcpsr-suspend -kms_frontbuffer_tracking@drrs-modesetfrombusy -kms_frontbuffer_tracking@drrs-slowdraw -kms_frontbuffer_tracking@drrs-suspend -kms_frontbuffer_tracking@fbcdrrs-modesetfrombusy -kms_frontbuffer_tracking@fbcdrrs-stridechange -kms_frontbuffer_tracking@fbcdrrs-tiling-linear -kms_frontbuffer_tracking@fbcdrrs-tiling-y -kms_frontbuffer_tracking@fbcdrrs-tiling-4 -kms_frontbuffer_tracking@fbcdrrs-slowdraw -kms_frontbuffer_tracking@fbcdrrs-suspend -kms_frontbuffer_tracking@psrdrrs-modesetfrombusy -kms_frontbuffer_tracking@psrdrrs-slowdraw -kms_frontbuffer_tracking@psrdrrs-suspend -kms_frontbuffer_tracking@fbcpsrdrrs-modesetfrombusy -kms_frontbuffer_tracking@fbcpsrdrrs-stridechange -kms_frontbuffer_tracking@fbcpsrdrrs-tiling-linear -kms_frontbuffer_tracking@fbcpsrdrrs-tiling-y -kms_frontbuffer_tracking@fbcpsrdrrs-tiling-4 -kms_frontbuffer_tracking@fbcpsrdrrs-slowdraw -kms_frontbuffer_tracking@fbcpsrdrrs-suspend -kms_frontbuffer_tracking@basic -kms_getfb@getfb-handle-zero -kms_getfb@getfb-handle-valid -kms_getfb@getfb-handle-closed -kms_getfb@getfb-handle-not-fb -kms_getfb@getfb-addfb-different-handles -kms_getfb@getfb-repeated-different-handles -kms_getfb@getfb-reject-ccs -kms_getfb@getfb2-handle-zero -kms_getfb@getfb2-handle-closed -kms_getfb@getfb2-handle-not-fb -kms_getfb@getfb2-accept-ccs -kms_getfb@getfb2-into-addfb2 -kms_getfb@getfb-handle-protection -kms_getfb@getfb2-handle-protection -kms_hdmi_inject@inject-4k -kms_hdmi_inject@inject-audio -kms_hdr@bpc-switch -kms_hdr@bpc-switch-dpms -kms_hdr@bpc-switch-suspend -kms_hdr@static-toggle -kms_hdr@static-toggle-dpms -kms_hdr@static-toggle-suspend -kms_hdr@static-swap -kms_hdr@invalid-metadata-sizes -kms_hdr@invalid-hdr -kms_invalid_mode@clock-too-high -kms_invalid_mode@zero-clock -kms_invalid_mode@int-max-clock -kms_invalid_mode@uint-max-clock -kms_invalid_mode@zero-hdisplay -kms_invalid_mode@zero-vdisplay -kms_invalid_mode@bad-hsync-start -kms_invalid_mode@bad-vsync-start -kms_invalid_mode@bad-hsync-end -kms_invalid_mode@bad-vsync-end -kms_invalid_mode@bad-htotal -kms_invalid_mode@bad-vtotal -kms_legacy_colorkey@basic -kms_legacy_colorkey@invalid-plane -kms_multipipe_modeset@basic-max-pipe-crc-check -kms_panel_fitting@legacy -kms_panel_fitting@atomic-fastset -kms_pipe_b_c_ivb@pipe-B-dpms-off-modeset-pipe-C -kms_pipe_b_c_ivb@pipe-B-double-modeset-then-modeset-pipe-C -kms_pipe_b_c_ivb@disable-pipe-B-enable-pipe-C -kms_pipe_b_c_ivb@from-pipe-C-to-B-with-3-lanes -kms_pipe_b_c_ivb@enable-pipe-C-while-B-has-3-lanes -kms_pipe_crc_basic@bad-source -kms_pipe_crc_basic@read-crc -kms_pipe_crc_basic@read-crc-frame-sequence -kms_pipe_crc_basic@nonblocking-crc -kms_pipe_crc_basic@nonblocking-crc-frame-sequence -kms_pipe_crc_basic@suspend-read-crc -kms_pipe_crc_basic@hang-read-crc -kms_pipe_crc_basic@disable-crc-after-crtc -kms_pipe_crc_basic@compare-crc-sanitycheck-xr24 -kms_pipe_crc_basic@compare-crc-sanitycheck-nv12 -kms_plane@pixel-format -kms_plane@pixel-format-source-clamping -kms_plane@plane-position-covered -kms_plane@plane-position-hole -kms_plane@plane-position-hole-dpms -kms_plane@plane-panning-top-left -kms_plane@plane-panning-bottom-right -kms_plane@plane-panning-bottom-right-suspend -kms_plane@planar-pixel-format-settings -kms_plane_alpha_blend@alpha-basic -kms_plane_alpha_blend@alpha-7efc -kms_plane_alpha_blend@coverage-7efc -kms_plane_alpha_blend@coverage-vs-premult-vs-constant -kms_plane_alpha_blend@alpha-transparent-fb -kms_plane_alpha_blend@alpha-opaque-fb -kms_plane_alpha_blend@constant-alpha-min -kms_plane_alpha_blend@constant-alpha-mid -kms_plane_alpha_blend@constant-alpha-max -kms_plane_cursor@primary -kms_plane_cursor@overlay -kms_plane_cursor@viewport -kms_plane_lowres@tiling-none -kms_plane_lowres@tiling-x -kms_plane_lowres@tiling-y -kms_plane_lowres@tiling-yf -kms_plane_lowres@tiling-4 -kms_plane_multiple@tiling-none -kms_plane_multiple@tiling-x -kms_plane_multiple@tiling-y -kms_plane_multiple@tiling-yf -kms_plane_multiple@tiling-4 -kms_plane_scaling@plane-upscale-20x20-with-pixel-format -kms_plane_scaling@plane-upscale-factor-0-25-with-pixel-format -kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format -kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format -kms_plane_scaling@plane-downscale-factor-0-75-with-pixel-format -kms_plane_scaling@plane-scaler-unity-scaling-with-pixel-format -kms_plane_scaling@plane-upscale-20x20-with-rotation -kms_plane_scaling@plane-upscale-factor-0-25-with-rotation -kms_plane_scaling@plane-downscale-factor-0-25-with-rotation -kms_plane_scaling@plane-downscale-factor-0-5-with-rotation -kms_plane_scaling@plane-downscale-factor-0-75-with-rotation -kms_plane_scaling@plane-scaler-unity-scaling-with-rotation -kms_plane_scaling@plane-upscale-20x20-with-modifiers -kms_plane_scaling@plane-upscale-factor-0-25-with-modifiers -kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers -kms_plane_scaling@plane-downscale-factor-0-5-with-modifiers -kms_plane_scaling@plane-downscale-factor-0-75-with-modifiers -kms_plane_scaling@plane-scaler-unity-scaling-with-modifiers -kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats -kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation -kms_plane_scaling@plane-scaler-with-clipping-clamping-modifiers -kms_plane_scaling@planes-upscale-20x20 -kms_plane_scaling@planes-upscale-factor-0-25 -kms_plane_scaling@planes-scaler-unity-scaling -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-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-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@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-downscale-factor-0-25-upscale-20x20 -kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25 -kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling -kms_plane_scaling@planes-downscale-factor-0-5-upscale-20x20 -kms_plane_scaling@planes-downscale-factor-0-5-upscale-factor-0-25 -kms_plane_scaling@planes-downscale-factor-0-5-unity-scaling -kms_plane_scaling@planes-downscale-factor-0-75-upscale-20x20 -kms_plane_scaling@planes-downscale-factor-0-75-upscale-factor-0-25 -kms_plane_scaling@planes-downscale-factor-0-75-unity-scaling -kms_plane_scaling@intel-max-src-size -kms_plane_scaling@invalid-num-scalers -kms_plane_scaling@invalid-parameters -kms_plane_scaling@2x-scaler-multi-pipe -kms_prime@basic-crc-hybrid -kms_prime@basic-modeset-hybrid -kms_prime@D3hot -kms_prime@basic-crc-vgem -kms_prop_blob@basic -kms_prop_blob@blob-prop-core -kms_prop_blob@blob-prop-validate -kms_prop_blob@blob-prop-lifetime -kms_prop_blob@blob-multiple -kms_prop_blob@invalid-get-prop-any -kms_prop_blob@invalid-get-prop -kms_prop_blob@invalid-set-prop-any -kms_prop_blob@invalid-set-prop -kms_properties@plane-properties-legacy -kms_properties@plane-properties-atomic -kms_properties@crtc-properties-legacy -kms_properties@crtc-properties-atomic -kms_properties@connector-properties-legacy -kms_properties@connector-properties-atomic -kms_properties@invalid-properties-legacy -kms_properties@invalid-properties-atomic -kms_properties@get_properties-sanity-atomic -kms_properties@get_properties-sanity-non-atomic -kms_psr@pr-basic -kms_psr@pr-no-drrs -kms_psr@pr-primary-page-flip -kms_psr@pr-primary-mmap-gtt -kms_psr@pr-primary-mmap-cpu -kms_psr@pr-primary-blt -kms_psr@pr-primary-render -kms_psr@pr-sprite-mmap-gtt -kms_psr@pr-cursor-mmap-gtt -kms_psr@pr-sprite-mmap-cpu -kms_psr@pr-cursor-mmap-cpu -kms_psr@pr-sprite-blt -kms_psr@pr-cursor-blt -kms_psr@pr-sprite-render -kms_psr@pr-cursor-render -kms_psr@pr-sprite-plane-move -kms_psr@pr-cursor-plane-move -kms_psr@pr-sprite-plane-onoff -kms_psr@pr-cursor-plane-onoff -kms_psr@pr-dpms -kms_psr@pr-suspend -kms_psr@psr-basic -kms_psr@psr-no-drrs -kms_psr@psr-primary-page-flip -kms_psr@psr-primary-mmap-gtt -kms_psr@psr-primary-mmap-cpu -kms_psr@psr-primary-blt -kms_psr@psr-primary-render -kms_psr@psr-sprite-mmap-gtt -kms_psr@psr-cursor-mmap-gtt -kms_psr@psr-sprite-mmap-cpu -kms_psr@psr-cursor-mmap-cpu -kms_psr@psr-sprite-blt -kms_psr@psr-cursor-blt -kms_psr@psr-sprite-render -kms_psr@psr-cursor-render -kms_psr@psr-sprite-plane-move -kms_psr@psr-cursor-plane-move -kms_psr@psr-sprite-plane-onoff -kms_psr@psr-cursor-plane-onoff -kms_psr@psr-dpms -kms_psr@psr-suspend -kms_psr@psr2-basic -kms_psr@psr2-no-drrs -kms_psr@psr2-primary-page-flip -kms_psr@psr2-primary-mmap-gtt -kms_psr@psr2-primary-mmap-cpu -kms_psr@psr2-primary-blt -kms_psr@psr2-primary-render -kms_psr@psr2-sprite-mmap-gtt -kms_psr@psr2-cursor-mmap-gtt -kms_psr@psr2-sprite-mmap-cpu -kms_psr@psr2-cursor-mmap-cpu -kms_psr@psr2-sprite-blt -kms_psr@psr2-cursor-blt -kms_psr@psr2-sprite-render -kms_psr@psr2-cursor-render -kms_psr@psr2-sprite-plane-move -kms_psr@psr2-cursor-plane-move -kms_psr@psr2-sprite-plane-onoff -kms_psr@psr2-cursor-plane-onoff -kms_psr@psr2-dpms -kms_psr@psr2-suspend -kms_psr2_sf@primary-plane-update-sf-dmg-area -kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb -kms_psr2_sf@overlay-plane-update-sf-dmg-area -kms_psr2_sf@cursor-plane-update-sf -kms_psr2_sf@cursor-plane-move-continuous-sf -kms_psr2_sf@cursor-plane-move-continuous-exceed-sf -kms_psr2_sf@cursor-plane-move-continuous-exceed-fully-sf -kms_psr2_sf@plane-move-sf-dmg-area -kms_psr2_sf@overlay-plane-move-continuous-sf -kms_psr2_sf@overlay-plane-move-continuous-exceed-sf -kms_psr2_sf@overlay-plane-move-continuous-exceed-fully-sf -kms_psr2_sf@overlay-primary-update-sf-dmg-area -kms_psr2_sf@overlay-plane-update-continuous-sf -kms_psr2_su@page_flip-XRGB8888 -kms_psr2_su@page_flip-NV12 -kms_psr2_su@page_flip-P010 -kms_psr2_su@frontbuffer-XRGB8888 -kms_pwrite_crc -kms_rmfb@rmfb-ioctl -kms_rmfb@close-fd -kms_rotation_crc@primary-rotation-90 -kms_rotation_crc@primary-rotation-180 -kms_rotation_crc@primary-rotation-270 -kms_rotation_crc@sprite-rotation-90 -kms_rotation_crc@sprite-rotation-180 -kms_rotation_crc@sprite-rotation-270 -kms_rotation_crc@cursor-rotation-180 -kms_rotation_crc@sprite-rotation-90-pos-100-0 -kms_rotation_crc@bad-pixel-format -kms_rotation_crc@bad-tiling -kms_rotation_crc@primary-x-tiled-reflect-x-0 -kms_rotation_crc@primary-x-tiled-reflect-x-180 -kms_rotation_crc@primary-y-tiled-reflect-x-0 -kms_rotation_crc@primary-y-tiled-reflect-x-90 -kms_rotation_crc@primary-y-tiled-reflect-x-180 -kms_rotation_crc@primary-y-tiled-reflect-x-270 -kms_rotation_crc@primary-yf-tiled-reflect-x-0 -kms_rotation_crc@primary-yf-tiled-reflect-x-90 -kms_rotation_crc@primary-yf-tiled-reflect-x-180 -kms_rotation_crc@primary-yf-tiled-reflect-x-270 -kms_rotation_crc@primary-4-tiled-reflect-x-0 -kms_rotation_crc@primary-4-tiled-reflect-x-180 -kms_rotation_crc@multiplane-rotation -kms_rotation_crc@multiplane-rotation-cropping-top -kms_rotation_crc@multiplane-rotation-cropping-bottom -kms_rotation_crc@exhaust-fences -kms_scaling_modes@scaling-mode-full -kms_scaling_modes@scaling-mode-center -kms_scaling_modes@scaling-mode-full-aspect -kms_scaling_modes@scaling-mode-none -kms_selftest@drm_cmdline_parser -kms_selftest@drm_damage_helper -kms_selftest@drm_dp_mst_helper -kms_selftest@drm_format_helper -kms_selftest@drm_format -kms_selftest@drm_framebuffer -kms_selftest@drm_plane_helper -kms_setmode@basic -kms_setmode@basic-clone-single-crtc -kms_setmode@invalid-clone-single-crtc -kms_setmode@invalid-clone-exclusive-crtc -kms_setmode@clone-exclusive-crtc -kms_setmode@invalid-clone-single-crtc-stealing -kms_sysfs_edid_timing -kms_tv_load_detect@load-detect -kms_universal_plane@universal-plane-functional -kms_universal_plane@universal-plane-sanity -kms_universal_plane@disable-primary-vs-flip -kms_universal_plane@cursor-fb-leak -kms_universal_plane@universal-plane-pageflip-windowed -kms_vblank@invalid -kms_vblank@crtc-id -kms_vblank@accuracy-idle -kms_vblank@query-idle -kms_vblank@query-idle-hang -kms_vblank@query-forked -kms_vblank@query-forked-hang -kms_vblank@query-busy -kms_vblank@query-busy-hang -kms_vblank@query-forked-busy -kms_vblank@query-forked-busy-hang -kms_vblank@wait-idle -kms_vblank@wait-idle-hang -kms_vblank@wait-forked -kms_vblank@wait-forked-hang -kms_vblank@wait-busy -kms_vblank@wait-busy-hang -kms_vblank@wait-forked-busy -kms_vblank@wait-forked-busy-hang -kms_vblank@ts-continuation-idle -kms_vblank@ts-continuation-idle-hang -kms_vblank@ts-continuation-dpms-rpm -kms_vblank@ts-continuation-dpms-suspend -kms_vblank@ts-continuation-suspend -kms_vblank@ts-continuation-modeset -kms_vblank@ts-continuation-modeset-hang -kms_vblank@ts-continuation-modeset-rpm -kms_vrr@flip-basic -kms_vrr@flip-dpms -kms_vrr@flip-suspend -kms_vrr@flipline -kms_vrr@negative-basic -kms_writeback@writeback-pixel-formats -kms_writeback@writeback-invalid-parameters -kms_writeback@writeback-fb-id -kms_writeback@writeback-check-output -prime_mmap_kms@buffer-sharing -msm_shrink@copy-gpu-sanitycheck-8 -msm_shrink@copy-gpu-sanitycheck-32 -msm_shrink@copy-gpu-8 -msm_shrink@copy-gpu-32 -msm_shrink@copy-gpu-madvise-8 -msm_shrink@copy-gpu-madvise-32 -msm_shrink@copy-gpu-oom-8 -msm_shrink@copy-gpu-oom-32 -msm_shrink@copy-mmap-sanitycheck-8 -msm_shrink@copy-mmap-sanitycheck-32 -msm_shrink@copy-mmap-8 -msm_shrink@copy-mmap-32 -msm_shrink@copy-mmap-madvise-8 -msm_shrink@copy-mmap-madvise-32 -msm_shrink@copy-mmap-oom-8 -msm_shrink@copy-mmap-oom-32 -msm_shrink@copy-mmap-dmabuf-sanitycheck-8 -msm_shrink@copy-mmap-dmabuf-sanitycheck-32 -msm_shrink@copy-mmap-dmabuf-8 -msm_shrink@copy-mmap-dmabuf-32 -msm_shrink@copy-mmap-dmabuf-madvise-8 -msm_shrink@copy-mmap-dmabuf-madvise-32 -msm_shrink@copy-mmap-dmabuf-oom-8 -msm_shrink@copy-mmap-dmabuf-oom-32 -msm_mapping@ring -msm_mapping@sqefw -msm_mapping@shadow -msm_submitoverhead@submitbench-10-bos -msm_submitoverhead@submitbench-10-bos-no-implicit-sync -msm_submitoverhead@submitbench-100-bos -msm_submitoverhead@submitbench-100-bos-no-implicit-sync -msm_submitoverhead@submitbench-250-bos -msm_submitoverhead@submitbench-250-bos-no-implicit-sync -msm_submitoverhead@submitbench-500-bos -msm_submitoverhead@submitbench-500-bos-no-implicit-sync -msm_submitoverhead@submitbench-1000-bos -msm_submitoverhead@submitbench-1000-bos-no-implicit-sync -msm_recovery@hangcheck -msm_recovery@gpu-fault -msm_recovery@gpu-fault-parallel -msm_recovery@iova-fault -msm_submit@empty-submit -msm_submit@invalid-queue-submit -msm_submit@invalid-flags-submit -msm_submit@invalid-in-fence-submit -msm_submit@invalid-duplicate-bo-submit -msm_submit@invalid-cmd-idx-submit -msm_submit@invalid-cmd-type-submit -msm_submit@valid-submit diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt index ea87dc46bc2b..e8c2f4044a92 100644 --- a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt +++ b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-fails.txt @@ -1,27 +1,40 @@ +amdgpu/amd_abm@abm_enabled,Fail +amdgpu/amd_abm@abm_gradual,Fail +amdgpu/amd_abm@backlight_monotonic_abm,Fail +amdgpu/amd_abm@backlight_monotonic_basic,Fail +amdgpu/amd_assr@assr-links,Fail +amdgpu/amd_assr@assr-links-dpms,Fail +amdgpu/amd_mall@static-screen,Crash +amdgpu/amd_mode_switch@mode-switch-first-last-pipe-2,Crash +amdgpu/amd_plane@mpo-pan-nv12,Fail +amdgpu/amd_plane@mpo-pan-p010,Fail +amdgpu/amd_plane@mpo-pan-rgb,Crash +amdgpu/amd_plane@mpo-scale-nv12,Fail +amdgpu/amd_plane@mpo-scale-p010,Fail +amdgpu/amd_plane@mpo-scale-rgb,Crash +amdgpu/amd_plane@mpo-swizzle-toggle,Fail +amdgpu/amd_uvd_dec@amdgpu_uvd_decode,Fail +dumb_buffer@invalid-bpp,Fail kms_addfb_basic@bad-pitch-65536,Fail kms_addfb_basic@bo-too-small,Fail kms_addfb_basic@too-high,Fail -kms_async_flips@async-flip-with-page-flip-events,Fail -kms_async_flips@crc,Fail -kms_async_flips@invalid-async-flip,Fail kms_atomic_transition@plane-all-modeset-transition-internal-panels,Fail kms_atomic_transition@plane-all-transition,Fail kms_atomic_transition@plane-all-transition-nonblocking,Fail kms_atomic_transition@plane-toggle-modeset-transition,Fail kms_atomic_transition@plane-use-after-nonblocking-unbind,Fail -kms_bw@linear-tiling-1-displays-2560x1440p,Fail -kms_bw@linear-tiling-1-displays-3840x2160p,Fail -kms_bw@linear-tiling-2-displays-3840x2160p,Fail -kms_bw@linear-tiling-3-displays-1920x1080p,Fail -kms_color@degamma,Fail +kms_cursor_crc@cursor-onscreen-64x21,Fail +kms_cursor_crc@cursor-onscreen-64x64,Fail +kms_cursor_crc@cursor-random-64x21,Fail +kms_cursor_crc@cursor-random-64x64,Fail kms_cursor_crc@cursor-size-change,Fail -kms_cursor_crc@pipe-A-cursor-size-change,Fail -kms_cursor_crc@pipe-B-cursor-size-change,Fail +kms_cursor_crc@cursor-sliding-64x21,Fail +kms_cursor_crc@cursor-sliding-64x64,Fail kms_flip@flip-vs-modeset-vs-hang,Fail kms_flip@flip-vs-panning-vs-hang,Fail -kms_hdr@bpc-switch,Fail -kms_hdr@bpc-switch-dpms,Fail +kms_lease@lease-uevent,Fail kms_plane@pixel-format,Fail -kms_plane_multiple@atomic-pipe-A-tiling-none,Fail -kms_rmfb@close-fd,Fail +kms_plane_cursor@primary,Fail kms_rotation_crc@primary-rotation-180,Fail +perf@i915-ref-count,Fail +tools_test@tools_test,Fail diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt index 6faf75e667d3..ea512ff8c352 100644 --- a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt +++ b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-flakes.txt @@ -1 +1,8 @@ +# Board Name: hp-11A-G6-EE-grunt +# Bug Report: https://lore.kernel.org/amd-gfx/3542730f-b8d7-404d-a947-b7a5e95d661c@collabora.com/T/#u +# IGT Version: 1.28-g0df7b9b97 +# Linux Version: 6.9.0-rc7 +# Failure Rate: 50 kms_async_flips@async-flip-with-page-flip-events +kms_async_flips@crc +kms_plane@pixel-format-source-clamping diff --git a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt index e2c538a0f954..3a2ce45d3cb9 100644 --- a/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt +++ b/drivers/gpu/drm/ci/xfails/amdgpu-stoney-skips.txt @@ -1,2 +1,33 @@ # Suspend to RAM seems to be broken on this machine -.*suspend.*
\ No newline at end of file +.*suspend.* + +# Skip driver specific tests +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# Skip intel specific tests +gem_.* +i915_.* +xe_.* + +# Currently fails and causes coverage loss for other tests +# since core_getversion also fails. +amdgpu/amd_module_load@reload +core_hotunplug.* + +# GPU reset seen and it hangs the machine +amdgpu/amd_deadlock@amdgpu-deadlock-sdma +amdgpu/amd_deadlock@amdgpu-gfx-illegal-reg-access +amdgpu/amd_dispatch@amdgpu-reset-test-gfx-with-IP-GFX-and-COMPUTE + +# Hangs the machine and timeout occurs +amdgpu/amd_pci_unplug@amdgpu_hotunplug_simple +amdgpu/amd_pci_unplug@amdgpu_hotunplug_with_cs +amdgpu/amd_pci_unplug@amdgpu_hotunplug_with_exported_bo +amdgpu/amd_pci_unplug@amdgpu_hotunplug_with_exported_fence +amdgpu/amd_vrr_range@freesync-parsing +device_reset.* diff --git a/drivers/gpu/drm/ci/xfails/i915-amly-fails.txt b/drivers/gpu/drm/ci/xfails/i915-amly-fails.txt index 59438e4df86e..6641520ac587 100644 --- a/drivers/gpu/drm/ci/xfails/i915-amly-fails.txt +++ b/drivers/gpu/drm/ci/xfails/i915-amly-fails.txt @@ -1,3 +1,16 @@ +core_setmaster@master-drop-set-user,Fail +core_setmaster_vs_auth,Fail +i915_module_load@load,Fail +i915_module_load@reload,Fail +i915_module_load@reload-no-display,Fail +i915_module_load@resize-bar,Fail +i915_pm_rpm@gem-execbuf-stress,Timeout +i915_pm_rpm@module-reload,Fail +kms_async_flips@invalid-async-flip,Timeout +kms_atomic_transition@modeset-transition-fencing,Timeout +kms_ccs@crc-primary-rotation-180-yf-tiled-ccs,Timeout +kms_fb_coherency@memset-crc,Crash +kms_flip@flip-vs-dpms-off-vs-modeset,Timeout kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling,Fail kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-upscaling,Fail kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling,Fail @@ -20,7 +33,25 @@ 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-ytilegen12rcccs-upscaling,Fail kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail +kms_lease@lease-uevent,Fail kms_plane_alpha_blend@alpha-basic,Fail kms_plane_alpha_blend@alpha-opaque-fb,Fail kms_plane_alpha_blend@alpha-transparent-fb,Fail kms_plane_alpha_blend@constant-alpha-max,Fail +kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation,Timeout +kms_pm_rpm@modeset-lpsp-stress,Timeout +kms_pm_rpm@modeset-stress-extra-wait,Timeout +kms_pm_rpm@universal-planes,Timeout +kms_pm_rpm@universal-planes-dpms,Timeout +perf@i915-ref-count,Fail +perf_pmu@module-unload,Fail +perf_pmu@rc6,Crash +sysfs_heartbeat_interval@long,Timeout +sysfs_heartbeat_interval@off,Timeout +sysfs_preempt_timeout@off,Timeout +sysfs_timeslice_duration@off,Timeout +xe_module_load@force-load,Fail +xe_module_load@load,Fail +xe_module_load@many-reload,Fail +xe_module_load@reload,Fail +xe_module_load@reload-no-display,Fail 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..0a76547a103d --- /dev/null +++ b/drivers/gpu/drm/ci/xfails/i915-amly-flakes.txt @@ -0,0 +1,9 @@ +# Board Name: asus-C433TA-AJ0005-rammus +# Bug Report: https://lore.kernel.org/intel-gfx/af4ca4df-a3ef-4943-bdbf-4c3af2c333af@collabora.com/T/#u +# IGT Version: 1.28-g0df7b9b97 +# Linux Version: 6.9.0-rc7 +# Failure Rate: 50 +i915_hangman@engine-engine-error +i915_hangman@gt-engine-hang +kms_async_flips@crc +kms_universal_plane@cursor-fb-leak diff --git a/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt b/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt index fe55540a3f9a..5663ed0420a7 100644 --- a/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt +++ b/drivers/gpu/drm/ci/xfails/i915-amly-skips.txt @@ -1,4 +1,24 @@ # Suspend to RAM seems to be broken on this machine .*suspend.* # This is generating kernel oops with divide error -kms_plane_scaling@invalid-parameters
\ No newline at end of file +kms_plane_scaling@invalid-parameters + +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# GEM tests takes ~1000 hours, so skip it +gem_.* + +# Hangs the machine and timeout occurs +i915_pm_rc6_residency.* +i915_suspend.* +kms_scaling_modes.* + +# Kernel panic +drm_fdinfo.* diff --git a/drivers/gpu/drm/ci/xfails/i915-apl-fails.txt b/drivers/gpu/drm/ci/xfails/i915-apl-fails.txt index 2e3b7c5dac3c..e612281149aa 100644 --- a/drivers/gpu/drm/ci/xfails/i915-apl-fails.txt +++ b/drivers/gpu/drm/ci/xfails/i915-apl-fails.txt @@ -1,13 +1,7 @@ -kms_3d,Timeout -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 +i915_module_load@load,Fail +i915_module_load@reload,Fail +i915_module_load@reload-no-display,Fail +i915_module_load@resize-bar,Fail kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling,Fail kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-upscaling,Fail kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling,Fail @@ -30,18 +24,30 @@ 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-ytilegen12rcccs-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_lease@lease-uevent,Fail kms_plane_alpha_blend@alpha-basic,Fail kms_plane_alpha_blend@alpha-opaque-fb,Fail kms_plane_alpha_blend@alpha-transparent-fb,Fail kms_plane_alpha_blend@constant-alpha-max,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_pm_backlight@basic-brightness,Fail +kms_pm_backlight@fade,Fail +kms_pm_backlight@fade-with-dpms,Fail +kms_pm_rpm@legacy-planes,Timeout +kms_pm_rpm@legacy-planes-dpms,Timeout +kms_pm_rpm@modeset-stress-extra-wait,Timeout +kms_pm_rpm@universal-planes,Timeout +kms_pm_rpm@universal-planes-dpms,Timeout kms_sysfs_edid_timing,Fail +perf@i915-ref-count,Fail +perf@non-zero-reason,Timeout +perf_pmu@module-unload,Fail +perf_pmu@rc6,Crash +sysfs_heartbeat_interval@long,Timeout +sysfs_heartbeat_interval@off,Timeout +sysfs_preempt_timeout@off,Timeout +sysfs_timeslice_duration@off,Timeout +xe_module_load@force-load,Fail +xe_module_load@load,Fail +xe_module_load@many-reload,Fail +xe_module_load@reload,Fail +xe_module_load@reload-no-display,Fail 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..cb010c153a6a --- /dev/null +++ b/drivers/gpu/drm/ci/xfails/i915-apl-flakes.txt @@ -0,0 +1,6 @@ +# Board Name: asus-C523NA-A20057-coral +# Bug Report: https://lore.kernel.org/intel-gfx/af4ca4df-a3ef-4943-bdbf-4c3af2c333af@collabora.com/T/#u +# IGT Version: 1.28-g0df7b9b97 +# Linux Version: 6.9.0-rc7 +# Failure Rate: 50 +kms_fb_coherency@memset-crc diff --git a/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt b/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt index 3430b215c06e..ab588e7a447c 100644 --- a/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt +++ b/drivers/gpu/drm/ci/xfails/i915-apl-skips.txt @@ -3,4 +3,28 @@ # This is generating kernel oops with divide error kms_plane_scaling@invalid-parameters # This is cascading issues -kms_3d
\ No newline at end of file +kms_3d + +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# GEM tests takes ~1000 hours, so skip it +gem_.* + +# Hangs the machine and timeout occurs +i915_pm_rc6_residency.* +i915_suspend.* +i915_pm_rpm.* +device_reset.* +api_intel_allocator.* +kms_frontbuffer_tracking.* +kms_ccs.* + +# Kernel panic +drm_fdinfo.* diff --git a/drivers/gpu/drm/ci/xfails/i915-cml-fails.txt b/drivers/gpu/drm/ci/xfails/i915-cml-fails.txt index 240ef8467c26..26cd62bbf30a 100644 --- a/drivers/gpu/drm/ci/xfails/i915-cml-fails.txt +++ b/drivers/gpu/drm/ci/xfails/i915-cml-fails.txt @@ -1,3 +1,19 @@ +core_setmaster@master-drop-set-user,Fail +core_setmaster_vs_auth,Fail +i915_module_load@load,Fail +i915_module_load@reload,Fail +i915_module_load@reload-no-display,Fail +i915_module_load@resize-bar,Fail +i915_pipe_stress@stress-xrgb8888-untiled,Fail +i915_pipe_stress@stress-xrgb8888-ytiled,Fail +i915_pm_rpm@gem-execbuf-stress,Timeout +i915_pm_rpm@module-reload,Fail +i915_pm_rpm@system-suspend-execbuf,Timeout +kms_async_flips@invalid-async-flip,Timeout +kms_atomic_transition@modeset-transition-fencing,Timeout +kms_ccs@crc-primary-rotation-180-yf-tiled-ccs,Timeout +kms_fb_coherency@memset-crc,Crash +kms_flip@flip-vs-dpms-off-vs-modeset,Timeout kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling,Fail kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-upscaling,Fail kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling,Fail @@ -20,11 +36,33 @@ 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-ytilegen12rcccs-upscaling,Fail kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail +kms_lease@lease-uevent,Fail kms_plane_alpha_blend@alpha-basic,Fail kms_plane_alpha_blend@alpha-opaque-fb,Fail kms_plane_alpha_blend@alpha-transparent-fb,Fail kms_plane_alpha_blend@constant-alpha-max,Fail kms_plane_alpha_blend@constant-alpha-min,Fail +kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation,Timeout +kms_pm_rpm@modeset-stress-extra-wait,Timeout +kms_pm_rpm@universal-planes,Timeout +kms_pm_rpm@universal-planes-dpms,Timeout +kms_psr2_sf@fbc-plane-move-sf-dmg-area,Timeout +kms_psr2_sf@overlay-plane-update-continuous-sf,Fail +kms_psr2_sf@overlay-plane-update-sf-dmg-area,Fail +kms_psr2_sf@primary-plane-update-sf-dmg-area,Fail +kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb,Fail kms_psr2_su@page_flip-NV12,Fail kms_psr2_su@page_flip-P010,Fail +kms_psr@psr-sprite-render,Timeout kms_setmode@basic,Fail +perf@i915-ref-count,Fail +perf_pmu@module-unload,Fail +perf_pmu@rc6,Crash +perf_pmu@rc6-suspend,Crash +sysfs_heartbeat_interval@long,Timeout +sysfs_heartbeat_interval@off,Timeout +sysfs_preempt_timeout@off,Timeout +sysfs_timeslice_duration@off,Timeout +xe_module_load@force-load,Fail +xe_module_load@load,Fail +xe_module_load@many-reload,Fail 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..bb560ff1e2cd --- /dev/null +++ b/drivers/gpu/drm/ci/xfails/i915-cml-flakes.txt @@ -0,0 +1,6 @@ +# Board Name: asus-C436FA-Flip-hatch +# Bug Report: https://lore.kernel.org/intel-gfx/af4ca4df-a3ef-4943-bdbf-4c3af2c333af@collabora.com/T/#u +# IGT Version: 1.28-g0df7b9b97 +# Linux Version: 6.9.0-rc7 +# Failure Rate: 50 +kms_plane_alpha_blend@constant-alpha-min diff --git a/drivers/gpu/drm/ci/xfails/i915-cml-skips.txt b/drivers/gpu/drm/ci/xfails/i915-cml-skips.txt index 6d3d7ddc377f..93b7736fffbb 100644 --- a/drivers/gpu/drm/ci/xfails/i915-cml-skips.txt +++ b/drivers/gpu/drm/ci/xfails/i915-cml-skips.txt @@ -1,2 +1,25 @@ # This is generating kernel oops with divide error kms_plane_scaling@invalid-parameters + +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# GEM tests takes ~1000 hours, so skip it +gem_.* + +# Hangs the machine and timeout occurs +i915_pm_rc6_residency.* +i915_suspend.* +xe_module_load.* +api_intel_allocator.* +kms_cursor_legacy.* + +# Kernel panic +drm_fdinfo.* +kms_frontbuffer_tracking.* diff --git a/drivers/gpu/drm/ci/xfails/i915-glk-fails.txt b/drivers/gpu/drm/ci/xfails/i915-glk-fails.txt index 4596055d7e5e..fca15b487929 100644 --- a/drivers/gpu/drm/ci/xfails/i915-glk-fails.txt +++ b/drivers/gpu/drm/ci/xfails/i915-glk-fails.txt @@ -1,5 +1,20 @@ -kms_fbcon_fbt@fbc,Fail -kms_flip@blocking-wf_vblank,Fail +core_setmaster@master-drop-set-user,Fail +i915_module_load@load,Fail +i915_module_load@reload,Fail +i915_module_load@reload-no-display,Fail +i915_module_load@resize-bar,Fail +kms_async_flips@invalid-async-flip,Timeout +kms_atomic_transition@modeset-transition-fencing,Timeout +kms_big_fb@linear-16bpp-rotate-0,Fail +kms_big_fb@linear-16bpp-rotate-180,Fail +kms_big_fb@linear-32bpp-rotate-0,Fail +kms_big_fb@linear-32bpp-rotate-180,Fail +kms_big_fb@linear-8bpp-rotate-0,Fail +kms_big_fb@linear-8bpp-rotate-180,Fail +kms_big_fb@linear-max-hw-stride-32bpp-rotate-0,Fail +kms_dirtyfb@default-dirtyfb-ioctl,Fail +kms_draw_crc@draw-method-render,Fail +kms_flip@flip-vs-dpms-off-vs-modeset,Timeout kms_flip@wf_vblank-ts-check,Fail kms_flip@wf_vblank-ts-check-interruptible,Fail kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling,Fail @@ -11,7 +26,6 @@ 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-linear-to-16bpp-linear-downscaling,Fail -kms_flip_scaled_crc@flip-64bpp-linear-to-16bpp-linear-upscaling,Fail kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling,Fail kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-upscaling,Fail kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling,Fail @@ -26,11 +40,24 @@ kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling,Fail kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling,Fail kms_frontbuffer_tracking@fbc-tiling-linear,Fail kms_frontbuffer_tracking@fbcdrrs-tiling-linear,Fail -kms_plane_alpha_blend@alpha-basic,Fail +kms_lease@lease-uevent,Fail kms_plane_alpha_blend@alpha-opaque-fb,Fail -kms_plane_alpha_blend@alpha-transparent-fb,Fail -kms_plane_alpha_blend@constant-alpha-max,Fail +kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation,Timeout +kms_pm_rpm@legacy-planes,Timeout +kms_pm_rpm@legacy-planes-dpms,Timeout +kms_pm_rpm@modeset-stress-extra-wait,Timeout +kms_pm_rpm@universal-planes,Timeout +kms_pm_rpm@universal-planes-dpms,Timeout kms_rotation_crc@multiplane-rotation,Fail kms_rotation_crc@multiplane-rotation-cropping-bottom,Fail kms_rotation_crc@multiplane-rotation-cropping-top,Fail -kms_setmode@basic,Fail +perf@non-zero-reason,Timeout +sysfs_heartbeat_interval@long,Timeout +sysfs_heartbeat_interval@off,Timeout +sysfs_preempt_timeout@off,Timeout +sysfs_timeslice_duration@off,Timeout +xe_module_load@force-load,Fail +xe_module_load@load,Fail +xe_module_load@many-reload,Fail +xe_module_load@reload,Fail +xe_module_load@reload-no-display,Fail 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..58fc424f8a42 --- /dev/null +++ b/drivers/gpu/drm/ci/xfails/i915-glk-flakes.txt @@ -0,0 +1,7 @@ +# Board Name: hp-x360-12b-ca0010nr-n4020-octopus +# Bug Report: https://lore.kernel.org/intel-gfx/af4ca4df-a3ef-4943-bdbf-4c3af2c333af@collabora.com/T/#u +# IGT Version: 1.28-g0df7b9b97 +# Linux Version: 6.9.0-rc7 +# Failure Rate: 50 +core_hotunplug@unplug-rescan +kms_fb_coherency@memset-crc diff --git a/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt b/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt index 4c7d00ce14bc..b3226b2d9ba1 100644 --- a/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt +++ b/drivers/gpu/drm/ci/xfails/i915-glk-skips.txt @@ -2,4 +2,28 @@ .*suspend.* # This is generating kernel oops with divide error -kms_plane_scaling@invalid-parameters
\ No newline at end of file +kms_plane_scaling@invalid-parameters + +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# GEM tests takes ~1000 hours, so skip it +gem_.* + +# Hangs the machine and timeout occurs +i915_pm_rc6_residency.* +i915_suspend.* +i915_pm_rpm.* +kms_ccs.* +kms_plane_multiple.* +perf.* + +# Kernel panic +drm_fdinfo.* +kms_plane_alpha_blend.* diff --git a/drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt b/drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt index dab202716909..d4fba4f55ec1 100644 --- a/drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt +++ b/drivers/gpu/drm/ci/xfails/i915-kbl-fails.txt @@ -1,32 +1,28 @@ -kms_bw@linear-tiling-2-displays-2560x1440p,Fail -kms_bw@linear-tiling-4-displays-2560x1440p,Fail -kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling,Fail -kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-upscaling,Fail +i915_module_load@load,Fail +i915_module_load@reload,Fail +i915_module_load@reload-no-display,Fail +i915_module_load@resize-bar,Fail +i915_pm_rpm@gem-execbuf-stress,Timeout kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling,Fail -kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-upscaling,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-linear-to-16bpp-linear-downscaling,Fail -kms_flip_scaled_crc@flip-64bpp-linear-to-16bpp-linear-upscaling,Fail -kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling,Fail kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-upscaling,Fail -kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling,Fail kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-upscaling,Fail -kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling,Fail -kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-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-ytilegen12rcccs-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@alpha-basic,Fail -kms_plane_alpha_blend@alpha-opaque-fb,Fail +kms_lease@lease-uevent,Fail kms_plane_alpha_blend@alpha-transparent-fb,Fail -kms_plane_alpha_blend@constant-alpha-max,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 +perf@i915-ref-count,Fail +perf_pmu@busy-accuracy-50,Fail +perf_pmu@module-unload,Fail +perf_pmu@rc6,Crash +sysfs_heartbeat_interval@long,Timeout +sysfs_heartbeat_interval@off,Timeout +sysfs_preempt_timeout@off,Timeout +sysfs_timeslice_duration@off,Timeout +xe_module_load@force-load,Fail +xe_module_load@load,Fail +xe_module_load@many-reload,Fail +xe_module_load@reload,Fail +xe_module_load@reload-no-display,Fail diff --git a/drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt b/drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt index a12f888530dd..6cf1fed2e575 100644 --- a/drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt +++ b/drivers/gpu/drm/ci/xfails/i915-kbl-flakes.txt @@ -1 +1,6 @@ -kms_async_flips@crc +# Board Name: hp-x360-14-G1-sona +# Bug Report: https://lore.kernel.org/intel-gfx/af4ca4df-a3ef-4943-bdbf-4c3af2c333af@collabora.com/T/#u +# IGT Version: 1.28-g0df7b9b97 +# Linux Version: 6.9.0-rc7 +# Failure Rate: 50 +prime_busy@hang diff --git a/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt b/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt index 4c7d00ce14bc..f0cf8a6dda25 100644 --- a/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt +++ b/drivers/gpu/drm/ci/xfails/i915-kbl-skips.txt @@ -2,4 +2,38 @@ .*suspend.* # This is generating kernel oops with divide error -kms_plane_scaling@invalid-parameters
\ No newline at end of file +kms_plane_scaling@invalid-parameters + +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# GEM tests takes ~1000 hours, so skip it +gem_.* + +# Hangs the machine and timeout occurs +i915_.* +api_intel_bb.* + +# Kernel panic +drm_fdinfo.* +kms_.* +prime_mmap_coherency.* +perf.* +drm_read.* +api_intel_allocator.* +sysfs_preempt_timeout.* +dumb_buffer.* +gen9_exec_parse.* +debugfs_test.* +core_hotunplug.* +tools_test.* + +# GPU hang +sysfs_timeslice_.* +sysfs_heartbeat_.* diff --git a/drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt b/drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt index 27bfca1c6f2c..9a50e894c3e7 100644 --- a/drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt +++ b/drivers/gpu/drm/ci/xfails/i915-tgl-fails.txt @@ -1,36 +1,43 @@ -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@flip-vs-panning-vs-hang,Timeout -kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling,Fail -kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-upscaling,Fail -kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling,Fail -kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-upscaling,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-linear-to-16bpp-linear-downscaling,Fail -kms_flip_scaled_crc@flip-64bpp-linear-to-16bpp-linear-upscaling,Fail -kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling,Fail -kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-upscaling,Fail -kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling,Fail -kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-upscaling,Fail -kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling,Fail -kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-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-ytilegen12rcccs-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 +api_intel_bb@blit-noreloc-keep-cache,Timeout +api_intel_bb@offset-control,Timeout +api_intel_bb@render-ccs,Timeout +core_getclient,Timeout +core_hotunplug@hotreplug-lateclose,Timeout +drm_read@short-buffer-block,Timeout +drm_read@short-buffer-nonblock,Timeout +dumb_buffer@map-uaf,Timeout +gen3_render_tiledx_blits,Timeout +gen7_exec_parse@basic-allocation,Timeout +gen7_exec_parse@batch-without-end,Timeout +gen9_exec_parse@batch-invalid-length,Timeout +gen9_exec_parse@bb-secure,Timeout +i915_module_load@load,Fail +i915_module_load@reload,Fail +i915_module_load@reload-no-display,Fail +i915_module_load@resize-bar,Fail +i915_pciid,Timeout +i915_query@engine-info,Timeout +kms_lease@lease-uevent,Fail kms_rotation_crc@multiplane-rotation,Fail -kms_rotation_crc@multiplane-rotation-cropping-bottom,Fail -kms_rotation_crc@multiplane-rotation-cropping-top,Fail +perf@i915-ref-count,Fail +perf_pmu@busy,Timeout +perf_pmu@enable-race,Timeout +perf_pmu@event-wait,Timeout +perf_pmu@gt-awake,Timeout +perf_pmu@module-unload,Fail +perf_pmu@rc6,Crash +prime_mmap@test_map_unmap,Timeout +prime_self_import@basic-with_one_bo,Timeout +syncobj_basic@bad-destroy,Timeout +syncobj_eventfd@invalid-bad-pad,Timeout +syncobj_wait@invalid-multi-wait-unsubmitted-signaled,Timeout +syncobj_wait@invalid-signal-illegal-handle,Timeout +syncobj_wait@invalid-single-wait-all-unsubmitted,Timeout +syncobj_wait@multi-wait-all-submitted,Timeout +syncobj_wait@multi-wait-for-submit-submitted-signaled,Timeout +syncobj_wait@wait-any-complex,Timeout +syncobj_wait@wait-delayed-signal,Timeout +xe_module_load@force-load,Fail +xe_module_load@load,Fail +xe_module_load@reload,Fail +xe_module_load@reload-no-display,Fail diff --git a/drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt b/drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt index 1d0621750b14..e600782ef96a 100644 --- a/drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt +++ b/drivers/gpu/drm/ci/xfails/i915-tgl-skips.txt @@ -8,4 +8,30 @@ gem_eio.* kms_flip@absolute-wf_vblank@a-edp1 # This is generating kernel oops with divide error -kms_plane_scaling@invalid-parameters
\ No newline at end of file +kms_plane_scaling@invalid-parameters + +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# GEM tests takes ~1000 hours, so skip it +gem_.* + +# Kernel panic +drm_fdinfo.* + +# Hangs the machine and timeout occurs +i915_pm_rc6_residency.* +i915_suspend.* +sysfs_heartbeat_interval.* +syncobj_timeline.* +sysfs_timeslice_duration.* +syncobj_wait.* + +# Kernel panic and test hangs with multiple kms tests +kms_.* diff --git a/drivers/gpu/drm/ci/xfails/i915-whl-fails.txt b/drivers/gpu/drm/ci/xfails/i915-whl-fails.txt index 967327ddc1ac..7582d313dd9b 100644 --- a/drivers/gpu/drm/ci/xfails/i915-whl-fails.txt +++ b/drivers/gpu/drm/ci/xfails/i915-whl-fails.txt @@ -1,14 +1,25 @@ -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_fbcon_fbt@fbc,Fail -kms_fbcon_fbt@fbc-suspend,Fail +core_setmaster@master-drop-set-user,Fail +core_setmaster_vs_auth,Fail +i915_module_load@load,Fail +i915_module_load@reload,Fail +i915_module_load@reload-no-display,Fail +i915_module_load@resize-bar,Fail +i915_pm_rpm@gem-execbuf-stress,Timeout +i915_pm_rpm@module-reload,Fail +i915_pm_rpm@system-suspend-execbuf,Timeout +kms_async_flips@invalid-async-flip,Timeout +kms_atomic_transition@modeset-transition-fencing,Timeout +kms_big_fb@linear-16bpp-rotate-0,Fail +kms_big_fb@linear-16bpp-rotate-180,Fail +kms_big_fb@linear-32bpp-rotate-0,Fail +kms_big_fb@linear-32bpp-rotate-180,Fail +kms_big_fb@linear-8bpp-rotate-0,Fail +kms_big_fb@linear-8bpp-rotate-180,Fail +kms_big_fb@linear-max-hw-stride-32bpp-rotate-0,Fail +kms_ccs@crc-primary-rotation-180-yf-tiled-ccs,Timeout +kms_dirtyfb@default-dirtyfb-ioctl,Fail +kms_draw_crc@draw-method-render,Fail +kms_fb_coherency@memset-crc,Crash kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling,Fail kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-upscaling,Fail kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling,Fail @@ -18,8 +29,6 @@ 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-linear-to-16bpp-linear-downscaling,Fail -kms_flip_scaled_crc@flip-64bpp-linear-to-16bpp-linear-upscaling,Fail -kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling,Fail kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-upscaling,Fail kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling,Fail kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-upscaling,Fail @@ -31,18 +40,26 @@ 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-ytilegen12rcccs-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_lease@lease-uevent,Fail kms_plane_alpha_blend@alpha-basic,Fail kms_plane_alpha_blend@alpha-opaque-fb,Fail kms_plane_alpha_blend@alpha-transparent-fb,Fail kms_plane_alpha_blend@constant-alpha-max,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_plane_scaling@plane-scaler-with-clipping-clamping-rotation,Timeout +kms_pm_rpm@modeset-stress-extra-wait,Timeout +kms_pm_rpm@universal-planes,Timeout +kms_pm_rpm@universal-planes-dpms,Timeout +perf@i915-ref-count,Fail +perf_pmu@module-unload,Fail +perf_pmu@rc6,Crash +perf_pmu@rc6-suspend,Crash +sysfs_heartbeat_interval@long,Timeout +sysfs_heartbeat_interval@off,Timeout +sysfs_preempt_timeout@off,Timeout +sysfs_timeslice_duration@off,Timeout +xe_module_load@force-load,Fail +xe_module_load@load,Fail +xe_module_load@many-reload,Fail +xe_module_load@reload,Fail +xe_module_load@reload-no-display,Fail 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..1167a58c7dd1 --- /dev/null +++ b/drivers/gpu/drm/ci/xfails/i915-whl-flakes.txt @@ -0,0 +1,6 @@ +# Board Name: dell-latitude-5400-8665U-sarien +# Bug Report: https://lore.kernel.org/intel-gfx/af4ca4df-a3ef-4943-bdbf-4c3af2c333af@collabora.com/T/#u +# IGT Version: 1.28-g0df7b9b97 +# Linux Version: 6.9.0-rc7 +# Failure Rate: 50 +kms_pm_rpm@modeset-lpsp-stress diff --git a/drivers/gpu/drm/ci/xfails/i915-whl-skips.txt b/drivers/gpu/drm/ci/xfails/i915-whl-skips.txt index f3be0888a214..20bd91525f45 100644 --- a/drivers/gpu/drm/ci/xfails/i915-whl-skips.txt +++ b/drivers/gpu/drm/ci/xfails/i915-whl-skips.txt @@ -1,2 +1,22 @@ # This is generating kernel oops with divide error -kms_plane_scaling@invalid-parameters
\ No newline at end of file +kms_plane_scaling@invalid-parameters + +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# GEM tests takes ~1000 hours, so skip it +gem_.* + +# Hangs the machine and timeout occurs +i915_pm_rc6_residency.* +i915_suspend.* +kms_flip.* + +# Kernel panic +drm_fdinfo.* diff --git a/drivers/gpu/drm/ci/xfails/mediatek-mt8173-fails.txt b/drivers/gpu/drm/ci/xfails/mediatek-mt8173-fails.txt index ef0cb7c3698c..cc5e9c1c2d57 100644 --- a/drivers/gpu/drm/ci/xfails/mediatek-mt8173-fails.txt +++ b/drivers/gpu/drm/ci/xfails/mediatek-mt8173-fails.txt @@ -1,36 +1,30 @@ +device_reset@cold-reset-bound,Fail +device_reset@reset-bound,Fail +device_reset@unbind-cold-reset-rebind,Fail +device_reset@unbind-reset-rebind,Fail +dumb_buffer@invalid-bpp,Fail +fbdev@eof,Fail +fbdev@read,Fail +fbdev@unaligned-write,Fail kms_3d,Fail kms_bw@linear-tiling-1-displays-1920x1080p,Fail +kms_bw@linear-tiling-1-displays-2160x1440p,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-2160x1440p,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@invalid-gamma-lut-sizes,Fail -kms_color@pipe-A-invalid-gamma-lut-sizes,Fail -kms_color@pipe-B-invalid-gamma-lut-sizes,Fail kms_cursor_legacy@cursor-vs-flip-atomic,Fail kms_cursor_legacy@cursor-vs-flip-legacy,Fail kms_flip@flip-vs-modeset-vs-hang,Fail kms_flip@flip-vs-panning-vs-hang,Fail kms_flip@flip-vs-suspend,Fail kms_flip@flip-vs-suspend-interruptible,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_hdmi_inject@inject-4k,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_lease@lease-uevent,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 -kms_selftest@drm_format,Timeout -kms_selftest@drm_format_helper,Timeout +tools_test@tools_test,Fail diff --git a/drivers/gpu/drm/ci/xfails/mediatek-mt8173-flakes.txt b/drivers/gpu/drm/ci/xfails/mediatek-mt8173-flakes.txt new file mode 100644 index 000000000000..395ac0463404 --- /dev/null +++ b/drivers/gpu/drm/ci/xfails/mediatek-mt8173-flakes.txt @@ -0,0 +1,11 @@ +# Board Name: mt8173-elm-hana +# Bug Report: https://lore.kernel.org/linux-mediatek/0b2a1899-15dd-42fa-8f63-ea0ca28dbb17@collabora.com/T/#u +# IGT Version: 1.28-g0df7b9b97 +# Linux Version: 6.9.0-rc7 +# Failure Rate: 50 +core_setmaster_vs_auth +dumb_buffer@create-clear +fbdev@unaligned-write +fbdev@write +kms_cursor_legacy@cursor-vs-flip-atomic-transitions +kms_prop_blob@invalid-set-prop diff --git a/drivers/gpu/drm/ci/xfails/mediatek-mt8173-skips.txt b/drivers/gpu/drm/ci/xfails/mediatek-mt8173-skips.txt new file mode 100644 index 000000000000..0c6108392140 --- /dev/null +++ b/drivers/gpu/drm/ci/xfails/mediatek-mt8173-skips.txt @@ -0,0 +1,16 @@ +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# Skip intel specific tests +gem_.* +i915_.* + +# Currently fails and causes coverage loss for other tests +# since core_getversion also fails. +core_hotunplug.* diff --git a/drivers/gpu/drm/ci/xfails/mediatek-mt8183-fails.txt b/drivers/gpu/drm/ci/xfails/mediatek-mt8183-fails.txt index 67d690fc4037..9ef460646d76 100644 --- a/drivers/gpu/drm/ci/xfails/mediatek-mt8183-fails.txt +++ b/drivers/gpu/drm/ci/xfails/mediatek-mt8183-fails.txt @@ -1,13 +1,8 @@ -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_cursor@overlay,Fail -kms_plane_cursor@primary,Fail -kms_plane_cursor@viewport,Fail -kms_plane_scaling@upscale-with-rotation-20x20,Fail -kms_rmfb@close-fd,Fail +dumb_buffer@create-clear,Fail +dumb_buffer@create-valid-dumb,Fail +dumb_buffer@invalid-bpp,Fail +dumb_buffer@map-invalid-size,Fail +dumb_buffer@map-uaf,Fail +dumb_buffer@map-valid,Fail +panfrost_prime@gem-prime-import,Fail +tools_test@tools_test,Fail diff --git a/drivers/gpu/drm/ci/xfails/mediatek-mt8183-skips.txt b/drivers/gpu/drm/ci/xfails/mediatek-mt8183-skips.txt new file mode 100644 index 000000000000..715b9a8f4997 --- /dev/null +++ b/drivers/gpu/drm/ci/xfails/mediatek-mt8183-skips.txt @@ -0,0 +1,18 @@ +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +^v3d.* +^vc4.* +^vmwgfx* + +# Skip intel specific tests +gem_.* +i915_.* + +# Panfrost is not a KMS driver, so skip the KMS tests +kms_.* + +# Currently fails and causes coverage loss for other tests +# since core_getversion also fails. +core_hotunplug.* diff --git a/drivers/gpu/drm/ci/xfails/meson-g12b-fails.txt b/drivers/gpu/drm/ci/xfails/meson-g12b-fails.txt index 56a2ae7047b4..9ef460646d76 100644 --- a/drivers/gpu/drm/ci/xfails/meson-g12b-fails.txt +++ b/drivers/gpu/drm/ci/xfails/meson-g12b-fails.txt @@ -1,16 +1,8 @@ -kms_3d,Fail -kms_cursor_legacy@forked-bo,Fail -kms_cursor_legacy@forked-move,Fail -kms_cursor_legacy@single-bo,Fail -kms_cursor_legacy@single-move,Fail -kms_cursor_legacy@torture-bo,Fail -kms_cursor_legacy@torture-move,Fail -kms_force_connector_basic@force-edid,Fail -kms_hdmi_inject@inject-4k,Fail -kms_plane_cursor@overlay,Fail -kms_plane_cursor@primary,Fail -kms_plane_cursor@viewport,Fail -kms_properties@connector-properties-atomic,Fail -kms_properties@connector-properties-legacy,Fail -kms_properties@get_properties-sanity-atomic,Fail -kms_properties@get_properties-sanity-non-atomic,Fail +dumb_buffer@create-clear,Fail +dumb_buffer@create-valid-dumb,Fail +dumb_buffer@invalid-bpp,Fail +dumb_buffer@map-invalid-size,Fail +dumb_buffer@map-uaf,Fail +dumb_buffer@map-valid,Fail +panfrost_prime@gem-prime-import,Fail +tools_test@tools_test,Fail diff --git a/drivers/gpu/drm/ci/xfails/meson-g12b-skips.txt b/drivers/gpu/drm/ci/xfails/meson-g12b-skips.txt new file mode 100644 index 000000000000..715b9a8f4997 --- /dev/null +++ b/drivers/gpu/drm/ci/xfails/meson-g12b-skips.txt @@ -0,0 +1,18 @@ +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +^v3d.* +^vc4.* +^vmwgfx* + +# Skip intel specific tests +gem_.* +i915_.* + +# Panfrost is not a KMS driver, so skip the KMS tests +kms_.* + +# Currently fails and causes coverage loss for other tests +# since core_getversion also fails. +core_hotunplug.* diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8016-fails.txt b/drivers/gpu/drm/ci/xfails/msm-apq8016-fails.txt index b14d4e884971..3dfbabdf905e 100644 --- a/drivers/gpu/drm/ci/xfails/msm-apq8016-fails.txt +++ b/drivers/gpu/drm/ci/xfails/msm-apq8016-fails.txt @@ -1,8 +1,16 @@ +device_reset@cold-reset-bound,Fail +device_reset@reset-bound,Fail +device_reset@unbind-cold-reset-rebind,Fail +device_reset@unbind-reset-rebind,Fail +dumb_buffer@invalid-bpp,Fail kms_3d,Fail kms_addfb_basic@addfb25-bad-modifier,Fail +kms_cursor_legacy@forked-move,Fail +kms_cursor_legacy@single-bo,Fail kms_cursor_legacy@torture-bo,Fail +kms_cursor_legacy@torture-move,Fail kms_force_connector_basic@force-edid,Fail kms_hdmi_inject@inject-4k,Fail -kms_selftest@drm_format,Timeout -kms_selftest@drm_format_helper,Timeout +kms_lease@lease-uevent,Fail msm_mapping@ring,Fail +tools_test@tools_test,Fail diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8016-skips.txt b/drivers/gpu/drm/ci/xfails/msm-apq8016-skips.txt new file mode 100644 index 000000000000..ff12202abb6e --- /dev/null +++ b/drivers/gpu/drm/ci/xfails/msm-apq8016-skips.txt @@ -0,0 +1,15 @@ +# Skip driver specific tests +^amdgpu.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# Skip intel specific tests +gem_.* +i915_.* + +# Currently fails and causes coverage loss for other tests +# since core_getversion also fails. +core_hotunplug.* diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt b/drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt index 88a1fc0a3b0d..23a5f6f9097f 100644 --- a/drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt +++ b/drivers/gpu/drm/ci/xfails/msm-apq8096-fails.txt @@ -1,2 +1,9 @@ +device_reset@cold-reset-bound,Fail +device_reset@reset-bound,Fail +device_reset@unbind-cold-reset-rebind,Fail +device_reset@unbind-reset-rebind,Fail +dumb_buffer@invalid-bpp,Fail kms_3d,Fail kms_addfb_basic@addfb25-bad-modifier,Fail +kms_lease@lease-uevent,Fail +tools_test@tools_test,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..a275584c8bbb --- /dev/null +++ b/drivers/gpu/drm/ci/xfails/msm-apq8096-flakes.txt @@ -0,0 +1,6 @@ +# Board Name: apq8096-db820c +# Bug Report: https://lore.kernel.org/linux-arm-msm/661483c8-ad82-400d-bcd8-e94986d20d7d@collabora.com/T/#u +# IGT Version: 1.28-g0df7b9b97 +# Linux Version: 6.9.0-rc7 +# Failure Rate: 50 +dumb_buffer@create-clear diff --git a/drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt b/drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt index cd49c8ce2059..1c45fc6c512d 100644 --- a/drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt +++ b/drivers/gpu/drm/ci/xfails/msm-apq8096-skips.txt @@ -1,2 +1,26 @@ # Whole machine hangs -kms_cursor_legacy@all-pipes-torture-move
\ No newline at end of file +kms_cursor_legacy@all-pipes-torture-move + +# Skip driver specific tests +^amdgpu.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# Skip intel specific tests +gem_.* +i915_.* + +# Currently fails and causes coverage loss for other tests +# since core_getversion also fails. +core_hotunplug.* + +# gpu fault +# [IGT] msm_mapping: executing +# [IGT] msm_mapping: starting subtest shadow +# *** gpu fault: ttbr0=00000001030ea000 iova=0000000001074000 dir=WRITE type=PERMISSION source=1f030000 (0,0,0,0) +# msm_mdp 901000.display-controller: RBBM | ME master split | status=0x701000B0 +# watchdog: BUG: soft lockup - CPU#0 stuck for 26s! [kworker/u16:3:46] +msm_mapping@shadow diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-fails.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-fails.txt index f0576aa629e8..eb7a3886d397 100644 --- a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-fails.txt +++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-fails.txt @@ -1,18 +1,191 @@ +device_reset@cold-reset-bound,Fail +device_reset@reset-bound,Fail +device_reset@unbind-cold-reset-rebind,Fail +device_reset@unbind-reset-rebind,Fail +dumb_buffer@invalid-bpp,Fail +kms_atomic_transition@plane-primary-toggle-with-vblank-wait,Fail kms_color@ctm-0-25,Fail kms_color@ctm-0-50,Fail kms_color@ctm-0-75,Fail kms_color@ctm-blue-to-red,Fail kms_color@ctm-green-to-red,Fail +kms_color@ctm-max,Fail kms_color@ctm-negative,Fail kms_color@ctm-red-to-blue,Fail kms_color@ctm-signed,Fail +kms_content_protection@atomic,Crash +kms_content_protection@atomic-dpms,Crash +kms_content_protection@content-type-change,Crash +kms_content_protection@lic-type-0,Crash +kms_content_protection@lic-type-1,Crash +kms_content_protection@srm,Crash +kms_content_protection@type1,Crash +kms_content_protection@uevent,Crash +kms_cursor_crc@cursor-alpha-opaque,Fail +kms_cursor_crc@cursor-alpha-transparent,Fail +kms_cursor_crc@cursor-dpms,Fail +kms_cursor_crc@cursor-offscreen-128x128,Fail +kms_cursor_crc@cursor-offscreen-128x42,Fail +kms_cursor_crc@cursor-offscreen-256x256,Fail +kms_cursor_crc@cursor-offscreen-256x85,Fail +kms_cursor_crc@cursor-offscreen-32x10,Fail +kms_cursor_crc@cursor-offscreen-32x32,Fail +kms_cursor_crc@cursor-offscreen-512x170,Fail +kms_cursor_crc@cursor-offscreen-512x512,Fail +kms_cursor_crc@cursor-offscreen-64x21,Fail +kms_cursor_crc@cursor-offscreen-64x64,Fail +kms_cursor_crc@cursor-onscreen-128x128,Fail +kms_cursor_crc@cursor-onscreen-128x42,Fail +kms_cursor_crc@cursor-onscreen-256x256,Fail +kms_cursor_crc@cursor-onscreen-256x85,Fail +kms_cursor_crc@cursor-onscreen-32x10,Fail +kms_cursor_crc@cursor-onscreen-32x32,Fail +kms_cursor_crc@cursor-onscreen-512x170,Fail +kms_cursor_crc@cursor-onscreen-512x512,Fail +kms_cursor_crc@cursor-onscreen-64x21,Fail +kms_cursor_crc@cursor-onscreen-64x64,Fail +kms_cursor_crc@cursor-random-128x128,Fail +kms_cursor_crc@cursor-random-128x42,Fail +kms_cursor_crc@cursor-random-256x256,Fail +kms_cursor_crc@cursor-random-256x85,Fail +kms_cursor_crc@cursor-random-32x10,Fail +kms_cursor_crc@cursor-random-32x32,Fail +kms_cursor_crc@cursor-random-512x170,Fail +kms_cursor_crc@cursor-random-512x512,Fail +kms_cursor_crc@cursor-random-64x21,Fail +kms_cursor_crc@cursor-random-64x64,Fail +kms_cursor_crc@cursor-rapid-movement-128x128,Fail +kms_cursor_crc@cursor-rapid-movement-128x42,Fail +kms_cursor_crc@cursor-rapid-movement-256x256,Fail +kms_cursor_crc@cursor-rapid-movement-256x85,Fail +kms_cursor_crc@cursor-rapid-movement-32x10,Fail +kms_cursor_crc@cursor-rapid-movement-32x32,Fail +kms_cursor_crc@cursor-rapid-movement-512x170,Fail +kms_cursor_crc@cursor-rapid-movement-512x512,Fail +kms_cursor_crc@cursor-rapid-movement-64x21,Fail +kms_cursor_crc@cursor-rapid-movement-64x64,Fail +kms_cursor_crc@cursor-size-change,Fail +kms_cursor_crc@cursor-sliding-128x128,Fail +kms_cursor_crc@cursor-sliding-128x42,Fail +kms_cursor_crc@cursor-sliding-256x256,Fail +kms_cursor_crc@cursor-sliding-256x85,Fail +kms_cursor_crc@cursor-sliding-32x10,Fail +kms_cursor_crc@cursor-sliding-32x32,Fail +kms_cursor_crc@cursor-sliding-512x170,Fail +kms_cursor_crc@cursor-sliding-512x512,Fail +kms_cursor_crc@cursor-sliding-64x21,Fail +kms_cursor_crc@cursor-sliding-64x64,Fail +kms_cursor_edge_walk@128x128-left-edge,Fail +kms_cursor_edge_walk@128x128-right-edge,Fail +kms_cursor_edge_walk@128x128-top-bottom,Fail +kms_cursor_edge_walk@128x128-top-edge,Fail +kms_cursor_edge_walk@256x256-left-edge,Fail +kms_cursor_edge_walk@256x256-right-edge,Fail +kms_cursor_edge_walk@256x256-top-bottom,Fail +kms_cursor_edge_walk@256x256-top-edge,Fail +kms_cursor_edge_walk@64x64-left-edge,Fail +kms_cursor_edge_walk@64x64-right-edge,Fail +kms_cursor_edge_walk@64x64-top-bottom,Fail +kms_cursor_edge_walk@64x64-top-edge,Fail +kms_cursor_legacy@2x-cursor-vs-flip-atomic,Fail +kms_cursor_legacy@2x-cursor-vs-flip-legacy,Fail +kms_cursor_legacy@2x-flip-vs-cursor-atomic,Fail +kms_cursor_legacy@2x-flip-vs-cursor-legacy,Fail +kms_cursor_legacy@2x-long-cursor-vs-flip-atomic,Fail +kms_cursor_legacy@2x-long-cursor-vs-flip-legacy,Fail +kms_cursor_legacy@2x-long-flip-vs-cursor-atomic,Fail +kms_cursor_legacy@2x-long-flip-vs-cursor-legacy,Fail kms_cursor_legacy@cursor-vs-flip-toggle,Fail kms_cursor_legacy@cursor-vs-flip-varying-size,Fail +kms_display_modes@extended-mode-basic,Fail +kms_flip@2x-flip-vs-modeset-vs-hang,Fail +kms_flip@2x-flip-vs-panning-vs-hang,Fail +kms_flip@absolute-wf_vblank,Fail +kms_flip@absolute-wf_vblank-interruptible,Fail +kms_flip@basic-flip-vs-wf_vblank,Fail +kms_flip@basic-plain-flip,Fail +kms_flip@blocking-absolute-wf_vblank,Fail +kms_flip@blocking-absolute-wf_vblank-interruptible,Fail +kms_flip@blocking-wf_vblank,Fail +kms_flip@busy-flip,Fail +kms_flip@dpms-off-confusion,Fail +kms_flip@dpms-off-confusion-interruptible,Fail +kms_flip@dpms-vs-vblank-race,Fail +kms_flip@dpms-vs-vblank-race-interruptible,Fail +kms_flip@flip-vs-absolute-wf_vblank,Fail +kms_flip@flip-vs-absolute-wf_vblank-interruptible,Fail +kms_flip@flip-vs-blocking-wf-vblank,Fail +kms_flip@flip-vs-expired-vblank,Fail +kms_flip@flip-vs-expired-vblank-interruptible,Fail kms_flip@flip-vs-modeset-vs-hang,Fail +kms_flip@flip-vs-panning,Fail +kms_flip@flip-vs-panning-interruptible,Fail kms_flip@flip-vs-panning-vs-hang,Fail +kms_flip@flip-vs-rmfb,Fail +kms_flip@flip-vs-rmfb-interruptible,Fail +kms_flip@flip-vs-wf_vblank-interruptible,Fail +kms_flip@modeset-vs-vblank-race,Fail +kms_flip@modeset-vs-vblank-race-interruptible,Fail +kms_flip@plain-flip-fb-recreate,Fail +kms_flip@plain-flip-fb-recreate-interruptible,Fail +kms_flip@plain-flip-interruptible,Fail +kms_flip@plain-flip-ts-check,Fail +kms_flip@plain-flip-ts-check-interruptible,Fail +kms_flip@wf_vblank-ts-check,Fail +kms_flip@wf_vblank-ts-check-interruptible,Fail +kms_lease@cursor-implicit-plane,Fail +kms_lease@lease-uevent,Fail +kms_lease@page-flip-implicit-plane,Fail +kms_lease@setcrtc-implicit-plane,Fail +kms_lease@simple-lease,Fail +kms_multipipe_modeset@basic-max-pipe-crc-check,Fail kms_pipe_crc_basic@compare-crc-sanitycheck-nv12,Fail +kms_pipe_crc_basic@compare-crc-sanitycheck-xr24,Fail +kms_pipe_crc_basic@disable-crc-after-crtc,Fail +kms_pipe_crc_basic@nonblocking-crc,Fail +kms_pipe_crc_basic@nonblocking-crc-frame-sequence,Fail +kms_pipe_crc_basic@read-crc,Fail +kms_pipe_crc_basic@read-crc-frame-sequence,Fail +kms_plane@pixel-format,Fail +kms_plane@pixel-format-source-clamping,Fail +kms_plane@plane-panning-bottom-right,Fail +kms_plane@plane-panning-top-left,Fail +kms_plane@plane-position-covered,Fail +kms_plane@plane-position-hole,Fail +kms_plane@plane-position-hole-dpms,Fail kms_plane_alpha_blend@alpha-7efc,Fail +kms_plane_alpha_blend@alpha-basic,Fail +kms_plane_alpha_blend@alpha-opaque-fb,Fail +kms_plane_alpha_blend@alpha-transparent-fb,Fail +kms_plane_alpha_blend@constant-alpha-max,Fail +kms_plane_alpha_blend@constant-alpha-mid,Fail +kms_plane_alpha_blend@constant-alpha-min,Fail kms_plane_alpha_blend@coverage-7efc,Fail kms_plane_alpha_blend@coverage-vs-premult-vs-constant,Fail +kms_plane_cursor@primary,Fail +kms_plane_lowres@tiling-none,Fail +kms_plane_multiple@tiling-none,Fail kms_rmfb@close-fd,Fail -kms_universal_plane@universal-plane-sanity,Fail +kms_rotation_crc@cursor-rotation-180,Fail +kms_rotation_crc@primary-rotation-180,Fail +kms_sequence@get-busy,Fail +kms_sequence@get-forked,Fail +kms_sequence@get-forked-busy,Fail +kms_sequence@get-idle,Fail +kms_sequence@queue-busy,Fail +kms_sequence@queue-idle,Fail +kms_vblank@accuracy-idle,Fail +kms_vblank@crtc-id,Fail +kms_vblank@query-busy,Fail +kms_vblank@query-forked,Fail +kms_vblank@query-forked-busy,Fail +kms_vblank@query-idle,Fail +kms_vblank@ts-continuation-dpms-rpm,Fail +kms_vblank@ts-continuation-idle,Fail +kms_vblank@ts-continuation-modeset,Fail +kms_vblank@ts-continuation-modeset-rpm,Fail +kms_vblank@wait-busy,Fail +kms_vblank@wait-forked,Fail +kms_vblank@wait-forked-busy,Fail +kms_vblank@wait-idle,Fail +tools_test@tools_test,Fail diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-flakes.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-flakes.txt new file mode 100644 index 000000000000..6dec63d48cfb --- /dev/null +++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-flakes.txt @@ -0,0 +1,8 @@ +# Board Name: sc7180-trogdor-kingoftown +# Bug Report: https://lore.kernel.org/linux-arm-msm/661483c8-ad82-400d-bcd8-e94986d20d7d@collabora.com/T/#u +# IGT Version: 1.28-g0df7b9b97 +# Linux Version: 6.9.0-rc7 +# Failure Rate: 50 +msm_mapping@shadow +msm_shrink@copy-gpu-oom-32 +msm_shrink@copy-gpu-oom-8 diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-skips.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-skips.txt index 327039f70252..68c96005ba54 100644 --- a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-skips.txt +++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-kingoftown-skips.txt @@ -1,2 +1,21 @@ # Suspend to RAM seems to be broken on this machine .*suspend.* + +# Skip driver specific tests +^amdgpu.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# Skip intel specific tests +gem_.* +i915_.* + +# Currently fails and causes coverage loss for other tests +# since core_getversion also fails. +core_hotunplug.* + +# Timeout occurs +kms_flip@2x-wf_vblank-ts-check diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-fails.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-fails.txt index f0576aa629e8..eb7a3886d397 100644 --- a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-fails.txt +++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-fails.txt @@ -1,18 +1,191 @@ +device_reset@cold-reset-bound,Fail +device_reset@reset-bound,Fail +device_reset@unbind-cold-reset-rebind,Fail +device_reset@unbind-reset-rebind,Fail +dumb_buffer@invalid-bpp,Fail +kms_atomic_transition@plane-primary-toggle-with-vblank-wait,Fail kms_color@ctm-0-25,Fail kms_color@ctm-0-50,Fail kms_color@ctm-0-75,Fail kms_color@ctm-blue-to-red,Fail kms_color@ctm-green-to-red,Fail +kms_color@ctm-max,Fail kms_color@ctm-negative,Fail kms_color@ctm-red-to-blue,Fail kms_color@ctm-signed,Fail +kms_content_protection@atomic,Crash +kms_content_protection@atomic-dpms,Crash +kms_content_protection@content-type-change,Crash +kms_content_protection@lic-type-0,Crash +kms_content_protection@lic-type-1,Crash +kms_content_protection@srm,Crash +kms_content_protection@type1,Crash +kms_content_protection@uevent,Crash +kms_cursor_crc@cursor-alpha-opaque,Fail +kms_cursor_crc@cursor-alpha-transparent,Fail +kms_cursor_crc@cursor-dpms,Fail +kms_cursor_crc@cursor-offscreen-128x128,Fail +kms_cursor_crc@cursor-offscreen-128x42,Fail +kms_cursor_crc@cursor-offscreen-256x256,Fail +kms_cursor_crc@cursor-offscreen-256x85,Fail +kms_cursor_crc@cursor-offscreen-32x10,Fail +kms_cursor_crc@cursor-offscreen-32x32,Fail +kms_cursor_crc@cursor-offscreen-512x170,Fail +kms_cursor_crc@cursor-offscreen-512x512,Fail +kms_cursor_crc@cursor-offscreen-64x21,Fail +kms_cursor_crc@cursor-offscreen-64x64,Fail +kms_cursor_crc@cursor-onscreen-128x128,Fail +kms_cursor_crc@cursor-onscreen-128x42,Fail +kms_cursor_crc@cursor-onscreen-256x256,Fail +kms_cursor_crc@cursor-onscreen-256x85,Fail +kms_cursor_crc@cursor-onscreen-32x10,Fail +kms_cursor_crc@cursor-onscreen-32x32,Fail +kms_cursor_crc@cursor-onscreen-512x170,Fail +kms_cursor_crc@cursor-onscreen-512x512,Fail +kms_cursor_crc@cursor-onscreen-64x21,Fail +kms_cursor_crc@cursor-onscreen-64x64,Fail +kms_cursor_crc@cursor-random-128x128,Fail +kms_cursor_crc@cursor-random-128x42,Fail +kms_cursor_crc@cursor-random-256x256,Fail +kms_cursor_crc@cursor-random-256x85,Fail +kms_cursor_crc@cursor-random-32x10,Fail +kms_cursor_crc@cursor-random-32x32,Fail +kms_cursor_crc@cursor-random-512x170,Fail +kms_cursor_crc@cursor-random-512x512,Fail +kms_cursor_crc@cursor-random-64x21,Fail +kms_cursor_crc@cursor-random-64x64,Fail +kms_cursor_crc@cursor-rapid-movement-128x128,Fail +kms_cursor_crc@cursor-rapid-movement-128x42,Fail +kms_cursor_crc@cursor-rapid-movement-256x256,Fail +kms_cursor_crc@cursor-rapid-movement-256x85,Fail +kms_cursor_crc@cursor-rapid-movement-32x10,Fail +kms_cursor_crc@cursor-rapid-movement-32x32,Fail +kms_cursor_crc@cursor-rapid-movement-512x170,Fail +kms_cursor_crc@cursor-rapid-movement-512x512,Fail +kms_cursor_crc@cursor-rapid-movement-64x21,Fail +kms_cursor_crc@cursor-rapid-movement-64x64,Fail +kms_cursor_crc@cursor-size-change,Fail +kms_cursor_crc@cursor-sliding-128x128,Fail +kms_cursor_crc@cursor-sliding-128x42,Fail +kms_cursor_crc@cursor-sliding-256x256,Fail +kms_cursor_crc@cursor-sliding-256x85,Fail +kms_cursor_crc@cursor-sliding-32x10,Fail +kms_cursor_crc@cursor-sliding-32x32,Fail +kms_cursor_crc@cursor-sliding-512x170,Fail +kms_cursor_crc@cursor-sliding-512x512,Fail +kms_cursor_crc@cursor-sliding-64x21,Fail +kms_cursor_crc@cursor-sliding-64x64,Fail +kms_cursor_edge_walk@128x128-left-edge,Fail +kms_cursor_edge_walk@128x128-right-edge,Fail +kms_cursor_edge_walk@128x128-top-bottom,Fail +kms_cursor_edge_walk@128x128-top-edge,Fail +kms_cursor_edge_walk@256x256-left-edge,Fail +kms_cursor_edge_walk@256x256-right-edge,Fail +kms_cursor_edge_walk@256x256-top-bottom,Fail +kms_cursor_edge_walk@256x256-top-edge,Fail +kms_cursor_edge_walk@64x64-left-edge,Fail +kms_cursor_edge_walk@64x64-right-edge,Fail +kms_cursor_edge_walk@64x64-top-bottom,Fail +kms_cursor_edge_walk@64x64-top-edge,Fail +kms_cursor_legacy@2x-cursor-vs-flip-atomic,Fail +kms_cursor_legacy@2x-cursor-vs-flip-legacy,Fail +kms_cursor_legacy@2x-flip-vs-cursor-atomic,Fail +kms_cursor_legacy@2x-flip-vs-cursor-legacy,Fail +kms_cursor_legacy@2x-long-cursor-vs-flip-atomic,Fail +kms_cursor_legacy@2x-long-cursor-vs-flip-legacy,Fail +kms_cursor_legacy@2x-long-flip-vs-cursor-atomic,Fail +kms_cursor_legacy@2x-long-flip-vs-cursor-legacy,Fail kms_cursor_legacy@cursor-vs-flip-toggle,Fail kms_cursor_legacy@cursor-vs-flip-varying-size,Fail +kms_display_modes@extended-mode-basic,Fail +kms_flip@2x-flip-vs-modeset-vs-hang,Fail +kms_flip@2x-flip-vs-panning-vs-hang,Fail +kms_flip@absolute-wf_vblank,Fail +kms_flip@absolute-wf_vblank-interruptible,Fail +kms_flip@basic-flip-vs-wf_vblank,Fail +kms_flip@basic-plain-flip,Fail +kms_flip@blocking-absolute-wf_vblank,Fail +kms_flip@blocking-absolute-wf_vblank-interruptible,Fail +kms_flip@blocking-wf_vblank,Fail +kms_flip@busy-flip,Fail +kms_flip@dpms-off-confusion,Fail +kms_flip@dpms-off-confusion-interruptible,Fail +kms_flip@dpms-vs-vblank-race,Fail +kms_flip@dpms-vs-vblank-race-interruptible,Fail +kms_flip@flip-vs-absolute-wf_vblank,Fail +kms_flip@flip-vs-absolute-wf_vblank-interruptible,Fail +kms_flip@flip-vs-blocking-wf-vblank,Fail +kms_flip@flip-vs-expired-vblank,Fail +kms_flip@flip-vs-expired-vblank-interruptible,Fail kms_flip@flip-vs-modeset-vs-hang,Fail +kms_flip@flip-vs-panning,Fail +kms_flip@flip-vs-panning-interruptible,Fail kms_flip@flip-vs-panning-vs-hang,Fail +kms_flip@flip-vs-rmfb,Fail +kms_flip@flip-vs-rmfb-interruptible,Fail +kms_flip@flip-vs-wf_vblank-interruptible,Fail +kms_flip@modeset-vs-vblank-race,Fail +kms_flip@modeset-vs-vblank-race-interruptible,Fail +kms_flip@plain-flip-fb-recreate,Fail +kms_flip@plain-flip-fb-recreate-interruptible,Fail +kms_flip@plain-flip-interruptible,Fail +kms_flip@plain-flip-ts-check,Fail +kms_flip@plain-flip-ts-check-interruptible,Fail +kms_flip@wf_vblank-ts-check,Fail +kms_flip@wf_vblank-ts-check-interruptible,Fail +kms_lease@cursor-implicit-plane,Fail +kms_lease@lease-uevent,Fail +kms_lease@page-flip-implicit-plane,Fail +kms_lease@setcrtc-implicit-plane,Fail +kms_lease@simple-lease,Fail +kms_multipipe_modeset@basic-max-pipe-crc-check,Fail kms_pipe_crc_basic@compare-crc-sanitycheck-nv12,Fail +kms_pipe_crc_basic@compare-crc-sanitycheck-xr24,Fail +kms_pipe_crc_basic@disable-crc-after-crtc,Fail +kms_pipe_crc_basic@nonblocking-crc,Fail +kms_pipe_crc_basic@nonblocking-crc-frame-sequence,Fail +kms_pipe_crc_basic@read-crc,Fail +kms_pipe_crc_basic@read-crc-frame-sequence,Fail +kms_plane@pixel-format,Fail +kms_plane@pixel-format-source-clamping,Fail +kms_plane@plane-panning-bottom-right,Fail +kms_plane@plane-panning-top-left,Fail +kms_plane@plane-position-covered,Fail +kms_plane@plane-position-hole,Fail +kms_plane@plane-position-hole-dpms,Fail kms_plane_alpha_blend@alpha-7efc,Fail +kms_plane_alpha_blend@alpha-basic,Fail +kms_plane_alpha_blend@alpha-opaque-fb,Fail +kms_plane_alpha_blend@alpha-transparent-fb,Fail +kms_plane_alpha_blend@constant-alpha-max,Fail +kms_plane_alpha_blend@constant-alpha-mid,Fail +kms_plane_alpha_blend@constant-alpha-min,Fail kms_plane_alpha_blend@coverage-7efc,Fail kms_plane_alpha_blend@coverage-vs-premult-vs-constant,Fail +kms_plane_cursor@primary,Fail +kms_plane_lowres@tiling-none,Fail +kms_plane_multiple@tiling-none,Fail kms_rmfb@close-fd,Fail -kms_universal_plane@universal-plane-sanity,Fail +kms_rotation_crc@cursor-rotation-180,Fail +kms_rotation_crc@primary-rotation-180,Fail +kms_sequence@get-busy,Fail +kms_sequence@get-forked,Fail +kms_sequence@get-forked-busy,Fail +kms_sequence@get-idle,Fail +kms_sequence@queue-busy,Fail +kms_sequence@queue-idle,Fail +kms_vblank@accuracy-idle,Fail +kms_vblank@crtc-id,Fail +kms_vblank@query-busy,Fail +kms_vblank@query-forked,Fail +kms_vblank@query-forked-busy,Fail +kms_vblank@query-idle,Fail +kms_vblank@ts-continuation-dpms-rpm,Fail +kms_vblank@ts-continuation-idle,Fail +kms_vblank@ts-continuation-modeset,Fail +kms_vblank@ts-continuation-modeset-rpm,Fail +kms_vblank@wait-busy,Fail +kms_vblank@wait-forked,Fail +kms_vblank@wait-forked-busy,Fail +kms_vblank@wait-idle,Fail +tools_test@tools_test,Fail diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-flakes.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-flakes.txt new file mode 100644 index 000000000000..dcb24b835dc3 --- /dev/null +++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-flakes.txt @@ -0,0 +1,6 @@ +# Board Name: sc7180-trogdor-lazor-limozeen-nots-r5 +# Bug Report: https://lore.kernel.org/linux-arm-msm/661483c8-ad82-400d-bcd8-e94986d20d7d@collabora.com/T/#u +# IGT Version: 1.28-g0df7b9b97 +# Linux Version: 6.9.0-rc7 +# Failure Rate: 50 +msm_mapping@shadow diff --git a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-skips.txt b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-skips.txt index 327039f70252..1168c53acd2d 100644 --- a/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-skips.txt +++ b/drivers/gpu/drm/ci/xfails/msm-sc7180-trogdor-lazor-limozeen-skips.txt @@ -1,2 +1,18 @@ # Suspend to RAM seems to be broken on this machine .*suspend.* + +# Skip driver specific tests +^amdgpu.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# Skip intel specific tests +gem_.* +i915_.* + +# Currently fails and causes coverage loss for other tests +# since core_getversion also fails. +core_hotunplug.* diff --git a/drivers/gpu/drm/ci/xfails/msm-sdm845-fails.txt b/drivers/gpu/drm/ci/xfails/msm-sdm845-fails.txt index e9043a00383e..8f010c8a9c4f 100644 --- a/drivers/gpu/drm/ci/xfails/msm-sdm845-fails.txt +++ b/drivers/gpu/drm/ci/xfails/msm-sdm845-fails.txt @@ -1,3 +1,8 @@ +device_reset@cold-reset-bound,Fail +device_reset@reset-bound,Fail +device_reset@unbind-cold-reset-rebind,Fail +device_reset@unbind-reset-rebind,Fail +dumb_buffer@invalid-bpp,Fail kms_color@ctm-0-25,Fail kms_color@ctm-0-50,Fail kms_color@ctm-0-75,Fail @@ -6,17 +11,6 @@ kms_color@ctm-green-to-red,Fail kms_color@ctm-negative,Fail kms_color@ctm-red-to-blue,Fail kms_color@ctm-signed,Fail -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-varying-size,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 @@ -31,30 +25,12 @@ kms_cursor_legacy@flip-vs-cursor-crc-legacy,Fail kms_cursor_legacy@flip-vs-cursor-legacy,Fail kms_flip@flip-vs-modeset-vs-hang,Fail kms_flip@flip-vs-panning-vs-hang,Fail +kms_lease@lease-uevent,Fail kms_pipe_crc_basic@compare-crc-sanitycheck-nv12,Fail kms_plane_alpha_blend@alpha-7efc,Fail kms_plane_alpha_blend@coverage-7efc,Fail kms_plane_alpha_blend@coverage-vs-premult-vs-constant,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@overlay,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_cursor@viewport,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@plane-downscale-with-pixel-format-factor-0-25,Timeout -kms_plane_scaling@plane-downscale-with-pixel-format-factor-0-5,Timeout -kms_plane_scaling@plane-downscale-with-pixel-format-factor-0-75,Timeout -kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats,Timeout -kms_plane_scaling@plane-scaler-with-pixel-format-unity-scaling,Timeout -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 +tools_test@tools_test,Fail diff --git a/drivers/gpu/drm/ci/xfails/msm-sdm845-flakes.txt b/drivers/gpu/drm/ci/xfails/msm-sdm845-flakes.txt index 8a492f01eaa4..2c5f62b07632 100644 --- a/drivers/gpu/drm/ci/xfails/msm-sdm845-flakes.txt +++ b/drivers/gpu/drm/ci/xfails/msm-sdm845-flakes.txt @@ -1,22 +1,19 @@ -# Board Name: msm:sdm845 -# Bug Report: https://lore.kernel.org/dri-devel/46287831-edfa-78e8-6055-d7a08831c445@collabora.com/T/#u +# Board Name: sdm845-cheza-r3 +# Bug Report: https://lore.kernel.org/linux-arm-msm/661483c8-ad82-400d-bcd8-e94986d20d7d@collabora.com/T/#u +# IGT Version: 1.28-g0df7b9b97 +# Linux Version: 6.9.0-rc7 # Failure Rate: 50 -# IGT Version: 1.28-gd2af13d9f -# Linux Version: 6.7.0-rc3 - -# Reported by deqp-runner +kms_cursor_legacy@basic-flip-after-cursor-atomic kms_cursor_legacy@basic-flip-after-cursor-legacy -kms_cursor_legacy@flip-vs-cursor-toggle +kms_cursor_legacy@basic-flip-after-cursor-varying-size +kms_cursor_legacy@basic-flip-before-cursor-varying-size +kms_cursor_legacy@flip-vs-cursor-atomic-transitions +kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size kms_cursor_legacy@flip-vs-cursor-varying-size +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 msm_shrink@copy-gpu-32 msm_shrink@copy-gpu-oom-32 - -# The below test shows inconsistency across multiple runs, giving -# results of Pass and Fail alternately. -kms_cursor_legacy@basic-flip-before-cursor-varying-size -kms_cursor_legacy@flip-vs-cursor-atomic-transitions -kms_cursor_legacy@short-flip-after-cursor-atomic-transitions -kms_cursor_legacy@short-flip-after-cursor-atomic-transitions-varying-size diff --git a/drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt b/drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt index 618e3a3a7277..5185212c8fb2 100644 --- a/drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt +++ b/drivers/gpu/drm/ci/xfails/msm-sdm845-skips.txt @@ -5,3 +5,22 @@ kms_bw.* # https://gitlab.freedesktop.org/gfx-ci/linux/-/commit/4b49f902ec6f2bb382cbbf489870573f4b43371e # https://gitlab.freedesktop.org/gfx-ci/linux/-/commit/38cdf4c5559771e2474ae0fecef8469f65147bc1 msm_mapping@* + +# Skip driver specific tests +^amdgpu.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# Skip intel specific tests +gem_.* +i915_.* + +# Currently fails and causes coverage loss for other tests +# since core_getversion also fails. +core_hotunplug.* + +# Whole machine hangs +kms_cursor_crc.* diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3288-fails.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-fails.txt index 90c63f519e9e..f9b99bf27105 100644 --- a/drivers/gpu/drm/ci/xfails/rockchip-rk3288-fails.txt +++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-fails.txt @@ -1,54 +1,8 @@ -kms_3d,Crash -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_flip@flip-vs-modeset-vs-hang,Crash -kms_flip@flip-vs-panning-vs-hang,Crash -kms_force_connector_basic@force-load-detect,Fail -kms_invalid_mode@int-max-clock,Crash -kms_pipe_crc_basic@compare-crc-sanitycheck-nv12,Crash -kms_pipe_crc_basic@nonblocking-crc-frame-sequence,Crash -kms_pipe_crc_basic@read-crc-frame-sequence,Crash -kms_plane@pixel-format,Crash -kms_plane@pixel-format-source-clamping,Crash -kms_plane@plane-position-hole,Crash -kms_plane@plane-position-hole-dpms,Crash -kms_plane_cursor@overlay,Crash -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_cursor@primary,Crash -kms_plane_cursor@viewport,Crash -kms_plane_lowres@tiling-none,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,Crash -kms_properties@connector-properties-legacy,Crash -kms_properties@get_properties-sanity-atomic,Crash -kms_properties@get_properties-sanity-non-atomic,Crash -kms_rmfb@close-fd,Crash -kms_setmode@invalid-clone-single-crtc,Crash +dumb_buffer@create-clear,Crash +dumb_buffer@create-valid-dumb,Crash +dumb_buffer@invalid-bpp,Crash +dumb_buffer@map-invalid-size,Crash +dumb_buffer@map-uaf,Crash +dumb_buffer@map-valid,Crash +panfrost_prime@gem-prime-import,Crash +tools_test@tools_test,Crash diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3288-skips.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-skips.txt index f20c3574b75a..6d3757dca83b 100644 --- a/drivers/gpu/drm/ci/xfails/rockchip-rk3288-skips.txt +++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3288-skips.txt @@ -49,4 +49,23 @@ kms_plane_lowres@pipe-F-tiling-y kms_cursor_crc.* # Machine is hanging in this test, so skip it -kms_pipe_crc_basic@disable-crc-after-crtc
\ No newline at end of file +kms_pipe_crc_basic@disable-crc-after-crtc + +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +^v3d.* +^vc4.* +^vmwgfx* + +# Skip intel specific tests +gem_.* +i915_.* + +# Panfrost is not a KMS driver, so skip the KMS tests +kms_.* + +# Currently fails and causes coverage loss for other tests +# since core_getversion also fails. +core_hotunplug.* diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3399-fails.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-fails.txt index d516d9c1d546..9ef460646d76 100644 --- a/drivers/gpu/drm/ci/xfails/rockchip-rk3399-fails.txt +++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-fails.txt @@ -1,75 +1,8 @@ -kms_color@gamma,Fail -kms_color@legacy-gamma,Fail -kms_color@pipe-A-legacy-gamma,Fail -kms_color@pipe-B-legacy-gamma,Fail -kms_cursor_crc@cursor-alpha-opaque,Fail -kms_cursor_crc@cursor-alpha-transparent,Fail -kms_cursor_crc@cursor-dpms,Fail -kms_cursor_crc@cursor-offscreen-32x10,Fail -kms_cursor_crc@cursor-offscreen-32x32,Fail -kms_cursor_crc@cursor-offscreen-64x64,Fail -kms_cursor_crc@cursor-onscreen-32x10,Fail -kms_cursor_crc@cursor-onscreen-32x32,Fail -kms_cursor_crc@cursor-onscreen-64x21,Fail -kms_cursor_crc@cursor-onscreen-64x64,Fail -kms_cursor_crc@cursor-random-32x10,Fail -kms_cursor_crc@cursor-random-32x32,Fail -kms_cursor_crc@cursor-random-64x21,Fail -kms_cursor_crc@cursor-random-64x64,Fail -kms_cursor_crc@cursor-rapid-movement-32x32,Fail -kms_cursor_crc@cursor-rapid-movement-64x21,Fail -kms_cursor_crc@cursor-rapid-movement-64x64,Fail -kms_cursor_crc@cursor-size-change,Fail -kms_cursor_crc@cursor-sliding-32x10,Fail -kms_cursor_crc@cursor-sliding-32x32,Fail -kms_cursor_crc@cursor-sliding-64x21,Fail -kms_cursor_crc@cursor-sliding-64x64,Fail -kms_flip@basic-flip-vs-wf_vblank,Fail -kms_flip@blocking-wf_vblank,Fail -kms_flip@dpms-vs-vblank-race,Fail -kms_flip@flip-vs-absolute-wf_vblank,Fail -kms_flip@flip-vs-absolute-wf_vblank-interruptible,Fail -kms_flip@flip-vs-blocking-wf-vblank,Fail -kms_flip@flip-vs-modeset-vs-hang,Fail -kms_flip@flip-vs-panning,Fail -kms_flip@flip-vs-panning-interruptible,Fail -kms_flip@flip-vs-panning-vs-hang,Fail -kms_flip@modeset-vs-vblank-race,Fail -kms_flip@plain-flip-fb-recreate,Fail -kms_flip@plain-flip-fb-recreate-interruptible,Fail -kms_flip@plain-flip-ts-check,Fail -kms_flip@plain-flip-ts-check-interruptible,Fail -kms_flip@wf_vblank-ts-check,Fail -kms_flip@wf_vblank-ts-check-interruptible,Fail -kms_invalid_mode@int-max-clock,Fail -kms_pipe_crc_basic@compare-crc-sanitycheck-nv12,Fail -kms_pipe_crc_basic@compare-crc-sanitycheck-xr24,Fail -kms_pipe_crc_basic@disable-crc-after-crtc,Fail -kms_pipe_crc_basic@nonblocking-crc,Fail -kms_pipe_crc_basic@nonblocking-crc-frame-sequence,Fail -kms_pipe_crc_basic@read-crc,Fail -kms_pipe_crc_basic@read-crc-frame-sequence,Fail -kms_plane@pixel-format,Fail -kms_plane@pixel-format-source-clamping,Fail -kms_plane@plane-panning-bottom-right,Fail -kms_plane@plane-panning-top-left,Fail -kms_plane@plane-position-covered,Fail -kms_plane@plane-position-hole,Fail -kms_plane@plane-position-hole-dpms,Fail -kms_plane_cursor@overlay,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_cursor@primary,Fail -kms_plane_cursor@viewport,Fail -kms_plane_multiple@atomic-pipe-B-tiling-none,Fail -kms_plane_multiple@tiling-none,Fail -kms_prime@basic-crc,Fail -kms_rmfb@close-fd,Fail -kms_universal_plane@universal-plane-pipe-B-functional,Fail +dumb_buffer@create-clear,Fail +dumb_buffer@create-valid-dumb,Fail +dumb_buffer@invalid-bpp,Fail +dumb_buffer@map-invalid-size,Fail +dumb_buffer@map-uaf,Fail +dumb_buffer@map-valid,Fail +panfrost_prime@gem-prime-import,Fail +tools_test@tools_test,Fail diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3399-flakes.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-flakes.txt index c9fdc623ab91..742c27d9a598 100644 --- a/drivers/gpu/drm/ci/xfails/rockchip-rk3399-flakes.txt +++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-flakes.txt @@ -1,7 +1,6 @@ -kms_bw@linear-tiling-2-displays-1920x1080p -kms_cursor_crc@cursor-offscreen-64x21 -kms_flip@dpms-vs-vblank-race-interruptible -kms_flip@flip-vs-wf_vblank-interruptible -kms_plane_cursor@overlay -kms_plane_cursor@primary -kms_plane_cursor@viewport +# Board Name: rk3399-gru-kevin +# Bug Report: https://lore.kernel.org/dri-devel/5cc34a8b-c1fa-4744-9031-2d33ecf41011@collabora.com/T/#u +# IGT Version: 1.28-g0df7b9b97 +# Linux Version: 6.9.0-rc7 +# Failure Rate: 50 +panfrost_submit@pan-unhandled-pagefault diff --git a/drivers/gpu/drm/ci/xfails/rockchip-rk3399-skips.txt b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-skips.txt index 10c3d81a919a..5c52b25b4213 100644 --- a/drivers/gpu/drm/ci/xfails/rockchip-rk3399-skips.txt +++ b/drivers/gpu/drm/ci/xfails/rockchip-rk3399-skips.txt @@ -3,3 +3,22 @@ # Too unstable, machine ends up hanging after lots of Oopses kms_cursor_legacy.* + +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +^v3d.* +^vc4.* +^vmwgfx* + +# Skip intel specific tests +gem_.* +i915_.* + +# Panfrost is not a KMS driver, so skip the KMS tests +kms_.* + +# Currently fails and causes coverage loss for other tests +# since core_getversion also fails. +core_hotunplug.* diff --git a/drivers/gpu/drm/ci/xfails/update-xfails.py b/drivers/gpu/drm/ci/xfails/update-xfails.py index e9f0ec7fed8d..a446e98d72a1 100755 --- a/drivers/gpu/drm/ci/xfails/update-xfails.py +++ b/drivers/gpu/drm/ci/xfails/update-xfails.py @@ -93,10 +93,10 @@ def add_unit_test_or_update_result_to_fails_if_present(fails_txt, unit_test, fai def split_unit_test_from_collate(xfails): for job_name in xfails.keys(): for job_id in xfails[job_name].copy().keys(): - if "not found" in xfails[job_name][job_id]: + if "not found" in xfails[job_name][job_id].content_as_str: del xfails[job_name][job_id] continue - xfails[job_name][job_id] = xfails[job_name][job_id].strip().split("\n") + xfails[job_name][job_id] = xfails[job_name][job_id].content_as_str.splitlines() def get_xfails_from_pipeline_url(pipeline_url): diff --git a/drivers/gpu/drm/ci/xfails/virtio_gpu-none-fails.txt b/drivers/gpu/drm/ci/xfails/virtio_gpu-none-fails.txt index 007f21e56d89..fdf09fe11566 100644 --- a/drivers/gpu/drm/ci/xfails/virtio_gpu-none-fails.txt +++ b/drivers/gpu/drm/ci/xfails/virtio_gpu-none-fails.txt @@ -1,33 +1,72 @@ -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-2160x1440p,Fail kms_bw@linear-tiling-1-displays-2560x1440p,Fail kms_bw@linear-tiling-1-displays-3840x2160p,Fail +kms_bw@linear-tiling-10-displays-1920x1080p,Fail +kms_bw@linear-tiling-10-displays-2160x1440p,Fail +kms_bw@linear-tiling-10-displays-2560x1440p,Fail +kms_bw@linear-tiling-10-displays-3840x2160p,Fail +kms_bw@linear-tiling-11-displays-1920x1080p,Fail +kms_bw@linear-tiling-11-displays-2160x1440p,Fail +kms_bw@linear-tiling-11-displays-2560x1440p,Fail +kms_bw@linear-tiling-11-displays-3840x2160p,Fail +kms_bw@linear-tiling-12-displays-1920x1080p,Fail +kms_bw@linear-tiling-12-displays-2160x1440p,Fail +kms_bw@linear-tiling-12-displays-2560x1440p,Fail +kms_bw@linear-tiling-12-displays-3840x2160p,Fail +kms_bw@linear-tiling-13-displays-1920x1080p,Fail +kms_bw@linear-tiling-13-displays-2160x1440p,Fail +kms_bw@linear-tiling-13-displays-2560x1440p,Fail +kms_bw@linear-tiling-13-displays-3840x2160p,Fail +kms_bw@linear-tiling-14-displays-1920x1080p,Fail +kms_bw@linear-tiling-14-displays-2160x1440p,Fail +kms_bw@linear-tiling-14-displays-2560x1440p,Fail +kms_bw@linear-tiling-14-displays-3840x2160p,Fail +kms_bw@linear-tiling-15-displays-1920x1080p,Fail +kms_bw@linear-tiling-15-displays-2160x1440p,Fail +kms_bw@linear-tiling-15-displays-2560x1440p,Fail +kms_bw@linear-tiling-15-displays-3840x2160p,Fail +kms_bw@linear-tiling-16-displays-1920x1080p,Fail +kms_bw@linear-tiling-16-displays-2160x1440p,Fail +kms_bw@linear-tiling-16-displays-2560x1440p,Fail +kms_bw@linear-tiling-16-displays-3840x2160p,Fail kms_bw@linear-tiling-2-displays-1920x1080p,Fail +kms_bw@linear-tiling-2-displays-2160x1440p,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-2160x1440p,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-2160x1440p,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-2160x1440p,Fail kms_bw@linear-tiling-5-displays-2560x1440p,Fail kms_bw@linear-tiling-5-displays-3840x2160p,Fail kms_bw@linear-tiling-6-displays-1920x1080p,Fail +kms_bw@linear-tiling-6-displays-2160x1440p,Fail kms_bw@linear-tiling-6-displays-2560x1440p,Fail kms_bw@linear-tiling-6-displays-3840x2160p,Fail kms_bw@linear-tiling-7-displays-1920x1080p,Fail +kms_bw@linear-tiling-7-displays-2160x1440p,Fail kms_bw@linear-tiling-7-displays-2560x1440p,Fail kms_bw@linear-tiling-7-displays-3840x2160p,Fail kms_bw@linear-tiling-8-displays-1920x1080p,Fail +kms_bw@linear-tiling-8-displays-2160x1440p,Fail kms_bw@linear-tiling-8-displays-2560x1440p,Fail kms_bw@linear-tiling-8-displays-3840x2160p,Fail +kms_bw@linear-tiling-9-displays-1920x1080p,Fail +kms_bw@linear-tiling-9-displays-2160x1440p,Fail +kms_bw@linear-tiling-9-displays-2560x1440p,Fail +kms_bw@linear-tiling-9-displays-3840x2160p,Fail kms_flip@absolute-wf_vblank,Fail kms_flip@absolute-wf_vblank-interruptible,Fail kms_flip@basic-flip-vs-wf_vblank,Fail @@ -54,31 +93,34 @@ kms_flip@plain-flip-ts-check-interruptible,Fail kms_flip@wf_vblank-ts-check,Fail kms_flip@wf_vblank-ts-check-interruptible,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_selftest@drm_format,Timeout -kms_selftest@drm_format_helper,Timeout +kms_lease@cursor-implicit-plane,Fail +kms_lease@lease-uevent,Fail +kms_lease@page-flip-implicit-plane,Fail +kms_lease@setcrtc-implicit-plane,Fail +kms_lease@simple-lease,Fail +kms_sequence@get-busy,Fail +kms_sequence@get-forked,Fail +kms_sequence@get-forked-busy,Fail +kms_sequence@get-idle,Fail +kms_sequence@queue-busy,Fail +kms_sequence@queue-idle,Fail kms_setmode@basic,Fail +kms_vblank@accuracy-idle,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 +kms_vblank@query-busy,Fail +kms_vblank@query-forked,Fail +kms_vblank@query-forked-busy,Fail +kms_vblank@query-idle,Fail +kms_vblank@ts-continuation-dpms-rpm,Fail +kms_vblank@ts-continuation-dpms-suspend,Fail +kms_vblank@ts-continuation-idle,Fail +kms_vblank@ts-continuation-modeset,Fail +kms_vblank@ts-continuation-modeset-rpm,Fail +kms_vblank@ts-continuation-suspend,Fail +kms_vblank@wait-busy,Fail +kms_vblank@wait-forked,Fail +kms_vblank@wait-forked-busy,Fail +kms_vblank@wait-idle,Fail +perf@i915-ref-count,Fail +tools_test@tools_test,Fail diff --git a/drivers/gpu/drm/ci/xfails/virtio_gpu-none-skips.txt b/drivers/gpu/drm/ci/xfails/virtio_gpu-none-skips.txt index 78be18174012..e0ca4fadb84f 100644 --- a/drivers/gpu/drm/ci/xfails/virtio_gpu-none-skips.txt +++ b/drivers/gpu/drm/ci/xfails/virtio_gpu-none-skips.txt @@ -3,4 +3,22 @@ kms_cursor_legacy.* # Job just hangs without any output -kms_flip@flip-vs-suspend.*
\ No newline at end of file +kms_flip@flip-vs-suspend.* + +# Skip driver specific tests +^amdgpu.* +msm_.* +nouveau_.* +panfrost_.* +^v3d.* +^vc4.* +^vmwgfx* + +# Skip intel specific tests +gem_.* +i915_.* +xe_.* + +# Currently fails and causes coverage loss for other tests +# since core_getversion also fails. +core_hotunplug.* diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/drm/display/drm_hdmi_state_helper.c index 437270c29210..2dab3ad8ce64 100644 --- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c +++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c @@ -714,3 +714,39 @@ drm_atomic_helper_connector_hdmi_update_audio_infoframe(struct drm_connector *co return ret; } EXPORT_SYMBOL(drm_atomic_helper_connector_hdmi_update_audio_infoframe); + +/** + * drm_atomic_helper_connector_hdmi_disable_audio_infoframe - Stop sending the Audio Infoframe + * @connector: A pointer to the HDMI connector + * + * This function is meant for HDMI connector drivers to stop sending their + * audio infoframe. It will typically be used in one of the ALSA hooks + * (most likely shutdown). + * + * Returns: + * Zero on success, error code on failure. + */ +int +drm_atomic_helper_connector_hdmi_disable_audio_infoframe(struct drm_connector *connector) +{ + struct drm_connector_hdmi_infoframe *infoframe = + &connector->hdmi.infoframes.audio; + struct drm_display_info *info = &connector->display_info; + int ret; + + if (!info->is_hdmi) + return 0; + + mutex_lock(&connector->hdmi.infoframes.lock); + + infoframe->set = false; + + ret = clear_infoframe(connector, infoframe); + + memset(&infoframe->data, 0, sizeof(infoframe->data)); + + mutex_unlock(&connector->hdmi.infoframes.lock); + + return ret; +} +EXPORT_SYMBOL(drm_atomic_helper_connector_hdmi_disable_audio_infoframe); diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c index 584d109330ab..d44f055dbe3e 100644 --- a/drivers/gpu/drm/drm_bridge.c +++ b/drivers/gpu/drm/drm_bridge.c @@ -468,43 +468,6 @@ void drm_bridge_detach(struct drm_bridge *bridge) */ /** - * drm_bridge_chain_mode_fixup - fixup proposed mode for all bridges in the - * encoder chain - * @bridge: bridge control structure - * @mode: desired mode to be set for the bridge - * @adjusted_mode: updated mode that works for this bridge - * - * Calls &drm_bridge_funcs.mode_fixup for all the bridges in the - * encoder chain, starting from the first bridge to the last. - * - * Note: the bridge passed should be the one closest to the encoder - * - * RETURNS: - * true on success, false on failure - */ -bool drm_bridge_chain_mode_fixup(struct drm_bridge *bridge, - const struct drm_display_mode *mode, - struct drm_display_mode *adjusted_mode) -{ - struct drm_encoder *encoder; - - if (!bridge) - return true; - - encoder = bridge->encoder; - list_for_each_entry_from(bridge, &encoder->bridge_chain, chain_node) { - if (!bridge->funcs->mode_fixup) - continue; - - if (!bridge->funcs->mode_fixup(bridge, mode, adjusted_mode)) - return false; - } - - return true; -} -EXPORT_SYMBOL(drm_bridge_chain_mode_fixup); - -/** * drm_bridge_chain_mode_valid - validate the mode against all bridges in the * encoder chain. * @bridge: bridge control structure diff --git a/drivers/gpu/drm/drm_bridge_connector.c b/drivers/gpu/drm/drm_bridge_connector.c index 982552c9f92c..0869b663f17e 100644 --- a/drivers/gpu/drm/drm_bridge_connector.c +++ b/drivers/gpu/drm/drm_bridge_connector.c @@ -15,8 +15,10 @@ #include <drm/drm_connector.h> #include <drm/drm_device.h> #include <drm/drm_edid.h> +#include <drm/drm_managed.h> #include <drm/drm_modeset_helper_vtables.h> #include <drm/drm_probe_helper.h> +#include <drm/display/drm_hdmi_state_helper.h> /** * DOC: overview @@ -86,6 +88,13 @@ struct drm_bridge_connector { * connector modes detection, if any (see &DRM_BRIDGE_OP_MODES). */ struct drm_bridge *bridge_modes; + /** + * @bridge_hdmi: + * + * The bridge in the chain that implements necessary support for the + * HDMI connector infrastructure, if any (see &DRM_BRIDGE_OP_HDMI). + */ + struct drm_bridge *bridge_hdmi; }; #define to_drm_bridge_connector(x) \ @@ -193,19 +202,6 @@ drm_bridge_connector_detect(struct drm_connector *connector, bool force) return status; } -static void drm_bridge_connector_destroy(struct drm_connector *connector) -{ - struct drm_bridge_connector *bridge_connector = - to_drm_bridge_connector(connector); - - drm_connector_unregister(connector); - drm_connector_cleanup(connector); - - fwnode_handle_put(connector->fwnode); - - kfree(bridge_connector); -} - static void drm_bridge_connector_debugfs_init(struct drm_connector *connector, struct dentry *root) { @@ -224,7 +220,6 @@ static const struct drm_connector_funcs drm_bridge_connector_funcs = { .reset = drm_atomic_helper_connector_reset, .detect = drm_bridge_connector_detect, .fill_modes = drm_helper_probe_single_connector_modes, - .destroy = drm_bridge_connector_destroy, .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, .debugfs_init = drm_bridge_connector_debugfs_init, @@ -300,6 +295,60 @@ static const struct drm_connector_helper_funcs drm_bridge_connector_helper_funcs .disable_hpd = drm_bridge_connector_disable_hpd, }; +static enum drm_mode_status +drm_bridge_connector_tmds_char_rate_valid(const struct drm_connector *connector, + const struct drm_display_mode *mode, + unsigned long long tmds_rate) +{ + struct drm_bridge_connector *bridge_connector = + to_drm_bridge_connector(connector); + struct drm_bridge *bridge; + + bridge = bridge_connector->bridge_hdmi; + if (!bridge) + return MODE_ERROR; + + if (bridge->funcs->hdmi_tmds_char_rate_valid) + return bridge->funcs->hdmi_tmds_char_rate_valid(bridge, mode, tmds_rate); + else + return MODE_OK; +} + +static int drm_bridge_connector_clear_infoframe(struct drm_connector *connector, + enum hdmi_infoframe_type type) +{ + struct drm_bridge_connector *bridge_connector = + to_drm_bridge_connector(connector); + struct drm_bridge *bridge; + + bridge = bridge_connector->bridge_hdmi; + if (!bridge) + return -EINVAL; + + return bridge->funcs->hdmi_clear_infoframe(bridge, type); +} + +static int drm_bridge_connector_write_infoframe(struct drm_connector *connector, + enum hdmi_infoframe_type type, + const u8 *buffer, size_t len) +{ + struct drm_bridge_connector *bridge_connector = + to_drm_bridge_connector(connector); + struct drm_bridge *bridge; + + bridge = bridge_connector->bridge_hdmi; + if (!bridge) + return -EINVAL; + + return bridge->funcs->hdmi_write_infoframe(bridge, type, buffer, len); +} + +static const struct drm_connector_hdmi_funcs drm_bridge_connector_hdmi_funcs = { + .tmds_char_rate_valid = drm_bridge_connector_tmds_char_rate_valid, + .clear_infoframe = drm_bridge_connector_clear_infoframe, + .write_infoframe = drm_bridge_connector_write_infoframe, +}; + /* ----------------------------------------------------------------------------- * Bridge Connector Initialisation */ @@ -325,10 +374,12 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm, struct drm_connector *connector; struct i2c_adapter *ddc = NULL; struct drm_bridge *bridge, *panel_bridge = NULL; + unsigned int supported_formats = BIT(HDMI_COLORSPACE_RGB); + unsigned int max_bpc = 8; int connector_type; int ret; - bridge_connector = kzalloc(sizeof(*bridge_connector), GFP_KERNEL); + bridge_connector = drmm_kzalloc(drm, sizeof(*bridge_connector), GFP_KERNEL); if (!bridge_connector) return ERR_PTR(-ENOMEM); @@ -361,6 +412,20 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm, bridge_connector->bridge_detect = bridge; if (bridge->ops & DRM_BRIDGE_OP_MODES) bridge_connector->bridge_modes = bridge; + if (bridge->ops & DRM_BRIDGE_OP_HDMI) { + if (bridge_connector->bridge_hdmi) + return ERR_PTR(-EBUSY); + if (!bridge->funcs->hdmi_write_infoframe || + !bridge->funcs->hdmi_clear_infoframe) + return ERR_PTR(-EINVAL); + + bridge_connector->bridge_hdmi = bridge; + + if (bridge->supported_formats) + supported_formats = bridge->supported_formats; + if (bridge->max_bpc) + max_bpc = bridge->max_bpc; + } if (!drm_bridge_get_next_bridge(bridge)) connector_type = bridge->type; @@ -383,7 +448,17 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm, return ERR_PTR(-EINVAL); } - ret = drm_connector_init_with_ddc(drm, connector, + if (bridge_connector->bridge_hdmi) + ret = drmm_connector_hdmi_init(drm, connector, + bridge_connector->bridge_hdmi->vendor, + bridge_connector->bridge_hdmi->product, + &drm_bridge_connector_funcs, + &drm_bridge_connector_hdmi_funcs, + connector_type, ddc, + supported_formats, + max_bpc); + else + ret = drmm_connector_init(drm, connector, &drm_bridge_connector_funcs, connector_type, ddc); if (ret) { diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c index 8bec99251bee..6b239a24f1df 100644 --- a/drivers/gpu/drm/drm_debugfs.c +++ b/drivers/gpu/drm/drm_debugfs.c @@ -762,6 +762,8 @@ static int bridges_show(struct seq_file *m, void *data) drm_puts(&p, " hpd"); if (bridge->ops & DRM_BRIDGE_OP_MODES) drm_puts(&p, " modes"); + if (bridge->ops & DRM_BRIDGE_OP_HDMI) + drm_puts(&p, " hdmi"); drm_puts(&p, "\n"); } diff --git a/drivers/gpu/drm/drm_mipi_dbi.c b/drivers/gpu/drm/drm_mipi_dbi.c index daac649aabdb..34bca7567576 100644 --- a/drivers/gpu/drm/drm_mipi_dbi.c +++ b/drivers/gpu/drm/drm_mipi_dbi.c @@ -206,6 +206,7 @@ int mipi_dbi_buf_copy(void *dst, struct iosys_map *src, struct drm_framebuffer * struct drm_rect *clip, bool swap, struct drm_format_conv_state *fmtcnv_state) { + struct mipi_dbi_dev *dbidev = drm_to_mipi_dbi_dev(fb->dev); struct drm_gem_object *gem = drm_gem_fb_get_obj(fb, 0); struct iosys_map dst_map = IOSYS_MAP_INIT_VADDR(dst); int ret; @@ -222,8 +223,18 @@ int mipi_dbi_buf_copy(void *dst, struct iosys_map *src, struct drm_framebuffer * else drm_fb_memcpy(&dst_map, NULL, src, fb, clip); break; + case DRM_FORMAT_RGB888: + drm_fb_memcpy(&dst_map, NULL, src, fb, clip); + break; case DRM_FORMAT_XRGB8888: - drm_fb_xrgb8888_to_rgb565(&dst_map, NULL, src, fb, clip, fmtcnv_state, swap); + switch (dbidev->pixel_format) { + case DRM_FORMAT_RGB565: + drm_fb_xrgb8888_to_rgb565(&dst_map, NULL, src, fb, clip, fmtcnv_state, swap); + break; + case DRM_FORMAT_RGB888: + drm_fb_xrgb8888_to_rgb888(&dst_map, NULL, src, fb, clip, fmtcnv_state); + break; + } break; default: drm_err_once(fb->dev, "Format is not supported: %p4cc\n", @@ -260,9 +271,11 @@ static void mipi_dbi_fb_dirty(struct iosys_map *src, struct drm_framebuffer *fb, struct mipi_dbi_dev *dbidev = drm_to_mipi_dbi_dev(fb->dev); unsigned int height = rect->y2 - rect->y1; unsigned int width = rect->x2 - rect->x1; + const struct drm_format_info *dst_format; struct mipi_dbi *dbi = &dbidev->dbi; bool swap = dbi->swap_bytes; int ret = 0; + size_t len; bool full; void *tr; @@ -283,8 +296,13 @@ static void mipi_dbi_fb_dirty(struct iosys_map *src, struct drm_framebuffer *fb, mipi_dbi_set_window_address(dbidev, rect->x1, rect->x2 - 1, rect->y1, rect->y2 - 1); - ret = mipi_dbi_command_buf(dbi, MIPI_DCS_WRITE_MEMORY_START, tr, - width * height * 2); + if (fb->format->format == DRM_FORMAT_XRGB8888) + dst_format = drm_format_info(dbidev->pixel_format); + else + dst_format = fb->format; + len = drm_format_info_min_pitch(dst_format, 0, width) * height; + + ret = mipi_dbi_command_buf(dbi, MIPI_DCS_WRITE_MEMORY_START, tr, len); err_msg: if (ret) drm_err_once(fb->dev, "Failed to update display %d\n", ret); @@ -572,7 +590,7 @@ static const uint32_t mipi_dbi_formats[] = { * has one fixed &drm_display_mode which is rotated according to @rotation. * This mode is used to set the mode config min/max width/height properties. * - * Use mipi_dbi_dev_init() if you don't need custom formats. + * Use mipi_dbi_dev_init() if you want native RGB565 and emulated XRGB8888 format. * * Note: * Some of the helper functions expects RGB565 to be the default format and the @@ -631,6 +649,9 @@ int mipi_dbi_dev_init_with_formats(struct mipi_dbi_dev *dbidev, drm->mode_config.min_height = dbidev->mode.vdisplay; drm->mode_config.max_height = dbidev->mode.vdisplay; dbidev->rotation = rotation; + dbidev->pixel_format = formats[0]; + if (formats[0] == DRM_FORMAT_RGB888) + dbidev->dbi.write_memory_bpw = 8; DRM_DEBUG_KMS("rotation = %u\n", rotation); @@ -824,15 +845,6 @@ u32 mipi_dbi_spi_cmd_max_speed(struct spi_device *spi, size_t len) } EXPORT_SYMBOL(mipi_dbi_spi_cmd_max_speed); -static bool mipi_dbi_machine_little_endian(void) -{ -#if defined(__LITTLE_ENDIAN) - return true; -#else - return false; -#endif -} - /* * MIPI DBI Type C Option 1 * @@ -855,7 +867,7 @@ static int mipi_dbi_spi1e_transfer(struct mipi_dbi *dbi, int dc, const void *buf, size_t len, unsigned int bpw) { - bool swap_bytes = (bpw == 16 && mipi_dbi_machine_little_endian()); + bool swap_bytes = (bpw == 16); size_t chunk, max_chunk = dbi->tx_buf9_len; struct spi_device *spi = dbi->spi; struct spi_transfer tr = { @@ -1004,7 +1016,7 @@ static int mipi_dbi_spi1_transfer(struct mipi_dbi *dbi, int dc, size_t chunk = min(len, max_chunk); unsigned int i; - if (bpw == 16 && mipi_dbi_machine_little_endian()) { + if (bpw == 16) { for (i = 0; i < (chunk * 2); i += 2) { dst16[i] = *src16 >> 8; dst16[i + 1] = *src16++ & 0xFF; @@ -1088,7 +1100,7 @@ static int mipi_dbi_typec1_command_read(struct mipi_dbi *dbi, u8 *cmd, static int mipi_dbi_typec1_command(struct mipi_dbi *dbi, u8 *cmd, u8 *parameters, size_t num) { - unsigned int bpw = (*cmd == MIPI_DCS_WRITE_MEMORY_START) ? 16 : 8; + unsigned int bpw = 8; int ret; if (mipi_dbi_command_is_read(dbi, *cmd)) @@ -1100,6 +1112,9 @@ static int mipi_dbi_typec1_command(struct mipi_dbi *dbi, u8 *cmd, if (ret || !num) return ret; + if (*cmd == MIPI_DCS_WRITE_MEMORY_START) + bpw = dbi->write_memory_bpw; + return mipi_dbi_spi1_transfer(dbi, 1, parameters, num, bpw); } @@ -1193,8 +1208,8 @@ static int mipi_dbi_typec3_command(struct mipi_dbi *dbi, u8 *cmd, if (ret || !num) return ret; - if (*cmd == MIPI_DCS_WRITE_MEMORY_START && !dbi->swap_bytes) - bpw = 16; + if (*cmd == MIPI_DCS_WRITE_MEMORY_START) + bpw = dbi->write_memory_bpw; spi_bus_lock(spi->controller); gpiod_set_value_cansleep(dbi->dc, 1); @@ -1218,11 +1233,23 @@ static int mipi_dbi_typec3_command(struct mipi_dbi *dbi, u8 *cmd, * If @dc is set, a Type C Option 3 interface is assumed, if not * Type C Option 1. * - * If the SPI master driver doesn't support the necessary bits per word, - * the following transformation is used: + * If the command is %MIPI_DCS_WRITE_MEMORY_START and the pixel format is RGB565, endianness has + * to be taken into account. The MIPI DBI serial interface is big endian and framebuffers are + * assumed stored in memory as little endian (%DRM_FORMAT_BIG_ENDIAN is not supported). * - * - 9-bit: reorder buffer as 9x 8-bit words, padded with no-op command. - * - 16-bit: if big endian send as 8-bit, if little endian swap bytes + * This is how endianness is handled: + * + * Option 1 (D/C as a bit): The buffer is sent on the wire byte by byte so the 16-bit buffer is + * byteswapped before transfer. + * + * Option 3 (D/C as a gpio): If the SPI controller supports 16 bits per word the buffer can be + * sent as-is. If not the caller is responsible for swapping the bytes + * before calling mipi_dbi_command_buf() and the buffer is sent 8 bpw. + * + * This handling is optimised for %DRM_FORMAT_RGB565 framebuffers. + * + * If the interface is Option 1 and the SPI controller doesn't support 9 bits per word, + * the buffer is sent as 9x 8-bit words, padded with MIPI DCS no-op commands if necessary. * * Returns: * Zero on success, negative error code on failure. @@ -1253,12 +1280,15 @@ int mipi_dbi_spi_init(struct spi_device *spi, struct mipi_dbi *dbi, dbi->spi = spi; dbi->read_commands = mipi_dbi_dcs_read_commands; + dbi->write_memory_bpw = 16; if (dc) { dbi->command = mipi_dbi_typec3_command; dbi->dc = dc; - if (mipi_dbi_machine_little_endian() && !spi_is_bpw_supported(spi, 16)) + if (!spi_is_bpw_supported(spi, 16)) { + dbi->write_memory_bpw = 8; dbi->swap_bytes = true; + } } else { dbi->command = mipi_dbi_typec1_command; dbi->tx_buf9_len = SZ_16K; @@ -1475,4 +1505,5 @@ EXPORT_SYMBOL(mipi_dbi_debugfs_init); #endif +MODULE_DESCRIPTION("MIPI Display Bus Interface (DBI) LCD controller support"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/drm_mm.c b/drivers/gpu/drm/drm_mm.c index 8257f9d4f619..5ace481c1901 100644 --- a/drivers/gpu/drm/drm_mm.c +++ b/drivers/gpu/drm/drm_mm.c @@ -649,41 +649,6 @@ void drm_mm_remove_node(struct drm_mm_node *node) EXPORT_SYMBOL(drm_mm_remove_node); /** - * drm_mm_replace_node - move an allocation from @old to @new - * @old: drm_mm_node to remove from the allocator - * @new: drm_mm_node which should inherit @old's allocation - * - * This is useful for when drivers embed the drm_mm_node structure and hence - * can't move allocations by reassigning pointers. It's a combination of remove - * and insert with the guarantee that the allocation start will match. - */ -void drm_mm_replace_node(struct drm_mm_node *old, struct drm_mm_node *new) -{ - struct drm_mm *mm = old->mm; - - DRM_MM_BUG_ON(!drm_mm_node_allocated(old)); - - *new = *old; - - __set_bit(DRM_MM_NODE_ALLOCATED_BIT, &new->flags); - list_replace(&old->node_list, &new->node_list); - rb_replace_node_cached(&old->rb, &new->rb, &mm->interval_tree); - - if (drm_mm_hole_follows(old)) { - list_replace(&old->hole_stack, &new->hole_stack); - rb_replace_node_cached(&old->rb_hole_size, - &new->rb_hole_size, - &mm->holes_size); - rb_replace_node(&old->rb_hole_addr, - &new->rb_hole_addr, - &mm->holes_addr); - } - - clear_bit_unlock(DRM_MM_NODE_ALLOCATED_BIT, &old->flags); -} -EXPORT_SYMBOL(drm_mm_replace_node); - -/** * DOC: lru scan roster * * Very often GPUs need to have continuous allocations for a given object. When diff --git a/drivers/gpu/drm/drm_panel_orientation_quirks.c b/drivers/gpu/drm/drm_panel_orientation_quirks.c index aa93129c3397..ca5a2222ebc0 100644 --- a/drivers/gpu/drm/drm_panel_orientation_quirks.c +++ b/drivers/gpu/drm/drm_panel_orientation_quirks.c @@ -501,4 +501,5 @@ EXPORT_SYMBOL(drm_get_panel_orientation_quirk); #endif +MODULE_DESCRIPTION("Quirks for non-normal panel orientation"); MODULE_LICENSE("Dual MIT/GPL"); diff --git a/drivers/gpu/drm/drm_panic.c b/drivers/gpu/drm/drm_panic.c index 7ece67086cec..293d4dcbc80d 100644 --- a/drivers/gpu/drm/drm_panic.c +++ b/drivers/gpu/drm/drm_panic.c @@ -12,6 +12,7 @@ #include <linux/kmsg_dump.h> #include <linux/list.h> #include <linux/module.h> +#include <linux/printk.h> #include <linux/types.h> #include <drm/drm_drv.h> @@ -27,6 +28,12 @@ MODULE_AUTHOR("Jocelyn Falempe"); MODULE_DESCRIPTION("DRM panic handler"); MODULE_LICENSE("GPL"); +static char drm_panic_screen[16] = CONFIG_DRM_PANIC_SCREEN; +module_param_string(panic_screen, drm_panic_screen, sizeof(drm_panic_screen), 0644); +MODULE_PARM_DESC(panic_screen, + "Choose what will be displayed by drm_panic, 'user' or 'kmsg' [default=" + CONFIG_DRM_PANIC_SCREEN "]"); + /** * DOC: overview * @@ -194,40 +201,42 @@ static u32 convert_from_xrgb8888(u32 color, u32 format) /* * Blit & Fill */ +/* check if the pixel at coord x,y is 1 (foreground) or 0 (background) */ +static bool drm_panic_is_pixel_fg(const u8 *sbuf8, unsigned int spitch, int x, int y) +{ + return (sbuf8[(y * spitch) + x / 8] & (0x80 >> (x % 8))) != 0; +} + static void drm_panic_blit16(struct iosys_map *dmap, unsigned int dpitch, const u8 *sbuf8, unsigned int spitch, unsigned int height, unsigned int width, - u16 fg16, u16 bg16) + u16 fg16) { unsigned int y, x; - u16 val16; - for (y = 0; y < height; y++) { - for (x = 0; x < width; x++) { - val16 = (sbuf8[(y * spitch) + x / 8] & (0x80 >> (x % 8))) ? fg16 : bg16; - iosys_map_wr(dmap, y * dpitch + x * sizeof(u16), u16, val16); - } - } + for (y = 0; y < height; y++) + for (x = 0; x < width; x++) + if (drm_panic_is_pixel_fg(sbuf8, spitch, x, y)) + iosys_map_wr(dmap, y * dpitch + x * sizeof(u16), u16, fg16); } static void drm_panic_blit24(struct iosys_map *dmap, unsigned int dpitch, const u8 *sbuf8, unsigned int spitch, unsigned int height, unsigned int width, - u32 fg32, u32 bg32) + u32 fg32) { unsigned int y, x; - u32 val32; for (y = 0; y < height; y++) { for (x = 0; x < width; x++) { u32 off = y * dpitch + x * 3; - val32 = (sbuf8[(y * spitch) + x / 8] & (0x80 >> (x % 8))) ? fg32 : bg32; - - /* write blue-green-red to output in little endianness */ - iosys_map_wr(dmap, off, u8, (val32 & 0x000000FF) >> 0); - iosys_map_wr(dmap, off + 1, u8, (val32 & 0x0000FF00) >> 8); - iosys_map_wr(dmap, off + 2, u8, (val32 & 0x00FF0000) >> 16); + if (drm_panic_is_pixel_fg(sbuf8, spitch, x, y)) { + /* write blue-green-red to output in little endianness */ + iosys_map_wr(dmap, off, u8, (fg32 & 0x000000FF) >> 0); + iosys_map_wr(dmap, off + 1, u8, (fg32 & 0x0000FF00) >> 8); + iosys_map_wr(dmap, off + 2, u8, (fg32 & 0x00FF0000) >> 16); + } } } } @@ -235,55 +244,64 @@ static void drm_panic_blit24(struct iosys_map *dmap, unsigned int dpitch, static void drm_panic_blit32(struct iosys_map *dmap, unsigned int dpitch, const u8 *sbuf8, unsigned int spitch, unsigned int height, unsigned int width, - u32 fg32, u32 bg32) + u32 fg32) { unsigned int y, x; - u32 val32; - for (y = 0; y < height; y++) { - for (x = 0; x < width; x++) { - val32 = (sbuf8[(y * spitch) + x / 8] & (0x80 >> (x % 8))) ? fg32 : bg32; - iosys_map_wr(dmap, y * dpitch + x * sizeof(u32), u32, val32); - } - } + for (y = 0; y < height; y++) + for (x = 0; x < width; x++) + if (drm_panic_is_pixel_fg(sbuf8, spitch, x, y)) + iosys_map_wr(dmap, y * dpitch + x * sizeof(u32), u32, fg32); +} + +static void drm_panic_blit_pixel(struct drm_scanout_buffer *sb, struct drm_rect *clip, + const u8 *sbuf8, unsigned int spitch, u32 fg_color) +{ + unsigned int y, x; + + for (y = 0; y < drm_rect_height(clip); y++) + for (x = 0; x < drm_rect_width(clip); x++) + if (drm_panic_is_pixel_fg(sbuf8, spitch, x, y)) + sb->set_pixel(sb, clip->x1 + x, clip->y1 + y, fg_color); } /* * drm_panic_blit - convert a monochrome image to a linear framebuffer - * @dmap: destination iosys_map - * @dpitch: destination pitch in bytes + * @sb: destination scanout buffer + * @clip: destination rectangle * @sbuf8: source buffer, in monochrome format, 8 pixels per byte. * @spitch: source pitch in bytes - * @height: height of the image to copy, in pixels - * @width: width of the image to copy, in pixels * @fg_color: foreground color, in destination format - * @bg_color: background color, in destination format - * @pixel_width: pixel width in bytes. * * This can be used to draw a font character, which is a monochrome image, to a * framebuffer in other supported format. */ -static void drm_panic_blit(struct iosys_map *dmap, unsigned int dpitch, - const u8 *sbuf8, unsigned int spitch, - unsigned int height, unsigned int width, - u32 fg_color, u32 bg_color, - unsigned int pixel_width) +static void drm_panic_blit(struct drm_scanout_buffer *sb, struct drm_rect *clip, + const u8 *sbuf8, unsigned int spitch, u32 fg_color) { - switch (pixel_width) { + struct iosys_map map; + + if (sb->set_pixel) + return drm_panic_blit_pixel(sb, clip, sbuf8, spitch, fg_color); + + map = sb->map[0]; + iosys_map_incr(&map, clip->y1 * sb->pitch[0] + clip->x1 * sb->format->cpp[0]); + + switch (sb->format->cpp[0]) { case 2: - drm_panic_blit16(dmap, dpitch, sbuf8, spitch, - height, width, fg_color, bg_color); + drm_panic_blit16(&map, sb->pitch[0], sbuf8, spitch, + drm_rect_height(clip), drm_rect_width(clip), fg_color); break; case 3: - drm_panic_blit24(dmap, dpitch, sbuf8, spitch, - height, width, fg_color, bg_color); + drm_panic_blit24(&map, sb->pitch[0], sbuf8, spitch, + drm_rect_height(clip), drm_rect_width(clip), fg_color); break; case 4: - drm_panic_blit32(dmap, dpitch, sbuf8, spitch, - height, width, fg_color, bg_color); + drm_panic_blit32(&map, sb->pitch[0], sbuf8, spitch, + drm_rect_height(clip), drm_rect_width(clip), fg_color); break; default: - WARN_ONCE(1, "Can't blit with pixel width %d\n", pixel_width); + WARN_ONCE(1, "Can't blit with pixel width %d\n", sb->format->cpp[0]); } } @@ -327,33 +345,51 @@ static void drm_panic_fill32(struct iosys_map *dmap, unsigned int dpitch, iosys_map_wr(dmap, y * dpitch + x * sizeof(u32), u32, color); } +static void drm_panic_fill_pixel(struct drm_scanout_buffer *sb, + struct drm_rect *clip, + u32 color) +{ + unsigned int y, x; + + for (y = 0; y < drm_rect_height(clip); y++) + for (x = 0; x < drm_rect_width(clip); x++) + sb->set_pixel(sb, clip->x1 + x, clip->y1 + y, color); +} + /* * drm_panic_fill - Fill a rectangle with a color - * @dmap: destination iosys_map, pointing to the top left corner of the rectangle - * @dpitch: destination pitch in bytes - * @height: height of the rectangle, in pixels - * @width: width of the rectangle, in pixels - * @color: color to fill the rectangle. - * @pixel_width: pixel width in bytes + * @sb: destination scanout buffer + * @clip: destination rectangle + * @color: foreground color, in destination format * * Fill a rectangle with a color, in a linear framebuffer. */ -static void drm_panic_fill(struct iosys_map *dmap, unsigned int dpitch, - unsigned int height, unsigned int width, - u32 color, unsigned int pixel_width) +static void drm_panic_fill(struct drm_scanout_buffer *sb, struct drm_rect *clip, + u32 color) { - switch (pixel_width) { + struct iosys_map map; + + if (sb->set_pixel) + return drm_panic_fill_pixel(sb, clip, color); + + map = sb->map[0]; + iosys_map_incr(&map, clip->y1 * sb->pitch[0] + clip->x1 * sb->format->cpp[0]); + + switch (sb->format->cpp[0]) { case 2: - drm_panic_fill16(dmap, dpitch, height, width, color); + drm_panic_fill16(&map, sb->pitch[0], drm_rect_height(clip), + drm_rect_width(clip), color); break; case 3: - drm_panic_fill24(dmap, dpitch, height, width, color); + drm_panic_fill24(&map, sb->pitch[0], drm_rect_height(clip), + drm_rect_width(clip), color); break; case 4: - drm_panic_fill32(dmap, dpitch, height, width, color); + drm_panic_fill32(&map, sb->pitch[0], drm_rect_height(clip), + drm_rect_width(clip), color); break; default: - WARN_ONCE(1, "Can't fill with pixel width %d\n", pixel_width); + WARN_ONCE(1, "Can't fill with pixel width %d\n", sb->format->cpp[0]); } } @@ -381,53 +417,46 @@ static void draw_txt_rectangle(struct drm_scanout_buffer *sb, unsigned int msg_lines, bool centered, struct drm_rect *clip, - u32 fg_color, - u32 bg_color) + u32 color) { int i, j; const u8 *src; size_t font_pitch = DIV_ROUND_UP(font->width, 8); - struct iosys_map dst; - unsigned int px_width = sb->format->cpp[0]; - int left = 0; + struct drm_rect rec; msg_lines = min(msg_lines, drm_rect_height(clip) / font->height); for (i = 0; i < msg_lines; i++) { size_t line_len = min(msg[i].len, drm_rect_width(clip) / font->width); + rec.y1 = clip->y1 + i * font->height; + rec.y2 = rec.y1 + font->height; + rec.x1 = clip->x1; + if (centered) - left = (drm_rect_width(clip) - (line_len * font->width)) / 2; + rec.x1 += (drm_rect_width(clip) - (line_len * font->width)) / 2; - dst = sb->map[0]; - iosys_map_incr(&dst, (clip->y1 + i * font->height) * sb->pitch[0] + - (clip->x1 + left) * px_width); for (j = 0; j < line_len; j++) { src = get_char_bitmap(font, msg[i].txt[j], font_pitch); - drm_panic_blit(&dst, sb->pitch[0], src, font_pitch, - font->height, font->width, - fg_color, bg_color, px_width); - iosys_map_incr(&dst, font->width * px_width); + rec.x2 = rec.x1 + font->width; + drm_panic_blit(sb, &rec, src, font_pitch, color); + rec.x1 += font->width; } } } -/* - * Draw the panic message at the center of the screen - */ -static void draw_panic_static(struct drm_scanout_buffer *sb) +static void draw_panic_static_user(struct drm_scanout_buffer *sb) { size_t msg_lines = ARRAY_SIZE(panic_msg); size_t logo_lines = ARRAY_SIZE(logo); - u32 fg_color = CONFIG_DRM_PANIC_FOREGROUND_COLOR; - u32 bg_color = CONFIG_DRM_PANIC_BACKGROUND_COLOR; + u32 fg_color = convert_from_xrgb8888(CONFIG_DRM_PANIC_FOREGROUND_COLOR, sb->format->format); + u32 bg_color = convert_from_xrgb8888(CONFIG_DRM_PANIC_BACKGROUND_COLOR, sb->format->format); const struct font_desc *font = get_default_font(sb->width, sb->height, NULL, NULL); - struct drm_rect r_logo, r_msg; + struct drm_rect r_screen, r_logo, r_msg; if (!font) return; - fg_color = convert_from_xrgb8888(fg_color, sb->format->format); - bg_color = convert_from_xrgb8888(bg_color, sb->format->format); + r_screen = DRM_RECT_INIT(0, 0, sb->width, sb->height); r_logo = DRM_RECT_INIT(0, 0, get_max_line_len(logo, logo_lines) * font->width, @@ -440,14 +469,92 @@ static void draw_panic_static(struct drm_scanout_buffer *sb) drm_rect_translate(&r_msg, (sb->width - r_msg.x2) / 2, (sb->height - r_msg.y2) / 2); /* Fill with the background color, and draw text on top */ - drm_panic_fill(&sb->map[0], sb->pitch[0], sb->height, sb->width, - bg_color, sb->format->cpp[0]); + drm_panic_fill(sb, &r_screen, bg_color); if ((r_msg.x1 >= drm_rect_width(&r_logo) || r_msg.y1 >= drm_rect_height(&r_logo)) && drm_rect_width(&r_logo) < sb->width && drm_rect_height(&r_logo) < sb->height) { - draw_txt_rectangle(sb, font, logo, logo_lines, false, &r_logo, fg_color, bg_color); + draw_txt_rectangle(sb, font, logo, logo_lines, false, &r_logo, fg_color); + } + draw_txt_rectangle(sb, font, panic_msg, msg_lines, true, &r_msg, fg_color); +} + +/* + * Draw one line of kmsg, and handle wrapping if it won't fit in the screen width. + * Return the y-offset of the next line. + */ +static int draw_line_with_wrap(struct drm_scanout_buffer *sb, const struct font_desc *font, + struct drm_panic_line *line, int yoffset, u32 fg_color) +{ + int chars_per_row = sb->width / font->width; + struct drm_rect r_txt = DRM_RECT_INIT(0, yoffset, sb->width, sb->height); + struct drm_panic_line line_wrap; + + if (line->len > chars_per_row) { + line_wrap.len = line->len % chars_per_row; + line_wrap.txt = line->txt + line->len - line_wrap.len; + draw_txt_rectangle(sb, font, &line_wrap, 1, false, &r_txt, fg_color); + r_txt.y1 -= font->height; + if (r_txt.y1 < 0) + return r_txt.y1; + while (line_wrap.txt > line->txt) { + line_wrap.txt -= chars_per_row; + line_wrap.len = chars_per_row; + draw_txt_rectangle(sb, font, &line_wrap, 1, false, &r_txt, fg_color); + r_txt.y1 -= font->height; + if (r_txt.y1 < 0) + return r_txt.y1; + } + } else { + draw_txt_rectangle(sb, font, line, 1, false, &r_txt, fg_color); + r_txt.y1 -= font->height; + } + return r_txt.y1; +} + +/* + * Draw the kmsg buffer to the screen, starting from the youngest message at the bottom, + * and going up until reaching the top of the screen. + */ +static void draw_panic_static_kmsg(struct drm_scanout_buffer *sb) +{ + u32 fg_color = convert_from_xrgb8888(CONFIG_DRM_PANIC_FOREGROUND_COLOR, sb->format->format); + u32 bg_color = convert_from_xrgb8888(CONFIG_DRM_PANIC_BACKGROUND_COLOR, sb->format->format); + const struct font_desc *font = get_default_font(sb->width, sb->height, NULL, NULL); + struct drm_rect r_screen = DRM_RECT_INIT(0, 0, sb->width, sb->height); + struct kmsg_dump_iter iter; + char kmsg_buf[512]; + size_t kmsg_len; + struct drm_panic_line line; + int yoffset; + + if (!font) + return; + + yoffset = sb->height - font->height - (sb->height % font->height) / 2; + + /* Fill with the background color, and draw text on top */ + drm_panic_fill(sb, &r_screen, bg_color); + + kmsg_dump_rewind(&iter); + while (kmsg_dump_get_buffer(&iter, false, kmsg_buf, sizeof(kmsg_buf), &kmsg_len)) { + char *start; + char *end; + + /* ignore terminating NUL and newline */ + start = kmsg_buf + kmsg_len - 2; + end = kmsg_buf + kmsg_len - 1; + while (start > kmsg_buf && yoffset >= 0) { + while (start > kmsg_buf && *start != '\n') + start--; + /* don't count the newline character */ + line.txt = start + (start == kmsg_buf ? 0 : 1); + line.len = end - line.txt; + + yoffset = draw_line_with_wrap(sb, font, &line, yoffset, fg_color); + end = start; + start--; + } } - draw_txt_rectangle(sb, font, panic_msg, msg_lines, true, &r_msg, fg_color, bg_color); } /* @@ -464,6 +571,15 @@ static bool drm_panic_is_format_supported(const struct drm_format_info *format) return convert_from_xrgb8888(0xffffff, format->format) != 0; } +static void draw_panic_dispatch(struct drm_scanout_buffer *sb) +{ + if (!strcmp(drm_panic_screen, "kmsg")) { + draw_panic_static_kmsg(sb); + } else { + draw_panic_static_user(sb); + } +} + static void draw_panic_plane(struct drm_plane *plane) { struct drm_scanout_buffer sb; @@ -476,7 +592,7 @@ static void draw_panic_plane(struct drm_plane *plane) ret = plane->helper_private->get_scanout_buffer(plane, &sb); if (!ret && drm_panic_is_format_supported(sb.format)) { - draw_panic_static(&sb); + draw_panic_dispatch(&sb); if (plane->helper_private->panic_flush) plane->helper_private->panic_flush(plane); } diff --git a/drivers/gpu/drm/drm_print.c b/drivers/gpu/drm/drm_print.c index cf2efb44722c..cf24dfdeb6b2 100644 --- a/drivers/gpu/drm/drm_print.c +++ b/drivers/gpu/drm/drm_print.c @@ -176,6 +176,32 @@ void __drm_printfn_seq_file(struct drm_printer *p, struct va_format *vaf) } EXPORT_SYMBOL(__drm_printfn_seq_file); +static void __drm_dev_vprintk(const struct device *dev, const char *level, + const void *origin, const char *prefix, + struct va_format *vaf) +{ + const char *prefix_pad = prefix ? " " : ""; + + if (!prefix) + prefix = ""; + + if (dev) { + if (origin) + dev_printk(level, dev, "[" DRM_NAME ":%ps]%s%s %pV", + origin, prefix_pad, prefix, vaf); + else + dev_printk(level, dev, "[" DRM_NAME "]%s%s %pV", + prefix_pad, prefix, vaf); + } else { + if (origin) + printk("%s" "[" DRM_NAME ":%ps]%s%s %pV", + level, origin, prefix_pad, prefix, vaf); + else + printk("%s" "[" DRM_NAME "]%s%s %pV", + level, prefix_pad, prefix, vaf); + } +} + void __drm_printfn_info(struct drm_printer *p, struct va_format *vaf) { dev_info(p->arg, "[" DRM_NAME "] %pV", vaf); @@ -187,19 +213,11 @@ void __drm_printfn_dbg(struct drm_printer *p, struct va_format *vaf) const struct drm_device *drm = p->arg; const struct device *dev = drm ? drm->dev : NULL; enum drm_debug_category category = p->category; - const char *prefix = p->prefix ?: ""; - const char *prefix_pad = p->prefix ? " " : ""; if (!__drm_debug_enabled(category)) return; - /* Note: __builtin_return_address(0) is useless here. */ - if (dev) - dev_printk(KERN_DEBUG, dev, "[" DRM_NAME "]%s%s %pV", - prefix_pad, prefix, vaf); - else - printk(KERN_DEBUG "[" DRM_NAME "]%s%s %pV", - prefix_pad, prefix, vaf); + __drm_dev_vprintk(dev, KERN_DEBUG, p->origin, p->prefix, vaf); } EXPORT_SYMBOL(__drm_printfn_dbg); @@ -287,12 +305,7 @@ void drm_dev_printk(const struct device *dev, const char *level, vaf.fmt = format; vaf.va = &args; - if (dev) - dev_printk(level, dev, "[" DRM_NAME ":%ps] %pV", - __builtin_return_address(0), &vaf); - else - printk("%s" "[" DRM_NAME ":%ps] %pV", - level, __builtin_return_address(0), &vaf); + __drm_dev_vprintk(dev, level, __builtin_return_address(0), NULL, &vaf); va_end(args); } @@ -312,36 +325,12 @@ void __drm_dev_dbg(struct _ddebug *desc, const struct device *dev, vaf.fmt = format; vaf.va = &args; - if (dev) - dev_printk(KERN_DEBUG, dev, "[" DRM_NAME ":%ps] %pV", - __builtin_return_address(0), &vaf); - else - printk(KERN_DEBUG "[" DRM_NAME ":%ps] %pV", - __builtin_return_address(0), &vaf); + __drm_dev_vprintk(dev, KERN_DEBUG, __builtin_return_address(0), NULL, &vaf); va_end(args); } EXPORT_SYMBOL(__drm_dev_dbg); -void ___drm_dbg(struct _ddebug *desc, enum drm_debug_category category, const char *format, ...) -{ - struct va_format vaf; - va_list args; - - if (!__drm_debug_enabled(category)) - return; - - va_start(args, format); - vaf.fmt = format; - vaf.va = &args; - - printk(KERN_DEBUG "[" DRM_NAME ":%ps] %pV", - __builtin_return_address(0), &vaf); - - va_end(args); -} -EXPORT_SYMBOL(___drm_dbg); - void __drm_err(const char *format, ...) { struct va_format vaf; @@ -351,8 +340,7 @@ void __drm_err(const char *format, ...) vaf.fmt = format; vaf.va = &args; - printk(KERN_ERR "[" DRM_NAME ":%ps] *ERROR* %pV", - __builtin_return_address(0), &vaf); + __drm_dev_vprintk(NULL, KERN_ERR, __builtin_return_address(0), "*ERROR*", &vaf); va_end(args); } diff --git a/drivers/gpu/drm/drm_simple_kms_helper.c b/drivers/gpu/drm/drm_simple_kms_helper.c index 270523ae36d4..250819fbc5ce 100644 --- a/drivers/gpu/drm/drm_simple_kms_helper.c +++ b/drivers/gpu/drm/drm_simple_kms_helper.c @@ -453,4 +453,5 @@ int drm_simple_display_pipe_init(struct drm_device *dev, } EXPORT_SYMBOL(drm_simple_display_pipe_init); +MODULE_DESCRIPTION("Helpers for drivers for simple display hardware"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/gud/gud_drv.c b/drivers/gpu/drm/gud/gud_drv.c index 4f5aa2e5cb89..ac6bbf920c72 100644 --- a/drivers/gpu/drm/gud/gud_drv.c +++ b/drivers/gpu/drm/gud/gud_drv.c @@ -678,4 +678,5 @@ static struct usb_driver gud_usb_driver = { module_usb_driver(gud_usb_driver); MODULE_AUTHOR("Noralf Trønnes"); +MODULE_DESCRIPTION("GUD USB Display driver"); MODULE_LICENSE("Dual MIT/GPL"); diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c b/drivers/gpu/drm/i915/gt/intel_reset.c index 6161f7a3ff70..735cd23a43c6 100644 --- a/drivers/gpu/drm/i915/gt/intel_reset.c +++ b/drivers/gpu/drm/i915/gt/intel_reset.c @@ -1025,7 +1025,7 @@ void intel_gt_set_wedged(struct intel_gt *gt) if (GEM_SHOW_DEBUG()) { struct drm_printer p = drm_dbg_printer(>->i915->drm, - DRM_UT_DRIVER, __func__); + DRM_UT_DRIVER, NULL); struct intel_engine_cs *engine; enum intel_engine_id id; diff --git a/drivers/gpu/drm/i915/gt/selftest_context.c b/drivers/gpu/drm/i915/gt/selftest_context.c index 12eca750f7d0..5eb46700dc4e 100644 --- a/drivers/gpu/drm/i915/gt/selftest_context.c +++ b/drivers/gpu/drm/i915/gt/selftest_context.c @@ -286,7 +286,7 @@ out_engine: if (intel_engine_pm_is_awake(engine)) { struct drm_printer p = drm_dbg_printer(&engine->i915->drm, - DRM_UT_DRIVER, __func__); + DRM_UT_DRIVER, NULL); intel_engine_dump(engine, &p, "%s is still awake:%d after idle-barriers\n", diff --git a/drivers/gpu/drm/i915/gvt/kvmgt.c b/drivers/gpu/drm/i915/gvt/kvmgt.c index 4f74d867fe1a..38830818c120 100644 --- a/drivers/gpu/drm/i915/gvt/kvmgt.c +++ b/drivers/gpu/drm/i915/gvt/kvmgt.c @@ -1985,5 +1985,6 @@ static void __exit kvmgt_exit(void) module_init(kvmgt_init); module_exit(kvmgt_exit); +MODULE_DESCRIPTION("Intel mediated pass-through framework for KVM"); MODULE_LICENSE("GPL and additional rights"); MODULE_AUTHOR("Intel Corporation"); diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c index 6e1cca97a654..0a90fe448d14 100644 --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c @@ -1208,22 +1208,11 @@ mtk_hdmi_bridge_mode_valid(struct drm_bridge *bridge, const struct drm_display_mode *mode) { struct mtk_hdmi *hdmi = hdmi_ctx_from_bridge(bridge); - struct drm_bridge *next_bridge; dev_dbg(hdmi->dev, "xres=%d, yres=%d, refresh=%d, intl=%d clock=%d\n", mode->hdisplay, mode->vdisplay, drm_mode_vrefresh(mode), !!(mode->flags & DRM_MODE_FLAG_INTERLACE), mode->clock * 1000); - next_bridge = drm_bridge_get_next_bridge(&hdmi->bridge); - if (next_bridge) { - struct drm_display_mode adjusted_mode; - - drm_mode_init(&adjusted_mode, mode); - if (!drm_bridge_chain_mode_fixup(next_bridge, mode, - &adjusted_mode)) - return MODE_BAD; - } - if (hdmi->conf) { if (hdmi->conf->cea_modes_only && !drm_match_cea_mode(mode)) return MODE_BAD; diff --git a/drivers/gpu/drm/meson/meson_plane.c b/drivers/gpu/drm/meson/meson_plane.c index 815dfe30492b..b43ac61201f3 100644 --- a/drivers/gpu/drm/meson/meson_plane.c +++ b/drivers/gpu/drm/meson/meson_plane.c @@ -534,6 +534,7 @@ int meson_plane_create(struct meson_drm *priv) struct meson_plane *meson_plane; struct drm_plane *plane; const uint64_t *format_modifiers = format_modifiers_default; + int ret; meson_plane = devm_kzalloc(priv->drm->dev, sizeof(*meson_plane), GFP_KERNEL); @@ -548,12 +549,16 @@ int meson_plane_create(struct meson_drm *priv) else if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_G12A)) format_modifiers = format_modifiers_afbc_g12a; - drm_universal_plane_init(priv->drm, plane, 0xFF, - &meson_plane_funcs, - supported_drm_formats, - ARRAY_SIZE(supported_drm_formats), - format_modifiers, - DRM_PLANE_TYPE_PRIMARY, "meson_primary_plane"); + ret = drm_universal_plane_init(priv->drm, plane, 0xFF, + &meson_plane_funcs, + supported_drm_formats, + ARRAY_SIZE(supported_drm_formats), + format_modifiers, + DRM_PLANE_TYPE_PRIMARY, "meson_primary_plane"); + if (ret) { + devm_kfree(priv->drm->dev, meson_plane); + return ret; + } drm_plane_helper_add(plane, &meson_plane_helper_funcs); diff --git a/drivers/gpu/drm/panel/panel-abt-y030xx067a.c b/drivers/gpu/drm/panel/panel-abt-y030xx067a.c index 662c7bcbe6e5..4692c36fe217 100644 --- a/drivers/gpu/drm/panel/panel-abt-y030xx067a.c +++ b/drivers/gpu/drm/panel/panel-abt-y030xx067a.c @@ -381,4 +381,5 @@ module_spi_driver(y030xx067a_driver); MODULE_AUTHOR("Paul Cercueil <paul@crapouillou.net>"); MODULE_AUTHOR("Christophe Branchereau <cbranchereau@gmail.com>"); +MODULE_DESCRIPTION("Asia Better Technology Ltd. Y030XX067A IPS LCD panel driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/panel/panel-auo-a030jtn01.c b/drivers/gpu/drm/panel/panel-auo-a030jtn01.c index 6c86ebf2cad7..77604d6a4e72 100644 --- a/drivers/gpu/drm/panel/panel-auo-a030jtn01.c +++ b/drivers/gpu/drm/panel/panel-auo-a030jtn01.c @@ -305,4 +305,5 @@ module_spi_driver(a030jtn01_driver); MODULE_AUTHOR("Paul Cercueil <paul@crapouillou.net>"); MODULE_AUTHOR("Christophe Branchereau <cbranchereau@gmail.com>"); +MODULE_DESCRIPTION("AU Optronics A030JTN01.0 TFT LCD panel driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/panel/panel-boe-himax8279d.c b/drivers/gpu/drm/panel/panel-boe-himax8279d.c index e225840b0d67..df746baae301 100644 --- a/drivers/gpu/drm/panel/panel-boe-himax8279d.c +++ b/drivers/gpu/drm/panel/panel-boe-himax8279d.c @@ -47,9 +47,6 @@ struct panel_info { struct gpio_desc *enable_gpio; struct gpio_desc *pp33_gpio; struct gpio_desc *pp18_gpio; - - bool prepared; - bool enabled; }; static inline struct panel_info *to_panel_info(struct drm_panel *panel) @@ -86,17 +83,12 @@ static int boe_panel_disable(struct drm_panel *panel) struct panel_info *pinfo = to_panel_info(panel); int err; - if (!pinfo->enabled) - return 0; - err = mipi_dsi_dcs_set_display_off(pinfo->link); if (err < 0) { dev_err(panel->dev, "failed to set display off: %d\n", err); return err; } - pinfo->enabled = false; - return 0; } @@ -105,9 +97,6 @@ static int boe_panel_unprepare(struct drm_panel *panel) struct panel_info *pinfo = to_panel_info(panel); int err; - if (!pinfo->prepared) - return 0; - err = mipi_dsi_dcs_set_display_off(pinfo->link); if (err < 0) dev_err(panel->dev, "failed to set display off: %d\n", err); @@ -121,8 +110,6 @@ static int boe_panel_unprepare(struct drm_panel *panel) disable_gpios(pinfo); - pinfo->prepared = false; - return 0; } @@ -131,9 +118,6 @@ static int boe_panel_prepare(struct drm_panel *panel) struct panel_info *pinfo = to_panel_info(panel); int err; - if (pinfo->prepared) - return 0; - gpiod_set_value(pinfo->pp18_gpio, 1); /* T1: 5ms - 6ms */ usleep_range(5000, 6000); @@ -180,8 +164,6 @@ static int boe_panel_prepare(struct drm_panel *panel) /* T7: 20ms - 21ms */ usleep_range(20000, 21000); - pinfo->prepared = true; - return 0; poweroff: @@ -194,9 +176,6 @@ static int boe_panel_enable(struct drm_panel *panel) struct panel_info *pinfo = to_panel_info(panel); int ret; - if (pinfo->enabled) - return 0; - usleep_range(120000, 121000); ret = mipi_dsi_dcs_set_display_on(pinfo->link); @@ -205,8 +184,6 @@ static int boe_panel_enable(struct drm_panel *panel) return ret; } - pinfo->enabled = true; - return 0; } @@ -917,14 +894,6 @@ static void panel_remove(struct mipi_dsi_device *dsi) struct panel_info *pinfo = mipi_dsi_get_drvdata(dsi); int err; - err = boe_panel_disable(&pinfo->base); - if (err < 0) - dev_err(&dsi->dev, "failed to disable panel: %d\n", err); - - err = boe_panel_unprepare(&pinfo->base); - if (err < 0) - dev_err(&dsi->dev, "failed to unprepare panel: %d\n", err); - err = mipi_dsi_detach(dsi); if (err < 0) dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", err); @@ -932,14 +901,6 @@ static void panel_remove(struct mipi_dsi_device *dsi) drm_panel_remove(&pinfo->base); } -static void panel_shutdown(struct mipi_dsi_device *dsi) -{ - struct panel_info *pinfo = mipi_dsi_get_drvdata(dsi); - - boe_panel_disable(&pinfo->base); - boe_panel_unprepare(&pinfo->base); -} - static struct mipi_dsi_driver panel_driver = { .driver = { .name = "panel-boe-himax8279d", @@ -947,7 +908,6 @@ static struct mipi_dsi_driver panel_driver = { }, .probe = panel_probe, .remove = panel_remove, - .shutdown = panel_shutdown, }; module_mipi_dsi_driver(panel_driver); diff --git a/drivers/gpu/drm/panel/panel-himax-hx83102.c b/drivers/gpu/drm/panel/panel-himax-hx83102.c index 6009a3fe1b8f..6e4b7e4644ce 100644 --- a/drivers/gpu/drm/panel/panel-himax-hx83102.c +++ b/drivers/gpu/drm/panel/panel-himax-hx83102.c @@ -286,7 +286,7 @@ static int boe_nv110wum_init(struct hx83102 *ctx) mipi_dsi_dcs_write_seq_multi(&dsi_ctx, HX83102_SETBANK, 0x00); hx83102_enable_extended_cmds(&dsi_ctx, false); - mipi_dsi_msleep(dsi_ctx, 50); + mipi_dsi_msleep(&dsi_ctx, 50); return dsi_ctx.accum_err; }; @@ -391,7 +391,7 @@ static int ivo_t109nw41_init(struct hx83102 *ctx) mipi_dsi_dcs_write_seq_multi(&dsi_ctx, HX83102_SETBANK, 0x00); hx83102_enable_extended_cmds(&dsi_ctx, false); - mipi_dsi_msleep(dsi_ctx, 60); + mipi_dsi_msleep(&dsi_ctx, 60); return dsi_ctx.accum_err; }; @@ -538,7 +538,7 @@ static int hx83102_prepare(struct drm_panel *panel) dsi_ctx.accum_err = ctx->desc->init(ctx); mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx); - mipi_dsi_msleep(dsi_ctx, 120); + mipi_dsi_msleep(&dsi_ctx, 120); mipi_dsi_dcs_set_display_on_multi(&dsi_ctx); if (dsi_ctx.accum_err) goto poweroff; diff --git a/drivers/gpu/drm/panel/panel-innolux-ej030na.c b/drivers/gpu/drm/panel/panel-innolux-ej030na.c index 8fdbda59be48..f85b7a4cbb42 100644 --- a/drivers/gpu/drm/panel/panel-innolux-ej030na.c +++ b/drivers/gpu/drm/panel/panel-innolux-ej030na.c @@ -306,4 +306,5 @@ module_spi_driver(ej030na_driver); MODULE_AUTHOR("Paul Cercueil <paul@crapouillou.net>"); MODULE_AUTHOR("Christophe Branchereau <cbranchereau@gmail.com>"); +MODULE_DESCRIPTION("Innolux/Chimei EJ030NA TFT LCD panel driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/panel/panel-jdi-lt070me05000.c b/drivers/gpu/drm/panel/panel-jdi-lt070me05000.c index f9a69f347068..b1ce186de261 100644 --- a/drivers/gpu/drm/panel/panel-jdi-lt070me05000.c +++ b/drivers/gpu/drm/panel/panel-jdi-lt070me05000.c @@ -37,9 +37,6 @@ struct jdi_panel { struct gpio_desc *dcdc_en_gpio; struct backlight_device *backlight; - bool prepared; - bool enabled; - const struct drm_display_mode *mode; }; @@ -176,13 +173,8 @@ static int jdi_panel_disable(struct drm_panel *panel) { struct jdi_panel *jdi = to_jdi_panel(panel); - if (!jdi->enabled) - return 0; - backlight_disable(jdi->backlight); - jdi->enabled = false; - return 0; } @@ -192,9 +184,6 @@ static int jdi_panel_unprepare(struct drm_panel *panel) struct device *dev = &jdi->dsi->dev; int ret; - if (!jdi->prepared) - return 0; - jdi_panel_off(jdi); ret = regulator_bulk_disable(ARRAY_SIZE(jdi->supplies), jdi->supplies); @@ -207,8 +196,6 @@ static int jdi_panel_unprepare(struct drm_panel *panel) gpiod_set_value(jdi->dcdc_en_gpio, 0); - jdi->prepared = false; - return 0; } @@ -218,9 +205,6 @@ static int jdi_panel_prepare(struct drm_panel *panel) struct device *dev = &jdi->dsi->dev; int ret; - if (jdi->prepared) - return 0; - ret = regulator_bulk_enable(ARRAY_SIZE(jdi->supplies), jdi->supplies); if (ret < 0) { dev_err(dev, "regulator enable failed, %d\n", ret); @@ -250,8 +234,6 @@ static int jdi_panel_prepare(struct drm_panel *panel) goto poweroff; } - jdi->prepared = true; - return 0; poweroff: @@ -272,13 +254,8 @@ static int jdi_panel_enable(struct drm_panel *panel) { struct jdi_panel *jdi = to_jdi_panel(panel); - if (jdi->enabled) - return 0; - backlight_enable(jdi->backlight); - jdi->enabled = true; - return 0; } @@ -475,10 +452,6 @@ static void jdi_panel_remove(struct mipi_dsi_device *dsi) struct jdi_panel *jdi = mipi_dsi_get_drvdata(dsi); int ret; - ret = jdi_panel_disable(&jdi->base); - if (ret < 0) - dev_err(&dsi->dev, "failed to disable panel: %d\n", ret); - ret = mipi_dsi_detach(dsi); if (ret < 0) dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", @@ -487,13 +460,6 @@ static void jdi_panel_remove(struct mipi_dsi_device *dsi) jdi_panel_del(jdi); } -static void jdi_panel_shutdown(struct mipi_dsi_device *dsi) -{ - struct jdi_panel *jdi = mipi_dsi_get_drvdata(dsi); - - jdi_panel_disable(&jdi->base); -} - static struct mipi_dsi_driver jdi_panel_driver = { .driver = { .name = "panel-jdi-lt070me05000", @@ -501,7 +467,6 @@ static struct mipi_dsi_driver jdi_panel_driver = { }, .probe = jdi_panel_probe, .remove = jdi_panel_remove, - .shutdown = jdi_panel_shutdown, }; module_mipi_dsi_driver(jdi_panel_driver); diff --git a/drivers/gpu/drm/panel/panel-khadas-ts050.c b/drivers/gpu/drm/panel/panel-khadas-ts050.c index c54be0cc3f08..14932cb3defc 100644 --- a/drivers/gpu/drm/panel/panel-khadas-ts050.c +++ b/drivers/gpu/drm/panel/panel-khadas-ts050.c @@ -26,9 +26,6 @@ struct khadas_ts050_panel { struct gpio_desc *reset_gpio; struct gpio_desc *enable_gpio; struct khadas_ts050_panel_data *panel_data; - - bool prepared; - bool enabled; }; struct khadas_ts050_panel_cmd { @@ -642,9 +639,6 @@ static int khadas_ts050_panel_prepare(struct drm_panel *panel) unsigned int i; int err; - if (khadas_ts050->prepared) - return 0; - gpiod_set_value_cansleep(khadas_ts050->enable_gpio, 0); err = regulator_enable(khadas_ts050->supply); @@ -708,8 +702,6 @@ static int khadas_ts050_panel_prepare(struct drm_panel *panel) usleep_range(10000, 11000); - khadas_ts050->prepared = true; - return 0; poweroff: @@ -726,11 +718,6 @@ static int khadas_ts050_panel_unprepare(struct drm_panel *panel) struct khadas_ts050_panel *khadas_ts050 = to_khadas_ts050_panel(panel); int err; - if (!khadas_ts050->prepared) - return 0; - - khadas_ts050->prepared = false; - err = mipi_dsi_dcs_enter_sleep_mode(khadas_ts050->link); if (err < 0) dev_err(panel->dev, "failed to enter sleep mode: %d\n", err); @@ -747,31 +734,17 @@ static int khadas_ts050_panel_unprepare(struct drm_panel *panel) return 0; } -static int khadas_ts050_panel_enable(struct drm_panel *panel) -{ - struct khadas_ts050_panel *khadas_ts050 = to_khadas_ts050_panel(panel); - - khadas_ts050->enabled = true; - - return 0; -} - static int khadas_ts050_panel_disable(struct drm_panel *panel) { struct khadas_ts050_panel *khadas_ts050 = to_khadas_ts050_panel(panel); int err; - if (!khadas_ts050->enabled) - return 0; - err = mipi_dsi_dcs_set_display_off(khadas_ts050->link); if (err < 0) dev_err(panel->dev, "failed to set display off: %d\n", err); usleep_range(10000, 11000); - khadas_ts050->enabled = false; - return 0; } @@ -815,7 +788,6 @@ static int khadas_ts050_panel_get_modes(struct drm_panel *panel, static const struct drm_panel_funcs khadas_ts050_panel_funcs = { .prepare = khadas_ts050_panel_prepare, .unprepare = khadas_ts050_panel_unprepare, - .enable = khadas_ts050_panel_enable, .disable = khadas_ts050_panel_disable, .get_modes = khadas_ts050_panel_get_modes, }; @@ -908,16 +880,6 @@ static void khadas_ts050_panel_remove(struct mipi_dsi_device *dsi) dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", err); drm_panel_remove(&khadas_ts050->base); - drm_panel_disable(&khadas_ts050->base); - drm_panel_unprepare(&khadas_ts050->base); -} - -static void khadas_ts050_panel_shutdown(struct mipi_dsi_device *dsi) -{ - struct khadas_ts050_panel *khadas_ts050 = mipi_dsi_get_drvdata(dsi); - - drm_panel_disable(&khadas_ts050->base); - drm_panel_unprepare(&khadas_ts050->base); } static struct mipi_dsi_driver khadas_ts050_panel_driver = { @@ -927,7 +889,6 @@ static struct mipi_dsi_driver khadas_ts050_panel_driver = { }, .probe = khadas_ts050_panel_probe, .remove = khadas_ts050_panel_remove, - .shutdown = khadas_ts050_panel_shutdown, }; module_mipi_dsi_driver(khadas_ts050_panel_driver); diff --git a/drivers/gpu/drm/panel/panel-newvision-nv3052c.c b/drivers/gpu/drm/panel/panel-newvision-nv3052c.c index e986d9823528..c5d3ead38555 100644 --- a/drivers/gpu/drm/panel/panel-newvision-nv3052c.c +++ b/drivers/gpu/drm/panel/panel-newvision-nv3052c.c @@ -944,4 +944,5 @@ module_spi_driver(nv3052c_driver); MODULE_AUTHOR("Paul Cercueil <paul@crapouillou.net>"); MODULE_AUTHOR("Christophe Branchereau <cbranchereau@gmail.com>"); MODULE_AUTHOR("Ryan Walklin <ryan@testtoast.com"); +MODULE_DESCRIPTION("NewVision NV3052C IPS LCD panel driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/panel/panel-novatek-nt39016.c b/drivers/gpu/drm/panel/panel-novatek-nt39016.c index 059260262b5a..9fa7654e2b67 100644 --- a/drivers/gpu/drm/panel/panel-novatek-nt39016.c +++ b/drivers/gpu/drm/panel/panel-novatek-nt39016.c @@ -356,4 +356,5 @@ module_spi_driver(nt39016_driver); MODULE_AUTHOR("Maarten ter Huurne <maarten@treewalker.org>"); MODULE_AUTHOR("Paul Cercueil <paul@crapouillou.net>"); +MODULE_DESCRIPTION("Novatek NT39016 TFT LCD panel driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c b/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c index 4819ada69482..94ae8c8270b8 100644 --- a/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c +++ b/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c @@ -64,9 +64,6 @@ struct lcd_olinuxino { struct i2c_client *client; struct mutex mutex; - bool prepared; - bool enabled; - struct regulator *supply; struct gpio_desc *enable_gpio; @@ -78,30 +75,13 @@ static inline struct lcd_olinuxino *to_lcd_olinuxino(struct drm_panel *panel) return container_of(panel, struct lcd_olinuxino, panel); } -static int lcd_olinuxino_disable(struct drm_panel *panel) -{ - struct lcd_olinuxino *lcd = to_lcd_olinuxino(panel); - - if (!lcd->enabled) - return 0; - - lcd->enabled = false; - - return 0; -} - static int lcd_olinuxino_unprepare(struct drm_panel *panel) { struct lcd_olinuxino *lcd = to_lcd_olinuxino(panel); - if (!lcd->prepared) - return 0; - gpiod_set_value_cansleep(lcd->enable_gpio, 0); regulator_disable(lcd->supply); - lcd->prepared = false; - return 0; } @@ -110,27 +90,11 @@ static int lcd_olinuxino_prepare(struct drm_panel *panel) struct lcd_olinuxino *lcd = to_lcd_olinuxino(panel); int ret; - if (lcd->prepared) - return 0; - ret = regulator_enable(lcd->supply); if (ret < 0) return ret; gpiod_set_value_cansleep(lcd->enable_gpio, 1); - lcd->prepared = true; - - return 0; -} - -static int lcd_olinuxino_enable(struct drm_panel *panel) -{ - struct lcd_olinuxino *lcd = to_lcd_olinuxino(panel); - - if (lcd->enabled) - return 0; - - lcd->enabled = true; return 0; } @@ -195,10 +159,8 @@ static int lcd_olinuxino_get_modes(struct drm_panel *panel, } static const struct drm_panel_funcs lcd_olinuxino_funcs = { - .disable = lcd_olinuxino_disable, .unprepare = lcd_olinuxino_unprepare, .prepare = lcd_olinuxino_prepare, - .enable = lcd_olinuxino_enable, .get_modes = lcd_olinuxino_get_modes, }; @@ -264,9 +226,6 @@ static int lcd_olinuxino_probe(struct i2c_client *client) lcd->eeprom.num_modes = 4; } - lcd->enabled = false; - lcd->prepared = false; - lcd->supply = devm_regulator_get(dev, "power"); if (IS_ERR(lcd->supply)) return PTR_ERR(lcd->supply); @@ -292,9 +251,6 @@ static void lcd_olinuxino_remove(struct i2c_client *client) struct lcd_olinuxino *panel = i2c_get_clientdata(client); drm_panel_remove(&panel->panel); - - drm_panel_disable(&panel->panel); - drm_panel_unprepare(&panel->panel); } static const struct of_device_id lcd_olinuxino_of_ids[] = { diff --git a/drivers/gpu/drm/panel/panel-orisetech-ota5601a.c b/drivers/gpu/drm/panel/panel-orisetech-ota5601a.c index c415dacf1816..fc87f61d4400 100644 --- a/drivers/gpu/drm/panel/panel-orisetech-ota5601a.c +++ b/drivers/gpu/drm/panel/panel-orisetech-ota5601a.c @@ -360,4 +360,5 @@ static struct spi_driver ota5601a_driver = { module_spi_driver(ota5601a_driver); MODULE_AUTHOR("Christophe Branchereau <cbranchereau@gmail.com>"); +MODULE_DESCRIPTION("Orisetech OTA5601A TFT LCD panel driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/panel/panel-osd-osd101t2587-53ts.c b/drivers/gpu/drm/panel/panel-osd-osd101t2587-53ts.c index 493e0504f6f7..dbea84f51514 100644 --- a/drivers/gpu/drm/panel/panel-osd-osd101t2587-53ts.c +++ b/drivers/gpu/drm/panel/panel-osd-osd101t2587-53ts.c @@ -21,9 +21,6 @@ struct osd101t2587_panel { struct regulator *supply; - bool prepared; - bool enabled; - const struct drm_display_mode *default_mode; }; @@ -37,13 +34,8 @@ static int osd101t2587_panel_disable(struct drm_panel *panel) struct osd101t2587_panel *osd101t2587 = ti_osd_panel(panel); int ret; - if (!osd101t2587->enabled) - return 0; - ret = mipi_dsi_shutdown_peripheral(osd101t2587->dsi); - osd101t2587->enabled = false; - return ret; } @@ -51,11 +43,7 @@ static int osd101t2587_panel_unprepare(struct drm_panel *panel) { struct osd101t2587_panel *osd101t2587 = ti_osd_panel(panel); - if (!osd101t2587->prepared) - return 0; - regulator_disable(osd101t2587->supply); - osd101t2587->prepared = false; return 0; } @@ -63,16 +51,8 @@ static int osd101t2587_panel_unprepare(struct drm_panel *panel) static int osd101t2587_panel_prepare(struct drm_panel *panel) { struct osd101t2587_panel *osd101t2587 = ti_osd_panel(panel); - int ret; - if (osd101t2587->prepared) - return 0; - - ret = regulator_enable(osd101t2587->supply); - if (!ret) - osd101t2587->prepared = true; - - return ret; + return regulator_enable(osd101t2587->supply); } static int osd101t2587_panel_enable(struct drm_panel *panel) @@ -80,15 +60,10 @@ static int osd101t2587_panel_enable(struct drm_panel *panel) struct osd101t2587_panel *osd101t2587 = ti_osd_panel(panel); int ret; - if (osd101t2587->enabled) - return 0; - ret = mipi_dsi_turn_on_peripheral(osd101t2587->dsi); if (ret) return ret; - osd101t2587->enabled = true; - return ret; } @@ -211,11 +186,6 @@ static void osd101t2587_panel_remove(struct mipi_dsi_device *dsi) struct osd101t2587_panel *osd101t2587 = mipi_dsi_get_drvdata(dsi); int ret; - ret = drm_panel_disable(&osd101t2587->base); - if (ret < 0) - dev_warn(&dsi->dev, "failed to disable panel: %d\n", ret); - - drm_panel_unprepare(&osd101t2587->base); drm_panel_remove(&osd101t2587->base); ret = mipi_dsi_detach(dsi); @@ -223,14 +193,6 @@ static void osd101t2587_panel_remove(struct mipi_dsi_device *dsi) dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", ret); } -static void osd101t2587_panel_shutdown(struct mipi_dsi_device *dsi) -{ - struct osd101t2587_panel *osd101t2587 = mipi_dsi_get_drvdata(dsi); - - drm_panel_disable(&osd101t2587->base); - drm_panel_unprepare(&osd101t2587->base); -} - static struct mipi_dsi_driver osd101t2587_panel_driver = { .driver = { .name = "panel-osd-osd101t2587-53ts", @@ -238,7 +200,6 @@ static struct mipi_dsi_driver osd101t2587_panel_driver = { }, .probe = osd101t2587_panel_probe, .remove = osd101t2587_panel_remove, - .shutdown = osd101t2587_panel_shutdown, }; module_mipi_dsi_driver(osd101t2587_panel_driver); diff --git a/drivers/gpu/drm/panel/panel-panasonic-vvx10f034n00.c b/drivers/gpu/drm/panel/panel-panasonic-vvx10f034n00.c index 8ba6d8287938..d1c5c9bc3c56 100644 --- a/drivers/gpu/drm/panel/panel-panasonic-vvx10f034n00.c +++ b/drivers/gpu/drm/panel/panel-panasonic-vvx10f034n00.c @@ -32,9 +32,6 @@ struct wuxga_nt_panel { struct regulator *supply; - bool prepared; - bool enabled; - ktime_t earliest_wake; const struct drm_display_mode *mode; @@ -53,28 +50,16 @@ static int wuxga_nt_panel_on(struct wuxga_nt_panel *wuxga_nt) static int wuxga_nt_panel_disable(struct drm_panel *panel) { struct wuxga_nt_panel *wuxga_nt = to_wuxga_nt_panel(panel); - int mipi_ret, bl_ret = 0; - - if (!wuxga_nt->enabled) - return 0; - - mipi_ret = mipi_dsi_shutdown_peripheral(wuxga_nt->dsi); - wuxga_nt->enabled = false; - - return mipi_ret ? mipi_ret : bl_ret; + return mipi_dsi_shutdown_peripheral(wuxga_nt->dsi); } static int wuxga_nt_panel_unprepare(struct drm_panel *panel) { struct wuxga_nt_panel *wuxga_nt = to_wuxga_nt_panel(panel); - if (!wuxga_nt->prepared) - return 0; - regulator_disable(wuxga_nt->supply); wuxga_nt->earliest_wake = ktime_add_ms(ktime_get_real(), MIN_POFF_MS); - wuxga_nt->prepared = false; return 0; } @@ -85,9 +70,6 @@ static int wuxga_nt_panel_prepare(struct drm_panel *panel) int ret; s64 enablewait; - if (wuxga_nt->prepared) - return 0; - /* * If the user re-enabled the panel before the required off-time then * we need to wait the remaining period before re-enabling regulator @@ -117,8 +99,6 @@ static int wuxga_nt_panel_prepare(struct drm_panel *panel) goto poweroff; } - wuxga_nt->prepared = true; - return 0; poweroff: @@ -127,18 +107,6 @@ poweroff: return ret; } -static int wuxga_nt_panel_enable(struct drm_panel *panel) -{ - struct wuxga_nt_panel *wuxga_nt = to_wuxga_nt_panel(panel); - - if (wuxga_nt->enabled) - return 0; - - wuxga_nt->enabled = true; - - return 0; -} - static const struct drm_display_mode default_mode = { .clock = 164402, .hdisplay = 1920, @@ -178,7 +146,6 @@ static const struct drm_panel_funcs wuxga_nt_panel_funcs = { .disable = wuxga_nt_panel_disable, .unprepare = wuxga_nt_panel_unprepare, .prepare = wuxga_nt_panel_prepare, - .enable = wuxga_nt_panel_enable, .get_modes = wuxga_nt_panel_get_modes, }; @@ -255,10 +222,6 @@ static void wuxga_nt_panel_remove(struct mipi_dsi_device *dsi) struct wuxga_nt_panel *wuxga_nt = mipi_dsi_get_drvdata(dsi); int ret; - ret = drm_panel_disable(&wuxga_nt->base); - if (ret < 0) - dev_err(&dsi->dev, "failed to disable panel: %d\n", ret); - ret = mipi_dsi_detach(dsi); if (ret < 0) dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", ret); @@ -266,13 +229,6 @@ static void wuxga_nt_panel_remove(struct mipi_dsi_device *dsi) wuxga_nt_panel_del(wuxga_nt); } -static void wuxga_nt_panel_shutdown(struct mipi_dsi_device *dsi) -{ - struct wuxga_nt_panel *wuxga_nt = mipi_dsi_get_drvdata(dsi); - - drm_panel_disable(&wuxga_nt->base); -} - static struct mipi_dsi_driver wuxga_nt_panel_driver = { .driver = { .name = "panel-panasonic-vvx10f034n00", @@ -280,7 +236,6 @@ static struct mipi_dsi_driver wuxga_nt_panel_driver = { }, .probe = wuxga_nt_panel_probe, .remove = wuxga_nt_panel_remove, - .shutdown = wuxga_nt_panel_shutdown, }; module_mipi_dsi_driver(wuxga_nt_panel_driver); diff --git a/drivers/gpu/drm/panel/panel-raydium-rm67191.c b/drivers/gpu/drm/panel/panel-raydium-rm67191.c index dbb1ed4efbed..b2029e035635 100644 --- a/drivers/gpu/drm/panel/panel-raydium-rm67191.c +++ b/drivers/gpu/drm/panel/panel-raydium-rm67191.c @@ -205,7 +205,6 @@ struct rad_panel { unsigned int num_supplies; bool prepared; - bool enabled; }; static const struct drm_display_mode default_mode = { @@ -267,9 +266,6 @@ static int rad_panel_prepare(struct drm_panel *panel) struct rad_panel *rad = to_rad_panel(panel); int ret; - if (rad->prepared) - return 0; - ret = regulator_bulk_enable(rad->num_supplies, rad->supplies); if (ret) return ret; @@ -291,9 +287,6 @@ static int rad_panel_unprepare(struct drm_panel *panel) struct rad_panel *rad = to_rad_panel(panel); int ret; - if (!rad->prepared) - return 0; - /* * Right after asserting the reset, we need to release it, so that the * touch driver can have an active connection with the touch controller @@ -322,9 +315,6 @@ static int rad_panel_enable(struct drm_panel *panel) int color_format = color_format_from_dsi_format(dsi->format); int ret; - if (rad->enabled) - return 0; - dsi->mode_flags |= MIPI_DSI_MODE_LPM; ret = rad_panel_push_cmd_list(dsi); @@ -389,8 +379,6 @@ static int rad_panel_enable(struct drm_panel *panel) backlight_enable(rad->backlight); - rad->enabled = true; - return 0; fail: @@ -406,9 +394,6 @@ static int rad_panel_disable(struct drm_panel *panel) struct device *dev = &dsi->dev; int ret; - if (!rad->enabled) - return 0; - dsi->mode_flags |= MIPI_DSI_MODE_LPM; backlight_disable(rad->backlight); @@ -429,8 +414,6 @@ static int rad_panel_disable(struct drm_panel *panel) return ret; } - rad->enabled = false; - return 0; } @@ -629,14 +612,6 @@ static void rad_panel_remove(struct mipi_dsi_device *dsi) drm_panel_remove(&rad->panel); } -static void rad_panel_shutdown(struct mipi_dsi_device *dsi) -{ - struct rad_panel *rad = mipi_dsi_get_drvdata(dsi); - - rad_panel_disable(&rad->panel); - rad_panel_unprepare(&rad->panel); -} - static const struct of_device_id rad_of_match[] = { { .compatible = "raydium,rm67191", }, { /* sentinel */ } @@ -650,7 +625,6 @@ static struct mipi_dsi_driver rad_panel_driver = { }, .probe = rad_panel_probe, .remove = rad_panel_remove, - .shutdown = rad_panel_shutdown, }; module_mipi_dsi_driver(rad_panel_driver); diff --git a/drivers/gpu/drm/panel/panel-seiko-43wvf1g.c b/drivers/gpu/drm/panel/panel-seiko-43wvf1g.c index 658c7c040570..8a3fe531c641 100644 --- a/drivers/gpu/drm/panel/panel-seiko-43wvf1g.c +++ b/drivers/gpu/drm/panel/panel-seiko-43wvf1g.c @@ -44,8 +44,6 @@ struct seiko_panel_desc { struct seiko_panel { struct drm_panel base; - bool prepared; - bool enabled; const struct seiko_panel_desc *desc; struct regulator *dvdd; struct regulator *avdd; @@ -122,25 +120,10 @@ static int seiko_panel_get_fixed_modes(struct seiko_panel *panel, return num; } -static int seiko_panel_disable(struct drm_panel *panel) -{ - struct seiko_panel *p = to_seiko_panel(panel); - - if (!p->enabled) - return 0; - - p->enabled = false; - - return 0; -} - static int seiko_panel_unprepare(struct drm_panel *panel) { struct seiko_panel *p = to_seiko_panel(panel); - if (!p->prepared) - return 0; - gpiod_set_value_cansleep(p->enable_gpio, 0); regulator_disable(p->avdd); @@ -150,8 +133,6 @@ static int seiko_panel_unprepare(struct drm_panel *panel) regulator_disable(p->dvdd); - p->prepared = false; - return 0; } @@ -160,9 +141,6 @@ static int seiko_panel_prepare(struct drm_panel *panel) struct seiko_panel *p = to_seiko_panel(panel); int err; - if (p->prepared) - return 0; - err = regulator_enable(p->dvdd); if (err < 0) { dev_err(panel->dev, "failed to enable dvdd: %d\n", err); @@ -180,8 +158,6 @@ static int seiko_panel_prepare(struct drm_panel *panel) gpiod_set_value_cansleep(p->enable_gpio, 1); - p->prepared = true; - return 0; disable_dvdd: @@ -189,18 +165,6 @@ disable_dvdd: return err; } -static int seiko_panel_enable(struct drm_panel *panel) -{ - struct seiko_panel *p = to_seiko_panel(panel); - - if (p->enabled) - return 0; - - p->enabled = true; - - return 0; -} - static int seiko_panel_get_modes(struct drm_panel *panel, struct drm_connector *connector) { @@ -228,10 +192,8 @@ static int seiko_panel_get_timings(struct drm_panel *panel, } static const struct drm_panel_funcs seiko_panel_funcs = { - .disable = seiko_panel_disable, .unprepare = seiko_panel_unprepare, .prepare = seiko_panel_prepare, - .enable = seiko_panel_enable, .get_modes = seiko_panel_get_modes, .get_timings = seiko_panel_get_timings, }; @@ -246,8 +208,6 @@ static int seiko_panel_probe(struct device *dev, if (!panel) return -ENOMEM; - panel->enabled = false; - panel->prepared = false; panel->desc = desc; panel->dvdd = devm_regulator_get(dev, "dvdd"); @@ -283,14 +243,6 @@ static void seiko_panel_remove(struct platform_device *pdev) struct seiko_panel *panel = platform_get_drvdata(pdev); drm_panel_remove(&panel->base); - drm_panel_disable(&panel->base); -} - -static void seiko_panel_shutdown(struct platform_device *pdev) -{ - struct seiko_panel *panel = platform_get_drvdata(pdev); - - drm_panel_disable(&panel->base); } static const struct display_timing seiko_43wvf1g_timing = { @@ -346,7 +298,6 @@ static struct platform_driver seiko_panel_platform_driver = { }, .probe = seiko_panel_platform_probe, .remove_new = seiko_panel_remove, - .shutdown = seiko_panel_shutdown, }; module_platform_driver(seiko_panel_platform_driver); diff --git a/drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c b/drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c index 14851408a5e1..edc9425bb143 100644 --- a/drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c +++ b/drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c @@ -24,9 +24,6 @@ struct sharp_panel { struct regulator *supply; - bool prepared; - bool enabled; - const struct drm_display_mode *mode; }; @@ -85,26 +82,11 @@ static __maybe_unused int sharp_panel_read(struct sharp_panel *sharp, return err; } -static int sharp_panel_disable(struct drm_panel *panel) -{ - struct sharp_panel *sharp = to_sharp_panel(panel); - - if (!sharp->enabled) - return 0; - - sharp->enabled = false; - - return 0; -} - static int sharp_panel_unprepare(struct drm_panel *panel) { struct sharp_panel *sharp = to_sharp_panel(panel); int err; - if (!sharp->prepared) - return 0; - sharp_wait_frames(sharp, 4); err = mipi_dsi_dcs_set_display_off(sharp->link1); @@ -119,8 +101,6 @@ static int sharp_panel_unprepare(struct drm_panel *panel) regulator_disable(sharp->supply); - sharp->prepared = false; - return 0; } @@ -164,9 +144,6 @@ static int sharp_panel_prepare(struct drm_panel *panel) u8 format = MIPI_DCS_PIXEL_FMT_24BIT; int err; - if (sharp->prepared) - return 0; - err = regulator_enable(sharp->supply); if (err < 0) return err; @@ -235,8 +212,6 @@ static int sharp_panel_prepare(struct drm_panel *panel) goto poweroff; } - sharp->prepared = true; - /* wait for 6 frames before continuing */ sharp_wait_frames(sharp, 6); @@ -247,18 +222,6 @@ poweroff: return err; } -static int sharp_panel_enable(struct drm_panel *panel) -{ - struct sharp_panel *sharp = to_sharp_panel(panel); - - if (sharp->enabled) - return 0; - - sharp->enabled = true; - - return 0; -} - static const struct drm_display_mode default_mode = { .clock = 278000, .hdisplay = 2560, @@ -295,10 +258,8 @@ static int sharp_panel_get_modes(struct drm_panel *panel, } static const struct drm_panel_funcs sharp_panel_funcs = { - .disable = sharp_panel_disable, .unprepare = sharp_panel_unprepare, .prepare = sharp_panel_prepare, - .enable = sharp_panel_enable, .get_modes = sharp_panel_get_modes, }; @@ -396,32 +357,13 @@ static void sharp_panel_remove(struct mipi_dsi_device *dsi) struct sharp_panel *sharp = mipi_dsi_get_drvdata(dsi); int err; - /* only detach from host for the DSI-LINK2 interface */ - if (!sharp) { - mipi_dsi_detach(dsi); - return; - } - - err = drm_panel_disable(&sharp->base); - if (err < 0) - dev_err(&dsi->dev, "failed to disable panel: %d\n", err); - err = mipi_dsi_detach(dsi); if (err < 0) dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", err); - sharp_panel_del(sharp); -} - -static void sharp_panel_shutdown(struct mipi_dsi_device *dsi) -{ - struct sharp_panel *sharp = mipi_dsi_get_drvdata(dsi); - - /* nothing to do for DSI-LINK2 */ + /* only detach from host for the DSI-LINK2 interface */ if (!sharp) - return; - - drm_panel_disable(&sharp->base); + sharp_panel_del(sharp); } static struct mipi_dsi_driver sharp_panel_driver = { @@ -431,7 +373,6 @@ static struct mipi_dsi_driver sharp_panel_driver = { }, .probe = sharp_panel_probe, .remove = sharp_panel_remove, - .shutdown = sharp_panel_shutdown, }; module_mipi_dsi_driver(sharp_panel_driver); diff --git a/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c b/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c index 855e64444daa..729cbb0d8403 100644 --- a/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c +++ b/drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c @@ -26,8 +26,6 @@ struct sharp_nt_panel { struct regulator *supply; struct gpio_desc *reset_gpio; - - bool prepared; }; static inline struct sharp_nt_panel *to_sharp_nt_panel(struct drm_panel *panel) @@ -99,9 +97,6 @@ static int sharp_nt_panel_unprepare(struct drm_panel *panel) struct sharp_nt_panel *sharp_nt = to_sharp_nt_panel(panel); int ret; - if (!sharp_nt->prepared) - return 0; - ret = sharp_nt_panel_off(sharp_nt); if (ret < 0) { dev_err(panel->dev, "failed to set panel off: %d\n", ret); @@ -112,8 +107,6 @@ static int sharp_nt_panel_unprepare(struct drm_panel *panel) if (sharp_nt->reset_gpio) gpiod_set_value(sharp_nt->reset_gpio, 0); - sharp_nt->prepared = false; - return 0; } @@ -122,9 +115,6 @@ static int sharp_nt_panel_prepare(struct drm_panel *panel) struct sharp_nt_panel *sharp_nt = to_sharp_nt_panel(panel); int ret; - if (sharp_nt->prepared) - return 0; - ret = regulator_enable(sharp_nt->supply); if (ret < 0) return ret; @@ -152,8 +142,6 @@ static int sharp_nt_panel_prepare(struct drm_panel *panel) goto poweroff; } - sharp_nt->prepared = true; - return 0; poweroff: @@ -279,10 +267,6 @@ static void sharp_nt_panel_remove(struct mipi_dsi_device *dsi) struct sharp_nt_panel *sharp_nt = mipi_dsi_get_drvdata(dsi); int ret; - ret = drm_panel_disable(&sharp_nt->base); - if (ret < 0) - dev_err(&dsi->dev, "failed to disable panel: %d\n", ret); - ret = mipi_dsi_detach(dsi); if (ret < 0) dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", ret); @@ -290,13 +274,6 @@ static void sharp_nt_panel_remove(struct mipi_dsi_device *dsi) sharp_nt_panel_del(sharp_nt); } -static void sharp_nt_panel_shutdown(struct mipi_dsi_device *dsi) -{ - struct sharp_nt_panel *sharp_nt = mipi_dsi_get_drvdata(dsi); - - drm_panel_disable(&sharp_nt->base); -} - static const struct of_device_id sharp_nt_of_match[] = { { .compatible = "sharp,ls043t1le01-qhd", }, { } @@ -310,7 +287,6 @@ static struct mipi_dsi_driver sharp_nt_panel_driver = { }, .probe = sharp_nt_panel_probe, .remove = sharp_nt_panel_remove, - .shutdown = sharp_nt_panel_shutdown, }; module_mipi_dsi_driver(sharp_nt_panel_driver); diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c index 9b9e078ec8aa..8345ed891f5a 100644 --- a/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c @@ -3640,6 +3640,32 @@ static const struct panel_desc powertip_ph800480t013_idf02 = { .connector_type = DRM_MODE_CONNECTOR_DPI, }; +static const struct drm_display_mode primeview_pm070wl4_mode = { + .clock = 32000, + .hdisplay = 800, + .hsync_start = 800 + 42, + .hsync_end = 800 + 42 + 128, + .htotal = 800 + 42 + 128 + 86, + .vdisplay = 480, + .vsync_start = 480 + 10, + .vsync_end = 480 + 10 + 2, + .vtotal = 480 + 10 + 2 + 33, + .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, +}; + +static const struct panel_desc primeview_pm070wl4 = { + .modes = &primeview_pm070wl4_mode, + .num_modes = 1, + .bpc = 6, + .size = { + .width = 152, + .height = 91, + }, + .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE, + .bus_format = MEDIA_BUS_FMT_RGB666_1X18, + .connector_type = DRM_MODE_CONNECTOR_DPI, +}; + static const struct drm_display_mode qd43003c0_40_mode = { .clock = 9000, .hdisplay = 480, @@ -4808,6 +4834,9 @@ static const struct of_device_id platform_of_match[] = { .compatible = "powertip,ph800480t013-idf02", .data = &powertip_ph800480t013_idf02, }, { + .compatible = "primeview,pm070wl4", + .data = &primeview_pm070wl4, + }, { .compatible = "qiaodian,qd43003c0-40", .data = &qd43003c0_40, }, { diff --git a/drivers/gpu/drm/panel/panel-tdo-tl070wsh30.c b/drivers/gpu/drm/panel/panel-tdo-tl070wsh30.c index d8487bc6d611..227f97f9b136 100644 --- a/drivers/gpu/drm/panel/panel-tdo-tl070wsh30.c +++ b/drivers/gpu/drm/panel/panel-tdo-tl070wsh30.c @@ -24,8 +24,6 @@ struct tdo_tl070wsh30_panel { struct regulator *supply; struct gpio_desc *reset_gpio; - - bool prepared; }; static inline @@ -39,9 +37,6 @@ static int tdo_tl070wsh30_panel_prepare(struct drm_panel *panel) struct tdo_tl070wsh30_panel *tdo_tl070wsh30 = to_tdo_tl070wsh30_panel(panel); int err; - if (tdo_tl070wsh30->prepared) - return 0; - err = regulator_enable(tdo_tl070wsh30->supply); if (err < 0) return err; @@ -74,8 +69,6 @@ static int tdo_tl070wsh30_panel_prepare(struct drm_panel *panel) msleep(20); - tdo_tl070wsh30->prepared = true; - return 0; } @@ -84,9 +77,6 @@ static int tdo_tl070wsh30_panel_unprepare(struct drm_panel *panel) struct tdo_tl070wsh30_panel *tdo_tl070wsh30 = to_tdo_tl070wsh30_panel(panel); int err; - if (!tdo_tl070wsh30->prepared) - return 0; - err = mipi_dsi_dcs_set_display_off(tdo_tl070wsh30->link); if (err < 0) dev_err(panel->dev, "failed to set display off: %d\n", err); @@ -103,8 +93,6 @@ static int tdo_tl070wsh30_panel_unprepare(struct drm_panel *panel) regulator_disable(tdo_tl070wsh30->supply); - tdo_tl070wsh30->prepared = false; - return 0; } @@ -220,16 +208,6 @@ static void tdo_tl070wsh30_panel_remove(struct mipi_dsi_device *dsi) dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", err); drm_panel_remove(&tdo_tl070wsh30->base); - drm_panel_disable(&tdo_tl070wsh30->base); - drm_panel_unprepare(&tdo_tl070wsh30->base); -} - -static void tdo_tl070wsh30_panel_shutdown(struct mipi_dsi_device *dsi) -{ - struct tdo_tl070wsh30_panel *tdo_tl070wsh30 = mipi_dsi_get_drvdata(dsi); - - drm_panel_disable(&tdo_tl070wsh30->base); - drm_panel_unprepare(&tdo_tl070wsh30->base); } static struct mipi_dsi_driver tdo_tl070wsh30_panel_driver = { @@ -239,7 +217,6 @@ static struct mipi_dsi_driver tdo_tl070wsh30_panel_driver = { }, .probe = tdo_tl070wsh30_panel_probe, .remove = tdo_tl070wsh30_panel_remove, - .shutdown = tdo_tl070wsh30_panel_shutdown, }; module_mipi_dsi_driver(tdo_tl070wsh30_panel_driver); diff --git a/drivers/gpu/drm/sun4i/sun4i_backend.c b/drivers/gpu/drm/sun4i/sun4i_backend.c index 335fd0edb904..e89eb96d3131 100644 --- a/drivers/gpu/drm/sun4i/sun4i_backend.c +++ b/drivers/gpu/drm/sun4i/sun4i_backend.c @@ -69,7 +69,9 @@ static void sun4i_backend_disable_color_correction(struct sunxi_engine *engine) SUN4I_BACKEND_OCCTL_ENABLE, 0); } -static void sun4i_backend_commit(struct sunxi_engine *engine) +static void sun4i_backend_commit(struct sunxi_engine *engine, + struct drm_crtc *crtc, + struct drm_atomic_state *state) { DRM_DEBUG_DRIVER("Committing changes\n"); diff --git a/drivers/gpu/drm/sun4i/sun4i_crtc.c b/drivers/gpu/drm/sun4i/sun4i_crtc.c index c06d7cd45388..18e74047b0f5 100644 --- a/drivers/gpu/drm/sun4i/sun4i_crtc.c +++ b/drivers/gpu/drm/sun4i/sun4i_crtc.c @@ -91,7 +91,7 @@ static void sun4i_crtc_atomic_flush(struct drm_crtc *crtc, DRM_DEBUG_DRIVER("Committing plane changes\n"); - sunxi_engine_commit(scrtc->engine); + sunxi_engine_commit(scrtc->engine, crtc, state); if (event) { crtc->state->event = NULL; diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c index 01382860aaee..bd0fe2c6624e 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -16,6 +16,7 @@ #include <linux/platform_device.h> #include <linux/reset.h> +#include <drm/drm_atomic.h> #include <drm/drm_atomic_helper.h> #include <drm/drm_crtc.h> #include <drm/drm_framebuffer.h> @@ -249,10 +250,73 @@ int sun8i_mixer_drm_format_to_hw(u32 format, u32 *hw_format) return -EINVAL; } -static void sun8i_mixer_commit(struct sunxi_engine *engine) +static void sun8i_layer_enable(struct sun8i_layer *layer, bool enable) { + u32 ch_base = sun8i_channel_base(layer->mixer, layer->channel); + u32 val, reg, mask; + + if (layer->type == SUN8I_LAYER_TYPE_UI) { + val = enable ? SUN8I_MIXER_CHAN_UI_LAYER_ATTR_EN : 0; + mask = SUN8I_MIXER_CHAN_UI_LAYER_ATTR_EN; + reg = SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, layer->overlay); + } else { + val = enable ? SUN8I_MIXER_CHAN_VI_LAYER_ATTR_EN : 0; + mask = SUN8I_MIXER_CHAN_VI_LAYER_ATTR_EN; + reg = SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, layer->overlay); + } + + regmap_update_bits(layer->mixer->engine.regs, reg, mask, val); +} + +static void sun8i_mixer_commit(struct sunxi_engine *engine, + struct drm_crtc *crtc, + struct drm_atomic_state *state) +{ + struct sun8i_mixer *mixer = engine_to_sun8i_mixer(engine); + u32 bld_base = sun8i_blender_base(mixer); + struct drm_plane_state *plane_state; + struct drm_plane *plane; + u32 route = 0, pipe_en = 0; + DRM_DEBUG_DRIVER("Committing changes\n"); + drm_for_each_plane(plane, state->dev) { + struct sun8i_layer *layer = plane_to_sun8i_layer(plane); + bool enable; + int zpos; + + if (!(plane->possible_crtcs & drm_crtc_mask(crtc)) || layer->mixer != mixer) + continue; + + plane_state = drm_atomic_get_new_plane_state(state, plane); + if (!plane_state) + plane_state = plane->state; + + enable = plane_state->crtc && plane_state->visible; + zpos = plane_state->normalized_zpos; + + DRM_DEBUG_DRIVER(" plane %d: chan=%d ovl=%d en=%d zpos=%d\n", + plane->base.id, layer->channel, layer->overlay, + enable, zpos); + + /* + * We always update the layer enable bit, because it can clear + * spontaneously for unknown reasons. + */ + sun8i_layer_enable(layer, enable); + + if (!enable) + continue; + + /* Route layer to pipe based on zpos */ + route |= layer->channel << SUN8I_MIXER_BLEND_ROUTE_PIPE_SHIFT(zpos); + pipe_en |= SUN8I_MIXER_BLEND_PIPE_CTL_EN(zpos); + } + + regmap_write(mixer->engine.regs, SUN8I_MIXER_BLEND_ROUTE(bld_base), route); + regmap_write(mixer->engine.regs, SUN8I_MIXER_BLEND_PIPE_CTL(bld_base), + pipe_en | SUN8I_MIXER_BLEND_PIPE_CTL_FC_EN(0)); + regmap_write(engine->regs, SUN8I_MIXER_GLOBAL_DBUFF, SUN8I_MIXER_GLOBAL_DBUFF_ENABLE); } @@ -271,7 +335,7 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, return ERR_PTR(-ENOMEM); for (i = 0; i < mixer->cfg->vi_num; i++) { - struct sun8i_vi_layer *layer; + struct sun8i_layer *layer; layer = sun8i_vi_layer_init_one(drm, mixer, i); if (IS_ERR(layer)) { @@ -284,7 +348,7 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, } for (i = 0; i < mixer->cfg->ui_num; i++) { - struct sun8i_ui_layer *layer; + struct sun8i_layer *layer; layer = sun8i_ui_layer_init_one(drm, mixer, i); if (IS_ERR(layer)) { diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/sun8i_mixer.h index 85c94884fb9a..d7898c9c9cc0 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.h +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h @@ -9,6 +9,7 @@ #include <linux/clk.h> #include <linux/regmap.h> #include <linux/reset.h> +#include <drm/drm_plane.h> #include "sunxi_engine.h" @@ -185,6 +186,25 @@ struct sun8i_mixer { struct clk *mod_clk; }; +enum { + SUN8I_LAYER_TYPE_UI, + SUN8I_LAYER_TYPE_VI, +}; + +struct sun8i_layer { + struct drm_plane plane; + struct sun8i_mixer *mixer; + int type; + int channel; + int overlay; +}; + +static inline struct sun8i_layer * +plane_to_sun8i_layer(struct drm_plane *plane) +{ + return container_of(plane, struct sun8i_layer, plane); +} + static inline struct sun8i_mixer * engine_to_sun8i_mixer(struct sunxi_engine *engine) { diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c index ca75ca0835a6..b90e5edef4e8 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -24,55 +24,6 @@ #include "sun8i_ui_layer.h" #include "sun8i_ui_scaler.h" -static void sun8i_ui_layer_enable(struct sun8i_mixer *mixer, int channel, - int overlay, bool enable, unsigned int zpos, - unsigned int old_zpos) -{ - u32 val, bld_base, ch_base; - - bld_base = sun8i_blender_base(mixer); - ch_base = sun8i_channel_base(mixer, channel); - - DRM_DEBUG_DRIVER("%sabling channel %d overlay %d\n", - enable ? "En" : "Dis", channel, overlay); - - if (enable) - val = SUN8I_MIXER_CHAN_UI_LAYER_ATTR_EN; - else - val = 0; - - regmap_update_bits(mixer->engine.regs, - SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, overlay), - SUN8I_MIXER_CHAN_UI_LAYER_ATTR_EN, val); - - if (!enable || zpos != old_zpos) { - regmap_update_bits(mixer->engine.regs, - SUN8I_MIXER_BLEND_PIPE_CTL(bld_base), - SUN8I_MIXER_BLEND_PIPE_CTL_EN(old_zpos), - 0); - - regmap_update_bits(mixer->engine.regs, - SUN8I_MIXER_BLEND_ROUTE(bld_base), - SUN8I_MIXER_BLEND_ROUTE_PIPE_MSK(old_zpos), - 0); - } - - if (enable) { - val = SUN8I_MIXER_BLEND_PIPE_CTL_EN(zpos); - - regmap_update_bits(mixer->engine.regs, - SUN8I_MIXER_BLEND_PIPE_CTL(bld_base), - val, val); - - val = channel << SUN8I_MIXER_BLEND_ROUTE_PIPE_SHIFT(zpos); - - regmap_update_bits(mixer->engine.regs, - SUN8I_MIXER_BLEND_ROUTE(bld_base), - SUN8I_MIXER_BLEND_ROUTE_PIPE_MSK(zpos), - val); - } -} - static void sun8i_ui_layer_update_alpha(struct sun8i_mixer *mixer, int channel, int overlay, struct drm_plane *plane) { @@ -232,7 +183,7 @@ static int sun8i_ui_layer_atomic_check(struct drm_plane *plane, { struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state, plane); - struct sun8i_ui_layer *layer = plane_to_sun8i_ui_layer(plane); + struct sun8i_layer *layer = plane_to_sun8i_layer(plane); struct drm_crtc *crtc = new_plane_state->crtc; struct drm_crtc_state *crtc_state; int min_scale, max_scale; @@ -259,36 +210,18 @@ static int sun8i_ui_layer_atomic_check(struct drm_plane *plane, true, true); } -static void sun8i_ui_layer_atomic_disable(struct drm_plane *plane, - struct drm_atomic_state *state) -{ - struct drm_plane_state *old_state = drm_atomic_get_old_plane_state(state, - plane); - struct sun8i_ui_layer *layer = plane_to_sun8i_ui_layer(plane); - unsigned int old_zpos = old_state->normalized_zpos; - struct sun8i_mixer *mixer = layer->mixer; - - sun8i_ui_layer_enable(mixer, layer->channel, layer->overlay, false, 0, - old_zpos); -} static void sun8i_ui_layer_atomic_update(struct drm_plane *plane, struct drm_atomic_state *state) { - struct drm_plane_state *old_state = drm_atomic_get_old_plane_state(state, - plane); struct drm_plane_state *new_state = drm_atomic_get_new_plane_state(state, plane); - struct sun8i_ui_layer *layer = plane_to_sun8i_ui_layer(plane); + struct sun8i_layer *layer = plane_to_sun8i_layer(plane); unsigned int zpos = new_state->normalized_zpos; - unsigned int old_zpos = old_state->normalized_zpos; struct sun8i_mixer *mixer = layer->mixer; - if (!new_state->visible) { - sun8i_ui_layer_enable(mixer, layer->channel, - layer->overlay, false, 0, old_zpos); + if (!new_state->crtc || !new_state->visible) return; - } sun8i_ui_layer_update_coord(mixer, layer->channel, layer->overlay, plane, zpos); @@ -298,13 +231,10 @@ static void sun8i_ui_layer_atomic_update(struct drm_plane *plane, layer->overlay, plane); sun8i_ui_layer_update_buffer(mixer, layer->channel, layer->overlay, plane); - sun8i_ui_layer_enable(mixer, layer->channel, layer->overlay, - true, zpos, old_zpos); } static const struct drm_plane_helper_funcs sun8i_ui_layer_helper_funcs = { .atomic_check = sun8i_ui_layer_atomic_check, - .atomic_disable = sun8i_ui_layer_atomic_disable, .atomic_update = sun8i_ui_layer_atomic_update, }; @@ -345,13 +275,13 @@ static const uint64_t sun8i_layer_modifiers[] = { DRM_FORMAT_MOD_INVALID }; -struct sun8i_ui_layer *sun8i_ui_layer_init_one(struct drm_device *drm, - struct sun8i_mixer *mixer, - int index) +struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, + struct sun8i_mixer *mixer, + int index) { enum drm_plane_type type = DRM_PLANE_TYPE_OVERLAY; int channel = mixer->cfg->vi_num + index; - struct sun8i_ui_layer *layer; + struct sun8i_layer *layer; unsigned int plane_cnt; int ret; @@ -390,6 +320,7 @@ struct sun8i_ui_layer *sun8i_ui_layer_init_one(struct drm_device *drm, drm_plane_helper_add(&layer->plane, &sun8i_ui_layer_helper_funcs); layer->mixer = mixer; + layer->type = SUN8I_LAYER_TYPE_UI; layer->channel = channel; layer->overlay = 0; diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.h b/drivers/gpu/drm/sun4i/sun8i_ui_layer.h index e3e32ee1178d..83892f6ff211 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.h +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.h @@ -47,21 +47,9 @@ #define SUN8I_MIXER_CHAN_UI_LAYER_ATTR_ALPHA_MODE_COMBINED ((2) << 1) struct sun8i_mixer; +struct sun8i_layer; -struct sun8i_ui_layer { - struct drm_plane plane; - struct sun8i_mixer *mixer; - int channel; - int overlay; -}; - -static inline struct sun8i_ui_layer * -plane_to_sun8i_ui_layer(struct drm_plane *plane) -{ - return container_of(plane, struct sun8i_ui_layer, plane); -} - -struct sun8i_ui_layer *sun8i_ui_layer_init_one(struct drm_device *drm, - struct sun8i_mixer *mixer, - int index); +struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, + struct sun8i_mixer *mixer, + int index); #endif /* _SUN8I_UI_LAYER_H_ */ diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index f9c0a56d3a14..9c09d9c08496 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -18,55 +18,6 @@ #include "sun8i_vi_layer.h" #include "sun8i_vi_scaler.h" -static void sun8i_vi_layer_enable(struct sun8i_mixer *mixer, int channel, - int overlay, bool enable, unsigned int zpos, - unsigned int old_zpos) -{ - u32 val, bld_base, ch_base; - - bld_base = sun8i_blender_base(mixer); - ch_base = sun8i_channel_base(mixer, channel); - - DRM_DEBUG_DRIVER("%sabling VI channel %d overlay %d\n", - enable ? "En" : "Dis", channel, overlay); - - if (enable) - val = SUN8I_MIXER_CHAN_VI_LAYER_ATTR_EN; - else - val = 0; - - regmap_update_bits(mixer->engine.regs, - SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, overlay), - SUN8I_MIXER_CHAN_VI_LAYER_ATTR_EN, val); - - if (!enable || zpos != old_zpos) { - regmap_update_bits(mixer->engine.regs, - SUN8I_MIXER_BLEND_PIPE_CTL(bld_base), - SUN8I_MIXER_BLEND_PIPE_CTL_EN(old_zpos), - 0); - - regmap_update_bits(mixer->engine.regs, - SUN8I_MIXER_BLEND_ROUTE(bld_base), - SUN8I_MIXER_BLEND_ROUTE_PIPE_MSK(old_zpos), - 0); - } - - if (enable) { - val = SUN8I_MIXER_BLEND_PIPE_CTL_EN(zpos); - - regmap_update_bits(mixer->engine.regs, - SUN8I_MIXER_BLEND_PIPE_CTL(bld_base), - val, val); - - val = channel << SUN8I_MIXER_BLEND_ROUTE_PIPE_SHIFT(zpos); - - regmap_update_bits(mixer->engine.regs, - SUN8I_MIXER_BLEND_ROUTE(bld_base), - SUN8I_MIXER_BLEND_ROUTE_PIPE_MSK(zpos), - val); - } -} - static void sun8i_vi_layer_update_alpha(struct sun8i_mixer *mixer, int channel, int overlay, struct drm_plane *plane) { @@ -366,7 +317,7 @@ static int sun8i_vi_layer_atomic_check(struct drm_plane *plane, { struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state, plane); - struct sun8i_vi_layer *layer = plane_to_sun8i_vi_layer(plane); + struct sun8i_layer *layer = plane_to_sun8i_layer(plane); struct drm_crtc *crtc = new_plane_state->crtc; struct drm_crtc_state *crtc_state; int min_scale, max_scale; @@ -393,36 +344,17 @@ static int sun8i_vi_layer_atomic_check(struct drm_plane *plane, true, true); } -static void sun8i_vi_layer_atomic_disable(struct drm_plane *plane, - struct drm_atomic_state *state) -{ - struct drm_plane_state *old_state = drm_atomic_get_old_plane_state(state, - plane); - struct sun8i_vi_layer *layer = plane_to_sun8i_vi_layer(plane); - unsigned int old_zpos = old_state->normalized_zpos; - struct sun8i_mixer *mixer = layer->mixer; - - sun8i_vi_layer_enable(mixer, layer->channel, layer->overlay, false, 0, - old_zpos); -} - static void sun8i_vi_layer_atomic_update(struct drm_plane *plane, struct drm_atomic_state *state) { - struct drm_plane_state *old_state = drm_atomic_get_old_plane_state(state, - plane); struct drm_plane_state *new_state = drm_atomic_get_new_plane_state(state, plane); - struct sun8i_vi_layer *layer = plane_to_sun8i_vi_layer(plane); + struct sun8i_layer *layer = plane_to_sun8i_layer(plane); unsigned int zpos = new_state->normalized_zpos; - unsigned int old_zpos = old_state->normalized_zpos; struct sun8i_mixer *mixer = layer->mixer; - if (!new_state->visible) { - sun8i_vi_layer_enable(mixer, layer->channel, - layer->overlay, false, 0, old_zpos); + if (!new_state->crtc || !new_state->visible) return; - } sun8i_vi_layer_update_coord(mixer, layer->channel, layer->overlay, plane, zpos); @@ -432,13 +364,10 @@ static void sun8i_vi_layer_atomic_update(struct drm_plane *plane, layer->overlay, plane); sun8i_vi_layer_update_buffer(mixer, layer->channel, layer->overlay, plane); - sun8i_vi_layer_enable(mixer, layer->channel, layer->overlay, - true, zpos, old_zpos); } static const struct drm_plane_helper_funcs sun8i_vi_layer_helper_funcs = { .atomic_check = sun8i_vi_layer_atomic_check, - .atomic_disable = sun8i_vi_layer_atomic_disable, .atomic_update = sun8i_vi_layer_atomic_update, }; @@ -539,14 +468,14 @@ static const uint64_t sun8i_layer_modifiers[] = { DRM_FORMAT_MOD_INVALID }; -struct sun8i_vi_layer *sun8i_vi_layer_init_one(struct drm_device *drm, - struct sun8i_mixer *mixer, - int index) +struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, + struct sun8i_mixer *mixer, + int index) { enum drm_plane_type type = DRM_PLANE_TYPE_OVERLAY; u32 supported_encodings, supported_ranges; unsigned int plane_cnt, format_count; - struct sun8i_vi_layer *layer; + struct sun8i_layer *layer; const u32 *formats; int ret; @@ -613,6 +542,7 @@ struct sun8i_vi_layer *sun8i_vi_layer_init_one(struct drm_device *drm, drm_plane_helper_add(&layer->plane, &sun8i_vi_layer_helper_funcs); layer->mixer = mixer; + layer->type = SUN8I_LAYER_TYPE_VI; layer->channel = index; layer->overlay = 0; diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.h b/drivers/gpu/drm/sun4i/sun8i_vi_layer.h index 48c399e1c86d..655440cdc78f 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.h +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.h @@ -52,21 +52,9 @@ #define SUN8I_MIXER_CHAN_VI_DS_M(x) ((x) << 0) struct sun8i_mixer; +struct sun8i_layer; -struct sun8i_vi_layer { - struct drm_plane plane; - struct sun8i_mixer *mixer; - int channel; - int overlay; -}; - -static inline struct sun8i_vi_layer * -plane_to_sun8i_vi_layer(struct drm_plane *plane) -{ - return container_of(plane, struct sun8i_vi_layer, plane); -} - -struct sun8i_vi_layer *sun8i_vi_layer_init_one(struct drm_device *drm, - struct sun8i_mixer *mixer, - int index); +struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, + struct sun8i_mixer *mixer, + int index); #endif /* _SUN8I_VI_LAYER_H_ */ diff --git a/drivers/gpu/drm/sun4i/sunxi_engine.h b/drivers/gpu/drm/sun4i/sunxi_engine.h index ec8cf9b2bda4..ec0c4932f15c 100644 --- a/drivers/gpu/drm/sun4i/sunxi_engine.h +++ b/drivers/gpu/drm/sun4i/sunxi_engine.h @@ -7,6 +7,7 @@ #define _SUNXI_ENGINE_H_ struct drm_plane; +struct drm_crtc; struct drm_device; struct drm_crtc_state; struct drm_display_mode; @@ -59,7 +60,9 @@ struct sunxi_engine_ops { * * This function is optional. */ - void (*commit)(struct sunxi_engine *engine); + void (*commit)(struct sunxi_engine *engine, + struct drm_crtc *crtc, + struct drm_atomic_state *state); /** * @layers_init: @@ -144,12 +147,16 @@ struct sunxi_engine { /** * sunxi_engine_commit() - commit all changes of the engine * @engine: pointer to the engine + * @crtc: pointer to crtc the engine is associated with + * @state: atomic state */ static inline void -sunxi_engine_commit(struct sunxi_engine *engine) +sunxi_engine_commit(struct sunxi_engine *engine, + struct drm_crtc *crtc, + struct drm_atomic_state *state) { if (engine->ops && engine->ops->commit) - engine->ops->commit(engine); + engine->ops->commit(engine, crtc, state); } /** diff --git a/drivers/gpu/drm/tests/drm_buddy_test.c b/drivers/gpu/drm/tests/drm_buddy_test.c index dd8fb9f8341a..9662c949d0e3 100644 --- a/drivers/gpu/drm/tests/drm_buddy_test.c +++ b/drivers/gpu/drm/tests/drm_buddy_test.c @@ -774,4 +774,5 @@ static struct kunit_suite drm_buddy_test_suite = { kunit_test_suite(drm_buddy_test_suite); MODULE_AUTHOR("Intel Corporation"); +MODULE_DESCRIPTION("Kunit test for drm_buddy functions"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/tests/drm_cmdline_parser_test.c b/drivers/gpu/drm/tests/drm_cmdline_parser_test.c index 88f7f518ffb3..6f1457bd21d9 100644 --- a/drivers/gpu/drm/tests/drm_cmdline_parser_test.c +++ b/drivers/gpu/drm/tests/drm_cmdline_parser_test.c @@ -1056,4 +1056,5 @@ static struct kunit_suite drm_cmdline_parser_test_suite = { kunit_test_suite(drm_cmdline_parser_test_suite); MODULE_AUTHOR("Maxime Ripard <maxime.ripard@bootlin.com>"); +MODULE_DESCRIPTION("Kunit test for drm_cmdline_parser functions"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/tests/drm_connector_test.c b/drivers/gpu/drm/tests/drm_connector_test.c index eda2e5d08cd9..2812b123a79c 100644 --- a/drivers/gpu/drm/tests/drm_connector_test.c +++ b/drivers/gpu/drm/tests/drm_connector_test.c @@ -1290,4 +1290,5 @@ kunit_test_suites( ); MODULE_AUTHOR("Maxime Ripard <maxime@cerno.tech>"); +MODULE_DESCRIPTION("Kunit test for drm_modes functions"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/tests/drm_damage_helper_test.c b/drivers/gpu/drm/tests/drm_damage_helper_test.c index 115034fc3421..0df2e1a54b0d 100644 --- a/drivers/gpu/drm/tests/drm_damage_helper_test.c +++ b/drivers/gpu/drm/tests/drm_damage_helper_test.c @@ -636,4 +636,5 @@ static struct kunit_suite drm_damage_helper_test_suite = { kunit_test_suite(drm_damage_helper_test_suite); +MODULE_DESCRIPTION("Test case for drm_damage_helper functions"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/tests/drm_dp_mst_helper_test.c b/drivers/gpu/drm/tests/drm_dp_mst_helper_test.c index d916e548fcb1..89cd9e4f4d32 100644 --- a/drivers/gpu/drm/tests/drm_dp_mst_helper_test.c +++ b/drivers/gpu/drm/tests/drm_dp_mst_helper_test.c @@ -588,4 +588,5 @@ static struct kunit_suite drm_dp_mst_helper_test_suite = { kunit_test_suite(drm_dp_mst_helper_test_suite); +MODULE_DESCRIPTION("Test cases for the DRM DP MST helpers"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/tests/drm_exec_test.c b/drivers/gpu/drm/tests/drm_exec_test.c index 81f928a429ba..d6c4dd1194a0 100644 --- a/drivers/gpu/drm/tests/drm_exec_test.c +++ b/drivers/gpu/drm/tests/drm_exec_test.c @@ -210,4 +210,5 @@ static struct kunit_suite drm_exec_test_suite = { kunit_test_suite(drm_exec_test_suite); MODULE_AUTHOR("AMD"); +MODULE_DESCRIPTION("Kunit test for drm_exec functions"); MODULE_LICENSE("GPL and additional rights"); diff --git a/drivers/gpu/drm/tests/drm_format_test.c b/drivers/gpu/drm/tests/drm_format_test.c index ec6996ce819a..22e2371fd66a 100644 --- a/drivers/gpu/drm/tests/drm_format_test.c +++ b/drivers/gpu/drm/tests/drm_format_test.c @@ -356,4 +356,5 @@ static struct kunit_suite drm_format_test_suite = { kunit_test_suite(drm_format_test_suite); +MODULE_DESCRIPTION("Test cases for the drm_format functions"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/tests/drm_framebuffer_test.c b/drivers/gpu/drm/tests/drm_framebuffer_test.c index f759d9f3b76e..06f03b78c9c4 100644 --- a/drivers/gpu/drm/tests/drm_framebuffer_test.c +++ b/drivers/gpu/drm/tests/drm_framebuffer_test.c @@ -379,4 +379,5 @@ static struct kunit_suite drm_framebuffer_test_suite = { kunit_test_suite(drm_framebuffer_test_suite); +MODULE_DESCRIPTION("Test cases for the drm_framebuffer functions"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/tests/drm_gem_shmem_test.c b/drivers/gpu/drm/tests/drm_gem_shmem_test.c index 91202e40cde9..c3758faa1b83 100644 --- a/drivers/gpu/drm/tests/drm_gem_shmem_test.c +++ b/drivers/gpu/drm/tests/drm_gem_shmem_test.c @@ -380,4 +380,5 @@ static struct kunit_suite drm_gem_shmem_suite = { kunit_test_suite(drm_gem_shmem_suite); +MODULE_DESCRIPTION("KUnit test suite for GEM objects backed by shmem buffers"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/tests/drm_kunit_helpers.c b/drivers/gpu/drm/tests/drm_kunit_helpers.c index d5317d13d3fc..aa62719dab0e 100644 --- a/drivers/gpu/drm/tests/drm_kunit_helpers.c +++ b/drivers/gpu/drm/tests/drm_kunit_helpers.c @@ -312,4 +312,5 @@ drm_kunit_helper_create_crtc(struct kunit *test, EXPORT_SYMBOL_GPL(drm_kunit_helper_create_crtc); MODULE_AUTHOR("Maxime Ripard <maxime@cerno.tech>"); +MODULE_DESCRIPTION("KUnit test suite helper functions"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/tests/drm_managed_test.c b/drivers/gpu/drm/tests/drm_managed_test.c index 76eb273c9b36..d40c7ef7f9e1 100644 --- a/drivers/gpu/drm/tests/drm_managed_test.c +++ b/drivers/gpu/drm/tests/drm_managed_test.c @@ -113,4 +113,5 @@ static struct kunit_suite drm_managed_test_suite = { kunit_test_suite(drm_managed_test_suite); MODULE_AUTHOR("Maxime Ripard <maxime@cerno.tech>"); +MODULE_DESCRIPTION("KUnit DRM managed test suite"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/tests/drm_mm_test.c b/drivers/gpu/drm/tests/drm_mm_test.c index 8497d9990b96..6174d0929020 100644 --- a/drivers/gpu/drm/tests/drm_mm_test.c +++ b/drivers/gpu/drm/tests/drm_mm_test.c @@ -356,4 +356,5 @@ static struct kunit_suite drm_mm_test_suite = { kunit_test_suite(drm_mm_test_suite); MODULE_AUTHOR("Intel Corporation"); +MODULE_DESCRIPTION("Test cases for the drm_mm range manager"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/tests/drm_modes_test.c b/drivers/gpu/drm/tests/drm_modes_test.c index 1e9f63fbfead..7029f7a2eb4d 100644 --- a/drivers/gpu/drm/tests/drm_modes_test.c +++ b/drivers/gpu/drm/tests/drm_modes_test.c @@ -147,4 +147,5 @@ static struct kunit_suite drm_modes_analog_tv_test_suite = { kunit_test_suite(drm_modes_analog_tv_test_suite); MODULE_AUTHOR("Maxime Ripard <maxime@cerno.tech>"); +MODULE_DESCRIPTION("Kunit test for drm_modes functions"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/tests/drm_plane_helper_test.c b/drivers/gpu/drm/tests/drm_plane_helper_test.c index 0f392146b233..7e975a3f4a71 100644 --- a/drivers/gpu/drm/tests/drm_plane_helper_test.c +++ b/drivers/gpu/drm/tests/drm_plane_helper_test.c @@ -315,4 +315,5 @@ static struct kunit_suite drm_plane_helper_test_suite = { kunit_test_suite(drm_plane_helper_test_suite); +MODULE_DESCRIPTION("Test cases for the drm_plane_helper functions"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/tests/drm_probe_helper_test.c b/drivers/gpu/drm/tests/drm_probe_helper_test.c index 1a2044070a6c..bc09ff38aca1 100644 --- a/drivers/gpu/drm/tests/drm_probe_helper_test.c +++ b/drivers/gpu/drm/tests/drm_probe_helper_test.c @@ -207,4 +207,5 @@ static struct kunit_suite drm_test_connector_helper_tv_get_modes_suite = { kunit_test_suite(drm_test_connector_helper_tv_get_modes_suite); MODULE_AUTHOR("Maxime Ripard <maxime@cerno.tech>"); +MODULE_DESCRIPTION("Kunit test for drm_probe_helper functions"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/tests/drm_rect_test.c b/drivers/gpu/drm/tests/drm_rect_test.c index 76332cd2ead8..17e1f34b7610 100644 --- a/drivers/gpu/drm/tests/drm_rect_test.c +++ b/drivers/gpu/drm/tests/drm_rect_test.c @@ -526,4 +526,5 @@ static struct kunit_suite drm_rect_test_suite = { kunit_test_suite(drm_rect_test_suite); +MODULE_DESCRIPTION("Test cases for the drm_rect functions"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/tiny/bochs.c b/drivers/gpu/drm/tiny/bochs.c index 5ea89f21a5bd..31fc5d839e10 100644 --- a/drivers/gpu/drm/tiny/bochs.c +++ b/drivers/gpu/drm/tiny/bochs.c @@ -733,4 +733,5 @@ drm_module_pci_driver_if_modeset(bochs_pci_driver, bochs_modeset); MODULE_DEVICE_TABLE(pci, bochs_pci_tbl); MODULE_AUTHOR("Gerd Hoffmann <kraxel@redhat.com>"); +MODULE_DESCRIPTION("DRM Support for bochs dispi vga interface (qemu stdvga)"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c index 3ac4f310aa2a..751326e3d9c3 100644 --- a/drivers/gpu/drm/tiny/cirrus.c +++ b/drivers/gpu/drm/tiny/cirrus.c @@ -760,4 +760,5 @@ static struct pci_driver cirrus_pci_driver = { drm_module_pci_driver(cirrus_pci_driver) MODULE_DEVICE_TABLE(pci, pciidlist); +MODULE_DESCRIPTION("Cirrus driver for QEMU emulated device"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c index 8b4efd39d7c4..e0defb1d134f 100644 --- a/drivers/gpu/drm/tiny/gm12u320.c +++ b/drivers/gpu/drm/tiny/gm12u320.c @@ -755,4 +755,5 @@ static struct usb_driver gm12u320_usb_driver = { module_usb_driver(gm12u320_usb_driver); MODULE_AUTHOR("Hans de Goede <hdegoede@redhat.com>"); +MODULE_DESCRIPTION("GM12U320 driver for USB projectors"); MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/tiny/panel-mipi-dbi.c b/drivers/gpu/drm/tiny/panel-mipi-dbi.c index b353a731f253..f753cdffe6f8 100644 --- a/drivers/gpu/drm/tiny/panel-mipi-dbi.c +++ b/drivers/gpu/drm/tiny/panel-mipi-dbi.c @@ -26,6 +26,49 @@ #include <video/mipi_display.h> +struct panel_mipi_dbi_format { + const char *name; + u32 fourcc; + unsigned int bpp; +}; + +static const struct panel_mipi_dbi_format panel_mipi_dbi_formats[] = { + { "r5g6b5", DRM_FORMAT_RGB565, 16 }, + { "b6x2g6x2r6x2", DRM_FORMAT_RGB888, 24 }, +}; + +static int panel_mipi_dbi_get_format(struct device *dev, u32 *formats, unsigned int *bpp) +{ + const char *format_name; + unsigned int i; + int ret; + + formats[1] = DRM_FORMAT_XRGB8888; + + ret = device_property_read_string(dev, "format", &format_name); + if (ret) { + /* Old Device Trees don't have this property */ + formats[0] = DRM_FORMAT_RGB565; + *bpp = 16; + return 0; + } + + for (i = 0; i < ARRAY_SIZE(panel_mipi_dbi_formats); i++) { + const struct panel_mipi_dbi_format *format = &panel_mipi_dbi_formats[i]; + + if (strcmp(format_name, format->name)) + continue; + + formats[0] = format->fourcc; + *bpp = format->bpp; + return 0; + } + + dev_err(dev, "Pixel format is not supported: '%s'\n", format_name); + + return -EINVAL; +} + static const u8 panel_mipi_dbi_magic[15] = { 'M', 'I', 'P', 'I', ' ', 'D', 'B', 'I', 0, 0, 0, 0, 0, 0, 0 }; @@ -276,6 +319,9 @@ static int panel_mipi_dbi_spi_probe(struct spi_device *spi) struct drm_device *drm; struct mipi_dbi *dbi; struct gpio_desc *dc; + unsigned int bpp; + size_t buf_size; + u32 formats[2]; int ret; dbidev = devm_drm_dev_alloc(dev, &panel_mipi_dbi_driver, struct mipi_dbi_dev, drm); @@ -323,7 +369,14 @@ static int panel_mipi_dbi_spi_probe(struct spi_device *spi) if (IS_ERR(dbidev->driver_private)) return PTR_ERR(dbidev->driver_private); - ret = mipi_dbi_dev_init(dbidev, &panel_mipi_dbi_pipe_funcs, &mode, 0); + ret = panel_mipi_dbi_get_format(dev, formats, &bpp); + if (ret) + return ret; + + buf_size = DIV_ROUND_UP(mode.hdisplay * mode.vdisplay * bpp, 8); + ret = mipi_dbi_dev_init_with_formats(dbidev, &panel_mipi_dbi_pipe_funcs, + formats, ARRAY_SIZE(formats), + &mode, 0, buf_size); if (ret) return ret; diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c index 9612e9af27a4..280a09a6e2ad 100644 --- a/drivers/gpu/drm/udl/udl_drv.c +++ b/drivers/gpu/drm/udl/udl_drv.c @@ -160,4 +160,5 @@ static struct usb_driver udl_driver = { .id_table = id_table, }; module_usb_driver(udl_driver); +MODULE_DESCRIPTION("KMS driver for the USB displaylink video adapters"); MODULE_LICENSE("GPL"); diff --git a/include/drm/display/drm_hdmi_state_helper.h b/include/drm/display/drm_hdmi_state_helper.h index eb162ff24de0..285f366cf716 100644 --- a/include/drm/display/drm_hdmi_state_helper.h +++ b/include/drm/display/drm_hdmi_state_helper.h @@ -16,6 +16,7 @@ int drm_atomic_helper_connector_hdmi_check(struct drm_connector *connector, int drm_atomic_helper_connector_hdmi_update_audio_infoframe(struct drm_connector *connector, struct hdmi_audio_infoframe *frame); +int drm_atomic_helper_connector_hdmi_disable_audio_infoframe(struct drm_connector *connector); int drm_atomic_helper_connector_hdmi_update_infoframes(struct drm_connector *connector, struct drm_atomic_state *state); diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h index 4baca0d9107b..75019d16be64 100644 --- a/include/drm/drm_bridge.h +++ b/include/drm/drm_bridge.h @@ -631,6 +631,52 @@ struct drm_bridge_funcs { void (*hpd_disable)(struct drm_bridge *bridge); /** + * @hdmi_tmds_char_rate_valid: + * + * Check whether a particular TMDS character rate is supported by the + * driver. + * + * This callback is optional and should only be implemented by the + * bridges that take part in the HDMI connector implementation. Bridges + * that implement it shall set the DRM_BRIDGE_OP_HDMI flag in their + * &drm_bridge->ops. + * + * Returns: + * + * Either &drm_mode_status.MODE_OK or one of the failure reasons + * in &enum drm_mode_status. + */ + enum drm_mode_status + (*hdmi_tmds_char_rate_valid)(const struct drm_bridge *bridge, + const struct drm_display_mode *mode, + unsigned long long tmds_rate); + + /** + * @hdmi_clear_infoframe: + * + * This callback clears the infoframes in the hardware during commit. + * It will be called multiple times, once for every disabled infoframe + * type. + * + * This callback is optional but it must be implemented by bridges that + * set the DRM_BRIDGE_OP_HDMI flag in their &drm_bridge->ops. + */ + int (*hdmi_clear_infoframe)(struct drm_bridge *bridge, + enum hdmi_infoframe_type type); + /** + * @hdmi_write_infoframe: + * + * Program the infoframe into the hardware. It will be called multiple + * times, once for every updated infoframe type. + * + * This callback is optional but it must be implemented by bridges that + * set the DRM_BRIDGE_OP_HDMI flag in their &drm_bridge->ops. + */ + int (*hdmi_write_infoframe)(struct drm_bridge *bridge, + enum hdmi_infoframe_type type, + const u8 *buffer, size_t len); + + /** * @debugfs_init: * * Allows bridges to create bridge-specific debugfs files. @@ -705,6 +751,16 @@ enum drm_bridge_ops { * this flag shall implement the &drm_bridge_funcs->get_modes callback. */ DRM_BRIDGE_OP_MODES = BIT(3), + /** + * @DRM_BRIDGE_OP_HDMI: The bridge provides HDMI connector operations, + * including infoframes support. Bridges that set this flag must + * implement the &drm_bridge_funcs->write_infoframe callback. + * + * Note: currently there can be at most one bridge in a chain that sets + * this bit. This is to simplify corresponding glue code in connector + * drivers. + */ + DRM_BRIDGE_OP_HDMI = BIT(4), }; /** @@ -773,6 +829,31 @@ struct drm_bridge { * @hpd_cb. */ void *hpd_data; + + /** + * @vendor: Vendor of the product to be used for the SPD InfoFrame + * generation. This is required if @DRM_BRIDGE_OP_HDMI is set. + */ + const char *vendor; + + /** + * @product: Name of the product to be used for the SPD InfoFrame + * generation. This is required if @DRM_BRIDGE_OP_HDMI is set. + */ + const char *product; + + /** + * @supported_formats: Bitmask of @hdmi_colorspace listing supported + * output formats. This is only relevant if @DRM_BRIDGE_OP_HDMI is set. + */ + unsigned int supported_formats; + + /** + * @max_bpc: Maximum bits per char the HDMI bridge supports. Allowed + * values are 8, 10 and 12. This is only relevant if + * @DRM_BRIDGE_OP_HDMI is set. + */ + unsigned int max_bpc; }; static inline struct drm_bridge * @@ -855,9 +936,6 @@ drm_bridge_chain_get_first_bridge(struct drm_encoder *encoder) #define drm_for_each_bridge_in_chain(encoder, bridge) \ list_for_each_entry(bridge, &(encoder)->bridge_chain, chain_node) -bool drm_bridge_chain_mode_fixup(struct drm_bridge *bridge, - const struct drm_display_mode *mode, - struct drm_display_mode *adjusted_mode); enum drm_mode_status drm_bridge_chain_mode_valid(struct drm_bridge *bridge, const struct drm_display_info *info, diff --git a/include/drm/drm_mipi_dbi.h b/include/drm/drm_mipi_dbi.h index e8e0f8d39f3a..f45f9612c0bc 100644 --- a/include/drm/drm_mipi_dbi.h +++ b/include/drm/drm_mipi_dbi.h @@ -57,6 +57,11 @@ struct mipi_dbi { struct spi_device *spi; /** + * @write_memory_bpw: Bits per word used on a MIPI_DCS_WRITE_MEMORY_START transfer + */ + unsigned int write_memory_bpw; + + /** * @dc: Optional D/C gpio. */ struct gpio_desc *dc; @@ -97,6 +102,11 @@ struct mipi_dbi_dev { struct drm_display_mode mode; /** + * @pixel_format: Native pixel format (DRM_FORMAT\_\*) + */ + u32 pixel_format; + + /** * @tx_buf: Buffer used for transfer (copy clip rect area) */ u16 *tx_buf; diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h index bd5a0b6d0711..71d121aeef24 100644 --- a/include/drm/drm_mipi_dsi.h +++ b/include/drm/drm_mipi_dsi.h @@ -293,7 +293,7 @@ ssize_t mipi_dsi_generic_read(struct mipi_dsi_device *dsi, const void *params, #define mipi_dsi_msleep(ctx, delay) \ do { \ - if (!ctx.accum_err) \ + if (!(ctx)->accum_err) \ msleep(delay); \ } while (0) diff --git a/include/drm/drm_mm.h b/include/drm/drm_mm.h index ac33ba1b18bc..f654874c4ce6 100644 --- a/include/drm/drm_mm.h +++ b/include/drm/drm_mm.h @@ -463,7 +463,6 @@ static inline int drm_mm_insert_node(struct drm_mm *mm, } void drm_mm_remove_node(struct drm_mm_node *node); -void drm_mm_replace_node(struct drm_mm_node *old, struct drm_mm_node *new); void drm_mm_init(struct drm_mm *mm, u64 start, u64 size); void drm_mm_takedown(struct drm_mm *mm); diff --git a/include/drm/drm_panic.h b/include/drm/drm_panic.h index 822dbb1aa9d6..73bb3f3d9ed9 100644 --- a/include/drm/drm_panic.h +++ b/include/drm/drm_panic.h @@ -50,6 +50,15 @@ struct drm_scanout_buffer { * @pitch: Length in bytes between the start of two consecutive lines. */ unsigned int pitch[DRM_FORMAT_MAX_PLANES]; + + /** + * @set_pixel: Optional function, to set a pixel color on the + * framebuffer. It allows to handle special tiling format inside the + * driver. + */ + void (*set_pixel)(struct drm_scanout_buffer *sb, unsigned int x, + unsigned int y, u32 color); + }; /** diff --git a/include/drm/drm_print.h b/include/drm/drm_print.h index 089950ad8681..5d9dff5149c9 100644 --- a/include/drm/drm_print.h +++ b/include/drm/drm_print.h @@ -175,6 +175,7 @@ struct drm_printer { void (*printfn)(struct drm_printer *p, struct va_format *vaf); void (*puts)(struct drm_printer *p, const char *str); void *arg; + const void *origin; const char *prefix; enum drm_debug_category category; }; @@ -332,6 +333,7 @@ static inline struct drm_printer drm_dbg_printer(struct drm_device *drm, struct drm_printer p = { .printfn = __drm_printfn_dbg, .arg = drm, + .origin = (const void *)_THIS_IP_, /* it's fine as we will be inlined */ .prefix = prefix, .category = category, }; @@ -527,17 +529,15 @@ void __drm_dev_dbg(struct _ddebug *desc, const struct device *dev, * Prefer drm_device based logging over device or prink based logging. */ -__printf(3, 4) -void ___drm_dbg(struct _ddebug *desc, enum drm_debug_category category, const char *format, ...); __printf(1, 2) void __drm_err(const char *format, ...); #if !defined(CONFIG_DRM_USE_DYNAMIC_DEBUG) -#define __drm_dbg(cat, fmt, ...) ___drm_dbg(NULL, cat, fmt, ##__VA_ARGS__) +#define __drm_dbg(cat, fmt, ...) __drm_dev_dbg(NULL, NULL, cat, fmt, ##__VA_ARGS__) #else #define __drm_dbg(cat, fmt, ...) \ - _dynamic_func_call_cls(cat, fmt, ___drm_dbg, \ - cat, fmt, ##__VA_ARGS__) + _dynamic_func_call_cls(cat, fmt, __drm_dev_dbg, \ + NULL, cat, fmt, ##__VA_ARGS__) #endif /* Macros to make printk easier */ @@ -632,12 +632,12 @@ void __drm_err(const char *format, ...); /* Helper for struct drm_device based WARNs */ #define drm_WARN(drm, condition, format, arg...) \ - WARN(condition, "%s %s: " format, \ + WARN(condition, "%s %s: [drm] " format, \ dev_driver_string((drm)->dev), \ dev_name((drm)->dev), ## arg) #define drm_WARN_ONCE(drm, condition, format, arg...) \ - WARN_ONCE(condition, "%s %s: " format, \ + WARN_ONCE(condition, "%s %s: [drm] " format, \ dev_driver_string((drm)->dev), \ dev_name((drm)->dev), ## arg) |