Intel GFX CI

What Is It About?

We are continously testing i915 (a Linux kernel device driver for Intel Graphics) in an automated fashion, with a goal of having production ready upstream.

Hardware List

Our CI system is composed of multiple Intel machines spanning many generations and display types. You can find our full hardware list here:

Pre-Merge Testing

This is the crux of this CI system. We test each patch that goes in our driver (i915) or in the DRM drivers test suite we use (IGT GPU Tools) before it lands in the repository and compare the results with the post-merge baseline (we filter out known bugs). This shifts the cost of integration on the people making the change and helps us avoid time-consuming bisection and reverts.

Since we accept patches through mailing lists, this is where you can find the results - they are sent out as a replies to the original mail. Here are the mailing lists we currently support:

Mailing List List Info Archive Patchwork info archive patchwork info archive patchwork info archive patchwork


You can check our pre-merge queue for (BAT only!) at

Intel-GFX-CI queue (kernel patches) has priority over IGT queue and will be drained first. Trybot is best-effort and has the lowest priority.

Git Trees Tested Post-Merge

We test many trees post-merge. Some of them are our baseline for pre-merge testing (drm-tip and IGT GPU Tools), while the others helps us to make sure that what we submit upstream works and catch any potential issues cased by changes in other drivers/trees before we actually integrate with them.

The testing is sparse, i.e. we poll the branch for changes periodically, and if something has changed we run it through our CI, even if that means multiple commits/merges.

ISSUES Documentation Repository
drm-tip docs repo
IGT GPU Tools* docs repo
Linus’ tree ??? repo
linux-next docs repo
drm-intel-fixes docs repo
drm-intel-next-fixes docs repo
drm-intel-next-queued docs repo
drm-misc-fixes docs repo
drm-misc-next-fixes docs repo
drm-intel-media ??? repo
Dave Airlie’s branch ??? repo

*: IGT results are part of the drm-tip visualisation

Results Filtering And Bug Tracking

Bugs caught by our system are filled to the following bug trackers:

We also maintain a set of filters that tie those bugs to failures we see in our CI using machine names/types and patterns in dmesg/test output. This way we are able to filter known issues out of pre-merge results to decrease noise for developers, keep track of bug’s life cycle, and reproduction rate. The tool makes us able to confirm that a supposed fix is indeed fixing things.

You can browse the CI issues with the related data using our tool called cibuglog (updated hourly).

The Kinds Of Runs

Basic Acceptance Tests (aka BAT)

BAT is the most basic run in our portfolio - it consists of tests that help us ensure that the testing configuration is in a working condition. It gates all the sharded runs - if it breaks, then the build is deemed to broken to use more of the CI time on it. It utilizes fast-feedback.testlist, which you can find in the IGT repository.

Full IGT (aka sharded runs)

If the BAT run is succesful, then we continue with the sharded run. Much broader set of tests (everything you can find in IGT filtered through our blacklist.txt) is executed.

Idle Runs

Those runs are complementary to the ones above, used mainly to gather extra data and increase coverage. As the name suggests, they are run when CI would be idle otherwise (i.e. there nothing to test for the regular pre-merge/post-merge).