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:
parent
d2ac96efc3
commit
a2f5de9de0
4 changed files with 30 additions and 4 deletions
|
|
@ -8,7 +8,7 @@ _flavor="postmarketos-qcom-milos"
|
||||||
pkgname=linux-$_flavor
|
pkgname=linux-$_flavor
|
||||||
pkgver=7.2.0
|
pkgver=7.2.0
|
||||||
# always sorts above the upstream aport (r0..r99)
|
# always sorts above the upstream aport (r0..r99)
|
||||||
pkgrel=101
|
pkgrel=102
|
||||||
pkgdesc="Milos mainline kernel + Catcrafts FP6 bring-up carries (combined-stable)"
|
pkgdesc="Milos mainline kernel + Catcrafts FP6 bring-up carries (combined-stable)"
|
||||||
arch="aarch64"
|
arch="aarch64"
|
||||||
_carch="arm64"
|
_carch="arm64"
|
||||||
|
|
@ -57,7 +57,14 @@ prepare() {
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
unset LDFLAGS
|
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 \
|
make ARCH="$_carch" LLVM=1 \
|
||||||
|
KCFLAGS="-march=armv8.6-a+fp16fml+aes+sha3+sm4 -mtune=cortex-a720" \
|
||||||
KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-$_flavor"
|
KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-$_flavor"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ maintainer="Robert Mader <robert.mader@collabora.com>"
|
||||||
pkgname=libcamera
|
pkgname=libcamera
|
||||||
_pkgver=0.7.2
|
_pkgver=0.7.2
|
||||||
pkgver=9999$_pkgver
|
pkgver=9999$_pkgver
|
||||||
pkgrel=9
|
pkgrel=10
|
||||||
pkgdesc="Linux camera framework"
|
pkgdesc="Linux camera framework"
|
||||||
url="https://libcamera.org/"
|
url="https://libcamera.org/"
|
||||||
arch="all"
|
arch="all"
|
||||||
|
|
@ -83,6 +83,13 @@ builddir="$srcdir/$pkgname-v$_pkgver"
|
||||||
# gstreamer tests fail
|
# gstreamer tests fail
|
||||||
# manual strip because ipa .sign files depend on the file contents- have to re-sign after strip
|
# manual strip because ipa .sign files depend on the file contents- have to re-sign after strip
|
||||||
options="!strip !check"
|
options="!strip !check"
|
||||||
|
# fp6-img: this package only ever runs on the FP6 (4x Cortex-A520 + 4x
|
||||||
|
# Cortex-A720), so tune for it. Spelled -march/-mtune, not -mcpu: GCC 16
|
||||||
|
# expands -mcpu=cortex-a720 into a +sve-bitperm token that binutils 2.45
|
||||||
|
# rejects at the assembler. +nosve+nomemtag: the FP6 exposes neither SVE nor
|
||||||
|
# MTE (no sve/mte hwcaps), and without them the code would SIGILL.
|
||||||
|
export CFLAGS="$CFLAGS -march=armv9.2-a+nosve+nomemtag -mtune=cortex-a720"
|
||||||
|
export CXXFLAGS="$CXXFLAGS -march=armv9.2-a+nosve+nomemtag -mtune=cortex-a720"
|
||||||
|
|
||||||
case "$CARCH" in
|
case "$CARCH" in
|
||||||
arm*|aarch64)
|
arm*|aarch64)
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ maintainer="Achill Gilgenast <achill@achill.org>"
|
||||||
pkgname=libqmi
|
pkgname=libqmi
|
||||||
pkgver=1.39.1_git20260808
|
pkgver=1.39.1_git20260808
|
||||||
_commit=30f3e998e6cbda364ac1bc73223de20561e6d555
|
_commit=30f3e998e6cbda364ac1bc73223de20561e6d555
|
||||||
pkgrel=100
|
pkgrel=101
|
||||||
pkgdesc="QMI modem protocol helper library"
|
pkgdesc="QMI modem protocol helper library"
|
||||||
url="https://www.freedesktop.org/wiki/Software/libqmi"
|
url="https://www.freedesktop.org/wiki/Software/libqmi"
|
||||||
arch="all"
|
arch="all"
|
||||||
|
|
@ -27,6 +27,12 @@ makedepends="
|
||||||
# fp6-img: crossdirect breaks meson compiler introspection (cc1 spawn
|
# fp6-img: crossdirect breaks meson compiler introspection (cc1 spawn
|
||||||
# failure), same as modemmanager; build under plain qemu.
|
# failure), same as modemmanager; build under plain qemu.
|
||||||
options="!pmb:crossdirect"
|
options="!pmb:crossdirect"
|
||||||
|
# fp6-img: this package only ever runs on the FP6 (4x Cortex-A520 + 4x
|
||||||
|
# Cortex-A720), so tune for it. Spelled -march/-mtune, not -mcpu: GCC 16
|
||||||
|
# expands -mcpu=cortex-a720 into a +sve-bitperm token that binutils 2.45
|
||||||
|
# rejects at the assembler. +nosve+nomemtag: the FP6 exposes neither SVE nor
|
||||||
|
# MTE (no sve/mte hwcaps), and without them the code would SIGILL.
|
||||||
|
export CFLAGS="$CFLAGS -march=armv9.2-a+nosve+nomemtag -mtune=cortex-a720"
|
||||||
subpackages="
|
subpackages="
|
||||||
$pkgname-dev
|
$pkgname-dev
|
||||||
$pkgname-doc
|
$pkgname-doc
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
maintainer="Achill Gilgenast <achill@achill.org>"
|
maintainer="Achill Gilgenast <achill@achill.org>"
|
||||||
pkgname=modemmanager
|
pkgname=modemmanager
|
||||||
pkgver=1.25.95_git20260709
|
pkgver=1.25.95_git20260709
|
||||||
pkgrel=100
|
pkgrel=101
|
||||||
_commit=d776ea38d29ca472a12323c1d45002ee19a66f57
|
_commit=d776ea38d29ca472a12323c1d45002ee19a66f57
|
||||||
pkgdesc="ModemManager library"
|
pkgdesc="ModemManager library"
|
||||||
url="https://www.freedesktop.org/wiki/Software/ModemManager"
|
url="https://www.freedesktop.org/wiki/Software/ModemManager"
|
||||||
|
|
@ -42,6 +42,12 @@ checkdepends="glib-dev py3-gobject3 py3-dbus"
|
||||||
# native builders, and none exercise the GNSS code our patches change) -
|
# native builders, and none exercise the GNSS code our patches change) -
|
||||||
# on-device validation is the real test.
|
# on-device validation is the real test.
|
||||||
options="!pmb:crossdirect !check"
|
options="!pmb:crossdirect !check"
|
||||||
|
# fp6-img: this package only ever runs on the FP6 (4x Cortex-A520 + 4x
|
||||||
|
# Cortex-A720), so tune for it. Spelled -march/-mtune, not -mcpu: GCC 16
|
||||||
|
# expands -mcpu=cortex-a720 into a +sve-bitperm token that binutils 2.45
|
||||||
|
# rejects at the assembler. +nosve+nomemtag: the FP6 exposes neither SVE nor
|
||||||
|
# MTE (no sve/mte hwcaps), and without them the code would SIGILL.
|
||||||
|
export CFLAGS="$CFLAGS -march=armv9.2-a+nosve+nomemtag -mtune=cortex-a720"
|
||||||
subpackages="
|
subpackages="
|
||||||
$pkgname-lang
|
$pkgname-lang
|
||||||
$pkgname-doc
|
$pkgname-doc
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue