* Update linux-ptl to 7.1.2.arch3 Refresh the linux-ptl package against Arch Linux 7.1.2.arch3-1 sources and config. Keep the existing Panther Lake patch stack after revalidating each patch against upstream, with 0027 reduced to the remaining Panel Replay TRANS_PUSH policy delta now that Linux 7.1 carries the common infrastructure. * Drop linux-ptl PSR with VRR patch Remove the linux-ptl patch that allowed plain PSR/PSR2 with VRR. Failing logs showed Panel Replay disabled by quirk and VRR triggering DSB poll errors followed by PSR idle timeouts. Upstream's VRR guard is the correct behavior for the plain PSR path; Panel Replay remains handled by the existing TRANS_PUSH policy patch. Validated with: ./bin/build --package linux-ptl * Update linux-ptl to 7.1.3.arch1
303 lines
9.7 KiB
Bash
303 lines
9.7 KiB
Bash
# Maintainer: Gaggory Tsai <gaggery.tsai@intel.com> Spencer Bull <Spencer.Bull@Dell.com>
|
|
# Based on Arch Linux linux package by Jan Alexander Steffens (heftig)
|
|
|
|
pkgbase=linux-ptl
|
|
pkgver=7.1.3.arch1
|
|
pkgrel=1
|
|
pkgdesc='Linux with Panther Lake hardware backports (SDCA audio, PSR2, Panel Replay SU)'
|
|
url='https://github.com/archlinux/linux'
|
|
arch=(
|
|
x86_64
|
|
)
|
|
license=(GPL-2.0-only)
|
|
makedepends=(
|
|
bc
|
|
binutils
|
|
cpio
|
|
gettext
|
|
glibc
|
|
libelf
|
|
libgcc
|
|
openssl
|
|
pahole
|
|
perl
|
|
python
|
|
rust
|
|
rust-bindgen
|
|
rust-src
|
|
tar
|
|
xxhash
|
|
xz
|
|
zlib
|
|
zstd
|
|
)
|
|
options=(
|
|
!debug
|
|
!strip
|
|
)
|
|
_srcname=linux-${pkgver%.*}
|
|
_srctag=v${pkgver%.*}-${pkgver##*.}
|
|
source=(
|
|
https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/${_srcname}.tar.{xz,sign}
|
|
$url/releases/download/$_srctag/linux-$_srctag.patch.zst{,.sig}
|
|
0017-ASoC-SDCA-Fix-NULL-pointer-dereference-in-sdca_jack_.patch
|
|
0019-drm-i915-psr-accept-early-transport-for-psr2.patch
|
|
0020-drm-i915-alpm-limit-pr-alpm-to-panel-replay.patch
|
|
0027-drm-i915-trans-push-frame-change-for-panel-replay.patch
|
|
0028-drm-i915-psr-exit-Panel-Replay-for-ALPM-lag.patch
|
|
0029-drm-edid-populate-monitor-range-from-displayid-adaptive-sync.patch
|
|
)
|
|
source_x86_64=(config.x86_64)
|
|
validpgpkeys=(
|
|
ABAF11C65A2970B130ABE3C479BE3E4300411886 # Linus Torvalds
|
|
647F28654894E3BD457199BE38DBBDC86092693E # Greg Kroah-Hartman
|
|
83BC8889351B5DEBBB68416EB8AC08600F108CDF # Jan Alexander Steffens (heftig)
|
|
)
|
|
b2sums=('b6466e2798627522f0339c670a223b21266f4d4ede39163867c0f122295e54c5d24093abb51d5c6c6c917de0cb199836e81f45f7c391a5cc138cac2a519438e8'
|
|
'SKIP'
|
|
'b402dbf0b29131c2c3fe80406c5560e3e1a5c1384d6a1ba670793b343d57300ec312da7d3a4f7b3f44a6615b015d7fbebb2c7df832a99aa0e1941faef0481baa'
|
|
'SKIP'
|
|
'b5c40077f538e67496f1c274774976d31c48af36a6bd0a5df570eddf097b18f79812ee811392534dae8b911dc1f2a9949d969f90ce4ad7bdf62692456908c1be'
|
|
'f893d63ef7b9e3ab05907117b561971a54c07422c46f7ec4511470b5dc81ab53815b6c73fac2b829fac43f4c480caa2f26741d604ad9ea5ecb460f7750f71635'
|
|
'217aed0e9dbb96ed845a1d686be7df3e27602600ab8b5fb663a54dbcd550c8e4bb2acce3bb8ed4d6ef268d5de1c6068d97d374de8ea2f208389a13dbb1ffa1c3'
|
|
'63339c2b7a073302c3e56148c1834fd9aed2adfcbb282c79fbc491c0013d9e16409cb46e3e3ff4d2cf6f39818b3873b449939e8d8c43acc664529a6e32229beb'
|
|
'4daaa96fac95436ad83ada07bb313ba1219b8b6c30f21b3d131d0f4731cd3739190c398b39ea9db636318b107b4ddd9c43ff7e15ac738d94dd2cfcc70d115264'
|
|
'c17328b6025bb55f229591506d7fff887f5da9580caf59e675dbaeee17447ef07254f70cf5282d6c46b4820a10724090a3e96b728f685dbbe26e1d08d17958d2')
|
|
b2sums_x86_64=('f08103d44e5506637ed115067c714e6184e0de538eea1c45a3d2ee8160a36d91755ca5f6cf1f4d7bc4500ed62bc69ca51fa21bef26a40c3a49c4e0f8df835c16')
|
|
|
|
# https://www.kernel.org/pub/linux/kernel/v7.x/sha256sums.asc
|
|
sha256sums=('be41c068e88f5242a19bccdbffbe077b18c47b45f627e2325504b4fab79dd1dc'
|
|
'SKIP'
|
|
'861ea54a40c1d25296422fd48eac2e02b46e0071b3d99a6c28555ae3acc8edd7'
|
|
'SKIP'
|
|
'167446c23001fe9d8dbe017e57a36f7f6e69f67a6b501ccbd9f4301ff08f8a47'
|
|
'a65fb17db3c5c44a9d1728d0bf182f20e0867eaabcdc20c76329e65d5cae2dd1'
|
|
'0ab145668a04b983b110b49fbd5a12f55c69106c7bb49cb968fff87392cc1c46'
|
|
'd4355299c1917a53b366e91c07e30bf595ade63654cfbca5ea8a2238730084a5'
|
|
'39530f920476e79578f41fbed94de825dd0e2285d578d1b5c5302e65e39b045f'
|
|
'3f6e98250b864125501a9968118861424977b3765eb4fcba7248735ed0b667ae')
|
|
|
|
export KBUILD_BUILD_HOST=archlinux
|
|
export KBUILD_BUILD_USER=$pkgbase
|
|
export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})"
|
|
|
|
prepare() {
|
|
cd $_srcname
|
|
|
|
echo "Setting version..."
|
|
echo "-$pkgrel" > localversion.10-pkgrel
|
|
echo "${pkgbase#linux}" > localversion.20-pkgname
|
|
|
|
local src
|
|
for src in "${source[@]}"; do
|
|
src="${src%%::*}"
|
|
src="${src##*/}"
|
|
src="${src%.zst}"
|
|
[[ $src = *.patch ]] || continue
|
|
echo "Applying patch $src..."
|
|
patch -Np1 < "../$src"
|
|
done
|
|
|
|
echo "Setting config..."
|
|
cp ../config.$CARCH .config
|
|
make olddefconfig
|
|
diff -u ../config.$CARCH .config || :
|
|
|
|
make -s kernelrelease > version
|
|
echo "Prepared $pkgbase version $(<version)"
|
|
}
|
|
|
|
build() {
|
|
cd $_srcname
|
|
make all
|
|
make -C tools/bpf/bpftool vmlinux.h feature-clang-bpf-co-re=1
|
|
}
|
|
|
|
_package() {
|
|
pkgdesc="The $pkgdesc kernel and modules"
|
|
depends=(
|
|
coreutils
|
|
initramfs
|
|
kmod
|
|
sof-firmware
|
|
)
|
|
optdepends=(
|
|
"$pkgbase-headers: headers and scripts for building modules"
|
|
'linux-firmware: firmware images needed for some devices'
|
|
'scx-scheds: to use sched-ext schedulers'
|
|
'wireless-regdb: to set the correct wireless channels of your country'
|
|
)
|
|
provides=(
|
|
KSMBD-MODULE
|
|
NTSYNC-MODULE
|
|
VIRTUALBOX-GUEST-MODULES
|
|
WIREGUARD-MODULE
|
|
)
|
|
replaces=(
|
|
virtualbox-guest-modules-arch
|
|
wireguard-arch
|
|
)
|
|
|
|
cd $_srcname
|
|
local modulesdir="$pkgdir/usr/lib/modules/$(<version)"
|
|
|
|
echo "Installing boot image..."
|
|
# systemd expects to find the kernel here to allow hibernation
|
|
# https://github.com/systemd/systemd/commit/edda44605f06a41fb86b7ab8128dcf99161d2344
|
|
install -Dm644 "$(make -s image_name)" "$modulesdir/vmlinuz"
|
|
|
|
# Used by mkinitcpio to name the kernel
|
|
echo "$pkgbase" | install -Dm644 /dev/stdin "$modulesdir/pkgbase"
|
|
|
|
echo "Installing modules..."
|
|
ZSTD_CLEVEL=19 make INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 \
|
|
DEPMOD=/doesnt/exist modules_install # Suppress depmod
|
|
|
|
# remove build link
|
|
rm "$modulesdir"/build
|
|
}
|
|
|
|
_package-headers() {
|
|
pkgdesc="Headers and scripts for building modules for the $pkgdesc kernel"
|
|
depends=(
|
|
binutils
|
|
glibc
|
|
libelf
|
|
libgcc
|
|
openssl
|
|
pahole
|
|
xxhash
|
|
zlib
|
|
zstd
|
|
)
|
|
provides=(LINUX-HEADERS)
|
|
|
|
cd $_srcname
|
|
local builddir="$pkgdir/usr/lib/modules/$(<version)/build"
|
|
|
|
local karch
|
|
case $CARCH in
|
|
x86_64) karch=x86 ;;
|
|
*) echo "Unknown CARCH $CARCH"; exit 1 ;;
|
|
esac
|
|
|
|
echo "Installing build files..."
|
|
install -Dt "$builddir" -m644 .config Makefile Module.symvers System.map \
|
|
localversion.* version vmlinux tools/bpf/bpftool/vmlinux.h
|
|
install -Dt "$builddir/kernel" -m644 kernel/Makefile
|
|
install -Dt "$builddir/arch/$karch" -m644 arch/$karch/Makefile
|
|
cp -t "$builddir" -a scripts
|
|
ln -srt "$builddir" "$builddir/scripts/gdb/vmlinux-gdb.py"
|
|
|
|
if [[ $(scripts/config -s CONFIG_HAVE_STACK_VALIDATION) = y ]]; then
|
|
install -Dt "$builddir/tools/objtool" tools/objtool/objtool
|
|
fi
|
|
|
|
if [[ $(scripts/config -s CONFIG_DEBUG_INFO_BTF_MODULES) = y ]]; then
|
|
install -Dt "$builddir/tools/bpf/resolve_btfids" tools/bpf/resolve_btfids/resolve_btfids
|
|
fi
|
|
|
|
echo "Installing headers..."
|
|
cp -t "$builddir" -a include
|
|
cp -t "$builddir/arch/$karch" -a arch/$karch/include
|
|
install -Dt "$builddir/arch/$karch/kernel" -m644 arch/$karch/kernel/asm-offsets.s
|
|
|
|
install -Dt "$builddir/drivers/md" -m644 drivers/md/*.h
|
|
install -Dt "$builddir/net/mac80211" -m644 net/mac80211/*.h
|
|
|
|
# https://bugs.archlinux.org/task/13146
|
|
install -Dt "$builddir/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h
|
|
|
|
# https://bugs.archlinux.org/task/20402
|
|
install -Dt "$builddir/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h
|
|
install -Dt "$builddir/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h
|
|
install -Dt "$builddir/drivers/media/tuners" -m644 drivers/media/tuners/*.h
|
|
|
|
# https://bugs.archlinux.org/task/71392
|
|
install -Dt "$builddir/drivers/iio/common/hid-sensors" -m644 drivers/iio/common/hid-sensors/*.h
|
|
|
|
echo "Installing KConfig files..."
|
|
find . -name 'Kconfig*' -exec install -Dm644 {} "$builddir/{}" \;
|
|
|
|
echo "Installing Rust files..."
|
|
if [[ $(scripts/config -s CONFIG_RUST) = y ]]; then
|
|
install -Dt "$builddir/rust" -m644 rust/*.rmeta
|
|
install -Dt "$builddir/rust" rust/*.so
|
|
fi
|
|
|
|
echo "Installing unstripped VDSO..."
|
|
make INSTALL_MOD_PATH="$pkgdir/usr" vdso_install \
|
|
link= # Suppress build-id symlinks
|
|
|
|
echo "Removing unneeded architectures..."
|
|
local arch
|
|
for arch in "$builddir"/arch/*/; do
|
|
[[ $arch = */$karch/ ]] && continue
|
|
echo "Removing $(basename "$arch")"
|
|
rm -r "$arch"
|
|
done
|
|
|
|
echo "Removing documentation..."
|
|
rm -r "$builddir/Documentation"
|
|
|
|
echo "Removing broken symlinks..."
|
|
find -L "$builddir" -type l -printf 'Removing %P\n' -delete
|
|
|
|
echo "Removing loose objects..."
|
|
find "$builddir" -type f -name '*.o' -printf 'Removing %P\n' -delete
|
|
|
|
echo "Stripping build tools..."
|
|
local file
|
|
while read -rd '' file; do
|
|
case "$(file -Sib "$file")" in
|
|
application/x-sharedlib\;*) # Libraries (.so)
|
|
strip -v $STRIP_SHARED "$file" ;;
|
|
application/x-archive\;*) # Libraries (.a)
|
|
strip -v $STRIP_STATIC "$file" ;;
|
|
application/x-executable\;*) # Binaries
|
|
strip -v $STRIP_BINARIES "$file" ;;
|
|
application/x-pie-executable\;*) # Relocatable binaries
|
|
strip -v $STRIP_SHARED "$file" ;;
|
|
esac
|
|
done < <(find "$builddir" -type f -perm -u+x ! -name vmlinux -print0)
|
|
|
|
echo "Stripping vmlinux..."
|
|
strip -v $STRIP_STATIC "$builddir/vmlinux"
|
|
|
|
echo "Adding symlink..."
|
|
mkdir -p "$pkgdir/usr/src"
|
|
ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase"
|
|
}
|
|
|
|
_package-docs() {
|
|
pkgdesc="Documentation for the $pkgdesc kernel"
|
|
|
|
cd $_srcname
|
|
local builddir="$pkgdir/usr/lib/modules/$(<version)/build"
|
|
|
|
echo "Installing documentation..."
|
|
local src dst
|
|
while read -rd '' src; do
|
|
dst="${src#Documentation/}"
|
|
dst="$builddir/Documentation/${dst#output/}"
|
|
install -Dm644 "$src" "$dst"
|
|
done < <(find Documentation -name '.*' -prune -o ! -type d -print0)
|
|
|
|
echo "Adding symlink..."
|
|
mkdir -p "$pkgdir/usr/share/doc"
|
|
ln -sr "$builddir/Documentation" "$pkgdir/usr/share/doc/$pkgbase"
|
|
}
|
|
|
|
pkgname=(
|
|
"$pkgbase"
|
|
"$pkgbase-headers"
|
|
)
|
|
for _p in "${pkgname[@]}"; do
|
|
eval "package_$_p() {
|
|
$(declare -f "_package${_p#$pkgbase}")
|
|
_package${_p#$pkgbase}
|
|
}"
|
|
done
|
|
|
|
# vim:set ts=8 sts=2 sw=2 et:
|