From c0cf917d24c549b9219562881bfeff9f19860b7b Mon Sep 17 00:00:00 2001 From: eabdullin Date: Thu, 14 Aug 2025 09:04:49 +0000 Subject: [PATCH] import OL kexec-tools-2.0.29-5.0.4.el9_6.2 --- .gitignore | 1 - .kexec-tools.metadata | 1 - SOURCES/60-fadump.install | 0 SOURCES/60-kdump.install | 0 SOURCES/92-crashkernel.install | 0 SOURCES/dracut-fadump-module-setup.sh | 0 SOURCES/kdump-dep-generator.sh | 0 SOURCES/kdump-restart.sh | 0 SOURCES/kdump-udev-throttler | 0 SOURCES/kdumpctl | 0 ...k-mem-usage-option-unsupported-for-a.patch | 31 ++ ...bug30822387.kdumpctl-arm64-fast-boot.patch | 36 ++ ...p.sysconfig.iommu_off.x86_64.aarch64.patch | 27 ++ ...abug30928441.kdumpctl.no_timer_check.patch | 17 + ...32127375-kdump.sysconfig.no.double.s.patch | 14 + ...emove-s-from-kdump.sysconfig.aarch64.patch | 27 ++ ...22070-kdump-skip-lvm-private-devices.patch | 41 ++ ...ug34663083-Update-UEK-reserved-sizes.patch | 42 ++ ...-xen_netfront-in-dracut-module-setup.patch | 35 ++ ...595-crash-hotplug-for-98-kexec-rules.patch | 44 ++ ...abug35982140.kdumpctl-check-for-fips.patch | 24 ++ ...vide-a-memfd_create-wrapper-if-not-p.patch | 61 +++ ...Hook-up-the-ZBOOT-support-as-vmlinuz.patch | 61 +++ ...-ZBOOT-PE-containing-compressed-imag.patch | 29 ++ ...ot-Add-arch-independent-zboot-suppor.patch | 41 ++ ...roduce-a-member-kernel_fd-in-kexec_i.patch | 56 +++ ...c-arm64-Simplify-the-code-for-zImage.patch | 376 ++++++++++++++++++ ...ble-transparent_hugepage-for-aarch64.patch | 21 + SPECS/kexec-tools.spec | 84 +++- 29 files changed, 1065 insertions(+), 4 deletions(-) mode change 100755 => 100644 SOURCES/60-fadump.install mode change 100755 => 100644 SOURCES/60-kdump.install mode change 100755 => 100644 SOURCES/92-crashkernel.install mode change 100644 => 100755 SOURCES/dracut-fadump-module-setup.sh mode change 100644 => 100755 SOURCES/kdump-dep-generator.sh mode change 100644 => 100755 SOURCES/kdump-restart.sh mode change 100755 => 100644 SOURCES/kdump-udev-throttler mode change 100755 => 100644 SOURCES/kdumpctl create mode 100644 SOURCES/orabug30352094-makedumpfile-Mark-mem-usage-option-unsupported-for-a.patch create mode 100644 SOURCES/orabug30822387.kdumpctl-arm64-fast-boot.patch create mode 100644 SOURCES/orabug30832988.kdump.sysconfig.iommu_off.x86_64.aarch64.patch create mode 100644 SOURCES/orabug30928441.kdumpctl.no_timer_check.patch create mode 100644 SOURCES/orabug32127375-kdump.sysconfig.no.double.s.patch create mode 100644 SOURCES/orabug3280449-Remove-s-from-kdump.sysconfig.aarch64.patch create mode 100644 SOURCES/orabug33822070-kdump-skip-lvm-private-devices.patch create mode 100644 SOURCES/orabug34663083-Update-UEK-reserved-sizes.patch create mode 100644 SOURCES/orabug35615400-handle-xen_netfront-in-dracut-module-setup.patch create mode 100644 SOURCES/orabug35801595-crash-hotplug-for-98-kexec-rules.patch create mode 100644 SOURCES/orabug35982140.kdumpctl-check-for-fips.patch create mode 100644 SOURCES/orabug36567412-0001-Revert-kexec-provide-a-memfd_create-wrapper-if-not-p.patch create mode 100644 SOURCES/orabug36567412-0002-Revert-arm64-Hook-up-the-ZBOOT-support-as-vmlinuz.patch create mode 100644 SOURCES/orabug36567412-0003-Revert-arm64-Add-ZBOOT-PE-containing-compressed-imag.patch create mode 100644 SOURCES/orabug36567412-0004-Revert-kexec-zboot-Add-arch-independent-zboot-suppor.patch create mode 100644 SOURCES/orabug36567412-0005-Revert-kexec-Introduce-a-member-kernel_fd-in-kexec_i.patch create mode 100644 SOURCES/orabug36567412-0006-Revert-kexec-arm64-Simplify-the-code-for-zImage.patch create mode 100644 SOURCES/orabug37858059.kdump.sysconfig.disable-transparent_hugepage-for-aarch64.patch diff --git a/.gitignore b/.gitignore index 035552c..3073633 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ SOURCES/eppic-e8844d3.tar.gz SOURCES/kexec-tools-2.0.29.tar.xz -SOURCES/makedumpfile-1.7.6.tar.gz SOURCES/makedumpfile-1.7.7.tar.gz diff --git a/.kexec-tools.metadata b/.kexec-tools.metadata index 29b5cb8..40502e2 100644 --- a/.kexec-tools.metadata +++ b/.kexec-tools.metadata @@ -1,4 +1,3 @@ 80ac3f5e77d3c79883edadf14428734db4720009 SOURCES/eppic-e8844d3.tar.gz b05e53b8f63ca039a06b0f8cb8a175b0f447449e SOURCES/kexec-tools-2.0.29.tar.xz -0182de2145780593639b4e0b4a573af0595b8988 SOURCES/makedumpfile-1.7.6.tar.gz 6484d9a1db114d8af56958987106d569976bc8d0 SOURCES/makedumpfile-1.7.7.tar.gz diff --git a/SOURCES/60-fadump.install b/SOURCES/60-fadump.install old mode 100755 new mode 100644 diff --git a/SOURCES/60-kdump.install b/SOURCES/60-kdump.install old mode 100755 new mode 100644 diff --git a/SOURCES/92-crashkernel.install b/SOURCES/92-crashkernel.install old mode 100755 new mode 100644 diff --git a/SOURCES/dracut-fadump-module-setup.sh b/SOURCES/dracut-fadump-module-setup.sh old mode 100644 new mode 100755 diff --git a/SOURCES/kdump-dep-generator.sh b/SOURCES/kdump-dep-generator.sh old mode 100644 new mode 100755 diff --git a/SOURCES/kdump-restart.sh b/SOURCES/kdump-restart.sh old mode 100644 new mode 100755 diff --git a/SOURCES/kdump-udev-throttler b/SOURCES/kdump-udev-throttler old mode 100755 new mode 100644 diff --git a/SOURCES/kdumpctl b/SOURCES/kdumpctl old mode 100755 new mode 100644 diff --git a/SOURCES/orabug30352094-makedumpfile-Mark-mem-usage-option-unsupported-for-a.patch b/SOURCES/orabug30352094-makedumpfile-Mark-mem-usage-option-unsupported-for-a.patch new file mode 100644 index 0000000..beacd54 --- /dev/null +++ b/SOURCES/orabug30352094-makedumpfile-Mark-mem-usage-option-unsupported-for-a.patch @@ -0,0 +1,31 @@ +From a3c4ba0bb64cb66740d7026befceaa9b72680841 Mon Sep 17 00:00:00 2001 +From: Darren Archibald +Date: Mon, 17 Feb 2025 06:51:35 -0800 +Subject: [PATCH] + orabug30352094-makedumpfile-Mark-mem-usage-option-unsupported-for-a + +Orabug: 30352094 +Signed-off-by: Darren Archibald +--- + makedumpfile-1.7.6/makedumpfile.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/makedumpfile-1.7.7/makedumpfile.c b/makedumpfile-1.7.7/makedumpfile.c +index b356eb3..1b556c2 100644 +--- a/makedumpfile-1.7.7/makedumpfile.c ++++ b/makedumpfile-1.7.7/makedumpfile.c +@@ -12416,6 +12416,11 @@ main(int argc, char *argv[]) + MSG("\n"); + MSG("The dmesg log is saved to %s.\n", info->name_dumpfile); + } else if (info->flag_mem_usage) { ++#ifdef __aarch64__ ++ MSG("mem-usage not supported for arm64 architecure.\n"); ++ goto out; ++#endif ++ + if (!check_param_for_creating_dumpfile(argc, argv)) { + MSG("Commandline parameter is invalid.\n"); + MSG("Try `makedumpfile --help' for more information.\n"); +-- +2.31.1 + diff --git a/SOURCES/orabug30822387.kdumpctl-arm64-fast-boot.patch b/SOURCES/orabug30822387.kdumpctl-arm64-fast-boot.patch new file mode 100644 index 0000000..a03f055 --- /dev/null +++ b/SOURCES/orabug30822387.kdumpctl-arm64-fast-boot.patch @@ -0,0 +1,36 @@ +This patch is an adaptation of OL7 similar patch for aarch64 + +arm64: skip memory integrity checks in purgatory + +This takes place with caches disabled and can be very slow on arm64. + +Signed-off-by: Dave Kleikamp + +Patch migrated from ol8 to ol9 without any modification +Signed-off-by: Darren Archibald +--- +diff -Naur kdumpctl.old kdumpctl +--- kdumpctl.old 2024-03-05 05:45:09.999878679 -0800 ++++ kdumpctl 2024-03-05 05:46:51.996790278 -0800 +@@ -20,6 +20,7 @@ + #kdump shall be the default dump mode + DEFAULT_DUMP_MODE="kdump" + image_time=0 ++ARCH=$(uname -m) + + standard_kexec_args="-d -p" + +@@ -644,6 +645,12 @@ + KEXEC_ARGS=$(prepare_kexec_args "${KEXEC_ARGS}") + KDUMP_COMMANDLINE=$(prepare_cmdline "${KDUMP_COMMANDLINE}" "${KDUMP_COMMANDLINE_REMOVE}" "${KDUMP_COMMANDLINE_APPEND}") + ++ # arm64: skip memory integrity checks in purgatory ++ if [ "$ARCH" == "aarch64" ] ++ then ++ KEXEC_ARGS="$KEXEC_ARGS --no-checks" ++ fi ++ + if is_uki "$KDUMP_KERNEL"; then + uki=$KDUMP_KERNEL + KDUMP_KERNEL=$KDUMP_TMPDIR/vmlinuz + diff --git a/SOURCES/orabug30832988.kdump.sysconfig.iommu_off.x86_64.aarch64.patch b/SOURCES/orabug30832988.kdump.sysconfig.iommu_off.x86_64.aarch64.patch new file mode 100644 index 0000000..b9a9b30 --- /dev/null +++ b/SOURCES/orabug30832988.kdump.sysconfig.iommu_off.x86_64.aarch64.patch @@ -0,0 +1,27 @@ +Patch migrated from ol8 to ol9 without any modification +Signed-off-by: Darren Archibald +------ +--- kdump.sysconfig.aarch64.old 2020-02-06 04:55:47.000000000 -0800 ++++ kdump.sysconfig.aarch64 2020-02-06 05:06:18.044773574 -0800 +@@ -21,7 +21,7 @@ + + # This variable lets us append arguments to the current kdump commandline + # after processed by KDUMP_COMMANDLINE_REMOVE +-KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory udev.children-max=2 panic=10 swiotlb=noforce novmcoredd cma=0 hugetlb_cma=0" ++KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory udev.children-max=2 panic=10 swiotlb=noforce novmcoredd cma=0 hugetlb_cma=0 iommu=off" + + # Any additional kexec arguments required. In most situations, this should + # be left empty +--- kdump.sysconfig.x86_64.old 2024-10-24 01:38:12.367419533 -0700 ++++ kdump.sysconfig.x86_64 2024-10-24 01:46:55.858297286 -0700 +@@ -21,8 +21,7 @@ + + # This variable lets us append arguments to the current kdump commandline + # after processed by KDUMP_COMMANDLINE_REMOVE +-KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory mce=off numa=off udev.children-max=2 panic=10 acpi_no_memhotplug transparent_hugepage=never nokaslr hest_disable novmcoredd cma=0 hugetlb_cma=0 pcie_ports=compat" +- ++KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory mce=off numa=off udev.children-max=2 panic=10 acpi_no_memhotplug transparent_hugepage=never nokaslr hest_disable novmcoredd cma=0 hugetlb_cma=0 iommu=off" + # Any additional kexec arguments required. In most situations, this should + # be left empty + # + diff --git a/SOURCES/orabug30928441.kdumpctl.no_timer_check.patch b/SOURCES/orabug30928441.kdumpctl.no_timer_check.patch new file mode 100644 index 0000000..d3ea6e7 --- /dev/null +++ b/SOURCES/orabug30928441.kdumpctl.no_timer_check.patch @@ -0,0 +1,17 @@ +Patch migrated from ol8 to ol9 without any modification +Signed-off-by: Darren Archibald +---- +--- kdumpctl.old 2020-11-05 01:39:56.000000000 -0800 ++++ kdumpctl 2020-11-05 01:41:30.240246343 -0800 +@@ -33,6 +33,11 @@ + . /etc/sysconfig/kdump + fi + ++# append no_timer_check for xen guest kdump ++if [ "$ARCH" == "x86_64" ] && $(virt-what |grep -qE "^xen$|^xen-domU$|^xen-hvm$"); then ++ KDUMP_COMMANDLINE_APPEND="${KDUMP_COMMANDLINE_APPEND} no_timer_check" ++fi ++ + single_instance_lock() + { + local rc timeout=5 diff --git a/SOURCES/orabug32127375-kdump.sysconfig.no.double.s.patch b/SOURCES/orabug32127375-kdump.sysconfig.no.double.s.patch new file mode 100644 index 0000000..3ed6de4 --- /dev/null +++ b/SOURCES/orabug32127375-kdump.sysconfig.no.double.s.patch @@ -0,0 +1,14 @@ +Patch migrated from ol8 to ol9 without any modification +Signed-off-by: Darren Archibald +------ +--- kdump.sysconfig.x86_64.old 2020-11-08 03:49:42.000000000 -0800 ++++ kdump.sysconfig.x86_64 2020-11-08 03:50:07.094669060 -0800 +@@ -28,7 +28,7 @@ + # + # Example: + # KEXEC_ARGS="--elf32-core-headers" +-KEXEC_ARGS="-s" ++KEXEC_ARGS="" + + #Where to find the boot image + #KDUMP_BOOTDIR="/boot" diff --git a/SOURCES/orabug3280449-Remove-s-from-kdump.sysconfig.aarch64.patch b/SOURCES/orabug3280449-Remove-s-from-kdump.sysconfig.aarch64.patch new file mode 100644 index 0000000..54d6018 --- /dev/null +++ b/SOURCES/orabug3280449-Remove-s-from-kdump.sysconfig.aarch64.patch @@ -0,0 +1,27 @@ +From 66a0b1dfe597f219a83ca30ee4c916cb5a6b2ae7 Mon Sep 17 00:00:00 2001 +From: John Donnelly +Date: Fri, 30 Apr 2021 15:08:32 -0700 +Subject: [PATCH {kexec-tools } ] Remove -s from kdump.sysconfig.aarch64, + Orabug 32804496 + +Signed-off-by: John Donnelly +--- + kdump.sysconfig.aarch64 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kdump.sysconfig.aarch64 b/kdump.sysconfig.aarch64 +index 2ab2893..6f7830a 100644 +--- kdump.sysconfig.aarch64.old ++++ kdump.sysconfig.aarch64 +@@ -28,7 +28,7 @@ KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory + # + # Example: + # KEXEC_ARGS="--elf32-core-headers" +-KEXEC_ARGS="-s" ++KEXEC_ARGS="" + + #Where to find the boot image + #KDUMP_BOOTDIR="/boot" +-- +2.27.0 + diff --git a/SOURCES/orabug33822070-kdump-skip-lvm-private-devices.patch b/SOURCES/orabug33822070-kdump-skip-lvm-private-devices.patch new file mode 100644 index 0000000..a1fce00 --- /dev/null +++ b/SOURCES/orabug33822070-kdump-skip-lvm-private-devices.patch @@ -0,0 +1,41 @@ +kdump: Skip LVM private devices + +Orabug: 33822070 +Orabug: 33574003 + +As per the commit 20e1c3dc0339 ("libblkid: ignore private LVM devices") in +util-linux, the virtual private LVM devices do not contain any blkid relevant data +and it does not make any sense to scan for superblocks or partitions +on the devices. + +The blkid command is expected to fail if it is run on these LVM devices. This +change skips the scanning of LVM private metadata devices when scanning for +underlying crypt devices. + +Signed-off-by: Somasundaram Krishnasamy +Signed-off-by: John Donnelly + + kdump-lib.sh | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/kdump-lib.sh 2022-10-10 15:26:42.287897779 -0400 ++++ b/kdump-lib.sh 2022-10-10 15:27:51.158973691 -0400 +@@ -919,6 +919,13 @@ get_luks_crypt_dev() + + [[ -b /dev/block/$1 ]] || return 1 + ++ # blkid will fail if it is run on a LVM private. Make sure blkid succeeds before proceeding. ++ blkid -u filesystem,crypto -o export -- /dev/block/$1 > /dev/null ++ if [ $? -ne 0 ] ++ then ++ return 1 ++ fi ++ + _type=$(blkid -u filesystem,crypto -o export -- "/dev/block/$1" | \ + sed -n -E "s/^TYPE=(.*)$/\1/p") + [[ $_type == "crypto_LUKS" ]] && echo "$1" + +-- +2.31.1 + + diff --git a/SOURCES/orabug34663083-Update-UEK-reserved-sizes.patch b/SOURCES/orabug34663083-Update-UEK-reserved-sizes.patch new file mode 100644 index 0000000..92c2610 --- /dev/null +++ b/SOURCES/orabug34663083-Update-UEK-reserved-sizes.patch @@ -0,0 +1,42 @@ +From c651074582102840d36afab6184369b4539c8f0b Mon Sep 17 00:00:00 2001 +From: Darren Archibald +Date: Tue, 5 Mar 2024 07:33:47 -0800 +Subject: [PATCH] Update UEK reserved sizes + +Orabug: 34240246 +Orabug: 34391412 +Orabug: 34663083 + +Set the proper default reservations we need for UEK for both x86_64 and aarch64. + +Signed-off-by: John Donnelly +Signed-off-by: Brian Maly +Signed-off-by: Darren Archibald +--- + kdump-lib.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/kdump-lib.sh b/kdump-lib.sh +index 1890bb7..765b9bd 100755 +--- a/kdump-lib.sh ++++ b/kdump-lib.sh +@@ -1152,13 +1152,13 @@ kdump_get_arch_recommend_crashkernel() + _arch=$(uname -m) + + if [[ $_arch == "x86_64" ]] || [[ $_arch == "s390x" ]]; then +- _ck_cmdline="1G-4G:192M,4G-64G:256M,64G-:512M" ++ _ck_cmdline="1G-64G:448M,64G-:512M" + is_sme_or_sev_active && ((_delta += 64)) + elif [[ $_arch == "aarch64" ]]; then + local _running_kernel + + # Base line for 4K variant kernel. The formula is based on x86 plus extra = 64M +- _ck_cmdline="1G-4G:256M,4G-64G:320M,64G-:576M" ++ _ck_cmdline="2G-8G:256M,8G-:1G" + if [[ -z "$2" ]]; then + _running_kernel=$(_get_kdump_kernel_version) + else +-- +2.31.1 + + diff --git a/SOURCES/orabug35615400-handle-xen_netfront-in-dracut-module-setup.patch b/SOURCES/orabug35615400-handle-xen_netfront-in-dracut-module-setup.patch new file mode 100644 index 0000000..8e20efb --- /dev/null +++ b/SOURCES/orabug35615400-handle-xen_netfront-in-dracut-module-setup.patch @@ -0,0 +1,35 @@ +From 145a0700a663df7c418bd5a7ba93a7ed484898f7 Mon Sep 17 00:00:00 2001 +From: Brian Maly +Date: Mon, 2 Oct 2023 17:54:29 -0400 +Subject: [PATCH] handle xen_netfront in dracut module setup + +Ethtool doest return the proper name of the Xen virtual network driver, +so instead use the correct module name for kdump_install_nic_driver(). +Withtout this fix vmcore dump over NFS will fail because the xen_netback +module will not be included in the kdump initrd leaving us with no +fuctional networking in the kdump environment. + +Orabug: 35615400 + +Signed-off-by: Brian Maly +--- + dracut-module-setup.sh | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh +index b74447f..ff14ce1 100755 +--- a/dracut-module-setup.sh ++++ b/dracut-module-setup.sh +@@ -415,6 +415,9 @@ kdump_install_nic_driver() { + # https://learn.microsoft.com/en-us/azure/virtual-network/accelerated-networking-overview + # Install the driver of physical NIC as well + _drivers+=("$(_get_hpyerv_physical_driver "$_netif")") ++ elif [[ $_driver == "vif" ]]; then ++ # ethtool doest return the proper name the Xen virtual network driver ++ _driver=xen_netfront + fi + + _drivers+=("$_driver") +-- +2.27.0 + diff --git a/SOURCES/orabug35801595-crash-hotplug-for-98-kexec-rules.patch b/SOURCES/orabug35801595-crash-hotplug-for-98-kexec-rules.patch new file mode 100644 index 0000000..d9256dc --- /dev/null +++ b/SOURCES/orabug35801595-crash-hotplug-for-98-kexec-rules.patch @@ -0,0 +1,44 @@ +Install crash hotplug rules into 98-kexec rules + +The Linux kernel series "crash: Kernel handling of CPU and memory hot +un/plug" recently landed in mainline. To take advantage of the +performance benefits of that series, 98-kexec.rules needs an update to +optimize the handling of CPU and memory hotplug changes. + +It is safe to deploy these rule updates now, ahead of distros/kernels +enabling the feature, since the crash_hotplug sysfs nodes would not be +present and thus the newly introduced rules in 98-kexec would act as a +nop-op and fall thru for legacy behavior. But when distros/kernels +enable the feature, then 98-kexec rules is ready and can properly take +advantage. + +Link: https://lore.kernel.org/lkml/20230814214446.6659-1-eric.devolder@oracle.co +m/ +Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d68b4b6f307d155475cce541f2aee938032ed22e +Orabug: 35801595 +Signed-off-by: Eric DeVolder + +diff --git a/98-kexec.rules b/98-kexec.rules +index b73b701..52b2ee8 100644 +--- a/98-kexec.rules ++++ b/98-kexec.rules +@@ -1,3 +1,7 @@ ++# The kernel updates the crash elfcorehdr for CPU and memory changes ++SUBSYSTEM=="cpu", ATTRS{crash_hotplug}=="1", GOTO="kdump_reload_end" ++SUBSYSTEM=="memory", ATTRS{crash_hotplug}=="1", GOTO="kdump_reload_end" ++ + SUBSYSTEM=="cpu", ACTION=="add", GOTO="kdump_reload" + SUBSYSTEM=="cpu", ACTION=="remove", GOTO="kdump_reload" + SUBSYSTEM=="memory", ACTION=="online", GOTO="kdump_reload" +diff --git a/98-kexec.rules.ppc64 b/98-kexec.rules.ppc64 +index a1c00a9..94c8b5d 100644 +--- a/98-kexec.rules.ppc64 ++++ b/98-kexec.rules.ppc64 +@@ -1,3 +1,7 @@ ++# The kernel updates the crash elfcorehdr for CPU and memory changes ++SUBSYSTEM=="cpu", ATTRS{crash_hotplug}=="1", GOTO="kdump_reload_end" ++SUBSYSTEM=="memory", ATTRS{crash_hotplug}=="1", GOTO="kdump_reload_end" ++ + SUBSYSTEM=="cpu", ACTION=="online", GOTO="kdump_reload_cpu" + SUBSYSTEM=="memory", ACTION=="online", GOTO="kdump_reload_mem" + SUBSYSTEM=="memory", ACTION=="offline", GOTO="kdump_reload_mem" diff --git a/SOURCES/orabug35982140.kdumpctl-check-for-fips.patch b/SOURCES/orabug35982140.kdumpctl-check-for-fips.patch new file mode 100644 index 0000000..cfdc5b2 --- /dev/null +++ b/SOURCES/orabug35982140.kdumpctl-check-for-fips.patch @@ -0,0 +1,24 @@ +kdumpctl: check if FIPS is enabled + +Orabug: 35982140 + +Add a check for FIPS to check_files_modified() so that FIPS support is included +in the kdump image. Without this kdump fails with the following error: +"FATAL FIPS SELFTEST FAILURE" error + +Signed-off-by: Brian Maly + +--- kdumpctl.orig 2023-11-30 16:18:41.978477493 -0500 ++++ kdumpctl 2023-11-21 14:42:14.871165088 -0500 +@@ -394,6 +394,11 @@ check_files_modified() + done + fi + ++ # Check for FIPS ++ if fips-mode-setup --is-enabled 2> /dev/null; then ++ files="$files /etc/system-fips" ++ fi ++ + # HOOKS is mandatory and need to check the modification time + files="$files $HOOKS" + is_lvm2_thinp_dump_target && files="$files $LVM_CONF" diff --git a/SOURCES/orabug36567412-0001-Revert-kexec-provide-a-memfd_create-wrapper-if-not-p.patch b/SOURCES/orabug36567412-0001-Revert-kexec-provide-a-memfd_create-wrapper-if-not-p.patch new file mode 100644 index 0000000..a076e73 --- /dev/null +++ b/SOURCES/orabug36567412-0001-Revert-kexec-provide-a-memfd_create-wrapper-if-not-p.patch @@ -0,0 +1,61 @@ +From 30529000c33925cf19ceff3407d27682c0f2a5cc Mon Sep 17 00:00:00 2001 +From: Brian Maly +Date: Tue, 30 Apr 2024 13:13:45 -0400 +Subject: [PATCH 1/6] Revert "kexec: provide a memfd_create() wrapper if not + present in libc" + +This reverts commit 6419b008fde783fd0cc2cc266bd1c9cf35e99a0e. + +Orabug: 36567412 +Signed-off-by: Brian Maly +--- + configure.ac | 3 --- + kexec/kexec.c | 11 ----------- + 2 files changed, 14 deletions(-) + +diff --git a/configure.ac b/configure.ac +index e801588..656dd79 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -208,9 +208,6 @@ if test "$ac_cv_lib_xenctrl_xc_kexec_load" = yes ; then + AC_MSG_NOTICE([The kexec_status call is not available])) + fi + +-dnl Check if libc has the memfd_create() syscall wrapper +-AC_CHECK_FUNCS([memfd_create]) +- + dnl ---Sanity checks + if test "$CC" = "no"; then AC_MSG_ERROR([cc not found]); fi + if test "$CPP" = "no"; then AC_MSG_ERROR([cpp not found]); fi +diff --git a/kexec/kexec.c b/kexec/kexec.c +index 222f79e..c1785e5 100644 +--- a/kexec/kexec.c ++++ b/kexec/kexec.c +@@ -31,10 +31,6 @@ + #include + #include + #include +-#ifndef HAVE_MEMFD_CREATE +-#include +-#include +-#endif + #include + #include + #include +@@ -644,13 +640,6 @@ char *slurp_decompress_file(const char *filename, off_t *r_size) + return kernel_buf; + } + +-#ifndef HAVE_MEMFD_CREATE +-static int memfd_create(const char *name, unsigned int flags) +-{ +- return syscall(SYS_memfd_create, name, flags); +-} +-#endif +- + static int copybuf_memfd(const char *kernel_buf, size_t size) + { + int fd, count; +-- +2.27.0 + diff --git a/SOURCES/orabug36567412-0002-Revert-arm64-Hook-up-the-ZBOOT-support-as-vmlinuz.patch b/SOURCES/orabug36567412-0002-Revert-arm64-Hook-up-the-ZBOOT-support-as-vmlinuz.patch new file mode 100644 index 0000000..46d83a5 --- /dev/null +++ b/SOURCES/orabug36567412-0002-Revert-arm64-Hook-up-the-ZBOOT-support-as-vmlinuz.patch @@ -0,0 +1,61 @@ +From 59643e0d4e07bd44e952b103d9c2d18330bb6d63 Mon Sep 17 00:00:00 2001 +From: Brian Maly +Date: Tue, 30 Apr 2024 13:25:48 -0400 +Subject: [PATCH 2/6] Revert "arm64: Hook up the ZBOOT support as vmlinuz" + +This reverts commit f67c4146d7b52bfc95f0d21353f2112c6ab3570d. + +Orabug: 36567412 +Signed-off-by: Brian Maly +--- + kexec/arch/arm64/Makefile | 3 +-- + kexec/arch/arm64/kexec-arm64.c | 1 - + kexec/arch/arm64/kexec-arm64.h | 6 ------ + 3 files changed, 1 insertion(+), 9 deletions(-) + +diff --git a/kexec/arch/arm64/Makefile b/kexec/arch/arm64/Makefile +index 59212f1..9d9111c 100644 +--- a/kexec/arch/arm64/Makefile ++++ b/kexec/arch/arm64/Makefile +@@ -15,8 +15,7 @@ arm64_KEXEC_SRCS += \ + kexec/arch/arm64/kexec-arm64.c \ + kexec/arch/arm64/kexec-elf-arm64.c \ + kexec/arch/arm64/kexec-uImage-arm64.c \ +- kexec/arch/arm64/kexec-image-arm64.c \ +- kexec/arch/arm64/kexec-vmlinuz-arm64.c ++ kexec/arch/arm64/kexec-image-arm64.c + + arm64_UIMAGE = kexec/kexec-uImage.c + +diff --git a/kexec/arch/arm64/kexec-arm64.c b/kexec/arch/arm64/kexec-arm64.c +index 4a67b0d..a830ec7 100644 +--- a/kexec/arch/arm64/kexec-arm64.c ++++ b/kexec/arch/arm64/kexec-arm64.c +@@ -74,7 +74,6 @@ struct file_type file_type[] = { + {"vmlinux", elf_arm64_probe, elf_arm64_load, elf_arm64_usage}, + {"Image", image_arm64_probe, image_arm64_load, image_arm64_usage}, + {"uImage", uImage_arm64_probe, uImage_arm64_load, uImage_arm64_usage}, +- {"vmlinuz", pez_arm64_probe, pez_arm64_load, pez_arm64_usage}, + }; + + int file_types = sizeof(file_type) / sizeof(file_type[0]); +diff --git a/kexec/arch/arm64/kexec-arm64.h b/kexec/arch/arm64/kexec-arm64.h +index 95fb5c2..d29b1b3 100644 +--- a/kexec/arch/arm64/kexec-arm64.h ++++ b/kexec/arch/arm64/kexec-arm64.h +@@ -44,12 +44,6 @@ int uImage_arm64_load(int argc, char **argv, const char *buf, off_t len, + struct kexec_info *info); + void uImage_arm64_usage(void); + +-int pez_arm64_probe(const char *kernel_buf, off_t kernel_size); +-int pez_arm64_load(int argc, char **argv, const char *buf, off_t len, +- struct kexec_info *info); +-void pez_arm64_usage(void); +- +- + extern off_t initrd_base; + extern off_t initrd_size; + +-- +2.27.0 + diff --git a/SOURCES/orabug36567412-0003-Revert-arm64-Add-ZBOOT-PE-containing-compressed-imag.patch b/SOURCES/orabug36567412-0003-Revert-arm64-Add-ZBOOT-PE-containing-compressed-imag.patch new file mode 100644 index 0000000..fc936ce --- /dev/null +++ b/SOURCES/orabug36567412-0003-Revert-arm64-Add-ZBOOT-PE-containing-compressed-imag.patch @@ -0,0 +1,29 @@ +From 28c4b1c04b280bf7702ad44ccefc7010e490f3c1 Mon Sep 17 00:00:00 2001 +From: Brian Maly +Date: Tue, 30 Apr 2024 13:26:52 -0400 +Subject: [PATCH 3/6] Revert "arm64: Add ZBOOT PE containing compressed image + support" + +This reverts commit fc7b83bdf734a42b02f7343fe73655f896332d95. + +Orabug: 36567412 +Signed-off-by: Brian Maly +--- + kexec/arch/arm64/image-header.h | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/kexec/arch/arm64/image-header.h b/kexec/arch/arm64/image-header.h +index 26bb02f..158d411 100644 +--- a/kexec/arch/arm64/image-header.h ++++ b/kexec/arch/arm64/image-header.h +@@ -37,7 +37,6 @@ struct arm64_image_header { + + static const uint8_t arm64_image_magic[4] = {'A', 'R', 'M', 0x64U}; + static const uint8_t arm64_image_pe_sig[2] = {'M', 'Z'}; +-static const uint8_t arm64_pe_machtype[6] = {'P','E', 0x0, 0x0, 0x64, 0xAA}; + static const uint64_t arm64_image_flag_be = (1UL << 0); + static const uint64_t arm64_image_flag_page_size = (3UL << 1); + static const uint64_t arm64_image_flag_placement = (1UL << 3); +-- +2.27.0 + diff --git a/SOURCES/orabug36567412-0004-Revert-kexec-zboot-Add-arch-independent-zboot-suppor.patch b/SOURCES/orabug36567412-0004-Revert-kexec-zboot-Add-arch-independent-zboot-suppor.patch new file mode 100644 index 0000000..c3cc467 --- /dev/null +++ b/SOURCES/orabug36567412-0004-Revert-kexec-zboot-Add-arch-independent-zboot-suppor.patch @@ -0,0 +1,41 @@ +From 6ffad3cb2ae471a4d368f2f40a66cf10a7474eb8 Mon Sep 17 00:00:00 2001 +From: Brian Maly +Date: Tue, 30 Apr 2024 13:27:50 -0400 +Subject: [PATCH 4/6] Revert "kexec/zboot: Add arch independent zboot support" + +This reverts commit f41c4182b0c403ea93cf47dcdc96437f5d6c53da. + +Orabug: 36567412 +Signed-off-by: Brian Maly +--- + include/Makefile | 1 - + kexec/Makefile | 1 - + 2 files changed, 2 deletions(-) + +diff --git a/include/Makefile b/include/Makefile +index cd88a26..621ce9f 100644 +--- a/include/Makefile ++++ b/include/Makefile +@@ -1,7 +1,6 @@ + dist += include/Makefile \ + include/config.h \ + include/config.h.in \ +- include/kexec-pe-zboot.h \ + include/kexec-uImage.h \ + include/x86/x86-linux.h \ + include/x86/mb_info.h \ +diff --git a/kexec/Makefile b/kexec/Makefile +index 11682bf..8a52e8d 100644 +--- a/kexec/Makefile ++++ b/kexec/Makefile +@@ -17,7 +17,6 @@ KEXEC_SRCS_base += kexec/kexec-elf-exec.c + KEXEC_SRCS_base += kexec/kexec-elf-core.c + KEXEC_SRCS_base += kexec/kexec-elf-rel.c + KEXEC_SRCS_base += kexec/kexec-elf-boot.c +-KEXEC_SRCS_base += kexec/kexec-pe-zboot.c + KEXEC_SRCS_base += kexec/kexec-iomem.c + KEXEC_SRCS_base += kexec/firmware_memmap.c + KEXEC_SRCS_base += kexec/crashdump.c +-- +2.27.0 + diff --git a/SOURCES/orabug36567412-0005-Revert-kexec-Introduce-a-member-kernel_fd-in-kexec_i.patch b/SOURCES/orabug36567412-0005-Revert-kexec-Introduce-a-member-kernel_fd-in-kexec_i.patch new file mode 100644 index 0000000..0775ba0 --- /dev/null +++ b/SOURCES/orabug36567412-0005-Revert-kexec-Introduce-a-member-kernel_fd-in-kexec_i.patch @@ -0,0 +1,56 @@ +From 5d42da6b80dc4b54bbdbd6752edb8b6705077645 Mon Sep 17 00:00:00 2001 +From: Brian Maly +Date: Tue, 30 Apr 2024 13:28:05 -0400 +Subject: [PATCH 5/6] Revert "kexec: Introduce a member kernel_fd in + kexec_info" + +This reverts commit 1572b91da7c4512d111a340185914c34acb0a139. + +Orabug: 36567412 +Signed-off-by: Brian Maly +--- + kexec/kexec.c | 8 -------- + kexec/kexec.h | 1 - + 2 files changed, 9 deletions(-) + +diff --git a/kexec/kexec.c b/kexec/kexec.c +index c1785e5..76ee7f7 100644 +--- a/kexec/kexec.c ++++ b/kexec/kexec.c +@@ -1303,7 +1303,6 @@ static int do_kexec_file_load(int fileind, int argc, char **argv, + info.kexec_flags = flags; + + info.file_mode = 1; +- info.kernel_fd = -1; + info.initrd_fd = -1; + + if (!is_kexec_file_load_implemented()) +@@ -1349,13 +1348,6 @@ static int do_kexec_file_load(int fileind, int argc, char **argv, + return ret; + } + +- /* +- * image type specific load functioin detect the capsule kernel type +- * and create another fd for file load. For example the zboot kernel. +- */ +- if (info.kernel_fd != -1) +- kernel_fd = info.kernel_fd; +- + /* + * If there is no initramfs, set KEXEC_FILE_NO_INITRAMFS flag so that + * kernel does not return error with negative initrd_fd. +diff --git a/kexec/kexec.h b/kexec/kexec.h +index 1004aff..441503d 100644 +--- a/kexec/kexec.h ++++ b/kexec/kexec.h +@@ -164,7 +164,6 @@ struct kexec_info { + unsigned long file_mode :1; + + /* Filled by kernel image processing code */ +- int kernel_fd; + int initrd_fd; + char *command_line; + int command_line_len; +-- +2.27.0 + diff --git a/SOURCES/orabug36567412-0006-Revert-kexec-arm64-Simplify-the-code-for-zImage.patch b/SOURCES/orabug36567412-0006-Revert-kexec-arm64-Simplify-the-code-for-zImage.patch new file mode 100644 index 0000000..dcaad4c --- /dev/null +++ b/SOURCES/orabug36567412-0006-Revert-kexec-arm64-Simplify-the-code-for-zImage.patch @@ -0,0 +1,376 @@ +From 58974a045ef4d7ebfeaad4d297e8d25f46b1dc02 Mon Sep 17 00:00:00 2001 +From: Brian Maly +Date: Tue, 30 Apr 2024 13:28:16 -0400 +Subject: [PATCH 6/6] Revert "kexec/arm64: Simplify the code for zImage" + +This reverts commit 714fa11590febc9cf6fd3c6309374a040a05ebb0. + +Orabug: 36567412 +Signed-off-by: Brian Maly +--- + kexec/arch/arm64/Makefile | 3 +- + kexec/arch/arm64/kexec-arm64.c | 1 + + kexec/arch/arm64/kexec-arm64.h | 6 + + kexec/arch/arm64/kexec-image-arm64.c | 2 +- + kexec/arch/arm64/kexec-zImage-arm64.c | 226 ++++++++++++++++++++++++++ + kexec/kexec.c | 42 ++--- + 6 files changed, 254 insertions(+), 26 deletions(-) + create mode 100644 kexec/arch/arm64/kexec-zImage-arm64.c + +diff --git a/kexec/arch/arm64/Makefile b/kexec/arch/arm64/Makefile +index 9d9111c..d27c8ee 100644 +--- a/kexec/arch/arm64/Makefile ++++ b/kexec/arch/arm64/Makefile +@@ -15,7 +15,8 @@ arm64_KEXEC_SRCS += \ + kexec/arch/arm64/kexec-arm64.c \ + kexec/arch/arm64/kexec-elf-arm64.c \ + kexec/arch/arm64/kexec-uImage-arm64.c \ +- kexec/arch/arm64/kexec-image-arm64.c ++ kexec/arch/arm64/kexec-image-arm64.c \ ++ kexec/arch/arm64/kexec-zImage-arm64.c + + arm64_UIMAGE = kexec/kexec-uImage.c + +diff --git a/kexec/arch/arm64/kexec-arm64.c b/kexec/arch/arm64/kexec-arm64.c +index a830ec7..ec6df4b 100644 +--- a/kexec/arch/arm64/kexec-arm64.c ++++ b/kexec/arch/arm64/kexec-arm64.c +@@ -74,6 +74,7 @@ struct file_type file_type[] = { + {"vmlinux", elf_arm64_probe, elf_arm64_load, elf_arm64_usage}, + {"Image", image_arm64_probe, image_arm64_load, image_arm64_usage}, + {"uImage", uImage_arm64_probe, uImage_arm64_load, uImage_arm64_usage}, ++ {"zImage", zImage_arm64_probe, zImage_arm64_load, zImage_arm64_usage}, + }; + + int file_types = sizeof(file_type) / sizeof(file_type[0]); +diff --git a/kexec/arch/arm64/kexec-arm64.h b/kexec/arch/arm64/kexec-arm64.h +index d29b1b3..5eb9fc0 100644 +--- a/kexec/arch/arm64/kexec-arm64.h ++++ b/kexec/arch/arm64/kexec-arm64.h +@@ -44,6 +44,12 @@ int uImage_arm64_load(int argc, char **argv, const char *buf, off_t len, + struct kexec_info *info); + void uImage_arm64_usage(void); + ++int zImage_arm64_probe(const char *kernel_buf, off_t kernel_size); ++int zImage_arm64_load(int argc, char **argv, const char *kernel_buf, ++ off_t kernel_size, struct kexec_info *info); ++void zImage_arm64_usage(void); ++ ++ + extern off_t initrd_base; + extern off_t initrd_size; + +diff --git a/kexec/arch/arm64/kexec-image-arm64.c b/kexec/arch/arm64/kexec-image-arm64.c +index a196747..aa8f2e2 100644 +--- a/kexec/arch/arm64/kexec-image-arm64.c ++++ b/kexec/arch/arm64/kexec-image-arm64.c +@@ -114,6 +114,6 @@ exit: + void image_arm64_usage(void) + { + printf( +-" An ARM64 binary image, compressed or not, big or little endian.\n" ++" An ARM64 binary image, uncompressed, big or little endian.\n" + " Typically an Image file.\n\n"); + } +diff --git a/kexec/arch/arm64/kexec-zImage-arm64.c b/kexec/arch/arm64/kexec-zImage-arm64.c +new file mode 100644 +index 0000000..6ee82ff +--- /dev/null ++++ b/kexec/arch/arm64/kexec-zImage-arm64.c +@@ -0,0 +1,226 @@ ++/* ++ * ARM64 kexec zImage (Image.gz) support. ++ * ++ * Several distros use 'make zinstall' rule inside ++ * 'arch/arm64/boot/Makefile' to install the arm64 ++ * Image.gz compressed file inside the boot destination ++ * directory (for e.g. /boot). ++ * ++ * Currently we cannot use kexec_file_load() to load vmlinuz ++ * (or Image.gz). ++ * ++ * To support Image.gz, we should: ++ * a). Copy the contents of Image.gz to a temporary file. ++ * b). Decompress (gunzip-decompress) the contents inside the ++ * temporary file. ++ * c). Pass the 'fd' of the temporary file to the kernel space. ++ * ++ * So basically the kernel space still gets a decompressed ++ * kernel image to load via kexec-tools. ++ */ ++ ++#define _GNU_SOURCE ++ ++#include ++#include ++#include ++#include ++#include "crashdump-arm64.h" ++#include "image-header.h" ++#include "kexec.h" ++#include "kexec-arm64.h" ++#include "kexec-syscall.h" ++#include "kexec-zlib.h" ++#include "arch/options.h" ++ ++#define FILENAME_IMAGE "/tmp/ImageXXXXXX" ++ ++/* Returns: ++ * -1 : in case of error/invalid format (not a valid Image.gz format. ++ * fd : File descriptor of the temp file containing the decompressed ++ * Image. ++ */ ++int zImage_arm64_probe(const char *kernel_buf, off_t kernel_size) ++{ ++ int ret = -1; ++ int fd = 0; ++ int kernel_fd = 0; ++ char *fname = NULL; ++ char *kernel_uncompressed_buf = NULL; ++ const struct arm64_image_header *h; ++ ++ if (!is_zlib_file(kernel_buf, &kernel_size)) { ++ dbgprintf("%s: Not an zImage file (Image.gz).\n", __func__); ++ return -1; ++ } ++ ++ if (!(fname = strdup(FILENAME_IMAGE))) { ++ dbgprintf("%s: Can't duplicate strings %s\n", __func__, ++ fname); ++ return -1; ++ } ++ ++ if ((fd = mkstemp(fname)) < 0) { ++ dbgprintf("%s: Can't open file %s\n", __func__, ++ fname); ++ ret = -1; ++ goto fail_mkstemp; ++ } ++ ++ kernel_uncompressed_buf = ++ (char *) calloc(kernel_size, sizeof(off_t)); ++ if (!kernel_uncompressed_buf) { ++ dbgprintf("%s: Can't calloc %ld bytes\n", ++ __func__, kernel_size); ++ ret= -ENOMEM; ++ goto fail_calloc; ++ } ++ ++ /* slurp in the input kernel */ ++ dbgprintf("%s: ", __func__); ++ kernel_uncompressed_buf = slurp_decompress_file(kernel_buf, ++ &kernel_size); ++ ++ /* check for correct header magic */ ++ if (kernel_size < sizeof(struct arm64_image_header)) { ++ dbgprintf("%s: No arm64 image header.\n", __func__); ++ ret = -1; ++ goto fail_bad_header; ++ } ++ ++ h = (const struct arm64_image_header *)(kernel_uncompressed_buf); ++ ++ if (!arm64_header_check_magic(h)) { ++ dbgprintf("%s: Bad arm64 image header.\n", __func__); ++ ret = -1; ++ goto fail_bad_header; ++ } ++ ++ if (write(fd, kernel_uncompressed_buf, ++ kernel_size) != kernel_size) { ++ dbgprintf("%s: Can't write the uncompressed file %s\n", ++ __func__, fname); ++ ret = -1; ++ goto fail_bad_header; ++ } ++ ++ close(fd); ++ ++ /* Open the tmp file again, this time in O_RDONLY mode, as ++ * opening the file in O_RDWR and calling kexec_file_load() ++ * causes the kernel to return -ETXTBSY ++ */ ++ kernel_fd = open(fname, O_RDONLY); ++ if (kernel_fd == -1) { ++ dbgprintf("%s: Failed to open file %s\n", ++ __func__, fname); ++ ret = -1; ++ goto fail_bad_header; ++ } ++ ++ unlink(fname); ++ ++ free(kernel_uncompressed_buf); ++ free(fname); ++ ++ return kernel_fd; ++ ++fail_bad_header: ++ free(kernel_uncompressed_buf); ++ ++fail_calloc: ++ if (fd >= 0) ++ close(fd); ++ ++ unlink(fname); ++ ++fail_mkstemp: ++ free(fname); ++ ++ return ret; ++} ++ ++int zImage_arm64_load(int argc, char **argv, const char *kernel_buf, ++ off_t kernel_size, struct kexec_info *info) ++{ ++ const struct arm64_image_header *header; ++ unsigned long kernel_segment; ++ int result; ++ ++ if (info->file_mode) { ++ if (arm64_opts.initrd) { ++ info->initrd_fd = open(arm64_opts.initrd, O_RDONLY); ++ if (info->initrd_fd == -1) { ++ fprintf(stderr, ++ "Could not open initrd file %s:%s\n", ++ arm64_opts.initrd, strerror(errno)); ++ result = EFAILED; ++ goto exit; ++ } ++ } ++ ++ if (arm64_opts.command_line) { ++ info->command_line = (char *)arm64_opts.command_line; ++ info->command_line_len = ++ strlen(arm64_opts.command_line) + 1; ++ } ++ ++ return 0; ++ } ++ ++ header = (const struct arm64_image_header *)(kernel_buf); ++ ++ if (arm64_process_image_header(header)) ++ return EFAILED; ++ ++ kernel_segment = arm64_locate_kernel_segment(info); ++ ++ if (kernel_segment == ULONG_MAX) { ++ dbgprintf("%s: Kernel segment is not allocated\n", __func__); ++ result = EFAILED; ++ goto exit; ++ } ++ ++ dbgprintf("%s: kernel_segment: %016lx\n", __func__, kernel_segment); ++ dbgprintf("%s: text_offset: %016lx\n", __func__, ++ arm64_mem.text_offset); ++ dbgprintf("%s: image_size: %016lx\n", __func__, ++ arm64_mem.image_size); ++ dbgprintf("%s: phys_offset: %016lx\n", __func__, ++ arm64_mem.phys_offset); ++ dbgprintf("%s: vp_offset: %016lx\n", __func__, ++ arm64_mem.vp_offset); ++ dbgprintf("%s: PE format: %s\n", __func__, ++ (arm64_header_check_pe_sig(header) ? "yes" : "no")); ++ ++ /* create and initialize elf core header segment */ ++ if (info->kexec_flags & KEXEC_ON_CRASH) { ++ result = load_crashdump_segments(info); ++ if (result) { ++ dbgprintf("%s: Creating eflcorehdr failed.\n", ++ __func__); ++ goto exit; ++ } ++ } ++ ++ /* load the kernel */ ++ add_segment_phys_virt(info, kernel_buf, kernel_size, ++ kernel_segment + arm64_mem.text_offset, ++ arm64_mem.image_size, 0); ++ ++ /* load additional data */ ++ result = arm64_load_other_segments(info, kernel_segment ++ + arm64_mem.text_offset); ++ ++exit: ++ if (result) ++ fprintf(stderr, "kexec: load failed.\n"); ++ return result; ++} ++ ++void zImage_arm64_usage(void) ++{ ++ printf( ++" An ARM64 zImage, compressed, big or little endian.\n" ++" Typically an Image.gz or Image.lzma file.\n\n"); ++} +diff --git a/kexec/kexec.c b/kexec/kexec.c +index 76ee7f7..383b062 100644 +--- a/kexec/kexec.c ++++ b/kexec/kexec.c +@@ -640,21 +640,6 @@ char *slurp_decompress_file(const char *filename, off_t *r_size) + return kernel_buf; + } + +-static int copybuf_memfd(const char *kernel_buf, size_t size) +-{ +- int fd, count; +- +- fd = memfd_create("kernel", MFD_ALLOW_SEALING); +- if (fd == -1) +- return fd; +- +- count = write(fd, kernel_buf, size); +- if (count < 0) +- return -1; +- +- return fd; +-} +- + static void update_purgatory(struct kexec_info *info) + { + static const uint8_t null_buf[256]; +@@ -1316,22 +1301,31 @@ static int do_kexec_file_load(int fileind, int argc, char **argv, + + kernel = argv[fileind]; + +- /* slurp in the input kernel */ +- kernel_buf = slurp_decompress_file(kernel, &kernel_size); +- if (!kernel_buf) { +- fprintf(stderr, "Failed to decompress file %s:%s\n", kernel, ++ kernel_fd = open(kernel, O_RDONLY); ++ if (kernel_fd == -1) { ++ fprintf(stderr, "Failed to open file %s:%s\n", kernel, + strerror(errno)); + return EFAILED; + } +- kernel_fd = copybuf_memfd(kernel_buf, kernel_size); +- if (kernel_fd < 0) { +- fprintf(stderr, "Failed to copy decompressed buf\n"); +- return EFAILED; +- } ++ ++ /* slurp in the input kernel */ ++ kernel_buf = slurp_decompress_file(kernel, &kernel_size); + + for (i = 0; i < file_types; i++) { ++#ifdef __aarch64__ ++ /* handle Image.gz like cases */ ++ if (is_zlib_file(kernel, &kernel_size)) { ++ if ((ret = file_type[i].probe(kernel, kernel_size)) >= 0) { ++ kernel_fd = ret; ++ break; ++ } ++ } else ++ if (file_type[i].probe(kernel_buf, kernel_size) >= 0) ++ break; ++#else + if (file_type[i].probe(kernel_buf, kernel_size) >= 0) + break; ++#endif + } + + if (i == file_types) { +-- +2.27.0 + diff --git a/SOURCES/orabug37858059.kdump.sysconfig.disable-transparent_hugepage-for-aarch64.patch b/SOURCES/orabug37858059.kdump.sysconfig.disable-transparent_hugepage-for-aarch64.patch new file mode 100644 index 0000000..f562e13 --- /dev/null +++ b/SOURCES/orabug37858059.kdump.sysconfig.disable-transparent_hugepage-for-aarch64.patch @@ -0,0 +1,21 @@ +Disable transparent_hugepage for aarch64 + +Orabug: 37858059 + +Set transparent_hugepage=never for aarch64, otherwise we hit +allocation failures when loading some modules or when trying +to mount NFS in the kdump environment. + +Signed-off-by: Brian Maly + +--- kdump.sysconfig.aarch64.orig 2025-04-21 20:24:44.433215191 -0400 ++++ kdump.sysconfig.aarch64 2025-04-21 20:25:31.051267572 -0400 +@@ -21,7 +21,7 @@ KDUMP_COMMANDLINE_REMOVE="hugepages huge + + # This variable lets us append arguments to the current kdump commandline + # after processed by KDUMP_COMMANDLINE_REMOVE +-KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory udev.children-max=2 panic=10 swiotlb=noforce novmcoredd cma=0 hugetlb_cma=0 iommu=off" ++KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory udev.children-max=2 panic=10 swiotlb=noforce transparent_hugepage=never novmcoredd cma=0 hugetlb_cma=0 iommu=off" + + # Any additional kexec arguments required. In most situations, this should + # be left empty diff --git a/SPECS/kexec-tools.spec b/SPECS/kexec-tools.spec index 3de5d48..d820862 100644 --- a/SPECS/kexec-tools.spec +++ b/SPECS/kexec-tools.spec @@ -1,11 +1,11 @@ %global eppic_ver e8844d3793471163ae4a56d8f95897be9e5bd554 %global eppic_shortver %(c=%{eppic_ver}; echo ${c:0:7}) -%global mkdf_ver 1.7.6 +%global mkdf_ver 1.7.7 %global mkdf_shortver %(c=%{mkdf_ver}; echo ${c:0:7}) Name: kexec-tools Version: 2.0.29 -Release: 5%{?dist}.2 +Release: 5.0.4%{?dist}.2 License: GPLv2 Summary: The kexec/kdump userspace component @@ -74,6 +74,7 @@ Requires: dracut-network >= 050 Requires: dracut-squash >= 050 Requires: ethtool Requires: binutils +Requires: virt-what Recommends: grubby Recommends: hostname BuildRequires: make @@ -115,6 +116,26 @@ Requires: systemd-udev%{?_isa} # Patches 601 onward are generic patches # +# Oracle patches +Patch1001: orabug30822387.kdumpctl-arm64-fast-boot.patch +Patch1002: orabug30832988.kdump.sysconfig.iommu_off.x86_64.aarch64.patch +Patch1003: orabug30928441.kdumpctl.no_timer_check.patch +Patch1004: orabug32127375-kdump.sysconfig.no.double.s.patch +Patch1007: orabug3280449-Remove-s-from-kdump.sysconfig.aarch64.patch +Patch1008: orabug33822070-kdump-skip-lvm-private-devices.patch +Patch1009: orabug34663083-Update-UEK-reserved-sizes.patch +Patch1010: orabug35615400-handle-xen_netfront-in-dracut-module-setup.patch +Patch1011: orabug35801595-crash-hotplug-for-98-kexec-rules.patch +Patch1012: orabug35982140.kdumpctl-check-for-fips.patch +Patch1013: orabug36567412-0001-Revert-kexec-provide-a-memfd_create-wrapper-if-not-p.patch +Patch1014: orabug36567412-0002-Revert-arm64-Hook-up-the-ZBOOT-support-as-vmlinuz.patch +Patch1015: orabug36567412-0003-Revert-arm64-Add-ZBOOT-PE-containing-compressed-imag.patch +Patch1016: orabug36567412-0004-Revert-kexec-zboot-Add-arch-independent-zboot-suppor.patch +Patch1017: orabug36567412-0005-Revert-kexec-Introduce-a-member-kernel_fd-in-kexec_i.patch +Patch1018: orabug36567412-0006-Revert-kexec-arm64-Simplify-the-code-for-zImage.patch +Patch1019: orabug30352094-makedumpfile-Mark-mem-usage-option-unsupported-for-a.patch +Patch1020: orabug37858059.kdump.sysconfig.disable-transparent_hugepage-for-aarch64.patch + %description kexec-tools provides /sbin/kexec binary that facilitates a new kernel to boot using the kernel's kexec feature either on a @@ -124,10 +145,17 @@ component of the kernel's kexec feature. %prep %setup -q +%patch1013 -p1 +%patch1014 -p1 +%patch1015 -p1 +%patch1016 -p1 +%patch1017 -p1 +%patch1018 -p1 mkdir -p -m755 kcp tar -z -x -v -f %{SOURCE9} tar -z -x -v -f %{SOURCE19} +%patch1019 -p1 %ifarch ppc %define archdef ARCH=ppc @@ -183,12 +211,28 @@ mkdir -p -m755 $RPM_BUILD_ROOT%{_libdir} mkdir -p -m755 $RPM_BUILD_ROOT%{_prefix}/lib/kdump/dracut.conf.d mkdir -p -m755 $RPM_BUILD_ROOT%{_sharedstatedir}/kdump install -m 755 %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}/kdumpctl +patch $RPM_BUILD_ROOT%{_bindir}/kdumpctl %{PATCH1001} +patch $RPM_BUILD_ROOT%{_bindir}/kdumpctl %{PATCH1003} +patch $RPM_BUILD_ROOT%{_bindir}/kdumpctl %{PATCH1012} install -m 755 build/sbin/kexec $RPM_BUILD_ROOT/usr/sbin/kexec install -m 755 build/sbin/vmcore-dmesg $RPM_BUILD_ROOT/usr/sbin/vmcore-dmesg install -m 644 build/man/man8/kexec.8 $RPM_BUILD_ROOT%{_mandir}/man8/ install -m 644 build/man/man8/vmcore-dmesg.8 $RPM_BUILD_ROOT%{_mandir}/man8/ +#apply kdump sysconfig patches, if there are any +patch -d $RPM_SOURCE_DIR -p0 < %{PATCH1002} +patch -d $RPM_SOURCE_DIR -p0 < %{PATCH1004} +patch -d $RPM_SOURCE_DIR -p0 < %{PATCH1007} +patch -d $RPM_SOURCE_DIR -p0 < %{PATCH1020} + +#apply kdump-lib patches +patch -d $RPM_SOURCE_DIR -p1 < %{PATCH1008} +patch -d $RPM_SOURCE_DIR -p1 < %{PATCH1009} + +#apply 98-kexec.rules patches +patch -d $RPM_SOURCE_DIR -p1 < %{PATCH1011} + SYSCONFIG=$RPM_SOURCE_DIR/kdump.sysconfig.%{_target_cpu} [ -f $SYSCONFIG ] || SYSCONFIG=$RPM_SOURCE_DIR/kdump.sysconfig.%{_arch} [ -f $SYSCONFIG ] || SYSCONFIG=$RPM_SOURCE_DIR/kdump.sysconfig @@ -246,6 +290,7 @@ install -m 644 makedumpfile-%{mkdf_ver}/eppic_scripts/* $RPM_BUILD_ROOT/usr/shar mkdir -p -m755 $RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase cp %{SOURCE100} $RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix %{SOURCE100}} cp %{SOURCE101} $RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix %{SOURCE101}} +patch --no-backup-if-mismatch $RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix %{SOURCE101}} %{PATCH1010} cp %{SOURCE102} $RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix %{SOURCE102}} cp %{SOURCE104} $RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix %{SOURCE104}} cp %{SOURCE106} $RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix %{SOURCE106}} @@ -407,6 +452,41 @@ fi %endif %changelog +* Tue Aug 05 2025 EL Errata - 2.0.29-5.0.4.2 +- Rebase makdumpefile to v1.7.7 [Orabug: 37946079] +- Disable transparent_hugepage for aarch64 [Orabug: 37858059] +- fix detection of typed (compound) pages (Linux 6.12) [Orabug: 37561509] +- Rebase makedumpfile to v1.7.6 [Orabug: 37289579] +- Fix KEXEC_KERNEL_CHECK IMA rule & valid PE signature regression [Orabug: 36567412] +- Include support for virt-what [Orabug: 36517679] +- backport of upstream crash hotplug support [Orabug: 35884469] +- Insert new udev rules for crash hotplug into 98-kexec.rules [Orabug: 35801595] +- Handle xen_netfront in dracut module setup [Orabug: 35615400] +- Update UEK aarch64 reserved sizes for UEK7 kernels [Orabug: 34663083] +- Correct UEK reserved size for x86_64 [Orabug: 34391412] +- Update UEK reserved sizes [Orabug: 34240246] +- fix saving vmcore-dmesg.txt failed on aarch64 with UEK7 [Orabug: 34003037] +- include OL8 patch for sysconfig, its needed on OL9 [Orabug: 33512440] +- Update makedumpfile to 1.7.2 [Orabug: 34219368] +- kdump: skip lvm private devices [Orabug: 33822070] [Orabug: 33574003] +- Added dracut module setup patches [Orabug: 29518713] [Orabug: 22780125] +- Added orabug30352094-makedumpfile-Mark-mem-usage-option-unsupported-for-a.patch [Orabug: 30352094] +- Added orabug30822387.kdumpctl-arm64-fast-boot.patch [Orabug: 30822387] +- Added orabug30832988.kdump.sysconfig.iommu_off.x86_64.aarch64.patch [Orabug: 30832988] +- Added orabug30928441.kdumpctl.no_timer_check.patch [Orabug: 30928441] +- Added orabug32127375-kdump.sysconfig.no.double.s.patch [Orabug: 32127375] +- Added orabug32258986-arm64-support-more-than-one-crash-kernel-regions.patch [Orabug: 32258986] +- Removed orabug32258986-arm64-support-more-than-one-crash-kernel-regions.patch [Orabug: 32258986] +- Removed orabug34003037-arm64-crashdump-deduce-paddr-of-_text-based-on-kerne.patch [Orabug: 34003037] +- Removed orabug34003037-arm64-make-phys_offset-signed.patch [Orabug: 34003037] +- Removed orabug34003037-arm64-crashdump-unify-routine-to-get-page_offset.patch [Orabug: 34003037] +- Removed orabug34003037-arm64-read-VA_BITS-from-kcore-for-52-bits-VA-kernel.patch [Orabug: 34003037] +- Removed orabug34003037-arm64-fix-PAGE_OFFSET-calc-for-flipped-mm.patch [Orabug: 34003037] +- Removed orabug34003037-kdump-kexec-fix-saving-vmcore-dmesg.txt-failed-on-aa.patch [Orabug: 34003037] +- Fix formatting for orabug33822070-kdump-skip-lvm-private-devices.patch [Orabug: 33822070] +- Rework orabug34663083-Update-UEK-reserved-sizes.patch [Orabug: 34240246] +- Rebase kexec-tools to v2.0.28 + * Thu Jun 19 2025 Tao Liu - 2.0.29-5.2 - Bump up version number