# 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 # RHEL/CentOS/Fedora specific .SBAT entries %if 0%{?centos} %global sbat_suffix centos %else %if 0%{?fedora} %global sbat_suffix fedora %else %global sbat_suffix rhel %endif %endif # Sign modules on all arches %global signmodules 1 # Add additional rhel certificates to system trusted keys. %global rhelkeys 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 --check=crc32 --lzma2=dict=1MiB %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 0 # 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 .local %define specrpmversion 6.12.0 %define specversion 6.12.0 %define patchversion 6.12 %define pkgrelease 215.rk35x.1 %define kversion 6 %define tarfile_release 6.12.0-215.rk35x.1.el10 # This is needed to do merge window version magic %define patchlevel 12 # This allows pkg_release to have configurable %%{?dist} tag %define specrelease 215.rk35x.1%{?buildid}%{?dist} # This defines the kabi tarball version %define kabiversion 6.12.0-215.rk35x.1.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 variant of the kernel (--with automotiveonly): %define with_automotiveonly %{?_with_automotiveonly: 1} %{?!_with_automotiveonly: 0} # Build the automotive kernel (--with automotive_build), this builds base variant with automotive config/options: %define with_automotive_build %{?_with_automotive_build: 1} %{?!_with_automotive_build: 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} # 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 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} %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 %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 %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 %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_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 the automotive variant of the 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 # if requested, build kernel-automotive %if %{with_automotive_build} %define with_automotive 1 %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 signkernel 0 %define signmodules 1 %define rhelkeys 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 riscv64 %endif %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} && !%{with_automotive_build} %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 riscv64 %endif ExclusiveOS: Linux %ifnarch %{nobuildarches} Requires: %{name}-core-uname-r = %{KVERREL} Requires: %{name}-modules-uname-r = %{KVERREL} Requires: %{name}-modules-core-uname-r = %{KVERREL} Requires: ((%{name}-modules-extra-uname-r = %{KVERREL}) if %{name}-modules-extra-matched) 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: 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 BuildRequires: libbpf-devel BuildRequires: bpftool BuildRequires: clang %ifarch %{cpupowerarchs} # For libcpupower bindings BuildRequires: swig %endif %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 BuildRequires: openssl-devel %if %{with_selftests} BuildRequires: clang llvm-devel fuse-devel zlib-devel binutils-devel python3-docutils python3-jsonschema %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 %if 0%{?fedora} && 0%{?fedora} <= 41 # 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 on failure and build fails. # debugedit-5.1-5 in F42 added support to override tools with target versions. %undefine _include_gdb_index %endif %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 >= 104 # 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 systemd-repart BuildRequires: xfsprogs e2fsprogs dosfstools # 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: %{package_name}.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 redhatsecureboot801 %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} 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 # ARM64 64K page-size kernel config Source42: %{name}-aarch64-64k-rhel.config Source43: %{name}-aarch64-64k-debug-rhel.config Source44: %{name}-riscv64-rhel.config Source45: %{name}-riscv64-debug-rhel.config %endif %if %{include_rhel} || %{include_automotive} Source23: x509.genkey.rhel Source34: def_variants.yaml.rhel Source41: x509.genkey.centos %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 Source83: uki.sbat.template Source84: uki-addons.sbat.template Source85: kernel.sbat.template Source86: dracut-virt.conf Source87: flavors Source151: uki_create_addons.py Source152: uki_addons.json # Temporary use redhatsecureboot504 for x86 UKI, see RHEL-122230 Source153: redhatsecureboot504.cer 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} %if %{with_automotive_build} Source486: %{name}-aarch64-rhel.config Source487: %{name}-aarch64-debug-rhel.config Source488: %{name}-x86_64-rhel.config Source489: %{name}-x86_64-debug-rhel.config %else 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 %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 %{package_name} 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. # -o: Skips main "Provides" that would satisfy general kernel requirements that # special-purpose kernels shouldn't include. # For example, used for zfcpdump-core to *not* provide kernel-core. (BZ 2027654) # %define kernel_reqprovconf(o) \ %if %{-o:0}%{!-o:1}\ Provides: kernel = %{specversion}-%{pkg_release}\ Provides: %{name} = %{specversion}-%{pkg_release}\ %endif\ Provides: %{name}-%{_target_cpu} = %{specrpmversion}-%{pkg_release}%{uname_suffix %{?1}}\ Provides: %{name}-uname-r = %{KVERREL}%{uname_suffix %{?1}}\ Requires: %{name}%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?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. %if %{with_headers} %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: %{name}-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. %endif %if %{with_cross_headers} %package cross-headers Summary: Header files for the Linux kernel for use by cross-glibc %if 0%{?gemini} Provides: %{name}-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. %endif %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.*|.*%%{python3_sitearch}/_raw_pylibcpupower.*|.*%%{_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 Requires: libbpf %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} %if %{with_kernel_abi_stablelists} %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. %endif %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: %{name}%{?1:-%{1}}-devel-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: %{name}-devel-%{_target_cpu} = %{specrpmversion}-%{release}%{uname_suffix %{?1}}\ Provides: kernel-devel-uname-r = %{KVERREL}%{uname_suffix %{?1}}\ Provides: %{name}-devel-uname-r = %{KVERREL}%{uname_suffix %{?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: %{name}-devel-uname-r = %{KVERREL}%{uname_variant %{?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} %define kernel_modules_extra_matched_package(m) \ %package modules-extra-matched\ Summary: Meta package which requires modules-extra to be installed for all kernels.\ %description modules-extra-matched\ This meta package provides a single reference that other packages can Require to have modules-extra installed for all kernels.\ %{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: %{name}%{?1:-%{1}}-modules-internal-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: %{name}%{?1:-%{1}}-modules-internal-%{_target_cpu} = %{specrpmversion}-%{release}%{uname_suffix %{?1}}\ Provides: %{name}%{?1:-%{1}}-modules-internal = %{specrpmversion}-%{release}%{uname_suffix %{?1}}\ Provides: installonlypkg(kernel-module)\ Provides: %{name}%{?1:-%{1}}-modules-internal-uname-r = %{KVERREL}%{uname_suffix %{?1}}\ Requires: %{name}-uname-r = %{KVERREL}%{uname_suffix %{?1}}\ Requires: %{name}%{?1:-%{1}}-modules-uname-r = %{KVERREL}%{uname_suffix %{?1}}\ Requires: %{name}%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?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: %{name}%{?1:-%{1}}-modules-extra-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: %{name}%{?1:-%{1}}-modules-extra-%{_target_cpu} = %{specrpmversion}-%{release}%{uname_suffix %{?1}}\ Provides: %{name}%{?1:-%{1}}-modules-extra = %{specrpmversion}-%{release}%{uname_suffix %{?1}}\ Provides: installonlypkg(kernel-module)\ Provides: %{name}%{?1:-%{1}}-modules-extra-uname-r = %{KVERREL}%{uname_suffix %{?1}}\ Requires: %{name}-uname-r = %{KVERREL}%{uname_suffix %{?1}}\ Requires: %{name}%{?1:-%{1}}-modules-uname-r = %{KVERREL}%{uname_suffix %{?1}}\ Requires: %{name}%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1}}\ %if %{-m:1}%{!-m:0}\ Requires: %{name}-modules-extra-uname-r = %{KVERREL}%{uname_variant %{?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: %{name}%{?1:-%{1}}-modules-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: %{name}-modules-%{_target_cpu} = %{specrpmversion}-%{release}%{uname_suffix %{?1}}\ Provides: %{name}-modules = %{specrpmversion}-%{release}%{uname_suffix %{?1}}\ Provides: installonlypkg(kernel-module)\ Provides: %{name}%{?1:-%{1}}-modules-uname-r = %{KVERREL}%{uname_suffix %{?1}}\ Requires: %{name}-uname-r = %{KVERREL}%{uname_suffix %{?1}}\ Requires: %{name}%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1}}\ %if %{-m:1}%{!-m:0}\ Requires: %{name}-modules-uname-r = %{KVERREL}%{uname_variant %{?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: %{name}%{?1:-%{1}}-modules-core-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: %{name}-modules-core-%{_target_cpu} = %{specrpmversion}-%{release}%{uname_suffix %{?1}}\ Provides: %{name}-modules-core = %{specrpmversion}-%{release}%{uname_suffix %{?1}}\ Provides: installonlypkg(kernel-module)\ Provides: %{name}%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1}}\ Requires: %{name}-uname-r = %{KVERREL}%{uname_suffix %{?1}}\ %if %{-m:1}%{!-m:0}\ Requires: %{name}-modules-core-uname-r = %{KVERREL}%{uname_variant %{?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: %{name}-%{1}-core-uname-r = %{KVERREL}%{uname_suffix %{1}}\ Requires: %{name}-%{1}-modules-uname-r = %{KVERREL}%{uname_suffix %{1}}\ Requires: %{name}-%{1}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{1}}\ Requires: ((%{name}-%{1}-modules-extra-uname-r = %{KVERREL}%{uname_suffix %{1}}) if %{name}-modules-extra-matched)\ %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} # # 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] # -m: Used with debugbuildsenabled==0 to create a "meta" debug variant that # depends on base variant and skips debug/internal/partner packages. # -o: Skips main "Provides" that would satisfy general kernel requirements that # special-purpose kernels shouldn't include. # %define kernel_variant_package(n:mo) \ %package %{?1:%{1}-}core\ Summary: %{variant_summary}\ Provides: %{name}-%{?1:%{1}-}core-uname-r = %{KVERREL}%{uname_suffix %{?1}}\ Provides: installonlypkg(kernel)\ %if %{-m:1}%{!-m:0}\ Requires: %{name}-core-uname-r = %{KVERREL}%{uname_variant %{?1}}\ Requires: %{name}-%{?1:%{1}-}-modules-core-uname-r = %{KVERREL}%{uname_variant %{?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 %{with_efiuki} && ("%{1}" != "rt" && "%{1}" != "rt-debug" && "%{1}" != "rt-64k" && "%{1}" != "rt-64k-debug")\ %package %{?1:%{1}-}uki-virt\ Summary: %{variant_summary} unified kernel image for virtual machines\ Provides: installonlypkg(kernel)\ Provides: %{name}-uname-r = %{KVERREL}%{uname_suffix %{?1}}\ Requires: %{name}%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?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: %{name}%{?1:-%{1}}-uki-virt = %{specrpmversion}-%{release}\ Requires(pre): systemd >= 254-1\ %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: %{name}%{?1:-%{1}}-modules-partner-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: %{name}%{?1:-%{1}}-modules-partner-%{_target_cpu} = %{specrpmversion}-%{release}%{uname_suffix %{?1}}\ Provides: %{name}%{?1:-%{1}}-modules-partner = %{specrpmversion}-%{release}%{uname_suffix %{?1}}\ Provides: installonlypkg(kernel-module)\ Provides: %{name}%{?1:-%{1}}-modules-partner-uname-r = %{KVERREL}%{uname_suffix %{?1}}\ Requires: %{name}-uname-r = %{KVERREL}%{uname_suffix %{?1}}\ Requires: %{name}%{?1:-%{1}}-modules-uname-r = %{KVERREL}%{uname_suffix %{?1}}\ Requires: %{name}%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?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} && !%{with_automotive_build} %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 %ifnarch noarch %{nobuildarches} %kernel_modules_extra_matched_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 %if %{with_automotive} %if 0%{?fedora} %{log_msg "Cannot build automotive with a fedora baseline, must be rhel/centos/eln"} 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 # SBAT data sed -e s,@KVER,%{KVERREL}, -e s,@SBAT_SUFFIX,%{sbat_suffix}, %{SOURCE83} > uki.sbat sed -e s,@KVER,%{KVERREL}, -e s,@SBAT_SUFFIX,%{sbat_suffix}, %{SOURCE84} > uki-addons.sbat sed -e s,@KVER,%{KVERREL}, -e s,@SBAT_SUFFIX,%{sbat_suffix}, %{SOURCE85} > kernel.sbat # 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 truncate -s0 ../certs/rhel.pem %if 0%{?rhel} %if %{rhelkeys} %{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 # rhelkeys %endif %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 sed -i 's@CONFIG_EFI_SBAT_FILE=""@CONFIG_EFI_SBAT_FILE="kernel.sbat"@' $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}" } #Build bootstrap bpftool BuildBpftool(){ 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 } 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"} mkdir -p $RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer %{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"} KernelUnifiedImageDir="$RPM_BUILD_ROOT/lib/modules/$KernelVer" KernelUnifiedImage="$KernelUnifiedImageDir/$InstallName-virt.efi" KernelUnifiedInitrd="$KernelUnifiedImageDir/$InstallName-virt.img" mkdir -p $KernelUnifiedImageDir dracut --conf=%{SOURCE86} \ --confdir=$(mktemp -d) \ --no-hostonly \ --verbose \ --kver "$KernelVer" \ --kmoddir "$RPM_BUILD_ROOT/lib/modules/$KernelVer/" \ --logfile=$(mktemp) \ $KernelUnifiedInitrd ukify build --linux $(realpath $KernelImage) --initrd $KernelUnifiedInitrd \ --sbat @uki.sbat --os-release @/etc/os-release --uname $KernelVer \ --cmdline 'console=tty0 console=ttyS0' --output $KernelUnifiedImage rm -f $KernelUnifiedInitrd KernelAddonsDirOut="$KernelUnifiedImage.extra.d" mkdir -p $KernelAddonsDirOut python3 %{SOURCE151} %{SOURCE152} $KernelAddonsDirOut virt %{primary_target} %{_target_cpu} @uki-addons.sbat %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 UKI_secureboot_cert=%{_datadir}/pki/sb-certs/secureboot-uki-virt-%{_arch}.cer %else # RHEL only builds UKI for x86 UKI_secureboot_name=redhatsecureboot504 UKI_secureboot_cert=%{SOURCE153} %endif %pesign -s -i $KernelUnifiedImage -o $KernelUnifiedImage.signed -a %{secureboot_ca_0} -c $UKI_secureboot_cert -n $UKI_secureboot_name for addon in "$KernelAddonsDirOut"/*; do %pesign -s -i $addon -o $addon.signed -a %{secureboot_ca_0} -c $UKI_secureboot_cert -n $UKI_secureboot_name rm -f $addon mv $addon.signed $addon done # 0%{?fedora}%{?eln} %endif if [ ! -s $KernelUnifiedImage.signed ]; then echo "pesigning failed" exit 1 fi mv $KernelUnifiedImage.signed $KernelUnifiedImage mkdir -p $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer cp -a $UKI_secureboot_cert $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer/secureboot-uki-%{_arch}.cer # 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 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 BuildBpftool 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_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} && !%{with_automotive_build} 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 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" # Build libcpupower Python bindings %global libcpupower_python_bindings_make %{tools_make} LDFLAGS="-L%{buildroot}%{_libdir} -lcpupower" %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 #set RPM_VMLINUX_H if [ -f $RPM_BUILD_ROOT/$DevelDir/vmlinux.h ]; then RPM_VMLINUX_H=$RPM_BUILD_ROOT/$DevelDir/vmlinux.h elif [ -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 # Build BPFtool for samples/bpf if [ ! -f tools/bpf/bpftool/bootstrap/bpftool ]; then BuildBpftool fi %{log_msg "build samples/bpf"} %{make} %{?_smp_mflags} EXTRA_CXXFLAGS="${RPM_OPT_FLAGS}" ARCH=$Arch BPFTOOL=$(pwd)/tools/bpf/bpftool/bootstrap/bpftool 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}" export CXXFLAGS="%{build_cxxflags}" TARGETS="bpf cgroup kmod mm net net/can net/forwarding net/hsr net/mptcp net/netfilter net/packetdrill tc-testing memfd drivers/net/hw iommu cachestat pid_namespace rlimits timens pidfd capabilities clone3 exec filesystems firmware landlock mount mount_setattr move_mount_set_group nsfs openat2 proc safesetid seccomp tmpfs uevent vDSO" %{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}" export CXXFLAGS="%{build_cxxflags}" # 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/cpuv4 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" %buildroot_save_unstripped "usr/libexec/kselftests/bpf/test_progs-cpuv4" # 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" %buildroot_save_unstripped "usr/libexec/kselftests/bpf/cpuv4/urandom_read" rm -f %{buildroot}/usr/libexec/kselftests/bpf/urandom_read rm -f %{buildroot}/usr/libexec/kselftests/bpf/no_alu32/urandom_read rm -f %{buildroot}/usr/libexec/kselftests/bpf/cpuv4/urandom_read # Copy bpftool to kselftests so selftests is packaged with # the full bpftool instead of bootstrap bpftool cp ./bpf/tools/sbin/bpftool %{buildroot}%{_libexecdir}/kselftests/bpf/bpftool 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} # Make debugedit and gdb-add-index use target versions of tools # when cross-compiling. This is supported since debugedit-5.1-5.fc42 # https://inbox.sourceware.org/debugedit/20250220153858.963312-1-mark@klomp.org/ %if %{with_cross} %define __override_target_tools_for_debugedit \ export OBJCOPY=%{_build_arch}-linux-gnu-objcopy \ export NM=%{_build_arch}-linux-gnu-nm \ export READELF=%{_build_arch}-linux-gnu-readelf \ %{nil} %endif # # 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 \ %{?__override_target_tools_for_debugedit:%{__override_target_tools_for_debugedit}}\ %{?__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* %{log_msg "Build libcpupower Python bindings"} pushd tools/power/cpupower/bindings/python %{libcpupower_python_bindings_make} %{log_msg "Install libcpupower Python bindings"} %{make} INSTALL_DIR=$RPM_BUILD_ROOT%{python3_sitearch} install popd %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 selftests pushd tools/testing/selftests/drivers/net find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/drivers/net/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/drivers/net/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/drivers/net/{} \; 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/hw selftests pushd tools/testing/selftests/drivers/net/hw find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/drivers/net/hw/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/drivers/net/hw/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/drivers/net/hw/{} \; 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/can selftests pushd tools/testing/selftests/net/can find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/net/can/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/net/can/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/net/can/{} \; 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/hsr selftests pushd tools/testing/selftests/net/hsr find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/net/hsr/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/net/hsr/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/net/hsr/{} \; 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 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 net/packetdrill selftests pushd tools/testing/selftests/net/packetdrill find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/net/packetdrill/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/net/packetdrill/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/net/packetdrill/{} \; 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 # install rlimits selftests pushd tools/testing/selftests/rlimits find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/rlimits/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/rlimits/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/rlimits/{} \; popd # install pid_namespace selftests pushd tools/testing/selftests/pid_namespace find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/pid_namespace/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/pid_namespace/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/pid_namespace/{} \; popd # install timens selftests pushd tools/testing/selftests/timens find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/timens/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/timens/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/timens/{} \; popd # install pidfd selftests pushd tools/testing/selftests/pidfd find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/pidfd/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/pidfd/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/pidfd/{} \; popd # install capabilities selftests pushd tools/testing/selftests/capabilities find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/capabilities/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/capabilities/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/capabilities/{} \; popd # install clone3 selftests pushd tools/testing/selftests/clone3 find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/clone3/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/clone3/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/clone3/{} \; popd # install exec selftests pushd tools/testing/selftests/exec find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/exec/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/exec/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/exec/{} \; popd # install filesystems selftests pushd tools/testing/selftests/filesystems find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/filesystems/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/filesystems/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/filesystems/{} \; popd # install firmware selftests pushd tools/testing/selftests/firmware find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/firmware/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/firmware/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/firmware/{} \; popd # install landlock selftests pushd tools/testing/selftests/landlock find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/landlock/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/landlock/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/landlock/{} \; popd # install mount selftests pushd tools/testing/selftests/mount find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/mount/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/mount/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/mount/{} \; popd # install mount_setattr selftests pushd tools/testing/selftests/mount_setattr find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/mount_setattr/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/mount_setattr/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/mount_setattr/{} \; popd # install move_mount_set_group selftests pushd tools/testing/selftests/move_mount_set_group find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/move_mount_set_group/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/move_mount_set_group/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/move_mount_set_group/{} \; popd # install nsfs selftests pushd tools/testing/selftests/nsfs find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/nsfs/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/nsfs/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/nsfs/{} \; popd # install openat2 selftests pushd tools/testing/selftests/openat2 find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/openat2/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/openat2/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/openat2/{} \; popd # install proc selftests pushd tools/testing/selftests/proc find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/proc/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/proc/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/proc/{} \; popd # install safesetid selftests pushd tools/testing/selftests/safesetid find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/safesetid/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/safesetid/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/safesetid/{} \; popd # install seccomp selftests pushd tools/testing/selftests/seccomp find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/seccomp/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/seccomp/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/seccomp/{} \; popd # install tmpfs selftests pushd tools/testing/selftests/tmpfs find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/tmpfs/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/tmpfs/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/tmpfs/{} \; popd # install uevent selftests pushd tools/testing/selftests/uevent find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/uevent/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/uevent/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/uevent/{} \; popd # install vDSO selftests pushd tools/testing/selftests/vDSO find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/vDSO/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/vDSO/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/vDSO/{} \; 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} # # 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 /lib/modules/%{KVERREL}%{?1:+%{1}}/vmlinuz ] &&\ [ -f /boot/initramfs-%{KVERREL}%{?1:+%{1}}.img ] &&\ [ ! -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}} /boot/initramfs-%{KVERREL}%{?1:+%{1}}.img"\ dracut -f --kver "%{KVERREL}%{?1:+%{1}}" /boot/initramfs-%{KVERREL}%{?1:+%{1}}.img || 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\ %{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] -e # Add kernel-install's --entry-type=type1|type2|all option (if supported) to limit removal # to a specific boot entry type. # %define kernel_variant_preun(v:u:e) \ %{expand:%%preun %{?-v:%{-v*}-}%{!?-u*:core}%{?-u*:uki-%{-u*}}}\ entry_type=""\ %{-e: \ /bin/kernel-install --help|grep -q -- '--entry-type=' &&\ entry_type="--entry-type %{!?-u:type1}%{?-u:type2}" \ }\ /bin/kernel-install remove %{KVERREL}%{?-v:+%{-v*}} $entry_type || 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 -e %endif %if %{with_up_base} %kernel_variant_preun -e %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 -e %endif %if %{with_up} && %{with_debug} %kernel_variant_preun -v debug -e %kernel_variant_post -v debug %endif %if %{with_arm64_16k_base} %kernel_variant_preun -v 16k -e %kernel_variant_post -v 16k %endif %if %{with_debug} && %{with_arm64_16k} %kernel_variant_preun -v 16k-debug -e %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 -e %endif %if %{with_arm64_16k_base} && %{with_efiuki} %kernel_variant_posttrans -v 16k -u virt %kernel_variant_preun -v 16k -u virt -e %endif %if %{with_arm64_64k_base} %kernel_variant_preun -v 64k -e %kernel_variant_post -v 64k %endif %if %{with_debug} && %{with_arm64_64k} %kernel_variant_preun -v 64k-debug -e %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 -e %endif %if %{with_arm64_64k_base} && %{with_efiuki} %kernel_variant_posttrans -v 64k -u virt %kernel_variant_preun -v 64k -u virt -e %endif %if %{with_realtime_base} %kernel_variant_preun -v rt %kernel_variant_post -v rt -r kernel %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 %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} && !%{with_automotive_build} %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 %if %{with_ynl} %exclude %{_includedir}/ynl %endif %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/* %{_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}/perf* %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 %files -n %{package_name}-tools-libs %ifarch %{cpupowerarchs} %{_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 # libcpupower Python bindings %{python3_sitearch}/_raw_pylibcpupower.so %{python3_sitearch}/raw_pylibcpupower.py %{python3_sitearch}/__pycache__/raw_pylibcpupower* %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-mon-sched.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 %{with_efiuki} && "%{3}" != "rt" && "%{3}" != "rt-debug" && "%{3}" != "rt-64k" && "%{3}" != "rt-64k-debug"\ %{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\ %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} && !%{with_automotive_build} %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 %ifnarch noarch %{nobuildarches} %files modules-extra-matched %endif # plz don't put in a version string unless you're going to tag # and build. # # %changelog * Wed Mar 25 2026 Correlophus Ciliatus [6.12.0-215.rk35x.1.el10] - bitmap: introduce hardware-specific bitfield operations (Nicolas Frattaroli) - redhat: adopt derivative kernel build 'rk35x' (Luca Magrone) - drm/{panfrost,v3d}: Store the drm client_id in drm_sched_fence (Luca Magrone) - drm/panfrost: Use DRM_GPU_SCHED_STAT_NO_HANG to skip the reset (Maíra Canal) - drm/panfrost: Rename DRM_GPU_SCHED_STAT_NOMINAL to DRM_GPU_SCHED_STAT_RESET (Luca Magrone) - drm/gem/afbc: Eliminate redundant drm_get_format_info() (Ville Syrjälä) - drm/rockchip: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct() (Luca Magrone) - drm: Pass the format info to .fb_create() (Luca Magrone) - drm: Update drm_get_format_info() calls (Luca Magrone) - drm/rockchip: cleanup fb when drm_gem_fb_afbc_init failed (Andy Yan) - iommu/rockchip: prevent iommus dead loop when two masters share one IOMMU (Simon Xue) - iommu/rockchip: Remove iommu_ops pgsize_bitmap (Luca Magrone) - iommu/rockchip: Remove iommu_free_page() (Luca Magrone) - redhat: Makefiles.variables: set RELEASE_LOCALVERSION to .0.rk35x (Luca Magrone) - redhat: configs: custom-overrides: aarch64: add new config lines as disabled (v6.16) (Luca Magrone) - drm/rockchip: dw_hdmi: Set cur_ctr to 0 always (Douglas Anderson) - drm/rockchip: dw_hdmi: Adjust cklvl & txlvl for RF/EMI (Yakir Yang) - drm/rockchip: dw_hdmi: Add phy_config for 594Mhz pixel clock (Nickey Yang) - drm/rockchip: Load crtc devices in preferred order (Jonas Karlman) - drm/rockchip: dw_hdmi: Enable 4K@60Hz mode on RK3399 and RK356x (Jonas Karlman) - drm/rockchip: dw_hdmi: Use auto-generated tables (Douglas Anderson) - drm/rockchip: dw_hdmi: Filter modes based on hdmiphy_clk (Jonas Karlman) - drm/rockchip: Fix a typo (Andrew Kreimer) - drm/rockchip: inno-hdmi: Fix video timing HSYNC/VSYNC polarity setting for rk3036 (Andy Yan) - drm/rockchip: inno-hdmi: Simplify error handler with dev_err_probe (Andy Yan) - drm/rockchip: rk3066_hdmi: switch to drm bridge (Andy Yan) - drm/rockchip: add CONFIG_OF dependency (Arnd Bergmann) - drm/rockchip: analogix_dp: Add support for RK3588 (Damon Ding) - drm/rockchip: analogix_dp: Add support to get panel from the DP AUX bus (Damon Ding) - drm/rockchip: dw_hdmi_qp: Fix io init for dw_hdmi_qp_rockchip_resume (Andy Yan) - drm/rockchip: vop2: Fix interface enable/mux setting of DP1 on rk3588 (Andy Yan) - drm/rockchip: vop: Consistently use rk3399 registers consts (Konstantin Shabanov) - drm/rockchip: vop2: Make overlay layer select register configuration take effect by vsync (Andy Yan) - drm/rockchip: vop: remove redundant condition check (Lucas Stach) - drm/rockchip: lvds: lower log severity for missing pinctrl settings (Heiko Stuebner) - drm/rockchip: lvds: Hide scary error messages on probe deferral (Heiko Stuebner) - drm/rockchip: lvds: move pclk preparation in with clk_get (Heiko Stuebner) - drm/rockchip: stop passing non struct drm_device to drm_err() and friends (Jani Nikula) - drm/rockchip: vop2: add missing bitfield.h include (Heiko Stuebner) - drm/rockchip: vop2: Add support for rk3576 (Andy Yan) - drm/rockchip: vop2: Add uv swap for cluster window (Andy Yan) - drm/rockchip: vop2: Set plane possible crtcs by possible vp mask (Andy Yan) - drm/rockchip: vop2: Register the primary plane and overlay plane separately (Andy Yan) - drm/rockchip: vop2: Consistently use dev_err_probe() (Cristian Ciocaltea) - drm/rockchip: vop2: Introduce vop hardware version (Andy Yan) - drm/rockchip: vop2: Support for different layer select configuration between VPs (Andy Yan) - drm/rockchip: vop2: Merge vop2_cluster/esmart_init function (Andy Yan) - drm/rockchip: vop2: Add platform specific callback (Andy Yan) - drm/rockchip: vop2: Remove AFBC from TRANSFORM_OFFSET register macro (Andy Yan) - drm/rockchip: vop2: use devm_regmap_field_alloc for cluster-regs (Andy Yan) - drm/rockchip: Fix shutdown when no drm-device is set up (Heiko Stuebner) - drm/rockchip: vop2: Improve display modes handling on RK3588 HDMI1 (Cristian Ciocaltea) - drm/rockchip: analogix_dp: Expand device data to support multiple edp display (Damon Ding) - drm/rockchip: analogix_dp: Use formalized struct definition for grf field (Damon Ding) - drm/atomic: Let drivers decide which planes to async flip (André Almeida) - drm/rockchip: vop2: Improve display modes handling on RK3588 HDMI0 (Cristian Ciocaltea) - drm/rockchip: vop2: Drop unnecessary if_pixclk_rate computation (Cristian Ciocaltea) - drm/rockchip: Don't change hdmi reference clock rate (Derek Foreman) - drm/connector: continue making mode_valid take a const struct drm_display_mode (Luca Magrone) - drm/rockchip: dw_hdmi_qp: Add basic RK3576 HDMI output support (Andy Yan) - drm/rockchip: dw_hdmi_qp: Add platform ctrl callback (Andy Yan) - drm/rockchip: vop2: Support 32x8 superblock afbc (Andy Yan) - drm/rockchip: vop2: include rockchip_drm_drv.h (Min-Hua Chen) - drm/rockchip: vop2: Add check for 32 bpp format for rk3588 (Andy Yan) - drm/rockchip: vop2: Check linear format for Cluster windows on rk3566/8 (Andy Yan) - drm/rockchip: vop2: Setup delay cycle for Esmart2/3 (Andy Yan) - drm/rockchip: vop2: Set AXI id for rk3588 (Andy Yan) - drm/rockchip: vop2: Fix the windows switch between different layers (Andy Yan) - drm/rockchip: vop2: Add debugfs support (Andy Yan) - drm/rockchip: Fix Copyright description (Andy Yan) - drm/rockchip: dw_hdmi_qp: Simplify clock handling (Cristian Ciocaltea) - drm/rockchip: vop2: don't check color_mgmt_changed in atomic_enable (Piotr Zalewski) - drm/rockchip: Remove unnecessary checking (Guoqing Jiang) - drm/rockchip: dw_hdmi_qp: Add support for RK3588 HDMI1 output (Cristian Ciocaltea) - drm/rockchip: vop2: Fix the mixer alpha setup for layer 0 (Andy Yan) - drm/rockchip: vop2: Fix cluster windows alpha ctrl regsiters offset (Andy Yan) - drm/rockchip: Add MIPI DSI2 glue driver for RK3588 (Heiko Stuebner) - drm/rockchip: vop2: fix rk3588 dp+dsi maxclk verification (Heiko Stuebner) - drm/rockchip: avoid 64-bit division (Arnd Bergmann) - drm/rockchip: analogix_dp: allow to work without panel (Lucas Stach) - rockchip/drm: vop2: add support for gamma LUT (Piotr Zalewski) - drm/rockchip: vop2: Don't spam logs in atomic update (Andy Yan) - drm/rockchip: cdn-dp: Use drm_connector_helper_hpd_irq_event() (Thomas Zimmermann) - drm/rockchip: Add basic RK3588 HDMI output support (Cristian Ciocaltea) - drm/{rockchip,panfrost}: change 'remove_new' to 'remove' (Luca Magrone) - drm/panfrost: Add GPU ID for MT8188 Mali-G57 MC3 (AngeloGioacchino Del Regno) - drm/panfrost: Remove unused id_mask from struct panfrost_model (Steven Price) - drm/panfrost: Add SYSTEM_TIMESTAMP and SYSTEM_TIMESTAMP_FREQUENCY parameters (Mary Guillemard) - drm/panfrost: Add missing OPP table refcnt decremental (Adrián Larumbe) - drm/panfrost: Fix scheduler workqueue bug (Philipp Stanner) - drm/panfrost: reorder pd/clk/rst sequence (Philippe Simons) - drm/panfrost: add h616 compatible string (Philippe Simons) - drm/panfrost: Add PM runtime flag (Philippe Simons) - drm/panfrost: Test for imported buffers with drm_gem_is_imported() (Thomas Zimmermann) - drm/panfrost: Force AARCH64_4K page table format on MediaTek MT8192 (Ariel D'Alessandro) - drm/panfrost: Force AARCH64_4K page table format on MediaTek MT8188 (Ariel D'Alessandro) - drm/panfrost: Add support for AARCH64_4K page table format (Ariel D'Alessandro) - drm/panfrost: Set HW_FEATURE_AARCH64_MMU feature flag on Bifrost models (Ariel D'Alessandro) - drm/panfrost: Use GPU_MMU_FEATURES_VA_BITS/PA_BITS macros (Ariel D'Alessandro) - drm/panfrost: Set IOMMU_CACHE flag (Ariel D'Alessandro) - drm/{lima,panfrost}: Use refcount_t for pages_use_count (Luca Magrone) - drm/shmem-helper: continue refactoring locked/unlocked functions (Luca Magrone) - drm/gem: Change locked/unlocked postfix of drm_gem_v/unmap() function names (Dmitry Osipenko) - redhat: configs: custom-overrides: aarch64: explicitly disable SND_SOC_ROCKCHIP_SAI (Luca Magrone) - gitlab-ci: add pipeline to generate source rpm (Luca Magrone) - iommu/rockchip: Retire global dma_dev workaround (Robin Murphy) - iommu/rockchip: Register in a sensible order (Robin Murphy) - iommu/rockchip: Allocate per-device data sensibly (Robin Murphy) - drm/panfrost: fix drm_sched_init() params (Luca Magrone) - drm/rockchip: stop passing non struct drm_device to drm_err() and friends (Luca Magrone) - redhat: configs: custom-overrides: rename RK808 to RK8XX (Luca Magrone) - redhat: configs: custom-overrides: move configs from arm to aarch64 (Luca Magrone) - redhat: do not bump release (Luca Magrone) - drm/sched: add optional errno to some drm_sched_start() calls (Luca Magrone) - drm/panfrost: Add cycle counter job requirement (Mary Guillemard) - drm: remove driver date from struct drm_driver and all drivers (Jani Nikula) - drm/rockchip: fix drm_client_setup.h header path (Luca Magrone) - drm/rockchip: Use video aperture helpers (Thomas Zimmermann) - drm/rockchip: Run DRM default client setup (Thomas Zimmermann) - crypto: rockchip: add rk3588 driver (Corentin Labbe) - reset: rockchip: secure reset must be used by SCMI (Corentin Labbe) - ARM64: dts: rk356x: add crypto node (Corentin Labbe) - ARM64: dts: rk3588: add crypto node (Corentin Labbe) - MAINTAINERS: add new dt-binding doc to the right entry (Corentin Labbe) - dt-bindings: crypto: add support for rockchip,crypto-rk3588 (Corentin Labbe) - redhat: configs: custom-overrides: aarch64: enable sm3_generic (Luca Magrone) - redhat: configs: custom-overrides: aarch64: fix mismatched configuration entries (Luca Magrone) - redhat: configs: custom-overrides: aarch64: make mmcblk built-in (Luca Magrone) - redhat: configs: custom-overrides: aarch64: add missing config entries (Luca Magrone) - redhat: configs: compile drm stack as a module (Luca Magrone) - redhat: configs: update SND configs and DRM_KMS_HELPERS (Luca Magrone) - redhat: configs: build rockchip drm and panfrost as modules (Luca Magrone) - redhat: configs: add required options (Luca Magrone) - redhat: configs: disable AST server chips (Luca Magrone) - redhat: configs: remove CONFIG_CONFIG_ARCH_ROCKCHIP (Luca Magrone) - redhat: configs: use the same configs as last working version (Luca Magrone) - Add configuration entries for Quartz64 (Luca Magrone) * Tue Mar 24 2026 Alexandra Hájková [6.12.0-215.el10] - selftests/memfd: use IPC semaphore instead of SIGSTOP/SIGCONT (Aristeu Rozanski) [RHEL-132213] - tcp: reclaim 8 bytes in struct request_sock_queue (Guillaume Nault) [RHEL-123211] - tcp: move mtu_info to remove two 32bit holes (Guillaume Nault) [RHEL-123211] - tcp: move tcp_clean_acked to tcp_sock_read_tx group (Guillaume Nault) [RHEL-123211] - tcp: move recvmsg_inq to tcp_sock_read_txrx (Guillaume Nault) [RHEL-123211] - tcp: move tcp->rcv_tstamp to tcp_sock_write_txrx group (Guillaume Nault) [RHEL-123211] - tcp: remove CACHELINE_ASSERT_GROUP_SIZE() uses (Guillaume Nault) [RHEL-123211] - net: move sk->sk_err_soft and sk->sk_sndbuf (Guillaume Nault) [RHEL-123211] - net: move sk_uid and sk_protocol to sock_read_tx (Guillaume Nault) [RHEL-123211] - tcp: move icsk_clean_acked to a better location (Guillaume Nault) [RHEL-123211] - x86/boot: Handle relative CONFIG_EFI_SBAT_FILE file paths (Jan Stancek) [RHEL-132871] - timekeeping: Fix timex status validation for auxiliary clocks (Waiman Long) [RHEL-152433] - time/sched_clock: Use ACCESS_PRIVATE() to evaluate hrtimer::function (Waiman Long) [RHEL-152433] - hrtimer: Fix trace oddity (Waiman Long) [RHEL-152433] - clocksource: Reduce watchdog readout delay limit to prevent false positives (Waiman Long) [RHEL-152433] - timekeeping: Adjust the leap state for the correct auxiliary timekeeper (Waiman Long) [RHEL-152433] {CVE-2026-23106} - hrtimer: Fix softirq base check in update_needs_ipi() (Waiman Long) [RHEL-152433] - time: Fix a few typos in time[r] related code comments (Waiman Long) [RHEL-152433] - timers/migration: Remove dead code handling idle CPU checking for remote timers (Waiman Long) [RHEL-152433] - timers/migration: Remove unused "cpu" parameter from tmigr_get_group() (Waiman Long) [RHEL-152433] - timers/migration: Assert that hotplug preparing CPU is part of stable active hierarchy (Waiman Long) [RHEL-152433] - timers/migration: Fix imbalanced NUMA trees (Waiman Long) [RHEL-152433] - timers/migration: Remove locking on group connection (Waiman Long) [RHEL-152433] - timers/migration: Convert "while" loops to use "for" (Waiman Long) [RHEL-152433] - timekeeping: Fix error code in tk_aux_sysfs_init() (Waiman Long) [RHEL-152433] - timers: Fix NULL function pointer race in timer_shutdown_sync() (Waiman Long) [RHEL-152433] {CVE-2025-68214} - timekeeping: Fix resource leak in tk_aux_sysfs_init() error paths (Waiman Long) [RHEL-152433] - tick/sched: Fix bogus condition in report_idle_softirq() (Waiman Long) [RHEL-152433] - timekeeping: Fix aux clocks sysfs initialization loop bound (Waiman Long) [RHEL-152433] - time: export timespec64_add_safe() symbol (Waiman Long) [RHEL-152433] - time: Build generic update_vsyscall() only with generic time vDSO (Waiman Long) [RHEL-152433] - time/sched_clock: Export symbol for sched_clock register function (Waiman Long) [RHEL-152433] - time: Fix spelling mistakes in comments (Waiman Long) [RHEL-152433] - clocksource: Print durations for sync check unconditionally (Waiman Long) [RHEL-152433] - hrtimer: Reorder branches in hrtimer_clockid_to_base() (Waiman Long) [RHEL-152433] - hrtimer: Remove hrtimer_clock_base:: Get_time (Waiman Long) [RHEL-152433] - hrtimer: Use hrtimer_cb_get_time() helper (Waiman Long) [RHEL-152433] - media: pwm-ir-tx: Avoid direct access to hrtimer clockbase (Waiman Long) [RHEL-152433] - lib: test_objpool: Avoid direct access to hrtimer clockbase (Waiman Long) [RHEL-152433] - sched/core: Avoid direct access to hrtimer clockbase (Waiman Long) [RHEL-152433] - timers/itimer: Avoid direct access to hrtimer clockbase (Waiman Long) [RHEL-152433] - posix-timers: Avoid direct access to hrtimer clockbase (Waiman Long) [RHEL-152433] - jiffies: Remove obsolete SHIFTED_HZ comment (Waiman Long) [RHEL-152433] - copy_process: pass clone_flags as u64 across calltree (Waiman Long) [RHEL-152433] - hrtimers: Unconditionally update target CPU base after offline timer migration (Waiman Long) [RHEL-152433] - vdso/vsyscall: Avoid slow division loop in auxiliary clock update (Waiman Long) [RHEL-152433] - clocksource: Improve randomness in clocksource_verify_choose_cpus() (Waiman Long) [RHEL-152433] - cpumask: introduce cpumask_random() (Waiman Long) [RHEL-152433] - bitmap: generalize node_random() (Waiman Long) [RHEL-152433] - vdso/vsyscall: Update auxiliary clock data in the datapage (Waiman Long) [RHEL-152433] - vdso: Introduce aux_clock_resolution_ns() (Waiman Long) [RHEL-152433] - vdso/vsyscall: Split up __arch_update_vsyscall() into __arch_update_vdso_clock() (Waiman Long) [RHEL-152433] - vdso/vsyscall: Introduce a helper to fill clock configurations (Waiman Long) [RHEL-152433] - timekeeping: Remove the temporary CLOCK_AUX workaround (Waiman Long) [RHEL-152433] - timekeeping: Provide ktime_get_clock_ts64() (Waiman Long) [RHEL-152433] - timekeeping: Provide interface to control auxiliary clocks (Waiman Long) [RHEL-152433] - timekeeping: Provide update for auxiliary timekeepers (Waiman Long) [RHEL-152433] - timekeeping: Provide adjtimex() for auxiliary clocks (Waiman Long) [RHEL-152433] - timekeeping: Prepare do_adtimex() for auxiliary clocks (Waiman Long) [RHEL-152433] - timekeeping: Make do_adjtimex() reusable (Waiman Long) [RHEL-152433] - timekeeping: Add auxiliary clock support to __timekeeping_inject_offset() (Waiman Long) [RHEL-152433] - timekeeping: Make timekeeping_inject_offset() reusable (Waiman Long) [RHEL-152433] - timekeeping: Provide time setter for auxiliary clocks (Waiman Long) [RHEL-152433] - timekeeping: Add minimal posix-timers support for auxiliary clocks (Waiman Long) [RHEL-152433] - timekeeping: Provide time getters for auxiliary clocks (Waiman Long) [RHEL-152433] - timekeeping: Update auxiliary timekeepers on clocksource change (Waiman Long) [RHEL-152433] - timekeeping: Add AUX offset to struct timekeeper (Waiman Long) [RHEL-152433] - ntp: Use ktime_get_ntp_seconds() (Waiman Long) [RHEL-152433] - timekeeping: Provide ktime_get_ntp_seconds() (Waiman Long) [RHEL-152433] - timekeeping: Introduce auxiliary timekeepers (Waiman Long) [RHEL-152433] - timekeeping: Add clock_valid flag to timekeeper (Waiman Long) [RHEL-152433] - timekeeping: Prepare timekeeping_update_from_shadow() (Waiman Long) [RHEL-152433] - timekeeping: Make __timekeeping_advance() reusable (Waiman Long) [RHEL-152433] - ntp: Rename __do_adjtimex() to ntp_adjtimex() (Waiman Long) [RHEL-152433] - ntp: Add timekeeper ID arguments to public functions (Waiman Long) [RHEL-152433] - ntp: Add support for auxiliary timekeepers (Waiman Long) [RHEL-152433] - redhat/configs: Add CONFIG_POSIX_AUX_CLOCKS=n (Waiman Long) [RHEL-152433] - time: Introduce auxiliary POSIX clocks (Waiman Long) [RHEL-152433] - timekeeping: Introduce timekeeper ID (Waiman Long) [RHEL-152433] - timekeeping: Avoid double notification in do_adjtimex() (Waiman Long) [RHEL-152433] - timekeeping: Cleanup kernel doc of __ktime_get_real_seconds() (Waiman Long) [RHEL-152433] - timekeeping: Remove hardcoded access to tk_core (Waiman Long) [RHEL-152433] - clocksource: Use cpumask_next_wrap() in clocksource_watchdog() (Waiman Long) [RHEL-152433] - clocksource: Use cpumask_any_but() in clocksource_verify_choose_cpus() (Waiman Long) [RHEL-152433] - timers/migration: Clean up the loop in tmigr_quick_check() (Waiman Long) [RHEL-152433] - PCI: Add PCI_BRIDGE_NO_ALIAS quirk for ASPEED AST1150 (Myron Stowe) [RHEL-143320] - PCI: Add ASPEED vendor ID to pci_ids.h (Myron Stowe) [RHEL-143320] - PCI/MSI: Add an option to write MSIX ENTRY_DATA before any reads (Myron Stowe) [RHEL-143320] - s390/ap: Expose ap_bindings_complete_count counter via sysfs (Mete Durlu) [RHEL-155896] - RDMA/bnxt_re: convert timeouts to secs_to_jiffies() (Sreekanth Reddy) [RHEL-108694] - RDMA/bnxt_re: Fix return code of bnxt_re_configure_cc (Sreekanth Reddy) [RHEL-108694] - RDMA/bnxt_re: Fix missing error handling for tx_queue (Sreekanth Reddy) [RHEL-108694] - RDMA/bnxt_re: Fix incorrect display of inactivity_cp in debugfs output (Sreekanth Reddy) [RHEL-108694] - RDMA/bnxt_re: Use macro instead of hard coded value (Sreekanth Reddy) [RHEL-108694] - RDMA/bnxt_re: Support 2G message size (Sreekanth Reddy) [RHEL-108694] - RDMA/bnxt_re: Fix size of uverbs_copy_to() in BNXT_RE_METHOD_GET_TOGGLE_MEM (Sreekanth Reddy) [RHEL-108694] - RDMA/bnxt_re: Support extended stats for Thor2 VF (Sreekanth Reddy) [RHEL-108694] - selftests: net: tests for add double tunneling GRO/GSO (Guillaume Nault) [RHEL-145367] - geneve: use GRO hint option in the RX path (Guillaume Nault) [RHEL-145367] - geneve: extract hint option at GRO stage (Guillaume Nault) [RHEL-145367] - geneve: add GRO hint output path (Guillaume Nault) [RHEL-145367] - geneve: pass the geneve device ptr to geneve_build_skb() (Guillaume Nault) [RHEL-145367] - geneve: constify geneve_hlen() (Guillaume Nault) [RHEL-145367] - geneve: add netlink support for GRO hint (Guillaume Nault) [RHEL-145367] - vxlan: expose gso partial features for tunnel offload (Guillaume Nault) [RHEL-145367] - geneve: expose gso partial features for tunnel offload (Guillaume Nault) [RHEL-145367] - net: introduce mangleid_features (Guillaume Nault) [RHEL-145367] - geneve, specs: Add port range to rt_link specification (Guillaume Nault) [RHEL-145367] - geneve: Allow users to specify source port range (Guillaume Nault) [RHEL-145367] - selftests: forwarding: lib: Move require_command to net, generalize (Guillaume Nault) [RHEL-145367] - USB: storage: Remove subclass and protocol overrides from Novatek quirk (Desnes Nunes) [RHEL-147788] - usb: uas: fix urb unmapping issue when the uas device is remove during ongoing data transfer (Desnes Nunes) [RHEL-147788] {CVE-2025-68331} - xhci: dbgtty: fix device unregister: fixup (Desnes Nunes) [RHEL-147788] - xhci: dbgtty: fix device unregister (Desnes Nunes) [RHEL-147788] - usb: storage: sddr55: Reject out-of-bound new_pba (Desnes Nunes) [RHEL-147788] {CVE-2025-40345} - USB: serial: option: add support for Rolling RW101R-GL (Desnes Nunes) [RHEL-147788] - usb: typec: ucsi: psy: Set max current to zero when disconnected (Desnes Nunes) [RHEL-147788] - usb: dwc3: pci: Sort out the Intel device IDs (Desnes Nunes) [RHEL-147788] - usb: dwc3: pci: add support for the Intel Nova Lake -S (Desnes Nunes) [RHEL-147788] - drivers/usb/dwc3: fix PCI parent check (Desnes Nunes) [RHEL-147788] - xhci: sideband: Fix race condition in sideband unregister (Desnes Nunes) [RHEL-147788] - xhci: dbgtty: Fix data corruption when transmitting data form DbC to host (Desnes Nunes) [RHEL-147788] - xhci: fix stale flag preventig URBs after link state error is cleared (Desnes Nunes) [RHEL-147788] - USB: serial: ftdi_sio: add support for u-blox EVK-M101 (Desnes Nunes) [RHEL-147788] - usb: cdns3: Fix double resource release in cdns3_pci_probe (Desnes Nunes) [RHEL-147788] - usb: gadget: udc: fix use-after-free in usb_gadget_state_work (Desnes Nunes) [RHEL-147788] {CVE-2025-68282} - USB: serial: option: add Telit FN920C04 ECM compositions (Desnes Nunes) [RHEL-147788] - USB: serial: option: add Quectel RG255C (Desnes Nunes) [RHEL-147788] - tcpm: allow looking for role_sw device in the main node (Desnes Nunes) [RHEL-147788] - tcpm: switch check for role_sw device with fw_node (Desnes Nunes) [RHEL-147788] - usb/core/quirks: Add Huawei ME906S to wakeup quirk (Desnes Nunes) [RHEL-147788] - USB: serial: option: add UNISOC UIS7720 (Desnes Nunes) [RHEL-147788] - xhci: dbc: enable back DbC in resume if it was enabled before suspend (Desnes Nunes) [RHEL-147788] - xhci: dbc: fix bogus 1024 byte prefix if ttyDBC read races with stall event (Desnes Nunes) [RHEL-147788] - usb: xhci-pci: Fix USB2-only root hub registration (Desnes Nunes) [RHEL-147788] - dt-bindings: usb: qcom,snps-dwc3: Fix bindings for X1E80100 (Desnes Nunes) [RHEL-147788] - dt-bindings: usb: switch: split out ports definition (Desnes Nunes) [RHEL-147788] - dt-bindings: phy: samsung,usb3-drd-phy: gs101: require Type-C properties (Desnes Nunes) [RHEL-147788] - dt-bindings: phy: samsung,usb3-drd-phy: add blank lines between DT properties (Desnes Nunes) [RHEL-147788] - usb: dwc3: Don't call clk_bulk_disable_unprepare() twice (Desnes Nunes) [RHEL-147788] - dt-bindings: usb: dwc3-imx8mp: dma-range is required only for imx8mp (Desnes Nunes) [RHEL-147788] - usb: vhci-hcd: Prevent suspending virtually attached devices (Desnes Nunes) [RHEL-147788] - USB: serial: option: add SIMCom 8230C compositions (Desnes Nunes) [RHEL-147788] - thunderbolt: Fix use-after-free in tb_dp_dprx_work (Desnes Nunes) [RHEL-147788] {CVE-2025-40002} - docs: driver-api: fix spelling of "buses". (Desnes Nunes) [RHEL-147788] - usb: xhci: align PORTSC trace with one-based port numbering (Desnes Nunes) [RHEL-147788] - usb: xhci: correct indentation for PORTSC tracing function (Desnes Nunes) [RHEL-147788] - usb: xhci: improve TR Dequeue Pointer mask (Desnes Nunes) [RHEL-147788] - usb: xhci-pci: add support for hosts with zero USB3 ports (Desnes Nunes) [RHEL-147788] - usb: xhci: Update a comment about Stop Endpoint retries (Desnes Nunes) [RHEL-147788] - Revert "usb: xhci: Avoid Stop Endpoint retry loop if the endpoint seems Running" (Desnes Nunes) [RHEL-147788] - USB: gadget: Use str_enable_disable-like helpers (Desnes Nunes) [RHEL-147788] - usb: gadget: Introduce free_usb_request helper (Desnes Nunes) [RHEL-147788] - usb: gadget: Store endpoint pointer in usb_request (Desnes Nunes) [RHEL-147788] - usb: host: xhci-rcar: Add Renesas RZ/G3E USB3 Host driver support (Desnes Nunes) [RHEL-147788] - usb: host: xhci-plat: Add .post_resume_quirk for struct xhci_plat_priv (Desnes Nunes) [RHEL-147788] - usb: host: xhci-rcar: Move R-Car reg definitions (Desnes Nunes) [RHEL-147788] - dt-bindings: usb: Document Renesas RZ/G3E USB3HOST (Desnes Nunes) [RHEL-147788] - phy: fsl-imx8mq-usb: fix typec orientation switch when built as module (Desnes Nunes) [RHEL-147788] - usb: typec: Stub out typec_switch APIs when CONFIG_TYPEC=n (Desnes Nunes) [RHEL-147788] - usb: mon: Increase BUFF_MAX to 64 MiB to support multi-MB URBs (Desnes Nunes) [RHEL-147788] - usb: xhci: plat: Facilitate using autosuspend for xhci plat devices (Desnes Nunes) [RHEL-147788] - redhat/configs: configs: riscv: Enable dwc3 on riscv for RHEL (Desnes Nunes) [RHEL-147788] - redhat/configs: Enable DWC3 Generic Platform Driver on RHEL automotive (Desnes Nunes) [RHEL-147788] - usb: dwc3: add generic driver to support flattened (Desnes Nunes) [RHEL-147788] - clk: Provide devm_clk_bulk_get_all_enabled() helper (Desnes Nunes) [RHEL-147788] - dt-bindings: usb: dwc3: add support for SpacemiT K1 (Desnes Nunes) [RHEL-147788] - thunderbolt: Update thunderbolt.h header file (Desnes Nunes) [RHEL-147788] - thunderbolt: Update xdomain.c function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Update usb4_port.c function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Update usb4.c function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Update tunnel.h function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Update tunnel.c function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Update tmu.c function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Add missing documentation in tb.h (Desnes Nunes) [RHEL-147788] - thunderbolt: Update tb.h function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Update tb.c function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Update switch.c function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Update retimer.c function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Update property.c function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Update path.c function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Update nvm.c function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Add missing documentation in nhi_regs.h ring_desc structure (Desnes Nunes) [RHEL-147788] - thunderbolt: Update nhi.c function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Update lc.c function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Update eeprom.c function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Update domain.c function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Update dma_port.c function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Add missing documentation in ctl.h tb_cfg_request struct (Desnes Nunes) [RHEL-147788] - thunderbolt: Update ctl.c function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Update clx.c function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Update cap.c function documentation (Desnes Nunes) [RHEL-147788] - thunderbolt: Update acpi.c function documentation (Desnes Nunes) [RHEL-147788] - usb: typec: tipd: Handle mode transitions for CD321x (Desnes Nunes) [RHEL-147788] - usb: typec: tipd: Read data status in probe and cache its value (Desnes Nunes) [RHEL-147788] - usb: typec: tipd: Use read_power_status function in probe (Desnes Nunes) [RHEL-147788] - usb: typec: tipd: Update partner identity when power status was updated (Desnes Nunes) [RHEL-147788] - usb: typec: tipd: Register DisplayPort and Thunderbolt altmodes for cd321x (Desnes Nunes) [RHEL-147788] - usb: typec: tipd: Read USB4, Thunderbolt and DisplayPort status for cd321x (Desnes Nunes) [RHEL-147788] - usb: typec: tipd: Add cd321x struct with separate size (Desnes Nunes) [RHEL-147788] - usb: typec: tipd: Trace data status for CD321x correctly (Desnes Nunes) [RHEL-147788] - usb: typec: tipd: Move switch_power_state to tipd_data (Desnes Nunes) [RHEL-147788] - usb: typec: tipd: Move initial irq mask to tipd_data (Desnes Nunes) [RHEL-147788] - usb: typec: tipd: Clear interrupts first (Desnes Nunes) [RHEL-147788] - usb: host: enable USB offload during system sleep (Desnes Nunes) [RHEL-147788] - xhci: sideband: add api to trace sideband usage (Desnes Nunes) [RHEL-147788] - usb: offload: add apis for offload usage tracking (Desnes Nunes) [RHEL-147788] - usb: xhci-plat: separate dev_pm_ops for each pm_event (Desnes Nunes) [RHEL-147788] - usb: dwc3: qcom: Implement glue callbacks to facilitate runtime suspend (Desnes Nunes) [RHEL-147788] - usb: dwc3: core: Introduce glue callbacks for flattened implementations (Desnes Nunes) [RHEL-147788] - usb: host: tegra: Remove manual wake IRQ disposal (Desnes Nunes) [RHEL-147788] - usb: host: xhci-tegra: Use platform_get_irq_optional() for wake IRQs (Desnes Nunes) [RHEL-147788] - usb: xhci: tegra: Support USB wakeup function for Tegra234 (Desnes Nunes) [RHEL-147788] - usb: udc: Add trace event for usb_gadget_set_state (Desnes Nunes) [RHEL-147788] - usb: dwc2: Add support for 'maximum-speed' property (Desnes Nunes) [RHEL-147788] - usb: typec: tcpci: add wakeup support (Desnes Nunes) [RHEL-147788] - dt-bindings: extcon: linux,extcon-usb-gpio: GPIO must be provided (Desnes Nunes) [RHEL-147788] - redhat/configs: Adding CONFIG_EXTCON_MAX14526 (Desnes Nunes) [RHEL-147788] - extcon: max14526: depends on I2C to prevent build warning/errors (Desnes Nunes) [RHEL-147788] - extcon: Add basic support for Maxim MAX14526 MUIC (Desnes Nunes) [RHEL-147788] - dt-bindings: extcon: Document Maxim MAX14526 MUIC (Desnes Nunes) [RHEL-147788] - usb: core: support eUSB2 double bandwidth large isoc URB frames (Desnes Nunes) [RHEL-147788] - usb: xhci: Add host support for eUSB2 double isochronous bandwidth devices (Desnes Nunes) [RHEL-147788] - usb: core: Introduce usb_endpoint_is_hs_isoc_double() (Desnes Nunes) [RHEL-147788] - usb: xhci: Use usb_endpoint_max_periodic_payload() (Desnes Nunes) [RHEL-147788] - usb: core: Add a function to get USB version independent periodic payload (Desnes Nunes) [RHEL-147788] - usb: core: eUSB2 companion descriptor is for isoc IN endpoints only (Desnes Nunes) [RHEL-147788] - usb: core: Parse eUSB2 companion descriptors for high speed devices only (Desnes Nunes) [RHEL-147788] - usb: core: Use le16_to_cpu() to read __le16 value in usb_parse_endpoint() (Desnes Nunes) [RHEL-147788] - usb: typec: ucsi: Add check for UCSI version (Desnes Nunes) [RHEL-147788] - usb: cdns3: gadget: Use-after-free during failed initialization and exit of cdnsp gadget (Desnes Nunes) [RHEL-147788] {CVE-2025-40314} - usb: host: xhci-tegra: Remove redundant ternary operators (Desnes Nunes) [RHEL-147788] - cdnsp: Remove unused tracepoints (Desnes Nunes) [RHEL-147788] - cdns3: Remove unused tracepoints (Desnes Nunes) [RHEL-147788] - cdns2: Remove unused tracepoints (Desnes Nunes) [RHEL-147788] - usb: gadget: configfs: Correctly set use_os_string at bind (Desnes Nunes) [RHEL-147788] - tools/usb/usbip: fix spelling mistakes in usbipd.c (Desnes Nunes) [RHEL-147788] - dt-bindings: usb: IXP4xx UDC bindings (Desnes Nunes) [RHEL-147788] - usb: dwc3: Refactor dwc3_mode_show (Desnes Nunes) [RHEL-147788] - usb: dwc3: Add trace event for dwc3_set_prtcap (Desnes Nunes) [RHEL-147788] - usb: storage: realtek_cr: Simplify residue calculation in rts51x_bulk_transport() (Desnes Nunes) [RHEL-147788] - usb: misc: Update link to EHSET pdf doc (Desnes Nunes) [RHEL-147788] - usb: usblp: Use min_t() to improve usblp_read() (Desnes Nunes) [RHEL-147788] - USB: serial: oti6858: remove extranenous ; after comment (Desnes Nunes) [RHEL-147788] - thunderbolt: Use string choices helpers (Desnes Nunes) [RHEL-147788] - mmc: rtsx_usb_sdmmc: use modern PM macros (Desnes Nunes) [RHEL-147788] - mmc: rtsx_usb_sdmmc: Fix uninitialized variable issue (Desnes Nunes) [RHEL-147788] - Documentation: driver-api: usb: Limit toctree depth (Desnes Nunes) [RHEL-147788] - phy: qcom: qmp-combo: register a typec mux to change the QMPPHY_MODE (Desnes Nunes) [RHEL-147788] - phy: qcom: qmp-combo: introduce QMPPHY_MODE (Desnes Nunes) [RHEL-147788] - phy: qcom: qmp-combo: store DP phy power state (Desnes Nunes) [RHEL-147788] - phy: qcom: qmp-combo: Rename 'mode' to 'phy_mode' (Desnes Nunes) [RHEL-147788] - dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp: Reference usb-switch.yaml to allow mode-switch (Desnes Nunes) [RHEL-147788] - phy: remove unneeded 'fast_io' parameter in regmap_config (Desnes Nunes) [RHEL-147788] - misc: rtsx: usb card reader: add OCP support (Desnes Nunes) [RHEL-147788] - misc: rtsx: usb: Ensure mmc child device is active when card is present (Desnes Nunes) [RHEL-147788] - memstick: Add timeout to prevent indefinite waiting (Desnes Nunes) [RHEL-147788] - misc: rtsx_pci: Add separate CD/WP pin polarity reversal support (Desnes Nunes) [RHEL-147788] - phy: qcom-qmp-pcie: add dual lane PHY support for SM8750 (Desnes Nunes) [RHEL-147788] - dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the SM8750 QMP PCIe PHY Gen3 x2 (Desnes Nunes) [RHEL-147788] - usb: gadget: f_ncm: Fix MAC assignment NCM ethernet (Desnes Nunes) [RHEL-147788] - USB: Check no positive return values from pm_runtime_resume_and_get() (Desnes Nunes) [RHEL-147788] - usb: typec: ucsi: Add support for READ_POWER_LEVEL command (Desnes Nunes) [RHEL-147788] - thunderbolt: Use is_pciehp instead of is_hotplug_bridge (Desnes Nunes) [RHEL-147788] - dt-bindings: usb: Drop duplicate nvidia,tegra20-ehci.txt (Desnes Nunes) [RHEL-147788] - usb: dwc3: qcom: Remove extcon functionality from glue layer (Desnes Nunes) [RHEL-147788] - USB: lower "Device is not authorized for usage" message to info (Desnes Nunes) [RHEL-147788] - usb: dwc3: qcom: Add shutdown handler (Desnes Nunes) [RHEL-147788] - thunderbolt: Use Linux Foundation IDs for XDomain discovery (Desnes Nunes) [RHEL-147788] - phy: ti: omap-usb2: drop unused module alias (Desnes Nunes) [RHEL-147788] - phy: hisilicon: hi6220-usb: drop unused module alias (Desnes Nunes) [RHEL-147788] - phy: ti: omap-usb2: enable compile testing (Desnes Nunes) [RHEL-147788] - dt-bindings: phy: fsl,imx8mq-usb: Drop 'db' suffix duplicating dtschema (Desnes Nunes) [RHEL-147788] - thunderbolt: Compare HMAC values in constant time (Desnes Nunes) [RHEL-147788] - phy: starfive: jh7110-usb: Fix USB 2.0 host occasional detection failure (Desnes Nunes) [RHEL-147788] - pNFS: fix a missing wake up while waiting on NFS_LAYOUT_DRAIN (Olga Kornievskaia) [RHEL-157444] - ALSA: hda/tas2781: Ignore reset check for SPI device (CKI Backport Bot) [RHEL-148197] - platform/x86/intel/hid: Add Nova Lake support (Steve Best) [RHEL-117305] - redhat: genlog: add new JIRA cloud server hostname (Jan Stancek) - redhat/configs: enable keyboard GPIO for x86 (Mark Langsdorf) [RHEL-147908] - redhat/configs: enable CONFIG_INPUT_SOC_BUTTON_ARRAY on x86 (Mark Langsdorf) [RHEL-135367] - perf/amd/ibs: Avoid calling perf_allow_kernel() from the IBS NMI handler (Michael Petlan) [RHEL-145800] - selftests/bpf: Use the correct destructor kfunc type (Viktor Malik) [RHEL-113714] - bpf: crypto: Use the correct destructor kfunc type (Viktor Malik) [RHEL-113714] - PCI: vmd: Override irq_startup()/irq_shutdown() in vmd_init_dev_msi_info() (Myron Stowe) [RHEL-143521] - PCI: vmd: Add VMD Device ID Support for Panther Lake (PTL)-H/P/U (Myron Stowe) [RHEL-143521] - net: vlan: don't propagate flags on open (Hangbin Liu) [RHEL-149691] * Wed Mar 18 2026 Alexandra Hájková [6.12.0-214.el10] - selftests: kvm: Verify TILELOADD actually #NM faults when XFD[18]=1 (Maxim Levitsky) [RHEL-148618] - selftests: kvm: try getting XFD and XSAVE state out of sync (Maxim Levitsky) [RHEL-148618] - selftests: kvm: replace numbered sync points with actions (Maxim Levitsky) [RHEL-148618] - x86/fpu: Clear XSTATE_BV[i] in guest XSAVE state whenever XFD[i]=1 (Maxim Levitsky) [RHEL-148618] - KVM: selftests: Add ex_str() to print human friendly name of exception vectors (Maxim Levitsky) [RHEL-148618] - KVM: x86: Define AMD's #HV, #VC, and #SX exception vectors (Maxim Levitsky) [RHEL-148618] - KVM: x86: Define Control Protection Exception (#CP) vector (Maxim Levitsky) [RHEL-148618] - KVM: x86: Add human friendly formatting for #XM, and #VE (Maxim Levitsky) [RHEL-148618] - KVM: selftests: Add support for #DE exception fixup (Maxim Levitsky) [RHEL-148618] - idpf: export RX hardware timestamping information to XDP (Michal Schmidt) [RHEL-136674] - autofs: dont trigger mount if it cant succeed (Ian Kent) [RHEL-134674] - vdpa/mlx5: update MAC address handling in mlx5_vdpa_set_attr() (Cindy Lu) [RHEL-127007] - vdpa/mlx5: reuse common function for MAC address updates (Cindy Lu) [RHEL-127007] - vdpa/mlx5: update mlx_features with driver state check (Cindy Lu) [RHEL-127007] - redhat/configs: enable CONFIG_AQTION on all archs (Michal Schmidt) [RHEL-150852] - mm/migrate: fix sleep in atomic for large folios and buffer heads (Ming Lei) [RHEL-144763] - fs/ext4: use sleeping version of sb_find_get_block() (Ming Lei) [RHEL-144763] - fs/jbd2: use sleeping version of __find_get_block() (Ming Lei) [RHEL-144763] - fs/ocfs2: use sleeping version of __find_get_block() (Ming Lei) [RHEL-144763] - fs/buffer: use sleeping version of __find_get_block() (Ming Lei) [RHEL-144763] - fs/buffer: introduce sleeping flavors for pagecache lookups (Ming Lei) [RHEL-144763] - fs/buffer: split locking for pagecache lookups (Ming Lei) [RHEL-144763] - fscrypt: fix left shift underflow when inode->i_blkbits > PAGE_SHIFT (Ming Lei) [RHEL-144763] - block: reject bs > ps block devices when THP is disabled (Ming Lei) [RHEL-144763] - md: init queue_limits->max_hw_wzeroes_unmap_sectors parameter (Ming Lei) [RHEL-144763] - block: don't silently ignore metadata for sync read/write (Ming Lei) [RHEL-144763] - bio: use memzero_page() in bio_truncate() (Ming Lei) [RHEL-144763] - drbd: init queue_limits->max_hw_wzeroes_unmap_sectors parameter (Ming Lei) [RHEL-144763] - ext4: add FALLOC_FL_WRITE_ZEROES support (Ming Lei) [RHEL-144763] - block: add FALLOC_FL_WRITE_ZEROES support (Ming Lei) [RHEL-144763] - block: factor out common part in blkdev_fallocate() (Ming Lei) [RHEL-144763] - fs: introduce FALLOC_FL_WRITE_ZEROES to fallocate (Ming Lei) [RHEL-144763] - dm: clear unmap write zeroes limits when disabling write zeroes (Ming Lei) [RHEL-144763] - scsi: sd: set max_hw_wzeroes_unmap_sectors if device supports SD_ZERO_*_UNMAP (Ming Lei) [RHEL-144763] - nvmet: set WZDS and DRB if device enables unmap write zeroes operation (Ming Lei) [RHEL-144763] - nvme: set max_hw_wzeroes_unmap_sectors if device supports DEAC bit (Ming Lei) [RHEL-144763] - block: introduce max_{hw|user}_wzeroes_unmap_sectors to queue limits (Ming Lei) [RHEL-144763] - ublk: use READ_ONCE() to read struct ublksrv_ctrl_cmd (Ming Lei) [RHEL-144763] - block: don't use strcpy to copy blockdev name (Ming Lei) [RHEL-144763] - block: allow IOC_PR_READ_* ioctls with BLK_OPEN_READ (Ming Lei) [RHEL-144763] - block: fix EOD return for device with nr_sectors == 0 (Ming Lei) [RHEL-144763] - block: change blk_get_meta_cap() stub return -ENOIOCTLCMD (Ming Lei) [RHEL-144763] - block: fix lbmd_guard_tag_type assignment in FS_IOC_GETLBMD_CAP (Ming Lei) [RHEL-144763] - block: fix FS_IOC_GETLBMD_CAP parsing in blkdev_common_ioctl() (Ming Lei) [RHEL-144763] - ata: libata-core: Quirk INTEL SSDSC2KG480G8 max_sectors (Ming Lei) [RHEL-144763] - ata: libata: Add libata.force parameter max_sec (Ming Lei) [RHEL-144763] - ata: libata: Add support to parse equal sign in libata.force (Ming Lei) [RHEL-144763] - ata: libata: Change libata.force to use the generic ATA_QUIRK_MAX_SEC quirk (Ming Lei) [RHEL-144763] - ata: libata: Add ata_force_get_fe_for_dev() helper (Ming Lei) [RHEL-144763] - ata: libata: Add ATA_QUIRK_MAX_SEC and convert all device quirks (Ming Lei) [RHEL-144763] - ata: libata-core: Quirk DELLBOSS VD max_sectors (Ming Lei) [RHEL-144763] - loop: revert exclusive opener loop status change (Ming Lei) [RHEL-144763] - nvmet-tcp: add bounds checks in nvmet_tcp_build_pdu_iovec (Ming Lei) [RHEL-144763] - nvme-pci: handle changing device dma map requirements (Ming Lei) [RHEL-144763] - nvme-pci: DMA unmap the correct regions in nvme_free_sgls (Ming Lei) [RHEL-144763] - Revert "rnbd-clt: fix refcount underflow in device unmap path" (Ming Lei) [RHEL-144763] - blk-mq: use BLK_POLL_ONESHOT for synchronous poll completion (Ming Lei) [RHEL-144763] - selftests/ublk: fix garbage output in foreground mode (Ming Lei) [RHEL-144763] - selftests/ublk: fix error handling for starting device (Ming Lei) [RHEL-144763] - selftests/ublk: fix IO thread idle check (Ming Lei) [RHEL-144763] - block: make the new blkzoned UAPI constants discoverable (Ming Lei) [RHEL-144763] - ublk: fix ublksrv pid handling for pid namespaces (Ming Lei) [RHEL-144763] - block: Fix an error path in disk_update_zone_resources() (Ming Lei) [RHEL-144763] - rnbd-clt: fix refcount underflow in device unmap path (Ming Lei) [RHEL-144763] - nvmet: do not copy beyond sybsysnqn string length (Ming Lei) [RHEL-144763] - null_blk: fix kmemleak by releasing references to fault configfs items (Ming Lei) [RHEL-144763] - block: zero non-PI portion of auto integrity buffer (Ming Lei) [RHEL-144763] - nvme-fc: release admin tagset if init fails (Ming Lei) [RHEL-144763] - nvme-pci: disable secondary temp for Wodposit WPBSNM8 (Ming Lei) [RHEL-144763] - ublk: fix use-after-free in ublk_partition_scan_work (Ming Lei) [RHEL-144763] - blk-mq: avoid stall during boot due to synchronize_rcu_expedited (Ming Lei) [RHEL-144763] - loop: add missing bd_abort_claiming in loop_set_status (Ming Lei) [RHEL-144763] - block: don't merge bios with different app_tags (Ming Lei) [RHEL-144763] - blk-rq-qos: Remove unlikely() hints from QoS checks (Ming Lei) [RHEL-144763] - loop: don't change loop device under exclusive opener in loop_set_status (Ming Lei) [RHEL-144763] - block, bfq: update outdated comment (Ming Lei) [RHEL-144763] - selftests/ublk: fix Makefile to rebuild on header changes (Ming Lei) [RHEL-144763] - selftests/ublk: add test for async partition scan (Ming Lei) [RHEL-144763] - ublk: scan partition in async way (Ming Lei) [RHEL-144763] - block,bfq: fix aux stat accumulation destination (Ming Lei) [RHEL-144763] - block: rnbd-clt: Fix signedness bug in init_dev() (Ming Lei) [RHEL-144763] - ublk: clean up user copy references on ublk server exit (Ming Lei) [RHEL-144763] - block: validate interval_exp integrity limit (Ming Lei) [RHEL-144763] - block: validate pi_offset integrity limit (Ming Lei) [RHEL-144763] - block: rnbd-clt: Fix leaked ID in init_dev() (Ming Lei) [RHEL-144763] - ublk: fix deadlock when reading partition table (Ming Lei) [RHEL-144763] - block: add allocation size check in blkdev_pr_read_keys() (Ming Lei) [RHEL-144763] - Documentation: admin-guide: blockdev: replace zone_capacity with zone_capacity_mb when creating devices (Ming Lei) [RHEL-144763] - zloop: use READ_ONCE() to read lo->lo_state in queue_rq path (Ming Lei) [RHEL-144763] - loop: use READ_ONCE() to read lo->lo_state without locking (Ming Lei) [RHEL-144763] - selftests: ublk: add user copy test cases (Ming Lei) [RHEL-144763] - selftests: ublk: add support for user copy to kublk (Ming Lei) [RHEL-144763] - selftests: ublk: forbid multiple data copy modes (Ming Lei) [RHEL-144763] - selftests: ublk: don't share backing files between ublk servers (Ming Lei) [RHEL-144763] - selftests: ublk: use auto_zc for PER_IO_DAEMON tests in stress_04 (Ming Lei) [RHEL-144763] - selftests: ublk: fix fio arguments in run_io_and_recover() (Ming Lei) [RHEL-144763] - selftests: ublk: remove unused ios map in seq_io.bt (Ming Lei) [RHEL-144763] - selftests: ublk: correct last_rw map type in seq_io.bt (Ming Lei) [RHEL-144763] - selftests: ublk: fix overflow in ublk_queue_auto_zc_fallback() (Ming Lei) [RHEL-144763] - block: move around bio flagging helpers (Ming Lei) [RHEL-144763] - blk-mq-dma: always initialize dma state (Ming Lei) [RHEL-144763] - blk-mq: delete task running check in blk_hctx_poll() (Ming Lei) [RHEL-144763] - block: fix cached zone reports on devices with native zone append (Ming Lei) [RHEL-144763] - ublk: don't mutate struct bio_vec in iteration (Ming Lei) [RHEL-144763] - block: prohibit calls to bio_chain_endio (Ming Lei) [RHEL-144763] - ublk: allow non-blocking ctrl cmds in IO_URING_F_NONBLOCK issue (Ming Lei) [RHEL-144763] - nvme-fabrics: add ENOKEY to no retry criteria for authentication failures (Ming Lei) [RHEL-144763] - nvme-auth: use kvfree() for memory allocated with kvcalloc() (Ming Lei) [RHEL-144763] - nvmet-tcp: use kvcalloc for commands array (Ming Lei) [RHEL-144763] - nvmet-rdma: use kvcalloc for commands and responses arrays (Ming Lei) [RHEL-144763] - nvme: fix typo error in nvme target (Ming Lei) [RHEL-144763] - nvmet-fc: use pr_* print macros instead of dev_* (Ming Lei) [RHEL-144763] - nvmet-fcloop: remove unused lsdir member. (Ming Lei) [RHEL-144763] - nvmet-fcloop: check all request and response have been processed (Ming Lei) [RHEL-144763] - nvme-fc: check all request and response have been processed (Ming Lei) [RHEL-144763] - block: fix comment for op_is_zone_mgmt() to include RESET_ALL (Ming Lei) [RHEL-144763] - block: Clear BLK_ZONE_WPLUG_PLUGGED when aborting plugged BIOs (Ming Lei) [RHEL-144763] - blk-mq: add blk_rq_nr_bvec() helper (Ming Lei) [RHEL-144763] - block: add IOC_PR_READ_RESERVATION ioctl (Ming Lei) [RHEL-144763] - block: add IOC_PR_READ_KEYS ioctl (Ming Lei) [RHEL-144763] - nvme: reject invalid pr_read_keys() num_keys values (Ming Lei) [RHEL-144763] - scsi: sd: reject invalid pr_read_keys() num_keys values (Ming Lei) [RHEL-144763] - block: enable per-cpu bio cache by default (Ming Lei) [RHEL-144763] - block: use bio_alloc_bioset for passthru IO by default (Ming Lei) [RHEL-144763] - nvme-fc: don't hold rport lock when putting ctrl (Ming Lei) [RHEL-144763] - nvme-pci: add debug message on fail to read CSTS (Ming Lei) [RHEL-144763] - nvme-pci: print error message on failure in nvme_probe (Ming Lei) [RHEL-144763] - nvmet: pci-epf: fix DMA channel debug print (Ming Lei) [RHEL-144763] - nvmet: pci-epf: move DMA initialization to EPC init callback (Ming Lei) [RHEL-144763] - nvmet: remove redundant subsysnqn field from ctrl (Ming Lei) [RHEL-144763] - nvmet: add sanity checks when freeing subsystem (Ming Lei) [RHEL-144763] - block/rnbd: correct all kernel-doc complaints (Ming Lei) [RHEL-144763] - blk-mq: use queue_hctx in blk_mq_map_queue_type (Ming Lei) [RHEL-144763] - sbitmap: fix all kernel-doc warnings (Ming Lei) [RHEL-144763] - ublk: add helper of __ublk_fetch() (Ming Lei) [RHEL-144763] - ublk: pass const pointer to ublk_queue_is_zoned() (Ming Lei) [RHEL-144763] - ublk: refactor auto buffer register in ublk_dispatch_req() (Ming Lei) [RHEL-144763] - ublk: add `union ublk_io_buf` with improved naming (Ming Lei) [RHEL-144763] - ublk: add parameter `struct io_uring_cmd *` to ublk_prep_auto_buf_reg() (Ming Lei) [RHEL-144763] - kfifo: add kfifo_alloc_node() helper for NUMA awareness (Ming Lei) [RHEL-144763] - blk-mq: fix potential uaf for 'queue_hw_ctx' (Ming Lei) [RHEL-144763] - blk-mq: use array manage hctx map instead of xarray (Ming Lei) [RHEL-144763] - ublk: prevent invalid access with DEBUG (Ming Lei) [RHEL-144763] - s390/dasd: Use scnprintf() instead of sprintf() (Ming Lei) [RHEL-144763] - s390/dasd: Move device name formatting into separate function (Ming Lei) [RHEL-144763] - s390/dasd: Remove unnecessary debugfs_create() return checks (Ming Lei) [RHEL-144763] - s390/dasd: Fix gendisk parent after copy pair swap (Ming Lei) [RHEL-144763] - block: ignore __blkdev_issue_discard() return value (Ming Lei) [RHEL-144763] - block: fix typos in comments and strings in blk-core (Ming Lei) [RHEL-144763] - block: Remove references to __device_add_disk() (Ming Lei) [RHEL-144763] - Revert "Merge branch 'loop-aio-nowait' into for-6.19/block" (Ming Lei) [RHEL-144763] - block: use min() instead of min_t() (Ming Lei) [RHEL-144763] - zloop: clear nowait flag in workqueue context (Ming Lei) [RHEL-144763] - loop: clear nowait flag in workqueue context (Ming Lei) [RHEL-144763] - zloop: fix zone append check in zloop_rw() (Ming Lei) [RHEL-144763] - MAINTAINERS: add a maintainer for zoned block device support (Ming Lei) [RHEL-144763] - MAINTAINERS: add missing block layer user API header files (Ming Lei) [RHEL-144763] - block: remove the declaration of elevator_init_mq function (Ming Lei) [RHEL-144763] - Revert "block: consider discard merge last" (Ming Lei) [RHEL-144763] - fs: Add the __data_racy annotation to backing_dev_info.ra_pages (Ming Lei) [RHEL-144763] - block: plug attempts to batch allocate tags multiple times (Ming Lei) [RHEL-144763] - loop: add hint for handling aio via IOCB_NOWAIT (Ming Lei) [RHEL-144763] - loop: try to handle loop aio command via NOWAIT IO first (Ming Lei) [RHEL-144763] - loop: move command blkcg/memcg initialization into loop_queue_work (Ming Lei) [RHEL-144763] - loop: add lo_submit_rw_aio() (Ming Lei) [RHEL-144763] - loop: add helper lo_rw_aio_prep() (Ming Lei) [RHEL-144763] - loop: add helper lo_cmd_nr_bvec() (Ming Lei) [RHEL-144763] - drbd: turn bitmap I/O comments into regular block comments (Ming Lei) [RHEL-144763] - block: rate-limit capacity change info log (Ming Lei) [RHEL-144763] - Documentation: admin-guide: blockdev: update zloop parameters (Ming Lei) [RHEL-144763] - zloop: introduce the ordered_zone_append configuration parameter (Ming Lei) [RHEL-144763] - zloop: introduce the zone_append configuration parameter (Ming Lei) [RHEL-144763] - zloop: simplify checks for writes to sequential zones (Ming Lei) [RHEL-144763] - zloop: fail zone append operations that are targeting full zones (Ming Lei) [RHEL-144763] - zloop: make the write pointer of full zones invalid (Ming Lei) [RHEL-144763] - block/blk-throttle: Remove throtl_slice from struct throtl_data (Ming Lei) [RHEL-144763] - block/blk-throttle: drop unneeded blk_stat_enable_accounting (Ming Lei) [RHEL-144763] - block/blk-throttle: Fix throttle slice time for SSDs (Ming Lei) [RHEL-144763] - block: consider discard merge last (Ming Lei) [RHEL-144763] - floppy: fix for PAGE_SIZE != 4KB (Ming Lei) [RHEL-144763] - ps3disk: use memcpy_{from,to}_bvec index (Ming Lei) [RHEL-144763] - block-dma: properly take MMIO path (Ming Lei) [RHEL-144763] - nvme-pci: migrate to dma_map_phys instead of map_page (Ming Lei) [RHEL-144763] - block: define alloc_sched_data and free_sched_data methods for kyber (Ming Lei) [RHEL-144763] - block: use {alloc|free}_sched data methods (Ming Lei) [RHEL-144763] - block: introduce alloc_sched_data and free_sched_data elevator methods (Ming Lei) [RHEL-144763] - block: move elevator tags into struct elevator_resources (Ming Lei) [RHEL-144763] - block: unify elevator tags and type xarrays into struct elv_change_ctx (Ming Lei) [RHEL-144763] - dm: fix zone reset all operation processing (Ming Lei) [RHEL-144763] - block: fix NULL pointer dereference in disk_report_zones() (Ming Lei) [RHEL-144763] - block: fix NULL pointer dereference in blk_zone_reset_all_bio_endio() (Ming Lei) [RHEL-144763] - blk-zoned: Move code from disk_zone_wplug_add_bio() into its caller (Ming Lei) [RHEL-144763] - blk-zoned: Document disk_zone_wplug_schedule_bio_work() locking (Ming Lei) [RHEL-144763] - blk-zoned: Fix a typo in a source code comment (Ming Lei) [RHEL-144763] - null_blk: fix zone read length beyond write pointer (Ming Lei) [RHEL-144763] - blk-mq-dma: fix kernel-doc function name for integrity DMA iterator (Ming Lei) [RHEL-144763] - block: fix merging data-less bios (Ming Lei) [RHEL-144763] - ublk: return unsigned from ublk_{,un}map_io() (Ming Lei) [RHEL-144763] - ublk: remove unnecessary checks in ublk_check_and_get_req() (Ming Lei) [RHEL-144763] - block: add lockdep to queue_limits_commit_update() (Ming Lei) [RHEL-144763] - nbd: defer config unlock in nbd_genl_connect (Ming Lei) [RHEL-144763] - block: clean up indentation in blk_rq_map_iter_init() (Ming Lei) [RHEL-144763] - nbd: defer config put in recv_work (Ming Lei) [RHEL-144763] - block: introduce bdev_zone_start() (Ming Lei) [RHEL-144763] - block: refactor disk_zone_wplug_sync_wp_offset() (Ming Lei) [RHEL-144763] - block: improve blk_zone_wp_offset() (Ming Lei) [RHEL-144763] - block: don't return 1 for the fallback case in blkdev_get_zone_info (Ming Lei) [RHEL-144763] - nvme: remove virtual boundary for sgl capable devices (Ming Lei) [RHEL-144763] - block: accumulate memory segment gaps per bio (Ming Lei) [RHEL-144763] - virtio_blk: NULL out vqs to avoid double free on failed resume (Ming Lei) [RHEL-144763] - null_blk: allow byte aligned memory offsets (Ming Lei) [RHEL-144763] - null_blk: single kmap per bio segment (Ming Lei) [RHEL-144763] - null_blk: use memzero_page() (Ming Lei) [RHEL-144763] - null_blk: consistently use blk_status_t (Ming Lei) [RHEL-144763] - null_blk: simplify copy_from_nullb (Ming Lei) [RHEL-144763] - ublk: use rq_for_each_segment() for user copy (Ming Lei) [RHEL-144763] - ublk: use copy_{to,from}_iter() for user copy (Ming Lei) [RHEL-144763] - block: fix cached zone reporting after zone append was used (Ming Lei) [RHEL-144763] - block: don't leak disk->zones_cond for !disk_need_zone_resources (Ming Lei) [RHEL-144763] - xfs: use blkdev_report_zones_cached() (Ming Lei) [RHEL-144763] - block: add zone write plug condition to debugfs zone_wplugs (Ming Lei) [RHEL-144763] - block: improve zone_wplugs debugfs attribute output (Ming Lei) [RHEL-144763] - block: introduce BLKREPORTZONESV2 ioctl (Ming Lei) [RHEL-144763] - block: introduce blkdev_report_zones_cached() (Ming Lei) [RHEL-144763] - block: introduce blkdev_get_zone_info() (Ming Lei) [RHEL-144763] - block: refactor blkdev_report_zones() code (Ming Lei) [RHEL-144763] - block: track zone conditions (Ming Lei) [RHEL-144763] - block: use zone condition to determine conventional zones (Ming Lei) [RHEL-144763] - block: reorganize struct blk_zone_wplug (Ming Lei) [RHEL-144763] - block: introduce disk_report_zone() (Ming Lei) [RHEL-144763] - block: cleanup blkdev_report_zones() (Ming Lei) [RHEL-144763] - block: freeze queue when updating zone resources (Ming Lei) [RHEL-144763] - block: handle zone management operations completions (Ming Lei) [RHEL-144763] - block: make bio auto-integrity deadlock safe (Ming Lei) [RHEL-144763] - block: blocking mempool_alloc doesn't fail (Ming Lei) [RHEL-144763] - selftests: ublk: make ublk_thread thread-local variable (Ming Lei) [RHEL-144763] - selftests: ublk: set CPU affinity before thread initialization (Ming Lei) [RHEL-144763] - ublk: use struct_size() for allocation (Ming Lei) [RHEL-144763] - ublk: implement NUMA-aware memory allocation (Ming Lei) [RHEL-144763] - ublk: reorder tag_set initialization before queue allocation (Ming Lei) [RHEL-144763] - blktrace: add support for REQ_OP_WRITE_ZEROES tracing (Ming Lei) [RHEL-144763] - drbd: replace kmap() with kmap_local_page() in receiver path (Ming Lei) [RHEL-144763] - blktrace: for ftrace use correct trace format ver (Ming Lei) [RHEL-144763] - blktrace: use debug print to report dropped events (Ming Lei) [RHEL-144763] - blktrace: handle BLKTRACESETUP2 ioctl (Ming Lei) [RHEL-144763] - blktrace: trace zone write plugging operations (Ming Lei) [RHEL-144763] - blktrace: expose ZONE APPEND completions to blktrace (Ming Lei) [RHEL-144763] - blktrace: add block trace commands for zone operations (Ming Lei) [RHEL-144763] - blktrace: move ftrace blk_io_tracer to blk_io_trace2 (Ming Lei) [RHEL-144763] - blktrace: move trace_note to blk_io_trace2 (Ming Lei) [RHEL-144763] - blktrace: differentiate between blk_io_trace versions (Ming Lei) [RHEL-144763] - blktrace: add definitions for struct blk_io_trace2 (Ming Lei) [RHEL-144763] - blktrace: pass blk_user_trace2 to setup functions (Ming Lei) [RHEL-144763] - blktrace: add definitions for blk_user_trace_setup2 (Ming Lei) [RHEL-144763] - blktrace: split do_blk_trace_setup into two functions (Ming Lei) [RHEL-144763] - blktrace: change the internal action to 64bit (Ming Lei) [RHEL-144763] - blktrace: untangle if/else sequence in __blk_add_trace (Ming Lei) [RHEL-144763] - blktrace: split out relaying a blktrace event (Ming Lei) [RHEL-144763] - blktrace: factor out recording a blktrace event (Ming Lei) [RHEL-144763] - blktrace: only calculate trace length once (Ming Lei) [RHEL-144763] - block: rename min_segment_size (Ming Lei) [RHEL-144763] - blk-mq: use struct_size() in kmalloc() (Ming Lei) [RHEL-144763] - block/mq-deadline: Switch back to a single dispatch list (Ming Lei) [RHEL-144763] - block/mq-deadline: Introduce dd_start_request() (Ming Lei) [RHEL-144763] - nvme-multipath: fix lockdep WARN due to partition scan work (Ming Lei) [RHEL-144763] - MAINTAINERS: correct git location for block layer tree (Ming Lei) [RHEL-144763] - null_blk: set dma alignment to logical block size (Ming Lei) [RHEL-144763] - blk-crypto: use BLK_STS_INVAL for alignment errors (Ming Lei) [RHEL-144763] - block: make REQ_OP_ZONE_OPEN a write operation (Ming Lei) [RHEL-144763] - block: fix op_is_zone_mgmt() to handle REQ_OP_ZONE_RESET_ALL (Ming Lei) [RHEL-144763] - nvme-pci: use blk_map_iter for p2p metadata (Ming Lei) [RHEL-144763] - block: require LBA dma_alignment when using PI (Ming Lei) [RHEL-144763] - block: Remove elevator_lock usage from blkg_conf frozen operations (Ming Lei) [RHEL-144763] - blk-mq: fix stale tag depth for shared sched tags in blk_mq_update_nr_requests() (Ming Lei) [RHEL-144763] - loop: remove redundant __GFP_NOWARN flag (Ming Lei) [RHEL-144763] - block: move bio_iov_iter_get_bdev_pages to block/fops.c (Ming Lei) [RHEL-144763] - iomap: open code bio_iov_iter_get_bdev_pages (Ming Lei) [RHEL-144763] - block: rename bio_iov_iter_get_pages_aligned to bio_iov_iter_get_pages (Ming Lei) [RHEL-144763] - block: remove bio_iov_iter_get_pages (Ming Lei) [RHEL-144763] - block: Update a comment of disk statistics (Ming Lei) [RHEL-144763] - s390/dasd: enforce dma_alignment to ensure proper buffer validation (Ming Lei) [RHEL-144763] - s390/dasd: Return BLK_STS_INVAL for EINVAL from do_dasd_request (Ming Lei) [RHEL-144763] - ublk: remove redundant zone op check in ublk_setup_iod() (Ming Lei) [RHEL-144763] - nvme: Use non zero KATO for persistent discovery connections (Ming Lei) [RHEL-144763] - nvmet: add safety check for subsys lock (Ming Lei) [RHEL-144763] - nvme-core: use nvme_is_io_ctrl() for I/O controller check (Ming Lei) [RHEL-144763] - nvme-core: do ioccsz/iorcsz validation only for I/O controllers (Ming Lei) [RHEL-144763] - nvme-core: add method to check for an I/O controller (Ming Lei) [RHEL-144763] - blk-mq: Fix more tag iteration function documentation (Ming Lei) [RHEL-144763] - selftests: ublk: fix behavior when fio is not installed (Ming Lei) [RHEL-144763] - ublk: don't access ublk_queue in ublk_unmap_io() (Ming Lei) [RHEL-144763] - ublk: pass ublk_io to __ublk_complete_rq() (Ming Lei) [RHEL-144763] - ublk: don't access ublk_queue in ublk_need_complete_req() (Ming Lei) [RHEL-144763] - ublk: don't access ublk_queue in ublk_check_commit_and_fetch() (Ming Lei) [RHEL-144763] - ublk: don't pass ublk_queue to ublk_fetch() (Ming Lei) [RHEL-144763] - ublk: don't access ublk_queue in ublk_config_io_buf() (Ming Lei) [RHEL-144763] - ublk: don't access ublk_queue in ublk_check_fetch_buf() (Ming Lei) [RHEL-144763] - ublk: pass q_id and tag to __ublk_check_and_get_req() (Ming Lei) [RHEL-144763] - ublk: don't access ublk_queue in ublk_daemon_register_io_buf() (Ming Lei) [RHEL-144763] - ublk: don't access ublk_queue in ublk_register_io_buf() (Ming Lei) [RHEL-144763] - ublk: pass ublk_device to ublk_register_io_buf() (Ming Lei) [RHEL-144763] - ublk: don't dereference ublk_queue in ublk_check_and_get_req() (Ming Lei) [RHEL-144763] - ublk: don't dereference ublk_queue in ublk_ch_uring_cmd_local() (Ming Lei) [RHEL-144763] - ublk: add helpers to check ublk_device flags (Ming Lei) [RHEL-144763] - ublk: don't pass ublk_queue to __ublk_fail_req() (Ming Lei) [RHEL-144763] - ublk: don't pass q_id to ublk_queue_cmd_buf_size() (Ming Lei) [RHEL-144763] - ublk: remove ubq check in ublk_check_and_get_req() (Ming Lei) [RHEL-144763] - selftests: ublk: add test to verify that feat_map is complete (Ming Lei) [RHEL-144763] - selftests: ublk: kublk: add UBLK_F_BUF_REG_OFF_DAEMON to feat_map (Ming Lei) [RHEL-144763] - selftests: ublk: kublk: simplify feat_map definition (Ming Lei) [RHEL-144763] - blk-throttle: fix throtl_data leak during disk release (Ming Lei) [RHEL-144763] - blk-mq: Fix the blk_mq_tagset_busy_iter() documentation (Ming Lei) [RHEL-144763] - nvme-pci: Add TUXEDO IBS Gen8 to Samsung sleep quirk (Ming Lei) [RHEL-144763] - block/mq-deadline: Remove the redundant rb_entry_rq in the deadline_from_pos(). (Ming Lei) [RHEL-144763] - nvme-fc: use lock accessing port_state and rport state (Ming Lei) [RHEL-144763] - nvmet-fcloop: call done callback even when remote port is gone (Ming Lei) [RHEL-144763] - nvmet-fc: avoid scheduling association deletion twice (Ming Lei) [RHEL-144763] - nvmet-fc: move lsop put work to nvmet_fc_ls_req_op (Ming Lei) [RHEL-144763] - blk-mq: fix stale nr_requests documentation (Ming Lei) [RHEL-144763] - blk-mq: remove blk_mq_tag_update_depth() (Ming Lei) [RHEL-144763] - blk-mq: fix potential deadlock while nr_requests grown (Ming Lei) [RHEL-144763] - blk-mq-sched: add new parameter nr_requests in blk_mq_alloc_sched_tags() (Ming Lei) [RHEL-144763] - blk-mq: split bitmap grow and resize case in blk_mq_update_nr_requests() (Ming Lei) [RHEL-144763] - blk-mq: cleanup shared tags case in blk_mq_update_nr_requests() (Ming Lei) [RHEL-144763] - blk-mq: convert to serialize updating nr_requests with update_nr_hwq_lock (Ming Lei) [RHEL-144763] - blk-mq: check invalid nr_requests in queue_requests_store() (Ming Lei) [RHEL-144763] - blk-mq: remove useless checkings in blk_mq_update_nr_requests() (Ming Lei) [RHEL-144763] - blk-mq: remove useless checking in queue_requests_store() (Ming Lei) [RHEL-144763] - ublk: consolidate nr_io_ready and nr_queues_ready (Ming Lei) [RHEL-144763] - block: fix ordering of recursive split IO (Ming Lei) [RHEL-144763] - block: skip unnecessary checks for split bio (Ming Lei) [RHEL-144763] - blk-crypto: convert to use bio_submit_split_bioset() (Ming Lei) [RHEL-144763] - block: factor out a helper bio_submit_split_bioset() (Ming Lei) [RHEL-144763] - blk-crypto: fix missing blktrace bio split events (Ming Lei) [RHEL-144763] - blk-mq: add QUEUE_FLAG_BIO_ISSUE_TIME (Ming Lei) [RHEL-144763] - block: initialize bio issue time in blk_mq_submit_bio() (Ming Lei) [RHEL-144763] - block: cleanup bio_issue (Ming Lei) [RHEL-144763] - blk-map: provide the bdev to bio if one exists (Ming Lei) [RHEL-144763] - blk-mq-dma: bring back p2p request flags (Ming Lei) [RHEL-144763] - blk-integrity: enable p2p source and destination (Ming Lei) [RHEL-144763] - iov_iter: remove iov_iter_is_aligned (Ming Lei) [RHEL-144763] - blk-integrity: use simpler alignment check (Ming Lei) [RHEL-144763] - block: remove bdev_iter_is_aligned (Ming Lei) [RHEL-144763] - iomap: simplify direct io validity check (Ming Lei) [RHEL-144763] - block: simplify direct io validity check (Ming Lei) [RHEL-144763] - block: align the bio after building it (Ming Lei) [RHEL-144763] - block: add size alignment to bio_iov_iter_get_pages (Ming Lei) [RHEL-144763] - block: check for valid bio while splitting (Ming Lei) [RHEL-144763] - drivers/block: WQ_PERCPU added to alloc_workqueue users (Ming Lei) [RHEL-144763] - drivers/block: replace use of system_unbound_wq with system_dfl_wq (Ming Lei) [RHEL-144763] - drivers/block: replace use of system_wq with system_percpu_wq (Ming Lei) [RHEL-144763] - block: floppy: Replace kmalloc() + copy_from_user() with memdup_user() (Ming Lei) [RHEL-144763] - block: remove the bi_inline_vecs variable sized array from struct bio (Ming Lei) [RHEL-144763] - block: add a bio_init_inline helper (Ming Lei) [RHEL-144763] - blk-throttle: fix access race during throttle policy activation (Ming Lei) [RHEL-144763] - null_blk: Fix the description of the cache_size module argument (Ming Lei) [RHEL-144763] - ublk: inline __ublk_ch_uring_cmd() (Ming Lei) [RHEL-144763] - block: use int to store blk_stack_limits() return value (Ming Lei) [RHEL-144763] - blk-mq: check kobject state_in_sysfs before deleting in blk_mq_unregister_hctx (Ming Lei) [RHEL-144763] - floppy: Sort headers alphabetically (Ming Lei) [RHEL-144763] - floppy: Replace custom SZ_64K constant (Ming Lei) [RHEL-144763] - floppy: Remove unused CROSS_64KB() macro from arch/ code (Ming Lei) [RHEL-144763] - block: Move a misplaced comment in queue_wb_lat_store() (Ming Lei) [RHEL-144763] - nvme-pci: convert metadata mapping to dma iter (Ming Lei) [RHEL-144763] - nvme-pci: create common sgl unmapping helper (Ming Lei) [RHEL-144763] - blk-integrity: use iterator for mapping sg (Ming Lei) [RHEL-144763] - blk-mq-dma: add scatter-less integrity data DMA mapping (Ming Lei) [RHEL-144763] - blk-mq-dma: move common dma start code to a helper (Ming Lei) [RHEL-144763] - blk-mq: remove REQ_P2PDMA flag (Ming Lei) [RHEL-144763] - blk-mq-dma: require unmap caller provide p2p map type (Ming Lei) [RHEL-144763] - blk-mq-dma: provide the bio_vec array being iterated (Ming Lei) [RHEL-144763] - blk-mq-dma: create blk_map_iter type (Ming Lei) [RHEL-144763] - block: switch ->getgeo() to struct gendisk (Ming Lei) [RHEL-144763] - scsi: switch ->bios_param() to passing gendisk (Ming Lei) [RHEL-144763] - scsi: switch scsi_bios_ptable() and scsi_partsize() to gendisk (Ming Lei) [RHEL-144763] - nvme: fix PI insert on write (Ming Lei) [RHEL-144763] - blk-zoned: Fix a lockdep complaint about recursive locking (Ming Lei) [RHEL-144763] - loop: fix zero sized loop for block special file (Ming Lei) [RHEL-144763] - block: tone down bio_check_eod (Ming Lei) [RHEL-144763] - loop: use vfs_getattr_nosec for accurate file size (Ming Lei) [RHEL-144763] - loop: Consolidate size calculation logic into lo_calculate_size() (Ming Lei) [RHEL-144763] - block: remove newlines from the warnings in blk_validate_integrity_limits (Ming Lei) [RHEL-144763] - block: handle pi_tuple_size in queue_limits_stack_integrity (Ming Lei) [RHEL-144763] - fs: add ioctl to query metadata and protection info capabilities (Ming Lei) [RHEL-144763] - nvme: set pi_offset only when checksum type is not BLK_INTEGRITY_CSUM_NONE (Ming Lei) [RHEL-144763] - block: introduce pi_tuple_size field in blk_integrity (Ming Lei) [RHEL-144763] - block: rename tuple_size field in blk_integrity to metadata_size (Ming Lei) [RHEL-144763] - block: always allocate integrity buffer when required (Ming Lei) [RHEL-144763] - Docs: admin-guide: Correct spelling mistake (Ming Lei) [RHEL-144763] - blk-wbt: doc: Update the doc of the wbt_lat_usec interface (Ming Lei) [RHEL-144763] - blk-wbt: Eliminate ambiguity in the comments of struct rq_wb (Ming Lei) [RHEL-144763] - blk-wbt: Optimize wbt_done() for non-throttled writes (Ming Lei) [RHEL-144763] - blk-cgroup: remove redundant __GFP_NOWARN (Ming Lei) [RHEL-144763] - block, bfq: remove redundant __GFP_NOWARN (Ming Lei) [RHEL-144763] - drbd: Remove the open-coded page pool (Ming Lei) [RHEL-144763] - nvmet: exit debugfs after discovery subsystem exits (Ming Lei) [RHEL-144763] - block, bfq: Reorder struct bfq_iocq_bfqq_data (Ming Lei) [RHEL-144763] - block: ensure discard_granularity is zero when discard is not supported (Ming Lei) [RHEL-144763] - block: Fix default IO priority if there is no IO context (Ming Lei) [RHEL-144763] - nvme: fix various comment typos (Ming Lei) [RHEL-144763] - nvme-pci: fix leak on sgl setup error (Ming Lei) [RHEL-144763] - nvmet: initialize discovery subsys after debugfs is initialized (Ming Lei) [RHEL-144763] - nvme: add capability to connect to an administrative controller (Ming Lei) [RHEL-144763] - nvmet: add support for FDP in fabrics passthru path (Ming Lei) [RHEL-144763] - blk-ioc: don't hold queue_lock for ioc_lookup_icq() (Ming Lei) [RHEL-144763] - block: Enforce power-of-2 physical block size (Ming Lei) [RHEL-144763] - block: avoid possible overflow for chunk_sectors check in blk_stack_limits() (Ming Lei) [RHEL-144763] - block: Improve read ahead size for rotational devices (Ming Lei) [RHEL-144763] - cdrom: Call cdrom_mrw_exit from cdrom_release function (Ming Lei) [RHEL-144763] - sunvdc: Balance device refcount in vdc_port_mpgroup_check (Ming Lei) [RHEL-144763] - nvme-pci: try function level reset on init failure (Ming Lei) [RHEL-144763] - nvmet: pci-epf: Do not complete commands twice if nvmet_req_init() fails (Ming Lei) [RHEL-144763] - nvme: fix typo in status code constant for self-test in progress (Ming Lei) [RHEL-144763] - nvmet: remove redundant assignment of error code in nvmet_ns_enable() (Ming Lei) [RHEL-144763] - nvme: fix incorrect variable in io cqes error message (Ming Lei) [RHEL-144763] - nvme: fix multiple spelling and grammar issues in host drivers (Ming Lei) [RHEL-144763] - block: fix blk_zone_append_update_request_bio() kernel-doc (Ming Lei) [RHEL-144763] - block: add trace messages to zone write plugging (Ming Lei) [RHEL-144763] - block: add tracepoint for blkdev_zone_mgmt (Ming Lei) [RHEL-144763] - block: add tracepoint for blk_zone_update_request_bio (Ming Lei) [RHEL-144763] - block: split blk_zone_update_request_bio into two functions (Ming Lei) [RHEL-144763] - blktrace: add zoned block commands to blk_fill_rwbs (Ming Lei) [RHEL-144763] - block: floppy: Fix uninitialized use of outparam (Ming Lei) [RHEL-144763] - loop: Avoid updating block size under exclusive owner (Ming Lei) [RHEL-144763] - nvme-pci: don't allocate dma_vec for IOVA mappings (Ming Lei) [RHEL-144763] - drbd: add missing kref_get in handle_write_conflicts (Ming Lei) [RHEL-144763] - block: mtip32xx: Fix usage of dma_map_sg() (Ming Lei) [RHEL-144763] - nvme-pci: fix dma unmapping when using PRPs and not using the IOVA mapping (Ming Lei) [RHEL-144763] - zram: pass buffer offset to zcomp_available_show() (Ming Lei) [RHEL-144763] - block: zram: replace scnprintf() with sysfs_emit() in *_show() functions (Ming Lei) [RHEL-144763] - virtio: blk/scsi: use block layer helpers to calculate num of queues (Ming Lei) [RHEL-144763] - scsi: use block layer helpers to calculate num of queues (Ming Lei) [RHEL-144763] - nvme-pci: use block layer helpers to calculate num of queues (Ming Lei) [RHEL-144763] - lib/group_cpus: Let group_cpu_evenly() return the number of initialized masks (Ming Lei) [RHEL-144763] - nvme-pci: rework the build time assert for NVME_MAX_NR_DESCRIPTORS (Ming Lei) [RHEL-144763] - nvme-pci: replace NVME_MAX_KB_SZ with NVME_MAX_BYTE (Ming Lei) [RHEL-144763] - nvme-pci: convert the data mapping to blk_rq_dma_map (Ming Lei) [RHEL-144763] - nvme-pci: remove superfluous arguments (Ming Lei) [RHEL-144763] - nvme-pci: merge the simple PRP and SGL setup into a common helper (Ming Lei) [RHEL-144763] - nvme-pci: refactor nvme_pci_use_sgls (Ming Lei) [RHEL-144763] - block: add scatterlist-less DMA mapping helpers (Ming Lei) [RHEL-144763] - block: don't merge different kinds of P2P transfers in a single bio (Ming Lei) [RHEL-144763] - block: Increase BLK_DEF_MAX_SECTORS_CAP (Ming Lei) [RHEL-144763] - block/bdev: lift block size restrictions to 64k (Ming Lei) [RHEL-144763] - block/bdev: enable large folio support for large logical block sizes (Ming Lei) [RHEL-144763] - fs/buffer fs/mpage: remove large folio restriction (Ming Lei) [RHEL-144763] - fs/mpage: use blocks_per_folio instead of blocks_per_page (Ming Lei) [RHEL-144763] - fs/mpage: avoid negative shift for large blocksize (Ming Lei) [RHEL-144763] - fs/buffer: remove batching from async read (Ming Lei) [RHEL-144763] - fs/buffer: simplify block_read_full_folio() with bh_offset() (Ming Lei) [RHEL-144763] - block: don't autoload drivers on stat (Ming Lei) [RHEL-144763] - platform/x86/amd/pmf: Use ring buffer to store custom BIOS input values (Steve Best) [RHEL-130539] - platform/x86/amd/pmf: Add BIOS_INPUTS_MAX macro to replace hardcoded array size (Steve Best) [RHEL-130539] - platform/x86/amd/pmf: Use explicit SET_CMD/GET_CMD flags in amd_pmf_send_cmd() (Steve Best) [RHEL-130539] - crypto: ccp - Send PSP_CMD_TEE_RING_DESTROY when PSP_CMD_TEE_RING_INIT fails (Steve Best) [RHEL-130538] - crypto: ccp - Factor out ring destroy handling to a helper (Steve Best) [RHEL-130538] - crypto: ccp - Add an S4 restore flow (Steve Best) [RHEL-130538] - crypto: ccp - Declare PSP dead if PSP_CMD_TEE_RING_INIT fails (Steve Best) [RHEL-130538] - platform/x86/amd/pmf: Prevent TEE errors after hibernate (Steve Best) [RHEL-130538] - redhat: genlog: add new JIRA cloud server hostname (Jan Stancek) - nfsd: use correct loop termination in nfsd4_revoke_states() (Olga Kornievskaia) [RHEL-152916] - nfsd: check that server is running in unlock_filesystem (Olga Kornievskaia) [RHEL-152916] * Tue Mar 10 2026 Alexandra Hájková [6.12.0-213.el10] - powerpc/smp: Expose die_id and die_cpumask (Mamatha Inamdar) [RHEL-138728] - smb: client: fix broken multichannel with krb5+signing (Paulo Alcantara) [RHEL-151838] - smb: client: fix regression with signing (Paulo Alcantara) [RHEL-151838] - allow finish_no_open(file, ERR_PTR(-E...)) (Roberto Bergantinos Corpas) [RHEL-153335] - redhat/configs: automotive: enable NVMEM_S32G_OCOTP (Jared Kangas) [RHEL-152643] - arm64: dts: s32g: Add device tree information for the OCOTP driver (Jared Kangas) [RHEL-152643] - nvmem: s32g-ocotp: Add driver for S32G OCOTP (Jared Kangas) [RHEL-152643] - dt-bindings: nvmem: Add the nxp,s32g-ocotp yaml file (Jared Kangas) [RHEL-152643] - redhat/scripts: remove remnants of git notes usage and dead code (Jan Stancek) - vsock: document write-once behavior of the child_ns_mode sysctl (Stefano Garzarella) [RHEL-151754] - vsock: lock down child_ns_mode as write-once (Stefano Garzarella) [RHEL-151754] - vsock: Use container_of() to get net namespace in sysctl handlers (Stefano Garzarella) [RHEL-151754] - vsock: document namespace mode sysctls (Stefano Garzarella) [RHEL-151754] - nvme: fix memory leak in quirks_param_set() (Maurizio Lombardi) [RHEL-148483] - ice: dpll: fix rclk pin state get and misplaced header macros (Ivan Vecera) [RHEL-146369] - ice: dpll: Support E825-C SyncE and dynamic pin discovery (Ivan Vecera) [RHEL-146369] - drivers: Add support for DPLL reference count tracking (Ivan Vecera) [RHEL-146369] - redhat: configs: Enable CONFIG_DPLL_REFCNT_TRACKER for debug (Ivan Vecera) [RHEL-146369] - dpll: Add reference count tracking support (Ivan Vecera) [RHEL-146369] - dpll: Enhance and consolidate reference counting logic (Ivan Vecera) [RHEL-146369] - dpll: zl3073x: Add support for mux pin type (Ivan Vecera) [RHEL-146369] - dpll: Support dynamic pin index allocation (Ivan Vecera) [RHEL-146369] - dpll: Add notifier chain for dpll events (Ivan Vecera) [RHEL-146369] - dpll: zl3073x: Associate pin with fwnode handle (Ivan Vecera) [RHEL-146369] - dpll: Allow associating dpll pin with a firmware node (Ivan Vecera) [RHEL-146369] - dpll: zl3073x: Fix output pin phase adjustment sign (Ivan Vecera) [RHEL-146257] - redhat: set defaults for RHEL 10.2 (Scott Weaver) * Mon Mar 02 2026 CKI KWF Bot [6.12.0-212.el10] - cifs: some missing initializations on replay (Paulo Alcantara) [RHEL-150776] - cifs: remove unnecessary tracing after put tcon (Paulo Alcantara) [RHEL-150776] - smb: client: fix data corruption due to racy lease checks (Paulo Alcantara) [RHEL-150776] - smb: client: fix regression with mount options parsing (Paulo Alcantara) [RHEL-150776] - redhat: bump RHEL_MINOR for 10.3 (Alexandra Hájková) - net: use NUMA drop counters for softnet_data.dropped (Guillaume Nault) [RHEL-145975] - inet: raw: add drop_counters to raw sockets (Guillaume Nault) [RHEL-145975] - udp: add drop_counters to udp socket (Guillaume Nault) [RHEL-145975] - net: add sk->sk_drop_counters (Guillaume Nault) [RHEL-145975] - net: add sk_drops_skbadd() helper (Guillaume Nault) [RHEL-145975] - net: add sk_drops_read(), sk_drops_inc() and sk_drops_reset() helpers (Guillaume Nault) [RHEL-145975] - NFSD: Fix permission check for read access to executable-only files (Scott Mayhew) [RHEL-135095] - fs/proc/task_mmu: fix PAGE_IS_PFNZERO detection for the huge zero folio (Audra Mitchell) [RHEL-97168] - configs: riscv: Enable StarFive and ESWIN drivers (Jennifer Berringer) [RHEL-129062] - riscv: Fix memory leak in module_frob_arch_sections() (Jennifer Berringer) [RHEL-129062] - reset: eswin: Add eic7700 reset driver (Jennifer Berringer) [RHEL-129062] - dt-bindings: reset: eswin: Documentation for eic7700 SoC (Jennifer Berringer) [RHEL-129062] - riscv: dts: eswin: add HiFive Premier P550 board device tree (Jennifer Berringer) [RHEL-129062] - riscv: dts: add initial support for EIC7700 SoC (Jennifer Berringer) [RHEL-129062] - dt-bindings: riscv: Add SiFive HiFive Premier P550 board (Jennifer Berringer) [RHEL-129062] - riscv: Add Kconfig option for ESWIN platforms (Jennifer Berringer) [RHEL-129062] - riscv: add Andes SoC family Kconfig support (Jennifer Berringer) [RHEL-129062] - pinctrl: eswin: Fix regulator error check and Kconfig dependency (Jennifer Berringer) [RHEL-129062] - pinctrl: eswin: Fix unsigned comparison to less than zero issue (Jennifer Berringer) [RHEL-129062] - pinctrl: eswin: Add EIC7700 pinctrl driver (Jennifer Berringer) [RHEL-129062] - riscv: module: Optimize PLT/GOT entry counting (Jennifer Berringer) [RHEL-129062] - riscv: module: Allocate PLT entries for R_RISCV_PLT32 (Jennifer Berringer) [RHEL-129062] - riscv: module: Fix out-of-bounds relocation access (Jennifer Berringer) [RHEL-129062] {CVE-2025-37975} - cache: sifive_ccache: Add ESWIN EIC7700 support (Jennifer Berringer) [RHEL-129062] ### # The following Emacs magic makes C-c C-e use UTC dates. # Local Variables: # rpm-change-log-uses-utc: t # End: ###