All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vignesh Raman <vignesh.raman@collabora.com>
To: Maxime Ripard <mripard@kernel.org>,
	Helen Koike <helen.fornazier@gmail.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
	Nathan Chancellor <nathan@kernel.org>,
	Nick Desaulniers <ndesaulniers@google.com>,
	Bill Wendling <morbo@google.com>,
	Justin Stitt <justinstitt@google.com>
Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	llvm@lists.linux.dev
Subject: Re: [PATCH] drm/ci: Add CI pipeline for drm-misc branches
Date: Tue, 8 Sep 2026 11:25:00 +0530	[thread overview]
Message-ID: <84bd2c70-360a-4c25-a73c-70eca291c99b@collabora.com> (raw)
In-Reply-To: <20260902-drm-drm-misc-ci-v1-1-49d05e228eab@kernel.org>

Hi Maxime,

On 02/09/26 13:47, Maxime Ripard wrote:
> The DRM CI infrastructure [1] builds upon Mesa's CI to run IGT tests
> on hardware. Its focus is on functional testing on a selected number
> of targets.
> 
> The concern for drm-misc is different: it merges a large number of
> patches across many platforms, and build or unit test breakages happen
> on a regular basis. Adding build and unit testing for drm-misc has
> been on the back of our minds, and a first attempt was made last year.
> The feedback was to rely more on the existing infrastructure.
> 
> Introduce a CI entry point for merge requests targeting drm-misc-next,
> drm-misc-fixes, and drm-misc-next-fixes. It reuses kunit.yml and the
> freedesktop ci-templates, while defining build templates inline to
> avoid pulling in the Mesa pipeline.
> 
> A single Debian container with LLVM handles cross-compilation to all
> three architectures. The pipeline compiles the kernel using defconfigs
> from the drm/tip rerere-cache branch and runs the DRM KUnit tests.

Thanks for the patch. We can reuse the check-patch and dtbs jobs as 
well. This can be done as a separate patch.

Acked-by: Vignesh Raman <vignesh.raman@collabora.com>

