From 5fd1185af602a39451c51250971af94a9665b127 Mon Sep 17 00:00:00 2001 From: Kyle Gospodnetich Date: Wed, 11 Feb 2026 13:43:09 -0800 Subject: [PATCH] fix: Add aarch64 fixes from Nobara --- nobara/kernel.spec | 41 +++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/nobara/kernel.spec b/nobara/kernel.spec index 40a9717..64c95e3 100644 --- a/nobara/kernel.spec +++ b/nobara/kernel.spec @@ -406,12 +406,12 @@ gcc ./scripts/sign-file.c -o ./scripts/sign-file -lssl -lcrypto # perf # make sure check-headers.sh is executable chmod +x tools/perf/check-headers.sh -%{perf_make} DESTDIR=$RPM_BUILD_ROOT all +%{perf_make} DESTDIR=%{buildroot} all # libperf %global libperf_make \ %{__make} %{?make_opts} EXTRA_CFLAGS="${RPM_OPT_FLAGS}" LDFLAGS="%{__global_ldflags}" %{?cross_opts} -C tools/lib/perf V=1 -%{libperf_make} DESTDIR=$RPM_BUILD_ROOT +%{libperf_make} DESTDIR=%{buildroot} %define make %{__make} %{?cross_opts} %{?make_opts} HOSTCFLAGS="%{?build_hostcflags}" HOSTLDFLAGS="%{?build_hostldflags}" @@ -468,14 +468,31 @@ popd %install -ImageName=$(make image_name | tail -n 1) +%ifarch aarch64 +# Build + install DTBs into /boot/dtb-%{kverstr} +mkdir -p %{buildroot}/boot/dtb-%{kverstr} +make %{?_smp_mflags} %{?llvm_build_env_vars} ARCH=arm64 dtbs +make %{?_smp_mflags} %{?llvm_build_env_vars} ARCH=arm64 dtbs_install \ + INSTALL_DTBS_PATH=%{buildroot}/boot/dtb-%{kverstr} + +# Also ship DTBs under /lib/modules/%{kverstr}/dtb (same contents, no extra nesting) +mkdir -p %{buildroot}/lib/modules/%{kverstr}/dtb +cp -a %{buildroot}/boot/dtb-%{kverstr}/. %{buildroot}/lib/modules/%{kverstr}/dtb/ +%endif + +ImageName=$(make KERNELRELEASE=%{kverstr} image_name | tail -n 1) mkdir -p %{buildroot}/boot cp -v $ImageName %{buildroot}/boot/vmlinuz-%{kverstr} chmod 755 %{buildroot}/boot/vmlinuz-%{kverstr} -ZSTD_CLEVEL=19 make %{?_smp_mflags} %{?llvm_build_env_vars} INSTALL_MOD_PATH=%{buildroot} INSTALL_MOD_STRIP=1 modules_install mod-fw= +ZSTD_CLEVEL=19 make %{?_smp_mflags} %{?llvm_build_env_vars} \ + KERNELRELEASE=%{kverstr} \ + INSTALL_MOD_PATH=%{buildroot} \ + INSTALL_MOD_STRIP=1 \ + modules_install mod-fw= + make %{?_smp_mflags} %{?llvm_build_env_vars} INSTALL_HDR_PATH=%{buildroot}/usr headers_install # prepare -devel files @@ -704,7 +721,7 @@ cp -v %{buildroot}/boot/vmlinuz-%{kverstr} %{buildroot}/lib/modules/%{kverstr}/ dd if=/dev/zero of=%{buildroot}/boot/initramfs-%{kverstr}.img bs=1M count=48 # perf tool binary and supporting scripts/binaries -%{perf_make} DESTDIR=$RPM_BUILD_ROOT lib=%{_lib} install-bin +%{perf_make} DESTDIR=%{buildroot} lib=%{_lib} install-bin # remove the 'trace' symlink. rm -f %{buildroot}%{_bindir}/trace @@ -717,11 +734,11 @@ rm -rf %{buildroot}/usr/lib/perf/examples rm -rf %{buildroot}/usr/lib/perf/include # python-perf extension -%{perf_make} DESTDIR=$RPM_BUILD_ROOT install-python_ext +%{perf_make} DESTDIR=%{buildroot} install-python_ext # perf man pages (note: implicit rpm magic compresses them later) mkdir -p %{buildroot}/%{_mandir}/man1 -%{perf_make} DESTDIR=$RPM_BUILD_ROOT install-man +%{perf_make} DESTDIR=%{buildroot} install-man # remove any tracevent files, eg. its plugins still gets built and installed, # even if we build against system's libtracevent during perf build (by setting @@ -735,7 +752,7 @@ rm -rf %{buildroot}%{_libdir}/traceevent rm -rf %{buildroot}%{_libdir}/libperf.a # kernel-tools -%{make} -C tools/power/cpupower DESTDIR=$RPM_BUILD_ROOT libdir=%{_libdir} mandir=%{_mandir} CPUFREQ_BENCH=false install +%{make} -C tools/power/cpupower DESTDIR=%{buildroot} libdir=%{_libdir} mandir=%{_mandir} CPUFREQ_BENCH=false install %find_lang cpupower cp cpupower.lang ../../ %ifarch x86_64 @@ -857,6 +874,14 @@ fi /lib/modules/%{kverstr}/vmlinuz /lib/modules/%{kverstr}/System.map /lib/modules/%{kverstr}/symvers.gz +%ifarch aarch64 +%dir /boot/dtb-%{kverstr} +%dir /lib/modules/%{kverstr}/dtb +/boot/dtb-%{kverstr}/* +/boot/dtb-%{kverstr}/*/* +/lib/modules/%{kverstr}/dtb/* +/lib/modules/%{kverstr}/dtb/*/* +%endif %files modules /lib/modules/%{kverstr}/