mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	We have enabled PROVE_LOCKING (which enables LOCKDEP) in drm-ci. This will output warnings when kernel locking errors are encountered and will continue executing tests. To detect if lockdep has been triggered, check the debug_locks value in /proc/lockdep_stats after the tests have run. When debug_locks is 0, it indicates that lockdep has detected issues and turned itself off. Check this value, and if lockdep is detected, exit with an error and configure it as a warning in GitLab CI. GitLab CI ignores exit codes other than 1 by default. Pass the correct exit code with variable FF_USE_NEW_BASH_EVAL_STRATEGY set to true or exit on failure. Also update the documentation. Acked-by: Helen Koike <helen.fornazier@gmail.com> Reviewed-by: Daniel Stone <daniels@collabora.com> Link: https://patchwork.freedesktop.org/patch/msgid/20250217053719.442644-4-vignesh.raman@collabora.com Signed-off-by: Vignesh Raman <vignesh.raman@collabora.com>
		
			
				
	
	
		
			171 lines
		
	
	
	
		
			6.3 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			171 lines
		
	
	
	
		
			6.3 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
.. SPDX-License-Identifier: GPL-2.0+
 | 
						|
 | 
						|
=========================================
 | 
						|
Automated testing of the DRM subsystem
 | 
						|
=========================================
 | 
						|
 | 
						|
Introduction
 | 
						|
============
 | 
						|
 | 
						|
Making sure that changes to the core or drivers don't introduce regressions can
 | 
						|
be very time-consuming when lots of different hardware configurations need to
 | 
						|
be tested. Moreover, it isn't practical for each person interested in this
 | 
						|
testing to have to acquire and maintain what can be a considerable amount of
 | 
						|
hardware.
 | 
						|
 | 
						|
Also, it is desirable for developers to check for regressions in their code by
 | 
						|
themselves, instead of relying on the maintainers to find them and then
 | 
						|
reporting back.
 | 
						|
 | 
						|
There are facilities in gitlab.freedesktop.org to automatically test Mesa that
 | 
						|
can be used as well for testing the DRM subsystem. This document explains how
 | 
						|
people interested in testing it can use this shared infrastructure to save
 | 
						|
quite some time and effort.
 | 
						|
 | 
						|
 | 
						|
Relevant files
 | 
						|
==============
 | 
						|
 | 
						|
drivers/gpu/drm/ci/gitlab-ci.yml
 | 
						|
--------------------------------
 | 
						|
 | 
						|
This is the root configuration file for GitLab CI. Among other less interesting
 | 
						|
bits, it specifies the specific version of the scripts to be used. There are
 | 
						|
some variables that can be modified to change the behavior of the pipeline:
 | 
						|
 | 
						|
DRM_CI_PROJECT_PATH
 | 
						|
    Repository that contains the Mesa software infrastructure for CI
 | 
						|
 | 
						|
DRM_CI_COMMIT_SHA
 | 
						|
    A particular revision to use from that repository
 | 
						|
 | 
						|
UPSTREAM_REPO
 | 
						|
    URL to git repository containing the target branch
 | 
						|
 | 
						|
TARGET_BRANCH
 | 
						|
    Branch to which this branch is to be merged into
 | 
						|
 | 
						|
IGT_VERSION
 | 
						|
    Revision of igt-gpu-tools being used, from
 | 
						|
    https://gitlab.freedesktop.org/drm/igt-gpu-tools
 | 
						|
 | 
						|
drivers/gpu/drm/ci/testlist.txt
 | 
						|
-------------------------------
 | 
						|
 | 
						|
IGT tests to be run on all drivers (unless mentioned in a driver's \*-skips.txt
 | 
						|
file, see below).
 | 
						|
 | 
						|
drivers/gpu/drm/ci/${DRIVER_NAME}-${HW_REVISION}-fails.txt
 | 
						|
----------------------------------------------------------
 | 
						|
 | 
						|
Lists the known failures for a given driver on a specific hardware revision.
 | 
						|
 | 
						|
drivers/gpu/drm/ci/${DRIVER_NAME}-${HW_REVISION}-flakes.txt
 | 
						|
-----------------------------------------------------------
 | 
						|
 | 
						|
Lists the tests that for a given driver on a specific hardware revision are
 | 
						|
known to behave unreliably. These tests won't cause a job to fail regardless of
 | 
						|
the result. They will still be run.
 | 
						|
 | 
						|
Each new flake entry must be associated with a link to the email reporting the
 | 
						|
bug to the author of the affected driver or the relevant GitLab issue. The entry
 | 
						|
must also include the board name or Device Tree name, the first kernel version
 | 
						|
affected, the IGT version used for tests, and an approximation of the failure rate.
 | 
						|
 | 
						|
