%global debug_package %{nil} %global __strip /bin/true %global nabu_build_stamp 2609141305 %global upstream_version 7.3-rc3 %global kernel_version 7.3.0-rc3 %global uname_r %{kernel_version}-nabu-senemos-mainline-unstable Name: senemos-nabu-kernel-mainline-unstable Version: 7.3~rc3 Release: %{nabu_build_stamp}.unstable%{?dist} Summary: Patch-layered latest-mainline SENEMOS kernel for Xiaomi Pad 5 License: GPL-2.0-only AND MIT URL: https://github.com/MCC45TR/nabu-linux-kernel ExclusiveArch: aarch64 Source0: https://git.kernel.org/torvalds/t/linux-%{upstream_version}.tar.gz Source1: upstream.sha256 Source2: patches.sha256 Source3: 91-nabu-mainline-unstable-omit-early-xhci.conf Source4: nabu-mainline-unstable-late-xhci.service Source5: nabu-build-stamp Source6: 90-nabu-mainline-unstable.preset Patch0001: 0001-arm64-dts-qcom-add-Xiaomi-Pad-5-Nabu.patch Patch0002: 0002-drm-panel-nt36523-add-Xiaomi-Nabu-CSOT-panel.patch Patch0003: 0003-senemos-add-Fedora-Rawhide-arm64-build-profile.patch Patch0004: 0004-drm-panel-port-Nabu-touch-synchronization-to-Linux-7.patch Patch0005: 0005-qcom-nabu-port-platform-services-and-seamless-DFPS-c.patch Patch0006: 0006-input-power-restore-Nabu-touch-and-fuel-gauge-driver.patch Patch0007: 0007-drm-nabu-fix-seamless-refresh-and-live-touch-sync-on.patch Patch0008: 0008-input-report-permanent-tablet-mode-on-Xiaomi-Nabu.patch Patch0009: 0009-nabu-carry-90-Hz-touch-policy-and-defer-optional-XHC.patch Patch0010: 0010-nabu-port-DT2W-stable-refresh-switching-and-charging.patch Patch0011: 0011-nabu-quarantine-90-Hz-and-preserve-Night-Light-modes.patch Patch0012: 0012-ASoC-qcom-port-Nabu-speaker-routing-and-stream-fixes.patch Patch0013: 0013-power-supply-port-PM8150B-SMB5-charging-support-to-7.patch Patch0014: 0014-arm64-dts-qcom-restore-SM8150-legacy-audio-topology.patch Patch0015: 0015-input-drm-adapt-Nabu-touch-lifecycle-to-Linux-7.2.patch Patch0016: 0016-senemos-align-Linux-7.2-ABI-and-build-identity.patch Patch0017: 0017-senemos-complete-Linux-7.2-Nabu-hardware-port.patch Patch0018: 0018-qcom-nabu-stabilize-Linux-7.2-hardware-bring-up.patch Patch0019: 0019-usb-qcom-stabilize-Nabu-host-CDC-reconnects.patch Patch0020: 0020-config-remove-release-kernel-self-tests.patch Patch0021: 0021-config-drop-runtime-test-drivers-from-release-builds.patch Patch0022: 0022-senemos-isolate-mainline-unstable-kernel-identity.patch Patch0023: 0023-media-qcom-add-Xiaomi-Nabu-camera-support.patch Patch0024: 0024-media-qcom-port-Nabu-SM8150-Iris-to-Linux-7.3.patch Patch0025: 0025-arm64-nabu-enable-RTC-and-persistent-suspend-diagnos.patch Patch0026: 0026-spi-geni-qcom-bound-timeout-recovery-state.patch Patch0027: 0027-Input-nt36523-bound-retries-while-SPI-recovers.patch Patch0028: 0028-Input-nt36523-bound-SPI-fault-recovery.patch Patch0029: 0029-input-gate-NVT-gestures-during-suspend-preparation.patch Patch0030: 0030-misc-fastrpc-harden-Nabu-SDSP-ownership-recovery.patch Patch0031: 0031-wifi-ath10k-keep-crash-teardown-local-after-transpor.patch Patch0032: 0032-wifi-ath10k-ignore-channel-less-survey-events.patch Patch0033: 0033-Bluetooth-hci_qca-demote-setup-only-framing-discard.patch Patch0034: 0034-arm64-dts-qcom-nabu-complete-WCN3990-supplies.patch Patch0035: 0035-dt-bindings-sound-cs35l41-allow-verified-missing-PDN.patch Patch0036: 0036-ASoC-cs35l41-bound-Nabu-power-down-recovery.patch Patch0037: 0037-ASoC-cs35l41-defer-accepted-Nabu-PDN-timeout-logging.patch Patch0038: 0038-ASoC-cs35l41-demote-accepted-Nabu-PDN-timeout.patch Patch0039: 0039-arm64-dts-qcom-nabu-describe-CS35L41-supplies.patch Patch0040: 0040-slimbus-qcom-ngd-make-duplicate-UP-work-idempotent.patch Patch0041: 0041-input-add-explicit-mode-Nabu-keyboard-cover-support.patch Patch0042: 0042-nabu-keep-keyboard-and-legacy-Iris-from-blocking-sus.patch Patch0043: 0043-power-supply-integrate-protected-LN8000-charging-on-.patch Patch0044: 0044-dt-bindings-power-ln8000-describe-unwired-input-NTC.patch Patch0045: 0045-power-supply-ln8000-disable-unwired-Nabu-input-NTC.patch Patch0046: 0046-power-supply-add-fail-safe-Nabu-thermal-charging-pol.patch Patch0047: 0047-dt-bindings-power-supply-add-SMB5-thermal-policy-dat.patch Patch0048: 0048-power-supply-align-Nabu-charging-policy-with-OEM-lim.patch Patch0049: 0049-arm64-dts-qcom-nabu-add-OEM-derived-charging-policy.patch Patch0050: 0050-dt-bindings-power-supply-describe-SMB5-connector-the.patch Patch0051: 0051-power-supply-stop-Nabu-charging-on-connector-overhea.patch Patch0052: 0052-power-supply-make-Nabu-charging-policy-fail-safe.patch Patch0053: 0053-power-supply-adapt-Nabu-charging-to-Linux-7.2-APIs.patch Patch0054: 0054-ASoC-cs35l41-include-property-API-for-PDN-policy.patch Patch0055: 0055-dt-bindings-power-validate-SMB5-Nabu-policy-arrays.patch Patch0056: 0056-usb-nabu-restore-dual-role-VBUS-operation-on-7.2.patch Patch0057: 0057-senemos-add-staged-7.2.2-HIL-validation-plan.patch Patch0058: 0058-senemos-prune-7.2.2-to-Nabu-hardware.patch Patch0059: 0059-senemos-retain-module-signing-helper-in-Nabu-config.patch Patch0060: 0060-arm64-dts-qcom-restore-Nabu-display-and-RTC-persiste.patch Patch0061: 0061-senemos-retain-nftables-for-Fedora-firewalld.patch Patch0062: 0062-senemos-restore-Fedora-zram-and-persistent-diagnosti.patch Patch0063: 0063-misc-fastrpc-restore-SM8150-SDSP-IOVA-windows.patch Patch0064: 0064-arm64-dts-qcom-fix-Nabu-charging-and-DRP-preference.patch Patch0065: 0065-Input-nt36523-drop-obsolete-MediaTek-SPI-setup.patch Patch0066: 0066-media-qcom-expose-CAMSS-sensors-as-each-one-binds.patch Patch0067: 0067-senemos-keep-shared-GPIO-proxy-built-in-for-Nabu-aud.patch Patch0068: 0068-arm64-dts-qcom-persist-Nabu-RTC-time-in-SDAM.patch Patch0069: 0069-senemos-activate-SELinux-in-Nabu-LSM-stack.patch Patch0070: 0070-senemos-classify-Nabu-SAR-separately-from-proximity.patch Patch0071: 0071-iio-light-add-Qualcomm-SSC-color-temperature-endpoin.patch Patch0072: 0072-senemos-enable-SSC-CCT-IIO-bridge-in-Nabu-profile.patch Patch0073: 0073-iio-light-invalidate-stale-SSC-color-temperature.patch Patch0074: 0074-media-qcom-stabilize-Nabu-camera-enumeration.patch Patch0075: 0075-ASoC-qcom-restore-Nabu-TDM-framing-and-CAMSS-DMA-wid.patch Patch0076: 0076-media-qcom-initialize-SM8150-CSI-PHY-lane-registers.patch Patch0077: 0077-senemos-keep-SM8150-video-clock-built-in.patch Patch0078: 0078-senemos-restore-Fedora-PSI-and-ALSA-sequencer.patch Patch0079: 0079-senemos-retain-SM8150-OSM-L3-interconnect.patch Patch0080: 0080-Bluetooth-restore-Fedora-RFCOMM-and-BNEP-protocols.patch Patch0081: 0081-drm-msm-a6xx-drain-CCU-before-TTBR0-switch.patch Patch0082: 0082-senemos-enable-multigenerational-LRU.patch Patch0083: 0083-drm-msm-align-A640-private-VMAs-to-64K.patch Patch0084: 0084-ASoC-qcom-keep-q6asm-setup-state-through-trigger-sto.patch Patch0085: 0085-HID-enable-UHID-for-Bluetooth-LE-input-devices.patch Patch0086: 0086-Input-nabu-use-explicit-modern-workqueue-modes.patch Patch0087: 0087-power-supply-qcom_smbx-use-explicit-per-CPU-workqueu.patch Patch0088: 0088-power-supply-ln8000-use-explicit-per-CPU-workqueue.patch Patch0089: 0089-drm-msm-preserve-firmware-dual-DSI-handoff-clocks.patch Patch0090: 0090-Input-nabu-arm-keyboard-wake-only-while-attached.patch Patch0091: 0091-HID-enable-hidraw-for-Nabu-pogo-protocol-diagnostics.patch Patch0092: 0092-Input-derive-Nabu-computer-mode-from-pogo-edge-proto.patch Patch0093: 0093-slimbus-qcom-ngd-retry-recovery-after-ADSP-SSR.patch Patch0094: 0094-slimbus-qcom-ngd-use-default-unbound-workqueue.patch Patch0095: 0095-ASoC-qcom-drop-unreliable-rendered-EOS-wait.patch Patch0096: 0096-input-nabu-sample-pogo-detect-state-instead-of-toggl.patch Patch0097: 0097-input-nabu-do-not-treat-controller-IRQ-as-presence.patch Patch0098: 0098-ASoC-qcom-pause-q6asm-capture-streams-on-stop.patch Patch0099: 0099-media-qcom-keep-CAMSS-frame-diagnostics-at-debug-lev.patch Patch0100: 0100-ASoC-wcd934x-do-not-report-normal-port-close-as-xrun.patch Patch0101: 0101-media-i2c-expose-Nabu-sensor-geometry-and-frame-rate.patch Patch0102: 0102-media-connect-Nabu-rear-flash-to-camera.patch Patch0103: 0103-media-qcom-remove-Nabu-camera-bring-up-logging.patch Patch0104: 0104-dm-add-Nabu-Android-wrappedkey_v0-data-path.patch Patch0105: 0105-ufs-qcom-preserve-Nabu-device-reference-clock-timing.patch Patch0106: 0106-crypto-enable-Android-data-compatibility-algorithms-.patch Patch0107: 0107-soc-qcom-ice-support-legacy-Keymaster-wrapped-keys.patch Patch0108: 0108-power-supply-qcom_smbx-fix-SMB5-USB-voltage-reportin.patch Patch0109: 0109-dt-bindings-eeprom-add-Belling-BL24SA64.patch Patch0110: 0110-dt-bindings-i2c-add-SM8150-CCI-compatible.patch Patch0111: 0111-drm-panel-expose-Xiaomi-Nabu-panel-revision.patch Patch0112: 0112-arm64-dts-qcom-expose-Nabu-camera-calibration-EEPROM.patch Patch0113: 0113-arm64-dts-qcom-make-Nabu-nodes-schema-compliant.patch Patch0114: 0114-media-qcom-complete-Nabu-VPU5-port-for-Linux-7.3.patch Patch0115: 0115-senemos-document-Linux-7.3-rc2-source-identity.patch Patch0116: 0116-senemos-pin-Iris-and-exclude-Venus-in-Nabu-profile.patch Patch0117: 0117-senemos-document-the-canonical-7.3.0-rc2-ABI.patch Patch0118: 0118-senemos-pin-Nabu-early-relocations-and-ESP32-S3-CDC.patch BuildRequires: bc BuildRequires: bison BuildRequires: clang BuildRequires: elfutils-libelf-devel BuildRequires: findutils BuildRequires: flex BuildRequires: gzip BuildRequires: git-core BuildRequires: kmod BuildRequires: lld BuildRequires: llvm BuildRequires: make BuildRequires: openssl BuildRequires: openssl-devel BuildRequires: perl BuildRequires: python3 BuildRequires: rsync BuildRequires: systemd-rpm-macros BuildRequires: xz BuildRequires: zstd Requires: nabu-kernel-maintenance-api >= 5 Requires: nabu-boot-integration >= 2.0.0-29.test Provides: kernel-nabu-core-uname-r Requires(posttrans): coreutils Requires(postun): kmod %description Official latest-mainline Linux (currently 7.3-rc2) plus a checksum-locked, ordered Xiaomi Pad 5 (nabu) patch series. This is a separate unstable family with its own kernel ABI, RPM ownership, maintenance queue and SENEMOS7U UKI namespace. It coexists with the stable mainline package, the validated 6.17 fallback and Android return entry. %prep [[ '%{nabu_build_stamp}' =~ ^[0-9]{10}$ ]] grep -Fxq '%{nabu_build_stamp}' %{SOURCE5} grep -Fq "linux-%{upstream_version}.tar.gz" %{SOURCE1} (cd %{_sourcedir} && sha256sum -c %{SOURCE1}) (cd %{_sourcedir} && sha256sum -c %{SOURCE2}) %autosetup -n linux-%{upstream_version} -S git_am %build export KBUILD_BUILD_USER=mcc45tr export KBUILD_BUILD_HOST=copr export KBUILD_BUILD_TIMESTAMP='@0' export KBUILD_BUILD_VERSION=1 export LOCALVERSION= make ARCH=arm64 LLVM=1 defconfig KCONFIG_CONFIG=.config scripts/kconfig/merge_config.sh -m -r \ .config senemos/configs/nabu-minimal.config # This package targets one SM8150 device. Avoid the Fedora general-purpose # module set and the legacy Venus driver; Nabu uses Iris for video acceleration. # Debug information and BTF are not part of the runtime-only unstable payload. senemos/configs/prune-nabu-config.sh .config make ARCH=arm64 LLVM=1 olddefconfig # Refresh auto.conf after merging the Nabu identity fragment. Otherwise the # immediately following release gate can retain defconfig's SCM suffix. make -s ARCH=arm64 LLVM=1 syncconfig rm -f include/config/kernel.release test "$(make -s ARCH=arm64 LLVM=1 kernelrelease)" = '%{uname_r}' make ARCH=arm64 LLVM=1 KALLSYMS_EXTRA_PASS=1 %{?_smp_mflags} Image \ qcom/sm8150-xiaomi-nabu-iris-camera.dtb modules %install install -Dm0644 arch/arm64/boot/Image \ %{buildroot}/boot/vmlinuz-%{uname_r} install -Dm0644 System.map %{buildroot}/boot/System.map-%{uname_r} install -Dm0644 .config %{buildroot}/boot/config-%{uname_r} make ARCH=arm64 LLVM=1 modules_install \ MODLIB=%{buildroot}%{_prefix}/lib/modules/%{uname_r} DEPMOD=/bin/true rm -f %{buildroot}%{_prefix}/lib/modules/%{uname_r}/{build,source} install -Dm0644 arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu-iris-camera.dtb \ %{buildroot}%{_prefix}/lib/modules/%{uname_r}/dtb/qcom/sm8150-xiaomi-nabu.dtb install -Dm0644 arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu-iris-camera.dtb \ %{buildroot}%{_prefix}/lib/modules/%{uname_r}/dtb/qcom/sm8150-xiaomi-nabu-iris-camera.dtb while IFS= read -r -d '' module; do llvm-strip --strip-debug "$module" scripts/sign-file sha512 certs/signing_key.pem certs/signing_key.x509 "$module" zstd -q -T1 -10 --rm "$module" done < <(find %{buildroot}%{_prefix}/lib/modules/%{uname_r}/kernel \ -type f -name '*.ko' -print0) /usr/sbin/depmod -b %{buildroot} -m %{_prefix}/lib/modules %{uname_r} install -Dm0644 %{SOURCE3} \ %{buildroot}%{_prefix}/lib/dracut/dracut.conf.d/91-nabu-mainline-unstable-omit-early-xhci.conf install -Dm0644 %{SOURCE4} \ %{buildroot}%{_unitdir}/nabu-mainline-unstable-late-xhci.service install -Dm0644 %{SOURCE6} \ %{buildroot}%{_presetdir}/90-nabu-mainline-unstable.preset 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} %check test -s %{buildroot}/boot/vmlinuz-%{uname_r} test -s %{buildroot}/boot/System.map-%{uname_r} test -s %{buildroot}/boot/config-%{uname_r} test -s %{buildroot}%{_prefix}/lib/modules/%{uname_r}/dtb/qcom/sm8150-xiaomi-nabu.dtb test -s %{buildroot}%{_prefix}/lib/modules/%{uname_r}/dtb/qcom/sm8150-xiaomi-nabu-iris-camera.dtb cmp -s \ %{buildroot}%{_prefix}/lib/modules/%{uname_r}/dtb/qcom/sm8150-xiaomi-nabu.dtb \ %{buildroot}%{_prefix}/lib/modules/%{uname_r}/dtb/qcom/sm8150-xiaomi-nabu-iris-camera.dtb test -d %{buildroot}%{_prefix}/lib/modules/%{uname_r}/kernel test ! -e %{buildroot}%{_prefix}/lib/modules/%{uname_r}/build test ! -e %{buildroot}%{_prefix}/lib/modules/%{uname_r}/source find %{buildroot}%{_prefix}/lib/modules/%{uname_r}/kernel \ -type f -name '*.ko.zst' -print -quit | grep -q . ! find %{buildroot}%{_prefix}/lib/modules/%{uname_r}/kernel \ -type f -name '*.ko' -print -quit | grep -q . grep -Fxq '%{nabu_build_stamp}' \ %{buildroot}%{_prefix}/lib/senemos-nabu/uki-version.d/%{uname_r} grep -Fxq 'ConditionPathExists=!/etc/initrd-release' \ %{buildroot}%{_unitdir}/nabu-mainline-unstable-late-xhci.service grep -Fq 'test ! -d /usr/lib/modules/$(uname -r)' \ %{buildroot}%{_unitdir}/nabu-mainline-unstable-late-xhci.service grep -Fxq 'enable nabu-mainline-unstable-late-xhci.service' \ %{buildroot}%{_presetdir}/90-nabu-mainline-unstable.preset grep -Fxq 'CONFIG_VIDEO_QCOM_IRIS=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq '# CONFIG_VIDEO_QCOM_VENUS is not set' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_VIDEO_QCOM_CAMSS=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_I2C_QCOM_CCI=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_EEPROM_AT24=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_SM_CAMCC_8150=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_SM_VIDEOCC_8150=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_DMABUF_HEAPS_SYSTEM=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_DMABUF_HEAPS_CMA=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_VIDEO_CN3927=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq '# CONFIG_RELR is not set' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_USB_XHCI_HCD=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_USB_XHCI_PLATFORM=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_USB_DWC3=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_USB_DWC3_QCOM=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_USB_DWC3_DUAL_ROLE=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_USB_ROLE_SWITCH=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_USB_GADGET=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_REGULATOR_QCOM_USB_VBUS=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_REGULATOR_QCOM_REFGEN=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_NF_TABLES=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_NFT_CT=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_NFT_REJECT_INET=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_ZRAM=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_ZRAM_DEF_COMP_ZSTD=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq '# CONFIG_RPMB is not set' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_USB_ACM=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_MODULE_SIG=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_GPIO_SHARED_PROXY=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_SECURITY_SELINUX=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_DEFAULT_SECURITY_SELINUX=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_QCOM_SSC_CCT=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_PSI=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_SND_SEQUENCER=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_INTERCONNECT_QCOM_OSM_L3=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_BT_RFCOMM=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_BT_BNEP=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_HIDRAW=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_UHID=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_BLK_INLINE_ENCRYPTION=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_DM_INLINECRYPT=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_DM_DEFAULT_KEY=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_DM_CRYPT=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_FS_ENCRYPTION=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_FS_ENCRYPTION_INLINE_CRYPT=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_CRYPTO_ADIANTUM=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_CRYPTO_HCTR2=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_F2FS_FS=m' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_F2FS_FS_SECURITY=y' %{buildroot}/boot/config-%{uname_r} grep -Fxq 'CONFIG_QCOM_INLINE_CRYPTO_ENGINE=y' %{buildroot}/boot/config-%{uname_r} grep -Eq '^[[:space:]]*\.name[[:space:]]*=[[:space:]]*"default-key"' \ drivers/md/dm-inlinecrypt.c grep -Fq 'ctx->key_type = BLK_CRYPTO_KEY_TYPE_HW_WRAPPED;' \ drivers/md/dm-inlinecrypt.c grep -A24 -F 'static int default_key_map' drivers/md/dm-inlinecrypt.c \ | grep -Fq 'bio_has_crypt_ctx(bio)' grep -A18 -F 'static struct target_type default_key_target' \ drivers/md/dm-inlinecrypt.c | grep -Fq 'DM_TARGET_PASSES_CRYPTO' recover_line=$(grep -n -F 'gpu->funcs->recover(gpu);' \ drivers/gpu/drm/msm/msm_gpu.c | cut -d: -f1) retire_line=$(grep -n -F 'retire_submits(gpu);' \ drivers/gpu/drm/msm/msm_gpu.c | head -n1 | cut -d: -f1) test "$recover_line" -lt "$retire_line" grep -A18 -F 'msm_gem_vm_bo_validate' drivers/gpu/drm/msm/msm_gem_vma.c \ | grep -Fq 'drm_gpuvm_bo_evict(vm_bo, false);' grep -Fxq 'CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,selinux,ipe,bpf"' \ %{buildroot}/boot/config-%{uname_r} grep -Fxq '# CONFIG_ACPI is not set' %{buildroot}/boot/config-%{uname_r} grep -Fxq '# CONFIG_PCI is not set' %{buildroot}/boot/config-%{uname_r} grep -Fxq '# CONFIG_ARCH_MEDIATEK is not set' %{buildroot}/boot/config-%{uname_r} grep -Fxq '# CONFIG_ARCH_ROCKCHIP is not set' %{buildroot}/boot/config-%{uname_r} grep -Fq 'vbus-supply = <&pm8150b_vbus>;' \ arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu.dts grep -Fq 'nvmem-cells = <&rtc_offset>;' \ arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu.dts ! grep -Fq 'allow-set-time;' \ arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu.dts grep -Fq 'IRQF_NO_AUTOEN' drivers/remoteproc/qcom_q6v5.c grep -Fq 'console-size = <0x200000>;' \ arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu-iris.dtsi grep -Fq 'ftrace-size = <0x200000>;' \ arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu.dts grep -Fq '#define FASTRPC_SDSP_IOVA_BASE' drivers/misc/fastrpc.c grep -Fq 'dev->bus_dma_limit = iova_start + FASTRPC_SDSP_IOVA_SIZE - 1;' \ drivers/misc/fastrpc.c ! grep -Fq 'lionsemi,allow-direct-charging' \ arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu.dts ! grep -Fq 'mod_delayed_work(system_wq, &chip->thermal_work' \ drivers/power/supply/qcom_smbx.c grep -Fq 'belling,bl24sa64' \ Documentation/devicetree/bindings/eeprom/at24.yaml grep -Fq 'qcom,sm8150-cci' \ Documentation/devicetree/bindings/i2c/qcom,i2c-cci.yaml grep -Fq 'static DEVICE_ATTR_RO(panel_revision);' \ drivers/gpu/drm/panel/panel-novatek-nt36523.c grep -Fq '/panel_revision' \ Documentation/ABI/testing/sysfs-driver-panel-novatek-nt36523 grep -A7 -F 'rear_camera_eeprom: eeprom@51' \ arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu-camera.dtsi \ | grep -Fq 'read-only;' grep -A7 -F 'front_camera_eeprom: eeprom@50' \ arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu-camera.dtsi \ | grep -Fq 'read-only;' ! grep -Fq 'SM8150_MMCX>, <&rpmhpd SM8150_MX' \ arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu-camera.dtsi grep -Fq 'ranges = <0 0xb100 0x100>;' arch/arm64/boot/dts/qcom/pm8150.dtsi iris_dir=drivers/media/platform/qcom/iris iris_gen1=$iris_dir/iris_hfi_gen1_command.c iris_response=$iris_dir/iris_hfi_gen1_response.c grep -Fq 'case HFI_BUFFER_INTERNAL_SCRATCH_2:' $iris_response grep -Fq 'inst->fw_buffer_sizes[buffer_type]' $iris_dir/iris_buffer.c grep -Fq 'Stateful decoders have no CAPTURE buffers' $iris_gen1 grep -Fq 'inst->domain == ENCODER' $iris_gen1 grep -Fq '#define IFACEQ_LEGACY_MAX_BUF_COUNT' $iris_dir/iris_hfi_queue.h grep -Fq 'struct iris_hfi_legacy_queue_table_header' $iris_dir/iris_hfi_queue.h grep -Fq 'return ALIGN(SFR_SIZE + iris_hfi_queue_used_size(core), SZ_1M);' \ $iris_dir/iris_hfi_queue.c grep -Fq 'iris_hfi_gen1_syscache_config(inst->core)' $iris_gen1 grep -Fq 'core1_load > core2_load' $iris_gen1 grep -Fq 'fmt.format = HFI_COLOR_FORMAT_P010;' $iris_gen1 grep -Fq 'The leading hidden frame in a VP9 superframe' $iris_response grep -Fq 'V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE' $iris_dir/iris_ctrls.c grep -Fq 'module_param(cached_capture, bool, 0444);' $iris_dir/iris_vb2.c grep -Fq 'frame_rate_down_count >= 3' $iris_dir/iris_vdec.c grep -Fq 'inst->streamoff_pending || inst->last_buffer_dequeued' $iris_response ! grep -Eq '^CONFIG_DEBUG_INFO_BTF(=y|=m)$' %{buildroot}/boot/config-%{uname_r} test "$(grep -c '=m$' %{buildroot}/boot/config-%{uname_r})" -lt 450 # Built-in platform prerequisites (I2C_QCOM_CCI, SM_CAMCC_8150 and DMA-BUF # heaps) are validated through the config checks above. Only loadable camera # and sensor drivers have module payloads to verify here. for module in qcom-iris qcom-camss cn3927 ov13b10 ov8856 at24 qcom-ssc-cct \ f2fs dm-crypt; do find %{buildroot}%{_prefix}/lib/modules/%{uname_r}/kernel \ -type f -name "$module.ko.zst" -print -quit | grep -q . done %post %systemd_post nabu-mainline-unstable-late-xhci.service marker=/var/lib/nabu-kernel-maintenance/late-xhci-service-migrated if [ ! -e "$marker" ]; then /usr/bin/systemctl preset nabu-mainline-unstable-late-xhci.service >/dev/null 2>&1 || : install -d -m0755 /var/lib/nabu-kernel-maintenance : > "$marker" fi %posttrans install -d -m0755 /var/lib/nabu-kernel-maintenance/pending.d temporary=$(mktemp /var/lib/nabu-kernel-maintenance/pending.d/.mainline-unstable.XXXXXX) printf '%%s\n' '%{uname_r}' > "$temporary" chmod 0644 "$temporary" mv -f "$temporary" /var/lib/nabu-kernel-maintenance/pending.d/mainline-unstable %preun %systemd_preun nabu-mainline-unstable-late-xhci.service %postun %systemd_postun nabu-mainline-unstable-late-xhci.service if [ "$1" -eq 0 ]; then /usr/sbin/depmod -a || : fi %files %{_prefix}/lib/dracut/dracut.conf.d/91-nabu-mainline-unstable-omit-early-xhci.conf %{_unitdir}/nabu-mainline-unstable-late-xhci.service %{_presetdir}/90-nabu-mainline-unstable.preset /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}/dtb/qcom/sm8150-xiaomi-nabu-iris-camera.dtb %{_prefix}/lib/modules/%{uname_r}/modules.* %{_prefix}/lib/modules/%{uname_r}/kernel/ %{_prefix}/lib/senemos-nabu/uki-version.d/%{uname_r} %changelog * Tue Sep 08 2026 mcc45tr - 7.3~rc2-%{nabu_build_stamp}.unstable - Pin the complete Nabu host-side USB path for ESP32-S3 CDC-ACM HIL. - Disable 7.3's new RELR default as one isolated pre-ramoops boot variable. - Fail the COPR build if either early-relocation or CDC invariants drift. * Tue Sep 08 2026 mcc45tr - 7.3~rc2-%{nabu_build_stamp}.unstable - Rebase the unstable channel onto Torvalds' official v7.3-rc2 tag. - Preserve Linux 7.3's Iris architecture while completing the legacy Nabu VPU5 protocol, buffer, VP9/P010, dual-core and suspend adaptations. - Keep the stable 7.2.x mainline package and SENEMOS7U unstable ABI side by side, with checksum-locked sources and an ordered 118-patch series. * Tue Sep 08 2026 mcc45tr - 7.2.3-%{nabu_build_stamp}.unstable - Expose both read-only Nabu camera calibration EEPROMs through at24. - Report the physical panel revision for automatic per-variant ICC selection. - Make the Nabu camera, PMIC NVRAM, thermal and pinctrl DT nodes schema-clean. * Sun Sep 06 2026 mcc45tr - 7.2.3-%{nabu_build_stamp}.unstable - Quiesce idle legacy VPU5 firmware before s2idle and initialize it lazily. - Reject suspend with an open codec session instead of corrupting its state. - Reset the HFI system-init completion before every firmware initialization. * Sun Sep 06 2026 mcc45tr - 7.2.3-%{nabu_build_stamp}.unstable - Keep stateful VPU5 decoder setup valid before CAPTURE buffers exist. - Restrict exact two-queue VB2 counts to the encoder domain. * Sun Sep 06 2026 mcc45tr - 7.2.3-%{nabu_build_stamp}.unstable - Report SMB5 USB input voltage exactly once after ADC5 IIO prescaling. - Fix the impossible 16x voltage shown through the PM8150B power-supply ABI. * Sun Sep 06 2026 mcc45tr - 7.2.3-%{nabu_build_stamp}.unstable - Use VIDEO.IR.1.2 firmware requirements for all VPU5 encoder scratch buffers. * Sun Sep 06 2026 mcc45tr - 7.2.3-%{nabu_build_stamp}.unstable - Add opt-in legacy Keymaster wrapped-key support for Nabu's pre-HWKM ICE. - Keep raw and wrapped key profiles mutually exclusive and fail closed on unsupported modern wrapped-key lifecycle operations. * Sun Sep 06 2026 mcc45tr - 7.2.3-%{nabu_build_stamp}.unstable - Enable modular Adiantum and HCTR2 for the Android 9-17 userdata matrix. - Keep Nabu's boot-critical AES-XTS/CTS, fscrypt and wrapped-key path unchanged. * Sun Sep 06 2026 mcc45tr - 7.2.3-%{nabu_build_stamp}.unstable - Preserve Xiaomi's Nabu-wide UFS reference-clock settling interval. - Give WDC and SanDisk storage the longer interval used by Android. - Keep every non-Nabu Qualcomm platform on the upstream timing path. * Sun Sep 06 2026 mcc45tr - 7.2.3-%{nabu_build_stamp}.unstable - Expose OV13B10 and OV8856 crop geometry and mode-derived frame intervals to libcamera so applications can enumerate the real sensor modes and rates. - Connect the rear flash LED to OV13B10 through the standard V4L2 flash class. - Remove OV8856 readback overhead and keep routine CAMSS frame diagnostics at debug level instead of filling the journal during camera use. - Restore F2FS and fscrypt, and add an Android options-format-v2 default-key target that routes wrappedkey_v0 only through Qualcomm hardware-wrapped ICE. * Sat Sep 05 2026 mcc45tr - 7.2.3-%{nabu_build_stamp}.unstable - Sample the active-low pogo detect GPIO on both edges instead of toggling a guessed keyboard state that could abort suspend while no cover is attached. * Sat Sep 05 2026 mcc45tr - 7.2.3-%{nabu_build_stamp}.unstable - Queue Qualcomm NGD audio recovery on the explicit default unbound workqueue instead of the deprecated system workqueue alias. * Sat Sep 05 2026 mcc45tr - 7.2.3-%{nabu_build_stamp}.unstable - Honor the VP9 firmware capture-buffer minimum after source change so vb2 allocates enough client buffers instead of sending an invalid count to VPU5. * Sat Sep 05 2026 mcc45tr - 7.2.3-%{nabu_build_stamp}.unstable - Prevent a transient empty-queue state from aborting Iris stateful decode before userspace receives the initial source-change event. - Keep the client capture queue independent from firmware-owned VP9 DPBs. - Derive keyboard-cover state from the OEM rising-edge pogo protocol. * Sat Sep 05 2026 mcc45tr - 7.2.2-%{nabu_build_stamp}.unstable - Arm the keyboard-cover wake IRQ only while a cover is attached. - Preserve active dual-DSI scanout clocks until the display driver owns them. - Treat expected DSI PHY probe deferral as debug state instead of an error. - Move LN8000 status and charge work to the explicit per-CPU system queue. * Sat Sep 05 2026 mcc45tr - 7.2.2-%{nabu_build_stamp}.unstable - Move SMB5 thermal policy polling off the deprecated system workqueue alias. - Keep charger policy work on the explicit per-CPU queue used by delayed work. * Sat Sep 05 2026 mcc45tr - 7.2.2-%{nabu_build_stamp}.unstable - Enable UHID so BlueZ can expose Bluetooth LE HID/HOGP mice and keyboards. * Fri Sep 04 2026 mcc45tr - 7.2.2-%{nabu_build_stamp}.unstable - Align A640 kernel-managed GPU VMAs to 64K after a decoded CCU resolve fault showed hardware access to the aligned page below a 4K-aligned UBWC buffer. * Fri Sep 04 2026 mcc45tr - 7.2.2-%{nabu_build_stamp}.unstable - Backport the complete upstream DRM/MSM context VM synchronization series. - Publish GEM objects only after reservation and VM bookkeeping are valid. * Fri Sep 04 2026 mcc45tr - 7.2.2-%{nabu_build_stamp}.unstable - Stop repeatedly validating pinned DRM/MSM objects on a growing evict list. * Fri Sep 04 2026 mcc45tr - 7.2.2-%{nabu_build_stamp}.unstable - Recover Adreno hardware before retiring hung submits and releasing their BOs. * Fri Sep 04 2026 mcc45tr - 7.2.2-%{nabu_build_stamp}.unstable - Restore the RFCOMM and BNEP protocols expected by standard BlueZ profiles. * Fri Sep 04 2026 mcc45tr - 7.2.2-%{nabu_build_stamp}.unstable - Restore the OSM L3 interconnect provider required by SM8150 CPU frequency. * Fri Sep 04 2026 mcc45tr - 7.2.2-%{nabu_build_stamp}.unstable - Restore Fedora PSI and the ALSA sequencer module removed by Nabu pruning. - Load optional XHCI only after switch-root so initrd modules-load stays clean. * Fri Sep 04 2026 mcc45tr - 7.2.2-%{nabu_build_stamp}.unstable - Keep the SM8150 video clock controller built in for Iris and camera probe. - Restore Nabu's proven Quaternary TDM framing so speaker PCM writes reach ADSP. - Preserve full CAMSS DMA addresses until each VFE backend programs hardware. - Program the SM8150 CSI PHY lane table so Nabu cameras can deliver frames. - Lock Nabu's static FastRPC accelerometer matrix into the release validation gate. * Thu Sep 03 2026 mcc45tr - 7.2.2-%{nabu_build_stamp}.unstable - Make Nabu CCI, CAMCC and DMA heaps available before userspace and probe timeout. - Add the missing OV13B10 Device Tree match so the rear camera can autoload. * Wed Sep 02 2026 mcc45tr - 7.2.2-%{nabu_build_stamp}.unstable - Publish validated SSC color temperature through the standard IIO ABI. * Wed Sep 02 2026 mcc45tr - 7.2.2-%{nabu_build_stamp}.unstable - Replace Fedora's general-purpose ARM64 module set with an Nabu-focused profile. - Disable legacy Venus in favor of Iris and omit runtime-unneeded debug information. - Use a faster module compression level for COPR test publications. - Carry the reviewed 6.17 RTC, SPI, input, FastRPC, wireless, audio and charging fixes. - Restore dual-role USB-C and PM8150B VBUS ownership for OTG HIL. - Restore the built-in DSI REFGEN supply and permit PM8150 RTC time persistence. - Let DNF replace this same-name kernel package instead of treating it as install-only. - Retain the nftables surface required by Fedora firewalld. - Restore Fedora zram, fix the ramoops console/ftrace split and omit unused RPMB. - Restore Nabu's proven 34-bit SM8150 SDSP IOVA allocation windows. - Enable the real PM8150B connector thermistor channel so SMB5 can probe. - Prefer USB-C sink operation while retaining automatic dual-role OTG. - Drop obsolete MediaTek-only setup from the Nabu NT36523 SPI driver. - Expose each working CAMSS sensor even if another camera fails to probe. - Keep direct LN8000 2:1 charging disabled until instrumented qualification. * Mon Aug 31 2026 mcc45tr - 7.2.2-%{nabu_build_stamp}.unstable - Port the ChengFangming/CFM880 Nabu camera and Iris/Venus work to Linux 7.2.2. - Ship the combined Iris-camera DTB as this unstable kernel family's canonical Nabu DTB. - Disable optional BTF generation to keep Linux 7.2 build tools compatible with Rawhide headers. - Pin kernel module installation to Fedora's /usr/lib/modules hierarchy. - Build official Linux 7.2.y in COPR and apply the checksum-locked Nabu series. - Isolate RPM, ABI, maintenance queue and SENEMOS7U boot-family ownership.