Skip to content

kernel: move amd64 to eve-kernel 6.18.46, hwe flavour for HV=k - #6421

Open
rucoder wants to merge 1 commit into
lf-edge:masterfrom
rucoder:rucoder/kernel-6.18.46
Open

rucoder wants to merge 1 commit into
lf-edge:masterfrom
rucoder:rucoder/kernel-6.18.46

Conversation

@rucoder

@rucoder rucoder commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Description

Moves every amd64 build to the new eve-kernel-amd64-v6.18.46-generic branch, and introduces the hwe config flavour for HV=k.

HV becomes an input to kernel selection alongside ZARCH and PLATFORM. It is already set in the main Makefile well before kernel-version.mk is included, so no reordering was needed. The resulting mapping:

ZARCH / PLATFORM / HV config flavour previously
amd64, generic, k hwe new
amd64, generic, kvm / xen / mini core v6.12.96 core
amd64, rt, any HV rt v6.12.96 rt
arm64, riscv64, any unchanged unchanged

hwe is an Ubuntu-generic derivation carrying the full module set (~4400 modules), which is what HV=k wants for broad server/edge hardware coverage. PLATFORM=rt deliberately still wins over HV, so an rt build never silently loses PREEMPT_RT by being built as hwe. arm64 and riscv64 are untouched — there is no 6.18 branch for them.

The kernel is pinned at daa483f487da, which is on lf-edge/eve-kernel-amd64-v6.18.46-generic; the core, rt and hwe flavour images are all published, so this requires no kernel rebuild.

Rootfs size cap

ROOTFS_MAXSIZE_MB is raised from 290 to 295 for the non-k, non-nvidia builds. The 6.18 core rootfs measures 306,147,328 B (291.96 MiB), roughly 2 MiB over the historical 290 MiB assertion, so HV=kvm fails that check without this. The binding constraint is the 300 MB rootfs partition on devices installed by pre-10.2.0 EVE, so 295 keeps 5 MB of margin against it rather than consuming the whole partition. HV=k is unaffected — it is already exempt at 10 GB — and its hwe rootfs measures 563,175,424 B (537.09 MiB).

How to test and validate this PR

Check that the flavour selection resolves correctly:

make HV=k   ZARCH=amd64 PLATFORM=generic kernel-tag   # ...-v6.18.46-generic-hwe-daa483f487da-gcc
make HV=kvm ZARCH=amd64 PLATFORM=generic kernel-tag   # ...-v6.18.46-generic-core-daa483f487da-gcc
make HV=kvm ZARCH=amd64 PLATFORM=rt      kernel-tag   # ...-v6.18.46-generic-rt-daa483f487da-gcc
make HV=kvm ZARCH=arm64 PLATFORM=generic kernel-tag   # unchanged: arm64 v6.1.155

Build and boot both amd64 flavours:

make HV=kvm ZARCH=amd64 live && make ACCEL=1 HV=kvm run-live
make HV=k   ZARCH=amd64 live && make ACCEL=1 HV=k   run-live

Both should reach a login shell with no kernel panic. Confirm the running kernel is the expected flavour — the console banner reads 6.18.46-linuxkit-core-daa483f487da for kvm and 6.18.46-hwe-daa483f487da for k.

Note that bridge and veth are =m in hwe where core has them =y. Both autoload on demand; on a booted HV=k system this can be confirmed with:

ip link add brtest type bridge && ip link add v0 type veth peer name v1
lsmod | grep -E '^(bridge|veth)'

What was verified, and what was not

Verified: both flavours build; both boot to a login shell under QEMU with zero panics/oops; bridge and veth autoload on the hwe kernel; the kvm rootfs fits the raised cap with 3 MB spare.

Not verified: HV=k was not driven far enough to exercise k3s / kubevirt / Longhorn convergence or EVE-created network instances, which needs a controller (Eden). PLATFORM=rt was checked only for correct tag resolution — it was not built or booted. Testing was QEMU-only; no real hardware.

