# All Global changes to build and install go here. # Per the below section about __spec_install_pre, any rpm # environment changes that affect %%install need to go # here before the %%install macro is pre-built. # Disable frame pointers %undefine _include_frame_pointers # Disable LTO in userspace packages. %global _lto_cflags %{nil} # Option to enable compiling with clang instead of gcc. %bcond_with toolchain_clang %if %{with toolchain_clang} %global toolchain clang %endif # Compile the kernel with LTO (only supported when building with clang). %bcond_with clang_lto %if %{with clang_lto} && %{without toolchain_clang} {error:clang_lto requires --with toolchain_clang} %endif # RPM macros strip everything in BUILDROOT, either with __strip # or find-debuginfo.sh. Make use of __spec_install_post override # and save/restore binaries we want to package as unstripped. %define buildroot_unstripped %{_builddir}/root_unstripped %define buildroot_save_unstripped() \ (cd %{buildroot}; cp -rav --parents -t %{buildroot_unstripped}/ %1 || true) \ %{nil} %define __restore_unstripped_root_post \ echo "Restoring unstripped artefacts %{buildroot_unstripped} -> %{buildroot}" \ cp -rav %{buildroot_unstripped}/. %{buildroot}/ \ %{nil} # The kernel's %%install section is special # Normally the %%install section starts by cleaning up the BUILD_ROOT # like so: # # %%__spec_install_pre %%{___build_pre}\ # [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "${RPM_BUILD_ROOT}"\ # mkdir -p `dirname "$RPM_BUILD_ROOT"`\ # mkdir "$RPM_BUILD_ROOT"\ # %%{nil} # # But because of kernel variants, the %%build section, specifically # BuildKernel(), moves each variant to its final destination as the # variant is built. This violates the expectation of the %%install # section. As a result we snapshot the current env variables and # purposely leave out the removal section. All global wide changes # should be added above this line otherwise the %%install section # will not see them. %global __spec_install_pre %{___build_pre} # Replace '-' with '_' where needed so that variants can use '-' in # their name. %define uname_suffix() %{lua: local flavour = rpm.expand('%{?1:+%{1}}') flavour = flavour:gsub('-', '_') if flavour ~= '' then print(flavour) end } # This returns the main kernel tied to a debug variant. For example, # kernel-debug is the debug version of kernel, so we return an empty # string. However, kernel-64k-debug is the debug version of kernel-64k, # in this case we need to return "64k", and so on. This is used in # macros below where we need this for some uname based requires. %define uname_variant() %{lua: local flavour = rpm.expand('%{?1:%{1}}') _, _, main, sub = flavour:find("(%w+)-(.*)") if main then print("+" .. main) end } # At the time of this writing (2019-03), RHEL8 packages use w2.xzdio # compression for rpms (xz, level 2). # Kernel has several large (hundreds of mbytes) rpms, they take ~5 mins # to compress by single-threaded xz. Switch to threaded compression, # and from level 2 to 3 to keep compressed sizes close to "w2" results. # # NB: if default compression in /usr/lib/rpm/redhat/macros ever changes, # this one might need tweaking (e.g. if default changes to w3.xzdio, # change below to w4T.xzdio): # # This is disabled on i686 as it triggers oom errors %ifnarch i686 %define _binary_payload w3T.xzdio %endif Summary: The Linux kernel %if 0%{?fedora} %define secure_boot_arch x86_64 %else %define secure_boot_arch x86_64 aarch64 s390x ppc64le %endif # Signing for secure boot authentication %ifarch %{secure_boot_arch} %global signkernel 1 %else %global signkernel 0 %endif # Sign modules on all arches %global signmodules 1 # 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 130 %define kversion 6 %define tarfile_release 6.12.0-130.el10 # This is needed to do merge window version magic %define patchlevel 12 # This allows pkg_release to have configurable %%{?dist} tag %define specrelease 130%{?buildid}%{?dist} # This defines the kabi tarball version %define kabiversion 6.12.0-130.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: libbpf-devel >= 0.6.0-1 BuildRequires: libbabeltrace-devel BuildRequires: libtraceevent-devel %ifnarch s390x BuildRequires: numactl-devel %endif %ifarch aarch64 BuildRequires: opencsd-devel >= 1.0.0 %endif %endif %if %{with_tools} BuildRequires: python3-docutils BuildRequires: gettext ncurses-devel BuildRequires: libcap-devel libcap-ng-devel # The following are rtla requirements BuildRequires: python3-docutils BuildRequires: libtraceevent-devel BuildRequires: libtracefs-devel BuildRequires: libbpf-devel BuildRequires: bpftool BuildRequires: clang %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 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 redhatsecureboot501 %endif %ifarch s390x %define pesign_name_0 redhatsecureboot302 %endif %ifarch ppc64le %define pesign_name_0 redhatsecureboot701 %endif %endif # rhel && !eln %endif # signkernel %endif Source20: mod-denylist.sh Source21: mod-sign.sh Source22: filtermods.py %define modsign_cmd %{SOURCE21} %if 0%{?include_rhel} 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 Source86: dracut-virt.conf Source87: flavors Source151: uki_create_addons.py Source152: uki_addons.json Source100: rheldup3.x509 Source101: rhelkpatch1.x509 Source102: nvidiagpuoot001.x509 Source103: rhelimaca1.x509 Source104: rhelima.x509 Source105: rhelima_centos.x509 Source106: fedoraimaca.x509 %if 0%{?fedora}%{?eln} %define ima_ca_cert %{SOURCE106} %endif %if 0%{?rhel} && !0%{?eln} %define ima_ca_cert %{SOURCE103} # rhel && !eln %endif %if 0%{?centos} %define ima_signing_cert %{SOURCE105} %else %define ima_signing_cert %{SOURCE104} %endif %define ima_cert_name ima.cer Source200: check-kabi Source201: Module.kabi_aarch64 Source202: Module.kabi_ppc64le Source203: Module.kabi_s390x Source204: Module.kabi_x86_64 Source205: Module.kabi_riscv64 Source210: Module.kabi_dup_aarch64 Source211: Module.kabi_dup_ppc64le Source212: Module.kabi_dup_s390x Source213: Module.kabi_dup_x86_64 Source214: Module.kabi_dup_riscv64 Source300: kernel-abi-stablelists-%{kabiversion}.tar.xz Source301: kernel-kabi-dw-%{kabiversion}.tar.xz %if 0%{include_rt} %if 0%{include_rhel} Source474: %{name}-aarch64-rt-rhel.config Source475: %{name}-aarch64-rt-debug-rhel.config Source476: %{name}-aarch64-rt-64k-rhel.config Source477: %{name}-aarch64-rt-64k-debug-rhel.config Source478: %{name}-x86_64-rt-rhel.config Source479: %{name}-x86_64-rt-debug-rhel.config %endif %if 0%{include_fedora} Source478: %{name}-aarch64-rt-fedora.config Source479: %{name}-aarch64-rt-debug-fedora.config Source480: %{name}-aarch64-rt-64k-fedora.config Source481: %{name}-aarch64-rt-64k-debug-fedora.config Source482: %{name}-x86_64-rt-fedora.config Source483: %{name}-x86_64-rt-debug-fedora.config Source484: %{name}-riscv64-rt-fedora.config Source485: %{name}-riscv64-rt-debug-fedora.config %endif %endif %if %{include_automotive} %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.*|.*%%{_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 # 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 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"} # RHEL/CentOS specific .SBAT entries %if 0%{?centos} SBATsuffix="centos" %else %if 0%{?fedora} SBATsuffix="fedora" %else SBATsuffix="rhel" %endif %endif SBAT=$(cat <<- EOF linux,1,Red Hat,linux,$KernelVer,mailto:secalert@redhat.com linux.$SBATsuffix,1,Red Hat,linux,$KernelVer,mailto:secalert@redhat.com kernel-uki-virt.$SBATsuffix,1,Red Hat,kernel-uki-virt,$KernelVer,mailto:secalert@redhat.com EOF ) ADDONS_SBAT=$(cat <<- EOF sbat,1,SBAT Version,sbat,1,https://github.com/rhboot/shim/blob/main/SBAT.md kernel-uki-virt-addons.$SBATsuffix,1,Red Hat,kernel-uki-virt-addons,$KernelVer,mailto:secalert@redhat.com EOF ) KernelUnifiedImageDir="$RPM_BUILD_ROOT/lib/modules/$KernelVer" KernelUnifiedImage="$KernelUnifiedImageDir/$InstallName-virt.efi" mkdir -p $KernelUnifiedImageDir dracut --conf=%{SOURCE86} \ --confdir=$(mktemp -d) \ --verbose \ --kver "$KernelVer" \ --kmoddir "$RPM_BUILD_ROOT/lib/modules/$KernelVer/" \ --logfile=$(mktemp) \ --uefi \ %if 0%{?rhel} && !0%{?eln} --sbat "$SBAT" \ %endif --kernel-image $(realpath $KernelImage) \ --kernel-cmdline 'console=tty0 console=ttyS0' \ $KernelUnifiedImage KernelAddonsDirOut="$KernelUnifiedImage.extra.d" mkdir -p $KernelAddonsDirOut python3 %{SOURCE151} %{SOURCE152} $KernelAddonsDirOut virt %{primary_target} %{_target_cpu} "$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 %else UKI_secureboot_name=redhatsecureboot504 %endif UKI_secureboot_cert=%{_datadir}/pki/sb-certs/secureboot-uki-virt-%{_arch}.cer %pesign -s -i $KernelUnifiedImage -o $KernelUnifiedImage.signed -a %{secureboot_ca_0} -c $UKI_secureboot_cert -n $UKI_secureboot_name # 0%{?fedora}%{?eln} %endif if [ ! -s $KernelUnifiedImage.signed ]; then echo "pesigning failed" exit 1 fi mv $KernelUnifiedImage.signed $KernelUnifiedImage for addon in "$KernelAddonsDirOut"/*; do %pesign -s -i $addon -o $addon.signed -a %{secureboot_ca_0} -c %{secureboot_key_0} -n %{pesign_name_0} rm -f $addon mv $addon.signed $addon done # signkernel %endif # hmac sign the UKI for FIPS KernelUnifiedImageHMAC="$KernelUnifiedImageDir/.$InstallName-virt.efi.hmac" %{log_msg "hmac sign the UKI for FIPS"} %{log_msg "Creating hmac file: $KernelUnifiedImageHMAC"} (cd $KernelUnifiedImageDir && sha512hmac $InstallName-virt.efi) > $KernelUnifiedImageHMAC; # with_efiuki %endif : # in case of empty block fi # "$Variant" == "rt" || "$Variant" == "rt-debug" || "$Variant" == "automotive" || "$Variant" == "automotive-debug" # # Generate the modules files lists # move_kmod_list() { local module_list="$1" local subdir_name="$2" mkdir -p "$RPM_BUILD_ROOT/lib/modules/$KernelVer/$subdir_name" set +x while read -r kmod; do local target_file="$RPM_BUILD_ROOT/lib/modules/$KernelVer/$subdir_name/$kmod" local target_dir="${target_file%/*}" mkdir -p "$target_dir" mv "$RPM_BUILD_ROOT/lib/modules/$KernelVer/kernel/$kmod" "$target_dir" done < <(sed -e 's|^kernel/||' "$module_list") set -x } create_module_file_list() { # subdirectory within /lib/modules/$KernelVer where kmods should go local module_subdir="$1" # kmod list with relative paths produced by filtermods.py local relative_kmod_list="$2" # list with absolute paths to kmods and other files to be included local absolute_file_list="$3" # if 1, this adds also all kmod directories to absolute_file_list local add_all_dirs="$4" local run_mod_deny="$5" if [ "$module_subdir" != "kernel" ]; then # move kmods into subdirs if needed (internal, partner, extra,..) move_kmod_list $relative_kmod_list $module_subdir fi # make kmod paths absolute sed -e 's|^kernel/|/lib/modules/'$KernelVer'/'$module_subdir'/|' $relative_kmod_list > $absolute_file_list if [ "$run_mod_deny" -eq 1 ]; then # run deny-mod script, this adds blacklist-* files to absolute_file_list %{SOURCE20} "$RPM_BUILD_ROOT" lib/modules/$KernelVer $absolute_file_list fi %if %{zipmodules} # deny-mod script works with kmods as they are now (not compressed), # but if they will be we need to add compext to all sed -i %{?zipsed} $absolute_file_list %endif # add also dir for the case when there are no kmods # "kernel" subdir is covered in %files section, skip it here if [ "$module_subdir" != "kernel" ]; then echo "%dir /lib/modules/$KernelVer/$module_subdir" >> $absolute_file_list fi if [ "$add_all_dirs" -eq 1 ]; then (cd $RPM_BUILD_ROOT; find lib/modules/$KernelVer/kernel -mindepth 1 -type d | sort -n) > ../module-dirs.list sed -e 's|^lib|%dir /lib|' ../module-dirs.list >> $absolute_file_list fi } if [ $DoModules -eq 1 ]; then # save modules.dep for debugging cp $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.dep ../ %{log_msg "Create module list files for all kernel variants"} variants_param="" if [[ "$Variant" == "rt" || "$Variant" == "rt-debug" ]]; then variants_param="-r rt" fi if [[ "$Variant" == "rt-64k" || "$Variant" == "rt-64k-debug" ]]; then variants_param="-r rt-64k" fi if [[ "$Variant" == "automotive" || "$Variant" == "automotive-debug" ]]; then variants_param="-r automotive" fi # this creates ../modules-*.list output, where each kmod path is as it # appears in modules.dep (relative to lib/modules/$KernelVer) ret=0 %{SOURCE22} -l "../filtermods-$KernelVer.log" sort -d $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.dep -c configs/def_variants.yaml $variants_param -o .. || ret=$? if [ $ret -ne 0 ]; then echo "8< --- filtermods-$KernelVer.log ---" cat "../filtermods-$KernelVer.log" echo "--- filtermods-$KernelVer.log --- >8" echo "8< --- modules.dep ---" cat $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.dep echo "--- modules.dep --- >8" exit 1 fi create_module_file_list "kernel" ../modules-core.list ../kernel${Variant:+-${Variant}}-modules-core.list 1 0 create_module_file_list "kernel" ../modules.list ../kernel${Variant:+-${Variant}}-modules.list 0 0 create_module_file_list "internal" ../modules-internal.list ../kernel${Variant:+-${Variant}}-modules-internal.list 0 1 create_module_file_list "kernel" ../modules-extra.list ../kernel${Variant:+-${Variant}}-modules-extra.list 0 1 %if 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 LIBBPF_DYNAMIC=1 LIBTRACEEVENT_DYNAMIC=1 %{?perf_build_extra_opts} prefix=%{_prefix} PYTHON=%{__python3} %if %{with_perf} %{log_msg "Build perf"} # perf # make sure check-headers.sh is executable chmod +x tools/perf/check-headers.sh %{perf_make} DESTDIR=$RPM_BUILD_ROOT all %endif %if %{with_libperf} %global libperf_make \ %{__make} %{?make_opts} EXTRA_CFLAGS="${RPM_OPT_FLAGS}" LDFLAGS="%{__global_ldflags}" %{?cross_opts} -C tools/lib/perf V=1 %{log_msg "build libperf"} %{libperf_make} DESTDIR=$RPM_BUILD_ROOT %endif %global tools_make \ CFLAGS="${RPM_OPT_FLAGS}" LDFLAGS="%{__global_ldflags}" EXTRA_CFLAGS="${RPM_OPT_FLAGS}" %{make} %{?make_opts} %ifarch %{cpupowerarchs} # link against in-tree libcpupower for idle state support %global rtla_make %{tools_make} LDFLAGS="%{__global_ldflags} -L../../power/cpupower" INCLUDES="-I../../power/cpupower/lib" %else %global rtla_make %{tools_make} %endif %if %{with_tools} %if %{with_ynl} pushd tools/net/ynl export PIP_CONFIG_FILE=/tmp/pip.config cat < $PIP_CONFIG_FILE [install] no-index = true no-build-isolation = false EOF %{tools_make} %{?_smp_mflags} DESTDIR=$RPM_BUILD_ROOT install popd %endif %ifarch %{cpupowerarchs} # cpupower # make sure version-gen.sh is executable. chmod +x tools/power/cpupower/utils/version-gen.sh %{log_msg "build cpupower"} %{tools_make} %{?_smp_mflags} -C tools/power/cpupower CPUFREQ_BENCH=false DEBUG=false %ifarch x86_64 pushd tools/power/cpupower/debug/x86_64 %{log_msg "build centrino-decode powernow-k8-decode"} %{tools_make} %{?_smp_mflags} centrino-decode powernow-k8-decode popd %endif %ifarch x86_64 pushd tools/power/x86/x86_energy_perf_policy/ %{log_msg "build x86_energy_perf_policy"} %{tools_make} popd pushd tools/power/x86/turbostat %{log_msg "build turbostat"} %{tools_make} popd pushd tools/power/x86/intel-speed-select %{log_msg "build intel-speed-select"} %{tools_make} popd pushd tools/arch/x86/intel_sdsi %{log_msg "build intel_sdsi"} %{tools_make} CFLAGS="${RPM_OPT_FLAGS}" popd %endif %endif pushd tools/thermal/tmon/ %{log_msg "build tmon"} %{tools_make} popd pushd tools/bootconfig/ %{log_msg "build bootconfig"} %{tools_make} popd pushd tools/iio/ %{log_msg "build iio"} %{tools_make} popd pushd tools/gpio/ %{log_msg "build gpio"} %{tools_make} popd # build VM tools pushd tools/mm/ %{log_msg "build slabinfo page_owner_sort"} %{tools_make} slabinfo page_owner_sort popd pushd tools/verification/rv/ %{log_msg "build rv"} %{tools_make} popd pushd tools/tracing/rtla %{log_msg "build rtla"} %{rtla_make} popd %endif #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/forwarding net/mptcp net/netfilter net/packetdrill tc-testing memfd drivers/net/hw iommu cachestat pid_namespace rlimits timens pidfd" %{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* %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/forwarding selftests pushd tools/testing/selftests/net/forwarding find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/net/forwarding/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/net/forwarding/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/net/forwarding/{} \; popd # install net/mptcp selftests pushd tools/testing/selftests/net/mptcp find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/net/mptcp/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/net/mptcp/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/net/mptcp/{} \; popd # install tc-testing selftests pushd tools/testing/selftests/tc-testing find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/tc-testing/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/tc-testing/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/tc-testing/{} \; popd # install 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 %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 %{_localstatedir}/lib/rpm-state/%{name}/installing_core_%{KVERREL}%{?1:+%{1}} ]; then\ mkdir -p %{_localstatedir}/lib/rpm-state/%{name}\ touch %{_localstatedir}/lib/rpm-state/%{name}/need_to_run_dracut_%{KVERREL}%{?1:+%{1}}\ fi\ %{nil}\ %{expand:%%postun %{?1:%{1}-}modules}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil}\ %{expand:%%posttrans %{?1:%{1}-}modules}\ if [ -f %{_localstatedir}/lib/rpm-state/%{name}/need_to_run_dracut_%{KVERREL}%{?1:+%{1}} ]; then\ rm -f %{_localstatedir}/lib/rpm-state/%{name}/need_to_run_dracut_%{KVERREL}%{?1:+%{1}}\ echo "Running: dracut -f --kver %{KVERREL}%{?1:+%{1}}"\ dracut -f --kver "%{KVERREL}%{?1:+%{1}}" || exit $?\ fi\ %{nil} # # This macro defines a %%post script for a kernel*-modules-core package. # %%kernel_modules_core_post [] # %define kernel_modules_core_post() \ %{expand:%%posttrans %{?1:%{1}-}modules-core}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil} # This macro defines a %%posttrans script for a kernel package. # %%kernel_variant_posttrans [-v ] [-u uki-suffix] # More text can follow to go at the end of this variant's %%post. # %define kernel_variant_posttrans(v:u:) \ %{expand:%%posttrans %{?-v:%{-v*}-}%{!?-u*:core}%{?-u*:uki-%{-u*}}}\ %if 0%{!?fedora:1}\ %if !%{with_automotive}\ if [ -x %{_sbindir}/weak-modules ]\ then\ %{_sbindir}/weak-modules --add-kernel %{KVERREL}%{?-v:+%{-v*}} || exit $?\ fi\ %endif\ %endif\ rm -f %{_localstatedir}/lib/rpm-state/%{name}/installing_core_%{KVERREL}%{?-v:+%{-v*}}\ /bin/kernel-install add %{KVERREL}%{?-v:+%{-v*}} /lib/modules/%{KVERREL}%{?-v:+%{-v*}}/vmlinuz%{?-u:-%{-u*}.efi} || exit $?\ if [[ ! -e "/boot/symvers-%{KVERREL}%{?-v:+%{-v*}}.%compext" ]]; then\ cp "/lib/modules/%{KVERREL}%{?-v:+%{-v*}}/symvers.%compext" "/boot/symvers-%{KVERREL}%{?-v:+%{-v*}}.%compext"\ if command -v restorecon &>/dev/null; then\ restorecon "/boot/symvers-%{KVERREL}%{?-v:+%{-v*}}.%compext"\ fi\ fi\ %{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}/* %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 %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 * Mon Sep 15 2025 CKI KWF Bot [6.12.0-130.el10] - selftests/ftrace: Use readelf to find entry point in uprobe test (Anubhav Shelat) [RHEL-87219] - ublk selftests: add --no_ublk_fixed_fd for not using registered ublk char device (Ming Lei) [RHEL-106845] - ublk: avoid ublk_io_release() called after ublk char dev is closed (Ming Lei) [RHEL-106845] - block: validate QoS before calling __rq_qos_done_bio() (Ming Lei) [RHEL-106845] - md: improve return types of badblocks handling functions (Ming Lei) [RHEL-106845] - raid6: riscv: Fix NULL pointer dereference caused by a missing clobber (Ming Lei) [RHEL-106845] - dm-stripe: limit chunk_sectors to the stripe size (Ming Lei) [RHEL-106845] - md/raid10: set chunk_sectors limit (Ming Lei) [RHEL-106845] - md/raid0: set chunk_sectors limit (Ming Lei) [RHEL-106845] - md: allow removing faulty rdev during resync (Ming Lei) [RHEL-106845] - md/raid5: unset WQ_CPU_INTENSIVE for raid5 unbound workqueue (Ming Lei) [RHEL-106845] - md: remove/add redundancy group only in level change (Ming Lei) [RHEL-106845] - raid6: Add RISC-V SIMD syndrome and recovery calculations (Ming Lei) [RHEL-106845] - md/raid1: Add check for missing source disk in process_checks() (Ming Lei) [RHEL-106845] - md/raid10: fix missing discard IO accounting (Ming Lei) [RHEL-106845] - block: avoid cpu_hotplug_lock depedency on freeze_lock (Ming Lei) [RHEL-106845] - block: decrement block_rq_qos static key in rq_qos_del() (Ming Lei) [RHEL-106845] - block: skip q->rq_qos check in rq_qos_done_bio() (Ming Lei) [RHEL-106845] - blk-mq: fix lockdep warning in __blk_mq_update_nr_hw_queues (Ming Lei) [RHEL-106845] - selftests: ublk: Use ARRAY_SIZE() macro to improve code (Ming Lei) [RHEL-106845] - block: fix kobject double initialization in add_disk (Ming Lei) [RHEL-106845] - block: fix potential deadlock while running nr_hw_queue update (Ming Lei) [RHEL-106845] - block: fix lockdep warning caused by lock dependency in elv_iosched_store (Ming Lei) [RHEL-106845] - block: move elevator queue allocation logic into blk_mq_init_sched (Ming Lei) [RHEL-106845] - ublk: check for unprivileged daemon on each I/O fetch (Ming Lei) [RHEL-106845] - ublk: don't quiesce in ublk_ch_release (Ming Lei) [RHEL-106845] - ublk: remove unused req argument from ublk_sub_req_ref() (Ming Lei) [RHEL-106845] - selftests: ublk: add utils.h (Ming Lei) [RHEL-106845] - selftests: ublk: add helper ublk_handle_uring_cmd() for handle ublk command (Ming Lei) [RHEL-106845] - selftests: ublk: improve flags naming (Ming Lei) [RHEL-106845] - selftests: ublk: remove ublk queue self-defined flags (Ming Lei) [RHEL-106845] - selftests: ublk: pass 'ublk_thread *' to more common helpers (Ming Lei) [RHEL-106845] - selftests: ublk: pass 'ublk_thread *' to ->queue_io() and ->tgt_io_done() (Ming Lei) [RHEL-106845] - selftests: ublk: remove `tag` parameter of ->tgt_io_done() (Ming Lei) [RHEL-106845] - ublk: pass 'const struct ublk_io *' to ublk_[un]map_io() (Ming Lei) [RHEL-106845] - ublk: remove ublk_commit_and_fetch() (Ming Lei) [RHEL-106845] - ublk: add helper ublk_check_fetch_buf() (Ming Lei) [RHEL-106845] - ublk: store auto buffer register data into `struct ublk_io` (Ming Lei) [RHEL-106845] - ublk: move auto buffer register handling into one dedicated helper (Ming Lei) [RHEL-106845] - ublk: avoid to pass `struct ublksrv_io_cmd *` to ublk_commit_and_fetch() (Ming Lei) [RHEL-106845] - ublk: let ublk_fill_io_cmd() cover more things (Ming Lei) [RHEL-106845] - ublk: move fake timeout logic into __ublk_complete_rq() (Ming Lei) [RHEL-106845] - ublk: look up ublk task via its pid in timeout handler (Ming Lei) [RHEL-106845] - ublk: validate ublk server pid (Ming Lei) [RHEL-106845] - ublk: introduce and use ublk_set_canceling helper (Ming Lei) [RHEL-106845] - ublk: speed up ublk server exit handling (Ming Lei) [RHEL-106845] - blk-mq: add number of queue calc helper (Ming Lei) [RHEL-106845] - ublk: cache-align struct ublk_io (Ming Lei) [RHEL-106845] - ublk: remove ubq checks from ublk_{get,put}_req_ref() (Ming Lei) [RHEL-106845] - ublk: optimize UBLK_IO_UNREGISTER_IO_BUF on daemon task (Ming Lei) [RHEL-106845] - ublk: optimize UBLK_IO_REGISTER_IO_BUF on daemon task (Ming Lei) [RHEL-106845] - ublk: return early if blk_should_fake_timeout() (Ming Lei) [RHEL-106845] - ublk: allow UBLK_IO_(UN)REGISTER_IO_BUF on any task (Ming Lei) [RHEL-106845] - ublk: don't take ublk_queue in ublk_unregister_io_buf() (Ming Lei) [RHEL-106845] - ublk: consolidate UBLK_IO_FLAG_{ACTIVE,OWNED_BY_SRV} checks (Ming Lei) [RHEL-106845] - ublk: remove task variable from __ublk_ch_uring_cmd() (Ming Lei) [RHEL-106845] - ublk: handle UBLK_IO_FETCH_REQ earlier (Ming Lei) [RHEL-106845] - ublk: check cmd_op first (Ming Lei) [RHEL-106845] - ublk: remove struct ublk_rq_data (Ming Lei) [RHEL-106845] - ublk: use vmalloc for ublk_device's __queues (Ming Lei) [RHEL-106845] - redhat/configs: Adding CONFIG_BLK_DEV_ZONED_LOOP (Ming Lei) [RHEL-106845] - block: restore default wbt enablement (Ming Lei) [RHEL-106845] - zloop: fix KASAN use-after-free of tag set (Ming Lei) [RHEL-106845] {CVE-2025-38620} - mm: fix vmstat after removing NR_BOUNCE (Ming Lei) [RHEL-106845] - nbd: fix lockdep deadlock warning (Ming Lei) [RHEL-106845] - block: restore two stage elevator switch while running nr_hw_queue update (Ming Lei) [RHEL-106845] - md/raid10: fix set but not used variable in sync_request_write() (Ming Lei) [RHEL-106845] - block: fix module reference leak in mq-deadline I/O scheduler (Ming Lei) [RHEL-106845] - nvme: fix inconsistent RCU list manipulation in nvme_ns_add_to_ctrl_list() (Ming Lei) [RHEL-106845] - block: fix kobject leak in blk_unregister_queue (Ming Lei) [RHEL-106845] - nbd: fix uaf in nbd_genl_connect() error path (Ming Lei) [RHEL-106845] {CVE-2025-38443} - md/md-bitmap: fix GPF in bitmap_get_stats() (Ming Lei) [RHEL-106845] {CVE-2025-38451} - md/md-bitmap: fix stats collection for external bitmaps (Ming Lei) [RHEL-106845] - md/raid1,raid10: strip REQ_NOWAIT from member bios (Ming Lei) [RHEL-106845] - raid10: cleanup memleak at raid10_make_request (Ming Lei) [RHEL-106845] {CVE-2025-38444} - md/raid1: Fix stack memory use after return in raid1_reshape (Ming Lei) [RHEL-106845] {CVE-2025-38445} - brd: fix sleeping function called from invalid context in brd_insert_page() (Ming Lei) [RHEL-106845] - ublk: don't queue request if the associated uring_cmd is canceled (Ming Lei) [RHEL-106845] - block: fix false warning in bdev_count_inflight_rw() (Ming Lei) [RHEL-106845] - ublk: sanity check add_dev input for underflow (Ming Lei) [RHEL-106845] - ublk: setup ublk_io correctly in case of ublk_get_data() failure (Ming Lei) [RHEL-106845] - ublk: update UBLK_F_SUPPORT_ZERO_COPY comment in UAPI header (Ming Lei) [RHEL-106845] - ublk: fix narrowing warnings in UAPI header (Ming Lei) [RHEL-106845] - selftests: ublk: don't take same backing file for more than one ublk devices (Ming Lei) [RHEL-106845] - ublk: build batch from IOs in same io_ring_ctx and io task (Ming Lei) [RHEL-106845] - ublk: santizize the arguments from userspace when adding a device (Ming Lei) [RHEL-106845] {CVE-2025-38182} - aoe: defer rexmit timer downdev work to workqueue (Ming Lei) [RHEL-106845] - aoe: clean device rq_list in aoedev_downdev() (Ming Lei) [RHEL-106845] {CVE-2025-38326} - nvme: always punt polled uring_cmd end_io work to task_work (Ming Lei) [RHEL-106845] - Documentation: ublk: Separate UBLK_F_AUTO_BUF_REG fallback behavior sublists (Ming Lei) [RHEL-106845] - block: Fix bvec_set_folio() for very large folios (Ming Lei) [RHEL-106845] - bio: Fix bio_first_folio() for SPARSEMEM without VMEMMAP (Ming Lei) [RHEL-106845] - block: don't use submit_bio_noacct_nocheck in blk_zone_wplug_bio_work (Ming Lei) [RHEL-106845] {CVE-2025-38302} - block: Clear BIO_EMULATES_ZONE_APPEND flag on BIO completion (Ming Lei) [RHEL-106845] - ublk: document auto buffer registration(UBLK_F_AUTO_BUF_REG) (Ming Lei) [RHEL-106845] - selftests: ublk: kublk: improve behavior on init failure (Ming Lei) [RHEL-106845] - block: drop direction param from bio_integrity_copy_user() (Ming Lei) [RHEL-106845] - selftests: ublk: cover PER_IO_DAEMON in more stress tests (Ming Lei) [RHEL-106845] - Documentation: ublk: document UBLK_F_PER_IO_DAEMON (Ming Lei) [RHEL-106845] - selftests: ublk: add stress test for per io daemons (Ming Lei) [RHEL-106845] - selftests: ublk: add functional test for per io daemons (Ming Lei) [RHEL-106845] - selftests: ublk: kublk: decouple ublk_queues from ublk server threads (Ming Lei) [RHEL-106845] - selftests: ublk: kublk: move per-thread data out of ublk_queue (Ming Lei) [RHEL-106845] - selftests: ublk: kublk: lift queue initialization out of thread (Ming Lei) [RHEL-106845] - selftests: ublk: kublk: tie sqe allocation to io instead of queue (Ming Lei) [RHEL-106845] - selftests: ublk: kublk: plumb q_id in io_uring user_data (Ming Lei) [RHEL-106845] - ublk: have a per-io daemon instead of a per-queue daemon (Ming Lei) [RHEL-106845] - md/md-bitmap: remove parameter slot from bitmap_create() (Ming Lei) [RHEL-106845] - md/md-bitmap: cleanup bitmap_ops->startwrite() (Ming Lei) [RHEL-106845] - md/dm-raid: remove max_write_behind setting limit (Ming Lei) [RHEL-106845] - md/md-bitmap: fix dm-raid max_write_behind setting (Ming Lei) [RHEL-106845] - md/raid1,raid10: don't handle IO error for REQ_RAHEAD and REQ_NOWAIT (Ming Lei) [RHEL-106845] - selftests: ublk: add test for UBLK_F_QUIESCE (Ming Lei) [RHEL-106845] - ublk: add feature UBLK_F_QUIESCE (Ming Lei) [RHEL-106845] - selftests: ublk: add test case for UBLK_U_CMD_UPDATE_SIZE (Ming Lei) [RHEL-106845] - traceevent/block: Add REQ_ATOMIC flag to block trace events (Ming Lei) [RHEL-106845] - ublk: run auto buf unregisgering in same io_ring_ctx with registering (Ming Lei) [RHEL-106845] - io_uring: add helper io_uring_cmd_ctx_handle() (Ming Lei) [RHEL-106845] - ublk: remove io argument from ublk_auto_buf_reg_fallback() (Ming Lei) [RHEL-106845] - ublk: handle ublk_set_auto_buf_reg() failure correctly in ublk_fetch() (Ming Lei) [RHEL-106845] - selftests: ublk: add test for covering UBLK_AUTO_BUF_REG_FALLBACK (Ming Lei) [RHEL-106845] - selftests: ublk: support UBLK_F_AUTO_BUF_REG (Ming Lei) [RHEL-106845] - ublk: support UBLK_AUTO_BUF_REG_FALLBACK (Ming Lei) [RHEL-106845] - ublk: register buffer to local io_uring with provided buf index via UBLK_F_AUTO_BUF_REG (Ming Lei) [RHEL-106845] - ublk: prepare for supporting to register request buffer automatically (Ming Lei) [RHEL-106845] - ublk: convert to refcount_t (Ming Lei) [RHEL-106845] - selftests: ublk: make IO & device removal test more stressful (Ming Lei) [RHEL-106845] - nvmet-tcp: switch to using the crc32c library (Ming Lei) [RHEL-106845] - nvmet: replace strncpy with strscpy (Ming Lei) [RHEL-106845] - nvme-tcp: open-code nvme_tcp_queue_request() for R2T (Ming Lei) [RHEL-106845] - nvme-loop: avoid -Wflex-array-member-not-at-end warning (Ming Lei) [RHEL-106845] - blk-mq: add a copyright notice to blk-mq-dma.c (Ming Lei) [RHEL-106845] - blk-mq: move the DMA mapping code to a separate file (Ming Lei) [RHEL-106845] - cdrom: Remove unnecessary NULL check before unregister_sysctl_table() (Ming Lei) [RHEL-106845] - block: fix elv_update_nr_hw_queues() to reattach elevator (Ming Lei) [RHEL-106845] - brd: avoid extra xarray lookups on first write (Ming Lei) [RHEL-106845] - block: Remove obsolete configs BLK_MQ_{PCI,VIRTIO} (Ming Lei) [RHEL-106845] - block: remove the same_page output argument to bvec_try_merge_page (Ming Lei) [RHEL-106845] - block: unfreeze queue if realloc tag set fails during nr_hw_queues update (Ming Lei) [RHEL-106845] - md: clean up accounting for issued sync IO (Ming Lei) [RHEL-106845] - md: fix is_mddev_idle() (Ming Lei) [RHEL-106845] - md: add a new api sync_io_depth (Ming Lei) [RHEL-106845] - md: record dm-raid gendisk in mddev (Ming Lei) [RHEL-106845] - block: export API to get the number of bdev inflight IO (Ming Lei) [RHEL-106845] - block: clean up blk_mq_in_flight_rw() (Ming Lei) [RHEL-106845] - block: WARN if bdev inflight counter is negative (Ming Lei) [RHEL-106845] - block: reuse part_in_flight_rw for part_in_flight (Ming Lei) [RHEL-106845] - blk-mq: remove blk_mq_in_flight() (Ming Lei) [RHEL-106845] - block: move removing elevator after deleting disk->queue_kobj (Ming Lei) [RHEL-106845] - block: don't quiesce queue for calling elevator_set_none() (Ming Lei) [RHEL-106845] - fs: aio: initialize .ki_write_stream of read-write request (Ming Lei) [RHEL-106845] - dm-integrity: use bio_add_virt_nofail (Ming Lei) [RHEL-106845] - dm-bufio: use bio_add_virt_nofail (Ming Lei) [RHEL-106845] - PM: hibernate: split and simplify hib_submit_io (Ming Lei) [RHEL-106845] - zonefs: use bdev_rw_virt in zonefs_read_super (Ming Lei) [RHEL-106845] - gfs2: use bdev_rw_virt in gfs2_read_super (Ming Lei) [RHEL-106845] - rnbd-srv: use bio_add_virt_nofail (Ming Lei) [RHEL-106845] - bcache: use bio_add_virt_nofail (Ming Lei) [RHEL-106845] - block: simplify bio_map_kern (Ming Lei) [RHEL-106845] - block: pass the operation to bio_{map,copy}_kern (Ming Lei) [RHEL-106845] - block: remove the q argument from blk_rq_map_kern (Ming Lei) [RHEL-106845] - block: add a bio_add_vmalloc helpers (Ming Lei) [RHEL-106845] - block: add a bio_add_max_vecs helper (Ming Lei) [RHEL-106845] - block: add a bdev_rw_virt helper (Ming Lei) [RHEL-106845] - block: add a bio_add_virt_nofail helper (Ming Lei) [RHEL-106845] - block: fix warning on 'make htmldocs' (Ming Lei) [RHEL-106845] - nvme: fix incorrect sizeof (Ming Lei) [RHEL-106845] - nvme: fix write_stream_granularity initialization (Ming Lei) [RHEL-106845] - nvme: use fdp streams if write stream is provided (Ming Lei) [RHEL-106845] - nvme: register fdp parameters with the block layer (Ming Lei) [RHEL-106845] - nvme: add FDP definitions (Ming Lei) [RHEL-106845] - nvme: pass a void pointer to nvme_get/set_features for the result (Ming Lei) [RHEL-106845] - nvme: add a nvme_get_log_lsi helper (Ming Lei) [RHEL-106845] - io_uring: enable per-io write streams (Ming Lei) [RHEL-106845] - block: expose write streams for block device nodes (Ming Lei) [RHEL-106845] - block: introduce a write_stream_granularity queue limit (Ming Lei) [RHEL-106845] - block: introduce max_write_streams queue limit (Ming Lei) [RHEL-106845] - block: add a bi_write_stream field (Ming Lei) [RHEL-106845] - fs: add a write stream field to the kiocb (Ming Lei) [RHEL-106845] - block: only update request sector if needed (Ming Lei) [RHEL-106845] - block: move wbt_enable_default() out of queue freezing from sched ->exit() (Ming Lei) [RHEL-106845] - block: move hctx cpuhp add/del out of queue freezing (Ming Lei) [RHEL-106845] - block: don't acquire ->elevator_lock in blk_mq_map_swqueue and blk_mq_realloc_hw_ctxs (Ming Lei) [RHEL-106845] - block: move hctx debugfs/sysfs registering out of freezing queue (Ming Lei) [RHEL-106845] - block: move elv_register[unregister]_queue out of elevator_lock (Ming Lei) [RHEL-106845] - block: add new helper for disabling elevator switch when deleting disk (Ming Lei) [RHEL-106845] - block: fail to show/store elevator sysfs attribute if elevator is dying (Ming Lei) [RHEL-106845] - block: remove elevator queue's type check in elv_attr_show/store() (Ming Lei) [RHEL-106845] - block: pass elevator_queue to elv_register_queue & unregister_queue (Ming Lei) [RHEL-106845] - block: unifying elevator change (Ming Lei) [RHEL-106845] - block: add `struct elv_change_ctx` for unifying elevator change (Ming Lei) [RHEL-106845] - block: move queue freezing & elevator_lock into elevator_change() (Ming Lei) [RHEL-106845] - block: simplify elevator reattachment for updating nr_hw_queues (Ming Lei) [RHEL-106845] - block: move blk_queue_registered() check into elv_iosched_store() (Ming Lei) [RHEL-106845] - block: fold elevator_disable into elevator_switch (Ming Lei) [RHEL-106845] - block: look up the elevator type in elevator_switch (Ming Lei) [RHEL-106845] - block: don't allow to switch elevator if updating nr_hw_queues is in-progress (Ming Lei) [RHEL-106845] - block: prevent adding/deleting disk during updating nr_hw_queues (Ming Lei) [RHEL-106845] - block: add helper add_disk_final() (Ming Lei) [RHEL-106845] - block: move sched debugfs register into elvevator_register_queue (Ming Lei) [RHEL-106845] - block: add two helpers for registering/un-registering sched debugfs (Ming Lei) [RHEL-106845] - block: use q->elevator with ->elevator_lock held in elv_iosched_show() (Ming Lei) [RHEL-106845] - block: don't call freeze queue in elevator_switch() and elevator_disable() (Ming Lei) [RHEL-106845] - block: move ELEVATOR_FLAG_DISABLE_WBT a request queue flag (Ming Lei) [RHEL-106845] - block: move blk_mq_add_queue_tag_set() after blk_mq_map_swqueue() (Ming Lei) [RHEL-106845] - brd: fix discard end sector (Ming Lei) [RHEL-106845] - brd: fix aligned_sector from brd_do_discard() (Ming Lei) [RHEL-106845] - brd: protect page with rcu (Ming Lei) [RHEL-106845] - ublk: consolidate UBLK_IO_FLAG_OWNED_BY_SRV checks (Ming Lei) [RHEL-106845] - selftests: ublk: kublk: fix include path (Ming Lei) [RHEL-106845] - selftests: ublk: make test_generic_06 silent on success (Ming Lei) [RHEL-106845] - selftests: ublk: kublk: build with -Werror iff WERROR!=0 (Ming Lei) [RHEL-106845] - mm: remove NR_BOUNCE zone stat (Ming Lei) [RHEL-106845] - block: remove bounce buffering support (Ming Lei) [RHEL-106845] - scsi: remove the no_highmem flag in the host (Ming Lei) [RHEL-106845] - usb-storage: reject probe of device one non-DMA HCDs when using highmem (Ming Lei) [RHEL-106845] - scsi: make ppa depend on !HIGHMEM (Ming Lei) [RHEL-106845] - scsi: make imm depend on !HIGHMEM (Ming Lei) [RHEL-106845] - scsi: make aha152x depend on !HIGHMEM (Ming Lei) [RHEL-106845] - block: use writeback_iter (Ming Lei) [RHEL-106845] - ublk: store request pointer in ublk_io (Ming Lei) [RHEL-106845] - ublk: check UBLK_IO_FLAG_OWNED_BY_SRV in ublk_abort_queue() (Ming Lei) [RHEL-106845] - ublk: don't call ublk_dispatch_req() for NEED_GET_DATA (Ming Lei) [RHEL-106845] - ublk: factor out ublk_start_io() helper (Ming Lei) [RHEL-106845] - ublk: don't log uring_cmd cmd_op in ublk_dispatch_req() (Ming Lei) [RHEL-106845] - ublk: take const ubq pointer in ublk_get_iod() (Ming Lei) [RHEL-106845] - ublk: remove misleading "ubq" in "ubq_complete_io_cmd()" (Ming Lei) [RHEL-106845] - ublk: fix "immepdately" typo in comment (Ming Lei) [RHEL-106845] - ublk: factor out ublk_commit_and_fetch (Ming Lei) [RHEL-106845] - block: avoid hctx spinlock for plug with multiple queues (Ming Lei) [RHEL-106845] - block: factor out blk_mq_dispatch_queue_requests() helper (Ming Lei) [RHEL-106845] - block: take rq_list instead of plug in dispatch functions (Ming Lei) [RHEL-106845] - Documentation: Document the new zoned loop block device driver (Ming Lei) [RHEL-106845] - block: new zoned loop block device driver (Ming Lei) [RHEL-106845] - brd: use memcpy_{to,from]_page in brd_rw_bvec (Ming Lei) [RHEL-106845] - brd: split I/O at page boundaries (Ming Lei) [RHEL-106845] - brd: use bvec_kmap_local in brd_do_bvec (Ming Lei) [RHEL-106845] - brd: remove the sector variable in brd_submit_bio (Ming Lei) [RHEL-106845] - brd: pass a bvec pointer to brd_do_bvec (Ming Lei) [RHEL-106845] - ublk: remove unnecessary ubq checks (Ming Lei) [RHEL-106845] - ublk: Add UBLK_U_CMD_UPDATE_SIZE (Ming Lei) [RHEL-106845] - block: blk-rq-qos: guard rq-qos helpers by static key (Ming Lei) [RHEL-106845] - block: ensure that struct blk_mq_alloc_data is fully initialized (Ming Lei) [RHEL-106845] - block: Simplify blk_mq_dispatch_rq_list() and its callers (Ming Lei) [RHEL-106845] - ublk: fix dead loop when canceling io command (Ming Lei) [RHEL-106845] - ublk: remove the check of ublk_need_req_ref() from __ublk_check_and_get_req (Ming Lei) [RHEL-106845] - ublk: enhance check for register/unregister io buffer command (Ming Lei) [RHEL-106845] - ublk: decouple zero copy from user copy (Ming Lei) [RHEL-106845] - selftests: ublk: fix UBLK_F_NEED_GET_DATA (Ming Lei) [RHEL-106845] - ublk: fix race between io_uring_cmd_complete_in_task and ublk_cancel_cmd (Ming Lei) [RHEL-106845] {CVE-2025-37906} - ublk: call ublk_dispatch_req() for handling UBLK_U_IO_NEED_GET_DATA (Ming Lei) [RHEL-106845] - selftests: ublk: common: fix _get_disk_dev_t for pre-9.0 coreutils (Ming Lei) [RHEL-106845] - selftests: ublk: remove useless 'delay_us' from 'struct dev_ctx' (Ming Lei) [RHEL-106845] - selftests: ublk: fix recover test (Ming Lei) [RHEL-106845] - selftests: ublk: add generic_06 for covering fault inject (Ming Lei) [RHEL-106845] - ublk: simplify aborting ublk request (Ming Lei) [RHEL-106845] - ublk: remove __ublk_quiesce_dev() (Ming Lei) [RHEL-106845] - ublk: improve detection and handling of ublk server exit (Ming Lei) [RHEL-106845] - ublk: move device reset into ublk_ch_release() (Ming Lei) [RHEL-106845] - ublk: rely on ->canceling for dealing with ublk_nosrv_dev_should_queue_io (Ming Lei) [RHEL-106845] - ublk: add ublk_force_abort_dev() (Ming Lei) [RHEL-106845] - ublk: properly serialize all FETCH_REQs (Ming Lei) [RHEL-106845] - selftests: ublk: move creating UBLK_TMP into _prep_test() (Ming Lei) [RHEL-106845] - selftests: ublk: add test_stress_05.sh (Ming Lei) [RHEL-106845] - selftests: ublk: support user recovery (Ming Lei) [RHEL-106845] - selftests: ublk: support target specific command line (Ming Lei) [RHEL-106845] - selftests: ublk: increase max nr_queues and queue depth (Ming Lei) [RHEL-106845] - selftests: ublk: set queue pthread's cpu affinity (Ming Lei) [RHEL-106845] - selftests: ublk: setup ring with IORING_SETUP_SINGLE_ISSUER/IORING_SETUP_DEFER_TASKRUN (Ming Lei) [RHEL-106845] - selftests: ublk: add two stress tests for zero copy feature (Ming Lei) [RHEL-106845] - selftests: ublk: run stress tests in parallel (Ming Lei) [RHEL-106845] - selftests: ublk: make sure _add_ublk_dev can return in sub-shell (Ming Lei) [RHEL-106845] - selftests: ublk: cleanup backfile automatically (Ming Lei) [RHEL-106845] - selftests: ublk: add io_uring uapi header (Ming Lei) [RHEL-106845] - selftests: ublk: fix ublk_find_tgt() (Ming Lei) [RHEL-106845] - ublk: don't suggest CONFIG_BLK_DEV_UBLK=Y (Ming Lei) [RHEL-106845] - ublk: pass ublksrv_ctrl_cmd * instead of io_uring_cmd * (Ming Lei) [RHEL-106845] - ublk: don't fail request for recovery & reissue in case of ubq->canceling (Ming Lei) [RHEL-106845] - ublk: fix handling recovery & reissue in ublk_abort_queue() (Ming Lei) [RHEL-106845] {CVE-2025-37759} - selftests: ublk: fix test_stripe_04 (Ming Lei) [RHEL-106845] - io_uring/rsrc: validate buffer count with offset for cloning (Ming Lei) [RHEL-106845] {CVE-2025-38196} - io_uring/memmap: cast nr_pages to size_t before shifting (Ming Lei) [RHEL-106845] - io_uring/poll: fix POLLERR handling (Ming Lei) [RHEL-106845] - io_uring/net: only consider msg_inq if larger than 1 (Ming Lei) [RHEL-106845] - io_uring: don't assume uaddr alignment in io_vec_fill_bvec (Ming Lei) [RHEL-106845] - io_uring/net: always use current transfer count for buffer put (Ming Lei) [RHEL-106845] - io_uring/net: only retry recv bundle for a full transfer (Ming Lei) [RHEL-106845] - io_uring: fix overflow resched cqe reordering (Ming Lei) [RHEL-106845] - io_uring/cmd: axe duplicate io_uring_cmd_import_fixed_vec() declaration (Ming Lei) [RHEL-106845] - io_uring/fdinfo: grab ctx->uring_lock around io_uring_show_fdinfo() (Ming Lei) [RHEL-106845] {CVE-2025-38002} - io_uring/memmap: don't use page_address() on a highmem page (Ming Lei) [RHEL-106845] - io_uring/uring_cmd: fix hybrid polling initialization issue (Ming Lei) [RHEL-106845] - io_uring/sqpoll: Increase task_work submission batch size (Ming Lei) [RHEL-106845] - io_uring: always arm linked timeouts prior to issue (Ming Lei) [RHEL-106845] - io_uring/fdinfo: annotate racy sq/cq head/tail reads (Ming Lei) [RHEL-106845] - io_uring: fix 'sync' handling of io_fallback_tw() (Ming Lei) [RHEL-106845] - io_uring: don't duplicate flushing in io_req_post_cqe (Ming Lei) [RHEL-106845] - io_uring/rsrc: ensure segments counts are correct on kbuf buffers (Ming Lei) [RHEL-106845] - io_uring/rsrc: send exact nr_segs for fixed buffer (Ming Lei) [RHEL-106845] - io_uring/rsrc: refactor io_import_fixed (Ming Lei) [RHEL-106845] - io_uring/rsrc: separate kbuf offset adjustments (Ming Lei) [RHEL-106845] - io_uring/rsrc: don't skip offset calculation (Ming Lei) [RHEL-106845] - io_uring/kbuf: reject zero sized provided buffers (Ming Lei) [RHEL-106845] - io_uring: don't post tag CQEs on file/buffer registration failure (Ming Lei) [RHEL-106845] - io_uring: always do atomic put from iowq (Ming Lei) [RHEL-106845] - selftests: ublk: enable zero copy for stripe target (Ming Lei) [RHEL-106845] - io_uring: support vectored kernel fixed buffer (Ming Lei) [RHEL-106845] - io_uring: add validate_fixed_range() for validate fixed buffer (Ming Lei) [RHEL-106845] - selftests: ublk: kublk: fix an error log line (Ming Lei) [RHEL-106845] - selftests: ublk: kublk: use ioctl-encoded opcodes (Ming Lei) [RHEL-106845] - io_uring/net: avoid import_ubuf for regvec send (Ming Lei) [RHEL-106845] - io_uring/rsrc: check size when importing reg buffer (Ming Lei) [RHEL-106845] - io_uring: cleanup {g,s]etsockopt sqe reading (Ming Lei) [RHEL-106845] - io_uring: hide caches sqes from drivers (Ming Lei) [RHEL-106845] - io_uring: add req flag invariant build assertion (Ming Lei) [RHEL-106845] - Documentation: ublk: remove dead footnote (Ming Lei) [RHEL-106845] - selftests: ublk: specify io_cmd_buf pointer type (Ming Lei) [RHEL-106845] - ublk: specify io_cmd_buf pointer type (Ming Lei) [RHEL-106845] - io_uring: don't pass ctx to tw add remote helper (Ming Lei) [RHEL-106845] - io_uring/msg: initialise msg request opcode (Ming Lei) [RHEL-106845] - io_uring/msg: rename io_double_lock_ctx() (Ming Lei) [RHEL-106845] - io_uring/net: import zc ubuf earlier (Ming Lei) [RHEL-106845] - io_uring/net: set sg_from_iter in advance (Ming Lei) [RHEL-106845] - io_uring/net: clusterise send vs msghdr branches (Ming Lei) [RHEL-106845] - io_uring/net: unify sendmsg setup with zc (Ming Lei) [RHEL-106845] - io_uring/net: combine sendzc flags writes (Ming Lei) [RHEL-106845] - io_uring/net: open code io_net_vec_assign() (Ming Lei) [RHEL-106845] - io_uring/net: open code io_sendmsg_copy_hdr() (Ming Lei) [RHEL-106845] - ublk: store req in ublk_uring_cmd_pdu for ublk_cmd_tw_cb() (Ming Lei) [RHEL-106845] - ublk: avoid redundant io->cmd in ublk_queue_cmd_list() (Ming Lei) [RHEL-106845] - ublk: get ubq from pdu in ublk_cmd_list_tw_cb() (Ming Lei) [RHEL-106845] - ublk: skip 1 NULL check in ublk_cmd_list_tw_cb() loop (Ming Lei) [RHEL-106845] - ublk: remove unused cmd argument to ublk_dispatch_req() (Ming Lei) [RHEL-106845] - selftests: ublk: add test for checking zero copy related parameter (Ming Lei) [RHEL-106845] - selftests: ublk: add more tests for covering MQ (Ming Lei) [RHEL-106845] - ublk: rename ublk_rq_task_work_cb as ublk_cmd_tw_cb (Ming Lei) [RHEL-106845] - ublk: implement ->queue_rqs() (Ming Lei) [RHEL-106845] - ublk: document zero copy feature (Ming Lei) [RHEL-106845] - ublk: add segment parameter (Ming Lei) [RHEL-106845] - ublk: call io_uring_cmd_to_pdu to get uring_cmd pdu (Ming Lei) [RHEL-106845] - ublk: add helper of ublk_need_map_io() (Ming Lei) [RHEL-106845] - ublk: remove two unused fields from 'struct ublk_queue' (Ming Lei) [RHEL-106845] - ublk: comment on ubq->canceling handling in ublk_queue_rq() (Ming Lei) [RHEL-106845] - ublk: make sure ubq->canceling is set when queue is frozen (Ming Lei) [RHEL-106845] {CVE-2025-22068} - io_uring/net: account memory for zc sendmsg (Ming Lei) [RHEL-106845] - io_uring/net: fix io_req_post_cqe abuse by send bundle (Ming Lei) [RHEL-106845] - io_uring/net: use REQ_F_IMPORT_BUFFER for send_zc (Ming Lei) [RHEL-106845] - io_uring: move min_events sanitisation (Ming Lei) [RHEL-106845] - io_uring: rename "min" arg in io_iopoll_check() (Ming Lei) [RHEL-106845] - io_uring: open code __io_post_aux_cqe() (Ming Lei) [RHEL-106845] - io_uring: defer iowq cqe overflow via task_work (Ming Lei) [RHEL-106845] - io_uring: fix retry handling off iowq (Ming Lei) [RHEL-106845] - io_uring/net: only import send_zc buffer once (Ming Lei) [RHEL-106845] - io_uring/cmd: introduce io_uring_cmd_import_fixed_vec (Ming Lei) [RHEL-106845] - io_uring/cmd: add iovec cache for commands (Ming Lei) [RHEL-106845] - io_uring/cmd: don't expose entire cmd async data (Ming Lei) [RHEL-106845] - io_uring: rename the data cmd cache (Ming Lei) [RHEL-106845] - io_uring: rely on io_prep_reg_vec for iovec placement (Ming Lei) [RHEL-106845] - io_uring: introduce io_prep_reg_iovec() (Ming Lei) [RHEL-106845] - io_uring: unify STOP_MULTISHOT with IOU_OK (Ming Lei) [RHEL-106845] - io_uring: return -EAGAIN to continue multishot (Ming Lei) [RHEL-106845] - io_uring: cap cached iovec/bvec size (Ming Lei) [RHEL-106845] - io_uring/net: implement vectored reg bufs for zctx (Ming Lei) [RHEL-106845] - io_uring/net: convert to struct iou_vec (Ming Lei) [RHEL-106845] - io_uring/net: pull vec alloc out of msghdr import (Ming Lei) [RHEL-106845] - io_uring/net: combine msghdr copy (Ming Lei) [RHEL-106845] - io_uring/rw: defer reg buf vec import (Ming Lei) [RHEL-106845] - io_uring/rw: implement vectored registered rw (Ming Lei) [RHEL-106845] - io_uring: add infra for importing vectored reg buffers (Ming Lei) [RHEL-106845] - io_uring: introduce struct iou_vec (Ming Lei) [RHEL-106845] - selftests: ublk: add stripe target (Ming Lei) [RHEL-106845] - selftests: ublk: simplify loop io completion (Ming Lei) [RHEL-106845] - selftests: ublk: enable zero copy for null target (Ming Lei) [RHEL-106845] - selftests: ublk: prepare for supporting stripe target (Ming Lei) [RHEL-106845] - selftests: ublk: move common code into common.c (Ming Lei) [RHEL-106845] - selftests: ublk: increase max buffer size to 1MB (Ming Lei) [RHEL-106845] - selftests: ublk: add single sqe allocator helper (Ming Lei) [RHEL-106845] - selftests: ublk: add generic_01 for verifying sequential IO order (Ming Lei) [RHEL-106845] - selftests: ublk: fix starting ublk device (Ming Lei) [RHEL-106845] - io_uring: enable toggle of iowait usage when waiting on CQEs (Ming Lei) [RHEL-106845] - selftests: ublk: fix write cache implementation (Ming Lei) [RHEL-106845] - selftests: ublk: add variable for user to not show test result (Ming Lei) [RHEL-106845] - selftests: ublk: don't show `modprobe` failure (Ming Lei) [RHEL-106845] - selftests: ublk: add one dependency header (Ming Lei) [RHEL-106845] - io_uring/kbuf: enable bundles for incrementally consumed buffers (Ming Lei) [RHEL-106845] - Revert "io_uring/rsrc: simplify the bvec iter count calculation" (Ming Lei) [RHEL-106845] - selftests: ublk: improve test usability (Ming Lei) [RHEL-106845] - selftests: ublk: add stress test for covering IO vs. killing ublk server (Ming Lei) [RHEL-106845] - selftests: ublk: add one stress test for covering IO vs. removing device (Ming Lei) [RHEL-106845] - selftests: ublk: load/unload ublk_drv when preparing & cleaning up tests (Ming Lei) [RHEL-106845] - selftests: ublk: move zero copy feature check into _add_ublk_dev() (Ming Lei) [RHEL-106845] - selftests: ublk: don't pass ${dev_id} to _cleanup_test() (Ming Lei) [RHEL-106845] - selftests: ublk: support shellcheck and fix all warning (Ming Lei) [RHEL-106845] - selftests: ublk: fix parsing '-a' argument (Ming Lei) [RHEL-106845] - selftests: ublk: add --foreground command line (Ming Lei) [RHEL-106845] - selftests: ublk: fix build failure (Ming Lei) [RHEL-106845] - selftests: ublk: make ublk_stop_io_daemon() more reliable (Ming Lei) [RHEL-106845] - io_uring: Remove unused declaration io_alloc_async_data() (Ming Lei) [RHEL-106845] - io_uring: introduce io_cache_free() helper (Ming Lei) [RHEL-106845] - io_uring/rsrc: skip NULL file/buffer checks in io_free_rsrc_node() (Ming Lei) [RHEL-106845] - io_uring/rsrc: avoid NULL node check on io_sqe_buffer_register() failure (Ming Lei) [RHEL-106845] - io_uring/rsrc: call io_free_node() on io_sqe_buffer_register() failure (Ming Lei) [RHEL-106845] - io_uring/rsrc: free io_rsrc_node using kfree() (Ming Lei) [RHEL-106845] - io_uring/rsrc: split out io_free_node() helper (Ming Lei) [RHEL-106845] - io_uring/rsrc: include io_uring_types.h in rsrc.h (Ming Lei) [RHEL-106845] - ublk: don't cast registered buffer index to int (Ming Lei) [RHEL-106845] - io_uring/nop: use io_find_buf_node() (Ming Lei) [RHEL-106845] - io_uring/rsrc: declare io_find_buf_node() in header file (Ming Lei) [RHEL-106845] - io_uring/ublk: report error when unregister operation fails (Ming Lei) [RHEL-106845] - io_uring: convert cmd_to_io_kiocb() macro to function (Ming Lei) [RHEL-106845] - io_uring/uring_cmd: specify io_uring_cmd_import_fixed() pointer type (Ming Lei) [RHEL-106845] - io_uring/rsrc: use rq_data_dir() to compute bvec dir (Ming Lei) [RHEL-106845] - selftests: ublk: add ublk zero copy test (Ming Lei) [RHEL-106845] - selftests: ublk: add file backed ublk (Ming Lei) [RHEL-106845] - selftests: ublk: add kernel selftests for ublk (Ming Lei) [RHEL-106845] - io_uring: cache nodes and mapped buffers (Ming Lei) [RHEL-106845] - ublk: zc register/unregister bvec (Ming Lei) [RHEL-106845] - io_uring: add support for kernel registered bvecs (Ming Lei) [RHEL-106845] - io_uring/rw: move fixed buffer import to issue path (Ming Lei) [RHEL-106845] - io_uring/rw: move buffer_select outside generic prep (Ming Lei) [RHEL-106845] - io_uring/net: fix build warning for !CONFIG_COMPAT (Ming Lei) [RHEL-106845] - io_uring: rearrange opdef flags by use pattern (Ming Lei) [RHEL-106845] - io_uring/net: extract iovec import into a helper (Ming Lei) [RHEL-106845] - io_uring/net: unify *mshot_prep calls with compat (Ming Lei) [RHEL-106845] - io_uring/net: derive iovec storage later (Ming Lei) [RHEL-106845] - io_uring/net: verify msghdr before copying iovec (Ming Lei) [RHEL-106845] - io_uring/net: isolate msghdr copying code (Ming Lei) [RHEL-106845] - io_uring/net: simplify compat selbuf iov parsing (Ming Lei) [RHEL-106845] - io_uring/net: remove unnecessary REQ_F_NEED_CLEANUP (Ming Lei) [RHEL-106845] - io_uring: combine buffer lookup and import (Ming Lei) [RHEL-106845] - io_uring/net: reuse req->buf_index for sendzc (Ming Lei) [RHEL-106845] - io_uring/nop: reuse req->buf_index (Ming Lei) [RHEL-106845] - io_uring/rsrc: remove redundant check for valid imu (Ming Lei) [RHEL-106845] - io_uring/rw: open code io_prep_rw_setup() (Ming Lei) [RHEL-106845] - io_uring/rw: extract helper for iovec import (Ming Lei) [RHEL-106845] - io_uring/rw: rename io_import_iovec() (Ming Lei) [RHEL-106845] - io_uring/rw: allocate async data in io_prep_rw() (Ming Lei) [RHEL-106845] - io_uring: make io_poll_issue() sturdier (Ming Lei) [RHEL-106845] - io_uring/net: canonise accept mshot handling (Ming Lei) [RHEL-106845] - io_uring/net: fix accept multishot handling (Ming Lei) [RHEL-106845] - io_uring/net: use io_is_compat() (Ming Lei) [RHEL-106845] - io_uring/waitid: use io_is_compat() (Ming Lei) [RHEL-106845] - io_uring/rw: shrink io_iov_compat_buffer_select_prep (Ming Lei) [RHEL-106845] - io_uring/rw: compile out compat param passing (Ming Lei) [RHEL-106845] - io_uring/cmd: optimise !CONFIG_COMPAT flags setting (Ming Lei) [RHEL-106845] - io_uring: introduce io_is_compat() (Ming Lei) [RHEL-106845] - io_uring: use lockless_cq flag in io_req_complete_post() (Ming Lei) [RHEL-106845] - io_uring: pass struct io_tw_state by value (Ming Lei) [RHEL-106845] - io_uring: introduce type alias for io_tw_state (Ming Lei) [RHEL-106845] - io_uring/rsrc: avoid NULL check in io_put_rsrc_node() (Ming Lei) [RHEL-106845] - io_uring: pass ctx instead of req to io_init_req_drain() (Ming Lei) [RHEL-106845] - io_uring: use IO_REQ_LINK_FLAGS more (Ming Lei) [RHEL-106845] - io_uring/net: improve recv bundles (Ming Lei) [RHEL-106845] - io_uring/waitid: use generic io_cancel_remove() helper (Ming Lei) [RHEL-106845] - io_uring/futex: use generic io_cancel_remove() helper (Ming Lei) [RHEL-106845] - io_uring/cancel: add generic cancel helper (Ming Lei) [RHEL-106845] - io_uring/waitid: convert to io_cancel_remove_all() (Ming Lei) [RHEL-106845] - io_uring/futex: convert to io_cancel_remove_all() (Ming Lei) [RHEL-106845] - io_uring/cancel: add generic remove_all helper (Ming Lei) [RHEL-106845] - io_uring/kbuf: uninline __io_put_kbufs (Ming Lei) [RHEL-106845] - io_uring/kbuf: introduce io_kbuf_drop_legacy() (Ming Lei) [RHEL-106845] - io_uring/kbuf: open code __io_put_kbuf() (Ming Lei) [RHEL-106845] - io_uring/kbuf: remove legacy kbuf caching (Ming Lei) [RHEL-106845] - io_uring/kbuf: simplify __io_put_kbuf (Ming Lei) [RHEL-106845] - io_uring/kbuf: move locking into io_kbuf_drop() (Ming Lei) [RHEL-106845] - io_uring/kbuf: remove legacy kbuf kmem cache (Ming Lei) [RHEL-106845] - io_uring/kbuf: remove legacy kbuf bulk allocation (Ming Lei) [RHEL-106845] - io_uring: sanitise ring params earlier (Ming Lei) [RHEL-106845] - io_uring: check for iowq alloc_workqueue failure (Ming Lei) [RHEL-106845] - io_uring: deduplicate caches deallocation (Ming Lei) [RHEL-106845] - io_uring/io-wq: pass io_wq to io_get_next_work() (Ming Lei) [RHEL-106845] - io_uring/io-wq: do not use bogus hash value (Ming Lei) [RHEL-106845] - io_uring/io-wq: cache work->flags in variable (Ming Lei) [RHEL-106845] - io_uring/io-wq: move worker lists to struct io_wq_acct (Ming Lei) [RHEL-106845] - io_uring/io-wq: add io_worker.acct pointer (Ming Lei) [RHEL-106845] - io_uring/io-wq: eliminate redundant io_work_get_acct() calls (Ming Lei) [RHEL-106845] - io_uring/net: fix sendzc double notif flush (Ming Lei) [RHEL-106845] - io_uring/net: don't clear REQ_F_NEED_CLEANUP unconditionally (Ming Lei) [RHEL-106845] - io_uring/rw: ensure reissue path is correctly handled for IOPOLL (Ming Lei) [RHEL-106845] - io_uring/net: save msg_control for compat (Ming Lei) [RHEL-106845] - io_uring/rw: clean up mshot forced sync mode (Ming Lei) [RHEL-106845] - io_uring/rw: move ki_complete init into prep (Ming Lei) [RHEL-106845] - io_uring/rw: don't directly use ki_complete (Ming Lei) [RHEL-106845] - io_uring/rw: forbid multishot async reads (Ming Lei) [RHEL-106845] - io_uring/rsrc: remove unused constants (Ming Lei) [RHEL-106845] - io_uring: fix spelling error in uapi io_uring.h (Ming Lei) [RHEL-106845] - io-wq: backoff when retrying worker creation (Ming Lei) [RHEL-106845] - io_uring/uring_cmd: unconditionally copy SQEs at prep time (Ming Lei) [RHEL-106845] - io_uring/waitid: setup async data in the prep handler (Ming Lei) [RHEL-106845] - io_uring/uring_cmd: remove dead req_has_async_data() check (Ming Lei) [RHEL-106845] - io_uring/uring_cmd: switch sqe to async_data on EAGAIN (Ming Lei) [RHEL-106845] - io_uring/uring_cmd: don't assume io_uring_cmd_data layout (Ming Lei) [RHEL-106845] - io_uring/kbuf: reallocate buf lists on upgrade (Ming Lei) [RHEL-106845] {CVE-2025-21836} - io_uring/waitid: don't abuse io_tw_state (Ming Lei) [RHEL-106845] - io_uring/net: don't retry connect operation on EPOLLERR (Ming Lei) [RHEL-106845] - io_uring/rw: simplify io_rw_recycle() (Ming Lei) [RHEL-106845] - io_uring: remove !KASAN guards from cache free (Ming Lei) [RHEL-106845] - io_uring/net: extract io_send_select_buffer() (Ming Lei) [RHEL-106845] - io_uring/net: clean io_msg_copy_hdr() (Ming Lei) [RHEL-106845] - io_uring/net: make io_net_vec_assign() return void (Ming Lei) [RHEL-106845] - io_uring: add alloc_cache.c (Ming Lei) [RHEL-106845] - io_uring: dont ifdef io_alloc_cache_kasan() (Ming Lei) [RHEL-106845] - io_uring: include all deps for alloc_cache.h (Ming Lei) [RHEL-106845] - io_uring: fix multishots with selected buffers (Ming Lei) [RHEL-106845] - io_uring/register: use atomic_read/write for sq_flags migration (Ming Lei) [RHEL-106845] - io_uring/alloc_cache: get rid of _nocache() helper (Ming Lei) [RHEL-106845] - io_uring: get rid of alloc cache init_once handling (Ming Lei) [RHEL-106845] - io_uring/uring_cmd: cleanup struct io_uring_cmd_data layout (Ming Lei) [RHEL-106845] - io_uring/uring_cmd: use cached cmd_op in io_uring_cmd_sock() (Ming Lei) [RHEL-106845] - io_uring/msg_ring: don't leave potentially dangling ->tctx pointer (Ming Lei) [RHEL-106845] - io_uring/rsrc: Move lockdep assert from io_free_rsrc_node() to caller (Ming Lei) [RHEL-106845] - io_uring/rsrc: remove unused parameter ctx for io_rsrc_node_alloc() (Ming Lei) [RHEL-106845] - io_uring: clean up io_uring_register_get_file() (Ming Lei) [RHEL-106845] - io_uring/rsrc: Simplify buffer cloning by locking both rings (Ming Lei) [RHEL-106845] - io_uring/fdinfo: fix io_uring_show_fdinfo() misuse of ->d_iname (Ming Lei) [RHEL-106845] - io_uring: reuse io_should_terminate_tw() for cmds (Ming Lei) [RHEL-106845] - io_uring: Factor out a function to parse restrictions (Ming Lei) [RHEL-106845] - io_uring/rsrc: require cloned buffers to share accounting contexts (Ming Lei) [RHEL-106845] - io_uring: simplify the SQPOLL thread check when cancelling requests (Ming Lei) [RHEL-106845] - io_uring: expose read/write attribute capability (Ming Lei) [RHEL-106845] - io_uring/rw: don't gate retry on completion context (Ming Lei) [RHEL-106845] - io_uring/rw: handle -EAGAIN retry at IO completion time (Ming Lei) [RHEL-106845] - io_uring/rw: use io_rw_recycle() from cleanup path (Ming Lei) [RHEL-106845] - io_uring/rsrc: simplify the bvec iter count calculation (Ming Lei) [RHEL-106845] - io_uring: ensure io_queue_deferred() is out-of-line (Ming Lei) [RHEL-106845] - io_uring/rw: always clear ->bytes_done on io_async_rw setup (Ming Lei) [RHEL-106845] - io_uring/rw: use NULL for rw->free_iovec assigment (Ming Lei) [RHEL-106845] - io_uring/msg_ring: Drop custom destructor (Ming Lei) [RHEL-106845] - io_uring: Move old async data allocation helper to header (Ming Lei) [RHEL-106845] - io_uring/rw: Allocate async data through helper (Ming Lei) [RHEL-106845] - io_uring/net: Allocate msghdr async data through helper (Ming Lei) [RHEL-106845] - io_uring/uring_cmd: Allocate async data through generic helper (Ming Lei) [RHEL-106845] - io_uring/poll: Allocate apoll with generic alloc_cache helper (Ming Lei) [RHEL-106845] - io_uring/futex: Allocate ifd with generic alloc_cache helper (Ming Lei) [RHEL-106845] - io_uring: Add generic helper to allocate async data (Ming Lei) [RHEL-106845] - io_uring: Fold allocation into alloc_cache helper (Ming Lei) [RHEL-106845] - io_uring: prevent reg-wait speculations (Ming Lei) [RHEL-106845] {CVE-2024-58000} - io_uring: don't vmap single page regions (Ming Lei) [RHEL-106845] - io_uring: clean up io_prep_rw_setup() (Ming Lei) [RHEL-106845] - io_uring/kbuf: fix unintentional sign extension on shift of reg.bgid (Ming Lei) [RHEL-106845] - io_uring/memmap: unify io_uring mmap'ing code (Ming Lei) [RHEL-106845] - io_uring/kbuf: use region api for pbuf rings (Ming Lei) [RHEL-106845] - io_uring/kbuf: remove pbuf ring refcounting (Ming Lei) [RHEL-106845] - io_uring/kbuf: use mmap_lock to sync with mmap (Ming Lei) [RHEL-106845] - io_uring: use region api for CQ (Ming Lei) [RHEL-106845] - io_uring: use region api for SQ (Ming Lei) [RHEL-106845] - io_uring: pass ctx to io_register_free_rings (Ming Lei) [RHEL-106845] - io_uring/memmap: implement mmap for regions (Ming Lei) [RHEL-106845] - io_uring/memmap: implement kernel allocated regions (Ming Lei) [RHEL-106845] - io_uring/memmap: add IO_REGION_F_SINGLE_REF (Ming Lei) [RHEL-106845] - io_uring/memmap: helper for pinning region pages (Ming Lei) [RHEL-106845] - io_uring/memmap: optimise single folio regions (Ming Lei) [RHEL-106845] - io_uring/memmap: reuse io_free_region for failure path (Ming Lei) [RHEL-106845] - io_uring/memmap: account memory before pinning (Ming Lei) [RHEL-106845] - io_uring/memmap: flag regions with user pages (Ming Lei) [RHEL-106845] - io_uring/memmap: flag vmap'ed regions (Ming Lei) [RHEL-106845] - io_uring/rsrc: export io_check_coalesce_buffer (Ming Lei) [RHEL-106845] - io_uring: rename ->resize_lock (Ming Lei) [RHEL-106845] - io_uring: add io_uring_cmd_get_async_data helper (Ming Lei) [RHEL-106845] - io_uring/cmd: let cmds to know about dying task (Ming Lei) [RHEL-106845] - io_uring/cmd: add per-op data to struct io_uring_cmd_data (Ming Lei) [RHEL-106845] - io_uring/cmd: rename struct uring_cache to io_uring_cmd_data (Ming Lei) [RHEL-106845] - io_uring/uring_cmd: defer SQE copying until it's needed (Ming Lei) [RHEL-106845] - io_uring/register: cache old SQ/CQ head reading for copies (Ming Lei) [RHEL-106845] - io_uring/register: document io_register_resize_rings() shared mem usage (Ming Lei) [RHEL-106845] - io_uring/register: use stable SQ/CQ ring data during resize (Ming Lei) [RHEL-106845] - io_uring/rsrc: fixup io_clone_buffers() error handling (Ming Lei) [RHEL-106845] - io_uring: don't touch sqd->thread off tw add (Ming Lei) [RHEL-106845] - io_uring: silence false positive warnings (Ming Lei) [RHEL-106845] - io_uring/timeout: fix multishot updates (Ming Lei) [RHEL-106845] - io_uring/kbuf: use pre-committed buffer address for non-pollable file (Ming Lei) [RHEL-106845] - io_uring/net: always initialize kmsg->msg.msg_inq upfront (Ming Lei) [RHEL-106845] - io_uring/timeout: flush timeouts outside of the timeout lock (Ming Lei) [RHEL-106845] - io_uring/rw: fix downgraded mshot read (Ming Lei) [RHEL-106845] - io_uring/sqpoll: fix sqpoll error handling races (Ming Lei) [RHEL-106845] - io_uring: check if iowq is killed before queuing (Ming Lei) [RHEL-106845] {CVE-2024-56709} - io_uring/register: limit ring resizing to DEFER_TASKRUN (Ming Lei) [RHEL-106845] - io_uring: Fix registered ring file refcount leak (Ming Lei) [RHEL-106845] - io_uring: make ctx->timeout_lock a raw spinlock (Ming Lei) [RHEL-106845] - io_uring/rsrc: don't put/free empty buffers (Ming Lei) [RHEL-106845] - io_uring: Change res2 parameter type in io_uring_cmd_done (Ming Lei) [RHEL-106845] - io_uring/tctx: work around xa_store() allocation error issue (Ming Lei) [RHEL-106845] {CVE-2024-56584} - io_uring: fix corner case forgetting to vunmap (Ming Lei) [RHEL-106845] - io_uring: fix task_work cap overshooting (Ming Lei) [RHEL-106845] - io_uring: check for overflows in io_pin_pages (Ming Lei) [RHEL-106845] {CVE-2024-53187} - io_uring/nop: ensure nop->fd is always initialized (Ming Lei) [RHEL-106845] - io_uring: limit local tw done (Ming Lei) [RHEL-106845] - io_uring: add io_local_work_pending() (Ming Lei) [RHEL-106845] - io_uring/region: return negative -E2BIG in io_create_region() (Ming Lei) [RHEL-106845] - io_uring: protect register tracing (Ming Lei) [RHEL-106845] - io_uring: remove io_uring_cqwait_reg_arg (Ming Lei) [RHEL-106845] - io_uring/region: fix error codes after failed vmap (Ming Lei) [RHEL-106845] - io_uring: restore back registered wait arguments (Ming Lei) [RHEL-106845] - io_uring: add memory region registration (Ming Lei) [RHEL-106845] - io_uring: introduce concept of memory regions (Ming Lei) [RHEL-106845] - io_uring: temporarily disable registered waits (Ming Lei) [RHEL-106845] - io_uring: disable ENTER_EXT_ARG_REG for IOPOLL (Ming Lei) [RHEL-106845] - io_uring: fortify io_pin_pages with a warning (Ming Lei) [RHEL-106845] - switch io_msg_ring() to CLASS(fd) (Ming Lei) [RHEL-106845] - io_uring: fix invalid hybrid polling ctx leaks (Ming Lei) [RHEL-106845] - io_uring/uring_cmd: fix buffer index retrieval (Ming Lei) [RHEL-106845] - io_uring/rsrc: add & apply io_req_assign_buf_node() (Ming Lei) [RHEL-106845] - io_uring/rsrc: remove '->ctx_ptr' of 'struct io_rsrc_node' (Ming Lei) [RHEL-106845] - io_uring/rsrc: pass 'struct io_ring_ctx' reference to rsrc helpers (Ming Lei) [RHEL-106845] - io_uring: avoid normal tw intermediate fallback (Ming Lei) [RHEL-106845] - io_uring/napi: add static napi tracking strategy (Ming Lei) [RHEL-106845] - io_uring/napi: clean up __io_napi_do_busy_loop (Ming Lei) [RHEL-106845] - io_uring/napi: Use lock guards (Ming Lei) [RHEL-106845] - io_uring/napi: improve __io_napi_add (Ming Lei) [RHEL-106845] - io_uring/napi: fix io_napi_entry RCU accesses (Ming Lei) [RHEL-106845] - io_uring/napi: protect concurrent io_napi_entry timeout accesses (Ming Lei) [RHEL-106845] - io_uring: prevent speculating sq_array indexing (Ming Lei) [RHEL-106845] - io_uring: move struct io_kiocb from task_struct to io_uring_task (Ming Lei) [RHEL-106845] - io_uring: remove task ref helpers (Ming Lei) [RHEL-106845] - io_uring: move cancelations to be io_uring_task based (Ming Lei) [RHEL-106845] - io_uring/rsrc: split io_kiocb node type assignments (Ming Lei) [RHEL-106845] - io_uring/rsrc: encode node type and ctx together (Ming Lei) [RHEL-106845] - io_uring: add support for hybrid IOPOLL (Ming Lei) [RHEL-106845] - io_uring/rsrc: allow cloning with node replacements (Ming Lei) [RHEL-106845] - io_uring/rsrc: allow cloning at an offset (Ming Lei) [RHEL-106845] - io_uring/rsrc: get rid of the empty node and dummy_ubuf (Ming Lei) [RHEL-106845] - io_uring/rsrc: add io_reset_rsrc_node() helper (Ming Lei) [RHEL-106845] - io_uring/filetable: kill io_reset_alloc_hint() helper (Ming Lei) [RHEL-106845] - io_uring/filetable: remove io_file_from_index() helper (Ming Lei) [RHEL-106845] - io_uring/rsrc: add io_rsrc_node_lookup() helper (Ming Lei) [RHEL-106845] - io_uring/rsrc: unify file and buffer resource tables (Ming Lei) [RHEL-106845] - io_uring: only initialize io_kiocb rsrc_nodes when needed (Ming Lei) [RHEL-106845] - io_uring/rsrc: add an empty io_rsrc_node for sparse buffer entries (Ming Lei) [RHEL-106845] - io_uring/rsrc: get rid of io_rsrc_node allocation cache (Ming Lei) [RHEL-106845] - io_uring/rsrc: get rid of per-ring io_rsrc_node list (Ming Lei) [RHEL-106845] - io_uring/rsrc: kill io_charge_rsrc_node() (Ming Lei) [RHEL-106845] - io_uring/splice: open code 2nd direct file assignment (Ming Lei) [RHEL-106845] - io_uring: specify freeptr usage for SLAB_TYPESAFE_BY_RCU io_kiocb cache (Ming Lei) [RHEL-106845] - io_uring/rsrc: move struct io_fixed_file to rsrc.h header (Ming Lei) [RHEL-106845] - io_uring/nop: add support for testing registered files and buffers (Ming Lei) [RHEL-106845] - io_uring: add support for fixed wait regions (Ming Lei) [RHEL-106845] - io_uring: change io_get_ext_arg() to use uaccess begin + end (Ming Lei) [RHEL-106845] - io_uring: switch struct ext_arg from __kernel_timespec to timespec64 (Ming Lei) [RHEL-106845] - io_uring/sqpoll: wait on sqd->wait for thread parking (Ming Lei) [RHEL-106845] - io_uring/register: add IORING_REGISTER_RESIZE_RINGS (Ming Lei) [RHEL-106845] - io_uring/memmap: explicitly return -EFAULT for mmap on NULL rings (Ming Lei) [RHEL-106845] - io_uring: abstract out a bit of the ring filling logic (Ming Lei) [RHEL-106845] - io_uring: move max entry definition and ring sizing into header (Ming Lei) [RHEL-106845] - io_uring/net: clean up io_msg_copy_hdr (Ming Lei) [RHEL-106845] - io_uring/net: don't alias send user pointer reads (Ming Lei) [RHEL-106845] - io_uring/net: don't store send address ptr (Ming Lei) [RHEL-106845] - io_uring/net: split send and sendmsg prep helpers (Ming Lei) [RHEL-106845] - io_uring: kill 'imu' from struct io_kiocb (Ming Lei) [RHEL-106845] - io_uring/net: move send zc fixed buffer import to issue path (Ming Lei) [RHEL-106845] - io_uring: remove 'issue_flags' argument for io_req_set_rsrc_node() (Ming Lei) [RHEL-106845] - io_uring/rw: get rid of using req->imu (Ming Lei) [RHEL-106845] - io_uring/uring_cmd: get rid of using req->imu (Ming Lei) [RHEL-106845] - io_uring/rsrc: don't assign bvec twice in io_import_fixed() (Ming Lei) [RHEL-106845] - io_uring: clean up cqe trace points (Ming Lei) [RHEL-106845] - io_uring: static_key for !IORING_SETUP_NO_SQARRAY (Ming Lei) [RHEL-106845] - io_uring: kill io_llist_xchg (Ming Lei) [RHEL-106845] - io_uring: move cancel hash tables to kvmalloc/kvfree (Ming Lei) [RHEL-106845] - io_uring/cancel: get rid of init_hash_table() helper (Ming Lei) [RHEL-106845] - io_uring/poll: get rid of per-hashtable bucket locks (Ming Lei) [RHEL-106845] - io_uring/poll: get rid of io_poll_tw_hash_eject() (Ming Lei) [RHEL-106845] - io_uring/poll: get rid of unlocked cancel hash (Ming Lei) [RHEL-106845] - io_uring/poll: remove 'ctx' argument from io_poll_req_delete() (Ming Lei) [RHEL-106845] - io_uring/msg_ring: add support for sending a sync message (Ming Lei) [RHEL-106845] - io_uring/msg_ring: refactor a few helper functions (Ming Lei) [RHEL-106845] - io_uring/eventfd: move ctx->evfd_last_cq_tail into io_ev_fd (Ming Lei) [RHEL-106845] - io_uring/eventfd: abstract out ev_fd grab + release helpers (Ming Lei) [RHEL-106845] - io_uring/eventfd: move trigger check into a helper (Ming Lei) [RHEL-106845] - io_uring/eventfd: move actual signaling part into separate helper (Ming Lei) [RHEL-106845] - io_uring/eventfd: check for the need to async notifier earlier (Ming Lei) [RHEL-106845] * Fri Sep 12 2025 CKI KWF Bot [6.12.0-129.el10] - s390/pci: Allow automatic recovery with minimal driver support (Mete Durlu) [RHEL-110239] * Thu Sep 11 2025 CKI KWF Bot [6.12.0-128.el10] - ibmvnic: Increase max subcrq indirect entries with fallback (Mamatha Inamdar) [RHEL-112760] * Tue Sep 09 2025 Scott Weaver [6.12.0-127.el10] - s390/hypfs: Enable limited access during lockdown (Mete Durlu) [RHEL-111203] - s390/hypfs: Avoid unnecessary ioctl registration in debugfs (Mete Durlu) [RHEL-111203] - hwmon: Add static visibility member to struct hwmon_ops (CKI Backport Bot) [RHEL-105091] - dpll: zl3073x: ZL3073X_I2C and ZL3073X_SPI should depend on NET (Ivan Vecera) [RHEL-104973] - dpll: Make ZL3073X invisible (Ivan Vecera) [RHEL-104973] - dpll: zl3073x: Fix build failure (Ivan Vecera) [RHEL-104973] - redhat/configs: enable CONFIG_ZL3073X* (Ivan Vecera) [RHEL-104973] - redhat/configs: enable CONFIG_I2C_MUX_PCA954x on x86 (Ivan Vecera) [RHEL-104973] - dpll: zl3073x: Add support to get fractional frequency offset (Ivan Vecera) [RHEL-104973] - dpll: zl3073x: Add support to adjust phase (Ivan Vecera) [RHEL-104973] - dpll: zl3073x: Implement phase offset monitor feature (Ivan Vecera) [RHEL-104973] - dpll: zl3073x: Add support to get phase offset on connected input pin (Ivan Vecera) [RHEL-104973] - dpll: zl3073x: Add support to get/set esync on pins (Ivan Vecera) [RHEL-104973] - dpll: zl3073x: Add support to get/set frequency on pins (Ivan Vecera) [RHEL-104973] - dpll: zl3073x: Implement input pin state setting in automatic mode (Ivan Vecera) [RHEL-104973] - dpll: zl3073x: Add support to get/set priority on input pins (Ivan Vecera) [RHEL-104973] - dpll: zl3073x: Implement input pin selection in manual mode (Ivan Vecera) [RHEL-104973] - dpll: zl3073x: Register DPLL devices and pins (Ivan Vecera) [RHEL-104973] - dpll: zl3073x: Read DPLL types and pin properties from system firmware (Ivan Vecera) [RHEL-104973] - dpll: zl3073x: Fetch invariants during probe (Ivan Vecera) [RHEL-104973] - dpll: Add basic Microchip ZL3073x support (Ivan Vecera) [RHEL-104973] - dt-bindings: dpll: Add support for Microchip Azurite chip family (Ivan Vecera) [RHEL-104973] - dt-bindings: dpll: Add DPLL device and pin (Ivan Vecera) [RHEL-104973] - x86/CPU/AMD: Ignore invalid reset reason value (Steve Best) [RHEL-101301] - x86/CPU/AMD: Add X86_FEATURE_ZEN6 (Steve Best) [RHEL-106911] - x86/cpufeatures: Free up unused feature bits (Steve Best) [RHEL-106911] - intel_idle: Allow loading ACPI tables for any family (Steve Best) [RHEL-110839] - intel_idle: Update arguments of mwait_idle_with_hints() (Steve Best) [RHEL-110839] - intel_idle: Rescan "dead" SMT siblings during initialization (Steve Best) [RHEL-110839] - x86/smp: PM/hibernate: Split arch_resume_nosmt() (Steve Best) [RHEL-110839] - intel_idle: Use subsys_initcall_sync() for initialization (Steve Best) [RHEL-110839] - intel_idle: Add C1 demotion on/off sysfs knob (Steve Best) [RHEL-110839] - Move FCH header to a location accessible by all archs (Steve Best) [RHEL-103121] - platform/x86/amd/pmc: Add PCSpecialist Lafite Pro V 14M to 8042 quirks list (Steve Best) [RHEL-103121] - platform/x86/amd: pmc: Clear metrics table at start of cycle (Steve Best) [RHEL-103121] - platform/x86/amd/pmc: Declare quirk_spurious_8042 for MECHREVO Wujie 14XA (GX4HRXL) (Steve Best) [RHEL-103121] - platform/x86/amd: pmc: Require at least 2.5 seconds between HW sleep cycles (Steve Best) [RHEL-103121] - x86/platform/amd: Move the header to (Steve Best) [RHEL-103121] - x86/mce/amd: Remove shared threshold bank plumbing (Steve Best) [RHEL-103121] - platform/x86/amd/pmc: fix leak in probe() (Steve Best) [RHEL-103121] - platform/x86/amd/pmc: Use managed APIs for mutex (Steve Best) [RHEL-103121] - platform/x86/amd/pmc: Remove unnecessary line breaks (Steve Best) [RHEL-103121] - platform/x86/amd/pmc: Move macros and structures to the PMC header file (Steve Best) [RHEL-103121] - platform/x86/amd/pmc: Notify user when platform does not support s0ix transition (Steve Best) [RHEL-103121] - platform/x86: amd: Use *-y instead of *-objs in Makefiles [partial] (Steve Best) [RHEL-103121] - platform/x86/amd/pmc: Only disable IRQ1 wakeup where i8042 actually enabled it (Steve Best) [RHEL-103121] - platform/x86/amd: pmc: Use guard(mutex) (Steve Best) [RHEL-103121] - platform/x86/amd/pmc: Add STB support for AMD Desktop variants (Steve Best) [RHEL-103121] - platform/x86/amd/pmc: Update S2D message id for 1Ah Family 70h model (Steve Best) [RHEL-103121] - platform/x86/amd/pmc: Update IP information structure for newer SoCs (Steve Best) [RHEL-103121] - platform/x86/amd/pmc: Use ARRAY_SIZE() to fill num_ips information (Steve Best) [RHEL-103121] - platform/x86/amd/pmc: Isolate STB code changes to a new file (Steve Best) [RHEL-103121] - platform/x86/amd/pmc: Define enum for S2D/PMC msg_port and add helper function (Steve Best) [RHEL-103121] - platform/x86/amd/pmc: Update function names to align with new STB file (Steve Best) [RHEL-103121] - platform/x86/amd/pmc: Move STB functionality to a new file for better code organization (Steve Best) [RHEL-103121] - platform/x86/amd/pmc: Move STB block into amd_pmc_s2d_init() (Steve Best) [RHEL-103121] - docs: core-api: document the IOVA-based API (Eder Zulian) [RHEL-73606] - dma-mapping: add a dma_need_unmap helper (Eder Zulian) [RHEL-73606] - dma-mapping: Implement link/unlink ranges API (Eder Zulian) [RHEL-73606] - iommu/dma: Factor out a iommu_dma_map_swiotlb helper (Eder Zulian) [RHEL-73606] - dma-mapping: Provide an interface to allow allocate IOVA (Eder Zulian) [RHEL-73606] - iommu: add kernel-doc for iommu_unmap_fast (Eder Zulian) [RHEL-73606] - iommu: generalize the batched sync after map interface (Eder Zulian) [RHEL-73606] - dma-mapping: move the PCI P2PDMA mapping helpers to pci-p2pdma.h (Eder Zulian) [RHEL-73606] - PCI/P2PDMA: Refactor the p2pdma mapping helpers (Eder Zulian) [RHEL-73606] - s390/ism: fix concurrency management in ism_cmd() (Mete Durlu) [RHEL-110207] - redhat/configs: Enable CONFIG_X86_BUS_LOCK_DETECT (John Allen) [RHEL-50321] - x86/bus_lock: Add support for AMD (John Allen) [RHEL-50321] - x86/split_lock: Move Split and Bus lock code to a dedicated file (John Allen) [RHEL-50321] * Wed Sep 03 2025 Scott Weaver [6.12.0-126.el10] - platform/x86/amd: pmf: Simplify error flow in amd_pmf_init_smart_pc() (Steve Best) [RHEL-104142] - platform/x86/amd: pmf: Prevent amd_pmf_tee_deinit() from running twice (Steve Best) [RHEL-104142] - platform/x86/amd: pmf: Use device managed allocations (Steve Best) [RHEL-104142] - drivers/platform/x86/amd: pmf: Check for invalid Smart PC Policies (Steve Best) [RHEL-104142] - drivers/platform/x86/amd: pmf: Check for invalid sideloaded Smart PC Policies (Steve Best) [RHEL-104142] - platform/x86: amd: pmf: Fix STT limits (Steve Best) [RHEL-104142] - platform/x86/amd/pmf: convert timeouts to secs_to_jiffies() (Steve Best) [RHEL-104142] - platform/x86/amd/pmf: fix cleanup in amd_pmf_init_smart_pc() (Steve Best) [RHEL-104142] - platform/x86/amd/pmf: Update PMF Driver for Compatibility with new PMF-TA (Steve Best) [RHEL-104142] - platform/x86/amd/pmf: Propagate PMF-TA return codes (Steve Best) [RHEL-104142] - platform/x86/amd/pmf: Initialize and clean up `cb_mutex` (Steve Best) [RHEL-104142] - platform/x86: amd: Use *-y instead of *-objs in Makefiles [partial] (Steve Best) [RHEL-104142] - platform/x86/amd/pmf: Get SRA sensor data from AMD SFH driver (Steve Best) [RHEL-104142] - platform/x86/amd: pmf: Switch to guard(mutex) (Steve Best) [RHEL-104142] - platform/x86/amd/pmf: Enable Custom BIOS Inputs for PMF-TA (Steve Best) [RHEL-104142] - platform/x86/amd: pmf: Drop all quirks (Steve Best) [RHEL-104142] - platform/x86/amd/pmf: Switch to platform_get_resource() and devm_ioremap_resource() (Steve Best) [RHEL-104142] - platform/x86/amd/pmf: Use dev_err_probe() to simplify error handling (Steve Best) [RHEL-104142] - netfs: Fix unbuffered write error handling (Paulo Alcantara) [RHEL-104442] - redhat/configs: enable CONFIG_TCG_ARM_CRB_FFA on aarch64 (Marcin Juszkiewicz) [RHEL-102692] - tpm_crb_ffa: Remove unused export (Marcin Juszkiewicz) [RHEL-102692] - tpm_crb: ffa_tpm: Implement driver compliant to CRB over FF-A (Marcin Juszkiewicz) [RHEL-102692] - tpm_crb: Add support for the ARM FF-A start method (Marcin Juszkiewicz) [RHEL-102692] - ACPICA: Add start method for ARM FF-A (Marcin Juszkiewicz) [RHEL-102692] - Documentation: tpm: Add documentation for the CRB FF-A interface (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Fix the missing entry in struct ffa_indirect_msg_hdr (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Replace mutex with rwlock to avoid sleep in atomic context (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Move memory allocation outside the mutex locking (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Fix memory leak by freeing notifier callback node (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Skip Rx buffer ownership release if not acquired (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Set dma_mask for ffa devices (Marcin Juszkiewicz) [RHEL-102692] {CVE-2025-38043} - firmware: arm_ffa: Skip the first/partition ID when parsing vCPU list (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Explicitly cast return value from NOTIFICATION_INFO_GET (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Explicitly cast return value from FFA_VERSION before comparison (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Handle ffa_notification_get correctly at virtual FF-A instance (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Allow multiple UUIDs per partition to register SRI callback (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Add support for handling framework notifications (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Add support for {un,}registration of framework notifications (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Stash ffa_device instead of notify_type in notifier_cb_info (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Refactoring to prepare for framework notification support (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Remove unnecessary declaration of ffa_partitions_cleanup() (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Reject higher major version as incompatible (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Upgrade FF-A version to v1.2 in the driver (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Add support for passing UUID in FFA_MSG_SEND2 (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Unregister the FF-A devices when cleaning up the partitions (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Handle the presence of host partition in the partition info (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Refactor addition of partition information into XArray (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Fix big-endian support in __ffa_partition_info_regs_get() (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Fix big-endian support in __ffa_partition_info_get() (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Align sync_send_receive{,2} function prototypes (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Replace UUID buffer to standard UUID format (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Replace SCMI by FF-A in the macro (Marcin Juszkiewicz) [RHEL-102692] - firmware: arm_ffa: Fix the race around setting ffa_dev->properties (Marcin Juszkiewicz) [RHEL-102692] - perf sched timehist: decode process names of processes in zombie state (Anubhav Shelat) [RHEL-68347] - tools/power turbostat: version 2025.09.09 (Steve Best) [RHEL-110366] - tools/power turbostat: Handle non-root legacy-uncore sysfs permissions (Steve Best) [RHEL-110366] - tools/power turbostat: standardize PER_THREAD_PARAMS (Steve Best) [RHEL-110366] - tools/power turbostat: Fix DMR support (Steve Best) [RHEL-110366] - tools/power turbostat: add format "average" for external attributes (Steve Best) [RHEL-110366] - tools/power turbostat: delete GET_PKG() (Steve Best) [RHEL-110366] - tools/power turbostat: probe and display L3 cache topology (Steve Best) [RHEL-110366] - tools/power turbostat: Support more than 64 built-in-counters (Steve Best) [RHEL-110366] - tools/power turbostat: Fix bogus SysWatt for forked program (Steve Best) [RHEL-110366] - tools/power turbostat: Handle cap_get_proc() ENOSYS (Steve Best) [RHEL-110366] - tools/power turbostat: Fix build with musl (Steve Best) [RHEL-110366] - tools/power turbostat: verify arguments to params --show and --hide (Steve Best) [RHEL-110366] - tools/power turbostat: regression fix: --show C1E%% (Steve Best) [RHEL-110366] - tools/power turbostat: version 2025.06.08 (Steve Best) [RHEL-110366] - tools/power turbostat: Add initial support for BartlettLake (Steve Best) [RHEL-110366] - x86/cpu: Add CPU model number for Bartlett Lake CPUs with Raptor Cove cores (Steve Best) [RHEL-110366] - tools/power turbostat: Add initial support for DMR (Steve Best) [RHEL-110366] - tools/power turbostat: Dump RAPL sysfs info (Steve Best) [RHEL-110366] - tools/power turbostat: Avoid probing the same perf counters (Steve Best) [RHEL-110366] - tools/power turbostat: Allow probing RAPL with platform_features->rapl_msrs cleared (Steve Best) [RHEL-110366] - tools/power turbostat: Clean up add perf/msr counter logic (Steve Best) [RHEL-110366] - tools/power turbostat: Introduce add_msr_counter() (Steve Best) [RHEL-110366] - tools/power turbostat: Remove add_msr_perf_counter_() (Steve Best) [RHEL-110366] - tools/power turbostat: Remove add_cstate_perf_counter_() (Steve Best) [RHEL-110366] - tools/power turbostat: Remove add_rapl_perf_counter_() (Steve Best) [RHEL-110366] - tools/power turbostat: Quit early for unsupported RAPL counters (Steve Best) [RHEL-110366] - tools/power turbostat: Always check rapl_joules flag (Steve Best) [RHEL-110366] - tools/power turbostat: Fix AMD package-energy reporting (Steve Best) [RHEL-110366] - tools/power turbostat: Fix RAPL_GFX_ALL typo (Steve Best) [RHEL-110366] - tools/power turbostat: Add Android support for MSR device handling (Steve Best) [RHEL-110366] - coredump: Only sort VMAs when core_sort_vma sysctl is set (Herton R. Krzesinski) [RHEL-96077] - misc: pci_endpoint_test: Defer IRQ allocation until ioctl(PCITEST_SET_IRQTYPE) (Myron Stowe) [RHEL-86521] - selftests/pcie_bwctrl: Fix test progs list (Myron Stowe) [RHEL-86521] - PCI: Restore assigned resources fully after release (Myron Stowe) [RHEL-86521] - PCI: Fix typos (Myron Stowe) [RHEL-86521] - PCI: intel-gw: Remove intel_pcie_cpu_addr() (Myron Stowe) [RHEL-86521] - PCI: imx6: Remove imx_pcie_cpu_addr_fixup() (Myron Stowe) [RHEL-86521] - PCI: dwc: Use parent_bus_offset to remove need for .cpu_addr_fixup() (Myron Stowe) [RHEL-86521] - PCI: dwc: ep: Ensure proper iteration over outbound map windows (Myron Stowe) [RHEL-86521] - PCI: dwc: ep: Use devicetree 'reg[addr_space]' to derive CPU -> ATU addr offset (Myron Stowe) [RHEL-86521] - PCI: dwc: ep: Consolidate devicetree handling in dw_pcie_ep_get_resources() (Myron Stowe) [RHEL-86521] - PCI: dwc: ep: Call epc_create() early in dw_pcie_ep_init() (Myron Stowe) [RHEL-86521] - PCI: dwc: Use devicetree 'reg[config]' to derive CPU -> ATU addr offset (Myron Stowe) [RHEL-86521] - PCI: dwc: Add dw_pcie_parent_bus_offset() checking and debug (Myron Stowe) [RHEL-86521] - PCI: dwc: Add dw_pcie_parent_bus_offset() (Myron Stowe) [RHEL-86521] - PCI: dwc: Consolidate devicetree handling in dw_pcie_host_get_resources() (Myron Stowe) [RHEL-86521] - PCI: dwc: Call devm_pci_alloc_host_bridge() early in dw_pcie_host_init() (Myron Stowe) [RHEL-86521] - PCI: dwc: Rename cpu_addr to parent_bus_addr for ATU configuration (Myron Stowe) [RHEL-86521] - PCI: dwc: Use resource start as ioremap() input in dw_pcie_pme_turn_off() (Myron Stowe) [RHEL-86521] - PCI: xilinx-cpm: Add cpm_csr register mapping for CPM5_HOST1 variant (Myron Stowe) [RHEL-86521] - PCI: xilinx-cpm: Add support for Versal Net CPM5NC Root Port controller (Myron Stowe) [RHEL-86521] - dt-bindings: PCI: xilinx-cpm: Add compatible string for CPM5NC Versal Net host (Myron Stowe) [RHEL-86521] - PCI: xilinx-cpm: Fix IRQ domain leak in error path of probe (Myron Stowe) [RHEL-86521] - PCI: qcom-ep: Enable EP mode support for SAR2130P (Myron Stowe) [RHEL-86521] - dt-bindings: PCI: qcom-ep: Add SAR2130P compatible (Myron Stowe) [RHEL-86521] - dt-bindings: PCI: qcom-ep: Consolidate DMA vs non-DMA cases (Myron Stowe) [RHEL-86521] - dt-bindings: PCI: qcom-ep: Enable DMA for SM8450 (Myron Stowe) [RHEL-86521] - dt-bindings: PCI: qcom-ep: Describe optional IOMMU (Myron Stowe) [RHEL-86521] - dt-bindings: PCI: qcom-ep: Describe optional dma-coherent property (Myron Stowe) [RHEL-86521] - PCI: qcom-ep: Mark BAR0/BAR2 as 64bit BARs and BAR1/BAR3 as RESERVED (Myron Stowe) [RHEL-86521] - PCI: mediatek-gen3: Fix inconsistent indentation (Myron Stowe) [RHEL-86521] - PCI: mediatek-gen3: Configure PBUS_CSR registers for EN7581 SoC (Myron Stowe) [RHEL-86521] - dt-bindings: PCI: mediatek-gen3: Add mediatek,pbus-csr phandle array property (Myron Stowe) [RHEL-86521] - PCI: mediatek-gen3: Remove leftover mac_reset assert for Airoha EN7581 SoC (Myron Stowe) [RHEL-86521] - PCI: j721e: Fix the value of .linkdown_irq_regfield for J784S4 (Myron Stowe) [RHEL-86521] - PCI: imx6: Use devm_clk_bulk_get_all() to fetch clocks (Myron Stowe) [RHEL-86521] - PCI: imx6: Identify controller via 'linux,pci-domain', not address (Myron Stowe) [RHEL-86521] - PCI: histb: Fix an error handling path in histb_pcie_probe() (Myron Stowe) [RHEL-86521] - PCI: dw-rockchip: Hide broken ATS capability for RK3588 running in EP mode (Myron Stowe) [RHEL-86521] - PCI: dwc: ep: Add dw_pcie_ep_hide_ext_capability() (Myron Stowe) [RHEL-86521] - PCI: dwc: ep: Return -ENOMEM for allocation failures (Myron Stowe) [RHEL-86521] - perf/dwc_pcie: Move common DWC struct definitions to 'pcie-dwc.h' (Myron Stowe) [RHEL-86521] - PCI: cadence-ep: Fix the driver to send MSG TLP for INTx without data payload (Myron Stowe) [RHEL-86521] - PCI: brcmstb: Make const read-only arrays static (Myron Stowe) [RHEL-86521] - PCI: brcmstb: Make irq_domain_set_info() parameter cast explicit (Myron Stowe) [RHEL-86521] - PCI: brcmstb: Make two changes in MDIO register fields (Myron Stowe) [RHEL-86521] - PCI: brcmstb: Use same constant table for config space access (Myron Stowe) [RHEL-86521] - PCI: brcmstb: Fix potential premature regulator disabling (Myron Stowe) [RHEL-86521] - PCI: brcmstb: Fix error path after a call to regulator_bulk_get() (Myron Stowe) [RHEL-86521] - PCI: brcmstb: Do not assume that register field starts at LSB (Myron Stowe) [RHEL-86521] - PCI: brcmstb: Use internal register to change link capability (Myron Stowe) [RHEL-86521] - PCI: brcmstb: Set generation limit before PCIe link up (Myron Stowe) [RHEL-86521] - PCI: brcmstb: Add BCM2712 support (Myron Stowe) [RHEL-86521] - PCI: brcmstb: Expand inbound window size up to 64GB (Myron Stowe) [RHEL-86521] - PCI: brcmstb: Reuse pcie_cfg_data structure (Myron Stowe) [RHEL-86521] - dt-bindings: PCI: brcmstb: Update bindings for PCIe on BCM2712 (Myron Stowe) [RHEL-86521] - PCI: brcmstb: Fix missing of_node_put() in brcm_pcie_probe() (Myron Stowe) [RHEL-86521] - PCI: altera: Add Agilex support (Myron Stowe) [RHEL-86521] - dt-bindings: PCI: altera: Add binding for Agilex (Myron Stowe) [RHEL-86521] - PCI: tegra: Use helper function for_each_child_of_node_scoped() (Myron Stowe) [RHEL-86521] - PCI: apple: Use helper function for_each_child_of_node_scoped() (Myron Stowe) [RHEL-86521] - PCI: mt7621: Use helper function for_each_available_child_of_node_scoped() (Myron Stowe) [RHEL-86521] - PCI: mediatek: Use helper function for_each_available_child_of_node_scoped() (Myron Stowe) [RHEL-86521] - PCI: kirin: Tidy up _probe() related function with dev_err_probe() (Myron Stowe) [RHEL-86521] - PCI: kirin: Use helper function for_each_available_child_of_node_scoped() (Myron Stowe) [RHEL-86521] - misc: pci_endpoint_test: Add support for PCITEST_IRQ_TYPE_AUTO (Myron Stowe) [RHEL-86521] - PCI: endpoint: pci-epf-test: Expose supported IRQ types in CAPS register (Myron Stowe) [RHEL-86521] - PCI: dw-rockchip: Endpoint mode cannot raise INTx interrupts (Myron Stowe) [RHEL-86521] - PCI: endpoint: Add intx_capable to epc_features struct (Myron Stowe) [RHEL-86521] - selftests: pci_endpoint: Use IRQ_TYPE_* defines from UAPI header (Myron Stowe) [RHEL-86521] - misc: pci_endpoint_test: Use IRQ_TYPE_* defines from UAPI header (Myron Stowe) [RHEL-86521] - PCI: endpoint: pcitest: Add IRQ_TYPE_* defines to UAPI header (Myron Stowe) [RHEL-86521] - misc: pci_endpoint_test: Do not use managed IRQ functions (Myron Stowe) [RHEL-86521] - misc: pci_endpoint_test: Remove global 'irq_type' and 'no_msi' (Myron Stowe) [RHEL-86521] - misc: pci_endpoint_test: Fix 'irq_type' to convey the correct type (Myron Stowe) [RHEL-86521] - misc: pci_endpoint_test: Fix displaying 'irq_type' after 'request_irq' error (Myron Stowe) [RHEL-86521] - misc: pci_endpoint_test: Avoid issue of interrupts remaining after request_irq error (Myron Stowe) [RHEL-86521] - misc: pci_endpoint_test: Handle BAR sizes larger than INT_MAX (Myron Stowe) [RHEL-86521] - misc: pci_endpoint_test: Give disabled BARs a distinct error code (Myron Stowe) [RHEL-86521] - misc: pci_endpoint_test: Fix potential truncation in pci_endpoint_test_probe() (Myron Stowe) [RHEL-86521] - selftests: pci_endpoint: Add GET_IRQTYPE checks to each interrupt test (Myron Stowe) [RHEL-86521] - selftests: pci_endpoint: Skip disabled BARs (Myron Stowe) [RHEL-86521] - PCI: dwc: ep: Remove superfluous function dw_pcie_ep_find_ext_capability() (Myron Stowe) [RHEL-86521] - PCI: endpoint: pci-epf-test: Fix double free that causes kernel to oops (Myron Stowe) [RHEL-86521] - PCI: endpoint: Remove unused devm_pci_epc_destroy() (Myron Stowe) [RHEL-86521] - PCI: dw-rockchip: Describe Resizable BARs as Resizable BARs (Myron Stowe) [RHEL-86521] - PCI: keystone: Specify correct alignment requirement (Myron Stowe) [RHEL-86521] - PCI: keystone: Describe Resizable BARs as Resizable BARs (Myron Stowe) [RHEL-86521] - PCI: dwc: ep: Allow EPF drivers to configure the size of Resizable BARs (Myron Stowe) [RHEL-86521] - PCI: dwc: ep: Move dw_pcie_ep_find_ext_capability() (Myron Stowe) [RHEL-86521] - PCI: endpoint: Add pci_epc_bar_size_to_rebar_cap() (Myron Stowe) [RHEL-86521] - PCI: endpoint: Allow EPF drivers to configure the size of Resizable BARs (Myron Stowe) [RHEL-86521] - PCI: endpoint: pci-epf-test: Handle endianness properly (Myron Stowe) [RHEL-86521] - dt-bindings: PCI: Add common schema for devices accessible through PCI BARs (Myron Stowe) [RHEL-86521] - dt-bindings: PCI: fsl,layerscape-pcie-ep: Drop unnecessary status from example (Myron Stowe) [RHEL-86521] - dt-bindings: PCI: fsl,layerscape-pcie-ep: Drop deprecated windows (Myron Stowe) [RHEL-86521] - dt-bindings: PCI: fsl,imx6q-pcie: Add optional DMA interrupt (Myron Stowe) [RHEL-86521] - dt-bindings: PCI: Convert fsl,mpc83xx-pcie to YAML (Myron Stowe) [RHEL-86521] - dt-bindings: PCI: qcom: Document the IPQ5332 PCIe controller (Myron Stowe) [RHEL-86521] - PCI: of: Create device tree PCI host bridge node (Myron Stowe) [RHEL-86521] - PCI: of_property: Constify parameter in of_pci_get_addr_flags() (Myron Stowe) [RHEL-86521] - PCI: of_property: Add support for NULL pdev in of_pci_set_address() (Myron Stowe) [RHEL-86521] - PCI: of: Use device_{add,remove}_of_node() to attach of_node to existing device (Myron Stowe) [RHEL-86521] - s390/pci: Support mmap() of PCI resources except for ISM devices (Myron Stowe) [RHEL-86521] - s390/pci: Introduce pdev->non_mappable_bars and replace VFIO_PCI_MMAP (Myron Stowe) [RHEL-86521] - s390/pci: Fix s390_mmio_read/write syscall page fault handling (Myron Stowe) [RHEL-86521] - PCI: Fix NULL dereference in SR-IOV VF creation error path (Myron Stowe) [RHEL-86521] - PCI: Move cardbus IO size declarations into pci/pci.h (Myron Stowe) [RHEL-86521] - PCI: Make pci_setup_bridge() static (Myron Stowe) [RHEL-86521] - PCI: Move resource reassignment func declarations into pci/pci.h (Myron Stowe) [RHEL-86521] - PCI: Move pci_rescan_bus_bridge_resize() declaration to pci/pci.h (Myron Stowe) [RHEL-86521] - PCI: Fix BAR resizing when VF BARs are assigned (Myron Stowe) [RHEL-86521] - PCI: Do not claim to release resource falsely (Myron Stowe) [RHEL-86521] - PCI: Increase Resizable BAR support from 512 GB to 128 TB (Myron Stowe) [RHEL-86521] - PCI: Rework optional resource handling (Myron Stowe) [RHEL-86521] - PCI: Perform reset_resource() and build fail list in sync (Myron Stowe) [RHEL-86521] - PCI: Use res->parent to check if resource is assigned (Myron Stowe) [RHEL-86521] - PCI: Add debug print when releasing resources before retry (Myron Stowe) [RHEL-86521] - PCI: Indicate optional resource assignment failures (Myron Stowe) [RHEL-86521] - PCI: Always have realloc_head in __assign_resources_sorted() (Myron Stowe) [RHEL-86521] - PCI: Extend enable to check for any optional resource (Myron Stowe) [RHEL-86521] - PCI: Add restore_dev_resource() (Myron Stowe) [RHEL-86521] - PCI: Remove incorrect comment from pci_reassign_resource() (Myron Stowe) [RHEL-86521] - PCI: Consolidate assignment loop next round preparation (Myron Stowe) [RHEL-86521] - PCI: Rename retval to ret (Myron Stowe) [RHEL-86521] - PCI: Use while loop and break instead of gotos (Myron Stowe) [RHEL-86521] - PCI: Refactor pdev_sort_resources() & __dev_sort_resources() (Myron Stowe) [RHEL-86521] - PCI: Converge return paths in __assign_resources_sorted() (Myron Stowe) [RHEL-86521] - PCI: Add dev & res local variables to resource assignment funcs (Myron Stowe) [RHEL-86521] - PCI: Add pci_resource_num() helper (Myron Stowe) [RHEL-86521] - PCI: Check resource_size() separately (Myron Stowe) [RHEL-86521] - PCI: Add pci_resource_is_iov() to identify IOV resources (Myron Stowe) [RHEL-86521] - PCI: Use resource_set_{range,size}() helpers (Myron Stowe) [RHEL-86521] - PCI: Use SZ_* instead of literals in setup-bus.c (Myron Stowe) [RHEL-86521] - PCI: Fix old_size lower bound in calculate_iosize() too (Myron Stowe) [RHEL-86521] - PCI: Allow relaxed bridge window tail sizing for optional resources (Myron Stowe) [RHEL-86521] - PCI: Simplify size1 assignment logic (Myron Stowe) [RHEL-86521] - PCI: Use min_align, not unrelated add_align, for size0 (Myron Stowe) [RHEL-86521] - PCI: Remove add_align overwrite unrelated to size0 (Myron Stowe) [RHEL-86521] - PCI: Cleanup dev->resource + resno to use pci_resource_n() (Myron Stowe) [RHEL-86521] - PCI: Log debug messages about reset method (Myron Stowe) [RHEL-86521] - PCI: Allow PCI bridges to go to D3Hot on all non-x86 (Myron Stowe) [RHEL-86521] - PCI: pciehp: Don't enable HPIE when resuming in poll mode (Myron Stowe) [RHEL-86521] - PCI: pciehp: Avoid unnecessary device replacement check (Myron Stowe) [RHEL-86521] - PCI/portdrv: Only disable pciehp interrupts early when needed (Myron Stowe) [RHEL-86521] - PCI: hotplug: Inline pci_hp_{create,remove}_module_link() (Myron Stowe) [RHEL-86521] - PCI: hotplug: Avoid backpointer dereferencing in has_*_file() (Myron Stowe) [RHEL-86521] - PCI: hotplug: Drop superfluous NULL pointer checks in has_*_file() (Myron Stowe) [RHEL-86521] - PCI: hotplug: Drop superfluous try_module_get() calls (Myron Stowe) [RHEL-86521] - PCI: hotplug: Drop superfluous pci_hotplug_slot_list (Myron Stowe) [RHEL-86521] - PCI: cpcihp: Remove unused .get_power() and .set_power() (Myron Stowe) [RHEL-86521] - PCI: shpchp: Remove 'shpchp_debug' module parameter (Myron Stowe) [RHEL-86521] - PCI: shpchp: Remove unused logging wrappers (Myron Stowe) [RHEL-86521] - PCI: shpchp: Change dbg() -> ctrl_dbg() (Myron Stowe) [RHEL-86521] - PCI: shpchp: Remove logging from module init/exit functions (Myron Stowe) [RHEL-86521] - PCI: Remove stray put_device() in pci_register_host_bridge() (Myron Stowe) [RHEL-86521] - PCI: Fix reference leak in pci_alloc_child_bus() (Myron Stowe) [RHEL-86521] - PCI: Fix reference leak in pci_register_host_bridge() (Myron Stowe) [RHEL-86521] - PCI: Cache offset of Resizable BAR capability (Myron Stowe) [RHEL-86521] - PCI: Enable Configuration RRS SV early (Myron Stowe) [RHEL-86521] - PCI/DOE: Allow enabling DOE without CXL (Myron Stowe) [RHEL-86521] - PCI/DOE: Expose DOE features via sysfs (Myron Stowe) [RHEL-86521] - PCI/DOE: Rename Discovery Response Data Object Contents to type (Myron Stowe) [RHEL-86521] - PCI/DOE: Rename DOE protocol to feature (Myron Stowe) [RHEL-86521] - PCI: Check BAR index for validity (Myron Stowe) [RHEL-86521] - PCI: Fix wrong length of devres array (Myron Stowe) [RHEL-86521] - PCI/bwctrl: Fix NULL pointer dereference on bus number exhaustion (Myron Stowe) [RHEL-86521] - PCI/bwctrl: Fix pcie_bwctrl_select_speed() return type (Myron Stowe) [RHEL-86521] - selftests/pcie_bwctrl: Add 'set_pcie_speed.sh' to TEST_PROGS (Myron Stowe) [RHEL-86521] - PCI/ASPM: Fix link state exit during switch upstream function removal (Myron Stowe) [RHEL-86521] - PCI/ERR: Handle TLP Log in Flit mode (Myron Stowe) [RHEL-86521] - PCI: Track Flit Mode Status & print it with link status (Myron Stowe) [RHEL-86521] - PCI/AER: Descope pci_printk() to aer_printk() (Myron Stowe) [RHEL-86521] - perf/dwc_pcie: Qualify RAS DES VSEC Capability by Vendor, Revision (Myron Stowe) [RHEL-86521] - Documentation: dwc_pcie_pmu: Fix the mnemonics and eventid (Myron Stowe) [RHEL-86521] - perf/dwc_pcie: Fix the event numbers (Myron Stowe) [RHEL-86521] - perf/dwc_pcie: Fix typos in event names (Myron Stowe) [RHEL-86521] - perf/dwc_pcie: Add support for Ampere SoCs (Myron Stowe) [RHEL-86521] - arm64: debug: remove debug exception registration infrastructure (Luis Claudio R. Goncalves) [RHEL-69599] - arm64: debug: split bkpt32 exception entry (Luis Claudio R. Goncalves) [RHEL-69599] - arm64: debug: split brk64 exception entry (Luis Claudio R. Goncalves) [RHEL-69599] - arm64: debug: split hardware watchpoint exception entry (Luis Claudio R. Goncalves) [RHEL-69599] - arm64: debug: split single stepping exception entry (Luis Claudio R. Goncalves) [RHEL-69599] - arm64: debug: refactor reinstall_suspended_bps() (Luis Claudio R. Goncalves) [RHEL-69599] - arm64: debug: split hardware breakpoint exception entry (Luis Claudio R. Goncalves) [RHEL-69599] - arm64: entry: Add entry and exit functions for debug exceptions (Luis Claudio R. Goncalves) [RHEL-69599] - arm64/fpsimd: Do not discard modified SVE state (Luis Claudio R. Goncalves) [RHEL-69599] - arm64: debug: remove break/step handler registration infrastructure (Luis Claudio R. Goncalves) [RHEL-69599] - arm64: debug: call step handlers statically (Luis Claudio R. Goncalves) [RHEL-69599] - arm64: debug: call software breakpoint handlers statically (Luis Claudio R. Goncalves) [RHEL-69599] - arm64: Introduce esr_is_ubsan_brk() (Luis Claudio R. Goncalves) [RHEL-69599] - arm64: refactor aarch32_break_handler() (Luis Claudio R. Goncalves) [RHEL-69599] - arm64: debug: clean up single_step_handler logic (Luis Claudio R. Goncalves) [RHEL-69599] - Initial bringup of riscv64 for centos (Charles Mirabile) [RHEL-101827] - KVM: RISC-V: Use kvm_faultin_pfn() when mapping pfns into the guest (Charles Mirabile) [RHEL-101827] - KVM: RISC-V: Mark "struct page" pfns accessed before dropping mmu_lock (Charles Mirabile) [RHEL-101827] - KVM: RISC-V: Mark "struct page" pfns dirty iff a stage-2 PTE is installed (Charles Mirabile) [RHEL-101827] - RISC-V: Remove unnecessary include from compat.h (Charles Mirabile) [RHEL-101827] - powercap: intel_rapl: Do not change CLAMPING bit if ENABLE bit cannot be changed (Steve Best) [RHEL-111364] * Wed Aug 27 2025 Scott Weaver [6.12.0-125.el10] - ibmveth: Add multi buffers rx replenishment hcall support (Mamatha Inamdar) [RHEL-104327] - net: ibmveth: Reset the adapter when unexpected states are detected (Mamatha Inamdar) [RHEL-104327] - x86/cpu: Add new Intel CPU model numbers for Wildcatlake and Novalake (Steve Best) [RHEL-95630] - ibmvnic: Use ndo_get_stats64 to fix inaccurate SAR reporting (Mamatha Inamdar) [RHEL-104319] - ibmvnic: Fix hardcoded NUM_RX_STATS/NUM_TX_STATS with dynamic sizeof (Mamatha Inamdar) [RHEL-104319] - ibmvnic: Add stat for tx direct vs tx batched (Mamatha Inamdar) [RHEL-104319] - s390/pci: Do not try re-enabling load/store if device is disabled (Mete Durlu) [RHEL-105599] - s390/pci: Fix stale function handles in error handling (Mete Durlu) [RHEL-105599] - s390/pci: Fix __pcilg_mio_inuser() inline assembly (Mete Durlu) [RHEL-105606] - platform/x86/amd/hsmp: Enhance the print messages to prevent confusion (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: Use IS_ENABLED() instead of IS_REACHABLE() (Steve Best) [RHEL-102876] - x86/platform/amd: replace down_timeout() with down_interruptible() (Steve Best) [RHEL-102876] - x86/platform/amd: move final timeout check to after final sleep (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: fix building with CONFIG_HWMON=m (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: acpi: Add sysfs files to display HSMP telemetry (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: Report power via hwmon sensors (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: Use a single DRIVER_VERSION for all hsmp modules (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: Make amd_hsmp and hsmp_acpi as mutually exclusive drivers (Steve Best) [RHEL-102876] - x86/platform/amd: Move the header to (Steve Best) [RHEL-102876] - x86/platform/amd: Clean up the header guards a bit (Steve Best) [RHEL-102876] - x86/platform/amd: Move the header to (Steve Best) [RHEL-102876] - x86/amd_node, platform/x86/amd/hsmp: Have HSMP use SMN through AMD_NODE (Steve Best) [RHEL-102876] - x86/amd_nb: Use rdmsr_safe() in amd_get_mmconfig_range() (Steve Best) [RHEL-102876] - x86/amd_node: Use defines for SMN register offsets (Steve Best) [RHEL-102876] - x86/amd_node: Remove dependency on AMD_NB (Steve Best) [RHEL-102876] - x86/amd_node: Update __amd_smn_rw() error paths (Steve Best) [RHEL-102876] - x86/amd_nb: Move SMN access code to a new amd_node driver (Steve Best) [RHEL-102876] - x86/amd_nb, hwmon: (k10temp): Simplify amd_pci_dev_to_node_id() (Steve Best) [RHEL-102876] - x86/amd_nb: Simplify function 3 search (Steve Best) [RHEL-102876] - x86/amd_nb: Use topology info to get AMD node count (Steve Best) [RHEL-102876] - x86/amd_nb: Simplify root device search (Steve Best) [RHEL-102876] - x86/amd_nb: Simplify function 4 search (Steve Best) [RHEL-102876] - x86: Start moving AMD node functionality out of AMD_NB (Steve Best) [RHEL-102876] - x86/amd_nb: Clean up early_is_amd_nb() (Steve Best) [RHEL-102876] - x86/amd_nb: Restrict init function to AMD-based systems (Steve Best) [RHEL-102876] - x86/amd_nb: Add new PCI IDs for AMD family 0x1a (Steve Best) [RHEL-102876] - platform/x86: amd: Use *-y instead of *-objs in Makefiles [partial] (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: Constify 'struct bin_attribute' (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: Add support for HSMP protocol version 7 messages (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: Change the error type (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: Add new error code and error logs (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: mark hsmp_msg_desc_table[] as maybe_unused (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: Make hsmp_pdev static instead of global (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: Use dev_groups in the driver structure (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: Use name space while exporting module symbols (Steve Best) [RHEL-102876] - redhat/configs: Enable CONFIG_AMD_HSMP_ACPI and CONFIG_AMD_HSMP_PLAT on RHEL (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: Create separate ACPI, plat and common drivers (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: Change generic plat_dev name to hsmp_pdev (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: Move ACPI code to acpi.c (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: Move platform device specific code to plat.c (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: Move structure and macros to header file (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: Convert amd_hsmp_rdwr() to a function pointer (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: Create wrapper function init_acpi() (Steve Best) [RHEL-102876] - platform/x86/amd/hsmp: Create hsmp/ directory (Steve Best) [RHEL-102876] - redhat: update self-test data for 10.2 (Scott Weaver) - redhat: correct UPSTREAM_BRANCH (Scott Weaver) - redhat: bump RHEL_MINOR for 10.2 (Scott Weaver) ### # The following Emacs magic makes C-c C-e use UTC dates. # Local Variables: # rpm-change-log-uses-utc: t # End: ###