> 
> Link: https://lore.kernel.org/all/20250319-greedy-sturgeon-from-avalon-ac758f@houat/
> Signed-off-by: Maxime Ripard <mripard@kernel.org>
> ---
>   drivers/gpu/drm/ci/drm-misc-ci.yml | 123 +++++++++++++++++++++++++++++++++++++
>   1 file changed, 123 insertions(+)
> 
> diff --git a/drivers/gpu/drm/ci/drm-misc-ci.yml b/drivers/gpu/drm/ci/drm-misc-ci.yml
> new file mode 100644
> index 000000000000..40c6d7ba1afb
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/drm-misc-ci.yml
> @@ -0,0 +1,123 @@
> +# CI pipeline for drm-misc-next, drm-misc-fixes, and drm-misc-next-fixes.
> +#
> +# Runs on merge requests only. Compiles the kernel for arm, arm64, and
> +# x86_64, and executes the DRM KUnit tests on each architecture.
> +#
> +# A single container image is built using freedesktop ci-templates with
> +# the packages needed for kernel compilation and LLVM for
> +# cross-compilation. QEMU is installed at runtime by the KUnit jobs.
> +#
> +# build.yml and the Mesa container/build pipelines are not included
> +# here: they pull in hundreds of Mesa-specific jobs and templates that
> +# would each need to be individually stubbed or disabled. The few
> +# templates we need (.build:arm32, .build:arm64, .build:x86_64) are
> +# simple enough to define inline.
> +
> +variables:
> +  CI_TEMPLATES_COMMIT: &ci-templates-commit aec7a6ce7bb38902c70641526f6611e27141784a
> +  # Project whose container registry stores the built images
> +  FDO_UPSTREAM_REPO: mripard/kernel
> +  KERNEL_BUILD_CONTAINER_TAG: "2026-09-02-01"
> +  LLVM_VERSION: "19"
> +
> +default:
> +  before_script: []
> +
> +include:
> +  - project: 'freedesktop/ci-templates'
> +    ref: *ci-templates-commit
> +    file:
> +      - '/templates/debian.yml'
> +  - local: drivers/gpu/drm/ci/kunit.yml
> +
> +stages:
> +  - container
> +  - build
> +  - kunit
> +
> +# --- Pipeline rules ---
> +workflow:
> +  rules:
> +    - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /^drm-misc-(next|fixes|next-fixes)$/
> +      when: always
> +
> +# kunit.yml's jobs inherit .build-rules through the .build:* chain.
> +# Pass everything through since the pipeline is already gated by
> +# workflow:rules.
> +.build-rules:
> +  rules:
> +    - when: on_success
> +
> +# --- Container build job ---
> +# Single container with all build tools. LLVM handles cross-compilation
> +# to arm and arm64, so no architecture-specific containers are needed.
> +debian/kernel-build:
> +  extends: .fdo.container-build@debian
> +  stage: container
> +  variables:
> +    FDO_DISTRIBUTION_VERSION: trixie
> +    FDO_DISTRIBUTION_TAG: "${KERNEL_BUILD_CONTAINER_TAG}"
> +    FDO_DISTRIBUTION_PACKAGES: >-
> +      bc bison ca-certificates cpio curl
> +      clang-${LLVM_VERSION} flex gzip
> +      lld-${LLVM_VERSION} llvm-${LLVM_VERSION}
> +      libelf-dev libssl-dev
> +      make perl pkg-config python3
> +      xz-utils
> +
> +# --- Build templates ---
> +.build-base:
> +  image: "${CI_REGISTRY}/${FDO_UPSTREAM_REPO}/debian/trixie:${KERNEL_BUILD_CONTAINER_TAG}"
> +  needs: ["debian/kernel-build"]
> +
> +.build:arm32:
> +  extends: .build-base
> +  variables:
> +    KERNEL_ARCH: "arm"
> +    DEFCONFIG_ARCH: "arm"
> +
> +.build:arm64:
> +  extends: .build-base
> +  variables:
> +    KERNEL_ARCH: "arm64"
> +    DEFCONFIG_ARCH: "arm64"
> +
> +.build:x86_64:
> +  extends: .build-base
> +  variables:
> +    KERNEL_ARCH: "x86_64"
> +    DEFCONFIG_ARCH: "x86"
> +
> +# --- Kernel-wide build jobs (LLVM) ---
> +.kernel-build:
> +  stage: build
> +  timeout: 45m
> +  variables:
> +    GIT_DEPTH: 1
> +    DEFCONFIG_URL: https://gitlab.freedesktop.org/drm/tip/-/raw/rerere-cache/drm-misc-${DEFCONFIG_ARCH}_defconfig
> +  artifacts: {}
> +  before_script:
> +    - drivers/gpu/drm/ci/setup-llvm-links.sh
> +    - curl -L --retry 4 -f --retry-all-errors --retry-delay 60 -o .config "${DEFCONFIG_URL}"
> +
> +kernel-build:arm32:
> +  extends: [.build:arm32, .kernel-build]
> +  script:
> +    - make ARCH=arm LLVM=1 olddefconfig
> +    - make ARCH=arm LLVM=1 -j$(nproc)
> +
> +kernel-build:arm64:
> +  extends: [.build:arm64, .kernel-build]
> +  script:
> +    - make ARCH=arm64 LLVM=1 olddefconfig
> +    - make ARCH=arm64 LLVM=1 -j$(nproc)
> +
> +kernel-build:x86_64:
> +  extends: [.build:x86_64, .kernel-build]
> +  script:
> +    - make ARCH=x86 LLVM=1 olddefconfig
> +    - make ARCH=x86 LLVM=1 -j$(nproc)
> +
> +# --- KUnit jobs ---
> +# kunit:arm32, kunit:arm64, and kunit:x86_64 are defined in kunit.yml
> +# and implicitly enabled here through the .build:* templates above.
> 
> ---
> base-commit: 0116f19db5931348c937eafa1f76a9a19bf82c81
> change-id: 20260902-drm-drm-misc-ci-ec6c69506609
> 
> Best regards,


      parent reply	other threads:[~2026-09-08  5:55 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-02  8:17 [PATCH] drm/ci: Add CI pipeline for drm-misc branches Maxime Ripard
2026-09-02  8:21 ` Maxime Ripard
2026-09-08  5:55 ` Vignesh Raman [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=84bd2c70-360a-4c25-a73c-70eca291c99b@collabora.com \
    --to=vignesh.raman@collabora.com \
    --cc=airlied@gmail.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=helen.fornazier@gmail.com \
    --cc=justinstitt@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=morbo@google.com \
    --cc=mripard@kernel.org \
    --cc=nathan@kernel.org \
    --cc=ndesaulniers@google.com \
    --cc=simona@ffwll.ch \
    --cc=tzimmermann@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.