%global debug_package %{nil} %global nabu_product_version 1.4.1.1 %global nabu_release %{nabu_product_version}-alpha.1 %global uname_r 6.17.0-nabu-senemos-v%{nabu_release} Name: senemos-nabu-kernel-alpha Epoch: 1 Version: 1.17.0 Release: 0.9.alpha.v1.4.1.1%{?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_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 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 %description Experimental SENEMOS Linux 6.17 kernel channel for Xiaomi Pad 5, built from source inside COPR. Version v1.4.1.1 combines the reviewed Nabu v1.4.0.9 hardware line with the SM8150 Iris stateful V4L2 driver and opt-in persistent suspend diagnostics. It gates NVT double-tap reports during the pre-freezer suspend transition to avoid an immediate pm_wakeup_pending() rollback and the associated ADSP recovery failure. 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 6.17 v%{nabu_product_version} 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-10.test Conflicts: senemos-nabu-kernel-alpha Provides: nabu-kernel-fallback = %{epoch}:%{version}-%{release} %description -n senemos-nabu-kernel-alpha-fallback Fileless selector that installs v%{nabu_product_version} into the protected SENEMOS6 fallback slot while the Linux 7.2 SENEMOS7 entry remains canonical. %package -n senemos-nabu-kernel-alpha-core Summary: Nabu v%{nabu_release} kernel image, configuration and device tree Requires(posttrans): kmod Requires(posttrans): nabu-boot-integration >= 2.0.0-10.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 v%{nabu_release} 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 v%{nabu_release} alpha kernel, including qcom-iris for stateful SM8150 V4L2 decode. %prep %autosetup -n linux-nabu-v%{nabu_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-senemos-v%{nabu_release}' \ --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 'v%%s\n' '%{nabu_product_version}' > \ %{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-senemos-v%{nabu_release}"' \ %{buildroot}/boot/config-%{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} modinfo -F vermagic \ %{buildroot}%{_prefix}/lib/modules/%{uname_r}/kernel/drivers/media/platform/qcom/iris/qcom-iris.ko | \ grep -Fq '%{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 * 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.