# The kernel matrix: one spec per line, as scripts/fetch-kernel.py resolves
# them. Read by scripts/check-kernels.py and by CI, so there is one list
# rather than one per pipeline file.
#
#   5.12          the newest release in that series
#   v6.8          that exact tag
#   latest        whatever the newest stable release is today
#   latest-rc     the newest release candidate
#
# The named series are the branch points where the block layer changed
# under us, not an arbitrary spread:
#
#   el7    CentOS 7 / RHEL 7, 3.10. The floor, and the only entry that
#          needs its own toolchain: scradle-build:el7, gcc 4.8.5. Also the
#          only one on the third return convention, a void make_request_fn
#   el8    RHEL 8 / Rocky 8, 4.18. Ordinary toolchain, make_request_fn
#   4.20   the oldest mainline entry, and the older of the two
#          interposition strategies: q->make_request_fn
#   5.4    the make_request_fn strategy on a kernel with real fleet
#          presence (Ubuntu 20.04)
#   5.9    the boundary: the first kernel with ->submit_bio in
#          block_device_operations, so the first on the newer strategy.
#          Both sides of this line are in the list on purpose
#   5.10   the other side of bdev_is_partition() and sysfs_emit()
#   5.12   where struct bio gained bi_bdev, and the last before
#          blk_alloc_disk()
#   5.15   add_disk() became __must_check int; bio_clear_polled() does not
#          exist yet and the driver failed to compile here until the shim
#   5.16   the boundary where blk_mq_submit_bio() started taking its own
#          queue reference. Both sides are in the list on purpose: 5.15
#          underflows q_usage_counter without the compat branch and 5.16
#          hangs on teardown with it, so the pair is what pins the version
#          test in compat.h to something measured
#   6.1    the long-term branch most enterprise distros track
#   6.6    blkdev_get_by_path() took blk_mode_t, and the point where the
#          open-by-path probes stop being distinguishable by compiling
#   6.12   the current long-term branch
#
# latest and latest-rc are what make this list stop needing edits: a
# scheduled pipeline naming them tests whatever shipped since it last ran.
el7
el8
4.20
5.4
5.9
5.10
5.12
5.15
5.16
6.1
6.6
6.12
latest
latest-rc
