GitHub ↗
Contents

Linux kernel#

The engine's NPU driver (amdxdna) and GPU driver (amdgpu) come from the kernel, so the kernel is pinned like every other dependency: third_party/linux is upstream torvalds/linux at a release tag, built into Debian packages by scripts/build-kernel.sh.

The pin#

Source torvalds/linux v7.3-rc4 (93f51579)
Config config/kernel/strixhalo.config: the config of the kernel Strix Halo ran on 2026-09-23 (7.2.0-next-20260821-unstable-ogc), plus config/kernel/strixhalo.fragment
Fragment DRM_ACCEL=y, DRM_ACCEL_AMDXDNA=m, DRM_AMDGPU=m, HSA_AMD=y, LOCALVERSION=-1bit, our own module-signing key
Kept current by .github/workflows/bump-linux.yml: daily, moves to the newest upstream tag (release or -rc)

The base config had amdxdna switched off, and the running system loaded a separately built amdxdna.ko. In the pinned kernel it is built in-tree from the same source.

Build#

# Debian/Ubuntu build deps:
#   clang lld llvm flex bison bc dwarves libelf-dev libdw-dev libssl-dev dpkg-dev debhelper rsync kmod cpio zstd
scripts/build-kernel.sh <out>          # uses third_party/linux (fetched at the pin, depth 1)
LINUX_SRC=<tree> scripts/build-kernel.sh <out>   # or an existing checkout of the pinned commit

It builds with LLVM (clang + lld), like the base config's kernel, out of tree in <out>/obj. It refuses to continue if olddefconfig dropped DRM_ACCEL_AMDXDNA=m, and writes linux-image, linux-headers, linux-libc-dev (and -dbg) packages into <out>. It installs nothing.

Verified 2026-09-23 on a 256-core build box (Ubuntu 24.04, clang 18): the source was the v7.3-rc4 tarball from git.kernel.org, whose embedded commit id was checked to be 93f51579 before building. The image package contains vmlinuz-7.3.0-rc4-1bit, amdxdna.ko.xz and amdgpu.ko.xz.

Installing (deliberate, needs a reboot)#

A reboot stops every NPU and GPU job on the machine, so installation is a separate step, never part of a build:

sudo apt install ./linux-image-7.3.0-rc4-1bit_*.deb ./linux-headers-7.3.0-rc4-1bit_*.deb
# keep the previous kernel as a GRUB entry to fall back to, then reboot

After the reboot, rerun the hardware tests: amdxdna loads, tests/npu_lane_e2e.sh (24/24) and tests/serve_e2e.sh on every device.

View this page's source on GitHub ↗