kernel: build for the cores the phone has, pkgrel 102

The FP6 is 4x Cortex-A520 + 4x Cortex-A720 and this image boots nothing
else, so pass the compiler KCFLAGS="-march=armv8.6-a+fp16fml+aes+sha3+sm4
-mtune=cortex-a720". The stock arm64 build gives the compiler no arch flag
at all (so one image can boot any Armv8 board).

The string is what `gcc -march=native` derives on the phone, re-based on
armv8.6-a so clang can express the same set (clang has no flagm2/rcpc2/
frintts tokens; it reaches them through the architecture level). 8.6 is the
highest level whose mandatory set the phone exposes: 8.7 would assume WFxT
and 9.x SVE2, and neither is in its hwcaps or ID registers. clang emits
identical code for this and for -mcpu=cortex-a720+nosve+nomemtag; the
difference is only which system features (SPE, ETE, TRBE, FPAC) it knows
about, none of which generate code.

Verified on eef717f978f1 with the aport config: builds with zero warnings,
same module set as r100 (417), compat vDSO untouched, boots the dev phone
with a clean dmesg and a GREEN selftest. Record:
fp6 journal/base/captures/2026-09-05-mcpu-a720-verification.md.
This commit is contained in:
Jorijn van der Graaf 2026-09-06 00:02:19 +02:00
commit a2f5de9de0
Signed by: jorijnvdgraaf
GPG key ID: 2937E59CDCC1BCFB
4 changed files with 30 additions and 4 deletions

View file

@ -8,7 +8,7 @@ _flavor="postmarketos-qcom-milos"
pkgname=linux-$_flavor
pkgver=7.2.0
# always sorts above the upstream aport (r0..r99)
pkgrel=101
pkgrel=102
pkgdesc="Milos mainline kernel + Catcrafts FP6 bring-up carries (combined-stable)"
arch="aarch64"
_carch="arm64"
@ -57,7 +57,14 @@ prepare() {
build() {
unset LDFLAGS
# Build for the cores this image runs on: 4x Cortex-A520 + 4x Cortex-A720.
# The stock arm64 build gives the compiler no arch flag so one image boots
# any Armv8 board; this one boots the FP6. armv8.6-a is the highest level
# whose mandatory set the phone exposes (8.7 would assume WFxT, 9.x SVE2;
# neither is in its hwcaps); +fp16fml+aes+sha3+sm4 are the optional
# extensions it has, the same set `gcc -march=native` derives on the phone.
make ARCH="$_carch" LLVM=1 \
KCFLAGS="-march=armv8.6-a+fp16fml+aes+sha3+sm4 -mtune=cortex-a720" \
KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-$_flavor"
}