Skip to content

feat(kernel, kernel-headers): bump to 6.18.39.1 and enable TCP BBR3 - #18536

Open
Rachel Menge (rlmenge) wants to merge 3 commits into
4.0from
rlmenge/4.0/kernel-headers-kernel-6.18.39.1
Open

feat(kernel, kernel-headers): bump to 6.18.39.1 and enable TCP BBR3#18536
Rachel Menge (rlmenge) wants to merge 3 commits into
4.0from
rlmenge/4.0/kernel-headers-kernel-6.18.39.1

Conversation

@rlmenge

Copy link
Copy Markdown
Contributor

Summary

Bumps the Azure Linux kernel to 6.18.39.1 (from 6.18.31.1) and updates kernel-headers to match. BBR3 was added in this source update. Additionally, fork the kernel-headers to resolve the changelog and awkward overlays

Changes

kernel-headers forked to a local spec

  • Migrated from spec = { type = "upstream" } + six overlays to spec = { type = "local", path = "kernel-headers.spec" }, matching the pattern already used by kernel.
  • The Fedora upstream spec consumes a pre-built headers tarball and had increasing divergence (source swap, %build rewrite to make headers_install for native + cross arch, custom %{specrelease} scheme, static %changelog overlay). The delta had grown large enough that a maintained local spec is cheaper than tracking upstream through overlays.
  • overlays/ and the generated kernel-headers.azl.macros are removed; %{kextraversion}/%{azl_pkgrelease} are inlined as %defines alongside the same discipline used by kernel.spec.

Kernel source bump — 6.18.31.1 → 6.18.39.1

  • kernel.spec: source pin, %changelog.
  • base/comps/kernel/6.18-{x86_64,aarch64}-azl.config: refreshed for the new source.

TCP BBR3 enabled as a module

  • CONFIG_TCP_CONG_BBR3=m on x86_64 and aarch64.
  • Recorded in scripts/ci/kernel/kernel-config-checker/.../azl4-os-required-kernel-configs.json since the option is now present in the upgraded source.

…l spec

Migrate kernel-headers from the azldev overlay-on-Fedora approach to a

maintained local spec, mirroring base/comps/kernel.

The overlay burden had grown to the point where the effective spec was

no longer recognizably Fedora's: overlays swapped Source0 to the AZL

kernel tarball, rewrote %build to generate headers via headers_install

