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).
CopilotAI balanced review requested due to automatic review settings August 20, 2026 21:07
@rlmenge

Copy link
Copy Markdown
ContributorAuthor

/azp run

@azure-pipelines

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

CopilotAI 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
FileDescription
specs/k/kernel/sourcesUpdates rendered kernel source checksum.
specs/k/kernel/kernel.specUpdates rendered version, release, and changelog.
specs/k/kernel/6.18-x86_64-azl.configEnables BBR3 on x86_64.
specs/k/kernel/6.18-aarch64-azl.configRefreshes ARM64 configuration and enables BBR3.
specs/k/kernel-headers/sourcesReplaces headers archive with kernel source.
specs/k/kernel-headers/kernel-headers.specRenders the new local headers spec.
specs/k/kernel-headers/kernel-headers.azl.macrosRemoves obsolete generated macros.
scripts/ci/kernel/kernel-config-checker/kernel_config_checker/kernel_configs_json/azl4-os-required-kernel-configs.jsonRequires BBR3 modules on both architectures.
locks/kernel.lockRefreshes the kernel input fingerprint.
locks/kernel-headers.lockConverts the lock to local-spec inputs.
base/comps/kernel/sourcesPins the updated kernel archive.
base/comps/kernel/kernel.specBumps the kernel version and release.
base/comps/kernel/kernel.comp.tomlUpdates the kernel source declaration.
base/comps/kernel/6.18-x86_64-azl.configEnables BBR3 on x86_64.
base/comps/kernel/6.18-aarch64-azl.configRefreshes ARM64 configuration and enables BBR3.
base/comps/kernel-headers/overlays/0005-build-generate-native-cross.overlay.tomlRemoves migrated build/install overlays.
base/comps/kernel-headers/overlays/0004-use-azl-kernel-tarball-source.overlay.tomlRemoves the migrated source overlay.
base/comps/kernel-headers/overlays/0003-add-make-build-dependency.overlay.tomlRemoves migrated dependency overlays.
base/comps/kernel-headers/overlays/0002-set-specrelease-kextraversion-pkgrelease.overlay.tomlRemoves the migrated release overlay.
base/comps/kernel-headers/overlays/0001-set-specversion-3-part.overlay.tomlRemoves migrated version overlays.
base/comps/kernel-headers/kernel-headers.specAdds the maintained local headers spec.
base/comps/kernel-headers/kernel-headers.comp.tomlSwitches kernel-headers to the local spec.

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

Comment threadbase/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 freeto 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

@rlmenge@ddstreetmicrosoft