They should be provided under the following format::
 | 
						|
 | 
						|
  # Bug Report: $LORE_URL_OR_GITLAB_ISSUE
 | 
						|
  # Board Name: broken-board.dtb
 | 
						|
  # Linux Version: 6.6-rc1
 | 
						|
  # IGT Version: 1.28-gd2af13d9f
 | 
						|
  # Failure Rate: 100
 | 
						|
  flaky-test
 | 
						|
 | 
						|
Use the appropriate link below to create a GitLab issue:
 | 
						|
amdgpu driver: https://gitlab.freedesktop.org/drm/amd/-/issues
 | 
						|
i915 driver: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues
 | 
						|
msm driver: https://gitlab.freedesktop.org/drm/msm/-/issues
 | 
						|
xe driver: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues
 | 
						|
 | 
						|
drivers/gpu/drm/ci/${DRIVER_NAME}-${HW_REVISION}-skips.txt
 | 
						|
-----------------------------------------------------------
 | 
						|
 | 
						|
Lists the tests that won't be run for a given driver on a specific hardware
 | 
						|
revision. These are usually tests that interfere with the running of the test
 | 
						|
list due to hanging the machine, causing OOM, taking too long, etc.
 | 
						|
 | 
						|
 | 
						|
How to enable automated testing on your tree
 | 
						|
============================================
 | 
						|
 | 
						|
1. Create a Linux tree in https://gitlab.freedesktop.org/ if you don't have one
 | 
						|
yet
 | 
						|
 | 
						|
2. In your kernel repo's configuration (eg.
 | 
						|
https://gitlab.freedesktop.org/janedoe/linux/-/settings/ci_cd), change the
 | 
						|
CI/CD configuration file from .gitlab-ci.yml to
 | 
						|
drivers/gpu/drm/ci/gitlab-ci.yml.
 | 
						|
 | 
						|
3. Request to be added to the drm/ci-ok group so that your user has the
 | 
						|
necessary privileges to run the CI on https://gitlab.freedesktop.org/drm/ci-ok
 | 
						|
 | 
						|
4. Next time you push to this repository, you will see a CI pipeline being
 | 
						|
created (eg. https://gitlab.freedesktop.org/janedoe/linux/-/pipelines)
 | 
						|
 | 
						|
5. The various jobs will be run and when the pipeline is finished, all jobs
 | 
						|
should be green unless a regression has been found.
 | 
						|
 | 
						|
6. Warnings in the pipeline indicate that lockdep
 | 
						|
(see Documentation/locking/lockdep-design.rst) issues have been detected
 | 
						|
during the tests.
 | 
						|
 | 
						|
 | 
						|
How to update test expectations
 | 
						|
===============================
 | 
						|
 | 
						|
If your changes to the code fix any tests, you will have to remove one or more
 | 
						|
lines from one or more of the files in
 | 
						|
drivers/gpu/drm/ci/${DRIVER_NAME}_*_fails.txt, for each of the test platforms
 | 
						|
affected by the change.
 | 
						|
 | 
						|
 | 
						|
How to expand coverage
 | 
						|
======================
 | 
						|
 | 
						|
If your code changes make it possible to run more tests (by solving reliability
 | 
						|
issues, for example), you can remove tests from the flakes and/or skips lists,
 | 
						|
and then the expected results if there are any known failures.
 | 
						|
 | 
						|
If there is a need for updating the version of IGT being used (maybe you have
 | 
						|
added more tests to it), update the IGT_VERSION variable at the top of the
 | 
						|
gitlab-ci.yml file.
 | 
						|
 | 
						|
 | 
						|
How to test your changes to the scripts
 | 
						|
=======================================
 | 
						|
 | 
						|
For testing changes to the scripts in the drm-ci repo, change the
 | 
						|
DRM_CI_PROJECT_PATH and DRM_CI_COMMIT_SHA variables in
 | 
						|
drivers/gpu/drm/ci/gitlab-ci.yml to match your fork of the project (eg.
 | 
						|
janedoe/drm-ci). This fork needs to be in https://gitlab.freedesktop.org/.
 | 
						|
 | 
						|
 | 
						|
How to incorporate external fixes in your testing
 | 
						|
=================================================
 | 
						|
 | 
						|
Often, regressions in other trees will prevent testing changes local to the
 | 
						|
tree under test. These fixes will be automatically merged in during the build
 | 
						|
jobs from a branch in the target tree that is named as
 | 
						|
${TARGET_BRANCH}-external-fixes.
 | 
						|
 | 
						|
If the pipeline is not in a merge request and a branch with the same name
 | 
						|
exists in the local tree, commits from that branch will be merged in as well.
 | 
						|
 | 
						|
 | 
						|
How to deal with automated testing labs that may be down
 | 
						|
========================================================
 | 
						|
 | 
						|
If a hardware farm is down and thus causing pipelines to fail that would
 | 
						|
otherwise pass, one can disable all jobs that would be submitted to that farm
 | 
						|
by editing the file at
 | 
						|
https://gitlab.freedesktop.org/gfx-ci/lab-status/-/blob/main/lab-status.yml.
 |