# All Global changes to build and install go here. # Per the below section about __spec_install_pre, any rpm # environment changes that affect %%install need to go # here before the %%install macro is pre-built. # Disable frame pointers %undefine _include_frame_pointers # Disable LTO in userspace packages. %global _lto_cflags %{nil} # Option to enable compiling with clang instead of gcc. %bcond_with toolchain_clang %if %{with toolchain_clang} %global toolchain clang %endif # Compile the kernel with LTO (only supported when building with clang). %bcond_with clang_lto %if %{with clang_lto} && %{without toolchain_clang} {error:clang_lto requires --with toolchain_clang} %endif # RPM macros strip everything in BUILDROOT, either with __strip # or find-debuginfo.sh. Make use of __spec_install_post override # and save/restore binaries we want to package as unstripped. %define buildroot_unstripped %{_builddir}/root_unstripped %define buildroot_save_unstripped() \ (cd %{buildroot}; cp -rav --parents -t %{buildroot_unstripped}/ %1 || true) \ %{nil} %define __restore_unstripped_root_post \ echo "Restoring unstripped artefacts %{buildroot_unstripped} -> %{buildroot}" \ cp -rav %{buildroot_unstripped}/. %{buildroot}/ \ %{nil} # The kernel's %%install section is special # Normally the %%install section starts by cleaning up the BUILD_ROOT # like so: # # %%__spec_install_pre %%{___build_pre}\ # [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "${RPM_BUILD_ROOT}"\ # mkdir -p `dirname "$RPM_BUILD_ROOT"`\ # mkdir "$RPM_BUILD_ROOT"\ # %%{nil} # # But because of kernel variants, the %%build section, specifically # BuildKernel(), moves each variant to its final destination as the # variant is built. This violates the expectation of the %%install # section. As a result we snapshot the current env variables and # purposely leave out the removal section. All global wide changes # should be added above this line otherwise the %%install section # will not see them. %global __spec_install_pre %{___build_pre} # Replace '-' with '_' where needed so that variants can use '-' in # their name. %define uname_suffix() %{lua: local flavour = rpm.expand('%{?1:+%{1}}') flavour = flavour:gsub('-', '_') if flavour ~= '' then print(flavour) end } # This returns the main kernel tied to a debug variant. For example, # kernel-debug is the debug version of kernel, so we return an empty # string. However, kernel-64k-debug is the debug version of kernel-64k, # in this case we need to return "64k", and so on. This is used in # macros below where we need this for some uname based requires. %define uname_variant() %{lua: local flavour = rpm.expand('%{?1:%{1}}') _, _, main, sub = flavour:find("(%w+)-(.*)") if main then print("+" .. main) end } # At the time of this writing (2019-03), RHEL8 packages use w2.xzdio # compression for rpms (xz, level 2). # Kernel has several large (hundreds of mbytes) rpms, they take ~5 mins # to compress by single-threaded xz. Switch to threaded compression, # and from level 2 to 3 to keep compressed sizes close to "w2" results. # # NB: if default compression in /usr/lib/rpm/redhat/macros ever changes, # this one might need tweaking (e.g. if default changes to w3.xzdio, # change below to w4T.xzdio): # # This is disabled on i686 as it triggers oom errors %ifnarch i686 %define _binary_payload w3T.xzdio %endif Summary: The Linux kernel %if 0%{?fedora} %define secure_boot_arch x86_64 %else %define secure_boot_arch x86_64 aarch64 s390x ppc64le %endif # Signing for secure boot authentication %ifarch %{secure_boot_arch} %global signkernel 1 %else %global signkernel 0 %endif # Sign modules on all arches %global signmodules 1 # Compress modules only for architectures that build modules %ifarch noarch %global zipmodules 0 %else %global zipmodules 1 %endif # Default compression algorithm %global compression xz %global compression_flags --compress %global compext xz %if %{zipmodules} %global zipsed -e 's/\.ko$/\.ko.%compext/' %endif %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 # 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.11.0 %define specversion 6.11.0 %define patchversion 6.11 %define pkgrelease 29 %define kversion 6 %define tarfile_release 6.11.0-29.el10 # This is needed to do merge window version magic %define patchlevel 11 # This allows pkg_release to have configurable %%{?dist} tag %define specrelease 29%{?buildid}%{?dist} # This defines the kabi tarball version %define kabiversion 6.11.0-29.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} # 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 # 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} # bpf tool %define with_bpftool %{?_without_bpftool: 0} %{?!_without_bpftool: 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} # Control whether we perform a compat. check against published ABI. %define with_kabichk %{?_without_kabichk: 0} %{?!_without_kabichk: 1} # Temporarily disable kabi checks until RC. %define with_kabichk 0 # Control whether we perform a compat. check against DUP ABI. %define with_kabidupchk %{?_with_kabidupchk: 1} %{?!_with_kabidupchk: 0} # # Control whether to run an extensive DWARF based kABI check. # Note that this option needs to have baseline setup in SOURCE300. %define with_kabidwchk %{?_without_kabidwchk: 0} %{?!_without_kabidwchk: 1} %define with_kabidw_base %{?_with_kabidw_base: 1} %{?!_with_kabidw_base: 0} # # Control whether to install the vdso directories. %define with_vdso_install %{?_without_vdso_install: 0} %{?!_without_vdso_install: 1} # # should we do C=1 builds with sparse %define with_sparse %{?_with_sparse: 1} %{?!_with_sparse: 0} # # Cross compile requested? %define with_cross %{?_with_cross: 1} %{?!_with_cross: 0} # # build a release kernel on rawhide %define with_release %{?_with_release: 1} %{?!_with_release: 0} # verbose build, i.e. no silent rules and V=1 %define with_verbose %{?_with_verbose: 1} %{?!_with_verbose: 0} # # check for mismatched config options %define with_configchecks %{?_without_configchecks: 0} %{?!_without_configchecks: 1} # # gcov support %define with_gcov %{?_with_gcov:1}%{?!_with_gcov:0} # # ipa_clone support %define with_ipaclones %{?_without_ipaclones: 0} %{?!_without_ipaclones: 1} # Want to build a vanilla kernel build without any non-upstream patches? %define with_vanilla %{?_with_vanilla: 1} %{?!_with_vanilla: 0} %ifarch x86_64 aarch64 riscv64 %define with_efiuki %{?_without_efiuki: 0} %{?!_without_efiuki: 1} %else %define with_efiuki 0 %endif %if 0%{?fedora} # Kernel headers are being split out into a separate package %define with_headers 0 %define with_cross_headers 0 # no ipa_clone for now %define with_ipaclones 0 # no stablelist %define with_kernel_abi_stablelists 0 %define with_arm64_64k 0 %define with_realtime 0 %endif %if %{with_verbose} %define make_opts V=1 %else %define make_opts -s %endif %if %{with toolchain_clang} %ifarch s390x ppc64le %global llvm_ias 0 %else %global llvm_ias 1 %endif %global clang_make_opts HOSTCC=clang CC=clang LLVM_IAS=%{llvm_ias} %if %{with clang_lto} # LLVM=1 enables use of all LLVM tools. %global clang_make_opts %{clang_make_opts} LLVM=1 %endif %global make_opts %{make_opts} %{clang_make_opts} # clang does not support the -fdump-ipa-clones option %global with_ipaclones 0 %endif # turn off debug kernel and kabichk for gcov builds %if %{with_gcov} %define with_debug 0 %define with_kabichk 0 %define with_kabidupchk 0 %define with_kabidwchk 0 %define with_kabidw_base 0 %define with_kernel_abi_stablelists 0 %endif # turn off kABI DWARF-based check if we're generating the base dataset %if %{with_kabidw_base} %define with_kabidwchk 0 %endif # kpatch_kcflags are extra compiler flags applied to base kernel # -fdump-ipa-clones is enabled only for base kernels on selected arches %if %{with_ipaclones} %ifarch x86_64 ppc64le %define kpatch_kcflags -fdump-ipa-clones %else %define with_ipaclones 0 %endif %endif %define make_target bzImage %define image_install_path boot %define KVERREL %{specversion}-%{release}.%{_target_cpu} %define KVERREL_RE %(echo %KVERREL | sed 's/+/[+]/g') %define hdrarch %_target_cpu %define asmarch %_target_cpu %if 0%{!?nopatches:1} %define nopatches 0 %endif %if %{with_vanilla} %define nopatches 1 %endif %if %{with_release} %define debugbuildsenabled 1 %endif %if !%{with_debuginfo} %define _enable_debug_packages 0 %endif %define debuginfodir /usr/lib/debug # Needed because we override almost everything involving build-ids # and debuginfo generation. Currently we rely on the old alldebug setting. %global _build_id_links alldebug # if requested, only build base kernel %if %{with_baseonly} %define with_debug 0 %define with_realtime 0 %define with_vdso_install 0 %define with_perf 0 %define with_libperf 0 %define with_tools 0 %define with_bpftool 0 %define with_kernel_abi_stablelists 0 %define with_selftests 0 %define with_ipaclones 0 %endif # if requested, only build debug kernel %if %{with_dbgonly} %define with_base 0 %define with_vdso_install 0 %define with_perf 0 %define with_libperf 0 %define with_tools 0 %define with_bpftool 0 %define with_kernel_abi_stablelists 0 %define with_selftests 0 %define with_ipaclones 0 %endif # if requested, only build realtime kernel %if %{with_rtonly} %define with_realtime 1 %define with_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_bpftool 0 %define with_kernel_abi_stablelists 0 %define with_selftests 0 %define with_ipaclones 0 %define with_headers 0 %define with_efiuki 0 %define with_zfcpdump 0 %define with_arm64_16k 0 %define with_arm64_64k 0 %endif # RT kernel is only built on x86_64 and aarch64 %ifnarch x86_64 aarch64 %define with_realtime 0 %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 # selftests require bpftool to be built. If bpftools is disabled, then disable selftests %if %{with_bpftool} == 0 %define with_selftests 0 %endif # bpftool needs debuginfo to work %if %{with_debuginfo} == 0 %define with_bpftool 0 %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_headers 0 %define with_cross_headers 0 %define with_tools 0 %define with_perf 0 %define with_libperf 0 %define with_bpftool 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 %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_debuginfo 0 %define with_perf 0 %define with_libperf 0 %define with_tools 0 %define with_bpftool 0 %define with_selftests 0 %define _enable_debug_packages 0 %endif # Architectures we build tools/cpupower on %if 0%{?fedora} %define cpupowerarchs %{ix86} x86_64 ppc64le aarch64 %else %define cpupowerarchs i686 x86_64 ppc64le aarch64 %endif # Architectures we build kernel livepatching selftests on %define klptestarches x86_64 ppc64le s390x %if 0%{?use_vdso} %define _use_vdso 1 %else %define _use_vdso 0 %endif # If build of debug packages is disabled, we need to know if we want to create # meta debug packages or not, after we define with_debug for all specific cases # above. So this must be at the end here, after all cases of with_debug or not. %define with_debug_meta 0 %if !%{debugbuildsenabled} %if %{with_debug} %define with_debug_meta 1 %endif %define with_debug 0 %endif # short-hand for "are we building base/non-debug variants of ...?" %if %{with_up} && %{with_base} %define with_up_base 1 %else %define with_up_base 0 %endif %if %{with_realtime} && %{with_base} %define with_realtime_base 1 %else %define with_realtime_base 0 %endif %if %{with_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 # # Packages that need to be installed before the kernel is, because the %%post # scripts use them. # %define kernel_prereq coreutils, systemd >= 203-2, /usr/bin/kernel-install %define initrd_prereq dracut >= 027 Name: %{package_name} License: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-2-Clause) AND ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) AND ((GPL-2.0-only WITH Linux-syscall-note) OR CDDL-1.0) AND ((GPL-2.0-only WITH Linux-syscall-note) OR Linux-OpenIB) AND ((GPL-2.0-only WITH Linux-syscall-note) OR MIT) AND ((GPL-2.0-or-later WITH Linux-syscall-note) OR BSD-3-Clause) AND ((GPL-2.0-or-later WITH Linux-syscall-note) OR MIT) AND 0BSD AND BSD-2-Clause AND (BSD-2-Clause OR Apache-2.0) AND BSD-3-Clause AND BSD-3-Clause-Clear AND CC0-1.0 AND GFDL-1.1-no-invariants-or-later AND GPL-1.0-or-later AND (GPL-1.0-or-later OR BSD-3-Clause) AND (GPL-1.0-or-later WITH Linux-syscall-note) AND GPL-2.0-only AND (GPL-2.0-only OR Apache-2.0) AND (GPL-2.0-only OR BSD-2-Clause) AND (GPL-2.0-only OR BSD-3-Clause) AND (GPL-2.0-only OR CDDL-1.0) AND (GPL-2.0-only OR GFDL-1.1-no-invariants-or-later) AND (GPL-2.0-only OR GFDL-1.2-no-invariants-only) AND (GPL-2.0-only WITH Linux-syscall-note) AND GPL-2.0-or-later AND (GPL-2.0-or-later OR BSD-2-Clause) AND (GPL-2.0-or-later OR BSD-3-Clause) AND (GPL-2.0-or-later OR CC-BY-4.0) AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH Linux-syscall-note) AND ISC AND LGPL-2.0-or-later AND (LGPL-2.0-or-later OR BSD-2-Clause) AND (LGPL-2.0-or-later WITH Linux-syscall-note) AND LGPL-2.1-only AND (LGPL-2.1-only OR BSD-2-Clause) AND (LGPL-2.1-only WITH Linux-syscall-note) AND LGPL-2.1-or-later AND (LGPL-2.1-or-later WITH Linux-syscall-note) AND (Linux-OpenIB OR GPL-2.0-only) AND (Linux-OpenIB OR GPL-2.0-only OR BSD-2-Clause) AND Linux-man-pages-copyleft AND MIT AND (MIT OR Apache-2.0) AND (MIT OR GPL-2.0-only) AND (MIT OR GPL-2.0-or-later) AND (MIT OR LGPL-2.1-only) AND (MPL-1.1 OR GPL-2.0-only) AND (X11 OR GPL-2.0-only) AND (X11 OR GPL-2.0-or-later) AND Zlib AND (copyleft-next-0.3.1 OR GPL-2.0-or-later) URL: https://www.kernel.org/ Version: %{specrpmversion} Release: %{pkg_release} # DO NOT CHANGE THE 'ExclusiveArch' LINE TO TEMPORARILY EXCLUDE AN ARCHITECTURE BUILD. # SET %%nobuildarches (ABOVE) INSTEAD %if 0%{?fedora} ExclusiveArch: noarch x86_64 s390x aarch64 ppc64le riscv64 %else ExclusiveArch: noarch i386 i686 x86_64 s390x aarch64 ppc64le %endif ExclusiveOS: Linux %ifnarch %{nobuildarches} Requires: kernel-core-uname-r = %{KVERREL} Requires: kernel-modules-uname-r = %{KVERREL} Requires: kernel-modules-core-uname-r = %{KVERREL} Provides: installonlypkg(kernel) %endif # # List the packages used during the kernel build # BuildRequires: kmod, bash, coreutils, tar, git-core, which BuildRequires: bzip2, xz, findutils, m4, perl-interpreter, perl-Carp, perl-devel, perl-generators, make, diffutils, gawk, %compression BuildRequires: gcc, binutils, redhat-rpm-config, hmaccalc, bison, flex, gcc-c++ %if 0%{?fedora} BuildRequires: rust, rust-src, bindgen %endif BuildRequires: net-tools, hostname, bc, elfutils-devel BuildRequires: dwarves BuildRequires: python3 BuildRequires: python3-devel BuildRequires: python3-pyyaml BuildRequires: kernel-rpm-macros # glibc-static is required for a consistent build environment (specifically # CONFIG_CC_CAN_LINK_STATIC=y). BuildRequires: glibc-static %if %{with_headers} || %{with_cross_headers} BuildRequires: rsync %endif %if %{with_doc} BuildRequires: xmlto, asciidoc, python3-sphinx, python3-sphinx_rtd_theme %endif %if %{with_sparse} BuildRequires: sparse %endif %if %{with_perf} BuildRequires: zlib-devel binutils-devel newt-devel perl(ExtUtils::Embed) bison flex xz-devel BuildRequires: audit-libs-devel python3-setuptools BuildRequires: java-devel BuildRequires: libbpf-devel >= 0.6.0-1 BuildRequires: libbabeltrace-devel BuildRequires: libtraceevent-devel %ifnarch s390x BuildRequires: numactl-devel %endif %ifarch aarch64 BuildRequires: opencsd-devel >= 1.0.0 %endif %endif %if %{with_tools} BuildRequires: python3-docutils BuildRequires: gettext ncurses-devel BuildRequires: libcap-devel libcap-ng-devel # The following are rtla requirements BuildRequires: python3-docutils BuildRequires: libtraceevent-devel BuildRequires: libtracefs-devel %ifnarch s390x BuildRequires: pciutils-devel %endif %ifarch i686 x86_64 BuildRequires: libnl3-devel %endif %endif %if %{with_tools} || %{signmodules} || %{signkernel} BuildRequires: openssl-devel %endif %if %{with_bpftool} BuildRequires: python3-docutils BuildRequires: zlib-devel binutils-devel llvm-devel %endif %if %{with_selftests} BuildRequires: clang llvm-devel fuse-devel %ifarch x86_64 riscv64 BuildRequires: lld %endif BuildRequires: libcap-devel libcap-ng-devel rsync libmnl-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 %endif # These below are required to build man pages %if %{with_perf} BuildRequires: xmlto %endif %if %{with_perf} || %{with_tools} BuildRequires: asciidoc %endif %if %{with toolchain_clang} BuildRequires: clang %endif %if %{with clang_lto} BuildRequires: llvm BuildRequires: lld %endif %if %{with_efiuki} BuildRequires: dracut # For dracut UEFI uki binaries BuildRequires: binutils # For the initrd BuildRequires: lvm2 BuildRequires: systemd-boot-unsigned # For systemd-stub and systemd-pcrphase BuildRequires: systemd-udev >= 252-1 # For UKI kernel cmdline addons BuildRequires: systemd-ukify # For TPM operations in UKI initramfs BuildRequires: tpm2-tools # For UKI sb cert %if 0%{?rhel}%{?centos} && !0%{?eln} %if 0%{?centos} BuildRequires: centos-sb-certs >= 9.0-23 %else BuildRequires: redhat-sb-certs >= 9.4-0.1 %endif %endif %endif # Because this is the kernel, it's hard to get a single upstream URL # to represent the base without needing to do a bunch of patching. This # tarball is generated from a src-git tree. If you want to see the # exact git commit you can run # # xzcat -qq ${TARBALL} | git get-tar-commit-id Source0: linux-%{tarfile_release}.tar.xz Source1: Makefile.rhelver Source2: kernel.changelog Source10: redhatsecurebootca5.cer Source13: redhatsecureboot501.cer %if %{signkernel} # Name of the packaged file containing signing key %ifarch ppc64le %define signing_key_filename kernel-signing-ppc.cer %endif %ifarch s390x %define signing_key_filename kernel-signing-s390.cer %endif # Fedora/ELN pesign macro expects to see these cert file names, see: # https://github.com/rhboot/pesign/blob/main/src/pesign-rpmbuild-helper.in#L216 %if 0%{?fedora}%{?eln} %define pesign_name_0 redhatsecureboot501 %define secureboot_ca_0 %{SOURCE10} %define secureboot_key_0 %{SOURCE13} %endif # RHEL/centos certs come from system-sb-certs %if 0%{?rhel} && !0%{?eln} %define secureboot_ca_0 %{_datadir}/pki/sb-certs/secureboot-ca-%{_arch}.cer %define secureboot_key_0 %{_datadir}/pki/sb-certs/secureboot-kernel-%{_arch}.cer %if 0%{?centos} %define pesign_name_0 centossecureboot201 %else %ifarch x86_64 aarch64 %define pesign_name_0 redhatsecureboot501 %endif %ifarch s390x %define pesign_name_0 redhatsecureboot302 %endif %ifarch ppc64le %define pesign_name_0 redhatsecureboot701 %endif %endif # rhel && !eln %endif # signkernel %endif Source20: mod-denylist.sh Source21: mod-sign.sh Source22: filtermods.py %define modsign_cmd %{SOURCE21} %if 0%{?include_rhel} Source23: x509.genkey.rhel Source24: %{name}-aarch64-rhel.config Source25: %{name}-aarch64-debug-rhel.config Source27: %{name}-ppc64le-rhel.config Source28: %{name}-ppc64le-debug-rhel.config Source29: %{name}-s390x-rhel.config Source30: %{name}-s390x-debug-rhel.config Source31: %{name}-s390x-zfcpdump-rhel.config Source32: %{name}-x86_64-rhel.config Source33: %{name}-x86_64-debug-rhel.config Source34: def_variants.yaml.rhel Source41: x509.genkey.centos # ARM64 64K page-size kernel config Source42: %{name}-aarch64-64k-rhel.config Source43: %{name}-aarch64-64k-debug-rhel.config %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}-x86_64-rt-rhel.config Source477: %{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}-x86_64-rt-fedora.config Source481: %{name}-x86_64-rt-debug-fedora.config Source482: %{name}-riscv64-rt-fedora.config Source483: %{name}-riscv64-rt-debug-fedora.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 kernel meta package # # This macro does requires, provides, conflicts, obsoletes for a kernel package. # %%kernel_reqprovconf [-o] # It uses any kernel__conflicts and kernel__obsoletes # macros defined above. # %define kernel_reqprovconf(o) \ %if %{-o:0}%{!-o:1}\ Provides: kernel = %{specversion}-%{pkg_release}\ %endif\ Provides: kernel-%{_target_cpu} = %{specrpmversion}-%{pkg_release}%{uname_suffix %{?1:+%{1}}}\ Provides: kernel-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires(pre): %{kernel_prereq}\ Requires(pre): %{initrd_prereq}\ Requires(pre): ((linux-firmware >= 20150904-56.git6ebf5d57) if linux-firmware)\ Recommends: linux-firmware\ Requires(preun): systemd >= 200\ Conflicts: xfsprogs < 4.3.0-1\ Conflicts: xorg-x11-drv-vmmouse < 13.0.99\ %{expand:%%{?kernel%{?1:_%{1}}_conflicts:Conflicts: %%{kernel%{?1:_%{1}}_conflicts}}}\ %{expand:%%{?kernel%{?1:_%{1}}_obsoletes:Obsoletes: %%{kernel%{?1:_%{1}}_obsoletes}}}\ %{expand:%%{?kernel%{?1:_%{1}}_provides:Provides: %%{kernel%{?1:_%{1}}_provides}}}\ # We can't let RPM do the dependencies automatic because it'll then pick up\ # a correct but undesirable perl dependency from the module headers which\ # isn't required for the kernel proper to function\ AutoReq: no\ AutoProv: yes\ %{nil} %package doc Summary: Various documentation bits found in the kernel source Group: Documentation %description doc This package contains documentation files from the kernel source. Various bits of information about the Linux kernel and the device drivers shipped with it are documented in these files. You'll want to install this package if you need a reference to the options that can be passed to Linux kernel modules at load time. %package headers Summary: Header files for the Linux kernel for use by glibc Obsoletes: glibc-kernheaders < 3.0-46 Provides: glibc-kernheaders = 3.0-46 %if 0%{?gemini} Provides: kernel-headers = %{specversion}-%{release} Obsoletes: kernel-headers < %{specversion} %endif %description headers Kernel-headers includes the C header files that specify the interface between the Linux kernel and userspace libraries and programs. The header files define structures and constants that are needed for building most standard programs and are also needed for rebuilding the glibc package. %package cross-headers Summary: Header files for the Linux kernel for use by cross-glibc %if 0%{?gemini} Provides: kernel-cross-headers = %{specversion}-%{release} Obsoletes: kernel-cross-headers < %{specversion} %endif %description cross-headers Kernel-cross-headers includes the C header files that specify the interface between the Linux kernel and userspace libraries and programs. The header files define structures and constants that are needed for building most standard programs and are also needed for rebuilding the cross-glibc package. %package debuginfo-common-%{_target_cpu} Summary: Kernel source files used by %{name}-debuginfo packages Provides: installonlypkg(kernel) %description debuginfo-common-%{_target_cpu} This package is required by %{name}-debuginfo subpackages. It provides the kernel source files common to all builds. %if %{with_perf} %package -n perf %if 0%{gemini} Epoch: %{gemini} %endif Summary: Performance monitoring for the Linux kernel Requires: bzip2 %description -n perf This package contains the perf tool, which enables performance monitoring of the Linux kernel. %package -n perf-debuginfo %if 0%{gemini} Epoch: %{gemini} %endif Summary: Debug information for package perf Requires: %{name}-debuginfo-common-%{_target_cpu} = %{specrpmversion}-%{release} AutoReqProv: no %description -n perf-debuginfo This package provides debug information for the perf package. # Note that this pattern only works right to match the .build-id # symlinks because of the trailing nonmatching alternation and # the leading .*, because of find-debuginfo.sh's buggy handling # of matching the pattern against the symlinks file. %{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*%%{_bindir}/perf(\.debug)?|.*%%{_libexecdir}/perf-core/.*|.*%%{_libdir}/libperf-jvmti.so(\.debug)?|XXX' -o perf-debuginfo.list} %package -n python3-perf %if 0%{gemini} Epoch: %{gemini} %endif Summary: Python bindings for apps which will manipulate perf events %description -n python3-perf The python3-perf package contains a module that permits applications written in the Python programming language to use the interface to manipulate perf events. %package -n python3-perf-debuginfo %if 0%{gemini} Epoch: %{gemini} %endif Summary: Debug information for package perf python bindings Requires: %{name}-debuginfo-common-%{_target_cpu} = %{specrpmversion}-%{release} AutoReqProv: no %description -n python3-perf-debuginfo This package provides debug information for the perf python bindings. # the python_sitearch macro should already be defined from above %{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*%%{python3_sitearch}/perf.*so(\.debug)?|XXX' -o python3-perf-debuginfo.list} # with_perf %endif %if %{with_libperf} %package -n libperf Summary: The perf library from kernel source %description -n libperf This package contains the kernel source perf library. %package -n libperf-devel Summary: Developement files for the perf library from kernel source Requires: libperf = %{version}-%{release} %description -n libperf-devel This package includes libraries and header files needed for development of applications which use perf library from kernel source. %package -n libperf-debuginfo Summary: Debug information for package libperf Group: Development/Debug Requires: %{name}-debuginfo-common-%{_target_cpu} = %{version}-%{release} AutoReqProv: no %description -n libperf-debuginfo This package provides debug information for the libperf package. # Note that this pattern only works right to match the .build-id # symlinks because of the trailing nonmatching alternation and # the leading .*, because of find-debuginfo.sh's buggy handling # of matching the pattern against the symlinks file. %{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*%%{_libdir}/libperf.so.*(\.debug)?|XXX' -o libperf-debuginfo.list} # with_libperf %endif %if %{with_tools} %package -n %{package_name}-tools Summary: Assortment of tools for the Linux kernel %ifarch %{cpupowerarchs} Provides: cpupowerutils = 1:009-0.6.p1 Obsoletes: cpupowerutils < 1:009-0.6.p1 Provides: cpufreq-utils = 1:009-0.6.p1 Provides: cpufrequtils = 1:009-0.6.p1 Obsoletes: cpufreq-utils < 1:009-0.6.p1 Obsoletes: cpufrequtils < 1:009-0.6.p1 Obsoletes: cpuspeed < 1:1.5-16 Requires: %{package_name}-tools-libs = %{specrpmversion}-%{release} %endif %define __requires_exclude ^%{_bindir}/python %description -n %{package_name}-tools This package contains the tools/ directory from the kernel source and the supporting documentation. %package -n %{package_name}-tools-libs Summary: Libraries for the kernels-tools %description -n %{package_name}-tools-libs This package contains the libraries built from the tools/ directory from the kernel source. %package -n %{package_name}-tools-libs-devel Summary: Assortment of tools for the Linux kernel Requires: %{package_name}-tools = %{version}-%{release} %ifarch %{cpupowerarchs} Provides: cpupowerutils-devel = 1:009-0.6.p1 Obsoletes: cpupowerutils-devel < 1:009-0.6.p1 %endif Requires: %{package_name}-tools-libs = %{version}-%{release} Provides: %{package_name}-tools-devel %description -n %{package_name}-tools-libs-devel This package contains the development files for the tools/ directory from the kernel source. %package -n %{package_name}-tools-debuginfo Summary: Debug information for package %{package_name}-tools Requires: %{name}-debuginfo-common-%{_target_cpu} = %{version}-%{release} AutoReqProv: no %description -n %{package_name}-tools-debuginfo This package provides debug information for package %{package_name}-tools. # Note that this pattern only works right to match the .build-id # symlinks because of the trailing nonmatching alternation and # the leading .*, because of find-debuginfo.sh's buggy handling # of matching the pattern against the symlinks file. %{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*%%{_bindir}/bootconfig(\.debug)?|.*%%{_bindir}/centrino-decode(\.debug)?|.*%%{_bindir}/powernow-k8-decode(\.debug)?|.*%%{_bindir}/cpupower(\.debug)?|.*%%{_libdir}/libcpupower.*|.*%%{_bindir}/turbostat(\.debug)?|.*%%{_bindir}/x86_energy_perf_policy(\.debug)?|.*%%{_bindir}/tmon(\.debug)?|.*%%{_bindir}/lsgpio(\.debug)?|.*%%{_bindir}/gpio-hammer(\.debug)?|.*%%{_bindir}/gpio-event-mon(\.debug)?|.*%%{_bindir}/gpio-watch(\.debug)?|.*%%{_bindir}/iio_event_monitor(\.debug)?|.*%%{_bindir}/iio_generic_buffer(\.debug)?|.*%%{_bindir}/lsiio(\.debug)?|.*%%{_bindir}/intel-speed-select(\.debug)?|.*%%{_bindir}/page_owner_sort(\.debug)?|.*%%{_bindir}/slabinfo(\.debug)?|.*%%{_sbindir}/intel_sdsi(\.debug)?|XXX' -o %{package_name}-tools-debuginfo.list} %package -n rtla %if 0%{gemini} Epoch: %{gemini} %endif Summary: Real-Time Linux Analysis tools Requires: libtraceevent Requires: libtracefs %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_bpftool} %if 0%{?fedora} # bpftoolverion doesn't bump with stable updates so let's stick with # upstream kernel version for the package name. We still get correct # output with bpftool -V. %define bpftoolversion %specrpmversion %else %define bpftoolversion 7.5.0 %endif %package -n bpftool Summary: Inspection and simple manipulation of eBPF programs and maps Version: %{bpftoolversion} %description -n bpftool This package contains the bpftool, which allows inspection and simple manipulation of eBPF programs and maps. %package -n bpftool-debuginfo Summary: Debug information for package bpftool Version: %{bpftoolversion} Group: Development/Debug Requires: %{name}-debuginfo-common-%{_target_cpu} = %{specrpmversion}-%{release} AutoReqProv: no %description -n bpftool-debuginfo This package provides debug information for the bpftool package. %{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*%%{_sbindir}/bpftool(\.debug)?|XXX' -o bpftool-debuginfo.list} # Setting "Version:" above overrides the internal {version} macro, # need to restore it here %define version %{specrpmversion} # with_bpftool %endif %if %{with_selftests} %package selftests-internal Summary: Kernel samples and selftests Requires: binutils, bpftool, iproute-tc, nmap-ncat, python3, fuse-libs, keyutils %description selftests-internal Kernel sample programs and selftests. # Note that this pattern only works right to match the .build-id # symlinks because of the trailing nonmatching alternation and # the leading .*, because of find-debuginfo.sh's buggy handling # of matching the pattern against the symlinks file. %{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} -p '.*%%{_libexecdir}/(ksamples|kselftests)/.*|XXX' -o selftests-debuginfo.list} %define __requires_exclude ^liburandom_read.so.*$ # with_selftests %endif %define kernel_gcov_package() \ %package %{?1:%{1}-}gcov\ Summary: gcov graph and source files for coverage data collection.\ %description %{?1:%{1}-}gcov\ %{?1:%{1}-}gcov includes the gcov graph and source files for gcov coverage collection.\ %{nil} %package -n %{package_name}-abi-stablelists Summary: The Red Hat Enterprise Linux kernel ABI symbol stablelists AutoReqProv: no %description -n %{package_name}-abi-stablelists The kABI package contains information pertaining to the Red Hat Enterprise Linux kernel ABI, including lists of kernel symbols that are needed by external Linux kernel modules, and a yum plugin to aid enforcement. %if %{with_kabidw_base} %package kernel-kabidw-base-internal Summary: The baseline dataset for kABI verification using DWARF data Group: System Environment/Kernel AutoReqProv: no %description kernel-kabidw-base-internal The package contains data describing the current ABI of the Red Hat Enterprise Linux kernel, suitable for the kabi-dw tool. %endif # # This macro creates a kernel--debuginfo package. # %%kernel_debuginfo_package # # Explanation of the find_debuginfo_opts: We build multiple kernels (debug, # rt, 64k etc.) so the regex filters those kernels appropriately. We also # have to package several binaries as part of kernel-devel but getting # unique build-ids is tricky for these userspace binaries. We don't really # care about debugging those so we just filter those out and remove it. %define kernel_debuginfo_package() \ %package %{?1:%{1}-}debuginfo\ Summary: Debug information for package %{name}%{?1:-%{1}}\ Requires: %{name}-debuginfo-common-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: %{name}%{?1:-%{1}}-debuginfo-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: installonlypkg(kernel)\ AutoReqProv: no\ %description %{?1:%{1}-}debuginfo\ This package provides debug information for package %{name}%{?1:-%{1}}.\ This is required to use SystemTap with %{name}%{?1:-%{1}}-%{KVERREL}.\ %{expand:%%global _find_debuginfo_opts %{?_find_debuginfo_opts} --keep-section '.BTF' -p '.*\/usr\/src\/kernels/.*|XXX' -o ignored-debuginfo.list -p '/.*/%%{KVERREL_RE}%{?1:[+]%{1}}/.*|/.*%%{KVERREL_RE}%{?1:\+%{1}}(\.debug)?' -o debuginfo%{?1}.list}\ %{nil} # # This macro creates a kernel--devel package. # %%kernel_devel_package [-m] # %define kernel_devel_package(m) \ %package %{?1:%{1}-}devel\ Summary: Development package for building kernel modules to match the %{?2:%{2} }kernel\ Provides: kernel%{?1:-%{1}}-devel-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: kernel-devel-%{_target_cpu} = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: kernel-devel-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Provides: installonlypkg(kernel)\ AutoReqProv: no\ Requires(pre): findutils\ Requires: findutils\ Requires: perl-interpreter\ Requires: openssl-devel\ Requires: elfutils-libelf-devel\ Requires: bison\ Requires: flex\ Requires: make\ Requires: gcc\ %if %{-m:1}%{!-m:0}\ Requires: kernel-devel-uname-r = %{KVERREL}%{uname_variant %{?1:%{1}}}\ %endif\ %description %{?1:%{1}-}devel\ This package provides kernel headers and makefiles sufficient to build modules\ against the %{?2:%{2} }kernel package.\ %{nil} # # This macro creates an empty kernel--devel-matched package that # requires both the core and devel packages locked on the same version. # %%kernel_devel_matched_package [-m] # %define kernel_devel_matched_package(m) \ %package %{?1:%{1}-}devel-matched\ Summary: Meta package to install matching core and devel packages for a given %{?2:%{2} }kernel\ Requires: %{package_name}%{?1:-%{1}}-devel = %{specrpmversion}-%{release}\ Requires: %{package_name}%{?1:-%{1}}-core = %{specrpmversion}-%{release}\ %description %{?1:%{1}-}devel-matched\ This meta package is used to install matching core and devel packages for a given %{?2:%{2} }kernel.\ %{nil} # # kernel--ipaclones-internal package # %define kernel_ipaclones_package() \ %package %{?1:%{1}-}ipaclones-internal\ Summary: *.ipa-clones files generated by -fdump-ipa-clones for kernel%{?1:-%{1}}\ Group: System Environment/Kernel\ AutoReqProv: no\ %description %{?1:%{1}-}ipaclones-internal\ This package provides *.ipa-clones files.\ %{nil} # # This macro creates a kernel--modules-internal package. # %%kernel_modules_internal_package # %define kernel_modules_internal_package() \ %package %{?1:%{1}-}modules-internal\ Summary: Extra kernel modules to match the %{?2:%{2} }kernel\ Group: System Environment/Kernel\ Provides: kernel%{?1:-%{1}}-modules-internal-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: kernel%{?1:-%{1}}-modules-internal-%{_target_cpu} = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: kernel%{?1:-%{1}}-modules-internal = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: installonlypkg(kernel-module)\ Provides: kernel%{?1:-%{1}}-modules-internal-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ AutoReq: no\ AutoProv: yes\ %description %{?1:%{1}-}modules-internal\ This package provides kernel modules for the %{?2:%{2} }kernel package for Red Hat internal usage.\ %{nil} # # This macro creates a kernel--modules-extra package. # %%kernel_modules_extra_package [-m] # %define kernel_modules_extra_package(m) \ %package %{?1:%{1}-}modules-extra\ Summary: Extra kernel modules to match the %{?2:%{2} }kernel\ Provides: kernel%{?1:-%{1}}-modules-extra-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: kernel%{?1:-%{1}}-modules-extra-%{_target_cpu} = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: kernel%{?1:-%{1}}-modules-extra = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: installonlypkg(kernel-module)\ Provides: kernel%{?1:-%{1}}-modules-extra-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ %if %{-m:1}%{!-m:0}\ Requires: kernel-modules-extra-uname-r = %{KVERREL}%{uname_variant %{?1:+%{1}}}\ %endif\ AutoReq: no\ AutoProv: yes\ %description %{?1:%{1}-}modules-extra\ This package provides less commonly used kernel modules for the %{?2:%{2} }kernel package.\ %{nil} # # This macro creates a kernel--modules package. # %%kernel_modules_package [-m] # %define kernel_modules_package(m) \ %package %{?1:%{1}-}modules\ Summary: kernel modules to match the %{?2:%{2}-}core kernel\ Provides: kernel%{?1:-%{1}}-modules-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: kernel-modules-%{_target_cpu} = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: kernel-modules = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: installonlypkg(kernel-module)\ Provides: kernel%{?1:-%{1}}-modules-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ %if %{-m:1}%{!-m:0}\ Requires: kernel-modules-uname-r = %{KVERREL}%{uname_variant %{?1:+%{1}}}\ %endif\ AutoReq: no\ AutoProv: yes\ %description %{?1:%{1}-}modules\ This package provides commonly used kernel modules for the %{?2:%{2}-}core kernel package.\ %{nil} # # This macro creates a kernel--modules-core package. # %%kernel_modules_core_package [-m] # %define kernel_modules_core_package(m) \ %package %{?1:%{1}-}modules-core\ Summary: Core kernel modules to match the %{?2:%{2}-}core kernel\ Provides: kernel%{?1:-%{1}}-modules-core-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: kernel-modules-core-%{_target_cpu} = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: kernel-modules-core = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: installonlypkg(kernel-module)\ Provides: kernel%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ %if %{-m:1}%{!-m:0}\ Requires: kernel-modules-core-uname-r = %{KVERREL}%{uname_variant %{?1:+%{1}}}\ %endif\ AutoReq: no\ AutoProv: yes\ %description %{?1:%{1}-}modules-core\ This package provides essential kernel modules for the %{?2:%{2}-}core kernel package.\ %{nil} # # this macro creates a kernel- meta package. # %%kernel_meta_package # %define kernel_meta_package() \ %package %{1}\ summary: kernel meta-package for the %{1} kernel\ Requires: kernel-%{1}-core-uname-r = %{KVERREL}%{uname_suffix %{1}}\ Requires: kernel-%{1}-modules-uname-r = %{KVERREL}%{uname_suffix %{1}}\ Requires: kernel-%{1}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{1}}\ %if "%{1}" == "rt" || "%{1}" == "rt-debug"\ Requires: realtime-setup\ %endif\ Provides: installonlypkg(kernel)\ %description %{1}\ The meta-package for the %{1} kernel\ %{nil} %if %{with_realtime} # # this macro creates a kernel-rt--kvm package # %%kernel_kvm_package # %define kernel_kvm_package() \ %package %{?1:%{1}-}kvm\ Summary: KVM modules for package kernel%{?1:-%{1}}\ Group: System Environment/Kernel\ Requires: kernel-uname-r = %{KVERREL}%{uname_suffix %{?1:%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Provides: installonlypkg(kernel-module)\ Provides: kernel%{?1:-%{1}}-kvm-%{_target_cpu} = %{version}-%{release}\ AutoReq: no\ %description -n kernel%{?1:-%{1}}-kvm\ This package provides KVM modules for package kernel%{?1:-%{1}}.\ %{nil} %endif # # This macro creates a kernel- and its -devel and -debuginfo too. # %%define variant_summary The Linux kernel compiled for # %%kernel_variant_package [-n ] [-m] [-o] # %define kernel_variant_package(n:mo) \ %package %{?1:%{1}-}core\ Summary: %{variant_summary}\ Provides: kernel-%{?1:%{1}-}core-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Provides: installonlypkg(kernel)\ %if %{-m:1}%{!-m:0}\ Requires: kernel-core-uname-r = %{KVERREL}%{uname_variant %{?1:+%{1}}}\ Requires: kernel-%{?1:%{1}-}-modules-core-uname-r = %{KVERREL}%{uname_variant %{?1:+%{1}}}\ %endif\ %{expand:%%kernel_reqprovconf %{?1:%{1}} %{-o:%{-o}}}\ %if %{?1:1} %{!?1:0} \ %{expand:%%kernel_meta_package %{?1:%{1}}}\ %endif\ %{expand:%%kernel_devel_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}} %{-m:%{-m}}}\ %{expand:%%kernel_devel_matched_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}} %{-m:%{-m}}}\ %{expand:%%kernel_modules_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}} %{-m:%{-m}}}\ %{expand:%%kernel_modules_core_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}} %{-m:%{-m}}}\ %{expand:%%kernel_modules_extra_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}} %{-m:%{-m}}}\ %if %{-m:0}%{!-m:1}\ %{expand:%%kernel_modules_internal_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}}}\ %if 0%{!?fedora:1}\ %{expand:%%kernel_modules_partner_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}}}\ %endif\ %{expand:%%kernel_debuginfo_package %{?1:%{1}}}\ %endif\ %if "%{1}" == "rt" || "%{1}" == "rt-debug"\ %{expand:%%kernel_kvm_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}}}\ %else \ %if %{with_efiuki}\ %package %{?1:%{1}-}uki-virt\ Summary: %{variant_summary} unified kernel image for virtual machines\ Provides: installonlypkg(kernel)\ Provides: kernel-%{?1:%{1}-}uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires(pre): %{kernel_prereq}\ Requires(pre): systemd >= 254-1\ %package %{?1:%{1}-}uki-virt-addons\ Summary: %{variant_summary} unified kernel image addons for virtual machines\ Provides: installonlypkg(kernel)\ Requires: kernel%{?1:-%{1}}-uki-virt = %{specrpmversion}-%{release}\ Requires(pre): systemd >= 254-1\ %endif\ %endif\ %if %{with_gcov}\ %{expand:%%kernel_gcov_package %{?1:%{1}}}\ %endif\ %{nil} # # This macro creates a kernel--modules-partner package. # %%kernel_modules_partner_package # %define kernel_modules_partner_package() \ %package %{?1:%{1}-}modules-partner\ Summary: Extra kernel modules to match the %{?2:%{2} }kernel\ Group: System Environment/Kernel\ Provides: kernel%{?1:-%{1}}-modules-partner-%{_target_cpu} = %{specrpmversion}-%{release}\ Provides: kernel%{?1:-%{1}}-modules-partner-%{_target_cpu} = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: kernel%{?1:-%{1}}-modules-partner = %{specrpmversion}-%{release}%{uname_suffix %{?1:+%{1}}}\ Provides: installonlypkg(kernel-module)\ Provides: kernel%{?1:-%{1}}-modules-partner-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ Requires: kernel%{?1:-%{1}}-modules-core-uname-r = %{KVERREL}%{uname_suffix %{?1:+%{1}}}\ AutoReq: no\ AutoProv: yes\ %description %{?1:%{1}-}modules-partner\ This package provides kernel modules for the %{?2:%{2} }kernel package for Red Hat partners usage.\ %{nil} # Now, each variant package. %if %{with_zfcpdump} %define variant_summary The Linux kernel compiled for zfcpdump usage %kernel_variant_package -o zfcpdump %description zfcpdump-core The kernel package contains the Linux kernel (vmlinuz) for use by the zfcpdump infrastructure. # with_zfcpdump %endif %if %{with_arm64_16k_base} %define variant_summary The Linux kernel compiled for 16k pagesize usage %kernel_variant_package 16k %description 16k-core The kernel package contains a variant of the ARM64 Linux kernel using a 16K page size. %endif %if %{with_arm64_16k} && %{with_debug} %define variant_summary The Linux kernel compiled with extra debugging enabled %if !%{debugbuildsenabled} %kernel_variant_package -m 16k-debug %else %kernel_variant_package 16k-debug %endif %description 16k-debug-core The debug kernel package contains a variant of the ARM64 Linux kernel using a 16K page size. This variant of the kernel has numerous debugging options enabled. It should only be installed when trying to gather additional information on kernel bugs, as some of these options impact performance noticably. %endif %if %{with_arm64_64k_base} %define variant_summary The Linux kernel compiled for 64k pagesize usage %kernel_variant_package 64k %description 64k-core The kernel package contains a variant of the ARM64 Linux kernel using a 64K page size. %endif %if %{with_arm64_64k} && %{with_debug} %define variant_summary The Linux kernel compiled with extra debugging enabled %if !%{debugbuildsenabled} %kernel_variant_package -m 64k-debug %else %kernel_variant_package 64k-debug %endif %description 64k-debug-core The debug kernel package contains a variant of the ARM64 Linux kernel using a 64K page size. This variant of the kernel has numerous debugging options enabled. It should only be installed when trying to gather additional information on kernel bugs, as some of these options impact performance noticably. %endif %if %{with_debug} && %{with_realtime} %define variant_summary The Linux PREEMPT_RT kernel compiled with extra debugging enabled %kernel_variant_package rt-debug %description rt-debug-core The kernel package contains the Linux kernel (vmlinuz), the core of any Linux operating system. The kernel handles the basic functions of the operating system: memory allocation, process allocation, device input and output, etc. This variant of the kernel has numerous debugging options enabled. It should only be installed when trying to gather additional information on kernel bugs, as some of these options impact performance noticably. %endif %if %{with_realtime_base} %define variant_summary The Linux kernel compiled with PREEMPT_RT enabled %kernel_variant_package rt %description rt-core This package includes a version of the Linux kernel compiled with the PREEMPT_RT real-time preemption support %endif %if %{with_up} && %{with_debug} %if !%{debugbuildsenabled} %kernel_variant_package -m debug %else %kernel_variant_package debug %endif %description debug-core The kernel package contains the Linux kernel (vmlinuz), the core of any Linux operating system. The kernel handles the basic functions of the operating system: memory allocation, process allocation, device input and output, etc. This variant of the kernel has numerous debugging options enabled. It should only be installed when trying to gather additional information on kernel bugs, as some of these options impact performance noticably. %endif %if %{with_up_base} # And finally the main -core package %define variant_summary The Linux kernel %kernel_variant_package %description core The kernel package contains the Linux kernel (vmlinuz), the core of any Linux operating system. The kernel handles the basic functions of the operating system: memory allocation, process allocation, device input and output, etc. %endif %if %{with_up} && %{with_debug} && %{with_efiuki} %description debug-uki-virt Prebuilt debug unified kernel image for virtual machines. %description debug-uki-virt-addons Prebuilt debug unified kernel image addons for virtual machines. %endif %if %{with_up_base} && %{with_efiuki} %description uki-virt Prebuilt default unified kernel image for virtual machines. %description uki-virt-addons Prebuilt default unified kernel image addons for virtual machines. %endif %if %{with_arm64_16k} && %{with_debug} && %{with_efiuki} %description 16k-debug-uki-virt Prebuilt 16k debug unified kernel image for virtual machines. %description 16k-debug-uki-virt-addons Prebuilt 16k debug unified kernel image addons for virtual machines. %endif %if %{with_arm64_16k_base} && %{with_efiuki} %description 16k-uki-virt Prebuilt 16k unified kernel image for virtual machines. %description 16k-uki-virt-addons Prebuilt 16k unified kernel image addons for virtual machines. %endif %if %{with_arm64_64k} && %{with_debug} && %{with_efiuki} %description 64k-debug-uki-virt Prebuilt 64k debug unified kernel image for virtual machines. %description 64k-debug-uki-virt-addons Prebuilt 64k debug unified kernel image addons for virtual machines. %endif %if %{with_arm64_64k_base} && %{with_efiuki} %description 64k-uki-virt Prebuilt 64k unified kernel image for virtual machines. %description 64k-uki-virt-addons Prebuilt 64k unified kernel image addons for virtual machines. %endif %if %{with_ipaclones} %kernel_ipaclones_package %endif %define log_msg() \ { set +x; } 2>/dev/null \ _log_msglineno=$(grep -n %{*} %{_specdir}/${RPM_PACKAGE_NAME}.spec | grep log_msg | cut -d":" -f1) \ echo "kernel.spec:${_log_msglineno}: %{*}" \ set -x %prep %{log_msg "Start of prep stage"} %{log_msg "Sanity checks"} # do a few sanity-checks for --with *only builds %if %{with_baseonly} %if !%{with_up} %{log_msg "Cannot build --with baseonly, up build is disabled"} exit 1 %endif %endif # more sanity checking; do it quietly if [ "%{patches}" != "%%{patches}" ] ; then for patch in %{patches} ; do if [ ! -f $patch ] ; then %{log_msg "ERROR: Patch ${patch##/*/} listed in specfile but is missing"} exit 1 fi done fi 2>/dev/null patch_command='git --work-tree=. apply' ApplyPatch() { local patch=$1 shift if [ ! -f $RPM_SOURCE_DIR/$patch ]; then exit 1 fi if ! grep -E "^Patch[0-9]+: $patch\$" %{_specdir}/${RPM_PACKAGE_NAME}.spec ; then if [ "${patch:0:8}" != "patch-%{kversion}." ] ; then %{log_msg "ERROR: Patch $patch not listed as a source patch in specfile"} exit 1 fi fi 2>/dev/null case "$patch" in *.bz2) bunzip2 < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;; *.gz) gunzip < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;; *.xz) unxz < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;; *) $patch_command ${1+"$@"} < "$RPM_SOURCE_DIR/$patch" ;; esac } # don't apply patch if it's empty ApplyOptionalPatch() { local patch=$1 shift %{log_msg "ApplyOptionalPatch: $1"} if [ ! -f $RPM_SOURCE_DIR/$patch ]; then exit 1 fi local C=$(wc -l $RPM_SOURCE_DIR/$patch | awk '{print $1}') if [ "$C" -gt 9 ]; then ApplyPatch $patch ${1+"$@"} fi } %{log_msg "Untar kernel tarball"} %setup -q -n kernel-%{tarfile_release} -c mv linux-%{tarfile_release} linux-%{KVERREL} cd linux-%{KVERREL} cp -a %{SOURCE1} . %{log_msg "Start of patch applications"} %if !%{nopatches} ApplyOptionalPatch patch-%{patchversion}-redhat.patch %endif ApplyOptionalPatch linux-kernel-test.patch %{log_msg "End of patch applications"} # END OF PATCH APPLICATIONS # Any further pre-build tree manipulations happen here. %{log_msg "Pre-build tree manipulations"} chmod +x scripts/checkpatch.pl mv COPYING COPYING-%{specrpmversion}-%{release} # on linux-next prevent scripts/setlocalversion from mucking with our version numbers rm -f localversion-next localversion-rt # Mangle /usr/bin/python shebangs to /usr/bin/python3 # Mangle all Python shebangs to be Python 3 explicitly # -p preserves timestamps # -n prevents creating ~backup files # -i specifies the interpreter for the shebang # This fixes errors such as # *** ERROR: ambiguous python shebang in /usr/bin/kvm_stat: #!/usr/bin/python. Change it to python3 (or python2) explicitly. # We patch all sources below for which we got a report/error. %{log_msg "Fixing Python shebangs..."} %py3_shebang_fix \ tools/kvm/kvm_stat/kvm_stat \ scripts/show_delta \ scripts/diffconfig \ scripts/bloat-o-meter \ scripts/jobserver-exec \ tools \ Documentation \ scripts/clang-tools 2> /dev/null # only deal with configs if we are going to build for the arch %ifnarch %nobuildarches if [ -L configs ]; then rm -f configs fi mkdir configs cd configs %{log_msg "Copy additional source files into buildroot"} # Drop some necessary files from the source dir into the buildroot cp $RPM_SOURCE_DIR/%{name}-*.config . cp %{SOURCE80} . # merge.py cp %{SOURCE3000} . # kernel-local - rename and copy for partial snippet config process cp %{SOURCE3001} partial-kernel-local-snip.config cp %{SOURCE3001} partial-kernel-local-debug-snip.config FLAVOR=%{primary_target} SPECPACKAGE_NAME=%{name} SPECVERSION=%{specversion} SPECRPMVERSION=%{specrpmversion} ./generate_all_configs.sh %{debugbuildsenabled} # Collect custom defined config options %{log_msg "Collect custom defined config options"} PARTIAL_CONFIGS="" %if %{with_gcov} PARTIAL_CONFIGS="$PARTIAL_CONFIGS %{SOURCE70} %{SOURCE71}" %endif %if %{with toolchain_clang} PARTIAL_CONFIGS="$PARTIAL_CONFIGS %{SOURCE72} %{SOURCE73}" %endif %if %{with clang_lto} PARTIAL_CONFIGS="$PARTIAL_CONFIGS %{SOURCE74} %{SOURCE75} %{SOURCE76} %{SOURCE77}" %endif PARTIAL_CONFIGS="$PARTIAL_CONFIGS partial-kernel-local-snip.config partial-kernel-local-debug-snip.config" GetArch() { case "$1" in *aarch64*) echo "aarch64" ;; *ppc64le*) echo "ppc64le" ;; *s390x*) echo "s390x" ;; *x86_64*) echo "x86_64" ;; *riscv64*) echo "riscv64" ;; # no arch, apply everywhere *) echo "" ;; esac } # Merge in any user-provided local config option changes %{log_msg "Merge in any user-provided local config option changes"} %ifnarch %nobuildarches for i in %{all_configs} do kern_arch="$(GetArch $i)" kern_debug="$(echo $i | grep -q debug && echo "debug" || echo "")" for j in $PARTIAL_CONFIGS do part_arch="$(GetArch $j)" part_debug="$(echo $j | grep -q debug && echo "debug" || echo "")" # empty arch means apply to all arches if [ "$part_arch" == "" -o "$part_arch" == "$kern_arch" ] && [ "$part_debug" == "$kern_debug" ] then mv $i $i.tmp ./merge.py $j $i.tmp > $i fi done rm -f $i.tmp done %endif %if %{signkernel}%{signmodules} # Add DUP and kpatch certificates to system trusted keys for RHEL %if 0%{?rhel} %{log_msg "Add DUP and kpatch certificates to system trusted keys for RHEL"} openssl x509 -inform der -in %{SOURCE100} -out rheldup3.pem openssl x509 -inform der -in %{SOURCE101} -out rhelkpatch1.pem openssl x509 -inform der -in %{SOURCE102} -out nvidiagpuoot001.pem cat rheldup3.pem rhelkpatch1.pem nvidiagpuoot001.pem > ../certs/rhel.pem %if %{signkernel} %ifarch s390x ppc64le openssl x509 -inform der -in %{secureboot_ca_0} -out secureboot.pem cat secureboot.pem >> ../certs/rhel.pem %endif %endif # rhel %endif openssl x509 -inform der -in %{ima_ca_cert} -out imaca.pem cat imaca.pem >> ../certs/rhel.pem for i in *.config; do sed -i 's@CONFIG_SYSTEM_TRUSTED_KEYS=""@CONFIG_SYSTEM_TRUSTED_KEYS="certs/rhel.pem"@' $i done %endif # Adjust FIPS module name for RHEL %if 0%{?rhel} %{log_msg "Adjust FIPS module name for RHEL"} for i in *.config; do sed -i 's/CONFIG_CRYPTO_FIPS_NAME=.*/CONFIG_CRYPTO_FIPS_NAME="Red Hat Enterprise Linux %{rhel} - Kernel Cryptographic API"/' $i done %endif %{log_msg "Set process_configs.sh $OPTS"} cp %{SOURCE81} . OPTS="" %if %{with_configchecks} OPTS="$OPTS -w -n -c" %endif %if %{with clang_lto} for opt in %{clang_make_opts}; do OPTS="$OPTS -m $opt" done %endif %{log_msg "Generate redhat configs"} RHJOBS=$RPM_BUILD_NCPUS SPECPACKAGE_NAME=%{name} ./process_configs.sh $OPTS %{specrpmversion} # We may want to override files from the primary target in case of building # against a flavour of it (eg. centos not rhel), thus override it here if # necessary update_scripts() { TARGET="$1" for i in "$RPM_SOURCE_DIR"/*."$TARGET"; do NEW=${i%."$TARGET"} cp "$i" "$(basename "$NEW")" done } %{log_msg "Set scripts/SOURCES targets"} update_target=%{primary_target} if [ "%{primary_target}" == "rhel" ]; then : # no-op to avoid empty if-fi error %if 0%{?centos} update_scripts $update_target %{log_msg "Updating scripts/sources to centos version"} update_target=centos %endif fi update_scripts $update_target %endif %{log_msg "End of kernel config"} cd .. # # End of Configs stuff # get rid of unwanted files resulting from patch fuzz find . \( -name "*.orig" -o -name "*~" \) -delete >/dev/null # remove unnecessary SCM files find . -name .gitignore -delete >/dev/null cd .. ### ### build ### %build %{log_msg "Start of build stage"} %{log_msg "General arch build configuration"} rm -rf %{buildroot_unstripped} || true mkdir -p %{buildroot_unstripped} %if %{with_sparse} %define sparse_mflags C=1 %endif cp_vmlinux() { eu-strip --remove-comment -o "$2" "$1" } # Note we need to disable these flags for cross builds because the flags # from redhat-rpm-config assume that host == target so target arch # flags cause issues with the host compiler. %if !%{with_cross} %define build_hostcflags %{?build_cflags} %define build_hostldflags %{?build_ldflags} %endif %define make %{__make} %{?cross_opts} %{?make_opts} HOSTCFLAGS="%{?build_hostcflags}" HOSTLDFLAGS="%{?build_hostldflags}" InitBuildVars() { %{log_msg "InitBuildVars for $1"} %{log_msg "InitBuildVars: Initialize build variables"} # Initialize the kernel .config file and create some variables that are # needed for the actual build process. Variant=$1 # Pick the right kernel config file Config=%{name}-%{specrpmversion}-%{_target_cpu}${Variant:+-${Variant}}.config DevelDir=/usr/src/kernels/%{KVERREL}${Variant:++${Variant}} KernelVer=%{specversion}-%{release}.%{_target_cpu}${Variant:++${Variant}} %{log_msg "InitBuildVars: Update Makefile"} # make sure EXTRAVERSION says what we want it to say # Trim the release if this is a CI build, since KERNELVERSION is limited to 64 characters ShortRel=$(perl -e "print \"%{release}\" =~ s/\.pr\.[0-9A-Fa-f]{32}//r") perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${ShortRel}.%{_target_cpu}${Variant:++${Variant}}/" Makefile # if pre-rc1 devel kernel, must fix up PATCHLEVEL for our versioning scheme # if we are post rc1 this should match anyway so this won't matter perl -p -i -e 's/^PATCHLEVEL.*/PATCHLEVEL = %{patchlevel}/' Makefile %{log_msg "InitBuildVars: Copy files"} %{make} %{?_smp_mflags} mrproper cp configs/$Config .config %if %{signkernel}%{signmodules} cp configs/x509.genkey certs/. %endif %if %{with_debuginfo} == 0 sed -i 's/^\(CONFIG_DEBUG_INFO.*\)=y/# \1 is not set/' .config %endif Arch=`head -1 .config | cut -b 3-` %{log_msg "InitBuildVars: USING ARCH=$Arch"} KCFLAGS="%{?kcflags}" # add kpatch flags for base kernel %{log_msg "InitBuildVars: Configure KCFLAGS"} if [ "$Variant" == "" ]; then KCFLAGS="$KCFLAGS %{?kpatch_kcflags}" fi } BuildKernel() { %{log_msg "BuildKernel for $4"} MakeTarget=$1 KernelImage=$2 DoVDSO=$3 Variant=$4 InstallName=${5:-vmlinuz} %{log_msg "Setup variables"} DoModules=1 if [ "$Variant" = "zfcpdump" ]; then DoModules=0 fi # When the bootable image is just the ELF kernel, strip it. # We already copy the unstripped file into the debuginfo package. if [ "$KernelImage" = vmlinux ]; then CopyKernel=cp_vmlinux else CopyKernel=cp fi %if %{with_gcov} %{log_msg "Setup build directories"} # Make build directory unique for each variant, so that gcno symlinks # are also unique for each variant. if [ -n "$Variant" ]; then ln -s $(pwd) ../linux-%{KVERREL}-${Variant} fi %{log_msg "GCOV - continuing build in: $(pwd)"} pushd ../linux-%{KVERREL}${Variant:+-${Variant}} pwd > ../kernel${Variant:+-${Variant}}-gcov.list %endif %{log_msg "Calling InitBuildVars for $Variant"} InitBuildVars $Variant %{log_msg "BUILDING A KERNEL FOR ${Variant} %{_target_cpu}..."} %{make} ARCH=$Arch olddefconfig >/dev/null %{log_msg "Setup build-ids"} # This ensures build-ids are unique to allow parallel debuginfo perl -p -i -e "s/^CONFIG_BUILD_SALT.*/CONFIG_BUILD_SALT=\"%{KVERREL}\"/" .config %{make} ARCH=$Arch KCFLAGS="$KCFLAGS" WITH_GCOV="%{?with_gcov}" %{?_smp_mflags} $MakeTarget %{?sparse_mflags} %{?kernel_mflags} if [ $DoModules -eq 1 ]; then %{make} ARCH=$Arch KCFLAGS="$KCFLAGS" WITH_GCOV="%{?with_gcov}" %{?_smp_mflags} modules %{?sparse_mflags} || exit 1 fi %{log_msg "Setup RPM_BUILD_ROOT directories"} mkdir -p $RPM_BUILD_ROOT/%{image_install_path} mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/systemtap %if %{with_debuginfo} mkdir -p $RPM_BUILD_ROOT%{debuginfodir}/%{image_install_path} %endif %ifarch aarch64 riscv64 %{log_msg "Build dtb kernel"} %{make} ARCH=$Arch dtbs INSTALL_DTBS_PATH=$RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer %{make} ARCH=$Arch dtbs_install INSTALL_DTBS_PATH=$RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer cp -r $RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer $RPM_BUILD_ROOT/lib/modules/$KernelVer/dtb find arch/$Arch/boot/dts -name '*.dtb' -type f -delete %endif %{log_msg "Cleanup temp btf files"} # Remove large intermediate files we no longer need to save space # (-f required for zfcpdump builds that do not enable BTF) rm -f vmlinux.o .tmp_vmlinux.btf %{log_msg "Install files to RPM_BUILD_ROOT"} # Comment out specific config settings that may use resources not available # to the end user so that the packaged config file can be easily reused with # upstream make targets %if %{signkernel}%{signmodules} sed -i -e '/^CONFIG_SYSTEM_TRUSTED_KEYS/{ i\# The kernel was built with s/^/# / a\# We are resetting this value to facilitate local builds a\CONFIG_SYSTEM_TRUSTED_KEYS="" }' .config %endif # Start installing the results install -m 644 .config $RPM_BUILD_ROOT/boot/config-$KernelVer install -m 644 .config $RPM_BUILD_ROOT/lib/modules/$KernelVer/config install -m 644 System.map $RPM_BUILD_ROOT/boot/System.map-$KernelVer install -m 644 System.map $RPM_BUILD_ROOT/lib/modules/$KernelVer/System.map %{log_msg "Create initrfamfs"} # We estimate the size of the initramfs because rpm needs to take this size # into consideration when performing disk space calculations. (See bz #530778) dd if=/dev/zero of=$RPM_BUILD_ROOT/boot/initramfs-$KernelVer.img bs=1M count=20 if [ -f arch/$Arch/boot/zImage.stub ]; then %{log_msg "Copy zImage.stub to RPM_BUILD_ROOT"} cp arch/$Arch/boot/zImage.stub $RPM_BUILD_ROOT/%{image_install_path}/zImage.stub-$KernelVer || : cp arch/$Arch/boot/zImage.stub $RPM_BUILD_ROOT/lib/modules/$KernelVer/zImage.stub-$KernelVer || : fi %if %{signkernel} %{log_msg "Copy kernel for signing"} if [ "$KernelImage" = vmlinux ]; then # We can't strip and sign $KernelImage in place, because # we need to preserve original vmlinux for debuginfo. # Use a copy for signing. $CopyKernel $KernelImage $KernelImage.tosign KernelImage=$KernelImage.tosign CopyKernel=cp fi SignImage=$KernelImage %ifarch x86_64 aarch64 %{log_msg "Sign kernel image"} %pesign -s -i $SignImage -o vmlinuz.signed -a %{secureboot_ca_0} -c %{secureboot_key_0} -n %{pesign_name_0} %endif %ifarch s390x ppc64le if [ -x /usr/bin/rpm-sign ]; then rpm-sign --key "%{pesign_name_0}" --lkmsign $SignImage --output vmlinuz.signed elif [ "$DoModules" == "1" -a "%{signmodules}" == "1" ]; then chmod +x scripts/sign-file ./scripts/sign-file -p sha256 certs/signing_key.pem certs/signing_key.x509 $SignImage vmlinuz.signed else mv $SignImage vmlinuz.signed fi %endif if [ ! -s vmlinuz.signed ]; then %{log_msg "pesigning failed"} exit 1 fi mv vmlinuz.signed $SignImage # signkernel %endif %{log_msg "copy signed kernel"} $CopyKernel $KernelImage \ $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer chmod 755 $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer cp $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer $RPM_BUILD_ROOT/lib/modules/$KernelVer/$InstallName # hmac sign the kernel for FIPS %{log_msg "hmac sign the kernel for FIPS"} %{log_msg "Creating hmac file: $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac"} ls -l $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer (cd $RPM_BUILD_ROOT/%{image_install_path} && sha512hmac $InstallName-$KernelVer) > $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac; cp $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac $RPM_BUILD_ROOT/lib/modules/$KernelVer/.vmlinuz.hmac if [ $DoModules -eq 1 ]; then %{log_msg "Install modules in RPM_BUILD_ROOT"} # Override $(mod-fw) because we don't want it to install any firmware # we'll get it from the linux-firmware package and we don't want conflicts %{make} %{?_smp_mflags} ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT %{?_smp_mflags} modules_install KERNELRELEASE=$KernelVer mod-fw= fi %if %{with_gcov} %{log_msg "install gcov-needed files to $BUILDROOT/$BUILD/"} # install gcov-needed files to $BUILDROOT/$BUILD/...: # gcov_info->filename is absolute path # gcno references to sources can use absolute paths (e.g. in out-of-tree builds) # sysfs symlink targets (set up at compile time) use absolute paths to BUILD dir find . \( -name '*.gcno' -o -name '*.[chS]' \) -exec install -D '{}' "$RPM_BUILD_ROOT/$(pwd)/{}" \; %endif %{log_msg "Add VDSO files"} # add an a noop %%defattr statement 'cause rpm doesn't like empty file list files echo '%%defattr(-,-,-)' > ../kernel${Variant:+-${Variant}}-ldsoconf.list if [ $DoVDSO -ne 0 ]; then %{make} ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT vdso_install KERNELRELEASE=$KernelVer if [ -s ldconfig-kernel.conf ]; then install -D -m 444 ldconfig-kernel.conf \ $RPM_BUILD_ROOT/etc/ld.so.conf.d/kernel-$KernelVer.conf echo /etc/ld.so.conf.d/kernel-$KernelVer.conf >> ../kernel${Variant:+-${Variant}}-ldsoconf.list fi rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/vdso/.build-id fi %{log_msg "Save headers/makefiles, etc. for kernel-headers"} # And save the headers/makefiles etc for building modules against # # This all looks scary, but the end result is supposed to be: # * all arch relevant include/ files # * all Makefile/Kconfig files # * all script/ files rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/source mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build (cd $RPM_BUILD_ROOT/lib/modules/$KernelVer ; ln -s build source) # dirs for additional modules per module-init-tools, kbuild/modules.txt mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/updates mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/weak-updates # CONFIG_KERNEL_HEADER_TEST generates some extra files in the process of # testing so just delete find . -name *.h.s -delete # first copy everything cp --parents `find -type f -name "Makefile*" -o -name "Kconfig*"` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build if [ ! -e Module.symvers ]; then touch Module.symvers fi cp Module.symvers $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp System.map $RPM_BUILD_ROOT/lib/modules/$KernelVer/build if [ -s Module.markers ]; then cp Module.markers $RPM_BUILD_ROOT/lib/modules/$KernelVer/build fi # create the kABI metadata for use in packaging # NOTENOTE: the name symvers is used by the rpm backend # NOTENOTE: to discover and run the /usr/lib/rpm/fileattrs/kabi.attr # NOTENOTE: script which dynamically adds exported kernel symbol # NOTENOTE: checksums to the rpm metadata provides list. # NOTENOTE: if you change the symvers name, update the backend too %{log_msg "GENERATING kernel ABI metadata"} %compression --stdout %compression_flags < Module.symvers > $RPM_BUILD_ROOT/boot/symvers-$KernelVer.%compext cp $RPM_BUILD_ROOT/boot/symvers-$KernelVer.%compext $RPM_BUILD_ROOT/lib/modules/$KernelVer/symvers.%compext %if %{with_kabichk} %{log_msg "kABI checking is enabled in kernel SPEC file."} chmod 0755 $RPM_SOURCE_DIR/check-kabi if [ -e $RPM_SOURCE_DIR/Module.kabi_%{_target_cpu}$Variant ]; then cp $RPM_SOURCE_DIR/Module.kabi_%{_target_cpu}$Variant $RPM_BUILD_ROOT/Module.kabi $RPM_SOURCE_DIR/check-kabi -k $RPM_BUILD_ROOT/Module.kabi -s Module.symvers || exit 1 # for now, don't keep it around. rm $RPM_BUILD_ROOT/Module.kabi else %{log_msg "NOTE: Cannot find reference Module.kabi file."} fi %endif %if %{with_kabidupchk} %{log_msg "kABI DUP checking is enabled in kernel SPEC file."} if [ -e $RPM_SOURCE_DIR/Module.kabi_dup_%{_target_cpu}$Variant ]; then cp $RPM_SOURCE_DIR/Module.kabi_dup_%{_target_cpu}$Variant $RPM_BUILD_ROOT/Module.kabi $RPM_SOURCE_DIR/check-kabi -k $RPM_BUILD_ROOT/Module.kabi -s Module.symvers || exit 1 # for now, don't keep it around. rm $RPM_BUILD_ROOT/Module.kabi else %{log_msg "NOTE: Cannot find DUP reference Module.kabi file."} fi %endif %if %{with_kabidw_base} # Don't build kabi base for debug kernels if [ "$Variant" != "zfcpdump" -a "$Variant" != "debug" ]; then mkdir -p $RPM_BUILD_ROOT/kabi-dwarf tar -xvf %{SOURCE301} -C $RPM_BUILD_ROOT/kabi-dwarf mkdir -p $RPM_BUILD_ROOT/kabi-dwarf/stablelists tar -xvf %{SOURCE300} -C $RPM_BUILD_ROOT/kabi-dwarf/stablelists %{log_msg "GENERATING DWARF-based kABI baseline dataset"} chmod 0755 $RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh $RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh generate \ "$RPM_BUILD_ROOT/kabi-dwarf/stablelists/kabi-current/kabi_stablelist_%{_target_cpu}" \ "$(pwd)" \ "$RPM_BUILD_ROOT/kabidw-base/%{_target_cpu}${Variant:+.${Variant}}" || : rm -rf $RPM_BUILD_ROOT/kabi-dwarf fi %endif %if %{with_kabidwchk} if [ "$Variant" != "zfcpdump" ]; then mkdir -p $RPM_BUILD_ROOT/kabi-dwarf tar -xvf %{SOURCE301} -C $RPM_BUILD_ROOT/kabi-dwarf if [ -d "$RPM_BUILD_ROOT/kabi-dwarf/base/%{_target_cpu}${Variant:+.${Variant}}" ]; then mkdir -p $RPM_BUILD_ROOT/kabi-dwarf/stablelists tar -xvf %{SOURCE300} -C $RPM_BUILD_ROOT/kabi-dwarf/stablelists %{log_msg "GENERATING DWARF-based kABI dataset"} chmod 0755 $RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh $RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh generate \ "$RPM_BUILD_ROOT/kabi-dwarf/stablelists/kabi-current/kabi_stablelist_%{_target_cpu}" \ "$(pwd)" \ "$RPM_BUILD_ROOT/kabi-dwarf/base/%{_target_cpu}${Variant:+.${Variant}}.tmp" || : %{log_msg "kABI DWARF-based comparison report"} $RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh compare \ "$RPM_BUILD_ROOT/kabi-dwarf/base/%{_target_cpu}${Variant:+.${Variant}}" \ "$RPM_BUILD_ROOT/kabi-dwarf/base/%{_target_cpu}${Variant:+.${Variant}}.tmp" || : %{log_msg "End of kABI DWARF-based comparison report"} else %{log_msg "Baseline dataset for kABI DWARF-BASED comparison report not found"} fi rm -rf $RPM_BUILD_ROOT/kabi-dwarf fi %endif %{log_msg "Cleanup Makefiles/Kconfig files"} # then drop all but the needed Makefiles/Kconfig files rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include cp .config $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a scripts $RPM_BUILD_ROOT/lib/modules/$KernelVer/build rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts/tracing rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts/spdxcheck.py %ifarch s390x # CONFIG_EXPOLINE_EXTERN=y produces arch/s390/lib/expoline/expoline.o # which is needed during external module build. %{log_msg "Copy expoline.o"} if [ -f arch/s390/lib/expoline/expoline.o ]; then cp -a --parents arch/s390/lib/expoline/expoline.o $RPM_BUILD_ROOT/lib/modules/$KernelVer/build fi %endif %{log_msg "Copy additional files for make targets"} # Files for 'make scripts' to succeed with kernel-devel. mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/security/selinux/include cp -a --parents security/selinux/include/classmap.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents security/selinux/include/initial_sid_to_string.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/tools/include/tools cp -a --parents tools/include/tools/be_byteshift.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/include/tools/le_byteshift.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build # Files for 'make prepare' to succeed with kernel-devel. cp -a --parents tools/include/linux/compiler* $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/include/linux/types.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/build/Build.include $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents tools/build/fixdep.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents tools/objtool/sync-check.sh $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/bpf/resolve_btfids $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents security/selinux/include/policycap_names.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents security/selinux/include/policycap.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/include/asm $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/include/asm-generic $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/include/linux $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/include/uapi/asm $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/include/uapi/asm-generic $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/include/uapi/linux $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/include/vdso $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents tools/scripts/utilities.mak $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/lib/subcmd $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents tools/lib/*.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents tools/objtool/*.[ch] $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents tools/objtool/Build $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents tools/objtool/include/objtool/*.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/lib/bpf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp --parents tools/lib/bpf/Build $RPM_BUILD_ROOT/lib/modules/$KernelVer/build if [ -f tools/objtool/objtool ]; then cp -a tools/objtool/objtool $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/tools/objtool/ || : fi if [ -f tools/objtool/fixdep ]; then cp -a tools/objtool/fixdep $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/tools/objtool/ || : fi if [ -d arch/$Arch/scripts ]; then cp -a arch/$Arch/scripts $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/%{_arch} || : fi if [ -f arch/$Arch/*lds ]; then cp -a arch/$Arch/*lds $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/%{_arch}/ || : fi if [ -f arch/%{asmarch}/kernel/module.lds ]; then cp -a --parents arch/%{asmarch}/kernel/module.lds $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ fi find $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts \( -iname "*.o" -o -iname "*.cmd" \) -exec rm -f {} + %ifarch ppc64le cp -a --parents arch/powerpc/lib/crtsavres.[So] $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ %endif if [ -d arch/%{asmarch}/include ]; then cp -a --parents arch/%{asmarch}/include $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ fi if [ -d tools/arch/%{asmarch}/include ]; then cp -a --parents tools/arch/%{asmarch}/include $RPM_BUILD_ROOT/lib/modules/$KernelVer/build fi %ifarch aarch64 # arch/arm64/include/asm/xen references arch/arm cp -a --parents arch/arm/include/asm/xen $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ # arch/arm64/include/asm/opcodes.h references arch/arm cp -a --parents arch/arm/include/asm/opcodes.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ %endif cp -a include $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include # Cross-reference from include/perf/events/sof.h cp -a sound/soc/sof/sof-audio.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/sound/soc/sof %ifarch i686 x86_64 # files for 'make prepare' to succeed with kernel-devel cp -a --parents arch/x86/entry/syscalls/syscall_32.tbl $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/entry/syscalls/syscall_64.tbl $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/tools/relocs_32.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/tools/relocs_64.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/tools/relocs.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/tools/relocs_common.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/tools/relocs.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/purgatory/purgatory.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/purgatory/stack.S $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/purgatory/setup-x86_64.S $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/purgatory/entry64.S $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/boot/string.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/boot/string.c $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents arch/x86/boot/ctype.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents scripts/syscalltbl.sh $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents scripts/syscallhdr.sh $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ cp -a --parents tools/arch/x86/include/asm $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/arch/x86/include/uapi/asm $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/objtool/arch/x86/lib $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/arch/x86/lib/ $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/arch/x86/tools/gen-insn-attr-x86.awk $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/objtool/arch/x86/ $RPM_BUILD_ROOT/lib/modules/$KernelVer/build %endif %{log_msg "Clean up intermediate tools files"} # Clean up intermediate tools files find $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/tools \( -iname "*.o" -o -iname "*.cmd" \) -exec rm -f {} + # Make sure the Makefile, version.h, and auto.conf have a matching # timestamp so that external modules can be built touch -r $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/Makefile \ $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/generated/uapi/linux/version.h \ $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/config/auto.conf %if %{with_debuginfo} eu-readelf -n vmlinux | grep "Build ID" | awk '{print $NF}' > vmlinux.id cp vmlinux.id $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/vmlinux.id %{log_msg "Copy additional files for kernel-debuginfo rpm"} # # save the vmlinux file for kernel debugging into the kernel-debuginfo rpm # (use mv + symlink instead of cp to reduce disk space requirements) # mkdir -p $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer mv vmlinux $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer ln -s $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer/vmlinux vmlinux if [ -n "%{?vmlinux_decompressor}" ]; then eu-readelf -n %{vmlinux_decompressor} | grep "Build ID" | awk '{print $NF}' > vmlinux.decompressor.id # Without build-id the build will fail. But for s390 the build-id # wasn't added before 5.11. In case it is missing prefer not # packaging the debuginfo over a build failure. if [ -s vmlinux.decompressor.id ]; then cp vmlinux.decompressor.id $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/vmlinux.decompressor.id cp %{vmlinux_decompressor} $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer/vmlinux.decompressor fi fi # build and copy the vmlinux-gdb plugin files into kernel-debuginfo %{make} ARCH=$Arch %{?_smp_mflags} scripts_gdb cp -a --parents scripts/gdb/{,linux/}*.py $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer # this should be a relative symlink (Kbuild creates an absolute one) ln -s scripts/gdb/vmlinux-gdb.py $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer/vmlinux-gdb.py %py_byte_compile %{python3} $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer/scripts/gdb %endif %{log_msg "Create modnames"} find $RPM_BUILD_ROOT/lib/modules/$KernelVer -name "*.ko" -type f >modnames # mark modules executable so that strip-to-file can strip them xargs --no-run-if-empty chmod u+x < modnames # Generate a list of modules for block and networking. %{log_msg "Generate a list of modules for block and networking"} grep -F /drivers/ modnames | xargs --no-run-if-empty nm -upA | sed -n 's,^.*/\([^/]*\.ko\): *U \(.*\)$,\1 \2,p' > drivers.undef collect_modules_list() { sed -r -n -e "s/^([^ ]+) \\.?($2)\$/\\1/p" drivers.undef | LC_ALL=C sort -u > $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.$1 if [ ! -z "$3" ]; then sed -r -e "/^($3)\$/d" -i $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.$1 fi } collect_modules_list networking \ 'register_netdev|ieee80211_register_hw|usbnet_probe|phy_driver_register|rt(l_|2x00)(pci|usb)_probe|register_netdevice' collect_modules_list block \ 'ata_scsi_ioctl|scsi_add_host|scsi_add_host_with_dma|blk_alloc_queue|blk_init_queue|register_mtd_blktrans|scsi_esp_register|scsi_register_device_handler|blk_queue_physical_block_size' 'pktcdvd.ko|dm-mod.ko' collect_modules_list drm \ 'drm_open|drm_init' collect_modules_list modesetting \ 'drm_crtc_init' %{log_msg "detect missing or incorrect license tags"} # detect missing or incorrect license tags ( find $RPM_BUILD_ROOT/lib/modules/$KernelVer -name '*.ko' | xargs /sbin/modinfo -l | \ grep -E -v 'GPL( v2)?$|Dual BSD/GPL$|Dual MPL/GPL$|GPL and additional rights$' ) && exit 1 if [ $DoModules -eq 0 ]; then %{log_msg "Create empty files for RPM packaging"} # Ensure important files/directories exist to let the packaging succeed echo '%%defattr(-,-,-)' > ../kernel${Variant:+-${Variant}}-modules-core.list echo '%%defattr(-,-,-)' > ../kernel${Variant:+-${Variant}}-modules.list echo '%%defattr(-,-,-)' > ../kernel${Variant:+-${Variant}}-modules-extra.list echo '%%defattr(-,-,-)' > ../kernel${Variant:+-${Variant}}-modules-internal.list echo '%%defattr(-,-,-)' > ../kernel${Variant:+-${Variant}}-modules-partner.list mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/kernel # Add files usually created by make modules, needed to prevent errors # thrown by depmod during package installation touch $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.order touch $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.builtin fi # Copy the System.map file for depmod to use cp System.map $RPM_BUILD_ROOT/. if [[ "$Variant" == "rt" || "$Variant" == "rt-debug" ]]; then %{log_msg "Skipping efiuki build"} else %if %{with_efiuki} %{log_msg "Setup the EFI UKI kernel"} # RHEL/CentOS specific .SBAT entries %if 0%{?centos} SBATsuffix="centos" %else SBATsuffix="rhel" %endif SBAT=$(cat <<- EOF linux,1,Red Hat,linux,$KernelVer,mailto:secalert@redhat.com linux.$SBATsuffix,1,Red Hat,linux,$KernelVer,mailto:secalert@redhat.com kernel-uki-virt.$SBATsuffix,1,Red Hat,kernel-uki-virt,$KernelVer,mailto:secalert@redhat.com EOF ) KernelUnifiedImageDir="$RPM_BUILD_ROOT/lib/modules/$KernelVer" KernelUnifiedImage="$KernelUnifiedImageDir/$InstallName-virt.efi" mkdir -p $KernelUnifiedImageDir dracut --conf=%{SOURCE86} \ --confdir=$(mktemp -d) \ --verbose \ --kver "$KernelVer" \ --kmoddir "$RPM_BUILD_ROOT/lib/modules/$KernelVer/" \ --logfile=$(mktemp) \ --uefi \ %if 0%{?rhel} && !0%{?eln} --sbat "$SBAT" \ %endif --kernel-image $(realpath $KernelImage) \ --kernel-cmdline 'console=tty0 console=ttyS0' \ $KernelUnifiedImage KernelAddonsDirOut="$KernelUnifiedImage.extra.d" mkdir -p $KernelAddonsDirOut python3 %{SOURCE151} %{SOURCE152} $KernelAddonsDirOut virt %{primary_target} %{_target_cpu} %if %{signkernel} %{log_msg "Sign the EFI UKI kernel"} %if 0%{?fedora}%{?eln} %pesign -s -i $KernelUnifiedImage -o $KernelUnifiedImage.signed -a %{secureboot_ca_0} -c %{secureboot_key_0} -n %{pesign_name_0} %else %if 0%{?centos} UKI_secureboot_name=centossecureboot204 %else UKI_secureboot_name=redhatsecureboot504 %endif UKI_secureboot_cert=%{_datadir}/pki/sb-certs/secureboot-uki-virt-%{_arch}.cer %pesign -s -i $KernelUnifiedImage -o $KernelUnifiedImage.signed -a %{secureboot_ca_0} -c $UKI_secureboot_cert -n $UKI_secureboot_name # 0%{?fedora}%{?eln} %endif if [ ! -s $KernelUnifiedImage.signed ]; then echo "pesigning failed" exit 1 fi mv $KernelUnifiedImage.signed $KernelUnifiedImage for addon in "$KernelAddonsDirOut"/*; do %pesign -s -i $addon -o $addon.signed -a %{secureboot_ca_0} -c %{secureboot_key_0} -n %{pesign_name_0} rm -f $addon mv $addon.signed $addon done # signkernel %endif # hmac sign the UKI for FIPS KernelUnifiedImageHMAC="$KernelUnifiedImageDir/.$InstallName-virt.efi.hmac" %{log_msg "hmac sign the UKI for FIPS"} %{log_msg "Creating hmac file: $KernelUnifiedImageHMAC"} (cd $KernelUnifiedImageDir && sha512hmac $InstallName-virt.efi) > $KernelUnifiedImageHMAC; # with_efiuki %endif : # in case of empty block fi # "$Variant" == "rt" || "$Variant" == "rt-debug" # # 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 # this creates ../modules-*.list output, where each kmod path is as it # appears in modules.dep (relative to lib/modules/$KernelVer) ret=0 %{SOURCE22} -l "../filtermods-$KernelVer.log" sort -d $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.dep -c configs/def_variants.yaml $variants_param -o .. || ret=$? if [ $ret -ne 0 ]; then echo "8< --- filtermods-$KernelVer.log ---" cat "../filtermods-$KernelVer.log" echo "--- filtermods-$KernelVer.log --- >8" echo "8< --- modules.dep ---" cat $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.dep echo "--- modules.dep --- >8" exit 1 fi create_module_file_list "kernel" ../modules-core.list ../kernel${Variant:+-${Variant}}-modules-core.list 1 0 create_module_file_list "kernel" ../modules.list ../kernel${Variant:+-${Variant}}-modules.list 0 0 create_module_file_list "internal" ../modules-internal.list ../kernel${Variant:+-${Variant}}-modules-internal.list 0 1 create_module_file_list "kernel" ../modules-extra.list ../kernel${Variant:+-${Variant}}-modules-extra.list 0 1 if [[ "$Variant" == "rt" || "$Variant" == "rt-debug" ]]; then create_module_file_list "kvm" ../modules-rt-kvm.list ../kernel${Variant:+-${Variant}}-modules-rt-kvm.list 0 1 fi %if 0%{!?fedora:1} create_module_file_list "partner" ../modules-partner.list ../kernel${Variant:+-${Variant}}-modules-partner.list 1 1 %endif fi # $DoModules -eq 1 remove_depmod_files() { # remove files that will be auto generated by depmod at rpm -i time pushd $RPM_BUILD_ROOT/lib/modules/$KernelVer/ # in case below list needs to be extended, remember to add a # matching ghost entry in the files section as well rm -f modules.{alias,alias.bin,builtin.alias.bin,builtin.bin} \ modules.{dep,dep.bin,devname,softdep,symbols,symbols.bin,weakdep} popd } # Cleanup %{log_msg "Cleanup build files"} rm -f $RPM_BUILD_ROOT/System.map %{log_msg "Remove depmod files"} remove_depmod_files %if %{with_cross} make -C $RPM_BUILD_ROOT/lib/modules/$KernelVer/build M=scripts clean make -C $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/tools/bpf/resolve_btfids clean sed -i 's/REBUILD_SCRIPTS_FOR_CROSS:=0/REBUILD_SCRIPTS_FOR_CROSS:=1/' $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/Makefile %endif # Move the devel headers out of the root file system %{log_msg "Move the devel headers to RPM_BUILD_ROOT"} mkdir -p $RPM_BUILD_ROOT/usr/src/kernels mv $RPM_BUILD_ROOT/lib/modules/$KernelVer/build $RPM_BUILD_ROOT/$DevelDir # This is going to create a broken link during the build, but we don't use # it after this point. We need the link to actually point to something # when kernel-devel is installed, and a relative link doesn't work across # the F17 UsrMove feature. ln -sf $DevelDir $RPM_BUILD_ROOT/lib/modules/$KernelVer/build %if %{with_debuginfo} # Generate vmlinux.h and put it to kernel-devel path # zfcpdump build does not have btf anymore if [ "$Variant" != "zfcpdump" ]; then %{log_msg "Build the bootstrap bpftool to generate vmlinux.h"} # Build the bootstrap bpftool to generate vmlinux.h export BPFBOOTSTRAP_CFLAGS=$(echo "%{__global_compiler_flags}" | sed -r "s/\-specs=[^\ ]+\/redhat-annobin-cc1//") export BPFBOOTSTRAP_LDFLAGS=$(echo "%{__global_ldflags}" | sed -r "s/\-specs=[^\ ]+\/redhat-annobin-cc1//") CFLAGS="" LDFLAGS="" make EXTRA_CFLAGS="${BPFBOOTSTRAP_CFLAGS}" EXTRA_CXXFLAGS="${BPFBOOTSTRAP_CFLAGS}" EXTRA_LDFLAGS="${BPFBOOTSTRAP_LDFLAGS}" %{?make_opts} %{?clang_make_opts} V=1 -C tools/bpf/bpftool bootstrap tools/bpf/bpftool/bootstrap/bpftool btf dump file vmlinux format c > $RPM_BUILD_ROOT/$DevelDir/vmlinux.h fi %endif %{log_msg "Cleanup kernel-devel and kernel-debuginfo files"} # prune junk from kernel-devel find $RPM_BUILD_ROOT/usr/src/kernels -name ".*.cmd" -delete # prune junk from kernel-debuginfo find $RPM_BUILD_ROOT/usr/src/kernels -name "*.mod.c" -delete # Red Hat UEFI Secure Boot CA cert, which can be used to authenticate the kernel %{log_msg "Install certs"} mkdir -p $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer %if %{signkernel} install -m 0644 %{secureboot_ca_0} $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer/kernel-signing-ca.cer %ifarch s390x ppc64le if [ -x /usr/bin/rpm-sign ]; then install -m 0644 %{secureboot_key_0} $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer/%{signing_key_filename} fi %endif %endif %if 0%{?rhel} # Red Hat IMA code-signing cert, which is used to authenticate package files install -m 0644 %{ima_signing_cert} $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer/%{ima_cert_name} %endif %if %{signmodules} if [ $DoModules -eq 1 ]; then # Save the signing keys so we can sign the modules in __modsign_install_post cp certs/signing_key.pem certs/signing_key.pem.sign${Variant:++${Variant}} cp certs/signing_key.x509 certs/signing_key.x509.sign${Variant:++${Variant}} %ifarch s390x ppc64le if [ ! -x /usr/bin/rpm-sign ]; then install -m 0644 certs/signing_key.x509.sign${Variant:++${Variant}} $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer/kernel-signing-ca.cer openssl x509 -in certs/signing_key.pem.sign${Variant:++${Variant}} -outform der -out $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer/%{signing_key_filename} chmod 0644 $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer/%{signing_key_filename} fi %endif fi %endif %if %{with_ipaclones} %{log_msg "install IPA clones"} MAXPROCS=$(echo %{?_smp_mflags} | sed -n 's/-j\s*\([0-9]\+\)/\1/p') if [ -z "$MAXPROCS" ]; then MAXPROCS=1 fi if [ "$Variant" == "" ]; then mkdir -p $RPM_BUILD_ROOT/$DevelDir-ipaclones find . -name '*.ipa-clones' | xargs -i{} -r -n 1 -P $MAXPROCS install -m 644 -D "{}" "$RPM_BUILD_ROOT/$DevelDir-ipaclones/{}" fi %endif %if %{with_gcov} popd %endif } ### # DO it... ### # prepare directories rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/boot mkdir -p $RPM_BUILD_ROOT%{_libexecdir} cd linux-%{KVERREL} %if %{with_debug} %if %{with_realtime} BuildKernel %make_target %kernel_image %{_use_vdso} rt-debug %endif %if %{with_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_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} # 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} %if %{with_tools} %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"} %{tools_make} popd %endif if [ -f $DevelDir/vmlinux.h ]; then RPM_VMLINUX_H=$DevelDir/vmlinux.h fi echo "${RPM_VMLINUX_H}" > ../vmlinux_h_path %if %{with_bpftool} %global bpftool_make \ %{__make} EXTRA_CFLAGS="${RPM_OPT_FLAGS}" EXTRA_CXXFLAGS="${RPM_OPT_FLAGS}" EXTRA_LDFLAGS="%{__global_ldflags}" DESTDIR=$RPM_BUILD_ROOT %{?make_opts} VMLINUX_H="${RPM_VMLINUX_H}" V=1 %{log_msg "build bpftool"} pushd tools/bpf/bpftool %{bpftool_make} popd %else %{log_msg "bpftools disabled ... disabling selftests"} %endif %if %{with_selftests} %{log_msg "start build selftests"} # Unfortunately, samples/bpf/Makefile expects that the headers are installed # in the source tree. We installed them previously to $RPM_BUILD_ROOT/usr # but there's no way to tell the Makefile to take them from there. %{log_msg "install headers for selftests"} %{make} %{?_smp_mflags} headers_install # If we re building only tools without kernel, we need to generate config # headers and prepare tree for modules building. The modules_prepare target # will cover both. if [ ! -f include/generated/autoconf.h ]; then %{log_msg "modules_prepare for selftests"} %{make} %{?_smp_mflags} modules_prepare fi %{log_msg "build samples/bpf"} %{make} %{?_smp_mflags} ARCH=$Arch V=1 M=samples/bpf/ VMLINUX_H="${RPM_VMLINUX_H}" || true # Prevent bpf selftests to build bpftool repeatedly: export BPFTOOL=$(pwd)/tools/bpf/bpftool/bpftool 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"} %{make} %{?_smp_mflags} ARCH=$Arch V=1 TARGETS="bpf cgroup mm net net/forwarding net/mptcp netfilter tc-testing memfd drivers/net/bonding iommu cachestat" SKIP_TARGETS="" $force_targets INSTALL_PATH=%{buildroot}%{_libexecdir}/kselftests VMLINUX_H="${RPM_VMLINUX_H}" install %ifarch %{klptestarches} # kernel livepatching selftest test_modules will build against # /lib/modules/$(shell uname -r)/build tree unless KDIR is set export KDIR=$(realpath $(pwd)/../../..) %{make} %{?_smp_mflags} ARCH=$Arch V=1 TARGETS="livepatch" SKIP_TARGETS="" $force_targets INSTALL_PATH=%{buildroot}%{_libexecdir}/kselftests VMLINUX_H="${RPM_VMLINUX_H}" install || true %endif # 'make install' for bpf is broken and upstream refuses to fix it. # Install the needed files manually. %{log_msg "install selftests"} for dir in bpf bpf/no_alu32 bpf/progs; do # In ARK, the rpm build continues even if some of the selftests # cannot be built. It's not always possible to build selftests, # as upstream sometimes dependens on too new llvm version or has # other issues. If something did not get built, just skip it. test -d $dir || continue mkdir -p %{buildroot}%{_libexecdir}/kselftests/$dir find $dir -maxdepth 1 -type f \( -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" popd export -n BPFTOOL %{log_msg "end build selftests"} %endif %if %{with_doc} %{log_msg "start install docs"} # Make the HTML pages. %{log_msg "build html docs"} %{__make} PYTHON=/usr/bin/python3 htmldocs || %{doc_build_fail} # sometimes non-world-readable files sneak into the kernel source tree chmod -R a=rX Documentation find Documentation -type d | xargs chmod u+w %{log_msg "end install docs"} %endif # Module signing (modsign) # # This must be run _after_ find-debuginfo.sh runs, otherwise that will strip # the signature off of the modules. # # Don't sign modules for the zfcpdump variant as it is monolithic. %define __modsign_install_post \ if [ "%{signmodules}" -eq "1" ]; then \ %{log_msg "Signing kernel modules ..."} \ modules_dirs="$(shopt -s nullglob; echo $RPM_BUILD_ROOT/lib/modules/%{KVERREL}*)" \ for modules_dir in $modules_dirs; do \ variant_suffix="${modules_dir#$RPM_BUILD_ROOT/lib/modules/%{KVERREL}}" \ [ "$variant_suffix" == "+zfcpdump" ] && continue \ %{log_msg "Signing modules for %{KVERREL}${variant_suffix}"} \ %{modsign_cmd} certs/signing_key.pem.sign${variant_suffix} certs/signing_key.x509.sign${variant_suffix} $modules_dir/ \ done \ fi \ if [ "%{zipmodules}" -eq "1" ]; then \ %{log_msg "Compressing kernel modules ..."} \ find $RPM_BUILD_ROOT/lib/modules/ -type f -name '*.ko' | xargs -n 16 -P${RPM_BUILD_NCPUS} -r %compression %compression_flags; \ fi \ %{nil} ### ### Special hacks for debuginfo subpackages. ### # This macro is used by %%install, so we must redefine it before that. %define debug_package %{nil} %if %{with_debuginfo} %ifnarch noarch %{nobuildarches} %global __debug_package 1 %files -f debugfiles.list debuginfo-common-%{_target_cpu} %endif %endif # We don't want to package debuginfo for self-tests and samples but # we have to delete them to avoid an error messages about unpackaged # files. # Delete the debuginfo for kernel-devel files %define __remove_unwanted_dbginfo_install_post \ if [ "%{with_selftests}" -ne "0" ]; then \ rm -rf $RPM_BUILD_ROOT/usr/lib/debug/usr/libexec/ksamples; \ rm -rf $RPM_BUILD_ROOT/usr/lib/debug/usr/libexec/kselftests; \ fi \ rm -rf $RPM_BUILD_ROOT/usr/lib/debug/usr/src; \ %{nil} # # Disgusting hack alert! We need to ensure we sign modules *after* all # invocations of strip occur, which is in __debug_install_post if # find-debuginfo.sh runs, and __os_install_post if not. # %define __spec_install_post \ %{?__debug_package:%{__debug_install_post}}\ %{__arch_install_post}\ %{__os_install_post}\ %{__remove_unwanted_dbginfo_install_post}\ %{__restore_unstripped_root_post}\ %{__modsign_install_post} ### ### install ### %install cd linux-%{KVERREL} # re-define RPM_VMLINUX_H, because it doesn't carry over from %build RPM_VMLINUX_H="$(cat ../vmlinux_h_path)" %if %{with_doc} docdir=$RPM_BUILD_ROOT%{_datadir}/doc/kernel-doc-%{specversion}-%{pkgrelease} # copy the source over mkdir -p $docdir tar -h -f - --exclude=man --exclude='.*' -c Documentation | tar xf - -C $docdir cat %{SOURCE2} | xz > $docdir/kernel.changelog.xz chmod 0644 $docdir/kernel.changelog.xz # with_doc %endif # We have to do the headers install before the tools install because the # kernel headers_install will remove any header files in /usr/include that # it doesn't install itself. %if %{with_headers} # Install kernel headers %{__make} ARCH=%{hdrarch} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr headers_install find $RPM_BUILD_ROOT/usr/include \ \( -name .install -o -name .check -o \ -name ..install.cmd -o -name ..check.cmd \) -delete %endif %if %{with_cross_headers} HDR_ARCH_LIST='arm64 powerpc s390 x86 riscv' mkdir -p $RPM_BUILD_ROOT/usr/tmp-headers for arch in $HDR_ARCH_LIST; do mkdir $RPM_BUILD_ROOT/usr/tmp-headers/arch-${arch} %{__make} ARCH=${arch} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr/tmp-headers/arch-${arch} headers_install done find $RPM_BUILD_ROOT/usr/tmp-headers \ \( -name .install -o -name .check -o \ -name ..install.cmd -o -name ..check.cmd \) -delete # Copy all the architectures we care about to their respective asm directories for arch in $HDR_ARCH_LIST ; do mkdir -p $RPM_BUILD_ROOT/usr/${arch}-linux-gnu/include mv $RPM_BUILD_ROOT/usr/tmp-headers/arch-${arch}/include/* $RPM_BUILD_ROOT/usr/${arch}-linux-gnu/include/ done rm -rf $RPM_BUILD_ROOT/usr/tmp-headers %endif %if %{with_kernel_abi_stablelists} # kabi directory INSTALL_KABI_PATH=$RPM_BUILD_ROOT/lib/modules/ mkdir -p $INSTALL_KABI_PATH # install kabi releases directories tar -xvf %{SOURCE300} -C $INSTALL_KABI_PATH # with_kernel_abi_stablelists %endif %if %{with_perf} # perf tool binary and supporting scripts/binaries %{perf_make} DESTDIR=$RPM_BUILD_ROOT lib=%{_lib} install-bin # remove the 'trace' symlink. rm -f %{buildroot}%{_bindir}/trace # For both of the below, yes, this should be using a macro but right now # it's hard coded and we don't actually want it anyway right now. # Whoever wants examples can fix it up! # remove examples rm -rf %{buildroot}/usr/lib/perf/examples rm -rf %{buildroot}/usr/lib/perf/include # python-perf extension %{perf_make} DESTDIR=$RPM_BUILD_ROOT install-python_ext # perf man pages (note: implicit rpm magic compresses them later) mkdir -p %{buildroot}/%{_mandir}/man1 %{perf_make} DESTDIR=$RPM_BUILD_ROOT install-man # remove any tracevent files, eg. its plugins still gets built and installed, # even if we build against system's libtracevent during perf build (by setting # LIBTRACEEVENT_DYNAMIC=1 above in perf_make macro). Those files should already # ship with libtraceevent package. rm -rf %{buildroot}%{_libdir}/traceevent %endif %if %{with_libperf} %{libperf_make} DESTDIR=%{buildroot} prefix=%{_prefix} libdir=%{_libdir} install install_headers # This is installed on some arches and we don't want to ship it rm -rf %{buildroot}%{_libdir}/libperf.a %endif %if %{with_tools} %ifarch %{cpupowerarchs} %{make} -C tools/power/cpupower DESTDIR=$RPM_BUILD_ROOT libdir=%{_libdir} mandir=%{_mandir} CPUFREQ_BENCH=false install %find_lang cpupower mv cpupower.lang ../ %ifarch x86_64 pushd tools/power/cpupower/debug/x86_64 install -m755 centrino-decode %{buildroot}%{_bindir}/centrino-decode install -m755 powernow-k8-decode %{buildroot}%{_bindir}/powernow-k8-decode popd %endif chmod 0755 %{buildroot}%{_libdir}/libcpupower.so* %endif %ifarch x86_64 mkdir -p %{buildroot}%{_mandir}/man8 pushd tools/power/x86/x86_energy_perf_policy %{tools_make} DESTDIR=%{buildroot} install popd pushd tools/power/x86/turbostat %{tools_make} DESTDIR=%{buildroot} install popd pushd tools/power/x86/intel-speed-select %{tools_make} DESTDIR=%{buildroot} install popd pushd tools/arch/x86/intel_sdsi %{tools_make} CFLAGS="${RPM_OPT_FLAGS}" DESTDIR=%{buildroot} install popd %endif pushd tools/thermal/tmon %{tools_make} INSTALL_ROOT=%{buildroot} install popd pushd tools/bootconfig %{tools_make} DESTDIR=%{buildroot} install popd pushd tools/iio %{tools_make} DESTDIR=%{buildroot} install popd pushd tools/gpio %{tools_make} DESTDIR=%{buildroot} install popd install -m644 -D %{SOURCE2002} %{buildroot}%{_sysconfdir}/logrotate.d/kvm_stat pushd tools/kvm/kvm_stat %{__make} INSTALL_ROOT=%{buildroot} install-tools %{__make} INSTALL_ROOT=%{buildroot} install-man install -m644 -D kvm_stat.service %{buildroot}%{_unitdir}/kvm_stat.service popd # install VM tools pushd tools/mm/ install -m755 slabinfo %{buildroot}%{_bindir}/slabinfo install -m755 page_owner_sort %{buildroot}%{_bindir}/page_owner_sort popd pushd tools/verification/rv/ %{tools_make} DESTDIR=%{buildroot} install popd pushd tools/tracing/rtla/ %{tools_make} DESTDIR=%{buildroot} install rm -f %{buildroot}%{_bindir}/hwnoise rm -f %{buildroot}%{_bindir}/osnoise rm -f %{buildroot}%{_bindir}/timerlat (cd %{buildroot} ln -sf rtla ./%{_bindir}/hwnoise ln -sf rtla ./%{_bindir}/osnoise ln -sf rtla ./%{_bindir}/timerlat ) popd %endif %if %{with_bpftool} pushd tools/bpf/bpftool %{bpftool_make} prefix=%{_prefix} bash_compdir=%{_sysconfdir}/bash_completion.d/ mandir=%{_mandir} install doc-install popd %endif %if %{with_selftests} pushd samples install -d %{buildroot}%{_libexecdir}/ksamples # install bpf samples pushd bpf install -d %{buildroot}%{_libexecdir}/ksamples/bpf find -type f -executable -exec install -m755 {} %{buildroot}%{_libexecdir}/ksamples/bpf \; install -m755 *.sh %{buildroot}%{_libexecdir}/ksamples/bpf # test_lwt_bpf.sh compiles test_lwt_bpf.c when run; this works only from the # kernel tree. Just remove it. rm %{buildroot}%{_libexecdir}/ksamples/bpf/test_lwt_bpf.sh install -m644 *_kern.o %{buildroot}%{_libexecdir}/ksamples/bpf || true install -m644 tcp_bpf.readme %{buildroot}%{_libexecdir}/ksamples/bpf popd # install pktgen samples pushd pktgen install -d %{buildroot}%{_libexecdir}/ksamples/pktgen find . -type f -executable -exec install -m755 {} %{buildroot}%{_libexecdir}/ksamples/pktgen/{} \; find . -type f ! -executable -exec install -m644 {} %{buildroot}%{_libexecdir}/ksamples/pktgen/{} \; popd popd # install mm selftests pushd tools/testing/selftests/mm find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/mm/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/mm/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/mm/{} \; popd # install cgroup selftests pushd tools/testing/selftests/cgroup find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/cgroup/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/cgroup/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/cgroup/{} \; popd # install drivers/net/mlxsw selftests pushd tools/testing/selftests/drivers/net/mlxsw find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/drivers/net/mlxsw/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/drivers/net/mlxsw/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/drivers/net/mlxsw/{} \; popd # install drivers/net/netdevsim selftests pushd tools/testing/selftests/drivers/net/netdevsim find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/drivers/net/netdevsim/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/drivers/net/netdevsim/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/drivers/net/netdevsim/{} \; popd # install drivers/net/bonding selftests pushd tools/testing/selftests/drivers/net/bonding find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/drivers/net/bonding/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/drivers/net/bonding/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/drivers/net/bonding/{} \; popd # install net/forwarding selftests pushd tools/testing/selftests/net/forwarding find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/net/forwarding/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/net/forwarding/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/net/forwarding/{} \; popd # install net/mptcp selftests pushd tools/testing/selftests/net/mptcp find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/net/mptcp/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/net/mptcp/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/net/mptcp/{} \; popd # install tc-testing selftests pushd tools/testing/selftests/tc-testing find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/tc-testing/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/tc-testing/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/tc-testing/{} \; popd # install livepatch selftests pushd tools/testing/selftests/livepatch find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/livepatch/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/livepatch/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/livepatch/{} \; popd # install netfilter selftests pushd tools/testing/selftests/netfilter find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/netfilter/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/netfilter/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/netfilter/{} \; popd # install memfd selftests pushd tools/testing/selftests/memfd find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/memfd/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/memfd/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/memfd/{} \; popd # install iommu selftests pushd tools/testing/selftests/iommu find -type d -exec install -d %{buildroot}%{_libexecdir}/kselftests/iommu/{} \; find -type f -executable -exec install -D -m755 {} %{buildroot}%{_libexecdir}/kselftests/iommu/{} \; find -type f ! -executable -exec install -D -m644 {} %{buildroot}%{_libexecdir}/kselftests/iommu/{} \; popd %endif ### ### clean ### ### ### scripts ### %if %{with_tools} %post -n %{package_name}-tools-libs /sbin/ldconfig %postun -n %{package_name}-tools-libs /sbin/ldconfig %endif # # This macro defines a %%post script for a kernel*-devel package. # %%kernel_devel_post [] # Note we don't run hardlink if ostree is in use, as ostree is # a far more sophisticated hardlink implementation. # https://github.com/projectatomic/rpm-ostree/commit/58a79056a889be8814aa51f507b2c7a4dccee526 # # The deletion of *.hardlink-temporary files is a temporary workaround # for this bug in the hardlink binary (fixed in util-linux 2.38): # https://github.com/util-linux/util-linux/issues/1602 # %define kernel_devel_post() \ %{expand:%%post %{?1:%{1}-}devel}\ if [ -f /etc/sysconfig/kernel ]\ then\ . /etc/sysconfig/kernel || exit $?\ fi\ if [ "$HARDLINK" != "no" -a -x /usr/bin/hardlink -a ! -e /run/ostree-booted ] \ then\ (cd /usr/src/kernels/%{KVERREL}%{?1:+%{1}} &&\ /usr/bin/find . -type f | while read f; do\ hardlink -c /usr/src/kernels/*%{?dist}.*/$f $f > /dev/null\ done;\ /usr/bin/find /usr/src/kernels -type f -name '*.hardlink-temporary' -delete\ )\ fi\ %if %{with_cross}\ echo "Building scripts and resolve_btfids"\ env --unset=ARCH make -C /usr/src/kernels/%{KVERREL}%{?1:+%{1}} prepare_after_cross\ %endif\ %{nil} # # This macro defines a %%post script for a kernel*-modules-extra package. # It also defines a %%postun script that does the same thing. # %%kernel_modules_extra_post [] # %define kernel_modules_extra_post() \ %{expand:%%post %{?1:%{1}-}modules-extra}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil}\ %{expand:%%postun %{?1:%{1}-}modules-extra}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil} # # This macro defines a %%post script for a kernel*-modules-internal package. # It also defines a %%postun script that does the same thing. # %%kernel_modules_internal_post [] # %define kernel_modules_internal_post() \ %{expand:%%post %{?1:%{1}-}modules-internal}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil}\ %{expand:%%postun %{?1:%{1}-}modules-internal}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil} # # This macro defines a %%post script for a kernel*-modules-partner package. # It also defines a %%postun script that does the same thing. # %%kernel_modules_partner_post [] # %define kernel_modules_partner_post() \ %{expand:%%post %{?1:%{1}-}modules-partner}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil}\ %{expand:%%postun %{?1:%{1}-}modules-partner}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil} %if %{with_realtime} # # This macro defines a %%post script for a kernel*-kvm package. # It also defines a %%postun script that does the same thing. # %%kernel_kvm_post [] # %define kernel_kvm_post() \ %{expand:%%post %{?1:%{1}-}kvm}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil}\ %{expand:%%postun %{?1:%{1}-}kvm}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil} %endif # # This macro defines a %%post script for a kernel*-modules package. # It also defines a %%postun script that does the same thing. # %%kernel_modules_post [] # %define kernel_modules_post() \ %{expand:%%post %{?1:%{1}-}modules}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ if [ ! -f %{_localstatedir}/lib/rpm-state/%{name}/installing_core_%{KVERREL}%{?1:+%{1}} ]; then\ mkdir -p %{_localstatedir}/lib/rpm-state/%{name}\ touch %{_localstatedir}/lib/rpm-state/%{name}/need_to_run_dracut_%{KVERREL}%{?1:+%{1}}\ fi\ %{nil}\ %{expand:%%postun %{?1:%{1}-}modules}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil}\ %{expand:%%posttrans %{?1:%{1}-}modules}\ if [ -f %{_localstatedir}/lib/rpm-state/%{name}/need_to_run_dracut_%{KVERREL}%{?1:+%{1}} ]; then\ rm -f %{_localstatedir}/lib/rpm-state/%{name}/need_to_run_dracut_%{KVERREL}%{?1:+%{1}}\ echo "Running: dracut -f --kver %{KVERREL}%{?1:+%{1}}"\ dracut -f --kver "%{KVERREL}%{?1:+%{1}}" || exit $?\ fi\ %{nil} # # This macro defines a %%post script for a kernel*-modules-core package. # %%kernel_modules_core_post [] # %define kernel_modules_core_post() \ %{expand:%%posttrans %{?1:%{1}-}modules-core}\ /sbin/depmod -a %{KVERREL}%{?1:+%{1}}\ %{nil} # This macro defines a %%posttrans script for a kernel package. # %%kernel_variant_posttrans [-v ] [-u uki-suffix] # More text can follow to go at the end of this variant's %%post. # %define kernel_variant_posttrans(v:u:) \ %{expand:%%posttrans %{?-v:%{-v*}-}%{!?-u*:core}%{?-u*:uki-%{-u*}}}\ %if 0%{!?fedora:1}\ if [ -x %{_sbindir}/weak-modules ]\ then\ %{_sbindir}/weak-modules --add-kernel %{KVERREL}%{?-v:+%{-v*}} || exit $?\ fi\ %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] # %define kernel_variant_preun(v:u:) \ %{expand:%%preun %{?-v:%{-v*}-}%{!?-u*:core}%{?-u*:uki-%{-u*}}}\ /bin/kernel-install remove %{KVERREL}%{?-v:+%{-v*}} || exit $?\ if [ -x %{_sbindir}/weak-modules ]\ then\ %{_sbindir}/weak-modules --remove-kernel %{KVERREL}%{?-v:+%{-v*}} || exit $?\ fi\ %{nil} %if %{with_up_base} && %{with_efiuki} %kernel_variant_posttrans -u virt %kernel_variant_preun -u virt %endif %if %{with_up_base} %kernel_variant_preun %kernel_variant_post %endif %if %{with_zfcpdump} %kernel_variant_preun -v zfcpdump %kernel_variant_post -v zfcpdump %endif %if %{with_up} && %{with_debug} && %{with_efiuki} %kernel_variant_posttrans -v debug -u virt %kernel_variant_preun -v debug -u virt %endif %if %{with_up} && %{with_debug} %kernel_variant_preun -v debug %kernel_variant_post -v debug %endif %if %{with_arm64_16k_base} %kernel_variant_preun -v 16k %kernel_variant_post -v 16k %endif %if %{with_debug} && %{with_arm64_16k} %kernel_variant_preun -v 16k-debug %kernel_variant_post -v 16k-debug %endif %if %{with_arm64_16k} && %{with_debug} && %{with_efiuki} %kernel_variant_posttrans -v 16k-debug -u virt %kernel_variant_preun -v 16k-debug -u virt %endif %if %{with_arm64_16k_base} && %{with_efiuki} %kernel_variant_posttrans -v 16k -u virt %kernel_variant_preun -v 16k -u virt %endif %if %{with_arm64_64k_base} %kernel_variant_preun -v 64k %kernel_variant_post -v 64k %endif %if %{with_debug} && %{with_arm64_64k} %kernel_variant_preun -v 64k-debug %kernel_variant_post -v 64k-debug %endif %if %{with_arm64_64k} && %{with_debug} && %{with_efiuki} %kernel_variant_posttrans -v 64k-debug -u virt %kernel_variant_preun -v 64k-debug -u virt %endif %if %{with_arm64_64k_base} && %{with_efiuki} %kernel_variant_posttrans -v 64k -u virt %kernel_variant_preun -v 64k -u virt %endif %if %{with_realtime_base} %kernel_variant_preun -v rt %kernel_variant_post -v rt -r kernel %kernel_kvm_post rt %endif %if %{with_realtime} && %{with_debug} %kernel_variant_preun -v rt-debug %kernel_variant_post -v rt-debug %kernel_kvm_post rt-debug %endif ### ### file lists ### %if %{with_headers} %files headers /usr/include/* %exclude %{_includedir}/cpufreq.h %endif %if %{with_cross_headers} %files cross-headers /usr/*-linux-gnu/include/* %endif %if %{with_kernel_abi_stablelists} %files -n %{package_name}-abi-stablelists /lib/modules/kabi-* %endif %if %{with_kabidw_base} %ifarch x86_64 s390x ppc64 ppc64le aarch64 riscv64 %files kernel-kabidw-base-internal %defattr(-,root,root) /kabidw-base/%{_target_cpu}/* %endif %endif # only some architecture builds need kernel-doc %if %{with_doc} %files doc %defattr(-,root,root) %{_datadir}/doc/kernel-doc-%{specversion}-%{pkgrelease}/Documentation/* %dir %{_datadir}/doc/kernel-doc-%{specversion}-%{pkgrelease}/Documentation %dir %{_datadir}/doc/kernel-doc-%{specversion}-%{pkgrelease} %{_datadir}/doc/kernel-doc-%{specversion}-%{pkgrelease}/kernel.changelog.xz %endif %if %{with_perf} %files -n perf %{_bindir}/perf %{_libdir}/libperf-jvmti.so %dir %{_libexecdir}/perf-core %{_libexecdir}/perf-core/* %{_datadir}/perf-core/* %{_mandir}/man[1-8]/perf* %{_sysconfdir}/bash_completion.d/perf %doc linux-%{KVERREL}/tools/perf/Documentation/examples.txt %{_docdir}/perf-tip/tips.txt %files -n python3-perf %{python3_sitearch}/* %if %{with_debuginfo} %files -f perf-debuginfo.list -n perf-debuginfo %files -f python3-perf-debuginfo.list -n python3-perf-debuginfo %endif # with_perf %endif %if %{with_libperf} %files -n libperf %{_libdir}/libperf.so.0 %{_libdir}/libperf.so.0.0.1 %files -n libperf-devel %{_libdir}/libperf.so %{_libdir}/pkgconfig/libperf.pc %{_includedir}/internal/*.h %{_includedir}/perf/bpf_perf.h %{_includedir}/perf/core.h %{_includedir}/perf/cpumap.h %{_includedir}/perf/perf_dlfilter.h %{_includedir}/perf/event.h %{_includedir}/perf/evlist.h %{_includedir}/perf/evsel.h %{_includedir}/perf/mmap.h %{_includedir}/perf/threadmap.h %{_mandir}/man3/libperf.3.gz %{_mandir}/man7/libperf-counting.7.gz %{_mandir}/man7/libperf-sampling.7.gz %{_docdir}/libperf/examples/sampling.c %{_docdir}/libperf/examples/counting.c %{_docdir}/libperf/html/libperf.html %{_docdir}/libperf/html/libperf-counting.html %{_docdir}/libperf/html/libperf-sampling.html %if %{with_debuginfo} %files -f libperf-debuginfo.list -n libperf-debuginfo %endif # with_libperf %endif %if %{with_tools} %ifnarch %{cpupowerarchs} %files -n %{package_name}-tools %else %files -n %{package_name}-tools -f cpupower.lang %{_bindir}/cpupower %{_datadir}/bash-completion/completions/cpupower %ifarch x86_64 %{_bindir}/centrino-decode %{_bindir}/powernow-k8-decode %endif %{_mandir}/man[1-8]/cpupower* %ifarch x86_64 %{_bindir}/x86_energy_perf_policy %{_mandir}/man8/x86_energy_perf_policy* %{_bindir}/turbostat %{_mandir}/man8/turbostat* %{_bindir}/intel-speed-select %{_sbindir}/intel_sdsi %endif # cpupowerarchs %endif %{_bindir}/tmon %{_bindir}/bootconfig %{_bindir}/iio_event_monitor %{_bindir}/iio_generic_buffer %{_bindir}/lsiio %{_bindir}/lsgpio %{_bindir}/gpio-hammer %{_bindir}/gpio-event-mon %{_bindir}/gpio-watch %{_mandir}/man1/kvm_stat* %{_bindir}/kvm_stat %{_unitdir}/kvm_stat.service %config(noreplace) %{_sysconfdir}/logrotate.d/kvm_stat %{_bindir}/page_owner_sort %{_bindir}/slabinfo %if %{with_debuginfo} %files -f %{package_name}-tools-debuginfo.list -n %{package_name}-tools-debuginfo %endif %ifarch %{cpupowerarchs} %files -n %{package_name}-tools-libs %{_libdir}/libcpupower.so.1 %{_libdir}/libcpupower.so.0.0.1 %files -n %{package_name}-tools-libs-devel %{_libdir}/libcpupower.so %{_includedir}/cpufreq.h %{_includedir}/cpuidle.h %{_includedir}/powercap.h %endif %files -n rtla %{_bindir}/rtla %{_bindir}/hwnoise %{_bindir}/osnoise %{_bindir}/timerlat %{_mandir}/man1/rtla-hwnoise.1.gz %{_mandir}/man1/rtla-osnoise-hist.1.gz %{_mandir}/man1/rtla-osnoise-top.1.gz %{_mandir}/man1/rtla-osnoise.1.gz %{_mandir}/man1/rtla-timerlat-hist.1.gz %{_mandir}/man1/rtla-timerlat-top.1.gz %{_mandir}/man1/rtla-timerlat.1.gz %{_mandir}/man1/rtla.1.gz %files -n rv %{_bindir}/rv %{_mandir}/man1/rv-list.1.gz %{_mandir}/man1/rv-mon-wip.1.gz %{_mandir}/man1/rv-mon-wwnr.1.gz %{_mandir}/man1/rv-mon.1.gz %{_mandir}/man1/rv.1.gz # with_tools %endif %if %{with_bpftool} %files -n bpftool %{_sbindir}/bpftool %{_sysconfdir}/bash_completion.d/bpftool %{_mandir}/man8/bpftool-cgroup.8.gz %{_mandir}/man8/bpftool-gen.8.gz %{_mandir}/man8/bpftool-iter.8.gz %{_mandir}/man8/bpftool-link.8.gz %{_mandir}/man8/bpftool-map.8.gz %{_mandir}/man8/bpftool-prog.8.gz %{_mandir}/man8/bpftool-perf.8.gz %{_mandir}/man8/bpftool.8.gz %{_mandir}/man8/bpftool-net.8.gz %{_mandir}/man8/bpftool-feature.8.gz %{_mandir}/man8/bpftool-btf.8.gz %{_mandir}/man8/bpftool-struct_ops.8.gz %if %{with_debuginfo} %files -f bpftool-debuginfo.list -n bpftool-debuginfo %defattr(-,root,root) %endif %endif %if %{with_selftests} %files selftests-internal %{_libexecdir}/ksamples %{_libexecdir}/kselftests %endif # empty meta-package %if %{with_up_base} %ifnarch %nobuildarches noarch %files %endif %endif # This is %%{image_install_path} on an arch where that includes ELF files, # or empty otherwise. %define elf_image_install_path %{?kernel_image_elf:%{image_install_path}} # # This macro defines the %%files sections for a kernel package # and its devel and debuginfo packages. # %%kernel_variant_files [-k vmlinux] # %define kernel_variant_files(k:) \ %if %{2}\ %{expand:%%files %{?1:-f kernel-%{?3:%{3}-}ldsoconf.list} %{?3:%{3}-}core}\ %{!?_licensedir:%global license %%doc}\ %%license linux-%{KVERREL}/COPYING-%{version}-%{release}\ /lib/modules/%{KVERREL}%{?3:+%{3}}/%{?-k:%{-k*}}%{!?-k:vmlinuz}\ %ghost /%{image_install_path}/%{?-k:%{-k*}}%{!?-k:vmlinuz}-%{KVERREL}%{?3:+%{3}}\ /lib/modules/%{KVERREL}%{?3:+%{3}}/.vmlinuz.hmac \ %ghost /%{image_install_path}/.vmlinuz-%{KVERREL}%{?3:+%{3}}.hmac \ %ifarch aarch64 riscv64\ /lib/modules/%{KVERREL}%{?3:+%{3}}/dtb \ %ghost /%{image_install_path}/dtb-%{KVERREL}%{?3:+%{3}} \ %endif\ /lib/modules/%{KVERREL}%{?3:+%{3}}/System.map\ %ghost /boot/System.map-%{KVERREL}%{?3:+%{3}}\ %dir /lib/modules\ %dir /lib/modules/%{KVERREL}%{?3:+%{3}}\ /lib/modules/%{KVERREL}%{?3:+%{3}}/symvers.%compext\ /lib/modules/%{KVERREL}%{?3:+%{3}}/config\ /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.builtin*\ %ghost %attr(0644, root, root) /boot/symvers-%{KVERREL}%{?3:+%{3}}.%compext\ %ghost %attr(0600, root, root) /boot/initramfs-%{KVERREL}%{?3:+%{3}}.img\ %ghost %attr(0644, root, root) /boot/config-%{KVERREL}%{?3:+%{3}}\ %{expand:%%files -f kernel-%{?3:%{3}-}modules-core.list %{?3:%{3}-}modules-core}\ %dir /lib/modules\ %dir /lib/modules/%{KVERREL}%{?3:+%{3}}\ %dir /lib/modules/%{KVERREL}%{?3:+%{3}}/kernel\ /lib/modules/%{KVERREL}%{?3:+%{3}}/build\ /lib/modules/%{KVERREL}%{?3:+%{3}}/source\ /lib/modules/%{KVERREL}%{?3:+%{3}}/updates\ /lib/modules/%{KVERREL}%{?3:+%{3}}/weak-updates\ /lib/modules/%{KVERREL}%{?3:+%{3}}/systemtap\ %{_datadir}/doc/kernel-keys/%{KVERREL}%{?3:+%{3}}\ %if %{1}\ /lib/modules/%{KVERREL}%{?3:+%{3}}/vdso\ %endif\ /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.block\ /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.drm\ /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.modesetting\ /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.networking\ /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.order\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.alias\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.alias.bin\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.builtin.alias.bin\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.builtin.bin\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.dep\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.dep.bin\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.devname\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.softdep\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.symbols\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.symbols.bin\ %ghost %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.weakdep\ %{expand:%%files -f kernel-%{?3:%{3}-}modules.list %{?3:%{3}-}modules}\ %{expand:%%files %{?3:%{3}-}devel}\ %defverify(not mtime)\ /usr/src/kernels/%{KVERREL}%{?3:+%{3}}\ %{expand:%%files %{?3:%{3}-}devel-matched}\ %{expand:%%files -f kernel-%{?3:%{3}-}modules-extra.list %{?3:%{3}-}modules-extra}\ %{expand:%%files -f kernel-%{?3:%{3}-}modules-internal.list %{?3:%{3}-}modules-internal}\ %if 0%{!?fedora:1}\ %{expand:%%files -f kernel-%{?3:%{3}-}modules-partner.list %{?3:%{3}-}modules-partner}\ %endif\ %if %{with_debuginfo}\ %ifnarch noarch\ %{expand:%%files -f debuginfo%{?3}.list %{?3:%{3}-}debuginfo}\ %endif\ %endif\ %if "%{3}" == "rt" || "%{3}" == "rt-debug"\ %{expand:%%files -f kernel-%{?3:%{3}-}modules-rt-kvm.list %{?3:%{3}-}kvm}\ %else\ %if %{with_efiuki}\ %{expand:%%files %{?3:%{3}-}uki-virt}\ %dir /lib/modules\ %dir /lib/modules/%{KVERREL}%{?3:+%{3}}\ /lib/modules/%{KVERREL}%{?3:+%{3}}/System.map\ /lib/modules/%{KVERREL}%{?3:+%{3}}/symvers.%compext\ /lib/modules/%{KVERREL}%{?3:+%{3}}/config\ /lib/modules/%{KVERREL}%{?3:+%{3}}/modules.builtin*\ %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/%{?-k:%{-k*}}%{!?-k:vmlinuz}-virt.efi\ %attr(0644, root, root) /lib/modules/%{KVERREL}%{?3:+%{3}}/.%{?-k:%{-k*}}%{!?-k:vmlinuz}-virt.efi.hmac\ %ghost /%{image_install_path}/efi/EFI/Linux/%{?-k:%{-k*}}%{!?-k:*}-%{KVERREL}%{?3:+%{3}}.efi\ %{expand:%%files %{?3:%{3}-}uki-virt-addons}\ %dir /lib/modules/%{KVERREL}%{?3:+%{3}}/%{?-k:%{-k*}}%{!?-k:vmlinuz}-virt.efi.extra.d/ \ /lib/modules/%{KVERREL}%{?3:+%{3}}/%{?-k:%{-k*}}%{!?-k:vmlinuz}-virt.efi.extra.d/*.addon.efi\ %endif\ %endif\ %if %{?3:1} %{!?3:0}\ %{expand:%%files %{3}}\ %endif\ %if %{with_gcov}\ %ifnarch %nobuildarches noarch\ %{expand:%%files -f kernel-%{?3:%{3}-}gcov.list %{?3:%{3}-}gcov}\ %endif\ %endif\ %endif\ %{nil} %kernel_variant_files %{_use_vdso} %{with_up_base} %if %{with_up} %kernel_variant_files %{_use_vdso} %{with_debug} debug %endif %if %{with_arm64_16k} %kernel_variant_files %{_use_vdso} %{with_debug} 16k-debug %endif %if %{with_arm64_64k} %kernel_variant_files %{_use_vdso} %{with_debug} 64k-debug %endif %kernel_variant_files %{_use_vdso} %{with_realtime_base} rt %if %{with_realtime} %kernel_variant_files %{_use_vdso} %{with_debug} rt-debug %endif %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 %define kernel_variant_ipaclones(k:) \ %if %{1}\ %if %{with_ipaclones}\ %{expand:%%files %{?2:%{2}-}ipaclones-internal}\ %defattr(-,root,root)\ %defverify(not mtime)\ /usr/src/kernels/%{KVERREL}%{?2:+%{2}}-ipaclones\ %endif\ %endif\ %{nil} %kernel_variant_ipaclones %{with_up_base} # plz don't put in a version string unless you're going to tag # and build. # # %changelog * Mon Nov 11 2024 Jan Stancek [6.11.0-29.el10] - redhat/configs: enable xr_serial on rhel (Desnes Nunes) - redhat/configs: enable ATH12K for rhel (Jose Ignacio Tornos Martinez) - Linux 6.12-rc7 (Linus Torvalds) - clk: qcom: gcc-x1e80100: Fix USB MP SS1 PHY GDSC pwrsts flags (Abel Vesa) - clk: qcom: gcc-x1e80100: Fix halt_check for pipediv2 clocks (Qiang Yu) - clk: qcom: clk-alpha-pll: Fix pll post div mask when width is not set (Barnabás Czémán) - clk: qcom: videocc-sm8350: use HW_CTRL_TRIGGER for vcodec GDSCs (Johan Hovold) - i2c: designware: do not hold SCL low when I2C_DYNAMIC_TAR_UPDATE is not set (Liu Peibao) - i2c: muxes: Fix return value check in mule_i2c_mux_probe() (Yang Yingliang) - filemap: Fix bounds checking in filemap_read() (Trond Myklebust) - irqchip/gic-v3: Force propagation of the active state with a read-back (Marc Zyngier) - mailmap: add entry for Thorsten Blum (Thorsten Blum) - ocfs2: remove entry once instead of null-ptr-dereference in ocfs2_xa_remove() (Andrew Kanner) - signal: restore the override_rlimit logic (Roman Gushchin) - fs/proc: fix compile warning about variable 'vmcore_mmap_ops' (Qi Xi) - ucounts: fix counter leak in inc_rlimit_get_ucounts() (Andrei Vagin) - selftests: hugetlb_dio: check for initial conditions to skip in the start (Muhammad Usama Anjum) - mm: fix docs for the kernel parameter ``thp_anon=`` (Maíra Canal) - mm/damon/core: avoid overflow in damon_feed_loop_next_input() (SeongJae Park) - mm/damon/core: handle zero schemes apply interval (SeongJae Park) - mm/damon/core: handle zero {aggregation,ops_update} intervals (SeongJae Park) - mm/mlock: set the correct prev on failure (Wei Yang) - objpool: fix to make percpu slot allocation more robust (Masami Hiramatsu (Google)) - mm/page_alloc: keep track of free highatomic (Yu Zhao) - mm: resolve faulty mmap_region() error path behaviour (Lorenzo Stoakes) - mm: refactor arch_calc_vm_flag_bits() and arm64 MTE handling (Lorenzo Stoakes) - mm: refactor map_deny_write_exec() (Lorenzo Stoakes) - mm: unconditionally close VMAs on error (Lorenzo Stoakes) - mm: avoid unsafe VMA hook invocation when error arises on mmap hook (Lorenzo Stoakes) - mm/thp: fix deferred split unqueue naming and locking (Hugh Dickins) - mm/thp: fix deferred split queue not partially_mapped (Hugh Dickins) - USB: serial: qcserial: add support for Sierra Wireless EM86xx (Jack Wu) - USB: serial: io_edgeport: fix use after free in debug printk (Dan Carpenter) - USB: serial: option: add Quectel RG650V (Benoît Monin) - USB: serial: option: add Fibocom FG132 0x0112 composition (Reinhard Speyerer) - thunderbolt: Fix connection issue with Pluggable UD-4VPD dock (Mika Westerberg) - thunderbolt: Add only on-board retimers when !CONFIG_USB4_DEBUGFS_MARGINING (Mika Westerberg) - usb: typec: fix potential out of bounds in ucsi_ccg_update_set_new_cam_cmd() (Dan Carpenter) - usb: dwc3: fix fault at system suspend if device was already runtime suspended (Roger Quadros) - usb: typec: qcom-pmic: init value of hdr_len/txbuf_len earlier (Rex Nie) - usb: musb: sunxi: Fix accessing an released usb phy (Zijun Hu) - staging: vchiq_arm: Use devm_kzalloc() for drv_mgmt allocation (Umang Jain) - staging: vchiq_arm: Use devm_kzalloc() for vchiq_arm_state allocation (Umang Jain) - redhat: configs: rhel: generic: x86: Enable IPU6 based MIPI cameras (Kate Hsuan) - os-build: enable CONFIG_SCHED_CLASS_EXT for RHEL (Phil Auld) - NFSD: Fix READDIR on NFSv3 mounts of ext4 exports (Chuck Lever) - smb: client: Fix use-after-free of network namespace. (Kuniyuki Iwashima) - nvme/host: Fix RCU list traversal to use SRCU primitive (Breno Leitao) - thermal/of: support thermal zones w/o trips subnode (Icenowy Zheng) - tools/lib/thermal: Remove the thermal.h soft link when doing make clean (zhang jiao) - tools/lib/thermal: Fix sampling handler context ptr (Emil Dahl Juhl) - thermal/drivers/qcom/lmh: Remove false lockdep backtrace (Dmitry Baryshkov) - cpufreq: intel_pstate: Update asym capacity for CPUs that were offline initially (Rafael J. Wysocki) - cpufreq: intel_pstate: Clear hybrid_max_perf_cpu before driver registration (Rafael J. Wysocki) - ACPI: processor: Move arch_init_invariance_cppc() call later (Mario Limonciello) - ksmbd: check outstanding simultaneous SMB operations (Namjae Jeon) - ksmbd: fix slab-use-after-free in smb3_preauth_hash_rsp (Namjae Jeon) - ksmbd: fix slab-use-after-free in ksmbd_smb2_session_create (Namjae Jeon) - ksmbd: Fix the missing xa_store error check (Jinjie Ruan) - scsi: ufs: core: Start the RTC update work later (Bart Van Assche) - scsi: sd_zbc: Use kvzalloc() to allocate REPORT ZONES buffer (Johannes Thumshirn) - drm/xe: Stop accumulating LRC timestamp on job_free (Lucas De Marchi) - drm/xe/pf: Fix potential GGTT allocation leak (Michal Wajdeczko) - drm/xe: Drop VM dma-resv lock on xe_sync_in_fence_get failure in exec IOCTL (Matthew Brost) - drm/xe: Fix possible exec queue leak in exec IOCTL (Matthew Brost) - drm/xe/guc/tlb: Flush g2h worker in case of tlb timeout (Nirmoy Das) - drm/xe/ufence: Flush xe ordered_wq in case of ufence timeout (Nirmoy Das) - drm/xe: Move LNL scheduling WA to xe_device.h (Nirmoy Das) - drm/xe: Use the filelist from drm for ccs_mode change (Balasubramani Vivekanandan) - drm/xe: Set mask bits for CCS_MODE register (Balasubramani Vivekanandan) - drm/panthor: Be stricter about IO mapping flags (Jann Horn) - drm/panthor: Lock XArray when getting entries for the VM (Liviu Dudau) - drm: panel-orientation-quirks: Make Lenovo Yoga Tab 3 X90F DMI match less strict (Hans de Goede) - drm/imagination: Break an object reference loop (Brendan King) - drm/imagination: Add a per-file PVR context list (Brendan King) - drm/amdgpu: add missing size check in amdgpu_debugfs_gprwave_read() (Alex Deucher) - drm/amdgpu: Adjust debugfs eviction and IB access permissions (Alex Deucher) - drm/amdgpu: Adjust debugfs register access permissions (Alex Deucher) - drm/amdgpu: Fix DPX valid mode check on GC 9.4.3 (Lijo Lazar) - drm/amd/pm: correct the workload setting (Kenneth Feng) - drm/amd/pm: always pick the pptable from IFWI (Kenneth Feng) - drm/amdgpu: prevent NULL pointer dereference if ATIF is not supported (Antonio Quartulli) - drm/amd/display: parse umc_info or vram_info based on ASIC (Aurabindo Pillai) - drm/amd/display: Fix brightness level not retained over reboot (Tom Chung) - ASoC: SOF: sof-client-probes-ipc4: Set param_size extension bits (Jyri Sarha) - ASoC: stm: Prevent potential division by zero in stm32_sai_get_clk_div() (Luo Yifan) - ASoC: stm: Prevent potential division by zero in stm32_sai_mclk_round_rate() (Luo Yifan) - ASoC: amd: yc: Support dmic on another model of Lenovo Thinkpad E14 Gen 6 (Markus Petri) - ASoC: SOF: amd: Fix for incorrect DMA ch status register offset (Venkata Prasad Potturu) - ASoC: amd: yc: fix internal mic on Xiaomi Book Pro 14 2022 (Mingcong Bai) - ASoC: stm32: spdifrx: fix dma channel release in stm32_spdifrx_remove (Amelie Delaunay) - MAINTAINERS: Generic Sound Card section (Kuninori Morimoto) - ASoC: tas2781: Add new driver version for tas2563 & tas2781 qfn chip (Shenghao Ding) - ALSA: usb-audio: Add quirk for HP 320 FHD Webcam (Takashi Iwai) - ALSA: firewire-lib: fix return value on fail in amdtp_tscm_init() (Murad Masimov) - ALSA: ump: Don't enumeration invalid groups for legacy rawmidi (Takashi Iwai) - Revert "ALSA: hda/conexant: Mute speakers at suspend / shutdown" (Jarosław Janik) - media: videobuf2-core: copy vb planes unconditionally (Tudor Ambarus) - media: dvbdev: fix the logic when DVB_DYNAMIC_MINORS is not set (Mauro Carvalho Chehab) - media: vivid: fix buffer overwrite when using > 32 buffers (Hans Verkuil) - media: pulse8-cec: fix data timestamp at pulse8_setup() (Mauro Carvalho Chehab) - media: cec: extron-da-hd-4k-plus: don't use -1 as an error code (Mauro Carvalho Chehab) - media: stb0899_algo: initialize cfr before using it (Mauro Carvalho Chehab) - media: adv7604: prevent underflow condition when reporting colorspace (Mauro Carvalho Chehab) - media: cx24116: prevent overflows on SNR calculus (Mauro Carvalho Chehab) - media: ar0521: don't overflow when checking PLL values (Mauro Carvalho Chehab) - media: s5p-jpeg: prevent buffer overflows (Mauro Carvalho Chehab) - media: av7110: fix a spectre vulnerability (Mauro Carvalho Chehab) - media: mgb4: protect driver against spectre (Mauro Carvalho Chehab) - media: dvb_frontend: don't play tricks with underflow values (Mauro Carvalho Chehab) - media: dvbdev: prevent the risk of out of memory access (Mauro Carvalho Chehab) - media: v4l2-tpg: prevent the risk of a division by zero (Mauro Carvalho Chehab) - media: v4l2-ctrls-api: fix error handling for v4l2_g_ctrl() (Mauro Carvalho Chehab) - media: dvb-core: add missing buffer index check (Hans Verkuil) - mm/slab: fix warning caused by duplicate kmem_cache creation in kmem_buckets_create (Koichiro Den) - btrfs: fix the length of reserved qgroup to free (Haisu Wang) - btrfs: reinitialize delayed ref list after deleting it from the list (Filipe Manana) - btrfs: fix per-subvolume RO/RW flags with new mount API (Qu Wenruo) - bcachefs: Fix UAF in __promote_alloc() error path (Kent Overstreet) - bcachefs: Change OPT_STR max to be 1 less than the size of choices array (Piotr Zalewski) - bcachefs: btree_cache.freeable list fixes (Kent Overstreet) - bcachefs: check the invalid parameter for perf test (Hongbo Li) - bcachefs: add check NULL return of bio_kmalloc in journal_read_bucket (Pei Xiao) - bcachefs: Ensure BCH_FS_may_go_rw is set before exiting recovery (Kent Overstreet) - bcachefs: Fix topology errors on split after merge (Kent Overstreet) - bcachefs: Ancient versions with bad bkey_formats are no longer supported (Kent Overstreet) - bcachefs: Fix error handling in bch2_btree_node_prefetch() (Kent Overstreet) - bcachefs: Fix null ptr deref in bucket_gen_get() (Kent Overstreet) - arm64: Kconfig: Make SME depend on BROKEN for now (Mark Rutland) - arm64: smccc: Remove broken support for SMCCCv1.3 SVE discard hint (Mark Rutland) - arm64/sve: Discard stale CPU state when handling SVE traps (Mark Brown) - KVM: PPC: Book3S HV: Mask off LPCR_MER for a vCPU before running it to avoid spurious interrupts (Gautam Menghani) - Fedora 6.12 configs part 1 (Justin M. Forbes) - MAINTAINERS: update AMD SPI maintainer (Raju Rangoju) - regulator: rk808: Add apply_bit for BUCK3 on RK809 (Mikhail Rudenko) - regulator: rtq2208: Fix uninitialized use of regulator_config (ChiYuan Huang) - drivers: net: ionic: add missed debugfs cleanup to ionic_probe() error path (Wentao Liang) - net/smc: do not leave a dangling sk pointer in __smc_create() (Eric Dumazet) - rxrpc: Fix missing locking causing hanging calls (David Howells) - net/smc: Fix lookup of netdev by using ib_device_get_netdev() (Wenjia Zhang) - netfilter: nf_tables: wait for rcu grace period on net_device removal (Pablo Neira Ayuso) - net: arc: rockchip: fix emac mdio node support (Johan Jonker) - net: arc: fix the device for dma_map_single/dma_unmap_single (Johan Jonker) - virtio_net: Update rss when set queue (Philo Lu) - virtio_net: Sync rss config to device when virtnet_probe (Philo Lu) - virtio_net: Add hash_key_length check (Philo Lu) - virtio_net: Support dynamic rss indirection table size (Philo Lu) - net: stmmac: Fix unbalanced IRQ wake disable warning on single irq case (Nícolas F. R. A. Prado) - net: vertexcom: mse102x: Fix possible double free of TX skb (Stefan Wahren) - e1000e: Remove Meteor Lake SMBUS workarounds (Vitaly Lifshits) - i40e: fix race condition by adding filter's intermediate sync state (Aleksandr Loktionov) - idpf: fix idpf_vc_core_init error path (Pavan Kumar Linga) - idpf: avoid vport access in idpf_get_link_ksettings (Pavan Kumar Linga) - ice: change q_index variable type to s16 to store -1 value (Mateusz Polchlopek) - ice: Fix use after free during unload with ports in bridge (Marcin Szycik) - mptcp: use sock_kfree_s instead of kfree (Geliang Tang) - mptcp: no admin perm to list endpoints (Matthieu Baerts (NGI0)) - net: phy: ti: add PHY_RST_AFTER_CLK_EN flag (Diogo Silva) - net: ethernet: ti: am65-cpsw: fix warning in am65_cpsw_nuss_remove_rx_chns() (Roger Quadros) - net: ethernet: ti: am65-cpsw: Fix multi queue Rx on J7 (Roger Quadros) - net: hns3: fix kernel crash when uninstalling driver (Peiyang Wang) - Revert "Merge branch 'there-are-some-bugfix-for-the-hns3-ethernet-driver'" (Jakub Kicinski) - can: mcp251xfd: mcp251xfd_get_tef_len(): fix length calculation (Marc Kleine-Budde) - can: mcp251xfd: mcp251xfd_ring_alloc(): fix coalescing configuration when switching CAN modes (Marc Kleine-Budde) - can: rockchip_canfd: Drop obsolete dependency on COMPILE_TEST (Jean Delvare) - can: rockchip_canfd: CAN_ROCKCHIP_CANFD should depend on ARCH_ROCKCHIP (Geert Uytterhoeven) - can: c_can: fix {rx,tx}_errors statistics (Dario Binacchi) - can: m_can: m_can_close(): don't call free_irq() for IRQ-less devices (Marc Kleine-Budde) - can: {cc770,sja1000}_isa: allow building on x86_64 (Thomas Mühlbacher) - can: j1939: fix error in J1939 documentation. (Alexander Hölzl) - net: xilinx: axienet: Enqueue Tx packets in dql before dmaengine starts (Suraj Gupta) - MAINTAINERS: Remove self from DSA entry (Florian Fainelli) - net: enetc: allocate vf_state during PF probes (Wei Fang) - sctp: properly validate chunk size in sctp_sf_ootb() (Xin Long) - net: wwan: t7xx: Fix off-by-one error in t7xx_dpmaif_rx_buf_alloc() (Jinjie Ruan) - dt-bindings: net: xlnx,axi-ethernet: Correct phy-mode property value (Suraj Gupta) - net: dpaa_eth: print FD status in CPU endianness in dpaa_eth_fd tracepoint (Vladimir Oltean) - net: enetc: set MAC address to the VF net_device (Wei Fang) - MAINTAINERS: add self as reviewer for AXI PWM GENERATOR (Trevor Gamblin) - pwm: imx-tpm: Use correct MODULO value for EPWM mode (Erik Schumacher) - proc/softirqs: replace seq_printf with seq_put_decimal_ull_width (David Wang) - nfs: avoid i_lock contention in nfs_clear_invalid_mapping (Mike Snitzer) - nfs_common: fix localio to cope with racing nfs_local_probe() (Mike Snitzer) - NFS: Further fixes to attribute delegation a/mtime changes (Trond Myklebust) - NFS: Fix attribute delegation behaviour on exclusive create (Trond Myklebust) - nfs: Fix KMSAN warning in decode_getfattr_attrs() (Roberto Sassu) - NFSv3: only use NFS timeout for MOUNT when protocols are compatible (NeilBrown) - sunrpc: handle -ENOTCONN in xs_tcp_setup_socket() (NeilBrown) - KEYS: trusted: dcp: fix NULL dereference in AEAD crypto operation (David Gstir) - security/keys: fix slab-out-of-bounds in key_task_permission (Chen Ridong) - tracing/selftests: Add tracefs mount options test (Kalesh Singh) - tracing: Document tracefs gid mount option (Kalesh Singh) - tracing: Fix tracefs mount options (Kalesh Singh) - platform/x86: thinkpad_acpi: Fix for ThinkPad's with ECFW showing incorrect fan speed (Vishnu Sankar) - platform/x86: ideapad-laptop: add missing Ideapad Pro 5 fn keys (Renato Caldas) - platform/x86: dell-wmi-base: Handle META key Lock/Unlock events (Kurt Borja) - platform/x86: dell-smbios-base: Extends support to Alienware products (Kurt Borja) - platform/x86/amd/pmc: Detect when STB is not available (Corey Hickey) - platform/x86/amd/pmf: Add SMU metrics table support for 1Ah family 60h model (Shyam Sundar S K) - dm cache: fix potential out-of-bounds access on the first resume (Ming-Hung Tsai) - dm cache: optimize dirty bit checking with find_next_bit when resizing (Ming-Hung Tsai) - dm cache: fix out-of-bounds access to the dirty bitset when resizing (Ming-Hung Tsai) - dm cache: fix flushing uninitialized delayed_work on cache_ctr error (Ming-Hung Tsai) - dm cache: correct the number of origin blocks to match the target length (Ming-Hung Tsai) - dm-verity: don't crash if panic_on_corruption is not selected (Mikulas Patocka) - dm-unstriped: cast an operand to sector_t to prevent potential uint32_t overflow (Zichen Xie) - dm: fix a crash if blk_alloc_disk fails (Mikulas Patocka) - HID: core: zero-initialize the report buffer (Jiri Kosina) - redhat: set new gcov configs (Jan Stancek) - Don't ignore gitkeep files for ark-infra (Don Zickus) - redhat/kernel.spec: don't clear entire libdir when building tools (Jan Stancek) - redhat/configs: enable usbip for rhel (Jose Ignacio Tornos Martinez) - redhat: create 'crashkernel=' addons for UKI (Vitaly Kuznetsov) - redhat: avoid superfluous quotes in UKI cmdline addones (Vitaly Kuznetsov) - fedora: arm: updates for 6.12 (Peter Robinson) - soc: qcom: pmic_glink: Handle GLINK intent allocation rejections (Bjorn Andersson) - rpmsg: glink: Handle rejected intent request better (Bjorn Andersson) - soc: qcom: socinfo: fix revision check in qcom_socinfo_probe() (Manikanta Mylavarapu) - firmware: qcom: scm: Return -EOPNOTSUPP for unsupported SHM bridge enabling (Qingqing Zhou) - EDAC/qcom: Make irq configuration optional (Rajendra Nayak) - firmware: qcom: scm: fix a NULL-pointer dereference (Bartosz Golaszewski) - firmware: qcom: scm: suppress download mode error (Johan Hovold) - soc: qcom: Add check devm_kasprintf() returned value (Charles Han) - MAINTAINERS: Qualcomm SoC: Match reserved-memory bindings (Simon Horman) - arm64: dts: qcom: x1e80100: fix PCIe5 interconnect (Johan Hovold) - arm64: dts: qcom: x1e80100: fix PCIe4 interconnect (Johan Hovold) - arm64: dts: qcom: x1e80100: Fix up BAR spaces (Konrad Dybcio) - arm64: dts: qcom: x1e80100-qcp: fix nvme regulator boot glitch (Johan Hovold) - arm64: dts: qcom: x1e80100-microsoft-romulus: fix nvme regulator boot glitch (Johan Hovold) - arm64: dts: qcom: x1e80100-yoga-slim7x: fix nvme regulator boot glitch (Johan Hovold) - arm64: dts: qcom: x1e80100-vivobook-s15: fix nvme regulator boot glitch (Johan Hovold) - arm64: dts: qcom: x1e80100-crd: fix nvme regulator boot glitch (Johan Hovold) - arm64: dts: qcom: x1e78100-t14s: fix nvme regulator boot glitch (Johan Hovold) - arm64: dts: qcom: x1e80100-crd Rename "Twitter" to "Tweeter" (Maya Matuszczyk) - arm64: dts: qcom: x1e80100: Fix PCIe 6a lanes description (Abel Vesa) - arm64: dts: qcom: sm8450 fix PIPE clock specification for pcie1 (Dmitry Baryshkov) - arm64: dts: qcom: x1e80100: Add Broadcast_AND region in LLCC block (Abel Vesa) - arm64: dts: qcom: x1e80100: fix PCIe5 PHY clocks (Johan Hovold) - arm64: dts: qcom: x1e80100: fix PCIe4 and PCIe6a PHY clocks (Johan Hovold) - arm64: dts: qcom: msm8939: revert use of APCS mbox for RPM (Fabien Parent) - firmware: arm_scmi: Use vendor string in max-rx-timeout-ms (Cristian Marussi) - dt-bindings: firmware: arm,scmi: Add missing vendor string (Cristian Marussi) - firmware: arm_scmi: Reject clear channel request on A2P (Cristian Marussi) - firmware: arm_scmi: Fix slab-use-after-free in scmi_bus_notifier() (Xinqi Zhang) - MAINTAINERS: invert Misc RISC-V SoC Support's pattern (Conor Dooley) - riscv: dts: starfive: Update ethernet phy0 delay parameter values for Star64 (E Shattow) - riscv: dts: starfive: disable unused csi/camss nodes (Conor Dooley) - firmware: microchip: auto-update: fix poll_complete() to not report spurious timeout errors (Conor Dooley) - arm64: dts: rockchip: Correct GPIO polarity on brcm BT nodes (Diederik de Haas) - arm64: dts: rockchip: Drop invalid clock-names from es8388 codec nodes (Cristian Ciocaltea) - ARM: dts: rockchip: Fix the realtek audio codec on rk3036-kylin (Heiko Stuebner) - ARM: dts: rockchip: Fix the spi controller on rk3036 (Heiko Stuebner) - ARM: dts: rockchip: drop grf reference from rk3036 hdmi (Heiko Stuebner) - ARM: dts: rockchip: fix rk3036 acodec node (Heiko Stuebner) - arm64: dts: rockchip: remove orphaned pinctrl-names from pinephone pro (Heiko Stuebner) - arm64: dts: rockchip: remove num-slots property from rk3328-nanopi-r2s-plus (Heiko Stuebner) - arm64: dts: rockchip: Fix LED triggers on rk3308-roc-cc (Heiko Stuebner) - arm64: dts: rockchip: Remove #cooling-cells from fan on Theobroma lion (Heiko Stuebner) - arm64: dts: rockchip: Remove undocumented supports-emmc property (Heiko Stuebner) - arm64: dts: rockchip: Fix bluetooth properties on Rock960 boards (Heiko Stuebner) - arm64: dts: rockchip: Fix bluetooth properties on rk3566 box demo (Heiko Stuebner) - arm64: dts: rockchip: Drop regulator-init-microvolt from two boards (Heiko Stuebner) - arm64: dts: rockchip: fix i2c2 pinctrl-names property on anbernic-rg353p/v (Heiko Stuebner) - arm64: dts: rockchip: Fix reset-gpios property on brcm BT nodes (Diederik de Haas) - arm64: dts: rockchip: Fix wakeup prop names on PineNote BT node (Diederik de Haas) - arm64: dts: rockchip: Remove hdmi's 2nd interrupt on rk3328 (Diederik de Haas) - arm64: dts: rockchip: Designate Turing RK1's system power controller (Sam Edwards) - arm64: dts: rockchip: Start cooling maps numbering from zero on ROCK 5B (Dragan Simic) - arm64: dts: rockchip: Move L3 cache outside CPUs in RK3588(S) SoC dtsi (Dragan Simic) - arm64: dts: rockchip: Fix rt5651 compatible value on rk3399-sapphire-excavator (Geert Uytterhoeven) - arm64: dts: rockchip: Fix rt5651 compatible value on rk3399-eaidk-610 (Geert Uytterhoeven) - riscv: dts: Replace deprecated snps,nr-gpios property for snps,dw-apb-gpio-port devices (Uwe Kleine-König) - arm64: dts: imx8mp-phyboard-pollux: Set Video PLL1 frequency to 506.8 MHz (Marek Vasut) - arm64: dts: imx8mp: correct sdhc ipg clk (Peng Fan) - arm64: dts: imx8mp-skov-revb-mi1010ait-1cp1: Assign "media_isp" clock rate (Liu Ying) - arm64: dts: imx8: Fix lvds0 device tree (Diogo Silva) - arm64: dts: imx8ulp: correct the flexspi compatible string (Haibo Chen) - arm64: dts: imx8-ss-vpu: Fix imx8qm VPU IRQs (Alexander Stein) - mmc: sdhci-pci-gli: GL9767: Fix low power mode in the SD Express process (Ben Chuang) - mmc: sdhci-pci-gli: GL9767: Fix low power mode on the set clock function (Ben Chuang) - tpm: Lock TPM chip in tpm_pm_suspend() first (Jarkko Sakkinen) - Make setting of cma_pernuma tech preview (Chris von Recklinghausen) [RHEL-59621] - gitlab-ci: provide consistent kcidb_tree_name (Michael Hofmann) * Mon Nov 04 2024 Jan Stancek [6.11.0-28.el10] - Linux 6.12-rc6 (Linus Torvalds) - mm: multi-gen LRU: use {ptep,pmdp}_clear_young_notify() (Yu Zhao) - mm: multi-gen LRU: remove MM_LEAF_OLD and MM_NONLEAF_TOTAL stats (Yu Zhao) - mm, mmap: limit THP alignment of anonymous mappings to PMD-aligned sizes (Vlastimil Babka) - mm: shrinker: avoid memleak in alloc_shrinker_info (Chen Ridong) - .mailmap: update e-mail address for Eugen Hristev (Eugen Hristev) - vmscan,migrate: fix page count imbalance on node stats when demoting pages (Gregory Price) - mailmap: update Jarkko's email addresses (Jarkko Sakkinen) - mm: allow set/clear page_type again (Yu Zhao) - nilfs2: fix potential deadlock with newly created symlinks (Ryusuke Konishi) - Squashfs: fix variable overflow in squashfs_readpage_block (Phillip Lougher) - kasan: remove vmalloc_percpu test (Andrey Konovalov) - tools/mm: -Werror fixes in page-types/slabinfo (Wladislav Wiebe) - mm, swap: avoid over reclaim of full clusters (Kairui Song) - mm: fix PSWPIN counter for large folios swap-in (Barry Song) - mm: avoid VM_BUG_ON when try to map an anon large folio to zero page. (Zi Yan) - mm/codetag: fix null pointer check logic for ref and tag (Hao Ge) - mm/gup: stop leaking pinned pages in low memory conditions (John Hubbard) - phy: tegra: xusb: Add error pointer check in xusb.c (Dipendra Khadka) - dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Fix X1E80100 resets entries (Abel Vesa) - phy: freescale: imx8m-pcie: Do CMN_RST just before PHY PLL lock check (Richard Zhu) - phy: phy-rockchip-samsung-hdptx: Depend on CONFIG_COMMON_CLK (Cristian Ciocaltea) - phy: ti: phy-j721e-wiz: fix usxgmii configuration (Siddharth Vadapalli) - phy: starfive: jh7110-usb: Fix link configuration to controller (Jan Kiszka) - phy: qcom: qmp-pcie: drop bogus x1e80100 qref supplies (Johan Hovold) - phy: qcom: qmp-combo: move driver data initialisation earlier (Johan Hovold) - phy: qcom: qmp-usbc: fix NULL-deref on runtime suspend (Johan Hovold) - phy: qcom: qmp-usb-legacy: fix NULL-deref on runtime suspend (Johan Hovold) - phy: qcom: qmp-usb: fix NULL-deref on runtime suspend (Johan Hovold) - dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: add missing x1e80100 pipediv2 clocks (Johan Hovold) - phy: usb: disable COMMONONN for dual mode (Justin Chen) - phy: cadence: Sierra: Fix offset of DEQ open eye algorithm control register (Bartosz Wawrzyniak) - phy: usb: Fix missing elements in BCM4908 USB init array (Sam Edwards) - dmaengine: ti: k3-udma: Set EOP for all TRs in cyclic BCDMA transfer (Jai Luthra) - dmaengine: sh: rz-dmac: handle configs where one address is zero (Wolfram Sang) - Revert "driver core: Fix uevent_show() vs driver detach race" (Greg Kroah-Hartman) - usb: typec: tcpm: restrict SNK_WAIT_CAPABILITIES_TIMEOUT transitions to non self-powered devices (Amit Sunil Dhamne) - usb: phy: Fix API devm_usb_put_phy() can not release the phy (Zijun Hu) - usb: typec: use cleanup facility for 'altmodes_node' (Javier Carrasco) - usb: typec: fix unreleased fwnode_handle in typec_port_register_altmodes() (Javier Carrasco) - usb: typec: qcom-pmic-typec: fix missing fwnode removal in error path (Javier Carrasco) - usb: typec: qcom-pmic-typec: use fwnode_handle_put() to release fwnodes (Javier Carrasco) - usb: acpi: fix boot hang due to early incorrect 'tunneled' USB3 device links (Mathias Nyman) - Revert "usb: dwc2: Skip clock gating on Broadcom SoCs" (Stefan Wahren) - xhci: Fix Link TRB DMA in command ring stopped completion event (Faisal Hassan) - xhci: Use pm_runtime_get to prevent RPM on unsupported systems (Basavaraj Natikar) - usbip: tools: Fix detach_port() invalid port error path (Zongmin Zhou) - thunderbolt: Honor TMU requirements in the domain when setting TMU mode (Gil Fine) - thunderbolt: Fix KASAN reported stack out-of-bounds read in tb_retimer_scan() (Mika Westerberg) - iio: dac: Kconfig: Fix build error for ltc2664 (Jinjie Ruan) - iio: adc: ad7124: fix division by zero in ad7124_set_channel_odr() (Zicheng Qu) - staging: iio: frequency: ad9832: fix division by zero in ad9832_calc_freqreg() (Zicheng Qu) - docs: iio: ad7380: fix supply for ad7380-4 (Julien Stephan) - iio: adc: ad7380: fix supplies for ad7380-4 (Julien Stephan) - iio: adc: ad7380: add missing supplies (Julien Stephan) - iio: adc: ad7380: use devm_regulator_get_enable_read_voltage() (Julien Stephan) - dt-bindings: iio: adc: ad7380: fix ad7380-4 reference supply (Julien Stephan) - iio: light: veml6030: fix microlux value calculation (Javier Carrasco) - iio: gts-helper: Fix memory leaks for the error path of iio_gts_build_avail_scale_table() (Jinjie Ruan) - iio: gts-helper: Fix memory leaks in iio_gts_build_avail_scale_table() (Jinjie Ruan) - mei: use kvmalloc for read buffer (Alexander Usyskin) - MAINTAINERS: add netup_unidvb maintainer (Abylay Ospan) - Input: fix regression when re-registering input handlers (Dmitry Torokhov) - Input: adp5588-keys - do not try to disable interrupt 0 (Dmitry Torokhov) - Input: edt-ft5x06 - fix regmap leak when probe fails (Dmitry Torokhov) - modpost: fix input MODULE_DEVICE_TABLE() built for 64-bit on 32-bit host (Masahiro Yamada) - modpost: fix acpi MODULE_DEVICE_TABLE built with mismatched endianness (Masahiro Yamada) - kconfig: show sub-menu entries even if the prompt is hidden (Masahiro Yamada) - kbuild: deb-pkg: add pkg.linux-upstream.nokerneldbg build profile (Masahiro Yamada) - kbuild: deb-pkg: add pkg.linux-upstream.nokernelheaders build profile (Masahiro Yamada) - kbuild: rpm-pkg: disable kernel-devel package when cross-compiling (Masahiro Yamada) - sumversion: Fix a memory leak in get_src_version() (Elena Salomatkina) - x86/amd_nb: Fix compile-testing without CONFIG_AMD_NB (Arnd Bergmann) - posix-cpu-timers: Clear TICK_DEP_BIT_POSIX_TIMER on clone (Benjamin Segall) - sched/ext: Fix scx vs sched_delayed (Peter Zijlstra) - sched: Pass correct scheduling policy to __setscheduler_class (Aboorva Devarajan) - sched/numa: Fix the potential null pointer dereference in task_numa_work() (Shawn Wang) - sched: Fix pick_next_task_fair() vs try_to_wake_up() race (Peter Zijlstra) - perf: Fix missing RCU reader protection in perf_event_clear_cpumask() (Kan Liang) - irqchip/gic-v4: Correctly deal with set_affinity on lazily-mapped VPEs (Marc Zyngier) - genirq/msi: Fix off-by-one error in msi_domain_alloc() (Jinjie Ruan) - redhat/configs: add bootconfig to kernel-tools package (Brian Masney) - Enable CONFIG_SECURITY_LANDLOCK for RHEL (Zbigniew Jędrzejewski-Szmek) [RHEL-8810] - rpcrdma: Always release the rpcrdma_device's xa_array (Chuck Lever) - NFSD: Never decrement pending_async_copies on error (Chuck Lever) - NFSD: Initialize struct nfsd4_copy earlier (Chuck Lever) - xfs: streamline xfs_filestream_pick_ag (Christoph Hellwig) - xfs: fix finding a last resort AG in xfs_filestream_pick_ag (Christoph Hellwig) - xfs: Reduce unnecessary searches when searching for the best extents (Chi Zhiling) - xfs: Check for delayed allocations before setting extsize (Ojaswin Mujoo) - selftests/watchdog-test: Fix system accidentally reset after watchdog-test (Li Zhijian) - selftests/intel_pstate: check if cpupower is installed (Alessandro Zanni) - selftests/intel_pstate: fix operand expected error (Alessandro Zanni) - selftests/mount_setattr: fix idmap_mount_tree_invalid failed to run (zhouyuhang) - cfi: tweak llvm version for HAVE_CFI_ICALL_NORMALIZE_INTEGERS (Alice Ryhl) - kbuild: rust: avoid errors with old `rustc`s without LLVM patch version (Miguel Ojeda) - PCI: Fix pci_enable_acs() support for the ACS quirks (Jason Gunthorpe) - drm/xe: Don't short circuit TDR on jobs not started (Matthew Brost) - drm/xe: Add mmio read before GGTT invalidate (Matthew Brost) - drm/xe/display: Add missing HPD interrupt enabling during non-d3cold RPM resume (Imre Deak) - drm/xe/display: Separate the d3cold and non-d3cold runtime PM handling (Imre Deak) - drm/xe: Remove runtime argument from display s/r functions (Maarten Lankhorst) - dt-bindings: display: mediatek: split: add subschema property constraints (Moudy Ho) - dt-bindings: display: mediatek: dpi: correct power-domains property (Macpaul Lin) - drm/mediatek: Fix potential NULL dereference in mtk_crtc_destroy() (Dan Carpenter) - drm/mediatek: Fix get efuse issue for MT8188 DPTX (Liankun Yang) - drm/mediatek: Fix color format MACROs in OVL (Hsin-Te Yuan) - drm/mediatek: Add blend_modes to mtk_plane_init() for different SoCs (Jason-JH.Lin) - drm/mediatek: ovl: Add blend_modes to driver data (Jason-JH.Lin) - drm/mediatek: ovl: Remove the color format comment for ovl_fmt_convert() (Jason-JH.Lin) - drm/mediatek: ovl: Refine ignore_pixel_alpha comment and placement (Jason-JH.Lin) - drm/mediatek: ovl: Fix XRGB format breakage for blend_modes unsupported SoCs (Jason-JH.Lin) - drm/amdgpu/smu13: fix profile reporting (Alex Deucher) - drm/amd/pm: Vangogh: Fix kernel memory out of bounds write (Tvrtko Ursulin) - Revert "drm/amd/display: update DML2 policy EnhancedPrefetchScheduleAccelerationFinal DCN35" (Ovidiu Bunea) - drm/tests: hdmi: Fix memory leaks in drm_display_mode_from_cea_vic() (Jinjie Ruan) - drm/connector: hdmi: Fix memory leak in drm_display_mode_from_cea_vic() (Jinjie Ruan) - drm/tests: helpers: Add helper for drm_display_mode_from_cea_vic() (Jinjie Ruan) - drm/panthor: Report group as timedout when we fail to properly suspend (Boris Brezillon) - drm/panthor: Fail job creation when the group is dead (Boris Brezillon) - drm/panthor: Fix firmware initialization on systems with a page size > 4k (Boris Brezillon) - accel/ivpu: Fix NOC firewall interrupt handling (Andrzej Kacprowski) - drm/sched: Mark scheduler work queues with WQ_MEM_RECLAIM (Matthew Brost) - drm/tegra: Fix NULL vs IS_ERR() check in probe() (Dan Carpenter) - cxl/test: Improve init-order fidelity relative to real-world systems (Dan Williams) - cxl/port: Prevent out-of-order decoder allocation (Dan Williams) - cxl/port: Fix use-after-free, permit out-of-order decoder shutdown (Dan Williams) - cxl/acpi: Ensure ports ready at cxl_acpi_probe() return (Dan Williams) - cxl/port: Fix cxl_bus_rescan() vs bus_rescan_devices() (Dan Williams) - cxl/port: Fix CXL port initialization order when the subsystem is built-in (Dan Williams) - cxl/events: Fix Trace DRAM Event Record (Shiju Jose) - cxl/core: Return error when cxl_endpoint_gather_bandwidth() handles a non-PCI device (Li Zhijian) - nvme: re-fix error-handling for io_uring nvme-passthrough (Keith Busch) - nvmet-auth: assign dh_key to NULL after kfree_sensitive (Vitaliy Shevtsov) - nvme: module parameter to disable pi with offsets (Keith Busch) - nvme: enhance cns version checking (Keith Busch) - block: fix queue limits checks in blk_rq_map_user_bvec for real (Christoph Hellwig) - io_uring/rw: fix missing NOWAIT check for O_DIRECT start write (Jens Axboe) - ACPI: CPPC: Make rmw_lock a raw_spin_lock (Pierre Gondois) - gpiolib: fix debugfs dangling chip separator (Johan Hovold) - gpiolib: fix debugfs newline separators (Johan Hovold) - gpio: sloppy-logic-analyzer: Check for error code from devm_mutex_init() call (Andy Shevchenko) - gpio: fix uninit-value in swnode_find_gpio (Suraj Sonawane) - riscv: vdso: Prevent the compiler from inserting calls to memset() (Alexandre Ghiti) - riscv: Remove duplicated GET_RM (Chunyan Zhang) - riscv: Remove unused GENERATING_ASM_OFFSETS (Chunyan Zhang) - riscv: Use '%%u' to format the output of 'cpu' (WangYuli) - riscv: Prevent a bad reference count on CPU nodes (Miquel Sabaté Solà) - riscv: efi: Set NX compat flag in PE/COFF header (Heinrich Schuchardt) - RISC-V: disallow gcc + rust builds (Conor Dooley) - riscv: Do not use fortify in early code (Alexandre Ghiti) - RISC-V: ACPI: fix early_ioremap to early_memremap (Yunhui Cui) - arm64: signal: Improve POR_EL0 handling to avoid uaccess failures (Kevin Brodsky) - firmware: arm_sdei: Fix the input parameter of cpuhp_remove_state() (Xiongfeng Wang) - Revert "kasan: Disable Software Tag-Based KASAN with GCC" (Marco Elver) - kasan: Fix Software Tag-Based KASAN with GCC (Marco Elver) - iomap: turn iomap_want_unshare_iter into an inline function (Christoph Hellwig) - fsdax: dax_unshare_iter needs to copy entire blocks (Darrick J. Wong) - fsdax: remove zeroing code from dax_unshare_iter (Darrick J. Wong) - iomap: share iomap_unshare_iter predicate code with fsdax (Darrick J. Wong) - xfs: don't allocate COW extents when unsharing a hole (Darrick J. Wong) - iov_iter: fix copy_page_from_iter_atomic() if KMAP_LOCAL_FORCE_MAP (Hugh Dickins) - autofs: fix thinko in validate_dev_ioctl() (Ian Kent) - iov_iter: Fix iov_iter_get_pages*() for folio_queue (David Howells) - afs: Fix missing subdir edit when renamed between parent dirs (David Howells) - doc: correcting the debug path for cachefiles (Hongbo Li) - erofs: use get_tree_bdev_flags() to avoid misleading messages (Gao Xiang) - fs/super.c: introduce get_tree_bdev_flags() (Gao Xiang) - btrfs: fix defrag not merging contiguous extents due to merged extent maps (Filipe Manana) - btrfs: fix extent map merging not happening for adjacent extents (Filipe Manana) - btrfs: fix use-after-free of block device file in __btrfs_free_extra_devids() (Zhihao Cheng) - btrfs: fix error propagation of split bios (Naohiro Aota) - MIPS: export __cmpxchg_small() (David Sterba) - bcachefs: Fix NULL ptr dereference in btree_node_iter_and_journal_peek (Piotr Zalewski) - bcachefs: fix possible null-ptr-deref in __bch2_ec_stripe_head_get() (Gaosheng Cui) - bcachefs: Fix deadlock on -ENOSPC w.r.t. partial open buckets (Kent Overstreet) - bcachefs: Don't filter partial list buckets in open_buckets_to_text() (Kent Overstreet) - bcachefs: Don't keep tons of cached pointers around (Kent Overstreet) - bcachefs: init freespace inited bits to 0 in bch2_fs_initialize (Piotr Zalewski) - bcachefs: Fix unhandled transaction restart in fallocate (Kent Overstreet) - bcachefs: Fix UAF in bch2_reconstruct_alloc() (Kent Overstreet) - bcachefs: fix null-ptr-deref in have_stripes() (Jeongjun Park) - bcachefs: fix shift oob in alloc_lru_idx_fragmentation (Jeongjun Park) - bcachefs: Fix invalid shift in validate_sb_layout() (Gianfranco Trad) - RDMA/bnxt_re: synchronize the qp-handle table array (Selvin Xavier) - RDMA/bnxt_re: Fix the usage of control path spin locks (Selvin Xavier) - RDMA/mlx5: Round max_rd_atomic/max_dest_rd_atomic up instead of down (Patrisious Haddad) - RDMA/cxgb4: Dump vendor specific QP details (Leon Romanovsky) - bpf, test_run: Fix LIVE_FRAME frame update after a page has been recycled (Toke Høiland-Jørgensen) - selftests/bpf: Add three test cases for bits_iter (Hou Tao) - bpf: Use __u64 to save the bits in bits iterator (Hou Tao) - bpf: Check the validity of nr_words in bpf_iter_bits_new() (Hou Tao) - bpf: Add bpf_mem_alloc_check_size() helper (Hou Tao) - bpf: Free dynamically allocated bits in bpf_iter_bits_destroy() (Hou Tao) - bpf: disallow 40-bytes extra stack for bpf_fastcall patterns (Eduard Zingerman) - selftests/bpf: Add test for trie_get_next_key() (Byeonguk Jeong) - bpf: Fix out-of-bounds write in trie_get_next_key() (Byeonguk Jeong) - selftests/bpf: Test with a very short loop (Eduard Zingerman) - bpf: Force checkpoint when jmp history is too long (Eduard Zingerman) - bpf: fix filed access without lock (Jiayuan Chen) - sock_map: fix a NULL pointer dereference in sock_map_link_update_prog() (Cong Wang) - netfilter: nft_payload: sanitize offset and length before calling skb_checksum() (Pablo Neira Ayuso) - netfilter: nf_reject_ipv6: fix potential crash in nf_send_reset6() (Eric Dumazet) - netfilter: Fix use-after-free in get_info() (Dong Chenchen) - selftests: netfilter: remove unused parameter (Liu Jing) - Bluetooth: hci: fix null-ptr-deref in hci_read_supported_codecs (Sungwoo Kim) - net: hns3: fix kernel crash when 1588 is sent on HIP08 devices (Jie Wang) - net: hns3: fixed hclge_fetch_pf_reg accesses bar space out of bounds issue (Hao Lan) - net: hns3: initialize reset_timer before hclgevf_misc_irq_init() (Jian Shen) - net: hns3: don't auto enable misc vector (Jian Shen) - net: hns3: Resolved the issue that the debugfs query result is inconsistent. (Hao Lan) - net: hns3: fix missing features due to dev->features configuration too early (Hao Lan) - net: hns3: fixed reset failure issues caused by the incorrect reset type (Hao Lan) - net: hns3: add sync command to sync io-pgtable (Jian Shen) - net: hns3: default enable tx bounce buffer when smmu enabled (Peiyang Wang) - net: ethernet: mtk_wed: fix path of MT7988 WO firmware (Daniel Golle) - selftests: forwarding: Add IPv6 GRE remote change tests (Ido Schimmel) - mlxsw: spectrum_ipip: Fix memory leak when changing remote IPv6 address (Ido Schimmel) - mlxsw: pci: Sync Rx buffers for device (Amit Cohen) - mlxsw: pci: Sync Rx buffers for CPU (Amit Cohen) - mlxsw: spectrum_ptp: Add missing verification before pushing Tx header (Amit Cohen) - net: skip offload for NETIF_F_IPV6_CSUM if ipv6 header contains extension (Benoît Monin) - wifi: mac80211: ieee80211_i: Fix memory corruption bug in struct ieee80211_chanctx (Gustavo A. R. Silva) - wifi: iwlwifi: mvm: fix 6 GHz scan construction (Johannes Berg) - wifi: cfg80211: clear wdev->cqm_config pointer on free (Johannes Berg) - mac80211: fix user-power when emulating chanctx (Ben Greear) - Revert "wifi: iwlwifi: remove retry loops in start" (Emmanuel Grumbach) - wifi: iwlwifi: mvm: don't add default link in fw restart flow (Emmanuel Grumbach) - wifi: iwlwifi: mvm: Fix response handling in iwl_mvm_send_recovery_cmd() (Daniel Gabay) - wifi: iwlwifi: mvm: SAR table alignment (Anjaneyulu) - wifi: iwlwifi: mvm: Use the sync timepoint API in suspend (Daniel Gabay) - wifi: iwlwifi: mvm: really send iwl_txpower_constraints_cmd (Miri Korenblit) - wifi: iwlwifi: mvm: don't leak a link on AP removal (Emmanuel Grumbach) - net: fix crash when config small gso_max_size/gso_ipv4_max_size (Wang Liang) - net: usb: qmi_wwan: add Quectel RG650V (Benoît Monin) - net/sched: sch_api: fix xa_insert() error path in tcf_block_get_ext() (Vladimir Oltean) - netdevsim: Add trailing zero to terminate the string in nsim_nexthop_bucket_activity_write() (Zichen Xie) - net/sched: stop qdisc_tree_reduce_backlog on TC_H_ROOT (Pedro Tammela) - selftests: netfilter: nft_flowtable.sh: make first pass deterministic (Florian Westphal) - gtp: allow -1 to be specified as file description from userspace (Pablo Neira Ayuso) - mctp i2c: handle NULL header address (Matt Johnston) - ipv4: ip_tunnel: Fix suspicious RCU usage warning in ip_tunnel_find() (Ido Schimmel) - ipv4: ip_tunnel: Fix suspicious RCU usage warning in ip_tunnel_init_flow() (Ido Schimmel) - ice: fix crash on probe for DPLL enabled E810 LOM (Arkadiusz Kubalewski) - ice: block SF port creation in legacy mode (Michal Swiatkowski) - igb: Disable threaded IRQ for igb_msix_other (Wander Lairson Costa) - net: stmmac: TSO: Fix unbalanced DMA map/unmap for non-paged SKB data (Furong Xu) - net: stmmac: dwmac4: Fix high address display by updating reg_space[] from register values (Ley Foon Tan) - usb: add support for new USB device ID 0x17EF:0x3098 for the r8152 driver (Benjamin Große) - macsec: Fix use-after-free while sending the offloading packet (Jianbo Liu) - selftests: mptcp: list sysctl data (Matthieu Baerts (NGI0)) - mptcp: init: protect sched with rcu_read_lock (Matthieu Baerts (NGI0)) - docs: networking: packet_mmap: replace dead links with archive.org links (Levi Zim) - wifi: ath11k: Fix invalid ring usage in full monitor mode (Remi Pommarel) - wifi: ath10k: Fix memory leak in management tx (Manikanta Pubbisetty) - wifi: rtlwifi: rtl8192du: Don't claim USB ID 0bda:8171 (Bitterblue Smith) - wifi: rtw88: Fix the RX aggregation in USB 3 mode (Bitterblue Smith) - wifi: brcm80211: BRCM_TRACING should depend on TRACING (Geert Uytterhoeven) - wifi: rtw89: pci: early chips only enable 36-bit DMA on specific PCI hosts (Ping-Ke Shih) - wifi: mac80211: skip non-uploaded keys in ieee80211_iter_keys (Felix Fietkau) - wifi: radiotap: Avoid -Wflex-array-member-not-at-end warnings (Gustavo A. R. Silva) - wifi: mac80211: do not pass a stopped vif to the driver in .get_txpower (Felix Fietkau) - wifi: mac80211: Convert color collision detection to wiphy work (Remi Pommarel) - wifi: cfg80211: Add wiphy_delayed_work_pending() (Remi Pommarel) - wifi: cfg80211: Do not create BSS entries for unsupported channels (Chenming Huang) - wifi: mac80211: Fix setting txpower with emulate_chanctx (Ben Greear) - mac80211: MAC80211_MESSAGE_TRACING should depend on TRACING (Geert Uytterhoeven) - wifi: iwlegacy: Clear stale interrupts before resuming device (Ville Syrjälä) - wifi: iwlegacy: Fix "field-spanning write" warning in il_enqueue_hcmd() (Ben Hutchings) - wifi: mt76: do not increase mcu skb refcount if retry is not supported (Felix Fietkau) - wifi: rtw89: coex: add debug message of link counts on 2/5GHz bands for wl_info v7 (Ping-Ke Shih) - ALSA: hda/realtek: Fix headset mic on TUXEDO Stellaris 16 Gen6 mb1 (Christoffer Sandberg) - ALSA: hda/realtek: Fix headset mic on TUXEDO Gemini 17 Gen3 (Christoffer Sandberg) - ALSA: usb-audio: Add quirks for Dell WD19 dock (Jan Schär) - ASoC: codecs: wcd937x: relax the AUX PDM watchdog (Alexey Klimov) - ASoC: codecs: wcd937x: add missing LO Switch control (Alexey Klimov) - ASoC: dt-bindings: rockchip,rk3308-codec: add port property (Dmitry Yashin) - ASoC: dapm: fix bounds checker error in dapm_widget_list_create (Aleksei Vetrov) - ASoC: Intel: sst: Fix used of uninitialized ctx to log an error (Hans de Goede) - ASoC: cs42l51: Fix some error handling paths in cs42l51_probe() (Christophe JAILLET) - ASoC: Intel: sst: Support LPE0F28 ACPI HID (Hans de Goede) - ASoC: Intel: bytcr_rt5640: Add DMI quirk for Vexia Edu Atla 10 tablet (Hans de Goede) - ASoC: Intel: bytcr_rt5640: Add support for non ACPI instantiated codec (Hans de Goede) - ASoC: codecs: rt5640: Always disable IRQs from rt5640_cancel_work() (Hans de Goede) - ALSA: hda/realtek: Add subwoofer quirk for Infinix ZERO BOOK 13 (Piyush Raj Chouhan) - ALSA: hda/realtek: Limit internal Mic boost on Dell platform (Kailang Yang) - redhat: configs: Drop CONFIG_MEMSTICK_REALTEK_PCI config option (Desnes Nunes) - x86/uaccess: Avoid barrier_nospec() in 64-bit copy_from_user() (Linus Torvalds) - perf cap: Add __NR_capget to arch/x86 unistd (Ian Rogers) - tools headers: Update the linux/unaligned.h copy with the kernel sources (Arnaldo Carvalho de Melo) - tools headers arm64: Sync arm64's cputype.h with the kernel sources (Arnaldo Carvalho de Melo) - tools headers: Synchronize {uapi/}linux/bits.h with the kernel sources (Arnaldo Carvalho de Melo) - tools arch x86: Sync the msr-index.h copy with the kernel sources (Arnaldo Carvalho de Melo) - perf python: Fix up the build on architectures without HAVE_KVM_STAT_SUPPORT (Arnaldo Carvalho de Melo) - perf test: Handle perftool-testsuite_probe failure due to broken DWARF (Veronika Molnarova) - tools headers UAPI: Sync kvm headers with the kernel sources (Arnaldo Carvalho de Melo) - perf trace: Fix non-listed archs in the syscalltbl routines (Jiri Slaby) - perf build: Change the clang check back to 12.0.1 (Howard Chu) - perf trace augmented_raw_syscalls: Add more checks to pass the verifier (Howard Chu) - perf trace augmented_raw_syscalls: Add extra array index bounds checking to satisfy some BPF verifiers (Arnaldo Carvalho de Melo) - perf trace: The return from 'write' isn't a pid (Arnaldo Carvalho de Melo) - tools headers UAPI: Sync linux/const.h with the kernel headers (Arnaldo Carvalho de Melo) - scsi: ufs: core: Fix another deadlock during RTC update (Peter Wang) - scsi: scsi_debug: Fix do_device_access() handling of unexpected SG copy length (John Garry) - Update the RHEL_DIFFERENCES help string (Don Zickus) - Put build framework for RT kernel in place for Fedora (Clark Williams) - cgroup: Fix potential overflow issue when checking max_depth (Xiu Jianfeng) - cgroup/bpf: use a dedicated workqueue for cgroup bpf destruction (Chen Ridong) - sched_ext: Fix enq_last_no_enq_fails selftest (Tejun Heo) - sched_ext: Make cast_mask() inline (Tejun Heo) - scx: Fix raciness in scx_ops_bypass() (David Vernet) - scx: Fix exit selftest to use custom DSQ (David Vernet) - sched_ext: Fix function pointer type mismatches in BPF selftests (Vishal Chourasia) - selftests/sched_ext: add order-only dependency of runner.o on BPFOBJ (Ihor Solodrai) - mm: krealloc: Fix MTE false alarm in __do_krealloc (Qun-Wei Lin) - slub/kunit: fix a WARNING due to unwrapped __kmalloc_cache_noprof (Pei Xiao) - mm: avoid unconditional one-tick sleep when swapcache_prepare fails (Barry Song) - mseal: update mseal.rst (Jeff Xu) - mm: split critical region in remap_file_pages() and invoke LSMs in between (Kirill A. Shutemov) - selftests/mm: fix deadlock for fork after pthread_create with atomic_bool (Edward Liaw) - Revert "selftests/mm: replace atomic_bool with pthread_barrier_t" (Edward Liaw) - Revert "selftests/mm: fix deadlock for fork after pthread_create on ARM" (Edward Liaw) - tools: testing: add expand-only mode VMA test (Lorenzo Stoakes) - mm/vma: add expand-only VMA merge mode and optimise do_brk_flags() (Lorenzo Stoakes) - resource,kexec: walk_system_ram_res_rev must retain resource flags (Gregory Price) - nilfs2: fix kernel bug due to missing clearing of checked flag (Ryusuke Konishi) - mm: numa_clear_kernel_node_hotplug: Add NUMA_NO_NODE check for node id (Nobuhiro Iwamatsu) - ocfs2: pass u64 to ocfs2_truncate_inline maybe overflow (Edward Adam Davis) - mm: shmem: fix data-race in shmem_getattr() (Jeongjun Park) - mm: mark mas allocation in vms_abort_munmap_vmas as __GFP_NOFAIL (Jann Horn) - x86/traps: move kmsan check after instrumentation_begin (Sabyrzhan Tasbolatov) - resource: remove dependency on SPARSEMEM from GET_FREE_REGION (Huang Ying) - mm/mmap: fix race in mmap_region() with ftruncate() (Liam R. Howlett) - mm/page_alloc: let GFP_ATOMIC order-0 allocs access highatomic reserves (Matt Fleming) - fork: only invoke khugepaged, ksm hooks if no error (Lorenzo Stoakes) - fork: do not invoke uffd on fork if error occurs (Lorenzo Stoakes) - mm/pagewalk: fix usage of pmd_leaf()/pud_leaf() without present check (David Hildenbrand) - tpm: Lazily flush the auth session (Jarkko Sakkinen) - tpm: Rollback tpm2_load_null() (Jarkko Sakkinen) - tpm: Return tpm2_sessions_init() when null key creation fails (Jarkko Sakkinen) - spi: spi-fsl-dspi: Fix crash when not using GPIO chip select (Frank Li) - spi: geni-qcom: Fix boot warning related to pm_runtime and devres (Georgi Djakov) - spi: mtk-snfi: fix kerneldoc for mtk_snand_is_page_ops() (Bartosz Golaszewski) - spi: stm32: fix missing device mode capability in stm32mp25 (Alain Volmat) * Tue Oct 29 2024 Jan Stancek [6.11.0-27.el10] - Linux 6.12-rc5 (Linus Torvalds) - x86/sev: Ensure that RMP table fixups are reserved (Ashish Kalra) - x86/microcode/AMD: Split load_microcode_amd() (Borislav Petkov (AMD)) - x86/microcode/AMD: Pay attention to the stepping dynamically (Borislav Petkov (AMD)) - x86/lam: Disable ADDRESS_MASKING in most cases (Pawan Gupta) - fgraph: Change the name of cpuhp state to "fgraph:online" (Steven Rostedt) - fgraph: Fix missing unlock in register_ftrace_graph() (Li Huafei) - platform/x86: asus-wmi: Fix thermal profile initialization (Armin Wolf) - platform/x86: dell-wmi: Ignore suspend notifications (Armin Wolf) - platform/x86/intel/pmc: Fix pmc_core_iounmap to call iounmap for valid addresses (Vamsi Krishna Brahmajosyula) - platform/x86:intel/pmc: Revert "Enable the ACPI PM Timer to be turned off when suspended" (Marek Maslanka) - firewire: core: fix invalid port index for parent device (Takashi Sakamoto) - block: fix sanity checks in blk_rq_map_user_bvec (Xinyu Zhang) - md/raid10: fix null ptr dereference in raid10_size() (Yu Kuai) - md: ensure child flush IO does not affect origin bio->bi_status (Li Nan) - xfs: update the pag for the last AG at recovery time (Christoph Hellwig) - xfs: don't use __GFP_RETRY_MAYFAIL in xfs_initialize_perag (Christoph Hellwig) - xfs: error out when a superblock buffer update reduces the agcount (Christoph Hellwig) - xfs: update the file system geometry after recoverying superblock buffers (Christoph Hellwig) - xfs: merge the perag freeing helpers (Christoph Hellwig) - xfs: pass the exact range to initialize to xfs_initialize_perag (Christoph Hellwig) - xfs: don't fail repairs on metadata files with no attr fork (Darrick J. Wong) - generic: enable RPMB for all configs that enable MMC (Peter Robinson) - fedora: riscv: Don't override MMC platform defaults (Peter Robinson) - common: only enable on MMC_DW_BLUEFIELD (Peter Robinson) - fedora: aarch64: Stop overriding CONFIG_MMC defaults (Peter Robinson) - commong: The KS7010 driver has been removed (Peter Robinson) - Revert "fs/9p: simplify iget to remove unnecessary paths" (Dominique Martinet) - Revert "fs/9p: fix uaf in in v9fs_stat2inode_dotl" (Dominique Martinet) - Revert "fs/9p: remove redundant pointer v9ses" (Dominique Martinet) - Revert " fs/9p: mitigate inode collisions" (Dominique Martinet) - cifs: fix warning when destroy 'cifs_io_request_pool' (Ye Bin) - smb: client: Handle kstrdup failures for passwords (Henrique Carvalho) - fuse: remove stray debug line (Miklos Szeredi) - Revert "fuse: move initialization of fuse_file to fuse_writepages() instead of in callback" (Miklos Szeredi) - fuse: update inode size after extending passthrough write (Amir Goldstein) - fs: pass offset and result to backing_file end_write() callback (Amir Goldstein) - nfsd: cancel nfsd_shrinker_work using sync mode in nfs4_state_shutdown_net (Yang Erkun) - nfsd: fix race between laundromat and free_stateid (Olga Kornievskaia) - ACPI: button: Add DMI quirk for Samsung Galaxy Book2 to fix initial lid detection issue (Shubham Panwar) - ACPI: resource: Add LG 16T90SP to irq1_level_low_skip_override[] (Christian Heusel) - ACPI: PRM: Clean up guid type in struct prm_handler_info (Dan Carpenter) - ACPI: PRM: Find EFI_MEMORY_RUNTIME block for PRM handler and context (Koba Ko) - powercap: dtpm_devfreq: Fix error check against dev_pm_qos_add_request() (Yuan Can) - cpufreq: CPPC: fix perf_to_khz/khz_to_perf conversion exception (liwei) - cpufreq: docs: Reflect latency changes in docs (Christian Loehle) - PCI/pwrctl: Abandon QCom WCN probe on pre-pwrseq device-trees (Bartosz Golaszewski) - PCI: Hold rescan lock while adding devices during host probe (Bartosz Golaszewski) - fbdev: wm8505fb: select CONFIG_FB_IOMEM_FOPS (Arnd Bergmann) - fbdev: da8xx: remove the driver (Bartosz Golaszewski) - fbdev: Constify struct sbus_mmap_map (Christophe JAILLET) - fbdev: nvidiafb: fix inconsistent indentation warning (SurajSonawane2415) - fbdev: sstfb: Make CONFIG_FB_DEVICE optional (Gonzalo Silvalde Blanco) - MAINTAINERS: add a keyword entry for the GPIO subsystem (Bartosz Golaszewski) - ata: libata: Set DID_TIME_OUT for commands that actually timed out (Niklas Cassel) - ASoC: qcom: sc7280: Fix missing Soundwire runtime stream alloc (Krzysztof Kozlowski) - ASoC: fsl_micfil: Add sample rate constraint (Shengjiu Wang) - ASoC: rt722-sdca: increase clk_stop_timeout to fix clock stop issue (Jack Yu) - ASoC: SOF: Intel: hda: Always clean up link DMA during stop (Ranjani Sridharan) - soundwire: intel_ace2x: Send PDI stream number during prepare (Ranjani Sridharan) - ASoC: SOF: Intel: hda: Handle prepare without close for non-HDA DAI's (Ranjani Sridharan) - ASoC: SOF: ipc4-topology: Do not set ALH node_id for aggregated DAIs (Ranjani Sridharan) - ASoC: fsl_micfil: Add a flag to distinguish with different volume control types (Chancel Liu) - ASoC: codecs: lpass-rx-macro: fix RXn(rx,n) macro for DSM_CTL and SEC7 regs (Alexey Klimov) - ASoC: Change my e-mail to gmail (Kirill Marinushkin) - ASoC: Intel: soc-acpi: lnl: Add match entry for TM2 laptops (Derek Fang) - ASoC: amd: yc: Fix non-functional mic on ASUS E1404FA (Ilya Dudikov) - MAINTAINERS: Update maintainer list for MICROCHIP ASOC, SSC and MCP16502 drivers (Andrei Simion) - ASoC: qcom: Select missing common Soundwire module code on SDM845 (Krzysztof Kozlowski) - ASoC: fsl_esai: change dev_warn to dev_dbg in irq handler (Shengjiu Wang) - ASoC: rsnd: Fix probe failure on HiHope boards due to endpoint parsing (Lad Prabhakar) - ASoC: max98388: Fix missing increment of variable slot_found (Colin Ian King) - ASoC: amd: yc: Add quirk for ASUS Vivobook S15 M3502RA (Christian Heusel) - ASoC: topology: Bump minimal topology ABI version (Amadeusz Sławiński) - ASoC: codecs: Fix error handling in aw_dev_get_dsp_status function (Zhu Jun) - ASoC: qcom: sdm845: add missing soundwire runtime stream alloc (Alexey Klimov) - ASoC: loongson: Fix component check failed on FDT systems (Binbin Zhou) - ASoC: dapm: avoid container_of() to get component (Benjamin Bara) - ASoC: SOF: Intel: hda-loader: do not wait for HDaudio IOC (Kai Vehmanen) - ASoC: SOF: amd: Fix for ACP SRAM addr for acp7.0 platform (Venkata Prasad Potturu) - ASoC: SOF: amd: Add error log for DSP firmware validation failure (Venkata Prasad Potturu) - ASoC: Intel: avs: Update stream status in a separate thread (Amadeusz Sławiński) - ASoC: dt-bindings: davinci-mcasp: Fix interrupt properties (Miquel Raynal) - ASoC: qcom: Fix NULL Dereference in asoc_qcom_lpass_cpu_platform_probe() (Zichen Xie) - ALSA: hda/realtek: Update default depop procedure (Kailang Yang) - ALSA: hda/tas2781: select CRC32 instead of CRC32_SARWATE (Eric Biggers) - ALSA: hda/realtek: Add subwoofer quirk for Acer Predator G9-593 (José Relvas) - ALSA: firewire-lib: Avoid division by zero in apply_constraint_to_size() (Andrey Shumilin) - drm/xe: Don't restart parallel queues multiple times on GT reset (Nirmoy Das) - drm/xe/ufence: Prefetch ufence addr to catch bogus address (Nirmoy Das) - drm/xe: Handle unreliable MMIO reads during forcewake (Shuicheng Lin) - drm/xe/guc/ct: Flush g2h worker in case of g2h response timeout (Badal Nilawar) - drm/xe: Enlarge the invalidation timeout from 150 to 500 (Shuicheng Lin) - drm/bridge: tc358767: fix missing of_node_put() in for_each_endpoint_of_node() (Javier Carrasco) - drm/bridge: Fix assignment of the of_node of the parent to aux bridge (Abel Vesa) - i915: fix DRM_I915_GVT_KVMGT dependencies (Arnd Bergmann) - drm/amdgpu: handle default profile on on devices without fullscreen 3D (Alex Deucher) - drm/amd/display: Disable PSR-SU on Parade 08-01 TCON too (Mario Limonciello) - drm/amdgpu: fix random data corruption for sdma 7 (Frank Min) - drm/amd/display: temp w/a for DP Link Layer compliance (Aurabindo Pillai) - drm/amd/display: temp w/a for dGPU to enter idle optimizations (Aurabindo Pillai) - drm/amd/pm: update deep sleep status on smu v14.0.2/3 (Kenneth Feng) - drm/amd/pm: update overdrive function on smu v14.0.2/3 (Kenneth Feng) - drm/amd/pm: update the driver-fw interface file for smu v14.0.2/3 (Kenneth Feng) - drm/amd: Guard against bad data for ATIF ACPI method (Mario Limonciello) - x86: fix whitespace in runtime-const assembler output (Linus Torvalds) - x86: fix user address masking non-canonical speculation issue (Linus Torvalds) - v6.12-rc4-rt6 (Sebastian Andrzej Siewior) - sched: Update the lazy-preempt bits. (Sebastian Andrzej Siewior) - timer: Update the ktimersd series. (Sebastian Andrzej Siewior) - v6.12-rc4-rt5 (Sebastian Andrzej Siewior) - bpf: Check validity of link->type in bpf_link_show_fdinfo() (Hou Tao) - bpf: Add the missing BPF_LINK_TYPE invocation for sockmap (Hou Tao) - bpf: fix do_misc_fixups() for bpf_get_branch_snapshot() (Andrii Nakryiko) - bpf,perf: Fix perf_event_detach_bpf_prog error handling (Jiri Olsa) - selftests/bpf: Add test for passing in uninit mtu_len (Daniel Borkmann) - selftests/bpf: Add test for writes to .rodata (Daniel Borkmann) - bpf: Remove MEM_UNINIT from skb/xdp MTU helpers (Daniel Borkmann) - bpf: Fix overloading of MEM_UNINIT's meaning (Daniel Borkmann) - bpf: Add MEM_WRITE attribute (Daniel Borkmann) - bpf: Preserve param->string when parsing mount options (Hou Tao) - bpf, arm64: Fix address emission with tag-based KASAN enabled (Peter Collingbourne) - net: dsa: mv88e6xxx: support 4000ps cycle counter period (Shenghao Yang) - net: dsa: mv88e6xxx: read cycle counter period from hardware (Shenghao Yang) - net: dsa: mv88e6xxx: group cycle counter coefficients (Shenghao Yang) - net: usb: qmi_wwan: add Fibocom FG132 0x0112 composition (Reinhard Speyerer) - hv_netvsc: Fix VF namespace also in synthetic NIC NETDEV_REGISTER event (Haiyang Zhang) - net: dsa: microchip: disable EEE for KSZ879x/KSZ877x/KSZ876x (Tim Harvey) - Bluetooth: ISO: Fix UAF on iso_sock_timeout (Luiz Augusto von Dentz) - Bluetooth: SCO: Fix UAF on sco_sock_timeout (Luiz Augusto von Dentz) - Bluetooth: hci_core: Disable works on hci_unregister_dev (Luiz Augusto von Dentz) - xfrm: fix one more kernel-infoleak in algo dumping (Petr Vaganov) - xfrm: validate new SA's prefixlen using SA family when sel.family is unset (Sabrina Dubroca) - xfrm: policy: remove last remnants of pernet inexact list (Florian Westphal) - xfrm: respect ip protocols rules criteria when performing dst lookups (Eyal Birger) - xfrm: extract dst lookup parameters into a struct (Eyal Birger) - posix-clock: posix-clock: Fix unbalanced locking in pc_clock_settime() (Jinjie Ruan) - r8169: avoid unsolicited interrupts (Heiner Kallweit) - net: sched: use RCU read-side critical section in taprio_dump() (Dmitry Antipov) - net: sched: fix use-after-free in taprio_change() (Dmitry Antipov) - net/sched: act_api: deny mismatched skip_sw/skip_hw flags for actions created by classifiers (Vladimir Oltean) - net: usb: usbnet: fix name regression (Oliver Neukum) - mlxsw: spectrum_router: fix xa_store() error checking (Yuan Can) - netfilter: xtables: fix typo causing some targets not to load on IPv6 (Pablo Neira Ayuso) - netfilter: bpf: must hold reference on net namespace (Florian Westphal) - virtio_net: fix integer overflow in stats (Michael S. Tsirkin) - net: fix races in netdev_tx_sent_queue()/dev_watchdog() (Eric Dumazet) - net: wwan: fix global oob in wwan_rtnl_policy (Lin Ma) - fsl/fman: Fix refcount handling of fman-related devices (Aleksandr Mishin) - fsl/fman: Save device references taken in mac_probe() (Aleksandr Mishin) - MAINTAINERS: add samples/pktgen to NETWORKING [GENERAL] (Hangbin Liu) - mailmap: update entry for Jesper Dangaard Brouer (Jesper Dangaard Brouer) - net: dsa: mv88e6xxx: Fix error when setting port policy on mv88e6393x (Peter Rashleigh) - octeon_ep: Add SKB allocation failures handling in __octep_oq_process_rx() (Aleksandr Mishin) - octeon_ep: Implement helper for iterating packets in Rx queue (Aleksandr Mishin) - bnxt_en: replace ptp_lock with irqsave variant (Vadim Fedorenko) - net: phy: dp83822: Fix reset pin definitions (Michel Alex) - MAINTAINERS: add Simon as an official reviewer (Jakub Kicinski) - net: plip: fix break; causing plip to never transmit (Jakub Boehm) - be2net: fix potential memory leak in be_xmit() (Wang Hai) - net/sun3_82586: fix potential memory leak in sun3_82586_send_packet() (Wang Hai) - net: pse-pd: Fix out of bound for loop (Kory Maincent) - HID: lenovo: Add support for Thinkpad X1 Tablet Gen 3 keyboard (Hans de Goede) - HID: multitouch: Add quirk for Logitech Bolt receiver w/ Casa touchpad (Kenneth Albanowski) - HID: i2c-hid: Delayed i2c resume wakeup for 0x0d42 Goodix touchpad (Bartłomiej Maryńczak) - LoongArch: KVM: Mark hrtimer to expire in hard interrupt context (Huacai Chen) - LoongArch: Make KASAN usable for variable cpu_vabits (Huacai Chen) - LoongArch: Set initial pte entry with PAGE_GLOBAL for kernel space (Bibo Mao) - LoongArch: Don't crash in stack_top() for tasks without vDSO (Thomas Weißschuh) - LoongArch: Set correct size for vDSO code mapping (Huacai Chen) - LoongArch: Enable IRQ if do_ale() triggered in irq-enabled context (Huacai Chen) - LoongArch: Get correct cores_per_package for SMT systems (Huacai Chen) - LoongArch: Use "Exception return address" to comment ERA (Yanteng Si) - tracing: Consider the NULL character when validating the event length (Leo Yan) - tracing/probes: Fix MAX_TRACE_ARGS limit handling (Mikel Rychliski) - objpool: fix choosing allocation for percpu slots (Viktor Malik) - btrfs: fix passing 0 to ERR_PTR in btrfs_search_dir_index_item() (Yue Haibing) - btrfs: reject ro->rw reconfiguration if there are hard ro requirements (Qu Wenruo) - btrfs: fix read corruption due to race with extent map merging (Boris Burkov) - btrfs: fix the delalloc range locking if sector size < page size (Qu Wenruo) - btrfs: qgroup: set a more sane default value for subtree drop threshold (Qu Wenruo) - btrfs: clear force-compress on remount when compress mount option is given (Filipe Manana) - btrfs: zoned: fix zone unusable accounting for freed reserved extent (Naohiro Aota) - jfs: Fix sanity check in dbMount (Dave Kleikamp) - bcachefs: Set bch_inode_unpacked.bi_snapshot in old inode path (Kent Overstreet) - bcachefs: Mark more errors as AUTOFIX (Kent Overstreet) - bcachefs: Workaround for kvmalloc() not supporting > INT_MAX allocations (Kent Overstreet) - bcachefs: Don't use wait_event_interruptible() in recovery (Kent Overstreet) - bcachefs: Fix __bch2_fsck_err() warning (Kent Overstreet) - bcachefs: fsck: Improve hash_check_key() (Kent Overstreet) - bcachefs: bch2_hash_set_or_get_in_snapshot() (Kent Overstreet) - bcachefs: Repair mismatches in inode hash seed, type (Kent Overstreet) - bcachefs: Add hash seed, type to inode_to_text() (Kent Overstreet) - bcachefs: INODE_STR_HASH() for bch_inode_unpacked (Kent Overstreet) - bcachefs: Run in-kernel offline fsck without ratelimit errors (Kent Overstreet) - bcachefs: skip mount option handle for empty string. (Hongbo Li) - bcachefs: fix incorrect show_options results (Hongbo Li) - bcachefs: Fix data corruption on -ENOSPC in buffered write path (Kent Overstreet) - bcachefs: bch2_folio_reservation_get_partial() is now better behaved (Kent Overstreet) - bcachefs: fix disk reservation accounting in bch2_folio_reservation_get() (Kent Overstreet) - bcachefS: ec: fix data type on stripe deletion (Kent Overstreet) - bcachefs: Don't use commit_do() unnecessarily (Kent Overstreet) - bcachefs: handle restarts in bch2_bucket_io_time_reset() (Kent Overstreet) - bcachefs: fix restart handling in __bch2_resume_logged_op_finsert() (Kent Overstreet) - bcachefs: fix restart handling in bch2_alloc_write_key() (Kent Overstreet) - bcachefs: fix restart handling in bch2_do_invalidates_work() (Kent Overstreet) - bcachefs: fix missing restart handling in bch2_read_retry_nodecode() (Kent Overstreet) - bcachefs: fix restart handling in bch2_fiemap() (Kent Overstreet) - bcachefs: fix bch2_hash_delete() error path (Kent Overstreet) - bcachefs: fix restart handling in bch2_rename2() (Kent Overstreet) - Revert "9p: Enable multipage folios" (Dominique Martinet) - Trim Changelog for 6.12 (Justin M. Forbes) - Enable CONFIG_SECURITY_IPE for Fedora (Zbigniew Jędrzejewski-Szmek) - redhat: allow to override VERSION_ON_UPSTREAM from command line (Jan Stancek) - redhat: configs: Enable CONFIG_SECURITY_TOMOYO in Fedora kernels (Tetsuo Handa) * Wed Oct 23 2024 Jan Stancek [6.11.0-26.el10] - redhat: drop ARK changelog (Jan Stancek) [RHEL-56700] - redhat: regenerate test-data (Jan Stancek) [RHEL-56700] - redhat: rpminspect.yaml: more tests to ignore in selftests (Jan Stancek) [RHEL-56700] - redhat/Makefile.variables: don't set DISTRO (Jan Stancek) [RHEL-56700] - redhat/Makefile.variables: set PATCHLIST_URL to none (Jan Stancek) [RHEL-56700] - redhat: gitlab-ci: add initial version (Jan Stancek) [RHEL-56700] - redhat: update rpminspect with c9s one (Jan Stancek) [RHEL-56700] - redhat: remove fedora configs and files (Jan Stancek) [RHEL-56700] - redhat: init RHEL10.0 beta variables and dist tag (Jan Stancek) [RHEL-56700] - redhat: set release version (Jan Stancek) [RHEL-56700] - redhat: fix CONFIG_PREEMPT config (Jan Stancek) [RHEL-56700] - KVM: selftests: Fix build on on non-x86 architectures (Mark Brown) - 9p: fix slab cache name creation for real (Linus Torvalds) - KVM: arm64: Ensure vgic_ready() is ordered against MMIO registration (Oliver Upton) - KVM: arm64: vgic: Don't check for vgic_ready() when setting NR_IRQS (Oliver Upton) - KVM: arm64: Fix shift-out-of-bounds bug (Ilkka Koskinen) - KVM: arm64: Shave a few bytes from the EL2 idmap code (Marc Zyngier) - KVM: arm64: Don't eagerly teardown the vgic on init error (Marc Zyngier) - KVM: arm64: Expose S1PIE to guests (Mark Brown) - KVM: arm64: nv: Clarify safety of allowing TLBI unmaps to reschedule (Oliver Upton) - KVM: arm64: nv: Punt stage-2 recycling to a vCPU request (Oliver Upton) - KVM: arm64: nv: Do not block when unmapping stage-2 if disallowed (Oliver Upton) - KVM: arm64: nv: Keep reference on stage-2 MMU when scheduled out (Oliver Upton) - KVM: arm64: Unregister redistributor for failed vCPU creation (Oliver Upton) - KVM: selftests: aarch64: Add writable test for ID_AA64PFR1_EL1 (Shaoqin Huang) - KVM: arm64: Allow userspace to change ID_AA64PFR1_EL1 (Shaoqin Huang) - KVM: arm64: Use kvm_has_feat() to check if FEAT_SSBS is advertised to the guest (Shaoqin Huang) - KVM: arm64: Disable fields that KVM doesn't know how to handle in ID_AA64PFR1_EL1 (Shaoqin Huang) - KVM: arm64: Make the exposed feature bits in AA64DFR0_EL1 writable from userspace (Shameer Kolothum) - RISCV: KVM: use raw_spinlock for critical section in imsic (Cyan Yang) - KVM: selftests: Fix out-of-bounds reads in CPUID test's array lookups (Sean Christopherson) - KVM: selftests: x86: Avoid using SSE/AVX instructions (Vitaly Kuznetsov) - KVM: nSVM: Ignore nCR3[4:0] when loading PDPTEs from memory (Sean Christopherson) - KVM: VMX: reset the segment cache after segment init in vmx_vcpu_reset() (Maxim Levitsky) - KVM: x86: Clean up documentation for KVM_X86_QUIRK_SLOT_ZAP_ALL (Sean Christopherson) - KVM: x86/mmu: Add lockdep assert to enforce safe usage of kvm_unmap_gfn_range() (Sean Christopherson) - KVM: x86/mmu: Zap only SPs that shadow gPTEs when deleting memslot (Sean Christopherson) - x86/kvm: Override default caching mode for SEV-SNP and TDX (Kirill A. Shutemov) - KVM: Remove unused kvm_vcpu_gfn_to_pfn_atomic (Dr. David Alan Gilbert) - KVM: Remove unused kvm_vcpu_gfn_to_pfn (Dr. David Alan Gilbert) - uprobe: avoid out-of-bounds memory access of fetching args (Qiao Ma) - proc: Fix W=1 build kernel-doc warning (Thorsten Blum) - afs: Fix lock recursion (David Howells) - fs: Fix uninitialized value issue in from_kuid and from_kgid (Alessandro Zanni) - fs: don't try and remove empty rbtree node (Christian Brauner) - netfs: Downgrade i_rwsem for a buffered write (David Howells) - nilfs2: fix kernel bug due to missing clearing of buffer delay flag (Ryusuke Konishi) - openat2: explicitly return -E2BIG for (usize > PAGE_SIZE) (Aleksa Sarai) - netfs: fix documentation build error (Jonathan Corbet) - netfs: In readahead, put the folio refs as soon extracted (David Howells) - crypto: lib/mpi - Fix an "Uninitialized scalar variable" issue (Qianqiang Liu) - Revert "Merge branch 'enablement/gpio-expander' into 'os-build'" (Justin M. Forbes) - v6.12-rc2-rt4 (Sebastian Andrzej Siewior) - sched: Replace PREEMPT_AUTO with LAZY_PREEMPT. (Sebastian Andrzej Siewior) - softirq: Clean white space. (Sebastian Andrzej Siewior) - mm: percpu: Increase PERCPU_DYNAMIC_SIZE_SHIFT on certain builds. (Sebastian Andrzej Siewior) - ARM: vfp: Rename the locking functions. (Sebastian Andrzej Siewior) - v6.12-rc2-rt3 (Sebastian Andrzej Siewior) - v6.12-rc1-rt2 (Sebastian Andrzej Siewior) - Revert "time: Allow to preempt after a callback." + dependencies. (Sebastian Andrzej Siewior) - Revert "sched/rt: Don't try push tasks if there are none." (Sebastian Andrzej Siewior) - Add localversion for -RT release (Thomas Gleixner) - sysfs: Add /sys/kernel/realtime entry (Clark Williams) - riscv: add PREEMPT_AUTO support (Jisheng Zhang) - POWERPC: Allow to enable RT (Sebastian Andrzej Siewior) - powerpc/stackprotector: work around stack-guard init from atomic (Sebastian Andrzej Siewior) - powerpc/kvm: Disable in-kernel MPIC emulation for PREEMPT_RT (Bogdan Purcareata) - powerpc/pseries: Select the generic memory allocator. (Sebastian Andrzej Siewior) - powerpc/pseries/iommu: Use a locallock instead local_irq_save() (Sebastian Andrzej Siewior) - powerpc: traps: Use PREEMPT_RT (Sebastian Andrzej Siewior) - ARM: Allow to enable RT (Sebastian Andrzej Siewior) - ARM: vfp: Move sending signals outside of vfp_lock()ed section. (Sebastian Andrzej Siewior) - ARM: vfp: Use vfp_lock() in vfp_support_entry(). (Sebastian Andrzej Siewior) - ARM: vfp: Use vfp_lock() in vfp_sync_hwstate(). (Sebastian Andrzej Siewior) - ARM: vfp: Provide vfp_lock() for VFP locking. (Sebastian Andrzej Siewior) - arm: Disable FAST_GUP on PREEMPT_RT if HIGHPTE is also enabled. (Sebastian Andrzej Siewior) - ARM: enable irq in translation/section permission fault handlers (Yadi.hu) - arm: Disable jump-label on PREEMPT_RT. (Thomas Gleixner) - sched: define TIF_ALLOW_RESCHED (Thomas Gleixner) - Revert "drm/i915: Depend on !PREEMPT_RT." (Sebastian Andrzej Siewior) - drm/i915/guc: Consider also RCU depth in busy loop. (Sebastian Andrzej Siewior) - drm/i915: Drop the irqs_disabled() check (Sebastian Andrzej Siewior) - drm/i915/gt: Use spin_lock_irq() instead of local_irq_disable() + spin_lock() (Sebastian Andrzej Siewior) - drm/i915: Disable tracing points on PREEMPT_RT (Sebastian Andrzej Siewior) - drm/i915: Don't check for atomic context on PREEMPT_RT (Sebastian Andrzej Siewior) - drm/i915: Don't disable interrupts on PREEMPT_RT during atomic updates (Mike Galbraith) - drm/i915: Use preempt_disable/enable_rt() where recommended (Mike Galbraith) - time: Allow to preempt after a callback. (Sebastian Andrzej Siewior) - softirq: Add function to preempt serving softirqs. (Sebastian Andrzej Siewior) - sched/core: Provide a method to check if a task is PI-boosted. (Sebastian Andrzej Siewior) - softirq: Wake ktimers thread also in softirq. (Junxiao Chang) - tick: Fix timer storm since introduction of timersd (Frederic Weisbecker) - rcutorture: Also force sched priority to timersd on boosting test. (Frederic Weisbecker) - softirq: Use a dedicated thread for timer wakeups. (Sebastian Andrzej Siewior) - locking/rt: Annotate unlock followed by lock for sparse. (Sebastian Andrzej Siewior) - locking/rt: Add sparse annotation for RCU. (Sebastian Andrzej Siewior) - locking/rt: Remove one __cond_lock() in RT's spin_trylock_irqsave() (Sebastian Andrzej Siewior) - locking/rt: Add sparse annotation PREEMPT_RT's sleeping locks. (Sebastian Andrzej Siewior) - sched/rt: Don't try push tasks if there are none. (Sebastian Andrzej Siewior) - serial: 8250: Revert "drop lockdep annotation from serial8250_clear_IER()" (John Ogness) - serial: 8250: Switch to nbcon console (John Ogness) - Linux v6.12-rc4 ### # The following Emacs magic makes C-c C-e use UTC dates. # Local Variables: # rpm-change-log-uses-utc: t # End: ###