# All Global changes to build and install go here. # Per the below section about __spec_install_pre, any rpm # environment changes that affect %%install need to go # here before the %%install macro is pre-built. # Disable frame pointers %undefine _include_frame_pointers # Disable LTO in userspace packages. %global _lto_cflags %{nil} # Option to enable compiling with clang instead of gcc. %bcond_with toolchain_clang %if %{with toolchain_clang} %global toolchain clang %endif # Compile the kernel with LTO (only supported when building with clang). %bcond_with clang_lto %if %{with clang_lto} && %{without toolchain_clang} {error:clang_lto requires --with toolchain_clang} %endif # RPM macros strip everything in BUILDROOT, either with __strip # or find-debuginfo.sh. Make use of __spec_install_post override # and save/restore binaries we want to package as unstripped. %define buildroot_unstripped %{_builddir}/root_unstripped %define buildroot_save_unstripped() \ (cd %{buildroot}; cp -rav --parents -t %{buildroot_unstripped}/ %1 || true) \ %{nil} %define __restore_unstripped_root_post \ echo "Restoring unstripped artefacts %{buildroot_unstripped} -> %{buildroot}" \ cp -rav %{buildroot_unstripped}/. %{buildroot}/ \ %{nil} # The kernel's %%install section is special # Normally the %%install section starts by cleaning up the BUILD_ROOT # like so: # # %%__spec_install_pre %%{___build_pre}\ # [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "${RPM_BUILD_ROOT}"\ # mkdir -p `dirname "$RPM_BUILD_ROOT"`\ # mkdir "$RPM_BUILD_ROOT"\ # %%{nil} # # But because of kernel variants, the %%build section, specifically # BuildKernel(), moves each variant to its final destination as the # variant is built. This violates the expectation of the %%install # section. As a result we snapshot the current env variables and # purposely leave out the removal section. All global wide changes # should be added above this line otherwise the %%install section # will not see them. %global __spec_install_pre %{___build_pre} # Replace '-' with '_' where needed so that variants can use '-' in # their name. %define uname_suffix() %{lua: local flavour = rpm.expand('%{?1:+%{1}}') flavour = flavour:gsub('-', '_') if flavour ~= '' then print(flavour) end } # This returns the main kernel tied to a debug variant. For example, # kernel-debug is the debug version of kernel, so we return an empty # string. However, kernel-64k-debug is the debug version of kernel-64k, # in this case we need to return "64k", and so on. This is used in # macros below where we need this for some uname based requires. %define uname_variant() %{lua: local flavour = rpm.expand('%{?1:%{1}}') _, _, main, sub = flavour:find("(%w+)-(.*)") if main then print("+" .. main) end } # At the time of this writing (2019-03), RHEL8 packages use w2.xzdio # compression for rpms (xz, level 2). # Kernel has several large (hundreds of mbytes) rpms, they take ~5 mins # to compress by single-threaded xz. Switch to threaded compression, # and from level 2 to 3 to keep compressed sizes close to "w2" results. # # NB: if default compression in /usr/lib/rpm/redhat/macros ever changes, # this one might need tweaking (e.g. if default changes to w3.xzdio, # change below to w4T.xzdio): # # This is disabled on i686 as it triggers oom errors %ifnarch i686 %define _binary_payload w3T.xzdio %endif Summary: The Linux kernel %if 0%{?fedora} %define secure_boot_arch x86_64 %else %define secure_boot_arch x86_64 aarch64 s390x ppc64le %endif # Signing for secure boot authentication %ifarch %{secure_boot_arch} %global signkernel 1 %else %global signkernel 0 %endif # Sign modules on all arches %global signmodules 1 # Compress modules only for architectures that build modules %ifarch noarch %global zipmodules 0 %else %global zipmodules 1 %endif # Default compression algorithm %global compression xz %global compression_flags --compress %global compext xz %if 0%{?fedora} %define primary_target fedora %else %define primary_target rhel %endif # # genspec.sh variables # # kernel package name %global package_name kernel %global gemini 0 # Include Fedora files %global include_fedora 0 # Include RHEL files %global include_rhel 1 # Include RT files %global include_rt 1 # Include Automotive files %global include_automotive 1 # Provide Patchlist.changelog file %global patchlist_changelog 0 # Set released_kernel to 1 when the upstream source tarball contains a # kernel release. (This includes prepatch or "rc" releases.) # Set released_kernel to 0 when the upstream source tarball contains an # unreleased kernel development snapshot. %global released_kernel 0 # Set debugbuildsenabled to 1 to build separate base and debug kernels # (on supported architectures). The kernel-debug-* subpackages will # contain the debug kernel. # Set debugbuildsenabled to 0 to not build a separate debug kernel, but # to build the base kernel using the debug configuration. (Specifying # the --with-release option overrides this setting.) %define debugbuildsenabled 1 %define buildid .0.rpi64 %define specrpmversion 6.12.0 %define specversion 6.12.0 %define patchversion 6.12 %define pkgrelease 59.0.rpi64 %define kversion 6 %define tarfile_release 6.12.0-59.0.rpi64.el10 # This is needed to do merge window version magic %define patchlevel 12 # This allows pkg_release to have configurable %%{?dist} tag %define specrelease 59%{?buildid}%{?dist} # This defines the kabi tarball version %define kabiversion 6.12.0-59.0.rpi64.el10 # If this variable is set to 1, a bpf selftests build failure will cause a # fatal kernel package build error %define selftests_must_build 0 # # End of genspec.sh variables # %define pkg_release %{specrelease} # libexec dir is not used by the linker, so the shared object there # should not be exported to RPM provides %global __provides_exclude_from ^%{_libexecdir}/kselftests # The following build options are (mostly) enabled by default, but may become # enabled/disabled by later architecture-specific checks. # Where disabled by default, they can be enabled by using --with in the # rpmbuild command, or by forcing these values to 1. # Where enabled by default, they can be disabled by using --without in # the rpmbuild command, or by forcing these values to 0. # # standard kernel %define with_up %{?_without_up: 0} %{?!_without_up: 1} # build the base variants %define with_base %{?_without_base: 0} %{?!_without_base: 1} # build also debug variants %define with_debug %{?_without_debug: 0} %{?!_without_debug: 1} # kernel-zfcpdump (s390 specific kernel for zfcpdump) %define with_zfcpdump %{?_without_zfcpdump: 0} %{?!_without_zfcpdump: 1} # kernel-16k (aarch64 kernel with 16K page_size) %define with_arm64_16k %{?_with_arm64_16k: 1} %{?!_with_arm64_16k: 0} # kernel-64k (aarch64 kernel with 64K page_size) %define with_arm64_64k %{?_without_arm64_64k: 0} %{?!_without_arm64_64k: 1} # kernel-rt (x86_64 and aarch64 only PREEMPT_RT enabled kernel) %define with_realtime %{?_without_realtime: 0} %{?!_without_realtime: 1} # kernel-rt-64k (aarch64 RT kernel with 64K page_size) %define with_realtime_arm64_64k %{?_without_realtime_arm64_64k: 0} %{?!_without_realtime_arm64_64k: 1} # kernel-automotive (x86_64 and aarch64 with PREEMPT_RT enabled - currently off by default) %define with_automotive %{?_with_automotive: 1} %{?!_with_automotive: 0} # Supported variants # with_base with_debug with_gcov # up X X X # zfcpdump X X # arm64_16k X X X # arm64_64k X X X # realtime X X X # automotive X X X # kernel-doc %define with_doc %{?_without_doc: 0} %{?!_without_doc: 1} # kernel-headers %define with_headers %{?_without_headers: 0} %{?!_without_headers: 1} %define with_cross_headers %{?_without_cross_headers: 0} %{?!_without_cross_headers: 1} # perf %define with_perf %{?_without_perf: 0} %{?!_without_perf: 1} # libperf %define with_libperf %{?_without_libperf: 0} %{?!_without_libperf: 1} # tools %define with_tools %{?_without_tools: 0} %{?!_without_tools: 1} # ynl %define with_ynl %{?_without_ynl: 0} %{?!_without_ynl: 1} # kernel-debuginfo %define with_debuginfo %{?_without_debuginfo: 0} %{?!_without_debuginfo: 1} # kernel-abi-stablelists %define with_kernel_abi_stablelists %{?_without_kernel_abi_stablelists: 0} %{?!_without_kernel_abi_stablelists: 1} # internal samples and selftests %define with_selftests %{?_without_selftests: 0} %{?!_without_selftests: 1} # # Additional options for user-friendly one-off kernel building: # # Only build the base kernel (--with baseonly): %define with_baseonly %{?_with_baseonly: 1} %{?!_with_baseonly: 0} # Only build the debug variants (--with dbgonly): %define with_dbgonly %{?_with_dbgonly: 1} %{?!_with_dbgonly: 0} # Only build the realtime kernel (--with rtonly): %define with_rtonly %{?_with_rtonly: 1} %{?!_with_rtonly: 0} # Only build the automotive kernel (--with automotiveonly):% %define with_automotiveonly %{?_with_automotiveonly: 1} %{?!_with_automotiveonly: 0} # Control whether we perform a compat. check against published ABI. %define with_kabichk %{?_without_kabichk: 0} %{?!_without_kabichk: 1} # Temporarily disable kabi checks until RC. %define with_kabichk 0 # Control whether we perform a compat. check against DUP ABI. %define with_kabidupchk %{?_with_kabidupchk: 1} %{?!_with_kabidupchk: 0} # # Control whether to run an extensive DWARF based kABI check. # Note that this option needs to have baseline setup in SOURCE300. %define with_kabidwchk %{?_without_kabidwchk: 0} %{?!_without_kabidwchk: 1} %define with_kabidw_base %{?_with_kabidw_base: 1} %{?!_with_kabidw_base: 0} # # Control whether to install the vdso directories. %define with_vdso_install %{?_without_vdso_install: 0} %{?!_without_vdso_install: 1} # # should we do C=1 builds with sparse %define with_sparse %{?_with_sparse: 1} %{?!_with_sparse: 0} # # Cross compile requested? %define with_cross %{?_with_cross: 1} %{?!_with_cross: 0} # # build a release kernel on rawhide %define with_release %{?_with_release: 1} %{?!_with_release: 0} # verbose build, i.e. no silent rules and V=1 %define with_verbose %{?_with_verbose: 1} %{?!_with_verbose: 0} # # check for mismatched config options %define with_configchecks %{?_without_configchecks: 0} %{?!_without_configchecks: 1} # # gcov support %define with_gcov %{?_with_gcov:1}%{?!_with_gcov:0} # # ipa_clone support %define with_ipaclones %{?_without_ipaclones: 0} %{?!_without_ipaclones: 1} # Want to build a vanilla kernel build without any non-upstream patches? %define with_vanilla %{?_with_vanilla: 1} %{?!_with_vanilla: 0} %ifarch x86_64 aarch64 riscv64 %define with_efiuki %{?_without_efiuki: 0} %{?!_without_efiuki: 1} %else %define with_efiuki 0 %endif %if 0%{?fedora} # Kernel headers are being split out into a separate package %define with_headers 0 %define with_cross_headers 0 # no ipa_clone for now %define with_ipaclones 0 # no stablelist %define with_kernel_abi_stablelists 0 %define with_arm64_64k 0 %define with_realtime 0 %define with_realtime_arm64_64k 0 %define with_automotive 0 %endif %if %{with_verbose} %define make_opts V=1 %else %define make_opts -s %endif %if %{with toolchain_clang} %ifarch s390x ppc64le %global llvm_ias 0 %else %global llvm_ias 1 %endif %global clang_make_opts HOSTCC=clang CC=clang LLVM_IAS=%{llvm_ias} %if %{with clang_lto} # LLVM=1 enables use of all LLVM tools. %global clang_make_opts %{clang_make_opts} LLVM=1 %endif %global make_opts %{make_opts} %{clang_make_opts} # clang does not support the -fdump-ipa-clones option %global with_ipaclones 0 %endif # turn off debug kernel and kabichk for gcov builds %if %{with_gcov} %define with_debug 0 %define with_kabichk 0 %define with_kabidupchk 0 %define with_kabidwchk 0 %define with_kabidw_base 0 %define with_kernel_abi_stablelists 0 %endif # turn off kABI DWARF-based check if we're generating the base dataset %if %{with_kabidw_base} %define with_kabidwchk 0 %endif # kpatch_kcflags are extra compiler flags applied to base kernel # -fdump-ipa-clones is enabled only for base kernels on selected arches %if %{with_ipaclones} %ifarch x86_64 ppc64le %define kpatch_kcflags -fdump-ipa-clones %else %define with_ipaclones 0 %endif %endif %define make_target bzImage %define image_install_path boot %define KVERREL %{specversion}-%{release}.%{_target_cpu} %define KVERREL_RE %(echo %KVERREL | sed 's/+/[+]/g') %define hdrarch %_target_cpu %define asmarch %_target_cpu %if 0%{!?nopatches:1} %define nopatches 0 %endif %if %{with_vanilla} %define nopatches 1 %endif %if %{with_release} %define debugbuildsenabled 1 %endif %if !%{with_debuginfo} %define _enable_debug_packages 0 %endif %define debuginfodir /usr/lib/debug # Needed because we override almost everything involving build-ids # and debuginfo generation. Currently we rely on the old alldebug setting. %global _build_id_links alldebug # if requested, only build base kernel %if %{with_baseonly} %define with_debug 0 %define with_realtime 0 %define with_vdso_install 0 %define with_perf 0 %define with_libperf 0 %define with_tools 0 %define with_kernel_abi_stablelists 0 %define with_selftests 0 %define with_ipaclones 0 %endif # if requested, only build debug kernel %if %{with_dbgonly} %define with_base 0 %define with_vdso_install 0 %define with_perf 0 %define with_libperf 0 %define with_tools 0 %define with_kernel_abi_stablelists 0 %define with_selftests 0 %define with_ipaclones 0 %endif # if requested, only build realtime kernel %if %{with_rtonly} %define with_realtime 1 %define with_realtime_arm64_64k 1 %define with_automotive 0 %define with_up 0 %define with_debug 0 %define with_debuginfo 0 %define with_vdso_install 0 %define with_perf 0 %define with_libperf 0 %define with_tools 0 %define with_kernel_abi_stablelists 0 %define with_selftests 0 %define with_ipaclones 0 %define with_headers 0 %define with_efiuki 0 %define with_zfcpdump 0 %define with_arm64_16k 0 %define with_arm64_64k 0 %endif # if requested, only build automotive kernel %if %{with_automotiveonly} %define with_automotive 1 %define with_realtime 0 %define with_up 0 %define with_debug 0 %define with_debuginfo 0 %define with_vdso_install 0 %define with_selftests 1 %endif # RT and Automotive kernels are only built on x86_64 and aarch64 %ifnarch x86_64 aarch64 %define with_realtime 0 %define with_automotive 0 %endif %if %{with_automotive} # overrides compression algorithms for automotive %global compression zstd %global compression_flags --rm %global compext zst # automotive does not support the following variants %define with_realtime 0 %define with_realtime_arm64_64k 0 %define with_arm64_16k 0 %define with_arm64_64k 0 %define with_efiuki 0 %define with_doc 0 %define with_headers 0 %define with_cross_headers 0 %define with_perf 0 %define with_libperf 0 %define with_tools 0 %define with_kabichk 0 %define with_kernel_abi_stablelists 0 %define with_kabidw_base 0 %define with_ipaclones 0 %endif %if %{zipmodules} %global zipsed -e 's/\.ko$/\.ko.%compext/' # for parallel xz processes, replace with 1 to go back to single process %endif # turn off kABI DUP check and DWARF-based check if kABI check is disabled %if !%{with_kabichk} %define with_kabidupchk 0 %define with_kabidwchk 0 %endif %if %{with_vdso_install} %define use_vdso 1 %endif %ifnarch noarch %define with_kernel_abi_stablelists 0 %endif # Overrides for generic default options # only package docs noarch %ifnarch noarch %define with_doc 0 %define doc_build_fail true %endif %if 0%{?fedora} # don't do debug builds on anything but aarch64 and x86_64 %ifnarch aarch64 x86_64 %define with_debug 0 %endif %endif %define all_configs %{name}-%{specrpmversion}-*.config # don't build noarch kernels or headers (duh) %ifarch noarch %define with_up 0 %define with_realtime 0 %define with_automotive 0 %define with_headers 0 %define with_cross_headers 0 %define with_tools 0 %define with_perf 0 %define with_libperf 0 %define with_selftests 0 %define with_debug 0 %endif # sparse blows up on ppc %ifnarch ppc64le %define with_sparse 0 %endif # zfcpdump mechanism is s390 only %ifnarch s390x %define with_zfcpdump 0 %endif # 16k and 64k variants only for aarch64 %ifnarch aarch64 %define with_arm64_16k 0 %define with_arm64_64k 0 %define with_realtime_arm64_64k 0 %endif %if 0%{?fedora} # This is not for Fedora %define with_zfcpdump 0 %endif # Per-arch tweaks %ifarch i686 %define asmarch x86 %define hdrarch i386 %define kernel_image arch/x86/boot/bzImage %endif %ifarch x86_64 %define asmarch x86 %define kernel_image arch/x86/boot/bzImage %endif %ifarch ppc64le %define asmarch powerpc %define hdrarch powerpc %define make_target vmlinux %define kernel_image vmlinux %define kernel_image_elf 1 %define use_vdso 0 %endif %ifarch s390x %define asmarch s390 %define hdrarch s390 %define kernel_image arch/s390/boot/bzImage %define vmlinux_decompressor arch/s390/boot/vmlinux %endif %ifarch aarch64 %define asmarch arm64 %define hdrarch arm64 %define make_target vmlinuz.efi %define kernel_image arch/arm64/boot/vmlinuz.efi %endif %ifarch riscv64 %define asmarch riscv %define hdrarch riscv %define make_target vmlinuz.efi %define kernel_image arch/riscv/boot/vmlinuz.efi %endif # Should make listnewconfig fail if there's config options # printed out? %if %{nopatches} %define with_configchecks 0 %endif # To temporarily exclude an architecture from being built, add it to # %%nobuildarches. Do _NOT_ use the ExclusiveArch: line, because if we # don't build kernel-headers then the new build system will no longer let # us use the previous build of that package -- it'll just be completely AWOL. # Which is a BadThing(tm). # We only build kernel-headers on the following... %if 0%{?fedora} %define nobuildarches i386 %else %define nobuildarches i386 i686 %endif %ifarch %nobuildarches # disable BuildKernel commands %define with_up 0 %define with_debug 0 %define with_zfcpdump 0 %define with_arm64_16k 0 %define with_arm64_64k 0 %define with_realtime 0 %define with_realtime_arm64_64k 0 %define with_automotive 0 %define with_debuginfo 0 %define with_perf 0 %define with_libperf 0 %define with_tools 0 %define with_selftests 0 %define _enable_debug_packages 0 %endif # Architectures we build tools/cpupower on %if 0%{?fedora} %define cpupowerarchs %{ix86} x86_64 ppc64le aarch64 %else %define cpupowerarchs i686 x86_64 ppc64le aarch64 %endif # Architectures we build kernel livepatching selftests on %define klptestarches x86_64 ppc64le s390x %if 0%{?use_vdso} %define _use_vdso 1 %else %define _use_vdso 0 %endif # If build of debug packages is disabled, we need to know if we want to create # meta debug packages or not, after we define with_debug for all specific cases # above. So this must be at the end here, after all cases of with_debug or not. %define with_debug_meta 0 %if !%{debugbuildsenabled} %if %{with_debug} %define with_debug_meta 1 %endif %define with_debug 0 %endif # short-hand for "are we building base/non-debug variants of ...?" %if %{with_up} && %{with_base} %define with_up_base 1 %else %define with_up_base 0 %endif %if %{with_realtime} && %{with_base} %define with_realtime_base 1 %else %define with_realtime_base 0 %endif %if %{with_automotive} && %{with_base} %define with_automotive_base 1 %else %define with_automotive_base 0 %endif %if %{with_arm64_16k} && %{with_base} %define with_arm64_16k_base 1 %else %define with_arm64_16k_base 0 %endif %if %{with_arm64_64k} && %{with_base} %define with_arm64_64k_base 1 %else %define with_arm64_64k_base 0 %endif %if %{with_realtime_arm64_64k} && %{with_base} %define with_realtime_arm64_64k_base 1 %else %define with_realtime_arm64_64k_base 0 %endif # # Packages that need to be installed before the kernel is, because the %%post # scripts use them. # %define kernel_prereq coreutils, systemd >= 203-2, /usr/bin/kernel-install %define initrd_prereq dracut >= 027 Name: %{package_name} License: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-2-Clause) AND ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) AND ((GPL-2.0-only WITH Linux-syscall-note) OR CDDL-1.0) AND ((GPL-2.0-only WITH Linux-syscall-note) OR Linux-OpenIB) AND ((GPL-2.0-only WITH Linux-syscall-note) OR MIT) AND ((GPL-2.0-or-later WITH Linux-syscall-note) OR BSD-3-Clause) AND ((GPL-2.0-or-later WITH Linux-syscall-note) OR MIT) AND 0BSD AND BSD-2-Clause AND (BSD-2-Clause OR Apache-2.0) AND BSD-3-Clause AND BSD-3-Clause-Clear AND CC0-1.0 AND GFDL-1.1-no-invariants-or-later AND GPL-1.0-or-later AND (GPL-1.0-or-later OR BSD-3-Clause) AND (GPL-1.0-or-later WITH Linux-syscall-note) AND GPL-2.0-only AND (GPL-2.0-only OR Apache-2.0) AND (GPL-2.0-only OR BSD-2-Clause) AND (GPL-2.0-only OR BSD-3-Clause) AND (GPL-2.0-only OR CDDL-1.0) AND (GPL-2.0-only OR GFDL-1.1-no-invariants-or-later) AND (GPL-2.0-only OR GFDL-1.2-no-invariants-only) AND (GPL-2.0-only WITH Linux-syscall-note) AND GPL-2.0-or-later AND (GPL-2.0-or-later OR BSD-2-Clause) AND (GPL-2.0-or-later OR BSD-3-Clause) AND (GPL-2.0-or-later OR CC-BY-4.0) AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH Linux-syscall-note) AND ISC AND LGPL-2.0-or-later AND (LGPL-2.0-or-later OR BSD-2-Clause) AND (LGPL-2.0-or-later WITH Linux-syscall-note) AND LGPL-2.1-only AND (LGPL-2.1-only OR BSD-2-Clause) AND (LGPL-2.1-only WITH Linux-syscall-note) AND LGPL-2.1-or-later AND (LGPL-2.1-or-later WITH Linux-syscall-note) AND (Linux-OpenIB OR GPL-2.0-only) AND (Linux-OpenIB OR GPL-2.0-only OR BSD-2-Clause) AND Linux-man-pages-copyleft AND MIT AND (MIT OR Apache-2.0) AND (MIT OR GPL-2.0-only) AND (MIT OR GPL-2.0-or-later) AND (MIT OR LGPL-2.1-only) AND (MPL-1.1 OR GPL-2.0-only) AND (X11 OR GPL-2.0-only) AND (X11 OR GPL-2.0-or-later) AND Zlib AND (copyleft-next-0.3.1 OR GPL-2.0-or-later) URL: https://www.kernel.org/ Version: %{specrpmversion} Release: %{pkg_release} # DO NOT CHANGE THE 'ExclusiveArch' LINE TO TEMPORARILY EXCLUDE AN ARCHITECTURE BUILD. # SET %%nobuildarches (ABOVE) INSTEAD %if 0%{?fedora} ExclusiveArch: noarch x86_64 s390x aarch64 ppc64le riscv64 %else ExclusiveArch: noarch i386 i686 x86_64 s390x aarch64 ppc64le %endif ExclusiveOS: Linux %ifnarch %{nobuildarches} Requires: kernel-core-uname-r = %{KVERREL} Requires: kernel-modules-uname-r = %{KVERREL} Requires: kernel-modules-core-uname-r = %{KVERREL} Provides: installonlypkg(kernel) %endif # # List the packages used during the kernel build # BuildRequires: kmod, bash, coreutils, tar, git-core, which BuildRequires: bzip2, xz, findutils, m4, perl-interpreter, perl-Carp, perl-devel, perl-generators, make, diffutils, gawk, %compression BuildRequires: gcc, binutils, redhat-rpm-config, hmaccalc, bison, flex, gcc-c++ %if 0%{?fedora} BuildRequires: rust, rust-src, bindgen %endif BuildRequires: net-tools, hostname, bc, elfutils-devel BuildRequires: dwarves BuildRequires: python3 BuildRequires: python3-devel BuildRequires: python3-pyyaml BuildRequires: kernel-rpm-macros # glibc-static is required for a consistent build environment (specifically # CONFIG_CC_CAN_LINK_STATIC=y). BuildRequires: glibc-static %if %{with_headers} || %{with_cross_headers} BuildRequires: rsync %endif %if %{with_doc} BuildRequires: xmlto, asciidoc, python3-sphinx, python3-sphinx_rtd_theme %endif %if %{with_sparse} BuildRequires: sparse %endif %if %{with_perf} BuildRequires: zlib-devel binutils-devel newt-devel perl(ExtUtils::Embed) bison flex xz-devel BuildRequires: audit-libs-devel python3-setuptools BuildRequires: java-devel BuildRequires: libbpf-devel >= 0.6.0-1 BuildRequires: libbabeltrace-devel BuildRequires: libtraceevent-devel %ifnarch s390x BuildRequires: numactl-devel %endif %ifarch aarch64 BuildRequires: opencsd-devel >= 1.0.0 %endif %endif %if %{with_tools} BuildRequires: python3-docutils BuildRequires: gettext ncurses-devel BuildRequires: libcap-devel libcap-ng-devel # The following are rtla requirements BuildRequires: python3-docutils BuildRequires: libtraceevent-devel BuildRequires: libtracefs-devel %ifnarch s390x BuildRequires: pciutils-devel %endif %ifarch i686 x86_64 BuildRequires: libnl3-devel %endif %endif %if %{with_tools} && %{with_ynl} BuildRequires: python3-pyyaml python3-jsonschema python3-pip python3-setuptools python3-wheel %endif %if %{with_tools} || %{signmodules} || %{signkernel} BuildRequires: openssl-devel %endif %if %{with_selftests} BuildRequires: clang llvm-devel fuse-devel zlib-devel binutils-devel %ifarch x86_64 riscv64 BuildRequires: lld %endif BuildRequires: libcap-devel libcap-ng-devel rsync libmnl-devel libxml2-devel BuildRequires: numactl-devel %endif BuildConflicts: rhbuildsys(DiskFree) < 500Mb %if %{with_debuginfo} BuildRequires: rpm-build, elfutils BuildConflicts: rpm < 4.13.0.1-19 BuildConflicts: dwarves < 1.13 # Most of these should be enabled after more investigation %undefine _include_minidebuginfo %undefine _find_debuginfo_dwz_opts %undefine _unique_build_ids %undefine _unique_debug_names %undefine _unique_debug_srcs %undefine _debugsource_packages %undefine _debuginfo_subpackages # Remove -q option below to provide 'extracting debug info' messages %global _find_debuginfo_opts -r -q %global _missing_build_ids_terminate_build 1 %global _no_recompute_build_ids 1 %endif %if %{with_kabidwchk} || %{with_kabidw_base} BuildRequires: kabi-dw %endif %if %{signkernel}%{signmodules} BuildRequires: openssl %if %{signkernel} # ELN uses Fedora signing process, so exclude %if 0%{?rhel}%{?centos} && !0%{?eln} BuildRequires: system-sb-certs %endif %ifarch x86_64 aarch64 riscv64 BuildRequires: nss-tools BuildRequires: pesign >= 0.10-4 %endif %endif %endif %if %{with_cross} BuildRequires: binutils-%{_build_arch}-linux-gnu, gcc-%{_build_arch}-linux-gnu %define cross_opts CROSS_COMPILE=%{_build_arch}-linux-gnu- %define __strip %{_build_arch}-linux-gnu-strip # Work around find-debuginfo for cross builds. # find-debuginfo doesn't support any of CROSS options (RHEL-21797), # and since debugedit > 5.0-16.el10, or since commit # dfe1f7ff30f4 ("find-debuginfo.sh: Exit with real exit status in parallel jobs") # it now aborts and build fails. %undefine _include_gdb_index %endif # These below are required to build man pages %if %{with_perf} BuildRequires: xmlto %endif %if %{with_perf} || %{with_tools} BuildRequires: asciidoc %endif %if %{with toolchain_clang} BuildRequires: clang %endif %if %{with clang_lto} BuildRequires: llvm BuildRequires: lld %endif %if %{with_efiuki} BuildRequires: dracut # For dracut UEFI uki binaries BuildRequires: binutils # For the initrd BuildRequires: lvm2 BuildRequires: systemd-boot-unsigned # For systemd-stub and systemd-pcrphase BuildRequires: systemd-udev >= 252-1 # For UKI kernel cmdline addons BuildRequires: systemd-ukify # For TPM operations in UKI initramfs BuildRequires: tpm2-tools # For UKI sb cert %if 0%{?rhel}%{?centos} && !0%{?eln} %if 0%{?centos} BuildRequires: centos-sb-certs >= 9.0-23 %else BuildRequires: redhat-sb-certs >= 9.4-0.1 %endif %endif %endif # Because this is the kernel, it's hard to get a single upstream URL # to represent the base without needing to do a bunch of patching. This # tarball is generated from a src-git tree. If you want to see the # exact git commit you can run # # xzcat -qq ${TARBALL} | git get-tar-commit-id Source0: linux-%{tarfile_release}.tar.xz Source1: Makefile.rhelver Source2: kernel.changelog Source10: redhatsecurebootca5.cer Source13: redhatsecureboot501.cer %if %{signkernel} # Name of the packaged file containing signing key %ifarch ppc64le %define signing_key_filename kernel-signing-ppc.cer %endif %ifarch s390x %define signing_key_filename kernel-signing-s390.cer %endif # Fedora/ELN pesign macro expects to see these cert file names, see: # https://github.com/rhboot/pesign/blob/main/src/pesign-rpmbuild-helper.in#L216 %if 0%{?fedora}%{?eln} %define pesign_name_0 redhatsecureboot501 %define secureboot_ca_0 %{SOURCE10} %define secureboot_key_0 %{SOURCE13} %endif # RHEL/centos certs come from system-sb-certs %if 0%{?rhel} && !0%{?eln} %define secureboot_ca_0 %{_datadir}/pki/sb-certs/secureboot-ca-%{_arch}.cer %define secureboot_key_0 %{_datadir}/pki/sb-certs/secureboot-kernel-%{_arch}.cer %if 0%{?centos} %define pesign_name_0 centossecureboot201 %else %ifarch x86_64 aarch64 %define pesign_name_0 redhatsecureboot501 %endif %ifarch s390x %define pesign_name_0 redhatsecureboot302 %endif %ifarch ppc64le %define pesign_name_0 redhatsecureboot701 %endif %endif # rhel && !eln %endif # signkernel %endif Source20: mod-denylist.sh Source21: mod-sign.sh Source22: filtermods.py %define modsign_cmd %{SOURCE21} %if 0%{?include_rhel} Source23: x509.genkey.rhel Source24: %{name}-aarch64-rhel.config Source25: %{name}-aarch64-debug-rhel.config Source27: %{name}-ppc64le-rhel.config Source28: %{name}-ppc64le-debug-rhel.config Source29: %{name}-s390x-rhel.config Source30: %{name}-s390x-debug-rhel.config Source31: %{name}-s390x-zfcpdump-rhel.config Source32: %{name}-x86_64-rhel.config Source33: %{name}-x86_64-debug-rhel.config Source34: def_variants.yaml.rhel Source41: x509.genkey.centos # ARM64 64K page-size kernel config Source42: %{name}-aarch64-64k-rhel.config Source43: %{name}-aarch64-64k-debug-rhel.config # ARM64 16K page-size kernel config Source44: %{name}-aarch64-16k-rhel.config Source45: %{name}-aarch64-16k-debug-rhel.config %endif %if 0%{?include_fedora} Source50: x509.genkey.fedora Source52: %{name}-aarch64-fedora.config Source53: %{name}-aarch64-debug-fedora.config Source54: %{name}-aarch64-16k-fedora.config Source55: %{name}-aarch64-16k-debug-fedora.config Source56: %{name}-ppc64le-fedora.config Source57: %{name}-ppc64le-debug-fedora.config Source58: %{name}-s390x-fedora.config Source59: %{name}-s390x-debug-fedora.config Source60: %{name}-x86_64-fedora.config Source61: %{name}-x86_64-debug-fedora.config Source700: %{name}-riscv64-fedora.config Source701: %{name}-riscv64-debug-fedora.config Source62: def_variants.yaml.fedora %endif Source70: partial-kgcov-snip.config Source71: partial-kgcov-debug-snip.config Source72: partial-clang-snip.config Source73: partial-clang-debug-snip.config Source74: partial-clang_lto-x86_64-snip.config Source75: partial-clang_lto-x86_64-debug-snip.config Source76: partial-clang_lto-aarch64-snip.config Source77: partial-clang_lto-aarch64-debug-snip.config Source80: generate_all_configs.sh Source81: process_configs.sh Source86: dracut-virt.conf Source87: flavors Source151: uki_create_addons.py Source152: uki_addons.json Source100: rheldup3.x509 Source101: rhelkpatch1.x509 Source102: nvidiagpuoot001.x509 Source103: rhelimaca1.x509 Source104: rhelima.x509 Source105: rhelima_centos.x509 Source106: fedoraimaca.x509 %if 0%{?fedora}%{?eln} %define ima_ca_cert %{SOURCE106} %endif %if 0%{?rhel} && !0%{?eln} %define ima_ca_cert %{SOURCE103} # rhel && !eln %endif %if 0%{?centos} %define ima_signing_cert %{SOURCE105} %else %define ima_signing_cert %{SOURCE104} %endif %define ima_cert_name ima.cer Source200: check-kabi Source201: Module.kabi_aarch64 Source202: Module.kabi_ppc64le Source203: Module.kabi_s390x Source204: Module.kabi_x86_64 Source205: Module.kabi_riscv64 Source210: Module.kabi_dup_aarch64 Source211: Module.kabi_dup_ppc64le Source212: Module.kabi_dup_s390x Source213: Module.kabi_dup_x86_64 Source214: Module.kabi_dup_riscv64 Source300: kernel-abi-stablelists-%{kabiversion}.tar.xz Source301: kernel-kabi-dw-%{kabiversion}.tar.xz %if 0%{include_rt} %if 0%{include_rhel} Source474: %{name}-aarch64-rt-rhel.config Source475: %{name}-aarch64-rt-debug-rhel.config Source476: %{name}-aarch64-rt-64k-rhel.config Source477: %{name}-aarch64-rt-64k-debug-rhel.config Source478: %{name}-x86_64-rt-rhel.config Source479: %{name}-x86_64-rt-debug-rhel.config %endif %if 0%{include_fedora} Source478: %{name}-aarch64-rt-fedora.config Source479: %{name}-aarch64-rt-debug-fedora.config Source480: %{name}-aarch64-rt-64k-fedora.config Source481: %{name}-aarch64-rt-64k-debug-fedora.config Source482: %{name}-x86_64-rt-fedora.config Source483: %{name}-x86_64-rt-debug-fedora.config Source484: %{name}-riscv64-rt-fedora.config Source485: %{name}-riscv64-rt-debug-fedora.config %endif %endif %if %{include_automotive} # automotive config files Source486: %{name}-aarch64-automotive-rhel.config Source487: %{name}-aarch64-automotive-debug-rhel.config Source488: %{name}-x86_64-automotive-rhel.config Source489: %{name}-x86_64-automotive-debug-rhel.config %endif # Sources for kernel-tools Source2002: kvm_stat.logrotate # Some people enjoy building customized kernels from the dist-git in Fedora and # use this to override configuration options. One day they may all use the # source tree, but in the mean time we carry this to support the legacy workflow Source3000: merge.py Source3001: kernel-local %if %{patchlist_changelog} Source3002: Patchlist.changelog %endif Source4000: README.rst Source4001: rpminspect.yaml Source4002: gating.yaml ## Patches needed for building this package %if !%{nopatches} Patch1: patch-%{patchversion}-redhat.patch %endif # empty final patch to facilitate testing of kernel patches Patch999999: linux-kernel-test.patch # END OF PATCH DEFINITIONS %description The kernel meta package # # This macro does requires, provides, conflicts, obsoletes for a kernel package. # %%kernel_reqprovconf [-o] # It uses any kernel__conflicts and kernel__obsoletes # macros defined above. # %define kernel_reqprovconf(o) \ %if %{-o:0}%{!-o:1}\ Provides: kernel = %{specversion}-%{pkg_release}\ %endif\ Provides: kernel-%{_target_cpu} = %{specrpmversion}-%{pkg_release}%{uname_suffix %{?1:+%{1}}}\ Provides: kernel-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires(pre): %{kernel_prereq}\ Requires(pre): %{initrd_prereq}\ Requires(pre): ((linux-firmware >= 20150904-56.git6ebf5d57) if linux-firmware)\ Recommends: linux-firmware\ Requires(preun): systemd >= 200\ Conflicts: xfsprogs < 4.3.0-1\ Conflicts: xorg-x11-drv-vmmouse < 13.0.99\ %{expand:%%{?kernel%{?1:_%{1}}_conflicts:Conflicts: %%{kernel%{?1:_%{1}}_conflicts}}}\ %{expand:%%{?kernel%{?1:_%{1}}_obsoletes:Obsoletes: %%{kernel%{?1:_%{1}}_obsoletes}}}\ %{expand:%%{?kernel%{?1:_%{1}}_provides:Provides: %%{kernel%{?1:_%{1}}_provides}}}\ # We can't let RPM do the dependencies automatic because it'll then pick up\ # a correct but undesirable perl dependency from the module headers which\ # isn't required for the kernel proper to function\ AutoReq: no\ AutoProv: yes\ %{nil} %package doc Summary: Various documentation bits found in the kernel source Group: Documentation %description doc This package contains documentation files from the kernel source. Various bits of information about the Linux kernel and the device drivers shipped with it are documented in these files. You'll want to install this package if you need a reference to the options that can be passed to Linux kernel modules at load time. %package headers Summary: Header files for the Linux kernel for use by glibc Obsoletes: glibc-kernheaders < 3.0-46 Provides: glibc-kernheaders = 3.0-46 %if 0%{?gemini} Provides: kernel-headers = %{specversion}-%{release} Obsoletes: kernel-headers < %{specversion} %endif %description headers Kernel-headers includes the C header files that specify the interface between the Linux kernel and userspace libraries and programs. The header files define structures and constants that are needed for building most standard programs and are also needed for rebuilding the glibc package. %package cross-headers Summary: Header files for the Linux kernel for use by cross-glibc %if 0%{?gemini} Provides: kernel-cross-headers = %{specversion}-%{release} Obsoletes: kernel-cross-headers < %{specversion} %endif %description cross-headers Kernel-cross-headers includes the C header files that specify the interface between the Linux kernel and userspace libraries and programs. The header files define structures and constants that are needed for building most standard programs and are also needed for rebuilding the cross-glibc package. %package debuginfo-common-%{_target_cpu} Summary: Kernel source files used by %{name}-debuginfo packages Provides: installonlypkg(kernel) %description debuginfo-common-%{_target_cpu} This package is required by %{name}-debuginfo subpackages. It provides the kernel source files common to all builds. %if %{with_perf} %package -n perf %if 0%{gemini} Epoch: %{gemini} %endif Summary: Performance monitoring for the Linux kernel Requires: bzip2 %description -n perf This package contains the perf tool, which enables performance monitoring of the Linux kernel. %package -n perf-debuginfo %if 0%{gemini} Epoch: %{gemini} %endif Summary: Debug information for package perf Requires: %{name}-debuginfo-common-%{_target_cpu} = %{specrpmversion}-%{release} AutoReqProv: no %description -n perf-debuginfo This package provides debug information for the perf package. # Note that this pattern only works right to match the .build-id # symlinks because of the trailing nonmatching alternation and # the leading .*, because of find-debuginfo.sh's buggy handling # of matching the pattern against the symlinks file. %{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*%%{_bindir}/perf(\.debug)?|.*%%{_libexecdir}/perf-core/.*|.*%%{_libdir}/libperf-jvmti.so(\.debug)?|XXX' -o perf-debuginfo.list} %package -n python3-perf %if 0%{gemini} Epoch: %{gemini} %endif Summary: Python bindings for apps which will manipulate perf events %description -n python3-perf The python3-perf package contains a module that permits applications written in the Python programming language to use the interface to manipulate perf events. %package -n python3-perf-debuginfo %if 0%{gemini} Epoch: %{gemini} %endif Summary: Debug information for package perf python bindings Requires: %{name}-debuginfo-common-%{_target_cpu} = %{specrpmversion}-%{release} AutoReqProv: no %description -n python3-perf-debuginfo This package provides debug information for the perf python bindings. # the python_sitearch macro should already be defined from above %{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*%%{python3_sitearch}/perf.*so(\.debug)?|XXX' -o python3-perf-debuginfo.list} # with_perf %endif %if %{with_libperf} %package -n libperf Summary: The perf library from kernel source %description -n libperf This package contains the kernel source perf library. %package -n libperf-devel Summary: Developement files for the perf library from kernel source Requires: libperf = %{version}-%{release} %description -n libperf-devel This package includes libraries and header files needed for development of applications which use perf library from kernel source. %package -n libperf-debuginfo Summary: Debug information for package libperf Group: Development/Debug Requires: %{name}-debuginfo-common-%{_target_cpu} = %{version}-%{release} AutoReqProv: no %description -n libperf-debuginfo This package provides debug information for the libperf package. # Note that this pattern only works right to match the .build-id # symlinks because of the trailing nonmatching alternation and # the leading .*, because of find-debuginfo.sh's buggy handling # of matching the pattern against the symlinks file. %{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*%%{_libdir}/libperf.so.*(\.debug)?|XXX' -o libperf-debuginfo.list} # with_libperf %endif %if %{with_tools} %package -n %{package_name}-tools Summary: Assortment of tools for the Linux kernel %ifarch %{cpupowerarchs} Provides: cpupowerutils = 1:009-0.6.p1 Obsoletes: cpupowerutils < 1:009-0.6.p1 Provides: cpufreq-utils = 1:009-0.6.p1 Provides: cpufrequtils = 1:009-0.6.p1 Obsoletes: cpufreq-utils < 1:009-0.6.p1 Obsoletes: cpufrequtils < 1:009-0.6.p1 Obsoletes: cpuspeed < 1:1.5-16 Requires: %{package_name}-tools-libs = %{specrpmversion}-%{release} %endif %define __requires_exclude ^%{_bindir}/python %description -n %{package_name}-tools This package contains the tools/ directory from the kernel source and the supporting documentation. %package -n %{package_name}-tools-libs Summary: Libraries for the kernels-tools %description -n %{package_name}-tools-libs This package contains the libraries built from the tools/ directory from the kernel source. %package -n %{package_name}-tools-libs-devel Summary: Assortment of tools for the Linux kernel Requires: %{package_name}-tools = %{version}-%{release} %ifarch %{cpupowerarchs} Provides: cpupowerutils-devel = 1:009-0.6.p1 Obsoletes: cpupowerutils-devel < 1:009-0.6.p1 %endif Requires: %{package_name}-tools-libs = %{version}-%{release} Provides: %{package_name}-tools-devel %description -n %{package_name}-tools-libs-devel This package contains the development files for the tools/ directory from the kernel source. %package -n %{package_name}-tools-debuginfo Summary: Debug information for package %{package_name}-tools Requires: %{name}-debuginfo-common-%{_target_cpu} = %{version}-%{release} AutoReqProv: no %description -n %{package_name}-tools-debuginfo This package provides debug information for package %{package_name}-tools. # Note that this pattern only works right to match the .build-id # symlinks because of the trailing nonmatching alternation and # the leading .*, because of find-debuginfo.sh's buggy handling # of matching the pattern against the symlinks file. %{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*%%{_bindir}/bootconfig(\.debug)?|.*%%{_bindir}/centrino-decode(\.debug)?|.*%%{_bindir}/powernow-k8-decode(\.debug)?|.*%%{_bindir}/cpupower(\.debug)?|.*%%{_libdir}/libcpupower.*|.*%%{_bindir}/turbostat(\.debug)?|.*%%{_bindir}/x86_energy_perf_policy(\.debug)?|.*%%{_bindir}/tmon(\.debug)?|.*%%{_bindir}/lsgpio(\.debug)?|.*%%{_bindir}/gpio-hammer(\.debug)?|.*%%{_bindir}/gpio-event-mon(\.debug)?|.*%%{_bindir}/gpio-watch(\.debug)?|.*%%{_bindir}/iio_event_monitor(\.debug)?|.*%%{_bindir}/iio_generic_buffer(\.debug)?|.*%%{_bindir}/lsiio(\.debug)?|.*%%{_bindir}/intel-speed-select(\.debug)?|.*%%{_bindir}/page_owner_sort(\.debug)?|.*%%{_bindir}/slabinfo(\.debug)?|.*%%{_sbindir}/intel_sdsi(\.debug)?|XXX' -o %{package_name}-tools-debuginfo.list} %package -n rtla %if 0%{gemini} Epoch: %{gemini} %endif Summary: Real-Time Linux Analysis tools Requires: libtraceevent Requires: libtracefs %ifarch %{cpupowerarchs} Requires: %{package_name}-tools-libs = %{version}-%{release} %endif %description -n rtla The rtla meta-tool includes a set of commands that aims to analyze the real-time properties of Linux. Instead of testing Linux as a black box, rtla leverages kernel tracing capabilities to provide precise information about the properties and root causes of unexpected results. %package -n rv Summary: RV: Runtime Verification %description -n rv Runtime Verification (RV) is a lightweight (yet rigorous) method that complements classical exhaustive verification techniques (such as model checking and theorem proving) with a more practical approach for complex systems. The rv tool is the interface for a collection of monitors that aim analysing the logical and timing behavior of Linux. # with_tools %endif %if %{with_selftests} %package selftests-internal Summary: Kernel samples and selftests Requires: binutils, bpftool, iproute-tc, nmap-ncat, python3, fuse-libs, keyutils %description selftests-internal Kernel sample programs and selftests. # Note that this pattern only works right to match the .build-id # symlinks because of the trailing nonmatching alternation and # the leading .*, because of find-debuginfo.sh's buggy handling # of matching the pattern against the symlinks file. %{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*%%{_libexecdir}/(ksamples|kselftests)/.*|XXX' -o selftests-debuginfo.list} %define __requires_exclude ^liburandom_read.so.*$ # with_selftests %endif %define kernel_gcov_package() \ %package %{?1:%{1}-}gcov\ Summary: gcov graph and source files for coverage data collection.\ %description %{?1:%{1}-}gcov\ %{?1:%{1}-}gcov includes the gcov graph and source files for gcov coverage collection.\ %{nil} %package -n %{package_name}-abi-stablelists Summary: The Red Hat Enterprise Linux kernel ABI symbol stablelists AutoReqProv: no %description -n %{package_name}-abi-stablelists The kABI package contains information pertaining to the Red Hat Enterprise Linux kernel ABI, including lists of kernel symbols that are needed by external Linux kernel modules, and a yum plugin to aid enforcement. %if %{with_kabidw_base} %package kernel-kabidw-base-internal Summary: The baseline dataset for kABI verification using DWARF data Group: System Environment/Kernel AutoReqProv: no %description kernel-kabidw-base-internal The package contains data describing the current ABI of the Red Hat Enterprise Linux kernel, suitable for the kabi-dw tool. %endif # # This macro creates a kernel--debuginfo package. # %%kernel_debuginfo_package # # Explanation of the find_debuginfo_opts: We build multiple kernels (debug, # rt, 64k etc.) so the regex filters those kernels appropriately. We also # have to package several binaries as part of kernel-devel but getting # unique build-ids is tricky for these userspace binaries. We don't really # care about debugging those so we just filter those out and remove it. %define kernel_debuginfo_package() \ %package %{?1:%{1}-}debuginfo\ Summary: Debug information for package %{name}%{?1:-%{1}}\ Requires: %{name}-debuginfo-common-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: %{name}%{?1:-%{1}}-debuginfo-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: installonlypkg(kernel)\ AutoReqProv: no\ %description %{?1:%{1}-}debuginfo\ This package provides debug information for package %{name}%{?1:-%{1}}.\ This is required to use SystemTap with %{name}%{?1:-%{1}}-%{KVERREL}.\ %{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} --keep-section '.BTF' -p '.*\/usr\/src\/kernels/.*|XXX' -o ignored-debuginfo.list -p '/.*/%%{KVERREL_RE}%{?1:[+]%{1}}/.*|/.*%%{KVERREL_RE}%{?1:\+%{1}}(\.debug)?' -o debuginfo%{?1}.list}\ %{nil} # # This macro creates a kernel--devel package. # %%kernel_devel_package [-m] # %define kernel_devel_package(m) \ %package %{?1:%{1}-}devel\ Summary: Development package for building kernel modules to match the %{?2:%{2} }kernel\ Provides: kernel%{?1:-%{1}}-devel-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: kernel-devel-%{_target_cpu} = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: kernel-devel-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Provides: installonlypkg(kernel)\ AutoReqProv: no\ Requires(pre): findutils\ Requires: findutils\ Requires: perl-interpreter\ Requires: openssl-devel\ Requires: elfutils-libelf-devel\ Requires: bison\ Requires: flex\ Requires: make\ Requires: gcc\ %if %{-m:1}%{!-m:0}\ Requires: kernel-devel-uname-r = %{KVERREL}%{uname_variant %{?1:%{1}}}\ %endif\ %description %{?1:%{1}-}devel\ This package provides kernel headers and makefiles sufficient to build modules\ against the %{?2:%{2} }kernel package.\ %{nil} # # This macro creates an empty kernel--devel-matched package that # requires both the core and devel packages locked on the same version. # %%kernel_devel_matched_package [-m] # %define kernel_devel_matched_package(m) \ %package %{?1:%{1}-}devel-matched\ Summary: Meta package to install matching core and devel packages for a given %{?2:%{2} }kernel\ Requires: %{package_name}%{?1:-%{1}}-devel = %{specrpmversion}-%{release}\ Requires: %{package_name}%{?1:-%{1}}-core = %{specrpmversion}-%{release}\ %description %{?1:%{1}-}devel-matched\ This meta package is used to install matching core and devel packages for a given %{?2:%{2} }kernel.\ %{nil} # # kernel--ipaclones-internal package # %define kernel_ipaclones_package() \ %package %{?1:%{1}-}ipaclones-internal\ Summary: *.ipa-clones files generated by -fdump-ipa-clones for kernel%{?1:-%{1}}\ Group: System Environment/Kernel\ AutoReqProv: no\ %description %{?1:%{1}-}ipaclones-internal\ This package provides *.ipa-clones files.\ %{nil} # # This macro creates a kernel--modules-internal package. # %%kernel_modules_internal_package # %define kernel_modules_internal_package() \ %package %{?1:%{1}-}modules-internal\ Summary: Extra kernel modules to match the %{?2:%{2} }kernel\ Group: System Environment/Kernel\ Provides: kernel%{?1:-%{1}}-modules-internal-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: kernel%{?1:-%{1}}-modules-internal-%{_target_cpu} = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: kernel%{?1:-%{1}}-modules-internal = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: installonlypkg(kernel-module)\ Provides: kernel%{?1:-%{1}}-modules-internal-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ AutoReq: no\ AutoProv: yes\ %description %{?1:%{1}-}modules-internal\ This package provides kernel modules for the %{?2:%{2} }kernel package for Red Hat internal usage.\ %{nil} # # This macro creates a kernel--modules-extra package. # %%kernel_modules_extra_package [-m] # %define kernel_modules_extra_package(m) \ %package %{?1:%{1}-}modules-extra\ Summary: Extra kernel modules to match the %{?2:%{2} }kernel\ Provides: kernel%{?1:-%{1}}-modules-extra-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: kernel%{?1:-%{1}}-modules-extra-%{_target_cpu} = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: kernel%{?1:-%{1}}-modules-extra = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: installonlypkg(kernel-module)\ Provides: kernel%{?1:-%{1}}-modules-extra-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ %if %{-m:1}%{!-m:0}\ Requires: kernel-modules-extra-uname-r = %{KVERREL}%{uname_variant %{?1:+%{1}}}\ %endif\ AutoReq: no\ AutoProv: yes\ %description %{?1:%{1}-}modules-extra\ This package provides less commonly used kernel modules for the %{?2:%{2} }kernel package.\ %{nil} # # This macro creates a kernel--modules package. # %%kernel_modules_package [-m] # %define kernel_modules_package(m) \ %package %{?1:%{1}-}modules\ Summary: kernel modules to match the %{?2:%{2}-}core kernel\ Provides: kernel%{?1:-%{1}}-modules-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: kernel-modules-%{_target_cpu} = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: kernel-modules = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: installonlypkg(kernel-module)\ Provides: kernel%{?1:-%{1}}-modules-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ %if %{-m:1}%{!-m:0}\ Requires: kernel-modules-uname-r = %{KVERREL}%{uname_variant %{?1:+%{1}}}\ %endif\ AutoReq: no\ AutoProv: yes\ %description %{?1:%{1}-}modules\ This package provides commonly used kernel modules for the %{?2:%{2}-}core kernel package.\ %{nil} # # This macro creates a kernel--modules-core package. # %%kernel_modules_core_package [-m] # %define kernel_modules_core_package(m) \ %package %{?1:%{1}-}modules-core\ Summary: Core kernel modules to match the %{?2:%{2}-}core kernel\ Provides: kernel%{?1:-%{1}}-modules-core-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: kernel-modules-core-%{_target_cpu} = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: kernel-modules-core = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: installonlypkg(kernel-module)\ Provides: kernel%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ %if %{-m:1}%{!-m:0}\ Requires: kernel-modules-core-uname-r = %{KVERREL}%{uname_variant %{?1:+%{1}}}\ %endif\ AutoReq: no\ AutoProv: yes\ %description %{?1:%{1}-}modules-core\ This package provides essential kernel modules for the %{?2:%{2}-}core kernel package.\ %{nil} # # this macro creates a kernel- meta package. # %%kernel_meta_package # %define kernel_meta_package() \ %package %{1}\ summary: kernel meta-package for the %{1} kernel\ Requires: kernel-%{1}-core-uname-r = %{KVERREL}%{uname_suffix %{1}}\ Requires: kernel-%{1}-modules-uname-r = %{KVERREL}%{uname_suffix %{1}}\ Requires: kernel-%{1}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{1}}\ %if "%{1}" == "rt" || "%{1}" == "rt-debug" || "%{1}" == "rt-64k" || "%{1}" == "rt-64k-debug"\ Requires: realtime-setup\ %endif\ Provides: installonlypkg(kernel)\ %description %{1}\ The meta-package for the %{1} kernel\ %{nil} %if %{with_realtime} || %{with_realtime_arm64_64k} # # this macro creates a kernel-rt--kvm package # %%kernel_kvm_package # %define kernel_kvm_package() \ %package %{?1:%{1}-}kvm\ Summary: KVM modules for package kernel%{?1:-%{1}}\ Group: System Environment/Kernel\ Requires: kernel-uname-r = %{KVERREL}%{uname_suffix %{?1:%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Provides: installonlypkg(kernel-module)\ Provides: kernel%{?1:-%{1}}-kvm-%{_target_cpu} = %{version}-%{release}\ AutoReq: no\ %description -n kernel%{?1:-%{1}}-kvm\ This package provides KVM modules for package kernel%{?1:-%{1}}.\ %{nil} %endif # # This macro creates a kernel- and its -devel and -debuginfo too. # %%define variant_summary The Linux kernel compiled for # %%kernel_variant_package [-n ] [-m] [-o] # %define kernel_variant_package(n:mo) \ %package %{?1:%{1}-}core\ Summary: %{variant_summary}\ Provides: kernel-%{?1:%{1}-}core-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Provides: installonlypkg(kernel)\ %if %{-m:1}%{!-m:0}\ Requires: kernel-core-uname-r = %{KVERREL}%{uname_variant %{?1:+%{1}}}\ Requires: kernel-%{?1:%{1}-}-modules-core-uname-r = %{KVERREL}%{uname_variant %{?1:+%{1}}}\ %endif\ %{expand:%%kernel_reqprovconf %{?1:%{1}} %{-o:%{-o}}}\ %if %{?1:1} %{!?1:0} \ %{expand:%%kernel_meta_package %{?1:%{1}}}\ %endif\ %{expand:%%kernel_devel_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}} %{-m:%{-m}}}\ %{expand:%%kernel_devel_matched_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}} %{-m:%{-m}}}\ %{expand:%%kernel_modules_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}} %{-m:%{-m}}}\ %{expand:%%kernel_modules_core_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}} %{-m:%{-m}}}\ %{expand:%%kernel_modules_extra_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}} %{-m:%{-m}}}\ %if %{-m:0}%{!-m:1}\ %{expand:%%kernel_modules_internal_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}}}\ %if 0%{!?fedora:1}\ %{expand:%%kernel_modules_partner_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}}}\ %endif\ %{expand:%%kernel_debuginfo_package %{?1:%{1}}}\ %endif\ %if "%{1}" == "rt" || "%{1}" == "rt-debug" || "%{1}" == "rt-64k" || "%{1}" == "rt-64k-debug"\ %{expand:%%kernel_kvm_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}}}\ %else \ %if %{with_efiuki}\ %package %{?1:%{1}-}uki-virt\ Summary: %{variant_summary} unified kernel image for virtual machines\ Provides: installonlypkg(kernel)\ Provides: kernel-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires(pre): %{kernel_prereq}\ Requires(pre): systemd >= 254-1\ %package %{?1:%{1}-}uki-virt-addons\ Summary: %{variant_summary} unified kernel image addons for virtual machines\ Provides: installonlypkg(kernel)\ Requires: kernel%{?1:-%{1}}-uki-virt = %{specrpmversion}-%{release}\ Requires(pre): systemd >= 254-1\ %endif\ %endif\ %if %{with_gcov}\ %{expand:%%kernel_gcov_package %{?1:%{1}}}\ %endif\ %{nil} # # This macro creates a kernel--modules-partner package. # %%kernel_modules_partner_package # %define kernel_modules_partner_package() \ %package %{?1:%{1}-}modules-partner\ Summary: Extra kernel modules to match the %{?2:%{2} }kernel\ Group: System Environment/Kernel\ Provides: kernel%{?1:-%{1}}-modules-partner-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: kernel%{?1:-%{1}}-modules-partner-%{_target_cpu} = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: kernel%{?1:-%{1}}-modules-partner = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: installonlypkg(kernel-module)\ Provides: kernel%{?1:-%{1}}-modules-partner-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ AutoReq: no\ AutoProv: yes\ %description %{?1:%{1}-}modules-partner\ This package provides kernel modules for the %{?2:%{2} }kernel package for Red Hat partners usage.\ %{nil} # Now, each variant package. %if %{with_zfcpdump} %define variant_summary The Linux kernel compiled for zfcpdump usage %kernel_variant_package -o zfcpdump %description zfcpdump-core The kernel package contains the Linux kernel (vmlinuz) for use by the zfcpdump infrastructure. # with_zfcpdump %endif %if %{with_arm64_16k_base} %define variant_summary The Linux kernel compiled for 16k pagesize usage %kernel_variant_package 16k %description 16k-core The kernel package contains a variant of the ARM64 Linux kernel using a 16K page size. %endif %if %{with_arm64_16k} && %{with_debug} %define variant_summary The Linux kernel compiled with extra debugging enabled %if !%{debugbuildsenabled} %kernel_variant_package -m 16k-debug %else %kernel_variant_package 16k-debug %endif %description 16k-debug-core The debug kernel package contains a variant of the ARM64 Linux kernel using a 16K page size. This variant of the kernel has numerous debugging options enabled. It should only be installed when trying to gather additional information on kernel bugs, as some of these options impact performance noticably. %endif %if %{with_arm64_64k_base} %define variant_summary The Linux kernel compiled for 64k pagesize usage %kernel_variant_package 64k %description 64k-core The kernel package contains a variant of the ARM64 Linux kernel using a 64K page size. %endif %if %{with_arm64_64k} && %{with_debug} %define variant_summary The Linux kernel compiled with extra debugging enabled %if !%{debugbuildsenabled} %kernel_variant_package -m 64k-debug %else %kernel_variant_package 64k-debug %endif %description 64k-debug-core The debug kernel package contains a variant of the ARM64 Linux kernel using a 64K page size. This variant of the kernel has numerous debugging options enabled. It should only be installed when trying to gather additional information on kernel bugs, as some of these options impact performance noticably. %endif %if %{with_debug} && %{with_realtime} %define variant_summary The Linux PREEMPT_RT kernel compiled with extra debugging enabled %kernel_variant_package rt-debug %description rt-debug-core The kernel package contains the Linux kernel (vmlinuz), the core of any Linux operating system. The kernel handles the basic functions of the operating system: memory allocation, process allocation, device input and output, etc. This variant of the kernel has numerous debugging options enabled. It should only be installed when trying to gather additional information on kernel bugs, as some of these options impact performance noticably. %endif %if %{with_realtime_base} %define variant_summary The Linux kernel compiled with PREEMPT_RT enabled %kernel_variant_package rt %description rt-core This package includes a version of the Linux kernel compiled with the PREEMPT_RT real-time preemption support %endif %if %{with_realtime_arm64_64k_base} %define variant_summary The Linux PREEMPT_RT kernel compiled for 64k pagesize usage %kernel_variant_package rt-64k %description rt-64k-core The kernel package contains a variant of the ARM64 Linux PREEMPT_RT kernel using a 64K page size. %endif %if %{with_realtime_arm64_64k} && %{with_debug} %define variant_summary The Linux PREEMPT_RT kernel compiled with extra debugging enabled %if !%{debugbuildsenabled} %kernel_variant_package -m rt-64k-debug %else %kernel_variant_package rt-64k-debug %endif %description rt-64k-debug-core The debug kernel package contains a variant of the ARM64 Linux PREEMPT_RT kernel using a 64K page size. This variant of the kernel has numerous debugging options enabled. It should only be installed when trying to gather additional information on kernel bugs, as some of these options impact performance noticably. %endif %if %{with_debug} && %{with_automotive} %define variant_summary The Linux Automotive kernel compiled with extra debugging enabled %kernel_variant_package automotive-debug %description automotive-debug-core The kernel package contains the Linux kernel (vmlinuz), the core of any Linux operating system. The kernel handles the basic functions of the operating system: memory allocation, process allocation, device input and output, etc. This variant of the kernel has numerous debugging options enabled. It should only be installed when trying to gather additional information on kernel bugs, as some of these options impact performance noticably. %endif %if %{with_automotive_base} %define variant_summary The Linux kernel compiled with PREEMPT_RT enabled %kernel_variant_package automotive %description automotive-core This package includes a version of the Linux kernel compiled with the PREEMPT_RT real-time preemption support, targeted for Automotive platforms %endif %if %{with_up} && %{with_debug} %if !%{debugbuildsenabled} %kernel_variant_package -m debug %else %kernel_variant_package debug %endif %description debug-core The kernel package contains the Linux kernel (vmlinuz), the core of any Linux operating system. The kernel handles the basic functions of the operating system: memory allocation, process allocation, device input and output, etc. This variant of the kernel has numerous debugging options enabled. It should only be installed when trying to gather additional information on kernel bugs, as some of these options impact performance noticably. %endif %if %{with_up_base} # And finally the main -core package %define variant_summary The Linux kernel %kernel_variant_package %description core The kernel package contains the Linux kernel (vmlinuz), the core of any Linux operating system. The kernel handles the basic functions of the operating system: memory allocation, process allocation, device input and output, etc. %endif %if %{with_up} && %{with_debug} && %{with_efiuki} %description debug-uki-virt Prebuilt debug unified kernel image for virtual machines. %description debug-uki-virt-addons Prebuilt debug unified kernel image addons for virtual machines. %endif %if %{with_up_base} && %{with_efiuki} %description uki-virt Prebuilt default unified kernel image for virtual machines. %description uki-virt-addons Prebuilt default unified kernel image addons for virtual machines. %endif %if %{with_arm64_16k} && %{with_debug} && %{with_efiuki} %description 16k-debug-uki-virt Prebuilt 16k debug unified kernel image for virtual machines. %description 16k-debug-uki-virt-addons Prebuilt 16k debug unified kernel image addons for virtual machines. %endif %if %{with_arm64_16k_base} && %{with_efiuki} %description 16k-uki-virt Prebuilt 16k unified kernel image for virtual machines. %description 16k-uki-virt-addons Prebuilt 16k unified kernel image addons for virtual machines. %endif %if %{with_arm64_64k} && %{with_debug} && %{with_efiuki} %description 64k-debug-uki-virt Prebuilt 64k debug unified kernel image for virtual machines. %description 64k-debug-uki-virt-addons Prebuilt 64k debug unified kernel image addons for virtual machines. %endif %if %{with_arm64_64k_base} && %{with_efiuki} %description 64k-uki-virt Prebuilt 64k unified kernel image for virtual machines. %description 64k-uki-virt-addons Prebuilt 64k unified kernel image addons for virtual machines. %endif %if %{with_ipaclones} %kernel_ipaclones_package %endif %define log_msg() \ { set +x; } 2>/dev/null \ _log_msglineno=$(grep -n %{*} %{_specdir}/${RPM_PACKAGE_NAME}.spec | grep log_msg | cut -d":" -f1) \ echo "kernel.spec:${_log_msglineno}: %{*}" \ set -x %prep %{log_msg "Start of prep stage"} %{log_msg "Sanity checks"} # do a few sanity-checks for --with *only builds %if %{with_baseonly} %if !%{with_up} %{log_msg "Cannot build --with baseonly, up build is disabled"} exit 1 %endif %endif # more sanity checking; do it quietly if [ "%{patches}" != "%%{patches}" ] ; then for patch in %{patches} ; do if [ ! -f $patch ] ; then %{log_msg "ERROR: Patch ${patch##/*/} listed in specfile but is missing"} exit 1 fi done fi 2>/dev/null patch_command='git --work-tree=. apply' ApplyPatch() { local patch=$1 shift if [ ! -f $RPM_SOURCE_DIR/$patch ]; then exit 1 fi if ! grep -E "^Patch[0-9]+: $patch\$" %{_specdir}/${RPM_PACKAGE_NAME}.spec ; then if [ "${patch:0:8}" != "patch-%{kversion}." ] ; then %{log_msg "ERROR: Patch $patch not listed as a source patch in specfile"} exit 1 fi fi 2>/dev/null case "$patch" in *.bz2) bunzip2 < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;; *.gz) gunzip < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;; *.xz) unxz < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;; *) $patch_command ${1+"$@"} < "$RPM_SOURCE_DIR/$patch" ;; esac } # don't apply patch if it's empty ApplyOptionalPatch() { local patch=$1 shift %{log_msg "ApplyOptionalPatch: $1"} if [ ! -f $RPM_SOURCE_DIR/$patch ]; then exit 1 fi local C=$(wc -l $RPM_SOURCE_DIR/$patch | awk '{print $1}') if [ "$C" -gt 9 ]; then ApplyPatch $patch ${1+"$@"} fi } %{log_msg "Untar kernel tarball"} %setup -q -n kernel-%{tarfile_release} -c mv linux-%{tarfile_release} linux-%{KVERREL} cd linux-%{KVERREL} cp -a %{SOURCE1} . %{log_msg "Start of patch applications"} %if !%{nopatches} ApplyOptionalPatch patch-%{patchversion}-redhat.patch %endif ApplyOptionalPatch linux-kernel-test.patch %{log_msg "End of patch applications"} # END OF PATCH APPLICATIONS # Any further pre-build tree manipulations happen here. %{log_msg "Pre-build tree manipulations"} chmod +x scripts/checkpatch.pl mv COPYING COPYING-%{specrpmversion}-%{release} # on linux-next prevent scripts/setlocalversion from mucking with our version numbers rm -f localversion-next localversion-rt # Mangle /usr/bin/python shebangs to /usr/bin/python3 # Mangle all Python shebangs to be Python 3 explicitly # -p preserves timestamps # -n prevents creating ~backup files # -i specifies the interpreter for the shebang # This fixes errors such as # *** ERROR: ambiguous python shebang in /usr/bin/kvm_stat: #!/usr/bin/python. Change it to python3 (or python2) explicitly. # We patch all sources below for which we got a report/error. %{log_msg "Fixing Python shebangs..."} %py3_shebang_fix \ tools/kvm/kvm_stat/kvm_stat \ scripts/show_delta \ scripts/diffconfig \ scripts/bloat-o-meter \ scripts/jobserver-exec \ tools \ Documentation \ scripts/clang-tools 2> /dev/null # only deal with configs if we are going to build for the arch %ifnarch %nobuildarches if [ -L configs ]; then rm -f configs fi mkdir configs cd configs %{log_msg "Copy additional source files into buildroot"} # Drop some necessary files from the source dir into the buildroot cp $RPM_SOURCE_DIR/%{name}-*.config . cp %{SOURCE80} . # merge.py cp %{SOURCE3000} . # kernel-local - rename and copy for partial snippet config process cp %{SOURCE3001} partial-kernel-local-snip.config cp %{SOURCE3001} partial-kernel-local-debug-snip.config FLAVOR=%{primary_target} SPECPACKAGE_NAME=%{name} SPECVERSION=%{specversion} SPECRPMVERSION=%{specrpmversion} ./generate_all_configs.sh %{debugbuildsenabled} # Collect custom defined config options %{log_msg "Collect custom defined config options"} PARTIAL_CONFIGS="" %if %{with_gcov} PARTIAL_CONFIGS="$PARTIAL_CONFIGS %{SOURCE70} %{SOURCE71}" %endif %if %{with toolchain_clang} PARTIAL_CONFIGS="$PARTIAL_CONFIGS %{SOURCE72} %{SOURCE73}" %endif %if %{with clang_lto} PARTIAL_CONFIGS="$PARTIAL_CONFIGS %{SOURCE74} %{SOURCE75} %{SOURCE76} %{SOURCE77}" %endif PARTIAL_CONFIGS="$PARTIAL_CONFIGS partial-kernel-local-snip.config partial-kernel-local-debug-snip.config" GetArch() { case "$1" in *aarch64*) echo "aarch64" ;; *ppc64le*) echo "ppc64le" ;; *s390x*) echo "s390x" ;; *x86_64*) echo "x86_64" ;; *riscv64*) echo "riscv64" ;; # no arch, apply everywhere *) echo "" ;; esac } # Merge in any user-provided local config option changes %{log_msg "Merge in any user-provided local config option changes"} %ifnarch %nobuildarches for i in %{all_configs} do kern_arch="$(GetArch $i)" kern_debug="$(echo $i | grep -q debug && echo "debug" || echo "")" for j in $PARTIAL_CONFIGS do part_arch="$(GetArch $j)" part_debug="$(echo $j | grep -q debug && echo "debug" || echo "")" # empty arch means apply to all arches if [ "$part_arch" == "" -o "$part_arch" == "$kern_arch" ] && [ "$part_debug" == "$kern_debug" ] then mv $i $i.tmp ./merge.py $j $i.tmp > $i fi done rm -f $i.tmp done %endif %if %{signkernel}%{signmodules} # Add DUP and kpatch certificates to system trusted keys for RHEL %if 0%{?rhel} %{log_msg "Add DUP and kpatch certificates to system trusted keys for RHEL"} openssl x509 -inform der -in %{SOURCE100} -out rheldup3.pem openssl x509 -inform der -in %{SOURCE101} -out rhelkpatch1.pem openssl x509 -inform der -in %{SOURCE102} -out nvidiagpuoot001.pem cat rheldup3.pem rhelkpatch1.pem nvidiagpuoot001.pem > ../certs/rhel.pem %if %{signkernel} %ifarch s390x ppc64le openssl x509 -inform der -in %{secureboot_ca_0} -out secureboot.pem cat secureboot.pem >> ../certs/rhel.pem %endif %endif # rhel %endif openssl x509 -inform der -in %{ima_ca_cert} -out imaca.pem cat imaca.pem >> ../certs/rhel.pem for i in *.config; do sed -i 's@CONFIG_SYSTEM_TRUSTED_KEYS=""@CONFIG_SYSTEM_TRUSTED_KEYS="certs/rhel.pem"@' $i done %endif # Adjust FIPS module name for RHEL %if 0%{?rhel} %{log_msg "Adjust FIPS module name for RHEL"} for i in *.config; do sed -i 's/CONFIG_CRYPTO_FIPS_NAME=.*/CONFIG_CRYPTO_FIPS_NAME="Red Hat Enterprise Linux %{rhel} - Kernel Cryptographic API"/' $i done %endif %{log_msg "Set process_configs.sh $OPTS"} cp %{SOURCE81} . OPTS="" %if %{with_configchecks} OPTS="$OPTS -w -n -c" %endif %if %{with clang_lto} for opt in %{clang_make_opts}; do OPTS="$OPTS -m $opt" done %endif %{log_msg "Generate redhat configs"} RHJOBS=$RPM_BUILD_NCPUS SPECPACKAGE_NAME=%{name} ./process_configs.sh $OPTS %{specrpmversion} # We may want to override files from the primary target in case of building # against a flavour of it (eg. centos not rhel), thus override it here if # necessary update_scripts() { TARGET="$1" for i in "$RPM_SOURCE_DIR"/*."$TARGET"; do NEW=${i%."$TARGET"} cp "$i" "$(basename "$NEW")" done } %{log_msg "Set scripts/SOURCES targets"} update_target=%{primary_target} if [ "%{primary_target}" == "rhel" ]; then : # no-op to avoid empty if-fi error %if 0%{?centos} update_scripts $update_target %{log_msg "Updating scripts/sources to centos version"} update_target=centos %endif fi update_scripts $update_target %endif %{log_msg "End of kernel config"} cd .. # # End of Configs stuff # get rid of unwanted files resulting from patch fuzz find . \( -name "*.orig" -o -name "*~" \) -delete >/dev/null # remove unnecessary SCM files find . -name .gitignore -delete >/dev/null cd .. ### ### build ### %build %{log_msg "Start of build stage"} %{log_msg "General arch build configuration"} rm -rf %{buildroot_unstripped} || true mkdir -p %{buildroot_unstripped} %if %{with_sparse} %define sparse_mflags C=1 %endif cp_vmlinux() { eu-strip --remove-comment -o "$2" "$1" } # Note we need to disable these flags for cross builds because the flags # from redhat-rpm-config assume that host == target so target arch # flags cause issues with the host compiler. %if !%{with_cross} %define build_hostcflags %{?build_cflags} %define build_hostldflags %{?build_ldflags} %endif %define make %{__make} %{?cross_opts} %{?make_opts} HOSTCFLAGS="%{?build_hostcflags}" HOSTLDFLAGS="%{?build_hostldflags}" InitBuildVars() { %{log_msg "InitBuildVars for $1"} %{log_msg "InitBuildVars: Initialize build variables"} # Initialize the kernel .config file and create some variables that are # needed for the actual build process. Variant=$1 # Pick the right kernel config file Config=%{name}-%{specrpmversion}-%{_target_cpu}${Variant:+-${Variant}}.config DevelDir=/usr/src/kernels/%{KVERREL}${Variant:++${Variant}} KernelVer=%{specversion}-%{release}.%{_target_cpu}${Variant:++${Variant}} %{log_msg "InitBuildVars: Update Makefile"} # make sure EXTRAVERSION says what we want it to say # Trim the release if this is a CI build, since KERNELVERSION is limited to 64 characters ShortRel=$(perl -e "print \"%{release}\" =~ s/\.pr\.[0-9A-Fa-f]{32}//r") perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${ShortRel}.%{_target_cpu}${Variant:++${Variant}}/" Makefile # if pre-rc1 devel kernel, must fix up PATCHLEVEL for our versioning scheme # if we are post rc1 this should match anyway so this won't matter perl -p -i -e 's/^PATCHLEVEL.*/PATCHLEVEL = %{patchlevel}/' Makefile %{log_msg "InitBuildVars: Copy files"} %{make} %{?_smp_mflags} mrproper cp configs/$Config .config %if %{signkernel}%{signmodules} cp configs/x509.genkey certs/. %endif %if %{with_debuginfo} == 0 sed -i 's/^\(CONFIG_DEBUG_INFO.*\)=y/# \1 is not set/' .config %endif Arch=`head -1 .config | cut -b 3-` %{log_msg "InitBuildVars: USING ARCH=$Arch"} KCFLAGS="%{?kcflags}" # add kpatch flags for base kernel %{log_msg "InitBuildVars: Configure KCFLAGS"} if [ "$Variant" == "" ]; then KCFLAGS="$KCFLAGS %{?kpatch_kcflags}" fi } BuildKernel() { %{log_msg "BuildKernel for $4"} MakeTarget=$1 KernelImage=$2 DoVDSO=$3 Variant=$4 InstallName=${5:-vmlinuz} %{log_msg "Setup variables"} DoModules=1 if [ "$Variant" = "zfcpdump" ]; then DoModules=0 fi # When the bootable image is just the ELF kernel, strip it. # We already copy the unstripped file into the debuginfo package. if [ "$KernelImage" = vmlinux ]; then CopyKernel=cp_vmlinux else CopyKernel=cp fi %if %{with_gcov} %{log_msg "Setup build directories"} # Make build directory unique for each variant, so that gcno symlinks # are also unique for each variant. if [ -n "$Variant" ]; then ln -s $(pwd) ../linux-%{KVERREL}-${Variant} fi %{log_msg "GCOV - continuing build in: $(pwd)"} pushd ../linux-%{KVERREL}${Variant:+-${Variant}} pwd > ../kernel${Variant:+-${Variant}}-gcov.list %endif %{log_msg "Calling InitBuildVars for $Variant"} InitBuildVars $Variant %{log_msg "BUILDING A KERNEL FOR ${Variant} %{_target_cpu}..."} %{make} ARCH=$Arch olddefconfig >/dev/null %{log_msg "Setup build-ids"} # This ensures build-ids are unique to allow parallel debuginfo perl -p -i -e "s/^CONFIG_BUILD_SALT.*/CONFIG_BUILD_SALT=\"%{KVERREL}\"/" .config %{make} ARCH=$Arch KCFLAGS="$KCFLAGS" WITH_GCOV="%{?with_gcov}" %{?_smp_mflags} $MakeTarget %{?sparse_mflags} %{?kernel_mflags} if [ $DoModules -eq 1 ]; then %{make} ARCH=$Arch KCFLAGS="$KCFLAGS" WITH_GCOV="%{?with_gcov}" %{?_smp_mflags} modules %{?sparse_mflags} || exit 1 fi %{log_msg "Setup RPM_BUILD_ROOT directories"} mkdir -p $RPM_BUILD_ROOT/%{image_install_path} mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/systemtap %if %{with_debuginfo} mkdir -p $RPM_BUILD_ROOT%{debuginfodir}/%{image_install_path} %endif %ifarch aarch64 riscv64 %{log_msg "Build dtb kernel"} %{make} ARCH=$Arch dtbs INSTALL_DTBS_PATH=$RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer %{make} ARCH=$Arch dtbs_install INSTALL_DTBS_PATH=$RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer cp -r $RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer $RPM_BUILD_ROOT/lib/modules/$KernelVer/dtb find arch/$Arch/boot/dts -name '*.dtb' -type f -delete %endif %{log_msg "Cleanup temp btf files"} # Remove large intermediate files we no longer need to save space # (-f required for zfcpdump builds that do not enable BTF) rm -f vmlinux.o .tmp_vmlinux.btf %{log_msg "Install files to RPM_BUILD_ROOT"} # Comment out specific config settings that may use resources not available # to the end user so that the packaged config file can be easily reused with # upstream make targets %if %{signkernel}%{signmodules} sed -i -e '/^CONFIG_SYSTEM_TRUSTED_KEYS/{ i\# The kernel was built with s/^/# / a\# We are resetting this value to facilitate local builds a\CONFIG_SYSTEM_TRUSTED_KEYS="" }' .config %endif # Start installing the results install -m 644 .config $RPM_BUILD_ROOT/boot/config-$KernelVer install -m 644 .config $RPM_BUILD_ROOT/lib/modules/$KernelVer/config install -m 644 System.map $RPM_BUILD_ROOT/boot/System.map-$KernelVer install -m 644 System.map $RPM_BUILD_ROOT/lib/modules/$KernelVer/System.map %{log_msg "Create initrfamfs"} # We estimate the size of the initramfs because rpm needs to take this size # into consideration when performing disk space calculations. (See bz #530778) dd if=/dev/zero of=$RPM_BUILD_ROOT/boot/initramfs-$KernelVer.img bs=1M count=20 if [ -f arch/$Arch/boot/zImage.stub ]; then %{log_msg "Copy zImage.stub to RPM_BUILD_ROOT"} cp arch/$Arch/boot/zImage.stub $RPM_BUILD_ROOT/%{image_install_path}/zImage.stub-$KernelVer || : cp arch/$Arch/boot/zImage.stub $RPM_BUILD_ROOT/lib/modules/$KernelVer/zImage.stub-$KernelVer || : fi %if %{signkernel} %{log_msg "Copy kernel for signing"} if [ "$KernelImage" = vmlinux ]; then # We can't strip and sign $KernelImage in place, because # we need to preserve original vmlinux for debuginfo. # Use a copy for signing. $CopyKernel $KernelImage $KernelImage.tosign KernelImage=$KernelImage.tosign CopyKernel=cp fi SignImage=$KernelImage %ifarch x86_64 aarch64 %{log_msg "Sign kernel image"} %pesign -s -i $SignImage -o vmlinuz.signed -a %{secureboot_ca_0} -c %{secureboot_key_0} -n %{pesign_name_0} %endif %ifarch s390x ppc64le if [ -x /usr/bin/rpm-sign ]; then rpm-sign --key "%{pesign_name_0}" --lkmsign $SignImage --output vmlinuz.signed elif [ "$DoModules" == "1" -a "%{signmodules}" == "1" ]; then chmod +x scripts/sign-file ./scripts/sign-file -p sha256 certs/signing_key.pem certs/signing_key.x509 $SignImage vmlinuz.signed else mv $SignImage vmlinuz.signed fi %endif if [ ! -s vmlinuz.signed ]; then %{log_msg "pesigning failed"} exit 1 fi mv vmlinuz.signed $SignImage # signkernel %endif %{log_msg "copy signed kernel"} $CopyKernel $KernelImage \ $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer chmod 755 $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer cp $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer $RPM_BUILD_ROOT/lib/modules/$KernelVer/$InstallName # hmac sign the kernel for FIPS %{log_msg "hmac sign the kernel for FIPS"} %{log_msg "Creating hmac file: $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac"} ls -l $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer (cd $RPM_BUILD_ROOT/%{image_install_path} && sha512hmac $InstallName-$KernelVer) > $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac; cp $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac $RPM_BUILD_ROOT/lib/modules/$KernelVer/.vmlinuz.hmac if [ $DoModules -eq 1 ]; then %{log_msg "Install modules in RPM_BUILD_ROOT"} # Override $(mod-fw) because we don't want it to install any firmware # we'll get it from the linux-firmware package and we don't want conflicts %{make} %{?_smp_mflags} ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT %{?_smp_mflags} modules_install KERNELRELEASE=$KernelVer mod-fw= fi %if %{with_gcov} %{log_msg "install gcov-needed files to $BUILDROOT/$BUILD/"} # install gcov-needed files to $BUILDROOT/$BUILD/...: # gcov_info->filename is absolute path # gcno references to sources can use absolute paths (e.g. in out-of-tree builds) # sysfs symlink targets (set up at compile time) use absolute paths to BUILD dir find . \( -name '*.gcno' -o -name '*.[chS]' \) -exec install -D '{}' "$RPM_BUILD_ROOT/$(pwd)/{}" \; %endif %{log_msg "Add VDSO files"} # add an a noop %%defattr statement 'cause rpm doesn't like empty file list files echo '%%defattr(-,-,-)' > ../kernel${Variant:+-${Variant}}-ldsoconf.list if [ $DoVDSO -ne 0 ]; then %{make} ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT vdso_install KERNELRELEASE=$KernelVer if [ -s ldconfig-kernel.conf ]; then install -D -m 444 ldconfig-kernel.conf \ $RPM_BUILD_ROOT/etc/ld.so.conf.d/kernel-$KernelVer.conf echo /etc/ld.so.conf.d/kernel-$KernelVer.conf >> ../kernel${Variant:+-${Variant}}-ldsoconf.list fi rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/vdso/.build-id fi %{log_msg "Save headers/makefiles, etc. for kernel-headers"} # And save the headers/makefiles etc for building modules against # # This all looks scary, but the end result is supposed to be: # * all arch relevant include/ files # * all Makefile/Kconfig files # * all script/ files rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/source mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build (cd $RPM_BUILD_ROOT/lib/modules/$KernelVer ; ln -s build source) # dirs for additional modules per module-init-tools, kbuild/modules.txt mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/updates mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/weak-updates # CONFIG_KERNEL_HEADER_TEST generates some extra files in the process of # testing so just delete find . -name *.h.s -delete # first copy everything cp --parents `find -type f -name "Makefile*" -o -name "Kconfig*"` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build if [ ! -e Module.symvers ]; then touch Module.symvers fi cp Module.symvers $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp System.map $RPM_BUILD_ROOT/lib/modules/$KernelVer/build if [ -s Module.markers ]; then cp Module.markers $RPM_BUILD_ROOT/lib/modules/$KernelVer/build fi # create the kABI metadata for use in packaging # NOTENOTE: the name symvers is used by the rpm backend # NOTENOTE: to discover and run the /usr/lib/rpm/fileattrs/kabi.attr # NOTENOTE: script which dynamically adds exported kernel symbol # NOTENOTE: checksums to the rpm metadata provides list. # NOTENOTE: if you change the symvers name, update the backend too %{log_msg "GENERATING kernel ABI metadata"} %compression --stdout %compression_flags < Module.symvers > $RPM_BUILD_ROOT/boot/symvers-$KernelVer.%compext cp $RPM_BUILD_ROOT/boot/symvers-$KernelVer.%compext $RPM_BUILD_ROOT/lib/modules/$KernelVer/symvers.%compext %if %{with_kabichk} %{log_msg "kABI checking is enabled in kernel SPEC file."} chmod 0755 $RPM_SOURCE_DIR/check-kabi if [ -e $RPM_SOURCE_DIR/Module.kabi_%{_target_cpu}$Variant ]; then cp $RPM_SOURCE_DIR/Module.kabi_%{_target_cpu}$Variant $RPM_BUILD_ROOT/Module.kabi $RPM_SOURCE_DIR/check-kabi -k $RPM_BUILD_ROOT/Module.kabi -s Module.symvers || exit 1 # for now, don't keep it around. rm $RPM_BUILD_ROOT/Module.kabi else %{log_msg "NOTE: Cannot find reference Module.kabi file."} fi %endif %if %{with_kabidupchk} %{log_msg "kABI DUP checking is enabled in kernel SPEC file."} if [ -e $RPM_SOURCE_DIR/Module.kabi_dup_%{_target_cpu}$Variant ]; then cp $RPM_SOURCE_DIR/Module.kabi_dup_%{_target_cpu}$Variant $RPM_BUILD_ROOT/Module.kabi $RPM_SOURCE_DIR/check-kabi -k $RPM_BUILD_ROOT/Module.kabi -s Module.symvers || exit 1 # for now, don't keep it around. rm $RPM_BUILD_ROOT/Module.kabi else %{log_msg "NOTE: Cannot find DUP reference Module.kabi file."} fi %endif %if %{with_kabidw_base} # Don't build kabi base for debug kernels if [ "$Variant" != "zfcpdump" -a "$Variant" != "debug" ]; then mkdir -p $RPM_BUILD_ROOT/kabi-dwarf tar -xvf %{SOURCE301} -C $RPM_BUILD_ROOT/kabi-dwarf mkdir -p $RPM_BUILD_ROOT/kabi-dwarf/stablelists tar -xvf %{SOURCE300} -C $RPM_BUILD_ROOT/kabi-dwarf/stablelists %{log_msg "GENERATING DWARF-based kABI baseline dataset"} chmod 0755 $RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh $RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh generate \ "$RPM_BUILD_ROOT/kabi-dwarf/stablelists/kabi-current/kabi_stablelist_%{_target_cpu}" \ "$(pwd)" \ "$RPM_BUILD_ROOT/kabidw-base/%{_target_cpu}${Variant:+.${Variant}}" || : rm -rf $RPM_BUILD_ROOT/kabi-dwarf fi %endif %if %{with_kabidwchk} if [ "$Variant" != "zfcpdump" ]; then mkdir -p $RPM_BUILD_ROOT/kabi-dwarf tar -xvf %{SOURCE301} -C $RPM_BUILD_ROOT/kabi-dwarf if [ -d "$RPM_BUILD_ROOT/kabi-dwarf/base/%{_target_cpu}${Variant:+.${Variant}}" ]; then mkdir -p $RPM_BUILD_ROOT/kabi-dwarf/stablelists tar -xvf %{SOURCE300} -C $RPM_BUILD_ROOT/kabi-dwarf/stablelists %{log_msg "GENERATING DWARF-based kABI dataset"} chmod 0755 $RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh $RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh generate \ "$RPM_BUILD_ROOT/kabi-dwarf/stablelists/kabi-current/kabi_stablelist_%{_target_cpu}" \ "$(pwd)" \ "$RPM_BUILD_ROOT/kabi-dwarf/base/%{_target_cpu}${Variant:+.${Variant}}.tmp" || : %{log_msg "kABI DWARF-based comparison report"} $RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh compare \ "$RPM_BUILD_ROOT/kabi-dwarf/base/%{_target_cpu}${Variant:+.${Variant}}" \ "$RPM_BUILD_ROOT/kabi-dwarf/base/%{_target_cpu}${Variant:+.${Variant}}.tmp" || : %{log_msg "End of kABI DWARF-based comparison report"} else %{log_msg "Baseline dataset for kABI DWARF-BASED comparison report not found"} fi rm -rf $RPM_BUILD_ROOT/kabi-dwarf fi %endif %{log_msg "Cleanup Makefiles/Kconfig files"} # then drop all but the needed Makefiles/Kconfig files rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include cp .config $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a scripts $RPM_BUILD_ROOT/lib/modules/$KernelVer/build rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts/tracing rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts/spdxcheck.py %ifarch s390x # CONFIG_EXPOLINE_EXTERN=y produces arch/s390/lib/expoline/expoline.o # which is needed during external module build. %{log_msg "Copy expoline.o"} if [ -f arch/s390/lib/expoline/expoline.o ]; then cp -a --parents arch/s390/lib/expoline/expoline.o $RPM_BUILD_ROOT/lib/modules/$KernelVer/build fi %endif %{log_msg "Copy additional files for make targets"} # Files for 'make scripts' to succeed with kernel-devel. mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/security/selinux/include cp -a --parents security/selinux/include/classmap.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents security/selinux/include/initial_sid_to_string.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/tools/include/tools cp -a --parents tools/include/tools/be_byteshift.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/include/tools/le_byteshift.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build # Files for 'make prepare' to succeed with kernel-devel. cp -a --parents tools/include/linux/compiler* $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/include/linux/types.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/build/Build.include $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents tools/build/fixdep.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents tools/objtool/sync-check.sh $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/bpf/resolve_btfids $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents security/selinux/include/policycap_names.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents security/selinux/include/policycap.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/include/asm $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/include/asm-generic $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/include/linux $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/include/uapi/asm $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/include/uapi/asm-generic $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/include/uapi/linux $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/include/vdso $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents tools/scripts/utilities.mak $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/lib/subcmd $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents tools/lib/*.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents tools/objtool/*.[ch] $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents tools/objtool/Build $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents tools/objtool/include/objtool/*.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/lib/bpf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents tools/lib/bpf/Build $RPM_BUILD_ROOT/lib/modules/$KernelVer/build if [ -f tools/objtool/objtool ]; then cp -a tools/objtool/objtool $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/tools/objtool/ || : fi if [ -f tools/objtool/fixdep ]; then cp -a tools/objtool/fixdep $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/tools/objtool/ || : fi if [ -d arch/$Arch/scripts ]; then cp -a arch/$Arch/scripts $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/%{_arch} || : fi if [ -f arch/$Arch/*lds ]; then cp -a arch/$Arch/*lds $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/%{_arch}/ || : fi if [ -f arch/%{asmarch}/kernel/module.lds ]; then cp -a --parents arch/%{asmarch}/kernel/module.lds $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ fi find $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts \( -iname "*.o" -o -iname "*.cmd" \) -exec rm -f {} + %ifarch ppc64le cp -a --parents arch/powerpc/lib/crtsavres.[So] $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ %endif if [ -d arch/%{asmarch}/include ]; then cp -a --parents arch/%{asmarch}/include $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ fi if [ -d tools/arch/%{asmarch}/include ]; then cp -a --parents tools/arch/%{asmarch}/include $RPM_BUILD_ROOT/lib/modules/$KernelVer/build fi %ifarch aarch64 # arch/arm64/include/asm/xen references arch/arm cp -a --parents arch/arm/include/asm/xen $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ # arch/arm64/include/asm/opcodes.h references arch/arm cp -a --parents arch/arm/include/asm/opcodes.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ %endif cp -a include $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include # Cross-reference from include/perf/events/sof.h cp -a sound/soc/sof/sof-audio.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/sound/soc/sof %ifarch i686 x86_64 # files for 'make prepare' to succeed with kernel-devel cp -a --parents arch/x86/entry/syscalls/syscall_32.tbl $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/entry/syscalls/syscall_64.tbl $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/tools/relocs_32.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/tools/relocs_64.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/tools/relocs.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/tools/relocs_common.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/tools/relocs.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/purgatory/purgatory.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/purgatory/stack.S $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/purgatory/setup-x86_64.S $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/purgatory/entry64.S $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/boot/string.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/boot/string.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/boot/ctype.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents scripts/syscalltbl.sh $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents scripts/syscallhdr.sh $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents tools/arch/x86/include/asm $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/arch/x86/include/uapi/asm $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/objtool/arch/x86/lib $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/arch/x86/lib/ $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/arch/x86/tools/gen-insn-attr-x86.awk $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/objtool/arch/x86/ $RPM_BUILD_ROOT/lib/modules/$KernelVer/build %endif %{log_msg "Clean up intermediate tools files"} # Clean up intermediate tools files find $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/tools \( -iname "*.o" -o -iname "*.cmd" \) -exec rm -f {} + # Make sure the Makefile, version.h, and auto.conf have a matching # timestamp so that external modules can be built touch -r $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/Makefile \ $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/generated/uapi/linux/version.h \ $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/config/auto.conf %if %{with_debuginfo} eu-readelf -n vmlinux | grep "Build ID" | awk '{print $NF}' > vmlinux.id cp vmlinux.id $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/vmlinux.id %{log_msg "Copy additional files for kernel-debuginfo rpm"} # # save the vmlinux file for kernel debugging into the kernel-debuginfo rpm # (use mv + symlink instead of cp to reduce disk space requirements) # mkdir -p $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer mv vmlinux $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer ln -s $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer/vmlinux vmlinux if [ -n "%{?vmlinux_decompressor}" ]; then eu-readelf -n %{vmlinux_decompressor} | grep "Build ID" | awk '{print $NF}' > vmlinux.decompressor.id # Without build-id the build will fail. But for s390 the build-id # wasn't added before 5.11. In case it is missing prefer not # packaging the debuginfo over a build failure. if [ -s vmlinux.decompressor.id ]; then cp vmlinux.decompressor.id $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/vmlinux.decompressor.id cp %{vmlinux_decompressor} $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer/vmlinux.decompressor fi fi # build and copy the vmlinux-gdb plugin files into kernel-debuginfo %{make} ARCH=$Arch %{?_smp_mflags} scripts_gdb cp -a --parents scripts/gdb/{,linux/}*.py $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer # this should be a relative symlink (Kbuild creates an absolute one) ln -s scripts/gdb/vmlinux-gdb.py $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer/vmlinux-gdb.py %py_byte_compile %{python3} $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer/scripts/gdb %endif %{log_msg "Create modnames"} find $RPM_BUILD_ROOT/lib/modules/$KernelVer -name "*.ko" -type f >modnames # mark modules executable so that strip-to-file can strip them xargs --no-run-if-empty chmod u+x < modnames # Generate a list of modules for block and networking. %{log_msg "Generate a list of modules for block and networking"} grep -F /drivers/ modnames | xargs --no-run-if-empty nm -upA | sed -n 's,^.*/\([^/]*\.ko\): *U \(.*\)$,\1 \2,p' > drivers.undef collect_modules_list() { sed -r -n -e "s/^([^ ]+) \\.?($2)\$/\\1/p" drivers.undef | LC_ALL=C sort -u > $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.$1 if [ ! -z "$3" ]; then sed -r -e "/^($3)\$/d" -i $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.$1 fi } collect_modules_list networking \ 'register_netdev|ieee80211_register_hw|usbnet_probe|phy_driver_register|rt(l_|2x00)(pci|usb)_probe|register_netdevice' collect_modules_list block \ 'ata_scsi_ioctl|scsi_add_host|scsi_add_host_with_dma|blk_alloc_queue|blk_init_queue|register_mtd_blktrans|scsi_esp_register|scsi_register_device_handler|blk_queue_physical_block_size' 'pktcdvd.ko|dm-mod.ko' collect_modules_list drm \ 'drm_open|drm_init' collect_modules_list modesetting \ 'drm_crtc_init' %{log_msg "detect missing or incorrect license tags"} # detect missing or incorrect license tags ( find $RPM_BUILD_ROOT/lib/modules/$KernelVer -name '*.ko' | xargs /sbin/modinfo -l | \ grep -E -v 'GPL( v2)?$|Dual BSD/GPL$|Dual MPL/GPL$|GPL and additional rights$' ) && exit 1 if [ $DoModules -eq 0 ]; then %{log_msg "Create empty files for RPM packaging"} # Ensure important files/directories exist to let the packaging succeed echo '%%defattr(-,-,-)' > ../kernel${Variant:+-${Variant}}-modules-core.list echo '%%defattr(-,-,-)' > ../kernel${Variant:+-${Variant}}-modules.list echo '%%defattr(-,-,-)' > ../kernel${Variant:+-${Variant}}-modules-extra.list echo '%%defattr(-,-,-)' > ../kernel${Variant:+-${Variant}}-modules-internal.list echo '%%defattr(-,-,-)' > ../kernel${Variant:+-${Variant}}-modules-partner.list mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/kernel # Add files usually created by make modules, needed to prevent errors # thrown by depmod during package installation touch $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.order touch $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.builtin fi # Copy the System.map file for depmod to use cp System.map $RPM_BUILD_ROOT/. if [[ "$Variant" == "rt" || "$Variant" == "rt-debug" || "$Variant" == "rt-64k" || "$Variant" == "rt-64k-debug" || "$Variant" == "automotive" || "$Variant" == "automotive-debug" ]]; then %{log_msg "Skipping efiuki build"} else %if %{with_efiuki} %{log_msg "Setup the EFI UKI kernel"} # RHEL/CentOS specific .SBAT entries %if 0%{?centos} SBATsuffix="centos" %else SBATsuffix="rhel" %endif SBAT=$(cat <<- EOF linux,1,Red Hat,linux,$KernelVer,mailto:secalert@redhat.com linux.$SBATsuffix,1,Red Hat,linux,$KernelVer,mailto:secalert@redhat.com kernel-uki-virt.$SBATsuffix,1,Red Hat,kernel-uki-virt,$KernelVer,mailto:secalert@redhat.com EOF ) KernelUnifiedImageDir="$RPM_BUILD_ROOT/lib/modules/$KernelVer" KernelUnifiedImage="$KernelUnifiedImageDir/$InstallName-virt.efi" mkdir -p $KernelUnifiedImageDir dracut --conf=%{SOURCE86} \ --confdir=$(mktemp -d) \ --verbose \ --kver "$KernelVer" \ --kmoddir "$RPM_BUILD_ROOT/lib/modules/$KernelVer/" \ --logfile=$(mktemp) \ --uefi \ %if 0%{?rhel} && !0%{?eln} --sbat "$SBAT" \ %endif --kernel-image $(realpath $KernelImage) \ --kernel-cmdline 'console=tty0 console=ttyS0' \ $KernelUnifiedImage KernelAddonsDirOut="$KernelUnifiedImage.extra.d" mkdir -p $KernelAddonsDirOut python3 %{SOURCE151} %{SOURCE152} $KernelAddonsDirOut virt %{primary_target} %{_target_cpu} %if %{signkernel} %{log_msg "Sign the EFI UKI kernel"} %if 0%{?fedora}%{?eln} %pesign -s -i $KernelUnifiedImage -o $KernelUnifiedImage.signed -a %{secureboot_ca_0} -c %{secureboot_key_0} -n %{pesign_name_0} %else %if 0%{?centos} UKI_secureboot_name=centossecureboot204 %else UKI_secureboot_name=redhatsecureboot504 %endif UKI_secureboot_cert=%{_datadir}/pki/sb-certs/secureboot-uki-virt-%{_arch}.cer %pesign -s -i $KernelUnifiedImage -o $KernelUnifiedImage.signed -a %{secureboot_ca_0} -c $UKI_secureboot_cert -n $UKI_secureboot_name # 0%{?fedora}%{?eln} %endif if [ ! -s $KernelUnifiedImage.signed ]; then echo "pesigning failed" exit 1 fi mv $KernelUnifiedImage.signed $KernelUnifiedImage for addon in "$KernelAddonsDirOut"/*; do %pesign -s -i $addon -o $addon.signed -a %{secureboot_ca_0} -c %{secureboot_key_0} -n %{pesign_name_0} rm -f $addon mv $addon.signed $addon done # signkernel %endif # hmac sign the UKI for FIPS KernelUnifiedImageHMAC="$KernelUnifiedImageDir/.$InstallName-virt.efi.hmac" %{log_msg "hmac sign the UKI for FIPS"} %{log_msg "Creating hmac file: $KernelUnifiedImageHMAC"} (cd $KernelUnifiedImageDir && sha512hmac $InstallName-virt.efi) > $KernelUnifiedImageHMAC; # with_efiuki %endif : # in case of empty block fi # "$Variant" == "rt" || "$Variant" == "rt-debug" || "$Variant" == "automotive" || "$Variant" == "automotive-debug" # # Generate the modules files lists # move_kmod_list() { local module_list="$1" local subdir_name="$2" mkdir -p "$RPM_BUILD_ROOT/lib/modules/$KernelVer/$subdir_name" set +x while read -r kmod; do local target_file="$RPM_BUILD_ROOT/lib/modules/$KernelVer/$subdir_name/$kmod" local target_dir="${target_file%/*}" mkdir -p "$target_dir" mv "$RPM_BUILD_ROOT/lib/modules/$KernelVer/kernel/$kmod" "$target_dir" done < <(sed -e 's|^kernel/||' "$module_list") set -x } create_module_file_list() { # subdirectory within /lib/modules/$KernelVer where kmods should go local module_subdir="$1" # kmod list with relative paths produced by filtermods.py local relative_kmod_list="$2" # list with absolute paths to kmods and other files to be included local absolute_file_list="$3" # if 1, this adds also all kmod directories to absolute_file_list local add_all_dirs="$4" local run_mod_deny="$5" if [ "$module_subdir" != "kernel" ]; then # move kmods into subdirs if needed (internal, partner, extra,..) move_kmod_list $relative_kmod_list $module_subdir fi # make kmod paths absolute sed -e 's|^kernel/|/lib/modules/'$KernelVer'/'$module_subdir'/|' $relative_kmod_list > $absolute_file_list if [ "$run_mod_deny" -eq 1 ]; then # run deny-mod script, this adds blacklist-* files to absolute_file_list %{SOURCE20} "$RPM_BUILD_ROOT" lib/modules/$KernelVer $absolute_file_list fi %if %{zipmodules} # deny-mod script works with kmods as they are now (not compressed), # but if they will be we need to add compext to all sed -i %{?zipsed} $absolute_file_list %endif # add also dir for the case when there are no kmods # "kernel" subdir is covered in %files section, skip it here if [ "$module_subdir" != "kernel" ]; then echo "%dir /lib/modules/$KernelVer/$module_subdir" >> $absolute_file_list fi if [ "$add_all_dirs" -eq 1 ]; then (cd $RPM_BUILD_ROOT; find lib/modules/$KernelVer/kernel -mindepth 1 -type d | sort -n) > ../module-dirs.list sed -e 's|^lib|%dir /lib|' ../module-dirs.list >> $absolute_file_list fi } if [ $DoModules -eq 1 ]; then # save modules.dep for debugging cp $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.dep ../ %{log_msg "Create module list files for all kernel variants"} variants_param="" if [[ "$Variant" == "rt" || "$Variant" == "rt-debug" ]]; then variants_param="-r rt" fi if [[ "$Variant" == "rt-64k" || "$Variant" == "rt-64k-debug" ]]; then variants_param="-r rt-64k" fi if [[ "$Variant" == "automotive" || "$Variant" == "automotive-debug" ]]; then variants_param="-r automotive" fi # this creates ../modules-*.list output, where each kmod path is as it # appears in modules.dep (relative to lib/modules/$KernelVer) ret=0 %{SOURCE22} -l "../filtermods-$KernelVer.log" sort -d $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.dep -c configs/def_variants.yaml $variants_param -o .. || ret=$? if [ $ret -ne 0 ]; then echo "8< --- filtermods-$KernelVer.log ---" cat "../filtermods-$KernelVer.log" echo "--- filtermods-$KernelVer.log --- >8" echo "8< --- modules.dep ---" cat $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.dep echo "--- modules.dep --- >8" exit 1 fi create_module_file_list "kernel" ../modules-core.list ../kernel${Variant:+-${Variant}}-modules-core.list 1 0 create_module_file_list "kernel" ../modules.list ../kernel${Variant:+-${Variant}}-modules.list 0 0 create_module_file_list "internal" ../modules-internal.list ../kernel${Variant:+-${Variant}}-modules-internal.list 0 1 create_module_file_list "kernel" ../modules-extra.list ../kernel${Variant:+-${Variant}}-modules-extra.list 0 1 if [[ "$Variant" == "rt" || "$Variant" == "rt-debug" ]]; then create_module_file_list "kvm" ../modules-rt-kvm.list ../kernel${Variant:+-${Variant}}-modules-rt-kvm.list 0 1 fi if [[ "$Variant" == "rt-64k" || "$Variant" == "rt-64k-debug" ]]; then create_module_file_list "kvm" ../modules-rt-64k-kvm.list ../kernel${Variant:+-${Variant}}-modules-rt-64k-kvm.list 0 1 fi %if 0%{!?fedora:1} create_module_file_list "partner" ../modules-partner.list ../kernel${Variant:+-${Variant}}-modules-partner.list 1 1 %endif fi # $DoModules -eq 1 remove_depmod_files() { # remove files that will be auto generated by depmod at rpm -i time pushd $RPM_BUILD_ROOT/lib/modules/$KernelVer/ # in case below list needs to be extended, remember to add a # matching ghost entry in the files section as well rm -f modules.{alias,alias.bin,builtin.alias.bin,builtin.bin} \ modules.{dep,dep.bin,devname,softdep,symbols,symbols.bin,weakdep} popd } # Cleanup %{log_msg "Cleanup build files"} rm -f $RPM_BUILD_ROOT/System.map %{log_msg "Remove depmod files"} remove_depmod_files %if %{with_cross} make -C $RPM_BUILD_ROOT/lib/modules/$KernelVer/build M=scripts clean make -C $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/tools/bpf/resolve_btfids clean sed -i 's/REBUILD_SCRIPTS_FOR_CROSS:=0/REBUILD_SCRIPTS_FOR_CROSS:=1/' $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/Makefile %endif # Move the devel headers out of the root file system %{log_msg "Move the devel headers to RPM_BUILD_ROOT"} mkdir -p $RPM_BUILD_ROOT/usr/src/kernels mv $RPM_BUILD_ROOT/lib/modules/$KernelVer/build $RPM_BUILD_ROOT/$DevelDir # This is going to create a broken link during the build, but we don't use # it after this point. We need the link to actually point to something # when kernel-devel is installed, and a relative link doesn't work across # the F17 UsrMove feature. ln -sf $DevelDir $RPM_BUILD_ROOT/lib/modules/$KernelVer/build %if %{with_debuginfo} # Generate vmlinux.h and put it to kernel-devel path # zfcpdump build does not have btf anymore if [ "$Variant" != "zfcpdump" ]; then %{log_msg "Build the bootstrap bpftool to generate vmlinux.h"} # Build the bootstrap bpftool to generate vmlinux.h export BPFBOOTSTRAP_CFLAGS=$(echo "%{__global_compiler_flags}" | sed -r "s/\-specs=[^\ ]+\/redhat-annobin-cc1//") export BPFBOOTSTRAP_LDFLAGS=$(echo "%{__global_ldflags}" | sed -r "s/\-specs=[^\ ]+\/redhat-annobin-cc1//") CFLAGS="" LDFLAGS="" make EXTRA_CFLAGS="${BPFBOOTSTRAP_CFLAGS}" EXTRA_CXXFLAGS="${BPFBOOTSTRAP_CFLAGS}" EXTRA_LDFLAGS="${BPFBOOTSTRAP_LDFLAGS}" %{?make_opts} %{?clang_make_opts} V=1 -C tools/bpf/bpftool bootstrap tools/bpf/bpftool/bootstrap/bpftool btf dump file vmlinux format c > $RPM_BUILD_ROOT/$DevelDir/vmlinux.h fi %endif %{log_msg "Cleanup kernel-devel and kernel-debuginfo files"} # prune junk from kernel-devel find $RPM_BUILD_ROOT/usr/src/kernels -name ".*.cmd" -delete # prune junk from kernel-debuginfo find $RPM_BUILD_ROOT/usr/src/kernels -name "*.mod.c" -delete # Red Hat UEFI Secure Boot CA cert, which can be used to authenticate the kernel %{log_msg "Install certs"} mkdir -p $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer %if %{signkernel} install -m 0644 %{secureboot_ca_0} $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer/kernel-signing-ca.cer %ifarch s390x ppc64le if [ -x /usr/bin/rpm-sign ]; then install -m 0644 %{secureboot_key_0} $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer/%{signing_key_filename} fi %endif %endif %if 0%{?rhel} # Red Hat IMA code-signing cert, which is used to authenticate package files install -m 0644 %{ima_signing_cert} $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer/%{ima_cert_name} %endif %if %{signmodules} if [ $DoModules -eq 1 ]; then # Save the signing keys so we can sign the modules in __modsign_install_post cp certs/signing_key.pem certs/signing_key.pem.sign${Variant:++${Variant}} cp certs/signing_key.x509 certs/signing_key.x509.sign${Variant:++${Variant}} %ifarch s390x ppc64le if [ ! -x /usr/bin/rpm-sign ]; then install -m 0644 certs/signing_key.x509.sign${Variant:++${Variant}} $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer/kernel-signing-ca.cer openssl x509 -in certs/signing_key.pem.sign${Variant:++${Variant}} -outform der -out $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer/%{signing_key_filename} chmod 0644 $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer/%{signing_key_filename} fi %endif fi %endif %if %{with_ipaclones} %{log_msg "install IPA clones"} MAXPROCS=$(echo %{?_smp_mflags} | sed -n 's/-j\s*\([0-9]\+\)/\1/p') if [ -z "$MAXPROCS" ]; then MAXPROCS=1 fi if [ "$Variant" == "" ]; then mkdir -p $RPM_BUILD_ROOT/$DevelDir-ipaclones find . -name '*.ipa-clones' | xargs -i{} -r -n 1 -P $MAXPROCS install -m 644 -D "{}" "$RPM_BUILD_ROOT/$DevelDir-ipaclones/{}" fi %endif %if %{with_gcov} popd %endif } ### # DO it... ### # prepare directories rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/boot mkdir -p $RPM_BUILD_ROOT%{_libexecdir} cd linux-%{KVERREL} %if %{with_debug} %if %{with_realtime} BuildKernel %make_target %kernel_image %{_use_vdso} rt-debug %endif %if %{with_realtime_arm64_64k} BuildKernel %make_target %kernel_image %{_use_vdso} rt-64k-debug %endif %if %{with_automotive} BuildKernel %make_target %kernel_image %{_use_vdso} automotive-debug %endif %if %{with_arm64_16k} BuildKernel %make_target %kernel_image %{_use_vdso} 16k-debug %endif %if %{with_arm64_64k} BuildKernel %make_target %kernel_image %{_use_vdso} 64k-debug %endif %if %{with_up} BuildKernel %make_target %kernel_image %{_use_vdso} debug %endif %endif %if %{with_zfcpdump} BuildKernel %make_target %kernel_image %{_use_vdso} zfcpdump %endif %if %{with_arm64_16k_base} BuildKernel %make_target %kernel_image %{_use_vdso} 16k %endif %if %{with_arm64_64k_base} BuildKernel %make_target %kernel_image %{_use_vdso} 64k %endif %if %{with_realtime_base} BuildKernel %make_target %kernel_image %{_use_vdso} rt %endif %if %{with_realtime_arm64_64k_base} BuildKernel %make_target %kernel_image %{_use_vdso} rt-64k %endif %if %{with_automotive_base} BuildKernel %make_target %kernel_image %{_use_vdso} automotive %endif %if %{with_up_base} BuildKernel %make_target %kernel_image %{_use_vdso} %endif %ifnarch noarch i686 %{nobuildarches} %if !%{with_debug} && !%{with_zfcpdump} && !%{with_up} && !%{with_arm64_16k} && !%{with_arm64_64k} && !%{with_realtime} && !%{with_realtime_arm64_64k} && !%{with_automotive} # If only building the user space tools, then initialize the build environment # and some variables so that the various userspace tools can be built. %{log_msg "Initialize userspace tools build environment"} InitBuildVars # Some tests build also modules, and need Module.symvers if ! [[ -e Module.symvers ]] && [[ -f $DevelDir/Module.symvers ]]; then %{log_msg "Found Module.symvers in DevelDir, copying to ."} cp "$DevelDir/Module.symvers" . fi %endif %endif %ifarch aarch64 %global perf_build_extra_opts CORESIGHT=1 %endif %global perf_make \ %{__make} %{?make_opts} EXTRA_CFLAGS="${RPM_OPT_FLAGS}" EXTRA_CXXFLAGS="${RPM_OPT_FLAGS}" LDFLAGS="%{__global_ldflags} -Wl,-E" %{?cross_opts} -C tools/perf V=1 NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 WERROR=0 NO_LIBUNWIND=1 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_STRLCPY=1 NO_BIONIC=1 LIBBPF_DYNAMIC=1 LIBTRACEEVENT_DYNAMIC=1 %{?perf_build_extra_opts} prefix=%{_prefix} PYTHON=%{__python3} %if %{with_perf} %{log_msg "Build perf"} # perf # make sure check-headers.sh is executable chmod +x tools/perf/check-headers.sh %{perf_make} DESTDIR=$RPM_BUILD_ROOT all %endif %if %{with_libperf} %global libperf_make \ %{__make} %{?make_opts} EXTRA_CFLAGS="${RPM_OPT_FLAGS}" LDFLAGS="%{__global_ldflags}" %{?cross_opts} -C tools/lib/perf V=1 %{log_msg "build libperf"} %{libperf_make} DESTDIR=$RPM_BUILD_ROOT %endif %global tools_make \ CFLAGS="${RPM_OPT_FLAGS}" LDFLAGS="%{__global_ldflags}" EXTRA_CFLAGS="${RPM_OPT_FLAGS}" %{make} %{?make_opts} %ifarch %{cpupowerarchs} # link against in-tree libcpupower for idle state support %global rtla_make %{tools_make} LDFLAGS="%{__global_ldflags} -L../../power/cpupower" INCLUDES="-I../../power/cpupower/lib" %else %global rtla_make %{tools_make} %endif %if %{with_tools} %if %{with_ynl} pushd tools/net/ynl export PIP_CONFIG_FILE=/tmp/pip.config cat < $PIP_CONFIG_FILE [install] no-index = true no-build-isolation = false EOF %{tools_make} %{?_smp_mflags} DESTDIR=$RPM_BUILD_ROOT install popd %endif %ifarch %{cpupowerarchs} # cpupower # make sure version-gen.sh is executable. chmod +x tools/power/cpupower/utils/version-gen.sh %{log_msg "build cpupower"} %{tools_make} %{?_smp_mflags} -C tools/power/cpupower CPUFREQ_BENCH=false DEBUG=false %ifarch x86_64 pushd tools/power/cpupower/debug/x86_64 %{log_msg "build centrino-decode powernow-k8-decode"} %{tools_make} %{?_smp_mflags} centrino-decode powernow-k8-decode popd %endif %ifarch x86_64 pushd tools/power/x86/x86_energy_perf_policy/ %{log_msg "build x86_energy_perf_policy"} %{tools_make} popd pushd tools/power/x86/turbostat %{log_msg "build turbostat"} %{tools_make} popd pushd tools/power/x86/intel-speed-select %{log_msg "build intel-speed-select"} %{tools_make} popd pushd tools/arch/x86/intel_sdsi %{log_msg "build intel_sdsi"} %{tools_make} CFLAGS="${RPM_OPT_FLAGS}" popd %endif %endif pushd tools/thermal/tmon/ %{log_msg "build tmon"} %{tools_make} popd pushd tools/bootconfig/ %{log_msg "build bootconfig"} %{tools_make} popd pushd tools/iio/ %{log_msg "build iio"} %{tools_make} popd pushd tools/gpio/ %{log_msg "build gpio"} %{tools_make} popd # build VM tools pushd tools/mm/ %{log_msg "build slabinfo page_owner_sort"} %{tools_make} slabinfo page_owner_sort popd pushd tools/verification/rv/ %{log_msg "build rv"} %{tools_make} popd pushd tools/tracing/rtla %{log_msg "build rtla"} %{rtla_make} popd %endif if [ -f $DevelDir/vmlinux.h ]; then RPM_VMLINUX_H=$DevelDir/vmlinux.h fi echo "${RPM_VMLINUX_H}" > ../vmlinux_h_path %if %{with_selftests} %{log_msg "start build selftests"} # Unfortunately, samples/bpf/Makefile expects that the headers are installed # in the source tree. We installed them previously to $RPM_BUILD_ROOT/usr # but there's no way to tell the Makefile to take them from there. %{log_msg "install headers for selftests"} %{make} %{?_smp_mflags} headers_install # If we re building only tools without kernel, we need to generate config # headers and prepare tree for modules building. The modules_prepare target # will cover both. if [ ! -f include/generated/autoconf.h ]; then %{log_msg "modules_prepare for selftests"} %{make} %{?_smp_mflags} modules_prepare fi %{log_msg "build samples/bpf"} %{make} %{?_smp_mflags} EXTRA_CXXFLAGS="${RPM_OPT_FLAGS}" ARCH=$Arch V=1 M=samples/bpf/ VMLINUX_H="${RPM_VMLINUX_H}" || true pushd tools/testing/selftests # We need to install here because we need to call make with ARCH set which # doesn't seem possible to do in the install section. %if %{selftests_must_build} force_targets="FORCE_TARGETS=1" %else force_targets="" %endif %{log_msg "main selftests compile"} # Some selftests (especially bpf) do not build with source fortification. # Since selftests are not shipped, disable source fortification for them. %global _fortify_level_bak %{_fortify_level} %undefine _fortify_level export CFLAGS="%{build_cflags}" TARGETS="bpf cgroup mm net net/forwarding net/mptcp net/netfilter tc-testing memfd drivers/net/bonding iommu cachestat" %{make} %{?_smp_mflags} EXTRA_CFLAGS="${RPM_OPT_FLAGS}" EXTRA_CXXFLAGS="${RPM_OPT_FLAGS}" EXTRA_LDFLAGS="%{__global_ldflags}" ARCH=$Arch V=1 TARGETS="$TARGETS" SKIP_TARGETS="" $force_targets VMLINUX_H="${RPM_VMLINUX_H}" # Restore the original level of source fortification %define _fortify_level %{_fortify_level_bak} export CFLAGS="%{build_cflags}" %ifarch %{klptestarches} # kernel livepatching selftest test_modules will build against # /lib/modules/$(shell uname -r)/build tree unless KDIR is set export KDIR=$(realpath $(pwd)/../../..) %{make} %{?_smp_mflags} ARCH=$Arch V=1 TARGETS="livepatch" SKIP_TARGETS="" $force_targets VMLINUX_H="${RPM_VMLINUX_H}" && TARGETS="${TARGETS} livepatch" || true %endif # We must install all the targets in a single step as each `make install` # command overrides the kselftest-list.txt file. %{make} ARCH=$Arch TARGETS="${TARGETS}" SKIP_TARGETS="" $force_targets INSTALL_PATH=%{buildroot}%{_libexecdir}/kselftests install # 'make install' for bpf is broken and upstream refuses to fix it. # Install the needed files manually. %{log_msg "install selftests"} for dir in bpf bpf/no_alu32 bpf/progs; do # In ARK, the rpm build continues even if some of the selftests # cannot be built. It's not always possible to build selftests, # as upstream sometimes dependens on too new llvm version or has # other issues. If something did not get built, just skip it. test -d $dir || continue mkdir -p %{buildroot}%{_libexecdir}/kselftests/$dir find $dir -maxdepth 1 \( -type f -o -type l \) \ \( -executable -o -name '*.py' -o -name settings -o \ -name 'btf_dump_test_case_*.c' -o -name '*.ko' -o \ -name '*.o' -exec sh -c 'readelf -h "{}" | grep -q "^ Machine:.*BPF"' \; \) -print0 | \ xargs -0 cp -t %{buildroot}%{_libexecdir}/kselftests/$dir || true done %buildroot_save_unstripped "usr/libexec/kselftests/bpf/test_progs" %buildroot_save_unstripped "usr/libexec/kselftests/bpf/test_progs-no_alu32" # The urandom_read binary doesn't pass the check-rpaths check and upstream # refuses to fix it. So, we save it to buildroot_unstripped and delete it so it # will be hidden from check-rpaths and will automatically get restored later. %buildroot_save_unstripped "usr/libexec/kselftests/bpf/urandom_read" %buildroot_save_unstripped "usr/libexec/kselftests/bpf/no_alu32/urandom_read" rm -f %{buildroot}/usr/libexec/kselftests/bpf/urandom_read rm -f %{buildroot}/usr/libexec/kselftests/bpf/no_alu32/urandom_read popd %{log_msg "end build selftests"} %endif %if %{with_doc} %{log_msg "start install docs"} # Make the HTML pages. %{log_msg "build html docs"} %{__make} PYTHON=/usr/bin/python3 htmldocs || %{doc_build_fail} # sometimes non-world-readable files sneak into the kernel source tree chmod -R a=rX Documentation find Documentation -type d | xargs chmod u+w %{log_msg "end install docs"} %endif # Module signing (modsign) # # This must be run _after_ find-debuginfo.sh runs, otherwise that will strip # the signature off of the modules. # # Don't sign modules for the zfcpdump variant as it is monolithic. %define __modsign_install_post \ if [ "%{signmodules}" -eq "1" ]; then \ %{log_msg "Signing kernel modules ..."} \ modules_dirs="$(shopt -s nullglob; echo $RPM_BUILD_ROOT/lib/modules/%{KVERREL}*)" \ for modules_dir in $modules_dirs; do \ variant_suffix="${modules_dir#$RPM_BUILD_ROOT/lib/modules/%{KVERREL}}" \ [ "$variant_suffix" == "+zfcpdump" ] && continue \ %{log_msg "Signing modules for %{KVERREL}${variant_suffix}"} \ %{modsign_cmd} certs/signing_key.pem.sign${variant_suffix} certs/signing_key.x509.sign${variant_suffix} $modules_dir/ \ done \ fi \ if [ "%{zipmodules}" -eq "1" ]; then \ %{log_msg "Compressing kernel modules ..."} \ find $RPM_BUILD_ROOT/lib/modules/ -type f -name '*.ko' | xargs -n 16 -P${RPM_BUILD_NCPUS} -r %compression %compression_flags; \ fi \ %{nil} ### ### Special hacks for debuginfo subpackages. ### # This macro is used by %%install, so we must redefine it before that. %define debug_package %{nil} %if %{with_debuginfo} %ifnarch noarch %{nobuildarches} %global __debug_package 1 %files -f debugfiles.list debuginfo-common-%{_target_cpu} %endif %endif # We don't want to package debuginfo for self-tests and samples but # we have to delete them to avoid an error messages about unpackaged # files. # Delete the debuginfo for kernel-devel files %define __remove_unwanted_dbginfo_install_post \ if [ "%{with_selftests}" -ne "0" ]; then \ rm -rf $RPM_BUILD_ROOT/usr/lib/debug/usr/libexec/ksamples; \ rm -rf $RPM_BUILD_ROOT/usr/lib/debug/usr/libexec/kselftests; \ fi \ rm -rf $RPM_BUILD_ROOT/usr/lib/debug/usr/src; \ %{nil} # # Disgusting hack alert! We need to ensure we sign modules *after* all # invocations of strip occur, which is in __debug_install_post if # find-debuginfo.sh runs, and __os_install_post if not. # %define __spec_install_post \ %{?__debug_package:%{__debug_install_post}}\ %{__arch_install_post}\ %{__os_install_post}\ %{__remove_unwanted_dbginfo_install_post}\ %{__restore_unstripped_root_post}\ %{__modsign_install_post} ### ### install ### %install cd linux-%{KVERREL} # re-define RPM_VMLINUX_H, because it doesn't carry over from %build RPM_VMLINUX_H="$(cat ../vmlinux_h_path)" %if %{with_doc} docdir=$RPM_BUILD_ROOT%{_datadir}/doc/kernel-doc-%{specversion}-%{pkgrelease} # copy the source over mkdir -p $docdir tar -h -f - --exclude=man --exclude='.*' -c Documentation | tar xf - -C $docdir cat %{SOURCE2} | xz > $docdir/kernel.changelog.xz chmod 0644 $docdir/kernel.changelog.xz # with_doc %endif # We have to do the headers install before the tools install because the # kernel headers_install will remove any header files in /usr/include that # it doesn't install itself. %if %{with_headers} # Install kernel headers %{__make} ARCH=%{hdrarch} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr headers_install find $RPM_BUILD_ROOT/usr/include \ \( -name .install -o -name .check -o \ -name ..install.cmd -o -name ..check.cmd \) -delete %endif %if %{with_cross_headers} HDR_ARCH_LIST='arm64 powerpc s390 x86 riscv' mkdir -p $RPM_BUILD_ROOT/usr/tmp-headers for arch in $HDR_ARCH_LIST; do mkdir $RPM_BUILD_ROOT/usr/tmp-headers/arch-${arch} %{__make} ARCH=${arch} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr/tmp-headers/arch-${arch} headers_install done find $RPM_BUILD_ROOT/usr/tmp-headers \ \( -name .install -o -name .check -o \ -name ..install.cmd -o -name ..check.cmd \) -delete # Copy all the architectures we care about to their respective asm directories for arch in $HDR_ARCH_LIST ; do mkdir -p $RPM_BUILD_ROOT/usr/${arch}-linux-gnu/include mv $RPM_BUILD_ROOT/usr/tmp-headers/arch-${arch}/include/* $RPM_BUILD_ROOT/usr/${arch}-linux-gnu/include/ done rm -rf $RPM_BUILD_ROOT/usr/tmp-headers %endif %if %{with_kernel_abi_stablelists} # kabi directory INSTALL_KABI_PATH=$RPM_BUILD_ROOT/lib/modules/ mkdir -p $INSTALL_KABI_PATH # install kabi releases directories tar -xvf %{SOURCE300} -C $INSTALL_KABI_PATH # with_kernel_abi_stablelists %endif %if %{with_perf} # perf tool binary and supporting scripts/binaries %{perf_make} DESTDIR=$RPM_BUILD_ROOT lib=%{_lib} install-bin # remove the 'trace' symlink. rm -f %{buildroot}%{_bindir}/trace # For both of the below, yes, this should be using a macro but right now # it's hard coded and we don't actually want it anyway right now. # Whoever wants examples can fix it up! # remove examples 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 man pages (note: implicit rpm magic compresses them later) mkdir -p %{buildroot}/%{_mandir}/man1 %{perf_make} DESTDIR=$RPM_BUILD_ROOT 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 # LIBTRACEEVENT_DYNAMIC=1 above in perf_make macro). Those files should already # ship with libtraceevent package. rm -rf %{buildroot}%{_libdir}/traceevent %endif %if %{with_libperf} %{libperf_make} DESTDIR=%{buildroot} prefix=%{_prefix} libdir=%{_libdir} install install_headers # This is installed on some arches and we don't want to ship it rm -rf %{buildroot}%{_libdir}/libperf.a %endif %if %{with_tools} %ifarch %{cpupowerarchs} %{make} -C tools/power/cpupower DESTDIR=$RPM_BUILD_ROOT libdir=%{_libdir} mandir=%{_mandir} CPUFREQ_BENCH=false install %find_lang cpupower mv cpupower.lang ../ %ifarch x86_64 pushd tools/power/cpupower/debug/x86_64 install -m755 centrino-decode %{buildroot}%{_bindir}/centrino-decode install -m755 powernow-k8-decode %{buildroot}%{_bindir}/powernow-k8-decode popd %endif chmod 0755 %{buildroot}%{_libdir}/libcpupower.so* %endif %ifarch x86_64 mkdir -p %{buildroot}%{_mandir}/man8 pushd tools/power/x86/x86_energy_perf_policy %{tools_make} DESTDIR=%{buildroot} install popd pushd tools/power/x86/turbostat %{tools_make} DESTDIR=%{buildroot} install popd pushd tools/power/x86/intel-speed-select %{tools_make} DESTDIR=%{buildroot} install popd pushd tools/arch/x86/intel_sdsi %{tools_make} CFLAGS="${RPM_OPT_FLAGS}" DESTDIR=%{buildroot} install popd %endif pushd tools/thermal/tmon %{tools_make} INSTALL_ROOT=%{buildroot} install popd pushd tools/bootconfig %{tools_make} DESTDIR=%{buildroot} install popd pushd tools/iio %{tools_make} DESTDIR=%{buildroot} install popd pushd tools/gpio %{tools_make} DESTDIR=%{buildroot} install popd install -m644 -D %{SOURCE2002} %{buildroot}%{_sysconfdir}/logrotate.d/kvm_stat pushd tools/kvm/kvm_stat %{__make} INSTALL_ROOT=%{buildroot} install-tools %{__make} INSTALL_ROOT=%{buildroot} install-man install -m644 -D kvm_stat.service %{buildroot}%{_unitdir}/kvm_stat.service popd # install VM tools pushd tools/mm/ install -m755 slabinfo %{buildroot}%{_bindir}/slabinfo install -m755 page_owner_sort %{buildroot}%{_bindir}/page_owner_sort popd pushd tools/verification/rv/ %{tools_make} DESTDIR=%{buildroot} install popd pushd tools/tracing/rtla/ %{tools_make} DESTDIR=%{buildroot} install rm -f %{buildroot}%{_bindir}/hwnoise rm -f %{buildroot}%{_bindir}/osnoise rm -f %{buildroot}%{_bindir}/timerlat (cd %{buildroot} ln -sf rtla ./%{_bindir}/hwnoise ln -sf rtla ./%{_bindir}/osnoise ln -sf rtla ./%{_bindir}/timerlat ) popd %endif %if %{with_selftests} pushd samples install -d %{buildroot}%{_libexecdir}/ksamples # install bpf samples pushd bpf install -d %{buildroot}%{_libexecdir}/ksamples/bpf find -type f -executable -exec install -m755 {} %{buildroot}%{_libexecdir}/ksamples/bpf \; install -m755 *.sh %{buildroot}%{_libexecdir}/ksamples/bpf # test_lwt_bpf.sh compiles test_lwt_bpf.c when run; this works only from the # kernel tree. Just remove it. rm %{buildroot}%{_libexecdir}/ksamples/bpf/test_lwt_bpf.sh install -m644 *_kern.o %{buildroot}%{_libexecdir}/ksamples/bpf || true install -m644 tcp_bpf.readme %{buildroot}%{_libexecdir}/ksamples/bpf popd # install pktgen samples pushd pktgen install -d %{buildroot}%{_libexecdir}/ksamples/pktgen find . -type f -executable -exec install -m755 {} %{buildroot}%{_libexecdir}/ksamples/pktgen/{} \; find . -type f ! -executable -exec install -m644 {} %{buildroot}%{_libexecdir}/ksamples/pktgen/{} \; popd popd # install mm selftests pushd tools/testing/selftests/mm find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/mm/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/mm/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/mm/{} \; popd # install cgroup selftests pushd tools/testing/selftests/cgroup find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/cgroup/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/cgroup/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/cgroup/{} \; popd # install drivers/net/mlxsw selftests pushd tools/testing/selftests/drivers/net/mlxsw find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/drivers/net/mlxsw/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/drivers/net/mlxsw/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/drivers/net/mlxsw/{} \; popd # install drivers/net/netdevsim selftests pushd tools/testing/selftests/drivers/net/netdevsim find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/drivers/net/netdevsim/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/drivers/net/netdevsim/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/drivers/net/netdevsim/{} \; popd # install drivers/net/bonding selftests pushd tools/testing/selftests/drivers/net/bonding find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/drivers/net/bonding/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/drivers/net/bonding/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/drivers/net/bonding/{} \; popd # install net/forwarding selftests pushd tools/testing/selftests/net/forwarding find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/net/forwarding/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/net/forwarding/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/net/forwarding/{} \; popd # install net/mptcp selftests pushd tools/testing/selftests/net/mptcp find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/net/mptcp/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/net/mptcp/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/net/mptcp/{} \; popd # install tc-testing selftests pushd tools/testing/selftests/tc-testing find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/tc-testing/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/tc-testing/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/tc-testing/{} \; popd # install livepatch selftests pushd tools/testing/selftests/livepatch find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/livepatch/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/livepatch/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/livepatch/{} \; popd # install net/netfilter selftests pushd tools/testing/selftests/net/netfilter find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/net/netfilter/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/net/netfilter/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/net/netfilter/{} \; popd # install memfd selftests pushd tools/testing/selftests/memfd find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/memfd/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/memfd/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/memfd/{} \; popd # install iommu selftests pushd tools/testing/selftests/iommu find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/iommu/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/iommu/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/iommu/{} \; popd %endif ### ### clean ### ### ### scripts ### %if %{with_tools} %post -n %{package_name}-tools-libs /sbin/ldconfig %postun -n %{package_name}-tools-libs /sbin/ldconfig %endif # # This macro defines a %%post script for a kernel*-devel package. # %%kernel_devel_post [] # Note we don't run hardlink if ostree is in use, as ostree is # a far more sophisticated hardlink implementation. # https://github.com/projectatomic/rpm-ostree/commit/58a79056a889be8814aa51f507b2c7a4dccee526 # # The deletion of *.hardlink-temporary files is a temporary workaround # for this bug in the hardlink binary (fixed in util-linux 2.38): # https://github.com/util-linux/util-linux/issues/1602 # %define kernel_devel_post() \ %{expand:%%post %{?1:%{1}-}devel}\ if [ -f /etc/sysconfig/kernel ]\ then\ . /etc/sysconfig/kernel || exit $?\ fi\ if [ "$HARDLINK" != "no" -a -x /usr/bin/hardlink -a ! -e /run/ostree-booted ] \ then\ (cd /usr/src/kernels/%{KVERREL}%{?1:+%{1}} &&\ /usr/bin/find . -type f | while read f; do\ hardlink -c /usr/src/kernels/*%{?dist}.*/$f $f > /dev/null\ done;\ /usr/bin/find /usr/src/kernels -type f -name '*.hardlink-temporary' -delete\ )\ fi\ %if %{with_cross}\ echo "Building scripts and resolve_btfids"\ env --unset=ARCH make -C /usr/src/kernels/%{KVERREL}%{?1:+%{1}} prepare_after_cross\ %endif\ %{nil} # # This macro defines a %%post script for a kernel*-modules-extra package. # It also defines a %%postun script that does the same thing. # %%kernel_modules_extra_post [] # %define kernel_modules_extra_post() \ %{expand:%%post %{?1:%{1}-}modules-extra}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil}\ %{expand:%%postun %{?1:%{1}-}modules-extra}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil} # # This macro defines a %%post script for a kernel*-modules-internal package. # It also defines a %%postun script that does the same thing. # %%kernel_modules_internal_post [] # %define kernel_modules_internal_post() \ %{expand:%%post %{?1:%{1}-}modules-internal}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil}\ %{expand:%%postun %{?1:%{1}-}modules-internal}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil} # # This macro defines a %%post script for a kernel*-modules-partner package. # It also defines a %%postun script that does the same thing. # %%kernel_modules_partner_post [] # %define kernel_modules_partner_post() \ %{expand:%%post %{?1:%{1}-}modules-partner}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil}\ %{expand:%%postun %{?1:%{1}-}modules-partner}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil} %if %{with_realtime} || %{with_realtime_arm64_64k} # # This macro defines a %%post script for a kernel*-kvm package. # It also defines a %%postun script that does the same thing. # %%kernel_kvm_post [] # %define kernel_kvm_post() \ %{expand:%%post %{?1:%{1}-}kvm}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil}\ %{expand:%%postun %{?1:%{1}-}kvm}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil} %endif # # This macro defines a %%post script for a kernel*-modules package. # It also defines a %%postun script that does the same thing. # %%kernel_modules_post [] # %define kernel_modules_post() \ %{expand:%%post %{?1:%{1}-}modules}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ if [ ! -f %{_localstatedir}/lib/rpm-state/%{name}/installing_core_%{KVERREL}%{?1:+%{1}} ]; then\ mkdir -p %{_localstatedir}/lib/rpm-state/%{name}\ touch %{_localstatedir}/lib/rpm-state/%{name}/need_to_run_dracut_%{KVERREL}%{?1:+%{1}}\ fi\ %{nil}\ %{expand:%%postun %{?1:%{1}-}modules}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil}\ %{expand:%%posttrans %{?1:%{1}-}modules}\ if [ -f %{_localstatedir}/lib/rpm-state/%{name}/need_to_run_dracut_%{KVERREL}%{?1:+%{1}} ]; then\ rm -f %{_localstatedir}/lib/rpm-state/%{name}/need_to_run_dracut_%{KVERREL}%{?1:+%{1}}\ echo "Running: dracut -f --kver %{KVERREL}%{?1:+%{1}}"\ dracut -f --kver "%{KVERREL}%{?1:+%{1}}" || exit $?\ fi\ %{nil} # # This macro defines a %%post script for a kernel*-modules-core package. # %%kernel_modules_core_post [] # %define kernel_modules_core_post() \ %{expand:%%posttrans %{?1:%{1}-}modules-core}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil} # This macro defines a %%posttrans script for a kernel package. # %%kernel_variant_posttrans [-v ] [-u uki-suffix] # More text can follow to go at the end of this variant's %%post. # %define kernel_variant_posttrans(v:u:) \ %{expand:%%posttrans %{?-v:%{-v*}-}%{!?-u*:core}%{?-u*:uki-%{-u*}}}\ %if 0%{!?fedora:1}\ %if !%{with_automotive}\ if [ -x %{_sbindir}/weak-modules ]\ then\ %{_sbindir}/weak-modules --add-kernel %{KVERREL}%{?-v:+%{-v*}} || exit $?\ fi\ %endif\ %endif\ rm -f %{_localstatedir}/lib/rpm-state/%{name}/installing_core_%{KVERREL}%{?-v:+%{-v*}}\ /bin/kernel-install add %{KVERREL}%{?-v:+%{-v*}} /lib/modules/%{KVERREL}%{?-v:+%{-v*}}/vmlinuz%{?-u:-%{-u*}.efi} || exit $?\ if [[ ! -e "/boot/symvers-%{KVERREL}%{?-v:+%{-v*}}.%compext" ]]; then\ cp "/lib/modules/%{KVERREL}%{?-v:+%{-v*}}/symvers.%compext" "/boot/symvers-%{KVERREL}%{?-v:+%{-v*}}.%compext"\ if command -v restorecon &>/dev/null; then\ restorecon "/boot/symvers-%{KVERREL}%{?-v:+%{-v*}}.%compext"\ fi\ fi\ echo "Looking for signs of direct Linux kernel boot in config.txt..." || exit $?\ if [ -f /boot/efi/config.txt ]\ then\ while IFS= read -r line\ do\ grepped=$( echo $line | grep kernel || exit $? )\ if [ "${grepped:0:14}" == "kernel=vmlinuz" ]\ then\ echo -n "Copying vmlinuz..." || exit $?\ cp -f /lib/modules/%{KVERREL}%{?-v:+%{-v*}}/vmlinuz%{?-u:-%{-u*}.efi} /boot/efi/vmlinuz || exit $?\ echo "done." || exit $?\ fi\ grepped=$( echo $line | grep initramfs || exit $? )\ if [ "${grepped:0:19}" == "initramfs initramfs" ]\ then\ echo -n "Copying initramfs image..." || exit $?\ cp -f /boot/initramfs-%{KVERREL}%{?-v:+%{-v*}}.img /boot/efi/initramfs || exit $?\ echo "done." || exit $?\ fi\ done < /boot/efi/config.txt || exit $?\ else\ echo "Configuration file not found." || exit $?\ fi\ %{nil} # # This macro defines a %%post script for a kernel package and its devel package. # %%kernel_variant_post [-v ] [-r ] # More text can follow to go at the end of this variant's %%post. # %define kernel_variant_post(v:r:) \ %{expand:%%kernel_devel_post %{?-v*}}\ %{expand:%%kernel_modules_post %{?-v*}}\ %{expand:%%kernel_modules_core_post %{?-v*}}\ %{expand:%%kernel_modules_extra_post %{?-v*}}\ %{expand:%%kernel_modules_internal_post %{?-v*}}\ %if 0%{!?fedora:1}\ %{expand:%%kernel_modules_partner_post %{?-v*}}\ %endif\ %{expand:%%kernel_variant_posttrans %{?-v*:-v %{-v*}}}\ %{expand:%%post %{?-v*:%{-v*}-}core}\ %{-r:\ if [ `uname -i` == "x86_64" -o `uname -i` == "i386" ] &&\ [ -f /etc/sysconfig/kernel ]; then\ /bin/sed -r -i -e 's/^DEFAULTKERNEL=%{-r*}$/DEFAULTKERNEL=kernel%{?-v:-%{-v*}}/' /etc/sysconfig/kernel || exit $?\ fi}\ mkdir -p %{_localstatedir}/lib/rpm-state/%{name}\ touch %{_localstatedir}/lib/rpm-state/%{name}/installing_core_%{KVERREL}%{?-v:+%{-v*}}\ %{nil} # # This macro defines a %%preun script for a kernel package. # %%kernel_variant_preun [-v ] -u [uki-suffix] # %define kernel_variant_preun(v:u:) \ %{expand:%%preun %{?-v:%{-v*}-}%{!?-u*:core}%{?-u*:uki-%{-u*}}}\ /bin/kernel-install remove %{KVERREL}%{?-v:+%{-v*}} || exit $?\ %if !%{with_automotive}\ if [ -x %{_sbindir}/weak-modules ]\ then\ %{_sbindir}/weak-modules --remove-kernel %{KVERREL}%{?-v:+%{-v*}} || exit $?\ fi\ %endif\ %{nil} %if %{with_up_base} && %{with_efiuki} %kernel_variant_posttrans -u virt %kernel_variant_preun -u virt %endif %if %{with_up_base} %kernel_variant_preun %kernel_variant_post %endif %if %{with_zfcpdump} %kernel_variant_preun -v zfcpdump %kernel_variant_post -v zfcpdump %endif %if %{with_up} && %{with_debug} && %{with_efiuki} %kernel_variant_posttrans -v debug -u virt %kernel_variant_preun -v debug -u virt %endif %if %{with_up} && %{with_debug} %kernel_variant_preun -v debug %kernel_variant_post -v debug %endif %if %{with_arm64_16k_base} %kernel_variant_preun -v 16k %kernel_variant_post -v 16k %endif %if %{with_debug} && %{with_arm64_16k} %kernel_variant_preun -v 16k-debug %kernel_variant_post -v 16k-debug %endif %if %{with_arm64_16k} && %{with_debug} && %{with_efiuki} %kernel_variant_posttrans -v 16k-debug -u virt %kernel_variant_preun -v 16k-debug -u virt %endif %if %{with_arm64_16k_base} && %{with_efiuki} %kernel_variant_posttrans -v 16k -u virt %kernel_variant_preun -v 16k -u virt %endif %if %{with_arm64_64k_base} %kernel_variant_preun -v 64k %kernel_variant_post -v 64k %endif %if %{with_debug} && %{with_arm64_64k} %kernel_variant_preun -v 64k-debug %kernel_variant_post -v 64k-debug %endif %if %{with_arm64_64k} && %{with_debug} && %{with_efiuki} %kernel_variant_posttrans -v 64k-debug -u virt %kernel_variant_preun -v 64k-debug -u virt %endif %if %{with_arm64_64k_base} && %{with_efiuki} %kernel_variant_posttrans -v 64k -u virt %kernel_variant_preun -v 64k -u virt %endif %if %{with_realtime_base} %kernel_variant_preun -v rt %kernel_variant_post -v rt -r kernel %kernel_kvm_post rt %endif %if %{with_automotive_base} %kernel_variant_preun -v automotive %kernel_variant_post -v automotive -r kernel %endif %if %{with_realtime} && %{with_debug} %kernel_variant_preun -v rt-debug %kernel_variant_post -v rt-debug %kernel_kvm_post rt-debug %endif %if %{with_realtime_arm64_64k_base} %kernel_variant_preun -v rt-64k %kernel_variant_post -v rt-64k %kernel_kvm_post rt-64k %endif %if %{with_debug} && %{with_realtime_arm64_64k} %kernel_variant_preun -v rt-64k-debug %kernel_variant_post -v rt-64k-debug %kernel_kvm_post rt-64k-debug %endif %if %{with_automotive} && %{with_debug} %kernel_variant_preun -v automotive-debug %kernel_variant_post -v automotive-debug %endif ### ### file lists ### %if %{with_headers} %files headers /usr/include/* %exclude %{_includedir}/cpufreq.h %endif %if %{with_cross_headers} %files cross-headers /usr/*-linux-gnu/include/* %endif %if %{with_kernel_abi_stablelists} %files -n %{package_name}-abi-stablelists /lib/modules/kabi-* %endif %if %{with_kabidw_base} %ifarch x86_64 s390x ppc64 ppc64le aarch64 riscv64 %files kernel-kabidw-base-internal %defattr(-,root,root) /kabidw-base/%{_target_cpu}/* %endif %endif # only some architecture builds need kernel-doc %if %{with_doc} %files doc %defattr(-,root,root) %{_datadir}/doc/kernel-doc-%{specversion}-%{pkgrelease}/Documentation/* %dir %{_datadir}/doc/kernel-doc-%{specversion}-%{pkgrelease}/Documentation %dir %{_datadir}/doc/kernel-doc-%{specversion}-%{pkgrelease} %{_datadir}/doc/kernel-doc-%{specversion}-%{pkgrelease}/kernel.changelog.xz %endif %if %{with_perf} %files -n perf %{_bindir}/perf %{_libdir}/libperf-jvmti.so %dir %{_libexecdir}/perf-core %{_libexecdir}/perf-core/* %{_datadir}/perf-core/* %{_mandir}/man[1-8]/perf* %{_sysconfdir}/bash_completion.d/perf %doc linux-%{KVERREL}/tools/perf/Documentation/examples.txt %{_docdir}/perf-tip/tips.txt %files -n python3-perf %{python3_sitearch}/* %if %{with_debuginfo} %files -f perf-debuginfo.list -n perf-debuginfo %files -f python3-perf-debuginfo.list -n python3-perf-debuginfo %endif # with_perf %endif %if %{with_libperf} %files -n libperf %{_libdir}/libperf.so.0 %{_libdir}/libperf.so.0.0.1 %files -n libperf-devel %{_libdir}/libperf.so %{_libdir}/pkgconfig/libperf.pc %{_includedir}/internal/*.h %{_includedir}/perf/bpf_perf.h %{_includedir}/perf/core.h %{_includedir}/perf/cpumap.h %{_includedir}/perf/perf_dlfilter.h %{_includedir}/perf/event.h %{_includedir}/perf/evlist.h %{_includedir}/perf/evsel.h %{_includedir}/perf/mmap.h %{_includedir}/perf/threadmap.h %{_mandir}/man3/libperf.3.gz %{_mandir}/man7/libperf-counting.7.gz %{_mandir}/man7/libperf-sampling.7.gz %{_docdir}/libperf/examples/sampling.c %{_docdir}/libperf/examples/counting.c %{_docdir}/libperf/html/libperf.html %{_docdir}/libperf/html/libperf-counting.html %{_docdir}/libperf/html/libperf-sampling.html %if %{with_debuginfo} %files -f libperf-debuginfo.list -n libperf-debuginfo %endif # with_libperf %endif %if %{with_tools} %ifnarch %{cpupowerarchs} %files -n %{package_name}-tools %else %files -n %{package_name}-tools -f cpupower.lang %{_bindir}/cpupower %{_datadir}/bash-completion/completions/cpupower %ifarch x86_64 %{_bindir}/centrino-decode %{_bindir}/powernow-k8-decode %endif %{_mandir}/man[1-8]/cpupower* %ifarch x86_64 %{_bindir}/x86_energy_perf_policy %{_mandir}/man8/x86_energy_perf_policy* %{_bindir}/turbostat %{_mandir}/man8/turbostat* %{_bindir}/intel-speed-select %{_sbindir}/intel_sdsi %endif # cpupowerarchs %endif %{_bindir}/tmon %{_bindir}/bootconfig %{_bindir}/iio_event_monitor %{_bindir}/iio_generic_buffer %{_bindir}/lsiio %{_bindir}/lsgpio %{_bindir}/gpio-hammer %{_bindir}/gpio-event-mon %{_bindir}/gpio-watch %{_mandir}/man1/kvm_stat* %{_bindir}/kvm_stat %{_unitdir}/kvm_stat.service %config(noreplace) %{_sysconfdir}/logrotate.d/kvm_stat %{_bindir}/page_owner_sort %{_bindir}/slabinfo %if %{with_ynl} %{_bindir}/ynl* %{_docdir}/ynl %{_datadir}/ynl %{python3_sitelib}/pyynl* %endif %if %{with_debuginfo} %files -f %{package_name}-tools-debuginfo.list -n %{package_name}-tools-debuginfo %endif %ifarch %{cpupowerarchs} %files -n %{package_name}-tools-libs %{_libdir}/libcpupower.so.1 %{_libdir}/libcpupower.so.0.0.1 %endif %files -n %{package_name}-tools-libs-devel %ifarch %{cpupowerarchs} %{_libdir}/libcpupower.so %{_includedir}/cpufreq.h %{_includedir}/cpuidle.h %{_includedir}/powercap.h %endif %if %{with_ynl} %{_libdir}/libynl* %{_includedir}/ynl %endif %files -n rtla %{_bindir}/rtla %{_bindir}/hwnoise %{_bindir}/osnoise %{_bindir}/timerlat %{_mandir}/man1/rtla-hwnoise.1.gz %{_mandir}/man1/rtla-osnoise-hist.1.gz %{_mandir}/man1/rtla-osnoise-top.1.gz %{_mandir}/man1/rtla-osnoise.1.gz %{_mandir}/man1/rtla-timerlat-hist.1.gz %{_mandir}/man1/rtla-timerlat-top.1.gz %{_mandir}/man1/rtla-timerlat.1.gz %{_mandir}/man1/rtla.1.gz %files -n rv %{_bindir}/rv %{_mandir}/man1/rv-list.1.gz %{_mandir}/man1/rv-mon-wip.1.gz %{_mandir}/man1/rv-mon-wwnr.1.gz %{_mandir}/man1/rv-mon.1.gz %{_mandir}/man1/rv.1.gz # with_tools %endif %if %{with_selftests} %files selftests-internal %{_libexecdir}/ksamples %{_libexecdir}/kselftests %endif # empty meta-package %if %{with_up_base} %ifnarch %nobuildarches noarch %files %endif %endif # This is %%{image_install_path} on an arch where that includes ELF files, # or empty otherwise. %define elf_image_install_path %{?kernel_image_elf:%{image_install_path}} # # This macro defines the %%files sections for a kernel package # and its devel and debuginfo packages. # %%kernel_variant_files [-k vmlinux] # %define kernel_variant_files(k:) \ %if %{2}\ %{expand:%%files %{?1:-f kernel-%{?3:%{3}-}ldsoconf.list} %{?3:%{3}-}core}\ %{!?_licensedir:%global license %%doc}\ %%license linux-%{KVERREL}/COPYING-%{version}-%{release}\ /lib/modules/%{KVERREL}%{?3:+%{3}}/%{?-k:%{-k*}}%{!?-k:vmlinuz}\ %ghost /%{image_install_path}/%{?-k:%{-k*}}%{!?-k:vmlinuz}-%{KVERREL}%{?3:+%{3}}\ /lib/modules/%{KVERREL}%{?3:+%{3}}/.vmlinuz.hmac \ %ghost /%{image_install_path}/.vmlinuz-%{KVERREL}%{?3:+%{3}}.hmac \ %ifarch aarch64 riscv64\ /lib/modules/%{KVERREL}%{?3:+%{3}}/dtb \ %ghost /%{image_install_path}/dtb-%{KVERREL}%{?3:+%{3}} \ %endif\ /lib/modules/%{KVERREL}%{?3:+%{3}}/System.map\ %ghost /boot/System.map-%{KVERREL}%{?3:+%{3}}\ %dir /lib/modules\ %dir /lib/modules/%{KVERREL}%{?3:+%{3}}\ /lib/modules/%{KVERREL}%{?3:+%{3}}/symvers.%compext\ /lib/modules/%{KVERREL}%{?3:+%{3}}/config\ /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.builtin*\ %ghost %attr(0644, root, root) /boot/symvers-%{KVERREL}%{?3:+%{3}}.%compext\ %ghost %attr(0600, root, root) /boot/initramfs-%{KVERREL}%{?3:+%{3}}.img\ %ghost %attr(0644, root, root) /boot/config-%{KVERREL}%{?3:+%{3}}\ %{expand:%%files -f kernel-%{?3:%{3}-}modules-core.list %{?3:%{3}-}modules-core}\ %dir /lib/modules\ %dir /lib/modules/%{KVERREL}%{?3:+%{3}}\ %dir /lib/modules/%{KVERREL}%{?3:+%{3}}/kernel\ /lib/modules/%{KVERREL}%{?3:+%{3}}/build\ /lib/modules/%{KVERREL}%{?3:+%{3}}/source\ /lib/modules/%{KVERREL}%{?3:+%{3}}/updates\ /lib/modules/%{KVERREL}%{?3:+%{3}}/weak-updates\ /lib/modules/%{KVERREL}%{?3:+%{3}}/systemtap\ %{_datadir}/doc/kernel-keys/%{KVERREL}%{?3:+%{3}}\ %if %{1}\ /lib/modules/%{KVERREL}%{?3:+%{3}}/vdso\ %endif\ /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.block\ /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.drm\ /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.modesetting\ /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.networking\ /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.order\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.alias\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.alias.bin\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.builtin.alias.bin\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.builtin.bin\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.dep\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.dep.bin\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.devname\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.softdep\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.symbols\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.symbols.bin\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.weakdep\ %{expand:%%files -f kernel-%{?3:%{3}-}modules.list %{?3:%{3}-}modules}\ %{expand:%%files %{?3:%{3}-}devel}\ %defverify(not mtime)\ /usr/src/kernels/%{KVERREL}%{?3:+%{3}}\ %{expand:%%files %{?3:%{3}-}devel-matched}\ %{expand:%%files -f kernel-%{?3:%{3}-}modules-extra.list %{?3:%{3}-}modules-extra}\ %{expand:%%files -f kernel-%{?3:%{3}-}modules-internal.list %{?3:%{3}-}modules-internal}\ %if 0%{!?fedora:1}\ %{expand:%%files -f kernel-%{?3:%{3}-}modules-partner.list %{?3:%{3}-}modules-partner}\ %endif\ %if %{with_debuginfo}\ %ifnarch noarch\ %{expand:%%files -f debuginfo%{?3}.list %{?3:%{3}-}debuginfo}\ %endif\ %endif\ %if "%{3}" == "rt" || "%{3}" == "rt-debug" || "%{3}" == "rt-64k" || "%{3}" == "rt-64k-debug"\ %if "%{3}" == "rt" || "%{3}" == "rt-debug"\ %{expand:%%files -f kernel-%{?3:%{3}-}modules-rt-kvm.list %{?3:%{3}-}kvm}\ %else\ %{expand:%%files -f kernel-%{?3:%{3}-}modules-rt-64k-kvm.list %{?3:%{3}-}kvm}\ %endif\ %else\ %if %{with_efiuki}\ %{expand:%%files %{?3:%{3}-}uki-virt}\ %dir /lib/modules\ %dir /lib/modules/%{KVERREL}%{?3:+%{3}}\ /lib/modules/%{KVERREL}%{?3:+%{3}}/System.map\ /lib/modules/%{KVERREL}%{?3:+%{3}}/symvers.%compext\ /lib/modules/%{KVERREL}%{?3:+%{3}}/config\ /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.builtin*\ %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/%{?-k:%{-k*}}%{!?-k:vmlinuz}-virt.efi\ %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/.%{?-k:%{-k*}}%{!?-k:vmlinuz}-virt.efi.hmac\ %ghost /%{image_install_path}/efi/EFI/Linux/%{?-k:%{-k*}}%{!?-k:*}-%{KVERREL}%{?3:+%{3}}.efi\ %{expand:%%files %{?3:%{3}-}uki-virt-addons}\ %dir /lib/modules/%{KVERREL}%{?3:+%{3}}/%{?-k:%{-k*}}%{!?-k:vmlinuz}-virt.efi.extra.d/ \ /lib/modules/%{KVERREL}%{?3:+%{3}}/%{?-k:%{-k*}}%{!?-k:vmlinuz}-virt.efi.extra.d/*.addon.efi\ %endif\ %endif\ %if %{?3:1} %{!?3:0}\ %{expand:%%files %{3}}\ %endif\ %if %{with_gcov}\ %ifnarch %nobuildarches noarch\ %{expand:%%files -f kernel-%{?3:%{3}-}gcov.list %{?3:%{3}-}gcov}\ %endif\ %endif\ %endif\ %{nil} %kernel_variant_files %{_use_vdso} %{with_up_base} %if %{with_up} %kernel_variant_files %{_use_vdso} %{with_debug} debug %endif %if %{with_arm64_16k} %kernel_variant_files %{_use_vdso} %{with_debug} 16k-debug %endif %if %{with_arm64_64k} %kernel_variant_files %{_use_vdso} %{with_debug} 64k-debug %endif %kernel_variant_files %{_use_vdso} %{with_realtime_base} rt %if %{with_realtime} %kernel_variant_files %{_use_vdso} %{with_debug} rt-debug %endif %kernel_variant_files %{_use_vdso} %{with_automotive_base} automotive %if %{with_automotive} %kernel_variant_files %{_use_vdso} %{with_debug} automotive-debug %endif %if %{with_debug_meta} %files debug %files debug-core %files debug-devel %files debug-devel-matched %files debug-modules %files debug-modules-core %files debug-modules-extra %if %{with_arm64_16k} %files 16k-debug %files 16k-debug-core %files 16k-debug-devel %files 16k-debug-devel-matched %files 16k-debug-modules %files 16k-debug-modules-extra %endif %if %{with_arm64_64k} %files 64k-debug %files 64k-debug-core %files 64k-debug-devel %files 64k-debug-devel-matched %files 64k-debug-modules %files 64k-debug-modules-extra %endif %endif %kernel_variant_files %{_use_vdso} %{with_zfcpdump} zfcpdump %kernel_variant_files %{_use_vdso} %{with_arm64_16k_base} 16k %kernel_variant_files %{_use_vdso} %{with_arm64_64k_base} 64k %kernel_variant_files %{_use_vdso} %{with_realtime_arm64_64k_base} rt-64k %if %{with_realtime_arm64_64k} %kernel_variant_files %{_use_vdso} %{with_debug} rt-64k-debug %endif %define kernel_variant_ipaclones(k:) \ %if %{1}\ %if %{with_ipaclones}\ %{expand:%%files %{?2:%{2}-}ipaclones-internal}\ %defattr(-,root,root)\ %defverify(not mtime)\ /usr/src/kernels/%{KVERREL}%{?2:+%{2}}-ipaclones\ %endif\ %endif\ %{nil} %kernel_variant_ipaclones %{with_up_base} # plz don't put in a version string unless you're going to tag # and build. # # %changelog * Thu Mar 13 2025 Luca Magrone [6.12.0-59.0.rpi64.el10] - redhat: configs: custom-overrides: aarch64: enable SND_RP1_AUDIO_OUT as module (Luca Magrone) - redhat: configs: common: generic: add SND_RP1_AUDIO_OUT as disabled (Luca Magrone) - redhat: configs: custom-overrides: aarch64: Enable IMX415 driver module (Luca Magrone) - redhat: configs: custom-overrides: aarch64: Replace VIDEO_RPIVID with VIDEO_RPI_HEVC_DEC (Luca Magrone) - dts: bcm2712: Add V3D_SMS register (Maíra Canal) - dt-bindings: gpu: Add V3D driver maintainer as DT maintainer (Maíra Canal) - drm/v3d: Use V3D_SMS registers for power on/off and reset on V3D 7.x (Maíra Canal) - dt-bindings: gpu: v3d: Add SMS register to BCM2712 compatible (Maíra Canal) - dt-bindings: gpu: v3d: Add per-compatible register restrictions (Maíra Canal) - drm/v3d: Associate a V3D tech revision to all supported devices (Maíra Canal) - drm/v3d: Set job pointer to NULL when the job's fence has an error (Maíra Canal) - drm/v3d: Don't run jobs that have errors flagged in its fence (Maíra Canal) - drm/v3d: Add clock handling (Stefan Wahren) - overlays: Use current I2C Sysfs in README examples (Richard Oliver) - fixup! ARM: dts: bcm2711: Provide a hook for a WiFi MAC (Phil Elwell) - dtoverlays: Add adxl345 to i2c-sensor (Dave Stevenson) - dts: Remove the power key debounce on Pi 500 (Phil Elwell) - configs: Add GPIO_FXL6408=m (Phil Elwell) - overlays: Add the wifimac overlay (Phil Elwell) - ARM: dts: bcm2711: Provide a hook for a WiFi MAC (Phil Elwell) - ARM64: dts: Add the 64-bit CM0 dts (Phil Elwell) - ARM: dts: Add CM0 dts file (Phil Elwell) - dts: remove README from Makefile (Sander Hollaar) - media: hevc_dec: Drop the new image formats until we have Mesa 24 (Dave Stevenson) - media: hevc_dec: Add module parameter for video_nr (Dave Stevenson) - drm/framebuffer: Pitch checks aren't valid for non-linear modifiers (Dave Stevenson) - drm: vc4: plane: Avoid using pitch in calculating UBM for SAND (Dave Stevenson) - drm/vc4: Add algorithmic handling for SAND (Dave Stevenson) - drm: vc4: hvs: Fix vc6_hvs_debugfs_dlist state lookup (Dave Stevenson) - arm64: defconfig: Replace VIDEO_RPIVID with VIDEO_RPI_HEVC_DEC (Dave Stevenson) - arm: defconfig: Replace VIDEO_RPIVID with VIDEO_RPI_HEVC_DEC (Dave Stevenson) - media: hevc_dec: Add in downstream single planar SAND variant (Dave Stevenson) - media: v4l2: Add single planar NV12 column formats (Dave Stevenson) - dts: bcm2712: Fixup HEVC decoder nodes for new driver. (Dave Stevenson) - arm: dt: broadcom: fixup downstream dts for HEVC decoder (Dave Stevenson) - arm: dts: bcm2711-rpi: Add HEVC decoder node (Dave Stevenson) - media: platform: Add Raspberry Pi HEVC decoder driver (John Cox) - media: dt-bindings: media: Add binding for the Raspberry Pi HEVC decoder (Dave Stevenson) - media: ioctl: Add pixel formats NV12MT_COL128 and NV12MT_10_COL128 (Dave Stevenson) - docs: uapi: media: Document Raspberry Pi NV12 column format (Dave Stevenson) - media: mc: add debugfs node to keep track of requests (Hans Verkuil) - media: vicodec: add support for manual completion (Hans Verkuil) - media: mc: add manual request completion (Hans Verkuil) - Revert "RFC: media: Add media_request_{pin,unpin} API" (Dave Stevenson) - Revert "media: videodev2.h: Add a format for column YUV4:2:0 modes" (Dave Stevenson) - Revert "staging: media: rpivid: Add Raspberry Pi V4L2 H265 decoder" (Dave Stevenson) - drm/vc4: Correct one logging message that got promoted from dbg to err (Dave Stevenson) - drm/rp1: DPI interlace: Improve precision of PIO-generated VSYNC (Nick Hollinghurst) - Revert "firmware: raspberrypi: Add backward compatible get_throttled" (Dom Cobley) - USB: serial: pl2303: account for deficits of clones (Jan Kiszka) - imx500: Fix for long exposure setup (Naushir Patuck) - dts: bcm2712-ds: Remove bcm7445 from gio_aon (Phil Elwell) - mm/mempolicy: Add MPOL_RANDOM (Tvrtko Ursulin) - iommu/dma: Add ability to configure NUMA allocation policy for remapped allocations (Tvrtko Ursulin) - configs: Delete bcmrpi3_defconfig (Phil Elwell) - spi: rp2040-gpio-bridge: probe: Cfg fast_xfer clk (Richard Oliver) - spi: rp2040-gpio-bridge: fix gpiod error handling (Richard Oliver) - dts: Add hogs for RP1 GPIO 46/48 on CM5 (Richard Oliver) - misc: rp1-pio: Demote fw probe error to warning (Phil Elwell) - media: i2c: arducam-pivariety: Fix mutex init and NULL pointer (Yuriy Pasichnyk) - dts: overlays: Enable RP1 Audio Out using audremap-pi5-overlay (Nick Hollinghurst) - sound: soc: raspberrypi: RP1 Audio Out driver as an ASOC DAI (Nick Hollinghurst) - clk: rp1: Allow audio out to use PLL_AUDIO_SEC; workaround rounding error (Nick Hollinghurst) - arm64: dts: Add the Audio Out block to rp1.dtsi (Nick Hollinghurst) - overlays: Add OpenHydroponics RootMaster overlay (Micke Prag) - configs: Enable more ZRAM backends (Dom Cobley) - drm/edid: When reset, assume HDMI displays support RGB444 (Dave Stevenson) - redhat: Makefile.variables: do not bump release (Luca Magrone) - redhat: configs: custom-overrides: aarch64: disable VC4 Kunit tests (Luca Magrone) - drm/connector: add mutex to protect ELD from concurrent access (Dmitry Baryshkov) - rp1-pio: port to current source tree (Luca Magrone) - redhat: configs: custom-overrides: aarch64: add missing configuration entries and enable USB_DWC2_DUAL_ROLE (Luca Magrone) - redhat: configs: fix custom aarch64 configuration (Luca Magrone) - redhat: configs: custom-overrides: Compile-in RP1 driver (Luca Magrone) - redhat: configs: custom-overrides: aarch64: Enable Renesas XHCI driver (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable netkit (Luca Magrone) - redhat: configs: custom-overrides: aarch64: Enable PCM3168A driver (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable WS2812_PIO_RP1 as module (Luca Magrone) - redhat: configs: common: arm: add WS2812_PIO_RP1 disabled (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable SERIAL_RPI_FW (Luca Magrone) - redhat: configs: common: arm: add SERIAL_RPI_FW disabled (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable SND_PIMIDI (Luca Magrone) - redhat: configs: common: add SND_PIMIDI disabled (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable MBOX_RP1 module (Luca Magrone) - redhat: configs: common: add MBOX_RP1 disabled (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable PWM_PIO_RP1 (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable RP1_PIO (Luca Magrone) - redhat: configs: common: add RP1_PIO as disabled (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable NUMA_EMULATION (Luca Magrone) - redhat/configs: common: add NUMA_EMULATION disabled (Luca Magrone) - redhat: Allow building 16k kernel variant on RHEL/CentOS Stream (Luca Magrone) - redhat: kernel.spec.template: fix Raspberry Pi script (Luca Magrone) - kernel.spec add script for Raspberry Pi (Luca Magrone) - redhat: configs: custom-overrides: configure kernel for Raspberry Pi (Luca Magrone) - redhat: configs: custom-overrides: enable IMX500 sensor driver module (Luca Magrone) - redhat: configs: disable IMX500 sensor driver (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable support for the Raspberry Pi RP2040 GPIO bridge (Luca Magrone) - redhat: configs: disable support for the Raspberry Pi RP2040 GPIO bridge (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable Hailo accelerator device dirver module (Luca Magrone) - redhat: configs: disable Hailo accelerator device dirver (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable V2 Raspberry Pi touchscreen unit driver module (Luca Magrone) - redhat: configs: disable support for V2 Raspberry Pi touchscreen unit (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable ROHM BU64754 Camera Autofocus Actuator driver module (Luca Magrone) - redhat: configs: disable ROHM BU64754 Camera Autofocus Actuator driver (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable RP1 ADC and temperature driver module (Luca Magrone) - redhat: configs: disable RP1 ADC and temperature driver (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable RP1 VEC, DPI and DSI driver modules (Luca Magrone) - redhat: configs: disable RP1 VEC, DPI and DSI drivers (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable rp1 clock and sdio-clk drivers (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable rp1 pinctrl driver (Luca Magrone) - redhat: configs: disable rp1 pinctrl driver (Luca Magrone) - redhat: configs: disable rp1 clock driver (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable RP1 mfd (Luca Magrone) - redhat: configs: disable RP1 mfd (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable support for 2712's MIP (Luca Magrone) - redhat: configs: disable support for 2712's MIP (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable IMX708 sensor driver module (Luca Magrone) - redhat: configs: disable IMX708 sensor driver (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable Arducam 64MP camera driver module (Luca Magrone) - redhat: configs: disable Arducam 64MP camera driver (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable arducam-pivariety driver (Luca Magrone) - redhat: configs: disable arducam-pivariety (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable AD5398 VCM lens driver module (Luca Magrone) - redhat: configs: disable AD5398 VCM lens driver (Luca Magrone) - redhat: configs: custom-overrides: enable OV2311 sensor driver module (Luca Magrone) - redhat: configs: disable OV2311 sensor driver (Luca Magrone) - redhat: configs: custom-overrides: enable RPi POE HAT on aarch64 (Luca Magrone) - redhat: configs: disable MFD_RASPBERRYPI_POE_HAT (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable wrapper of the PWM API as a GPIO controller (Luca Magrone) - redhat: configs: disable wrapper of the PWM API as a GPIO controller (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable Waveshare DSI touchscreens driver module (Luca Magrone) - redhat: configs: disable Waveshare DSI touchscreens driver (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable TDO Y17B panel driver module (Luca Magrone) - redhat: configs: disable TDO Y17B panel driver (Luca Magrone) - redhat: configs: custom-overrides: enable GPIO_FSM as a module (Luca Magrone) - redhat: configs: disable GPIO_FSM (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable led triggers and other led-related options (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable actpwr trigger (Luca Magrone) - redhat: configs: disable the actpwr trigger (Luca Magrone) - redhat: configs: custom-overrides: enable IRS1125 sensor driver module (Luca Magrone) - redhat: configs: disable IRS1125 sensor driver (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable IMX519 sensor driver (Luca Magrone) - redhat: configs: disable IMX519 sensor driver (Luca Magrone) - redhat: configs: custom-overrides: enable ony IMX477 sensor on aarch64 (Luca Magrone) - redhat: configs: disable Sony IMX477 sensor (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable OF_CONFIGFS and its dependencies (Luca Magrone) - redhat: configs: disable OF_CONFIGFS on arm64 and powerpc (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable Raspberry Pi related sound cards (Luca Magrone) - redhat: configs: disable rpi sound card drivers for x86 (Luca Magrone) - redhat: configs: custom-overrides: enable Raspberry Pi Sense HAT core driver (Luca Magrone) - redhat: configs: disable Raspberry Pi Sense HAT core driver (Luca Magrone) - redhat: configs: custom-overrides: aarch64: enable "input" trigger for pwr_led (Luca Magrone) - redhat: configs: disable leds trigger input (Luca Magrone) - redhat: configs: custom-overrides: enable RASPBERRYPI_GPIOMEM for aarch64 (Luca Magrone) - redhat: configs: disable RASPBERRYPI_GPIOMEM (Luca Magrone) - redhat: configs: custom-overrides: enable Broadcom Char Drivers (Luca Magrone) - redhat: configs: disable BRCM_CHAR_DRIVERS (Luca Magrone) - redhat: configs: custom-overrides: enable FB_BCM2708 on aarch64 (Luca Magrone) - redhat: configs: custom-overrides: enable USB_DWCOTG (Luca Magrone) - redhat: configs: aarch64: disable USB_DWCOTG (Luca Magrone) - media: i2c: imx290: Register 0x3011 varies between imx327 and imx290 (Dave Stevenson) - configs: Enable Intel Wireless (PCI) drivers (Phil Elwell) - drm/vc4: tests: Update pv muxing tests now DSI1 is more flexible (Dave Stevenson) - drm/vc4: PV1 can be driven via any HVS channel, so adapt to allow it (Dave Stevenson) - brcmfmac: Fix structure size for WPA3 external SAE (Ting-Ying Li) - ASoC: adds ADC8x support to the Hifiberry DAC8x (j-schambacher) - dtoverlays: adds support for Hifiberry ADC8x to the DAC8x (j-schambacher) - dts: bcm2712: add missing brcm,vdm-qos-map to cm5 base dts (Jonathan Bell) - arm64: dts: Prepare for #size-cells = 2 (Phil Elwell) - mailbox: rp1: Don't claim channels in of_xlate (Phil Elwell) - firmware: rp1: Linger on firmware failure (Phil Elwell) - misc: rp1-pio: Error out on incompatible firmware (Phil Elwell) - spi: dw: Wait for idle after TX (Phil Elwell) - configs: Enable Renesas XHCI driver (Nicolai Buchwitz) - Enable CONFIG_NETKIT (Ethan Shold) - misc: rp1-pio: SM_CONFIG_XFER32 = larger DMA bufs (Phil Elwell) - README: show rpi-6.12.y build status (marcone) - overlays: Factor out the common i2c bus selection (Phil Elwell) - overlays: Regularisation and improvements (Phil Elwell) - drivers: media: pci: Update Hailo accelerator device driver to v4.20 (Naushir Patuck) - add shtc3 to i2c-sensors (James Sarrett) - configs: add CONFIG_SENSORS_INA238=m (James Sarrett) - add ina238 to i2c-sensors (James Sarrett) - configs: add CONFIG_SND_SOC_WM8904=m (Phil Elwell) - drm: rp1: rp1-dpi: Add "rgb_order" property (to match VC4 DPI) (Nick Hollinghurst) - drm/v3d: Remove `v3d->cpu_job` (Maíra Canal) - drm/v3d: Fix miscellaneous documentation errors (Maíra Canal) - drm/v3d: Add DRM_IOCTL_V3D_PERFMON_SET_GLOBAL (Christian Gmeiner) - drm/v3d: Stop active perfmon if it is being destroyed (Christian Gmeiner) - drm/v3d: Drop allocation of object without mountpoint (Matthias Brugger) - drm/v3d: Expose Super Pages capability (Maíra Canal) - drm/v3d: Add modparam for turning off Big/Super Pages (Maíra Canal) - drm/v3d: Use gemfs/THP in BO creation if available (Maíra Canal) - drm/v3d: Support Big/Super Pages when writing out PTEs (Maíra Canal) - drm/v3d: Flush the MMU before we supply more memory to the binner (Maíra Canal) - drm/vc4: Make v3d paths unavailable on any generation newer than vc4 (Maxime Ripard) - drm/v3d: Reduce the alignment of the node allocation (Maíra Canal) - drm/v3d: Introduce gemfs (Maíra Canal) - drm/v3d: Fix return if scheduler initialization fails (Maíra Canal) - drm/v3d: Use v3d_perfmon_find() (Christian Gmeiner) - drm/gem: Create a drm_gem_object_init_with_mnt() function (Maíra Canal) - drm/gem: Create shmem GEM object in a given mountpoint (Maíra Canal) - dtoverlays: waveshare-panel: Disable new touch controller by default (Dave Stevenson) - drivers: media: pisp_be: Remove unused fields in struct pisp_be_config (Luca Magrone) - drivers: media: pisp_be: Add support for YUV422 planar format (Naushir Patuck) - IMX219: Add 4-lane option to the device tree overlay (Peyton Howe) - media: imx219: Adjust PLL settings based on the number of MIPI lanes (Dave Stevenson) - mmc: bcm2835: Add downstream overclocking support (Phil Elwell) - configs: Switch to the upstream SDHOST driver (Phil Elwell) - bcm2708_fb: Explicitly initialise the IOMEM ops (Phil Elwell) - drm/v3d: CPU job submissions shouldn't affect V3D GPU clock (Jose Maria Casanova Crespo) - mmc: bcm2835-sdhost Observe SWIOTLB memory limit (Phil Elwell) - dts: bcm2711: Don't mark timer regs unconfigured (Phil Elwell) - mmc: use downstream DT property to modify CQE and/or SD CQ behaviour (Jonathan Bell) - mmc: set MMC_QUIRK_KNOWN_WORKING_SD_CQ on Raspberry Pi class A2 cards (Jonathan Bell) - mmc: sd: filter card CQ support based on an allow-list (Jonathan Bell) - DT: bcm2712: override supports-cqe to a cell (Jonathan Bell) - firmware: rp1: Simplify rp1_firmware_get (Phil Elwell) - misc: rp1-pio: Handle probe errors (Phil Elwell) - configs: add CONFIG_CRYPTO_NHPOLY1305_NEON=m (plumbeo) - ASoC: allo-piano-dac-plus: Remove pointless code (Phil Elwell) - ASoC: allo-piano-dac-plus: Fix volume limiting (Phil Elwell) - ASoC: pcm512x: Demote "No SCLK" to debug level (Phil Elwell) - media: i2c: imx415: Link frequencies are not exclusive to num lanes (Dave Stevenson) - media: i2c: imx415: Make HBLANK controllable and in consistent units (Dave Stevenson) - media: i2c: imx415: Add read/write control of VBLANK (Dave Stevenson) - dtoverlays: Add overlay for Sony IMX415 image sensor (Dave Stevenson) - defconfigs: Add IMX415 to all Pi defconfigs (Dave Stevenson) - media: rp1-cfe: Fix up link validation for CFE CFG input (Dave Stevenson) - dts: rp1: PL011 UARTs are actually r1p5 (Phil Elwell) - dts: bcm2712: PL011 UARTs are actually r1p5 (Phil Elwell) - dts: bcm2711: PL011 UARTs are actually r1p5 (Phil Elwell) - PCI: brcmstb: don't use ASPM state defines for register bits (Jonathan Bell) - dtoverlays: Switch imx462 overlay to use the new compatible (Dave Stevenson) - media: imx290: Add module parameter to allow selection of HCG mode (Dave Stevenson) - media: i2c: imx290: Add configuration for IMX462 (Dave Stevenson) - media: dt-bindings: sony,imx290: Add IMX462 to the IMX290 binding (Dave Stevenson) - media: i2c: imx290: Limit analogue gain according to module (Dave Stevenson) - Add and update files for pwm-gpio-fan overlay (Kai-Uwe Herbing) - Update the Issue template (andrum993) - Add Pi 500 and CM5 as a device to bug_report.yml (Nicolai Buchwitz) - Revert "PCI: Warn if no host bridge NUMA node info" (Phil Elwell) - overlays: Add ezsound-6x8iso overlay to README (Stephen Gordon) - overlays: Compile the new overlay (Stephen Gordon) - overlays: Add overlay for ezsound 6x8 soundcard (Stephen Gordon) - docs: pcm3168a: Add DT bindings to force clock consumer mode (Stephen Gordon) - soc: pcm3168a: Add DT binding to force clock consumer mode (Stephen Gordon) - configs: Enable PCM3168A driver (Stephen Gordon) - dts: Add noanthogs parameter to CM4 and CM5 (Phil Elwell) - overlays: Add and document i2c_csi_dsi0 parameters (Phil Elwell) - configs: Enable the WS2812_PIO_RP1 driver (Phil Elwell) - overlays: Add ws2812-pio overlay (Phil Elwell) - misc: Add ws2812-pio-rp1 driver (Phil Elwell) - misc: rp1-pio: Add in-kernel DMA support (Phil Elwell) - misc: rp1-pio: Minor cosmetic tweaks (Phil Elwell) - misc: rp1-pio: Convert floats to 24.8 fixed point (Phil Elwell) - misc: rp1-pio: More logical probe sequence (Phil Elwell) - configs: Restore RP1_PIO after dependency change (Phil Elwell) - overlays: goodix: Allow override i2c address (Renjaya Raga Zenta) - dts: bcm2712-ds: Restore the VGIC interrupt (Phil Elwell) - dtoverlays: Use continuous clock mode for ov9281 (Dave Stevenson) - misc: rp1-pio: Support larger data transfers (Phil Elwell) - dtoverlays: Add override for target-path on I2C overlays (Dave Stevenson) - serial: sc16is7xx: announce support for SER_RS485_RTS_ON_SEND (Hugo Villeneuve) - drm: rp1: rp1-dpi: Fix optional dependency on RP1_PIO (Nick Hollinghurst) - ASoC: allo-piano-dac-plus: Suppress -517 errors (Phil Elwell) - drm: Validate connector rotation has one bit set in the rotation property (Dave Stevenson) - drm: vc4: txp: Do not allow 24bpp formats when transposing (Dave Stevenson) - ASoC: allo-piano-dac-plus: Fix volume limit locking (Phil Elwell) - drm: rp1: rp1-dpi: Add interlaced modes and PIO program to fix VSYNC (Nick Hollinghurst) - dts: overlays: vc4-kms-dpi-generic-overlay: Add "interlaced" property (Nick Hollinghurst) - drm: bridge: panel: Connector to allow interlaced modes (Nick Hollinghurst) - drm/v3d: Correct clock settng calls to new APIs (Dom Cobley) - cgroup: Add cgroup_enable option (Phil Elwell) - dts: bcm2712-ds: Dedup as upstream support expands (Phil Elwell) - overlays: Added waveshare 13.3inch panel support (eng33) - drm: panel: Added waveshare 13.3inch panel (eng33) - input: Add support for no irq to ili210x driver (eng33) - dtoverlays: Add Arducam override for ov9281 (Dave Stevenson) - serial: rpi-fw-uart: Demote debug log messages (Phil Elwell) - nvme-pci: Disable Host Memory Buffer usage (Phil Elwell) - Allow setting I²C clock frequency via i2c_arm_baudrate dtparam when using pimidi overlay. (gtrainavicius) - ARM: dts: Remove duplicate tags (Phil Elwell) - dtoverlay: Add an overlay for the Raspberry Pi firmware UART (Tim Gover) - configs: Enable the RPi FW UART driver (Tim Gover) - serial: tty: Add a driver for the RPi firmware UART (Tim Gover) - serial: core: Add the Raspberry Pi firmware UART id (Tim Gover) - raspberrypi-firmware: Add the RPI firmware UART APIs (Tim Gover) - arm64: dts: broadcom: Add dma-names for HDMI audio DMA (Dave Stevenson) - dtoverlays: bcm2712d0 - Don't change vc4 compatible string (Dave Stevenson) - drm/vc4: Cache LBM allocations to avoid double-buffering (Dave Stevenson) - drm/vc4: backport 27e0a194a256 and b3bf19552ea3 (Maíra Canal) - drm/vc4: tests: Introduce a test for LBM buffer size (Maxime Ripard) - drm/vc4: tests: Support a few more plane formats (Maxime Ripard) - drm/vc4: tests: Add helper to add a new plane to a state (Maxime Ripard) - drm/vc4: tests: Add function to lookup a plane for a CRTC (Maxime Ripard) - drm/vc4: tests: Use custom plane state for mock (Maxime Ripard) - drm/vc4: tests: Add tests for BCM2712 PixelValve Muxing (Maxime Ripard) - drm/vc4: tests: Add BCM2712 mock driver (Maxime Ripard) - drm/vc4: tests: Return the allocated output (Maxime Ripard) - drm/vc4: tests: Drop drm parameter for vc4_find_crtc_for_encoder (Maxime Ripard) - drm/vc4: tests: Switch generation mockup to a switch (Maxime Ripard) - drm/vc4: fkms: Add firmware-kms mode (Dave Stevenson) - drm/vc4: Disable the 2pixel/clock odd timings workaround for interlaced (Dom Cobley) - drm/vc4: Remove request for min clocks when hdmi output is disabled (Dom Cobley) - drm/vc4: txp: Add a rotation property to the writeback connector (Dave Stevenson) - drm/vc4: Drop panic priority for writeback connector (Dave Stevenson) - drm/vc4: Do not include writeback conn load in load tracker (Dave Stevenson) - drm/vc4: Assign 32 overlay planes to writeback only (Dave Stevenson) - drm/vc4: Increase number of overlay planes from 16 to 48 (Dave Stevenson) - drm/vc4: hvs: Defer updating the enable_bg_fill until vblank (Dave Stevenson) - drm/vc4: Use the TPZ scaling filter for 1x1 source images (Dave Stevenson) - drm/vc4: Add support for per plane scaling filter selection (Dave Stevenson) - vc4/drm:plane: Make use of chroma siting parameter (Dom Cobley) - drm/vc4: dpi: Add override for RGB order (Dave Stevenson) - drm/vc4: Also power down the PLL core when resetting PHY (Dom Cobley) - drm/vc4: Implement vc6_hdmi_phy_disable (Dom Cobley) - drm/vc4: Add a delay after disabling hdmi phy output (Dom Cobley) - vc4/hdmi: Ignore hotplug interrupt with force_hotplug (Dom Cobley) - drm/vc4_hdmi: Allow hotplug detect to be forced (Dom Cobley) - drm/vc4: hdmi: Add a clear_infoframe hook (Dave Stevenson) - vc4: Add jack detection to HDMI audio driver (David Turner) - drm/vc4: Initialise the tv_mode property default from cmdline_mode. (Dave Stevenson) - drm/vc4: Make VEC progressive modes readily accessible (Mateusz Kwiatkowski) - drm/vc4: Allow setting the TV norm via module parameter (Mateusz Kwiatkowski) - drm: vc4: dsi: enable video and then retry failed transfers (Dave Stevenson) - drm/vc4: dsi: Don't reset the host until post_disable (Dave Stevenson) - drm/vc4: Fixup mode for 7inch panel on DSI0 (Dave Stevenson) - drm/vc4: Add vblank callback to DSI0 to reset FIFO (Dave Stevenson) - drm/vc4: Ensure DSI is enabled for FIFO resets (Dave Stevenson) - drm: vc4: Reset DSI AFE on disable (Dave Stevenson) - drm: vc4: dsi: Clocks should be running before reset (Dave Stevenson) - drm/vc4: Add option to call from crtc to encoder on vblank (Dave Stevenson) - drm: vc4: Block swiotlb bounce buffers being imported as dmabuf (Dave Stevenson) - drm/vc4: Disable overrun interrupts (Dave Stevenson) - drm/vc4: Add hvs_dlist_allocs debugfs function. (Dave Stevenson) - drm/vc4: hvs: Defer dlist slots deallocation (Maxime Ripard) - arm64: dts: broadcom: Fixup HVS address for downstream size-cells (Dave Stevenson) - drm/vc4: Use phys addresses for slave DMA config (Phil Elwell) - dtoverlays: enable gpu node from vc4-kms-v3d-pi5 (Dave Stevenson) - arm64: dts: broadcom: Fixup downstream DT changes due to DRM merge (Dave Stevenson) - arm64: dts: broadcom: Add DT for D-step version of BCM2712 (Dave Stevenson) - arm64: dts: broadcom: Add display pipeline support to BCM2712 (Dave Stevenson) - arch: arm64: broadcom: Add firmware clocks node (Dave Stevenson) - dt: Disabled vc4 by default on 2712 (Dave Stevenson) - drm/vc4: Drop planes that are completely off-screen or 0 crtc size (Dave Stevenson) - drm/vc4: Enable bg_fill if there are no planes enabled (Dave Stevenson) - drm/vc4: Add additional warn_on for incorrect revisions (Maxime Ripard) - drm/vc4: hdmi: Support 2712 D-step register map (Dave Stevenson) - drm/vc4: plane: Add support for 2712 D-step. (Dave Stevenson) - drm/vc4: hvs: Add in support for 2712 D-step. (Dave Stevenson) - drm/vc4: drv: Add support for 2712 D-step (Dave Stevenson) - drm/vc4: txp: Add BCM2712 MOPLET support (Maxime Ripard) - drm/vc4: txp: Add support for BCM2712 MOP (Maxime Ripard) - drm/vc4: txp: Add a new TXP encoder type (Maxime Ripard) - drm/vc4: txp: Move the encoder type in the variant structure (Maxime Ripard) - drm/vc4: txp: Handle 40-bits DMA Addresses (Maxime Ripard) - drm/vc4: txp: Add horizontal and vertical size offset toggle bit (Maxime Ripard) - drm/vc4: txp: Add byte enable toggle bit (Maxime Ripard) - drm/vc4: txp: Rename TXP data structure (Maxime Ripard) - drm/vc4: txp: Introduce structure to deal with revision differences (Maxime Ripard) - drm/vc4: hdmi: Add support for BCM2712 HDMI controllers (Maxime Ripard) - drm/vc4: crtc: Add support for BCM2712 PixelValves (Maxime Ripard) - drm/vc4: hvs: Add support for BCM2712 HVS (Maxime Ripard) - drm/vc4: drv: Support BCM2712 (Maxime Ripard) - drm/vc4: Fix reading of frame count on GEN5 / Pi4 (Dave Stevenson) - drm/vc4: Use of_device_get_match_data to set generation (Dave Stevenson) - drm/vc4: Use `vc4_perfmon_find()` (Maíra Canal) - drm/vc4: hvs: Enable SCALER_CONTROL early in HVS init (Tim Gover) - drm/vc4: plane: Move the buffer offset out of the vc4_plane_state (Dave Stevenson) - drm/vc4: hvs: Change prototype of __vc4_hvs_alloc to pass registers (Maxime Ripard) - drm/vc4: hvs: Rework LBM alignment (Maxime Ripard) - drm/vc4: plane: Change ptr0_offset to an array (Maxime Ripard) - drm/vc4: hvs: Rename hvs_regs list (Maxime Ripard) - drm/vc4: hvs: Create cob_init function (Maxime Ripard) - drm/vc4: hvs: Create hw_init function (Maxime Ripard) - drm/vc4: hvs: Use switch statement to simplify vc4_hvs_get_fifo_from_output (Maxime Ripard) - drm/vc4: hdmi: use eld_mutex to protect access to connector->eld (Dmitry Baryshkov) - drm/vc4: hvs: Set AXI panic modes for the HVS (Dave Stevenson) - drm/vc4: hdmi: Avoid log spam for audio start failure (Dom Cobley) - drm/vc4: Correct generation check in vc4_hvs_lut_load (Dave Stevenson) - drm/vc4: Match drm_dev_enter and exit calls in vc4_hvs_atomic_flush (Dave Stevenson) - drm/vc4: Match drm_dev_enter and exit calls in vc4_hvs_lut_load (Dave Stevenson) - drm/vc4: Introduce generation number enum (Maxime Ripard) - drm/vc4: hdmi: Increase audio MAI fifo dreq threshold (Dom Cobley) - drm/vc4: hvs: Correct logic on stopping an HVS channel (Dave Stevenson) - drm/vc4: hvs: Remove incorrect limit from hvs_dlist debugfs function (Dave Stevenson) - drm/vc4: hvs: Fix dlist debug not resetting the next entry pointer (Dave Stevenson) - drm/vc4: hdmi: Avoid hang with debug registers when suspended (Dom Cobley) - drm/vc4: hvs: Don't write gamma luts on 2711 (Dave Stevenson) - drm/vc4: hvs: Remove ABORT_ON_EMPTY flag (Dom Cobley) - drm/vc4: plane: YUV planes require vertical scaling to always be enabled (Dave Stevenson) - drm/vc4: crtc: Move assigned_channel to a variable (Maxime Ripard) - drm/vc4: plane: Use return variable in atomic_check (Maxime Ripard) - drm/vc4: plane: Add more debugging for LBM allocation (Maxime Ripard) - drm/vc4: hvs: Print error if we fail an allocation (Maxime Ripard) - drm/vc4: hvs: More logging for dlist generation (Maxime Ripard) - drm/vc4: hdmi: Warn if writing to an unknown HDMI register (Maxime Ripard) - drm/vc4: plane: Add support for YUV444 formats (Dom Cobley) - drm/vc4: crtc: Force trigger of dlist update on margins change (Dave Stevenson) - drm/vc4: plane: Handle fractional coordinates using the phase field (Dom Cobley) - drm/vc4: plane: Keep fractional source coords inside state (Dom Cobley) - dts: bcm2712-ds: Restore gpio-direct to gio_aon (Phil Elwell) - dts: rp1: Re-enable DMA to RP1 UART0 (Phil Elwell) - dts: bcm2712-ds: Restore the A76 PMU declaration (Phil Elwell) - dt: rp1: Link RP1 DMA to the associated clock (Dave Stevenson) - dt: rp1: Use clk_sys for ethernet hclk and pclk (Dave Stevenson) - rp1: clk: Remove CLK_IGNORE_UNUSED flags (Dave Stevenson) - clk: rp1: Add RP1_CLK_DMA. (Dave Stevenson) - dt: arm64: Fixup RP1 ethernet DT configuration (Dave Stevenson) - rp1: clk: Rationalise the use of the CLK_IS_CRITICAL flag (Dave Stevenson) - rp1: clk: Only set PLL_SEC_RST in rp1_pll_divider_off (Dave Stevenson) - net: macb: Add support for Raspberry Pi RP1 ethernet controller (Dave Stevenson) - dt-bindings: net: cdns,macb: Add compatible for Raspberry Pi RP1 (Dave Stevenson) - overlays: qca7000: replace URL with textual hint (Michael Heimpold) - dts: bcm2712-rpi-cm5: Remove inaccessible USB_OC_N (Phil Elwell) - dts: bcm2712-rpi: For CM5IO, i2c_csi_dsi needs to be CAM/DISP1 (Dave Stevenson) - drm: vc4: dsi: Handle the different command FIFO widths (Dave Stevenson) - misc: rp1-pio: Fix parameter checks wihout client (Phil Elwell) - misc/rp1-pio: Fix copy/paste error in pio_rp1.h (Phil Elwell) - media: i2c: imx477: Fix link frequency menu (Dave Stevenson) - Adding pimidi-overlay.dts (Giedrius) - Include snd-pimidi kernel module in Raspberry Pi defconfigs (Giedrius) - Adding Pimidi kernel module. (Giedrius) - drm/connector: hdmi: Attempt YUV422 output if RGB isn't supported (Dave Stevenson) - drm/connector: Initialise max_bpc to the minimum value supported (Dave Stevenson) - PCI: brcmstb: set link speed before deasserting fundamental reset (Jonathan Bell) - overlays: Enable Raspberry Touch 2 rotation with overlay (Just a nerd) - dtoverlays: enable SPI CS active-high (Iker Pedrosa) - drivers: media: pci: Update Hailo accelerator device driver to v4.19 (Naushir Patuck) - configs: enable driver for Vertexcom MSE102X (Michael Heimpold) - overlays: Add pwm-pio overlay (Phil Elwell) - configs: Enable the pwm-pio-rp1 driver (Phil Elwell) - pwm: Add pwm-pio-rp1 driver (Phil Elwell) - dts: bcm2712-rpi: Add the RP1 PIO device (Phil Elwell) - configs: Enable RP1 PIO support (Phil Elwell) - misc: Add RP1 PIO driver (Phil Elwell) - dts: bcm2712-rpi: Add RP1 firmware and mailboxes (Phil Elwell) - firmware: Add an RP1 firmware interface over mbox (Phil Elwell) - mailbox: Add RP1 mailbox support (Phil Elwell) - dmaengine: dw-axi-dmac: Only start idle channels (Phil Elwell) - dtoverlays: Add link-frequency override to imx477/378 overlay (Dave Stevenson) - media: i2c: imx477: Add options for slightly modifying the link freq (Dave Stevenson) - drivers: usb: xhci: set HID bit in streaming endpoint contexts (Jonathan Bell) - serial: pl011: Request a memory width of 1 byte (Phil Elwell) - spi: dw: Let the DMAC set the transfer widths (Phil Elwell) - dmaengine: dw-axi-dmac: Allow client-chosen width (Phil Elwell) - drm: Add a rotation parameter to connectors. (Dave Stevenson) - drm: Add a DRM_MODE_TRANSPOSE option to the DRM rotation property (Dave Stevenson) - drm: Increase plane_mask to 64bit. (Dave Stevenson) - drm: Set non-desktop property to true for writeback and virtual connectors (Dave Stevenson) - iio: humidity: dht11: Allow non-zero decimals (Phil Elwell) - drivers: usb: xhci: prevent a theoretical race on non-coherent platforms (Jonathan Bell) - usb: dwc3: core: add support for setting NAK enhancement bits for FS/HS (Jonathan Bell) - dt-bindings: usb: snps,dwc3: add FS/HS periodic NAK polling quirk (Jonathan Bell) - mmc: quirks: add more broken Kingston Canvas Go! SD card date ranges (Jonathan Bell) - mm/vmscan: Maintain TLB coherency in LRU code (Phil Elwell) - drivers: media: bcm2835_isp: Cache LS table dmabuf (Naushir Patuck) - numa/emulation: Check emulated zones around the CMA window (Tvrtko Ursulin) - mm/numa: Allow override of kernel's default NUMA policy (Tvrtko Ursulin) - dma-buf: system_heap: Allow specifying maximum allocation order (Tvrtko Ursulin) - media: i2c: ov5647: Add V4L2_CID_LINK_FREQUENCY control (Dave Stevenson) - media: i2c: ov5647: Use the same PLL config for full, 1080p, and binned modes (Dave Stevenson) - media: i2c: ov5647: Separate out the common registers. (Dave Stevenson) - media: i2c: ov5647: Tidy up mode registers to make the order common (Dave Stevenson) - media: platform: video-mux: Fix mutex locking (Paul Elder) - NotForUpstream: media: video-mux: Propagate controls to source (Kieran Bingham) - drivers: media: imx500: Enable LS correction (Naushir Patuck) - drm: panel: ili9881: Add option to reconfigure setup commands (Dave Stevenson) - drm: panel: ili9881: Correct symmetry on enable/disable return codes (Dave Stevenson) - media: i2c: ov5647: Add control of V4L2_CID_HBLANK (Dave Stevenson) - lib: earlycpio: export symbol find_cpio_data() (Richard Oliver) - media: i2c: Add driver for Sony IMX500 sensor (Richard Oliver) - media: dt-bindings: i2c: Add Sony IMX500 (Richard Oliver) - rtc: pcf8523: Fix oscillator stop bit handling reading from Control_1 (Axel) - Bluetooth: hci_sync: Fix crash on NULL parent (Phil Elwell) - gpiolib: Override gpiochip numbers with DT aliases (Phil Elwell) - hwmon: (adt7410) Add DT compatible strings (Phil Elwell) - spi: dw: Clamp the minimum clock speed (Phil Elwell) - spi: dw: Fix non-DMA transmit-only transfers (Phil Elwell) - sound/soc: dwc-i2s: choose FIFO thresholds based on DMA burst constraints (Jonathan Bell) - DT: bindings: add a dma-maxburst property to snps,designware-i2s (Jonathan Bell) - drivers: dw-axi-dmac: make more sensible choices about memory accesses (Jonathan Bell) - spi: dw: don't immediately kill DMA transfers if an error occurs (Jonathan Bell) - spi: dw: Save bandwidth with the TMOD_RO feature (Phil Elwell) - spi: dw: Save bandwidth with the TMOD_TO feature (Phil Elwell) - pinctrl: rp1: jump through hoops to avoid PCIe latency issues (Jonathan Bell) - media: platform: Move bcm2835-unicam compatible to downstream driver (Dave Stevenson) - media: bcm2835-unicam: Reinstate old downstream driver as legacy (Dave Stevenson) - dt-bindings: clk: rp1: Add clocks representing MIPI DSI byteclock (Nick Hollinghurst) - brcmfmac: support extsae with psk / 1x offloading (Chien-Chia Chen) - brcmfmac: Add "extsae" as an alias for "sae_ext" (Phil Elwell) - brcmfmac: Only match complete feature names (Phil Elwell) - dmaengine: dw-axi-dmac: Honour snps,block-size (Phil Elwell) - spi: Add a driver for the RPI RP2040 GPIO bridge (Richard Oliver) - spi: dt-bindings: Add RPI RP2040 GPIO Bridge (Richard Oliver) - media: pisp_be: Re-introduce video node offset (Naushir Patuck) - media: pisp_be: Re-introduce multi-context support (Jacopo Mondi) - media: pisp-be: Backport the mainline PiSP BE driver (Jacopo Mondi) - staging: vc04_services: vc-sm-cma: Explicitly set DMA mask (Kieran Bingham) - lan78xx: Return tx_lpi_timer even if disabled (Phil Elwell) - lan78xx: Read initial EEE status from DT (Phil Elwell) - media: bcm2835-unicam: Add support for unpacked 14bit Bayer formats (Dave Stevenson) - media: bcm2835-unicam: Add support for 14bit mono sources (Dave Stevenson) - media: bcm2835-unicam: Add support for 12bit mono packed format (Dave Stevenson) - ARM: bcm: Switch board, clk and pinctrl to bcm2711 compatible (Stefan Wahren) - arm: bcm2835: Add bcm2838 compatible string. (Phil Elwell) - staging: vc04_services: vc-sm-cma: Register with vchiq_bus_type (Kieran Bingham) - staging: vc04_services: vc-sm-cma: Drop include Makefile directive (Kieran Bingham) - staging: vc04_services: vc-sm-cma: Remove deprecated header (Kieran Bingham) - staging: vc04_services: Add helpers for vchiq driver data (Umang Jain) - drivers: media: pci: Fix Hailo compile warnings (Phil Elwell) - drivers: media: pci: Add wrapper after removal of follow_pfn (Dom Cobley) - drivers: media: pci: Update Hailo accelerator device driver to v4.18.0 (Naushir Patuck) - drivers: media: pcie: hailo: Fix include paths (Phil Elwell) - drivers: media: pci: Add Hailo accelerator device drivers (Naushir Patuck) - drm/bridge: panel: Name an associated backlight device (Dave Stevenson) - backlight: Add a display name to the core, and a function to set it (Dave Stevenson) - regulator: rpi_panel_v2: Add delay on I2C reads (Dave Stevenson) - regulator: rpi_panel_v2: Add remove and shutdown hooks (Dave Stevenson) - spi: dw: Handle any number of gpiod CS lines (Phil Elwell) - pinctrl: bcm2835: Persist outputs by default (Phil Elwell) - drm/bridge: tc358762: revert move ops to enable (Dave Stevenson) - drm/bridge: tc358762: Program the DPI mode into the chip (Dave Stevenson) - drm/panel: Add and initialise an orientation field to drm_panel from OF (Dave Stevenson) - drivers: media: cfe: Add remap entries for mono formats (Naushir Patuck) - dw-axi-dmac-platform: Avoid trampling with zero length buffer (popcornmix) - media: bcm2835-unicam: Add option for a GPIO to reflect FS/FE timing (Dave Stevenson) - module: Avoid ABI changes when debug info is disabled (Ben Hutchings) - nvmem: raspberrypi: Add nvmem driver for accessing OTP data (Dom Cobley) - i2c: designware: Make the SDA hold time half LCNT (Phil Elwell) - i2c: designware: Add support for bus clear feature (Phil Elwell) - mmc: quirks: add MMC_QUIRK_BROKEN_ERASE for Phison/Integral cards (Jonathan Bell) - mmc: block: disable CQ on SD cards when doing non-Discard erase (Jonathan Bell) - mmc: quirks: disable cache on more known-bad Sandisk card date ranges (Jonathan Bell) - drivers: mmc: disable write-caching on Samsung 2023 model year SD cards (Jonathan Bell) - mmc: don't reference requests after finishing them (Jonathan Bell) - mmc: restrict posted write counts for SD cards in CQ mode (Jonathan Bell) - drivers: mmc: core: handle card-removal when running CQE recovery (Jonathan Bell) - drivers: mmc: sdhci-brcmstb: improve bcm2712 card removal handling (Jonathan Bell) - mmc: sdhci: extend maximum ADMA transfer length to 4MiB (Jonathan Bell) - mmc: sdhci-brcmstb: add hs400_downgrade callback for bcm2712 (Jonathan Bell) - drivers: mmc: handle 1024-byte SD General Info lengths (Jonathan Bell) - drivers: mmc: add debugfs entries for SD extension registers (Jonathan Bell) - drivers: mmc: be more cautious when manipulating Command Queue enable (Jonathan Bell) - drivers: mmc: export SD extension register read/write functions (Jonathan Bell) - drivers: mmc: cqhci: clear CQHCI_CTL if halt fails (Jonathan Bell) - drivers: sdhci-brcmstb: work around mystery CQE CMD_IDLE_TIMER trampling (Jonathan Bell) - drivers: mmc: trigger activity LED when CQE is active (Jonathan Bell) - drivers: mmc: preallocate a block for SD extension register accesses (Jonathan Bell) - drivers: mmc: add SD support for Command Queueing (Jonathan Bell) - mmc: bcm2835-sdhost: use Host Software Queueing mechanism (Jonathan Bell) - brcmfmac: Fix 802.1x (Mike Cui) - brcmfmac: support external SAE authentication in station mode (Chung-Hsien Hsu) - brcmfmac: Fix interoperating DPP and other encryption network access (Kurt Lee) - non-upstream: support DS1 exit firmware re-download (Praveen Babu C) - i2c: mux: Add support for generic base-nr property (Phil Elwell) - regulator: Add a regulator for the new LCD panels (Dave Stevenson) - dt-bindings: add additional RP1 PLL output channels (Jonathan Bell) - Bluetooth: btbcm: Add entry for BCM43439 UART BT (Phil Elwell) - arm64/Kconfig: Don't set DMA_BOUNCE_UNALIGNED_KMALLOC (Phil Elwell) - serial: sc16is7xx: Don't spin if no data received (Phil Elwell) - i2c: designware: Support non-standard bus speeds (Phil Elwell) - i2c: designware: Use SCL rise and fall times in DT (Phil Elwell) - drivers: usb: dwc3: add FS/LS bus instance parkmode disable bit (Jonathan Bell) - dt-bindings: usb: update dwc3 bindings for parkmode-disable quirks (Jonathan Bell) - spi: bcm2835: Support spi0-0cs and SPI_NO_CS mode (Phil Elwell) - media: i2c: adv7180: Add support for V4L2_CID_LINK_FREQ (Dave Stevenson) - media: i2c: adv7180: Use MEDIA_BUS_FMT_UYVY8_1X16 for CSI2 output (Dave Stevenson) - firmware/psci: Pass given partition number through (Phil Elwell) - media: i2c: Add ROHM BU64754 Camera Autofocus Actuator (Kieran Bingham) - media: dt-bindings: i2c: Add Rohm BU64754 bindings (Kieran Bingham) - dtc update (Phil Elwell) - drm/bridge: display-connector: Select DRM_KMS_HELPER (Dave Stevenson) - media/i2c: ov7251: Switch from V4L2_CID_GAIN to V4L2_CID_ANALOGUE_GAIN (Dave Stevenson) - drivers: thermal: step_wise: add support for hysteresis (Ram Chandrasekar) - xhci: Use more event ring segment table entries (Jonathan Bell) - w1: Disable kernel log spam (Phil Elwell) - gpio-poweroff: Disable the WARN (Phil Elwell) - Add ability to export gpio used by gpio-poweroff (Nick Bulleid) - dt-bindings: mmc: sdhci-of-dwcmhsc: Add Raspberry Pi RP1 support (Jonathan Bell) - drivers: mmc: sdhci: add SPURIOUS_INT_RESP quirk (Jonathan Bell) - dt-bindings: PCI: brcmstb: add optional property - "brcm,tperst-clk-ms" (Jonathan Bell) - drm/connector: Change DRM card alias from underscore to hyphen (Dave Stevenson) - drm/fb-helper: Look up preferred fbdev node number from DT (Dave Stevenson) - fbdev: Allow client to request a particular /dev/fbN node (Dave Stevenson) - media: i2c: ov9282: Read chip ID via 2 reads (Dave Stevenson) - drm: Look for an alias for the displays to use as the DRM device name (Dave Stevenson) - media: i2c: Move Kconfig entry for IMX477 to the camera sensor section (Naushir Patuck) - dt-bindings: display: Add BCM2712 KMS driver bindings (Maxime Ripard) - dt-bindings: display: Add BCM2712 MOPLET bindings (Maxime Ripard) - dt-bindings: display: Add BCM2712 MOP bindings (Maxime Ripard) - dt-bindings: display: Add BCM2712 PixelValve bindings (Maxime Ripard) - dt-bindings: display: Add BCM2712 HVS bindings (Maxime Ripard) - dt-bindings: display: Add BCM2712 HDMI bindings (Maxime Ripard) - dt-bindings: rtc: new binding for Raspberry Pi RTC driver (Dom Cobley) - rtc: rtc-rpi: Add simple RTC driver for Raspberry Pi (Dom Cobley) - irqchip/irq-brcmstb-l2: Add config for 2711 controller (Dom Cobley) - drivers: iommu: Add BCM2712 IOMMU (Nick Hollinghurst) - dmaengine: bcm2835: Rename to_bcm2711_cbaddr to to_40bit_cbaddr (Dom Cobley) - dmaengine: bcm2835: HACK: Support DMA-Lite channels (Maxime Ripard) - dmaengine: bcm2835: Add BCM2712 support (Phil Elwell) - dt-bindings: gpu: v3d: Add BCM2712 to compatibility list (Iago Toral Quiroga) - drm/v3d: add brcm,2712-v3d as a compatible V3D device (Iago Toral Quiroga) - spi: spi-gpio: Implement spidelay when requested bit rate <= 1 Mbps (Nick Hollinghurst) - spi: gpio: Fix spi-gpio to correctly implement sck-idle-input (Nick Hollinghurst) - soc: bcm: bcm2835-power: Add support for BCM2712 (Phil Elwell) - mfd: bcm2835-pm: Add support for BCM2712 (Phil Elwell) - hwmon: Add RP1 ADC and temperature driver (Phil Elwell) - dt-bindings: net: cdns,macb: AXI tuning properties (Phil Elwell) - media: rp1: Add CFE (Camera Front End) support (Naushir Patuck) - drm: Add RP1 VEC driver (Nick Hollinghurst) - drm: Add RP1 DPI driver (Nick Hollinghurst) - drm: Add RP1 DSI driver (Nick Hollinghurst) - pwm: Add support for RP1 PWM (Phil Elwell) - spi: dw: Handle combined tx and rx messages (Phil Elwell) - dmaengine: dw-axi-dmac: Fixes for RP1 (Phil Elwell) - i2c: designware: Add SMBUS quick command support (Phil Elwell) - clk: rp1: Add sdio-clk driver (Phil Elwell) - mmc: sdhci-of-dwcmshc: define sdio timeout clocks (Liam Fraser) - serial: pl011: rp1 uart support (Phil Elwell) - pinctrl: Add rp1 driver (Phil Elwell) - dt-bindings: pinctrl: Add bindings for Raspberry Pi RP1 (Phil Elwell) - clk: Add rp1 clock driver (Phil Elwell) - dt-bindings: clock: Add bindings for Raspberry Pi RP1 (Phil Elwell) - mfd: Add rp1 driver (Phil Elwell) - dt-binding: mfd: Add binding for Raspberry Pi RP1 (Phil Elwell) - V4L2: Add PiSP compressed formats to V4L2 (Naushir Patuck) - V4L2: Add PiSP opaque formats to V4L2 (Naushir Patuck) - usb: dwc3: Set DMA and coherent masks early (Jonathan Bell) - usb: dwc3: core: Defer the probe until USB power supply ready (Kyle Tso) - net: macb: Also set DMA coherent mask (Phil Elwell) - reset: reset-brcmstb-rescal: Support shared use (Phil Elwell) - irqchip: irq-bcm2712-mip: Support for 2712's MIP (Phil Elwell) - sdhci: Add SD Express hook (Phil Elwell) - mmc: brcmstb: add support for BCM2712 (Ulf Hansson) - pinctrl: bcm2712 pinctrl/pinconf driver (Phil Elwell) - Allow RESET_BRCMSTB on ARCH_BCM2835 (Phil Elwell) - gpio_brcmstb: Allow to build for ARCH_BCM2835 (Dom Cobley) - rtc: rv3028: Add backup switchover mode support (Phil Howard) - bcm2835-unicam: hacks to allow it to build (Dom Cobley) - drm/ili9486: Resolve clash in spi_device_id names (Dave Stevenson) - cfg80211: ship debian certificates as hex files (Nicolai Buchwitz) - usb: xhci: add XHCI_VLI_HUB_TT_QUIRK (Jonathan Bell) - usb: xhci: add VLI_SS_BULK_OUT_BUG quirk (Jonathan Bell) - usb: xhci: borrow upstream TRB_FETCH quirk on VL805 hosts (Jonathan Bell) - xhci: quirks: add link TRB quirk for VL805 (Jonathan Bell) - drivers: media: bcm2835_unicam: Improve frame sequence count handling (Naushir Patuck) - serial: sc16is7xx: Read modem line state at startup (Phil Elwell) - pps: Compatibility hack should be X86-specific (Phil Elwell) - i2c-bcm2835: Implement I2C_M_IGNORE_NAK (Dave Stevenson) - i2c-bcm2835: Do not abort transfers on ERR if still active (Dave Stevenson) - i2c-bcm2835: Flush FIFOs cleanly on error (Dave Stevenson) - spi: bcm2835: Use phys addresses for slave DMA config (Phil Elwell) - mmc: bcm2835: Use phys addresses for slave DMA config (Phil Elwell) - pinctrl: bcm2835: Workaround for edge IRQ loss (Phil Elwell) - Bluetooth: hci_bcm: Add more invalid BDADDRs (Phil Elwell) - Bluetooth: hci_sync: Add fallback-bd-address prop (Phil Elwell) - serial: 8250: Add NOMSI bug for bcm2835aux (Phil Elwell) - input: goodix: Add option to poll instead of relying on IRQ line (Dave Stevenson) - media: bcm2835-unicam: Start and stop media_pipeline with same node (Dave Stevenson) - dt-bindings: media: i2c: Replace IMX708 sensor binding documentation file (Naushir Patuck) - fbdev: Don't cancel deferred work if pagelist empty (Phil Elwell) - hwrng: bcm2835 - sleep more intelligently (Phil Elwell) - media: i2c: imx219: Correct the minimum vblanking value (David Plowman) - iio: light: veml6070: Add DT compatible string (Phil Elwell) - iio: light: tsl4531: Add DT compatible string (Phil Elwell) - hwmon: (sht3x) Add DT compatible string (Phil Elwell) - rtc: ds3232: Add DT compatible string for ds3234 (Phil Elwell) - hwmon: (ds1621) Add DT compatible strings (Phil Elwell) - hwmon: (aht10): Add DT compatible string (Phil Elwell) - gpio: pca953x: Add ti,tca9554 compatible string (Phil Elwell) - iio: adc: mcp3422: Add correct compatible strings (Phil Elwell) - media: bcm2835-unicam: Add support for RAW16 formats (Dave Stevenson) - media: bcm2835-unicam: Use mipi-csi2.h header for data type values (Dave Stevenson) - media/i2c: Add a driver for the Sony IMX708 image sensor (Nick Hollinghurst) - dtbindings: media: i2c: Add IMX708 CMOS sensor binding (Dave Stevenson) - media: dw9807-vcm: Smooth the first user movement of the lens (Dave Stevenson) - media: dw9807-vcm: Add regulator support to the driver (Dave Stevenson) - media: dt-bindings: Add regulator to dw9807-vcm (Dave Stevenson) - media: dw9807-vcm: Add support for DW9817 bidirectional VCM driver (Dave Stevenson) - media: dt-bindings: Add DW9817 to DW9807 binding (Dave Stevenson) - net: bcmgenet: Add 'eee' module parameter (Phil Elwell) - media: i2c: ov7251: Add module param to select ext trig mode (Dave Stevenson) - media: adv7180: Nasty hack to allow input selection. (Dave Stevenson) - media: bcm2835-unicam: Fix up start/stop api change (Dom Cobley) - media: bcm2835-unicam: Fix for possible dummy buffer overrun (Naushir Patuck) - media: video-mux: Read CSI2 config from FW, and pass to receiver (Dave Stevenson) - media: bcm2835-unicam: Correctly handle FS + FE ISR condtion (Naushir Patuck) - Populate phy driver block for BCM54213PE (Jonathan Lemon) - Add HDMI1 facility to the driver. (Dom Cobley) - media: i2c: Add driver of Arducam 64MP camera (Lee Jackson) - media: dt-bindings: media: i2c: Add Arducam 64MP CMOS sensor binding (Lee Jackson) - random: do not use jump labels before they are initialized (Jason A. Donenfeld) - vc04_services: vchiq-mmal: Add defines for mmal_es_format flags (Dave Stevenson) - hwmon: emc2305: fixups for driver submitted to mailing lists (Phil Elwell) - dt-bindings: hwmon: add microchip,emc2305.yaml dt binding description. (Michael Shych) - thermal: broadcom: Use dev_err_probe to suppress defer errors (Dave Stevenson) - media: i2c: Add driver of Arducam Pivariety series camera (Lee Jackson) - media: dt-bindings: media: i2c: Add Arducam Pivariety Series CMOS sensor binding (Lee Jackson) - dt-bindings: vendor-prefixes: Add Arducam (Lee Jackson) - tpm_tis_spi_main: Force probe routine to run synchronously with driver and device registration when IMA is enabled (Scovotto Davide) - mm,page_alloc,cma: introduce a customisable threshold for allocating pages in cma (David Plowman) - media: i2c: ov5647: Use v4l2_async_register_subdev_sensor for lens binding (Dave Stevenson) - media: i2c: Add driver for AD5398 VCM lens driver (Dave Stevenson) - dt-bindings: media: i2c: Add binding for ad5398 VCM (Dave Stevenson) - media/i2c: Add driver for Omnivision OV2311 (Dave Stevenson) - media: i2c: ov7251: Reinstate setting ov7251_global_init_setting (Dave Stevenson) - media: bcm2835-unicam: Handle a repeated frame start with no end (Dave Stevenson) - spi: gpio: Add sck-idle-input property (Phil Elwell) - bindings: Add sck-idle-input to spi-gpio (Phil Elwell) - i2c: bcm2835: Make clock-stretch timeout configurable (Alex Crawford) - media: bcm2835-unicam: Set ret on error path in unicam_async_complete() (Nathan Chancellor) - drivers: bcm2835_unicam: Disable trigger mode operation (Naushir Patuck) - power: rpi-poe: Add option of being created by MFD or FW (Dave Stevenson) - power: rpi-poe: Drop CURRENT_AVG as it is not hardware averaged (Dave Stevenson) - pwm: raspberrypi-poe: Add option of being created by MFD or FW (Dave Stevenson) - mfd: simple-mfd-i2c: Add configuration for RPi POE HAT (Dave Stevenson) - uapi/v4l2-controls: Reset V4L2_CID_USER_BCM2835_ISP_BASE to same as 5.10 (Dave Stevenson) - media: i2c: ov7251: Make the enable GPIO optional. (Dave Stevenson) - media: i2c: ov5647: Add support for regulator control. (Dave Stevenson) - rtc: pcf8523: Fix oscillator stop bit handling (Phil Elwell) - regulator/rpi-panel-attiny: Don't read the LCD power status (Dave Stevenson) - drivers: bcm2835_unicam: Add logging message when a frame is dropped. (Naushir Patuck) - spi: spidev: Restore loading from Device Tree (Phil Elwell) - media: i2c: ov5647: Support HFLIP and VFLIP (David Plowman) - brcmfmac: Don't promote INFO logging to ERR (Phil Elwell) - staging/bcm2835-camera: Add support for MPEG_VIDEO_FORCE_KEY_FRAME (Gergo Koteles) - staging/bcm2835-camera: Add support for H264_MIN_QP, H264_MAX_QP (soyer) - media/bcm2835-unicam: Add support for configuration via MC API (Dave Stevenson) - media/bcm2835-unicam: Parse pad numbers correctly (Dave Stevenson) - media: i2c: ov5647: Sensor should report RAW color space (David Plowman) - drivers/gpio: Add a driver that wraps the PWM API as a GPIO controller (Dave Stevenson) - hwmon: (pwm-fan) Add fan speed register support (Phil Elwell) - staging: mmal-vchiq: Reset buffers_with_vpu on port_enable (Dave Stevenson) - staging/mmal-vchiq: Add module parameter to enable logging. (Dave Stevenson) - Add Raspberry Pi PoE+ HAT support (Serge Schneider) - staging/vchiq-mmal: Add the deinterlace image effects enums (Dave Stevenson) - staging/vchiq-mmal: Add parameters for interlaced video support (Dave Stevenson) - staging/vchiq-mmal: Add buffer flags for interlaced video (Dave Stevenson) - dt-bindings: display: panel-dsi bindings (Timon Skerutsch) - dt-bindings: display: simple: add Geekworm MZP280 Panel (Chris Morgan) - dt-bindings: vendor-prefixes: Add Geekworm (Chris Morgan) - drm/panel: Add panel driver for Waveshare DSI touchscreens (Dave Stevenson) - drm/panel: Add panel driver for TDO Y17B based panels (Dave Stevenson) - dt-bindings: ili9881c: add compatible string for new panels (Dave Stevenson) - Extending ili9881c driver support for nwe080 panel (Dom Cobley) - drm/panel: jdi-lt070me05000: Use gpiod_set_value_cansleep (Dave Stevenson) - drm/panel-simple: Add a timing for the Raspberry Pi 7" panel (Dave Stevenson) - drm/panel/raspberrypi-touchscreen: Use independent I2C actions with delay. (Dave Stevenson) - media: i2c: ov7251: Add fwnode properties controls (Dave Stevenson) - media: bcm2835-unicam: Forward input status from subdevice (Jakub Vaněk) - media: i2c: ov5647: Fix v4l2-compliance failure subscribing to events (David Plowman) - media: i2c: ov5647: Correct minimum VBLANK value (David Plowman) - media: i2c: ov5647: Correct pixel array offset (David Plowman) - staging/bcm2835-camera: Add support for H264 levels 4.1 and 4.2 (Dave Stevenson) - staging: fbtft: Add minipitft13 variant (Phil Elwell) - staging/bcm2835-camera: Add support for DMABUFs (Dave Stevenson) - media: i2c: ov5647: Parse and register properties (Laurent Pinchart) - media: ov5647: Fix return codes from ov5647_write/ov5647_read functions. (David Plowman) - Assign crypto aliases to different AES implementation modules (Ben Avison) - media: bcm2835-unicam: Fix bug in buffer swapping logic (Naushir Patuck) - spi: bcm2835: Workaround/fix for zero-length transfers (Phil Elwell) - uapi: bcm2835-isp: Add colour denoise configuration (Naushir Patuck) - staging/vc04_services: Add additional unpacked raw formats (Dave Stevenson) - PCI: brcmstb: Add BCM2712 support (Phil Elwell) - media: bcm2835-unicam: Clear clock state when stopping streaming (Naushir Patuck) - media: bcm2835-unicam: Return early from stop_streaming() if stopped (Naushir Patuck) - media: bcm2835-unicam: Correctly handle error propagation for stream on (Naushir Patuck) - dt-bindings: Add compatible for BCM2711 DSI1 (Dave Stevenson) - Input: edt-ft5x06: Poll the device if no interrupt is configured. (Dave Stevenson) - firmware: raspberrypi: Add support for tryonce reboot flag (Tim Gover) - watchdog: bcm2835: Ignore params after the partition number (Tim Gover) - gpio: Add gpio-fsm driver (Phil Elwell) - staging: vc04_services: ISP: Add a more complex ISP processing component (Naushir Patuck) - uapi: bcm2835-isp: Add bcm2835-isp uapi header file (Dave Stevenson) - staging: vc04_services: Add a V4L2 M2M codec driver (Dave Stevenson) - staging: mmal-vchiq: Use vc-sm-cma to support zero copy (Dave Stevenson) - staging: mmal-vchiq: Add monochrome image formats (Dave Stevenson) - staging: vchiq-mmal: Add support for 14bit Bayer (Dave Stevenson) - staging: vc04_services: Add new vc-sm-cma driver (Dave Stevenson) - staging: bcm2835-camera: Replace deprecated V4L2_PIX_FMT_BGR32 (Dave Stevenson) - brcmfmac: Increase power saving delay to 2s (Phil Elwell) - staging/fbtft: Add support for display variants (Phil Elwell) - media: bcm2835-unicam: change minimum number of vb2_queue buffers to 1 (David Plowman) - media: bcm2835-unicam: Retain packing information on G_FMT (Dave Stevenson) - media: bcm2835-unicam: Fixup review comments from Hans. (Dave Stevenson) - media: bcm2835: unicam: Fix uninitialized warning (Jacko Dirks) - media: bcm2835-unicam: Always service interrupts (Dave Stevenson) - media: bcm2835-unicam: Drop WARN on uing direct cache alias (Dave Stevenson) - leds: Add the actpwr trigger (Phil Elwell) - dt-bindings: bcm2835-unicam: Update documentation with new clock params (Naushir Patuck) - media: bcm2835: unicam: Set VPU min clock freq to 250Mhz. (Naushir Patuck) - media: bcm2835-unicam: Ensure type is VIDEO_CAPTURE in [g|s]_selection (Dave Stevenson) - media: bcm2835-unicam: Reinstate V4L2_CAP_READWRITE in the caps (Dave Stevenson) - serial: 8250: bcm2835aux - defer if clock is zero (Phil Elwell) - media: bcm2835-unicam: Avoid gcc warning over {0} on endpoint (Dave Stevenson) - media: bcm2835-unicam: Add support for get_mbus_config to set num lanes (Dave Stevenson) - media: bcm2835-unicam: Driver for CCP2/CSI2 camera interface (Naushir Patuck) - brcmfmac: Prefer a ccode from OTP over nvram file (Phil Elwell) - gpiolib: Don't prevent IRQ usage of output GPIOs (Phil Elwell) - staging:vc04_services: bcm2835-camera: Request headers with I-frame (Dave Stevenson) - staging: vc04_services: mmal-vchiq: Update parameters list (Dave Stevenson) - media: uapi: v4l-ctrls: Add CID base for the bcm2835-isp driver (Naushir Patuck) - media: uapi: v4l2-core: Add ISP statistics output V4L2 fourcc type (Naushir Patuck) - media: uapi: Add MEDIA_BUS_FMT_SENSOR_DATA media bus format (Naushir Patuck) - media: uapi: v4l2-core: Add sensor ancillary data V4L2 foucc type. (Naushir Patuck) - spi: Force CS_HIGH if GPIO descriptors are used (Phil Elwell) - staging: media: rpivid: Add Raspberry Pi V4L2 H265 decoder (John Cox) - RFC: media: Add media_request_{pin,unpin} API (Ezequiel Garcia) - media: dt-bindings: media: Add binding for the Raspberry PI HEVC decoder (Dave Stevenson) - media: videodev2.h: Add a format for column YUV4:2:0 modes (Dave Stevenson) - bcmgenet: Disable skip_umac_reset by default (popcornmix) - dt-bindings: pci: Add DT docs for Brcmstb PCIe device (Jim Quinlan) - of: overlay: Correct symbol path fixups (Phil Elwell) - pinctrl: bcm2835: Remove gpiochip on error (Phil Elwell) - staging: vchiq: Load bcm2835_isp driver from vchiq (Naushir Patuck) - staging: vchiq_arm: Usa a DMA pool for small bulks (detule) - staging: vchiq_arm: Set up dma ranges on child devices (Dave Stevenson) - net: phy: BCM54210PE does not support PTP (Phil Elwell) - net: phy: broadcom: optionally enable link-down powersave based on DT (Jonathan Bell) - phy: broadcom: Add bcm54213pe configuration (Phil Elwell) - phy: broadcom: split out the BCM54213PE from the BCM54210E IDs (Jonathan Bell) - net: phy: broadcom: Allow ethernet LED mode to be set via device tree (James Hughes) - staging: vchiq_arm: Register bcm2835-codec as a platform driver (Dave Stevenson) - staging: vchiq_arm: Register vcsm-cma as a platform driver (Dave Stevenson) - drm/v3d: Suppress all but the first MMU error (Phil Elwell) - media: i2c: Add a driver for the Infineon IRS1125 depth sensor (Markus Proeller) - dt-bindings: Add binding for the Infineon IRS1125 sensor (Markus Proeller) - media: v4l2: Add Greyworld AWB control name (John Cox) - staging: bcm2835-camera: Add greyworld AWB mode (Dave Stevenson) - v4l2: Add a Greyworld AWB mode. (Dave Stevenson) - Documentation: devicetree: Add documentation for imx378 sensor (David Plowman) - media: i2c: imx296: Adjust cropping limits (Naushir Patuck) - media: i2c: imx296: Add horizontal/vertical flip support (Naushir Patuck) - media: i2c: imx296: Set a 1 frame gain delay (Naushir Patuck) - media: i2c: imx296: Add helper for hblank control (Naushir Patuck) - media: i2c: imx296: Get sensor crop working (Naushir Patuck) - media: i2c: imx296: Updated register setting to fix Fast Trigger (Nick Hollinghurst) - drivers: media: i2c: imx296,imx477: Configure tigger_mode every time (Nick Hollinghurst) - drivers: media: imx296: Updated imx296 driver for external trigger (Ben Benson) - drivers: media: imx296: Disable 2x2 binned mode (Naushir Patuck) - media: i2c: imx519: Support for the Sony IMX519 sensor (Lee Jackson) - media: i2c: imx477: Support for the Sony IMX477 sensor (Naushir Patuck) - arch/arm64: Add Revision, Serial, Model to cpuinfo (Phil Elwell) - arch/arm: Add model string to cpuinfo (Phil Elwell) - net: bcmgenet: Workaround #2 for Pi4 Ethernet fail (Phil Elwell) - hid: usb: Add device quirks for Freeway Airmouse T3 and MX3 (Jonathan Bell) - drm/v3d: Switch clock setting to new api (Dom Cobley) - drm/v3d: Clock V3D down when not in use. (Dom Cobley) - i2c: bcm2835: Set clock-stretch timeout to 35ms (Phil Elwell) - ARM: bcm: Backport BCM2711 support from upstream (Phil Elwell) - usb: xhci: drop and add the endpoint context in xhci_fixup_endpoint() (Jonathan Bell) - usb: xhci: workaround for bogus SET_DEQ_PENDING endpoint state (Jonathan Bell) - xhci: implement xhci_fixup_endpoint for interval adjustments (Jonathan Bell) - usb: add plumbing for updating interrupt endpoint interval state (Jonathan Bell) - net: genet: enable link energy detect powerdown for external PHYs (Jonathan Bell) - bcmgenet: Better coalescing parameter defaults (Phil Elwell) - bcmgenet: constrain max DMA burst length (Jonathan Bell) - hwrng: iproc-rng200: Add BCM2838 support (Stefan Wahren) - arm: bcm2835: DMA can only address 1GB (Phil Elwell) - arm: bcm2835: Fix FIQ early ioremap (Phil Elwell) - w1: w1-gpio: Make GPIO an output for strong pullup (Phil Elwell) - staging: mmal-vchiq: Fix memory leak in error path (Dave Stevenson) - staging: mmal-vchiq: Free the event context for control ports (Dave Stevenson) - staging: mmal-vchiq: Update mmal_parameters.h with recently defined params (Dave Stevenson) - staging: mmal_vchiq: Add in the Bayer encoding formats (Dave Stevenson) - staging: mmal-vchiq: Fix client_component for 64 bit kernel (Dave Stevenson) - media: videobuf2: Allow exporting of a struct dmabuf (Dave Stevenson) - staging: vc04_services: Support sending data to MMAL ports (Dave Stevenson) - staging: mmal-vchiq: Add support for event callbacks. (Dave Stevenson) - staging: mmal-vchiq: Avoid use of bool in structures (Dave Stevenson) - media: tc358743: Return an appropriate colorspace from tc358743_set_fmt (Dave Stevenson) - dt-bindings: Document BCM283x CSI2/CCP2 receiver (Dave Stevenson) - media: videodev2: Add helper defines for printing FOURCCs (Dave Stevenson) - media: adv7180: Add YPrPb support for ADV7282M (Dave Stevenson) - media: adv7180: Default to the first valid input (Dave Stevenson) - media: tc358743: Check I2C succeeded during probe. (Dave Stevenson) - media: tc358743: Add support for 972Mbit/s link freq. (Dave Stevenson) - media: tc358743: Increase FIFO level to 374. (Dave Stevenson) - lan78xx: Enable LEDs and auto-negotiation (Phil Elwell) - Patching lan78xx for SOF_TIMESTAMPING_TX_SOFTWARE support (tiagofreire-pt) - net: lan78xx: Ack pending PHY ints when resetting (Phil Elwell) - lan78xx: Debounce link events to minimize poll storm (Joshua Emele) - net: lan78xx: Support auto-downshift to 100Mb/s (Phil Elwell) - net: lan78xx: Disable TCP Segmentation Offload (TSO) (Dave Stevenson) - firmware: raspberrypi: Report the fw variant during probe (Dave Stevenson) - firmware: raspberrypi: Add backward compatible get_throttled (Stefan Wahren) - cxd2880: CXD2880_SPI_DRV should select DVB_CXD2880 with MEDIA_SUBDRV_AUTOSELECT (popcornmix) - brcmfmac: Re-enable firmware roaming support (Phil Elwell) - irqchip: irq-bcm2835: Calc. FIQ_START at boot-time (Phil Elwell) - firmware/raspberrypi: Notify firmware of a reboot (Phil Elwell) - hid: Reduce default mouse polling interval to 60Hz (popcornmix) - added capture_clear option to pps-gpio via dtoverlay (#2433) (hdoverobinson) - i2c-gpio: Also set bus numbers from reg property (Phil Elwell) - ARM: Activate FIQs to avoid __irq_startup warnings (Phil Elwell) - dwc-otg: FIQ: Fix "bad mode in data abort handler" (Phil Elwell) - ARM: bcm2835: Set Serial number and Revision (Noralf Trønnes) - AXI performance monitor driver (#2222) (James Hughes) - ARM64: Force hardware emulation of deprecated instructions. (Michael Zoran) - ARM64: Round-Robin dispatch IRQs between CPUs. (Michael Zoran) - hci_h5: Don't send conf_req when ACTIVE (Phil Elwell) - brcm: adds support for BCM43341 wifi (Cheong2K) - OF: DT-Overlay configfs interface (Pantelis Antoniou) - bcm2835-virtgpio: Virtual GPIO driver (popcornmix) - rpi_display: add backlight driver and overlay (P33M) - ASoC: Add support for all the downstream rpi sound card drivers (Florian Meier) - Input: sensehat-joystick : Revert to downstream keymap (Dave Stevenson) - drivers/mfd: sensehat: Add Raspberry Pi Sense HAT to simple_mfd_i2c (Charles Mirabile) - mfd: Add Raspberry Pi Sense HAT core driver (Phil Elwell) - Improve __copy_to_user and __copy_from_user performance (popcornmix) - Added Device IDs for August DVB-T 205 (popcornmix) - leds: Add the "input" trigger, for pwr_led (Phil Elwell) - firmware: bcm2835: Support ARCH_BCM270x (Noralf Trønnes) - drivers: char: add generic gpiomem driver (Jonathan Bell) - char: broadcom: Add vcio module (Noralf Trønnes) - char: Add broadcom char drivers back to build files (popcornmix) - Add Chris Boot's i2c driver (popcornmix) - Add SMI driver (Luke Wren) - vc_mem: Add vc_mem driver for querying firmware memory addresses (popcornmix) - Adding bcm2835-sdhost driver, and an overlay to enable it (Phil Elwell) - mmc: block: Don't do single-sector reads during recovery (Jonathan Bell) - MMC: added alternative MMC driver (gellert) - mmc: core: Add SD card quirk for broken poweroff notification (Keita Aihara) - dmaengine: Add support for BCM2708 (Florian Meier) - bcm2708_fb: Add framebuffer driver (popcornmix) - Add dwc_otg driver (popcornmix) - Main bcm2708/bcm2709 linux port (popcornmix) - tty: amba-pl011: Avoid rare write-when-full error (Phil Elwell) - amba_pl011: Add cts-event-workaround DT property (Phil Elwell) - amba_pl011: Insert mb() for correct FIFO handling (Phil Elwell) - irqchip: irq-bcm2836: Remove regmap and syscon use (Phil Elwell) - i2c: bcm2835: Add debug support (Noralf Trønnes) - Update vfpmodule.c (Claggy3) - bcm2835-rng: Avoid initialising if already enabled (popcornmix) - reboot: Use power off rather than busy spinning when halt is requested (popcornmix) - watchdog: bcm2835: Support setting reboot partition (Noralf Trønnes) - rtc: Add SPI alias for pcf2123 driver (Phil Elwell) - dmaengine: bcm2835: Load driver early and support legacy API (Noralf Trønnes) - spi: spidev: Completely disable the spidev warning (Dom Cobley) - irqchip: irq-bcm2835: Add 2836 FIQ support (Noralf Trønnes) - irqchip: bcm2835: Add FIQ support (Noralf Trønnes) - irq-bcm2836: Avoid "Invalid trigger warning" (Phil Elwell) - Protect __release_resource against resources without parents (Phil Elwell) - Allow mac address to be set in smsc95xx (popcornmix) - smsc95xx: Experimental: Enable turbo_mode and packetsize=2560 by default (Sam Nazarko) - cache: export clean and invalidate (popcornmix) - clk-bcm2835: Use PLLD for DSI0 HS clock (Dave Stevenson) - clk-bcm2835: Disable v3d clock (popcornmix) - clk-bcm2835: Avoid null pointer exception (popcornmix) - clk: bcm2835: Allow reparenting leaf clocks while they're running. (Eric Anholt) - clk: bcm2835: Add support for setting leaf clock rates while running. (Eric Anholt) - clk-bcm2835: Don't wait for pllh lock (Phil Elwell) - clk-bcm2835: Read max core clock from firmware (Phil Elwell) - clk-bcm2835: Add claim-clocks property (Phil Elwell) - clk-bcm2835: Mark used PLLs and dividers CRITICAL (Phil Elwell) - clk: clk-bcm2835: Register the clocks early during the boot process (Martin Sperl) - clk-raspberrypi: Add ISP to exported clocks (Dom Cobley) - clk: bcm: rpi: Create helper to retrieve private data (Maxime Ripard) - clk-raspberrypi: Allow cpufreq driver to also adjust gpu clocks (popcornmix) - config: Add default configs (popcornmix) - BCM2708: Add core Device Tree support (Dom Cobley) - arm64: setup: Fix build warning (Maxime Ripard) - drm/atomic: If margins are updated, update all planes. (Dave Stevenson) - drm/atomic-helpers: remove legacy_cursor_update hacks (Daniel Vetter) - drm: Add chroma siting properties (Dom Cobley) - drm/bridge: tc358762: Ignore EPROBE_DEFER when logging errors (Dave Stevenson) - drm/dsi: Document the meaning and spec references for MIPI_DSI_MODE_* (Dave Stevenson) - drm: Check whether the gamma lut has changed before updating (Dave Stevenson) - drm/atomic: Don't fixup modes that haven't been reset (Dave Stevenson) - raspberrypi-firmware: Update mailbox commands (Dom Cobley) - Revert "usb: phy: generic: Get the vbus supply" (Phil Elwell) - Revert "ARM: dts: bcm2711: Add BCM2711 xHCI support" (Dom Cobley) - Revert "PCI: brcmstb: Configure HW CLKREQ# mode appropriate for downstream device" (Dom Cobley) - Revert "Revert "xhci: add quirk for host controllers that don't update endpoint DCS"" (Dom Cobley) - Revert "net: bcmgenet: Request APD, DLL disable and IDDQ-SR" (Phil Elwell) - Revert "spi: spidev: Fix CS polarity if GPIO descriptors are used" (Phil Elwell) - Use GitHubs issue form for bug reports (Andreas Blaesius) - README: Add README.md with CI kernel build status tags (Dave Stevenson) - workflows: We all love checkpatch, so add it to the CI workflows (Dave Stevenson) * Mon Mar 03 2025 Julio Faracco [6.12.0-59.el10] - gpu: host1x: Fix a use of uninitialized mutex (Rupinderjit Singh) [RHEL-67594] - selftests/memfd: add test for mapping write-sealed memfd read-only (Rafael Aquini) [RHEL-77292] {CVE-2024-57937} - mm: reinstate ability to map write-sealed memfd mappings read-only (Rafael Aquini) [RHEL-77292] {CVE-2024-57937} - bonding: Correctly support GSO ESP offload (CKI Backport Bot) [RHEL-74426] - redhat: adjust rhel branch name (Jan Stancek) - redhat: set defaults for RHEL 10.0 (Jan Stancek) - Revert "x86/kvm: Override default caching mode for SEV-SNP and TDX" (Vitaly Kuznetsov) [RHEL-76109] * Thu Feb 27 2025 Julio Faracco [6.12.0-58.el10] - quota: flush quota_release_work upon quota writeback (CKI Backport Bot) [RHEL-73465] - s390/topology: Improve topology detection (Mete Durlu) [RHEL-76349] * Tue Feb 25 2025 Julio Faracco [6.12.0-57.el10] - cpufreq/amd-pstate-ut: Add fix for min freq unit test (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Fix cpufreq_policy ref counting (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Fix max_perf updation with schedutil (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Remove the goto label in amd_pstate_update_limits (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Fix per-policy boost flag incorrect when fail (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Refactor max frequency calculation (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Fix prefcore rankings (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Drop boost_state variable (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Set different default EPP policy for Epyc and Ryzen (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Drop ret variable from amd_pstate_set_energy_pref_index() (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Always write EPP value when updating perf (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Cache EPP value and use that everywhere (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Move limit updating code (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Change amd_pstate_update_perf() to return an int (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: store all values in cpudata struct in khz (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Only update the cached value in msr_set_epp() on success (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Use FIELD_PREP and FIELD_GET macros (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Drop cached epp_policy variable (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: convert mutex use to guard() (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Add trace event for EPP perf updates (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Merge amd_pstate_epp_cpu_offline() and amd_pstate_epp_offline() (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Remove the cppc_state check in offline/online functions (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Refactor amd_pstate_epp_reenable() and amd_pstate_epp_offline() (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Move the invocation of amd_pstate_update_perf() (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Convert the amd_pstate_get/set_epp() to static calls (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Use boost numerator for upper bound of frequencies (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Store the boost numerator as highest perf again (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Detect preferred core support before driver registration (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Move registration after static function call update (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Push adjust_perf vfunc init into cpu_init (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Align offline flow of shared memory and MSR based systems (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Call cppc_set_epp_perf in the reenable function (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Do not attempt to clear MSR_AMD_CPPC_ENABLE (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Rename functions that enable CPPC (Steve Best) [RHEL-75925] - amd-pstate: Switch to amd-pstate by default on some Server platforms (Steve Best) [RHEL-75925] - amd-pstate: Set min_perf to nominal_perf for active mode performance gov (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Remove the redundant amd_pstate_set_driver() call (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Remove the switch case in amd_pstate_init() (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Call amd_pstate_set_driver() in amd_pstate_register_driver() (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Call amd_pstate_register() in amd_pstate_init() (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Set the initial min_freq to lowest_nonlinear_freq (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Remove the redundant verify() function (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Drop needless EPP initialization (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Use amd_pstate_update_min_max_limit() for EPP limits (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Don't update CPPC request in amd_pstate_cpu_boost_update() (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Fix non kerneldoc comment (Steve Best) [RHEL-75925] - cpufreq/amd-pstate: Rename MSR and shared memory specific functions (Steve Best) [RHEL-75925] - x86/cpufeatures: Rename X86_FEATURE_FAST_CPPC to have AMD prefix (Steve Best) [RHEL-75925] - tools/power turbostat: version 2025.02.02 (Steve Best) [RHEL-77986] - tools/power turbostat: Add CPU%%c1e BIC for CWF (Steve Best) [RHEL-77986] - tools/power turbostat: Harden one-shot mode against cpu offline (Steve Best) [RHEL-77986] - tools/power turbostat: Fix forked child affinity regression (Steve Best) [RHEL-77986] - tools/power turbostat: Add tcore clock PMT type (Steve Best) [RHEL-77986] - tools/power turbostat: version 2025.01.14 (Steve Best) [RHEL-77986] - tools/power turbostat: Allow adding PMT counters directly by sysfs path (Steve Best) [RHEL-77986] - tools/power turbostat: Allow mapping multiple PMT files with the same GUID (Steve Best) [RHEL-77986] - tools/power turbostat: Add PMT directory iterator helper (Steve Best) [RHEL-77986] - tools/power turbostat: Extend PMT identification with a sequence number (Steve Best) [RHEL-77986] - tools/power turbostat: Return default value for unmapped PMT domains (Steve Best) [RHEL-77986] - tools/power turbostat: Check for non-zero value when MSR probing (Steve Best) [RHEL-77986] - tools/power turbostat: Enhance turbostat self-performance visibility (Steve Best) [RHEL-77986] - tools/power turbostat: Add fixed RAPL PSYS divisor for SPR (Steve Best) [RHEL-77986] - tools/power turbostat: Fix PMT mmaped file size rounding (Steve Best) [RHEL-77986] - tools/power turbostat: Remove SysWatt from DISABLED_BY_DEFAULT (Steve Best) [RHEL-77986] - tools/power turbostat: Add an NMI column (Steve Best) [RHEL-77986] - tools/power turbostat: add Busy%% to "show idle" (Steve Best) [RHEL-77986] - tools/power turbostat: Introduce --force parameter (Steve Best) [RHEL-77986] - tools/power turbostat: Improve --help output (Steve Best) [RHEL-77986] - tools/power turbostat: Exit on unsupported Vendors (Steve Best) [RHEL-77986] - tools/power turbostat: Exit on unsupported Intel models (Steve Best) [RHEL-77986] - tools/power turbostat: update turbostat(8) (Steve Best) [RHEL-77986] - tools/power turbostat: Add initial support for ClearwaterForest (Steve Best) [RHEL-77986] - tools/power turbostat: Add initial support for PantherLake (Steve Best) [RHEL-77986] - tools/power turbostat: 2024.11.30 (Steve Best) [RHEL-77986] - tools/power turbostat: Add RAPL psys as a built-in counter (Steve Best) [RHEL-77986] - tools/power turbostat: Fix child's argument forwarding (Steve Best) [RHEL-77986] - tools/power turbostat: Force --no-perf in --dump mode (Steve Best) [RHEL-77986] - tools/power turbostat: Add support for /sys/class/drm/card1 (Steve Best) [RHEL-77986] - tools/power turbostat: Cache graphics sysfs file descriptors during probe (Steve Best) [RHEL-77986] - tools/power turbostat: Consolidate graphics sysfs access (Steve Best) [RHEL-77986] - tools/power turbostat: Remove unnecessary fflush() call (Steve Best) [RHEL-77986] - tools/power turbostat: Enhance platform divergence description (Steve Best) [RHEL-77986] - tools/power turbostat: Remove PC3 support on Lunarlake (Steve Best) [RHEL-77986] - tools/power turbostat: Rename arl_features to lnl_features (Steve Best) [RHEL-77986] - tools/power turbostat: Add back PC8 support on Arrowlake (Steve Best) [RHEL-77986] - tools/power turbostat: Remove PC7/PC9 support on MTL (Steve Best) [RHEL-77986] - tools/power turbostat: Honor --show CPU, even when even when num_cpus=1 (Steve Best) [RHEL-77986] - tools/power turbostat: Fix trailing '\n' parsing (Steve Best) [RHEL-77986] - tools/power turbostat: Allow using cpu device in perf counters on hybrid platforms (Steve Best) [RHEL-77986] - tools/power turbostat: Fix column printing for PMT xtal_time counters (Steve Best) [RHEL-77986] - tools/power turbostat: fix GCC9 build regression (Steve Best) [RHEL-77986] - thermal: intel: Fix compile issue when CONFIG_NET is not defined (Steve Best) [RHEL-79162] - thermal: intel: int340x: Panther Lake power floor and workload hint support (Steve Best) [RHEL-79162] - thermal: intel: int340x: Panther Lake DLVR support (Steve Best) [RHEL-79162] - thermal: intel: Remove explicit user_space governor selection (Steve Best) [RHEL-79162] - ACPI: DPTF: Support Panther Lake (Steve Best) [RHEL-79162] - thermal: intel: int340x: processor: Enable MMIO RAPL for Panther Lake (Steve Best) [RHEL-79162] - thermal: int3400: Remove unneeded data_vault attribute_group (Steve Best) [RHEL-79162] - thermal: int3400: Fix reading of current_uuid for active policy (Steve Best) [RHEL-79162] - thermal: Switch back to struct platform_driver::remove() (Steve Best) [RHEL-79162] - x86/cpu: Fix FAM5_QUARK_X1000 to use X86_MATCH_VFM() (Steve Best) [RHEL-79162] - tools/power/x86/intel-speed-select: v1.21 release (Steve Best) [RHEL-76843] - tools/power/x86/intel-speed-select: Fix TRL restore after SST-TF disable (Steve Best) [RHEL-76843] - platform/x86: ISST: Add Clearwater Forest to support list (Steve Best) [RHEL-76843] - cpufreq: intel_pstate: Use CPUFREQ_POLICY_UNKNOWN (Steve Best) [RHEL-78189] - cpufreq: intel_pstate: Drop Arrow Lake from "scaling factor" list (Steve Best) [RHEL-78189] - cpufreq: intel_pstate: Use CPPC to get scaling factors (Steve Best) [RHEL-78189] * Thu Feb 20 2025 Julio Faracco [6.12.0-56.el10] - cpupower: Adjust whitespace for amd-pstate specific prints (Steve Best) [RHEL-78946] - cpupower: Don't fetch maximum latency when EPP is enabled (Steve Best) [RHEL-78946] - cpupower: Add support for showing energy performance preference (Steve Best) [RHEL-78946] - cpupower: Don't try to read frequency from hardware when kernel uses aperfmperf (Steve Best) [RHEL-78946] - cpupower: Add support for amd-pstate preferred core rankings (Steve Best) [RHEL-78946] - cpupower: Remove spurious return statement (Steve Best) [RHEL-78946] - cpupower: fix TSC MHz calculation (Steve Best) [RHEL-78946] - cpupower: revise is_valid flag handling for idle_monitor (Steve Best) [RHEL-78946] - powercap: call put_device() on an error path in powercap_register_control_type() (Steve Best) [RHEL-79097] - powercap: intel_rapl: Add support for Panther Lake platform (Steve Best) [RHEL-79097] - Bump RHEL MINOR to 10.1 (Julio Faracco) ### # The following Emacs magic makes C-c C-e use UTC dates. # Local Variables: # rpm-change-log-uses-utc: t # End: ###