Changelog notes

The amd64 kernel moves to 6.18.46. HV=k amd64 builds now use a large hardware-enablement kernel configuration derived from Ubuntu's generic config, substantially widening driver coverage. The rootfs size limit for non-k, non-nvidia amd64/arm64 builds rises from 290 MB to 295 MB, still within the 300 MB rootfs partition used by pre-10.2.0 installations.

PR Backports

  • 16.0-stable: No — moves the default amd64 kernel version and raises a shipping rootfs size guardrail; too invasive for a stable branch, and the 6.18 kernel branch is new.
  • 14.5-stable: No — same reason.
  • 13.4-stable: No — same reason.

Checklist

  • I've provided a proper description

  • I've added the proper documentation

  • I've tested my PR on amd64 device

  • I've tested my PR on arm64 device

  • I've written the test verification instructions

  • I've set the proper labels to this PR

  • I've checked the boxes above, or I've provided a good reason why I didn't check them.

Both amd64 flavours were built and booted under QEMU rather than on physical hardware, so the amd64 device box is left unchecked. arm64 is not touched by this change. No documentation change seemed warranted for a kernel pin plus a size-cap constant, but happy to add a note if a reviewer wants one.

Point every amd64 build at the eve-kernel-amd64-v6.18.46-generic branch.
HV=k selects the hwe config flavour, an Ubuntu-generic derivation with
the full module set; PLATFORM=rt keeps rt, and every other HV keeps core.
arm64 and riscv64 are untouched -- they have no 6.18 branch.

HV therefore becomes an input to kernel selection alongside ZARCH and
PLATFORM. It is set in the main Makefile well before kernel-version.mk is
included, so no reordering is needed.

Raise ROOTFS_MAXSIZE_MB from 290 to 295 for the non-k, non-nvidia builds.
The 6.18 core rootfs measures 306,147,328 B (291.96 MiB), roughly 2 MiB
over the historical 290 MiB check, so HV=kvm fails that assertion
without this. The binding constraint is the 300 MB rootfs partition on
devices installed by pre-10.2.0 EVE, so 295 retains 5 MB of margin
against it. HV=k is unaffected, being already exempt at 10 GB; its hwe
rootfs measures 563,175,424 B (537.09 MiB).

Verified on amd64 by building and booting both flavours under QEMU. kvm
boots 6.18.46-linuxkit-core-daa483f487da and k boots
6.18.46-hwe-daa483f487da, both to a login shell with no panics. bridge
and veth are =m in hwe where core has them =y; both autoload on demand,
so no explicit modprobe is required.

Signed-off-by: Mikhail Malyshev <mike.malyshev@gmail.com>
@rucoder
rucoder requested a review from eriknordmark as a code owner August 27, 2026 09:09
@rucoder
rucoder requested a review from rene August 27, 2026 09:10
Comment thread kernel-commits.mk
@@ -1,5 +1,6 @@
KERNEL_COMMIT_amd64_next_generic = a65e45508b45
KERNEL_COMMIT_amd64_v6.12.96_generic = 5ec53c5d956c

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.

Can we remove it from the list? That's the old one....

Comment thread Makefile
# nvidia platform requires more space
ifeq (, $(findstring nvidia,$(PLATFORM)))
ROOTFS_MAXSIZE_MB=290
ROOTFS_MAXSIZE_MB=295

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.

Is this the actual size (5MB larger?)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@eriknordmark rootfs is about 2 MiB larger, exact number is in "Changelog notes" section

@codecov

codecov Bot commented Aug 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 25.21%. Comparing base (5786db0) to head (3c0fb10).
⚠️ Report is 12 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #6421      +/-   ##
==========================================
+ Coverage   24.87%   25.21%   +0.34%     
==========================================
  Files         506      516      +10     
  Lines       93177    94893    +1716     
==========================================
+ Hits        23176    23931     +755     
- Misses      68180    68957     +777     
- Partials     1821     2005     +184     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

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