(Fedora's spec expects a pre-built headers tarball), redefined

%{specrelease} with kextraversion+azl_pkgrelease, and replaced

%autochangelog with a static block. A local spec is easier to reason

about and to keep in lockstep with the kernel spec.

NEVRA is unchanged from the pre-fork render: kernel-headers-6.18.31-1.1.azl4

(specversion=6.18.31, kextraversion=1, azl_pkgrelease=1). The five overlays

and the auto-generated kernel-headers.azl.macros are removed.
Bump the AZL kernel source tarball to rolling-lts/azl4/6.18.39.1 and

update kernel + kernel-headers specs/configs to match. NEVRA:

  kernel-6.18.39-1.1.azl4, kernel-headers-6.18.39-1.1.azl4

(specversion=6.18.39, kextraversion=1, azl_pkgrelease=1).
Copilot AI balanced review requested due to automatic review settings August 20, 2026 21:07
@rlmenge

Copy link
Copy Markdown
Contributor Author

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
2 pipeline(s) were filtered out due to trigger conditions.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the kernel stack to 6.18.39.1, enables BBR3, and converts kernel-headers to a local component spec.

Changes:

  • Bumps kernel and kernel-headers sources to 6.18.39.1.
  • Enables BBR3 as a module on x86_64 and ARM64.
  • Replaces kernel-headers overlays with a local spec.

Reviewed changes

Copilot reviewed 20 out of 22 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
specs/k/kernel/sources Updates rendered kernel source checksum.
specs/k/kernel/kernel.spec Updates rendered version, release, and changelog.
specs/k/kernel/6.18-x86_64-azl.config Enables BBR3 on x86_64.
specs/k/kernel/6.18-aarch64-azl.config Refreshes ARM64 configuration and enables BBR3.
specs/k/kernel-headers/sources Replaces headers archive with kernel source.
specs/k/kernel-headers/kernel-headers.spec Renders the new local headers spec.
specs/k/kernel-headers/kernel-headers.azl.macros Removes obsolete generated macros.
scripts/ci/kernel/kernel-config-checker/kernel_config_checker/kernel_configs_json/azl4-os-required-kernel-configs.json Requires BBR3 modules on both architectures.
locks/kernel.lock Refreshes the kernel input fingerprint.
locks/kernel-headers.lock Converts the lock to local-spec inputs.
base/comps/kernel/sources Pins the updated kernel archive.
base/comps/kernel/kernel.spec Bumps the kernel version and release.
base/comps/kernel/kernel.comp.toml Updates the kernel source declaration.
base/comps/kernel/6.18-x86_64-azl.config Enables BBR3 on x86_64.
base/comps/kernel/6.18-aarch64-azl.config Refreshes ARM64 configuration and enables BBR3.
base/comps/kernel-headers/overlays/0005-build-generate-native-cross.overlay.toml Removes migrated build/install overlays.
base/comps/kernel-headers/overlays/0004-use-azl-kernel-tarball-source.overlay.toml Removes the migrated source overlay.
base/comps/kernel-headers/overlays/0003-add-make-build-dependency.overlay.toml Removes migrated dependency overlays.
base/comps/kernel-headers/overlays/0002-set-specrelease-kextraversion-pkgrelease.overlay.toml Removes the migrated release overlay.
base/comps/kernel-headers/overlays/0001-set-specversion-3-part.overlay.toml Removes migrated version overlays.
base/comps/kernel-headers/kernel-headers.spec Adds the maintained local headers spec.
base/comps/kernel-headers/kernel-headers.comp.toml Switches kernel-headers to the local spec.

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread base/comps/kernel-headers/kernel-headers.comp.toml

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a couple minor suggestions but overall LGTM

# into Version:, Release:, and the extracted source tree name.
%define kextraversion 1

# define buildid .local

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion(non-blocking):
upstream's specrelease is (e.g.) 100%{?buildid}%{?dist}. The %buildid is clearly intended to be used by uncommenting this macro define, and I don't think there's any reason that we should diverge from upstream on this - what do you think about adding %{?buildid} back into our specrelease macro (here and in the kernel spec)?

@@ -15,13 +15,13 @@

# AZL: RPM release counter. Bump for rebuilds without a version change.
%define azl_pkgrelease 1

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion(non-blocking):
if i'm reading both this and the kernel spec files correctly, this is identical to upstream's pkgrelease macro (and in the kernel spec, pkgrelease is simply set to %{azl_pkgrelease}).

To clarify this (and in the kernel spec), can you add a sentence to this macro's comment saying something like "This corresponds to upstream's %{pkgrelease} macro, and we use it in the %{specrelease} macro instead of a hardcoded value".
Or if you changed our macro to simply be pkgrelease then it would be easy to just state "we use this in the %{specrelease} macro instead of a hardcoded value"

also, another minor suggestion, i feel like the ordering of this macro and %kextraversion macro should be swapped, because %kextraversion is the "more significant" digit in the %specrelease macro. What do you think about moving the %azl_pkgrelease define to below the %kextraversion define?

# AZL: 4th version component from the AZL kernel source (6.18.31.1). Flows
# AZL: 4th version component from the AZL kernel source (6.18.39.1). Flows
# into Version:, Release:, and the extracted source tree name.
%define kextraversion 1

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion(non-blocking):
The comment is confusing here, as well as having a redundant explicit version number. What do you think of this text instead:

Our kernel source comes to us with a non-standard 4-digit version number (e.g. A.B.C.D), so we remove the 4th number (e.g. D) and use the standard 3-digit version (e.g. A.B.C), and place the 4th number into the leading (dot-separated) position of our release value, in the %specrelease macro below. For example, if kernel source is version "A.B.C.D", our rpm (and uname -r) V-R would start with "A.B.C-D." plus the remaining release macro/arch values.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants