%global debug_package %{nil} %global nabu_source_release 1.4.1.0-alpha.1 %global nabu_build_stamp %(tr -d '\n' < %{_sourcedir}/nabu-build-stamp) %global uname_r 6.17.0-%{nabu_build_stamp} Name: senemos-nabu-kernel-alpha Epoch: 1 Version: 6.17.0 Release: %{nabu_build_stamp}%{?dist} Summary: Source-built SENEMOS Linux 6.17 alpha kernel for Xiaomi Pad 5 License: GPL-2.0-only AND MIT URL: https://github.com/MCC45TR/nabu-linux-kernel Source0: linux-nabu-v%{nabu_source_release}.tar.zst Source1: nabu-kernel-update Source2: nabu-kernel-update.service Source3: nabu-kernel-update.timer Source4: 90-nabu-kernel-update.preset Source5: 91-nabu-late-xhci.conf Source6: 90-nabu-late-xhci.conf Source7: nabu-build-stamp BuildRequires: bc BuildRequires: bison BuildRequires: clang BuildRequires: dwarves BuildRequires: elfutils-libelf-devel BuildRequires: flex BuildRequires: kmod BuildRequires: lld BuildRequires: llvm BuildRequires: make BuildRequires: openssl-devel BuildRequires: perl BuildRequires: python3 BuildRequires: systemd-rpm-macros BuildRequires: zstd Requires: senemos-nabu-kernel-alpha-core = %{epoch}:%{version}-%{release} Requires: senemos-nabu-kernel-alpha-modules = %{epoch}:%{version}-%{release} Requires: dnf5 Requires: systemd Conflicts: senemos-nabu-kernel Conflicts: senemos-nabu-kernel-alpha-fallback Provides: senemos-nabu-kernel-alpha-build = %{nabu_build_stamp} %description Experimental SENEMOS Linux 6.17 kernel channel for Xiaomi Pad 5, built from source inside COPR. Version v1.4.1.0 combines the reviewed Nabu v1.4.0.9 hardware line with the SM8150 Iris stateful V4L2 driver and opt-in persistent suspend diagnostics. The Nabu-only CS35L41 power-down quirk accepts a missing PDN_DONE indication only after confirming that the amplifier is disabled and no protection fault is active. It remains an alpha release until physical boot, decode, suspend, audio, Wi-Fi, display and rollback tests pass on the tablet. %package -n senemos-nabu-kernel-alpha-fallback Summary: Linux %{uname_r} fallback for the Nabu 7.2 channel Requires: senemos-nabu-kernel-alpha-core = %{epoch}:%{version}-%{release} Requires: senemos-nabu-kernel-alpha-modules = %{epoch}:%{version}-%{release} Requires(posttrans): nabu-boot-integration >= 2.0.0-13.test Conflicts: senemos-nabu-kernel-alpha Provides: nabu-kernel-fallback = %{epoch}:%{version}-%{release} %description -n senemos-nabu-kernel-alpha-fallback Fileless selector that installs build %{nabu_build_stamp} into the protected SENEMOS6 fallback slot while the Linux 7.2 SENEMOS7 entry remains canonical. %package -n senemos-nabu-kernel-alpha-core Summary: Nabu %{uname_r} kernel image, configuration and device tree Requires(posttrans): kmod Requires(posttrans): nabu-boot-integration >= 2.0.0-13.test Provides: installonlypkg(kernel) Provides: kernel-uname-r Provides: kernel-nabu-alpha-core-uname-r Provides: nabu-iris-kernel = %{epoch}:%{version}-%{release} %description -n senemos-nabu-kernel-alpha-core Source-built Linux image and Nabu DTB. The DT exposes the SM8150 Iris1 video codec and reserves ramoops for persistent console and function-trace records. %package -n senemos-nabu-kernel-alpha-modules Summary: Nabu %{uname_r} loadable kernel modules Requires: senemos-nabu-kernel-alpha-core = %{epoch}:%{version}-%{release} Provides: installonlypkg(kernel) Provides: kernel-modules-uname-r %description -n senemos-nabu-kernel-alpha-modules Loadable modules for the SENEMOS Nabu %{uname_r} alpha kernel, including qcom-iris for stateful SM8150 V4L2 decode. %prep [[ '%{nabu_build_stamp}' =~ ^[0-9]{10}$ ]] || { printf 'Invalid Nabu kernel build stamp: %s\n' '%{nabu_build_stamp}' >&2 exit 1 } grep -Fxq '%{nabu_build_stamp}' %{SOURCE7} %autosetup -n linux-nabu-v%{nabu_source_release} %build export ARCH=arm64 export LLVM=1 export LLVM_IAS=1 export KBUILD_BUILD_USER=senemos export KBUILD_BUILD_HOST=copr mkdir -p build make O=build defconfig scripts/kconfig/merge_config.sh -m -O build build/.config arch/arm64/configs/sm8150.config scripts/config --file build/.config \ --set-str LOCALVERSION '-%{nabu_build_stamp}' \ --disable LOCALVERSION_AUTO make O=build olddefconfig make O=build %{?_smp_mflags} Image qcom/sm8150-xiaomi-nabu.dtb modules %install export ARCH=arm64 export LLVM=1 export LLVM_IAS=1 install -Dm0755 build/arch/arm64/boot/Image %{buildroot}/boot/vmlinuz-%{uname_r} install -Dm0644 build/System.map %{buildroot}/boot/System.map-%{uname_r} install -Dm0644 build/.config %{buildroot}/boot/config-%{uname_r} install -Dm0644 build/arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu.dtb \ %{buildroot}%{_prefix}/lib/modules/%{uname_r}/dtb/qcom/sm8150-xiaomi-nabu.dtb make O=build modules_install INSTALL_MOD_PATH=%{buildroot}%{_prefix} INSTALL_MOD_STRIP=1 DEPMOD=/bin/true rm -f %{buildroot}%{_prefix}/lib/modules/%{uname_r}/build rm -f %{buildroot}%{_prefix}/lib/modules/%{uname_r}/source /usr/sbin/depmod -b %{buildroot}%{_prefix} %{uname_r} install -Dm0644 /dev/null \ %{buildroot}%{_prefix}/lib/senemos-nabu/verbose-uki.d/%{uname_r} install -d -m0755 %{buildroot}%{_prefix}/lib/senemos-nabu/uki-version.d printf '%%s\n' '%{nabu_build_stamp}' > \ %{buildroot}%{_prefix}/lib/senemos-nabu/uki-version.d/%{uname_r} install -Dm0755 %{SOURCE1} %{buildroot}%{_libexecdir}/nabu-kernel-update install -Dm0644 %{SOURCE2} %{buildroot}%{_unitdir}/nabu-kernel-update.service install -Dm0644 %{SOURCE3} %{buildroot}%{_unitdir}/nabu-kernel-update.timer install -Dm0644 %{SOURCE4} %{buildroot}%{_presetdir}/90-nabu-kernel-update.preset install -Dm0644 %{SOURCE5} %{buildroot}%{_prefix}/lib/dracut/dracut.conf.d/90-nabu-omit-early-xhci.conf install -Dm0644 %{SOURCE6} %{buildroot}%{_prefix}/lib/modules-load.d/90-nabu-late-xhci.conf %check test -s %{buildroot}/boot/vmlinuz-%{uname_r} test -s %{buildroot}%{_prefix}/lib/modules/%{uname_r}/dtb/qcom/sm8150-xiaomi-nabu.dtb test -s %{buildroot}%{_prefix}/lib/modules/%{uname_r}/kernel/drivers/media/platform/qcom/iris/qcom-iris.ko grep -Fxq 'CONFIG_LOCALVERSION="-%{nabu_build_stamp}"' \ %{buildroot}/boot/config-%{uname_r} test "$(make O=build -s kernelrelease)" = '%{uname_r}' grep -Fxq 'CONFIG_VIDEO_QCOM_IRIS=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_PM_DEBUG=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_PM_SLEEP_DEBUG=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_DPM_WATCHDOG=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_PSTORE_FTRACE=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_FUNCTION_TRACER=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_INPUT_XIAOMI_NABU_TABLET_MODE=y' \ %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_INPUT_XIAOMI_NABU_KEYBOARD=y' \ %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_HID_XIAOMI=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_NFT_FIB_INET=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_RTC_DRV_PM8XXX=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq '# CONFIG_RTC_DRV_EFI is not set' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_RTC_HCTOSYS_DEVICE="rtc0"' \ %{buildroot}/boot/config-%{uname_r} grep -aFq 'Xiaomi Pad 5 Tablet Mode Switch' \ %{buildroot}/boot/vmlinuz-%{uname_r} grep -aFq 'xiaomi,nabu-keyboard' \ build/arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu.dtb grep -aFq 'cirrus,allow-missing-pdn-done' \ build/arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu.dtb grep -aFq 'PDN_DONE timeout accepted' \ build/sound/soc/codecs/snd-soc-cs35l41.ko grep -Fq '"BR SPK", "MultiMedia1 Playback"' \ arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu.dts grep -Fq '"TR SPK", "MultiMedia1 Playback"' \ arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu.dts grep -Fq '"BL SPK", "MultiMedia1 Playback"' \ arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu.dts grep -Fq '"TL SPK", "MultiMedia1 Playback"' \ arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu.dts grep -Fq 'unsigned int rx[2];' sound/soc/qcom/sm8150.c test "$(grep -Fc '{.rx = {4, 5}}' sound/soc/qcom/sm8150.c)" -eq 4 ! grep -Fq 'rendered EOS timed out before stream close' \ sound/soc/qcom/qdsp6/q6asm-dai.c modinfo -F vermagic \ %{buildroot}%{_prefix}/lib/modules/%{uname_r}/kernel/drivers/media/platform/qcom/iris/qcom-iris.ko | \ grep -Fq '%{uname_r}' grep -Fxq '%{nabu_build_stamp}' \ %{buildroot}%{_prefix}/lib/senemos-nabu/uki-version.d/%{uname_r} %post %systemd_post nabu-kernel-update.timer %preun %systemd_preun nabu-kernel-update.timer %postun %systemd_postun nabu-kernel-update.timer %posttrans if /usr/bin/nabu-regenerate-uki --verbose %{uname_r}; then install -d -m0755 /var/lib/nabu-kernel-update printf '%%s\n' '%{uname_r}' > /var/lib/nabu-kernel-update/installed-kernel else printf 'Warning: automatic Nabu alpha UKI generation failed for %%s; the timer will retry.\n' '%{uname_r}' >&2 fi %posttrans -n senemos-nabu-kernel-alpha-fallback if ! /usr/bin/nabu-regenerate-uki --fallback --verbose %{uname_r}; then printf 'Warning: automatic Nabu alpha fallback UKI generation failed for %%s.\n' '%{uname_r}' >&2 fi %postun -n senemos-nabu-kernel-alpha-core if [ "$1" -eq 0 ]; then /usr/sbin/depmod -a || : fi %files %{_libexecdir}/nabu-kernel-update %{_unitdir}/nabu-kernel-update.service %{_unitdir}/nabu-kernel-update.timer %{_presetdir}/90-nabu-kernel-update.preset %{_prefix}/lib/dracut/dracut.conf.d/90-nabu-omit-early-xhci.conf %{_prefix}/lib/modules-load.d/90-nabu-late-xhci.conf %files -n senemos-nabu-kernel-alpha-fallback %files -n senemos-nabu-kernel-alpha-core /boot/vmlinuz-%{uname_r} /boot/System.map-%{uname_r} /boot/config-%{uname_r} %{_prefix}/lib/modules/%{uname_r}/dtb/qcom/sm8150-xiaomi-nabu.dtb %{_prefix}/lib/modules/%{uname_r}/modules.* %{_prefix}/lib/senemos-nabu/verbose-uki.d/%{uname_r} %{_prefix}/lib/senemos-nabu/uki-version.d/%{uname_r} %files -n senemos-nabu-kernel-alpha-modules %{_prefix}/lib/modules/%{uname_r}/kernel/ %changelog * Fri Aug 28 2026 SENEMOS Project - 1:6.17.0-2608281924 - Restore the Android-compatible ASPRX1/ASPRX2 slot pair on all four CS35L41s. - Restore upstream Q6ASM EOS teardown semantics while retaining ACK queuing. - Keep the speaker protection DSP disabled until its firmware is packaged and validated with low-level hardware tests. * Fri Aug 28 2026 SENEMOS Project - 1:6.17.0-2608281335 - Replace product-style release identities with a YYMMDDHHMM build stamp. - Generate the exact timestamped kernel uname in COPR. * Fri Aug 28 2026 SENEMOS Project - 1:1.17.0-0.10.audio_pdn.v1.4.1.0 - Add a Nabu-only CS35L41 missing-PDN_DONE shutdown quirk. - Require GLOBAL_EN and AMP_EN clear with no protection fault before accepting timeout. - Preserve the existing alpha uname and SENEMOS6 slot for controlled replacement testing. * Thu Aug 27 2026 SENEMOS Project - 1:1.17.0-0.5.alpha.v1.4.1.0 - Build the complete Linux kernel, Nabu DTB and modules from source in COPR. - Integrate SM8150 Iris1 V4L2 decode with its matching firmware contract. - Add opt-in persistent ftrace, PM debug and device-PM watchdog support. - Generate the SENEMOS6 v1.4.1.0 fallback UKI in verbose diagnostic mode.