mirror of https://lore.kernel.org/lkml/
 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 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®