Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package grub2 for openSUSE:Factory checked in at 2023-10-02 20:04:15 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/grub2 (Old) and /work/SRC/openSUSE:Factory/.grub2.new.28202 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "grub2" Mon Oct 2 20:04:15 2023 rev:301 rq:1113952 version:2.12~rc1 Changes: -------- --- /work/SRC/openSUSE:Factory/grub2/grub2.changes 2023-09-06 18:55:31.713859208 +0200 +++ /work/SRC/openSUSE:Factory/.grub2.new.28202/grub2.changes 2023-10-02 20:04:48.739235293 +0200 @@ -1,0 +2,26 @@ +Wed Sep 27 03:37:10 UTC 2023 - Gary Ching-Pang Lin <g...@suse.com> + +- Only build with fde-tpm-helper-rpm-macros for the architectures + supporting the newer UEFI and TPM 2.0. + * Also correct the location of %fde_tpm_update_requires + +------------------------------------------------------------------- +Wed Sep 20 07:54:05 UTC 2023 - Michael Chang <mch...@suse.com> + +- Fix a boot delay regression in PowerPC PXE boot (bsc#1201300) + * 0001-ieee1275-ofdisk-retry-on-open-and-read-failure.patch + +------------------------------------------------------------------- +Tue Sep 19 06:31:43 UTC 2023 - Gary Ching-Pang Lin <g...@suse.com> + +- Add the new BuildRequires for EFI builds for the better FDE + support: fde-tpm-helper-rpm-macros + + Also add the the macros to %post and %posttrans + +------------------------------------------------------------------- +Mon Sep 11 13:17:20 UTC 2023 - Chester Lin <c...@suse.com> + +- Correct the type of allocated EFI pages for ARM64 kernel (bsc#1215151) + * arm64-Use-proper-memory-type-for-kernel-allocation.patch + +------------------------------------------------------------------- New: ---- arm64-Use-proper-memory-type-for-kernel-allocation.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ grub2.spec ++++++ --- /var/tmp/diff_new_pack.gyFuTa/_old 2023-10-02 20:05:02.127716782 +0200 +++ /var/tmp/diff_new_pack.gyFuTa/_new 2023-10-02 20:05:02.131716926 +0200 @@ -161,6 +161,14 @@ BuildRequires: squashfs %endif +# For ALP and Tumbleweed +%if 0%{?suse_version} >= 1600 +# Only include the macros for the architectures with the newer UEFI and TCG protocol +%ifarch x86_64 aarch64 riscv64 +BuildRequires: fde-tpm-helper-rpm-macros +%endif +%endif + Version: 2.12~rc1 Release: 0 Summary: Bootloader with support for Linux, Multiboot and more @@ -374,6 +382,7 @@ Patch187: 0003-cryptodisk-wipe-out-the-cached-keys-from-protectors.patch Patch188: 0004-diskfilter-look-up-cryptodisk-devices-first.patch Patch189: grub2-mkconfig-riscv64.patch +Patch190: arm64-Use-proper-memory-type-for-kernel-allocation.patch Requires: gettext-runtime %if 0%{?suse_version} >= 1140 @@ -497,6 +506,7 @@ Requires: perl-Bootloader >= 0.706 Requires(post): perl-Bootloader >= 0.706 %endif +%{?fde_tpm_update_requires} Provides: %{name}-efi = %{version}-%{release} Obsoletes: %{name}-efi < %{version}-%{release} @@ -1147,6 +1157,10 @@ %ifarch %{efi} %post %{grubefiarch} +%if 0%{?fde_tpm_update_post:1} +%fde_tpm_update_post grub2-efi +%endif + %if 0%{?update_bootloader_check_type_reinit_post:1} %update_bootloader_check_type_reinit_post grub2-efi %else @@ -1182,6 +1196,7 @@ %posttrans %{grubefiarch} %{?update_bootloader_posttrans} +%{?fde_tpm_update_posttrans} %endif ++++++ 0001-ieee1275-ofdisk-retry-on-open-and-read-failure.patch ++++++ --- /var/tmp/diff_new_pack.gyFuTa/_old 2023-10-02 20:05:02.255721385 +0200 +++ /var/tmp/diff_new_pack.gyFuTa/_new 2023-10-02 20:05:02.255721385 +0200 @@ -1,6 +1,6 @@ -From b99c45820f228ff5b881700eda95a017abf2e198 Mon Sep 17 00:00:00 2001 -From: Mukesh Kumar Chaurasiya <mchau...@linux.vnet.ibm.com> -Date: Wed, 1 Mar 2023 15:08:05 +0530 +From f4728ed5307b6be6377b7bdafcab55fd3676a761 Mon Sep 17 00:00:00 2001 +From: Mukesh Kumar Chaurasiya <mchau...@linux.ibm.com> +Date: Mon, 17 Jul 2023 16:02:34 +0530 Subject: [PATCH] ieee1275/ofdisk: retry on open and read failure Sometimes, when booting from a very busy SAN, the access to the @@ -8,15 +8,48 @@ This scenario is more frequent when deploying many machines at the same time using the same SAN. This patch aims to force the ofdisk module to retry the open or -read function after it fails. We use MAX_RETRIES to specify the -amount of times it will try to access the disk before it -definitely fails. +read function for network disks excluding after it fails. We use +DEFAULT_RETRY_TIMEOUT, which is 15 seconds to specify the time it'll +retry to access the disk before it definitely fails. The timeout can be +changed by setting the environment variable ofdisk_retry_timeout. +If the environment variable fails to read, grub will consider the +default value of 15 seconds. -Signed-off-by: Mukesh Kumar Chaurasiya <mchau...@linux.vnet.ibm.com> +Signed-off-by: Diego Domingos <dieg...@linux.vnet.ibm.com> +Signed-off-by: Mukesh Kumar Chaurasiya <mchau...@linux.ibm.com> --- - grub-core/disk/ieee1275/ofdisk.c | 65 +++++++++++++++++++++++++++++++- - 1 file changed, 63 insertions(+), 2 deletions(-) + docs/grub.texi | 8 ++++ + grub-core/disk/ieee1275/ofdisk.c | 80 +++++++++++++++++++++++++++++++- + 2 files changed, 86 insertions(+), 2 deletions(-) +diff --git a/docs/grub.texi b/docs/grub.texi +index d3f0f6577..c8ebc083d 100644 +--- a/docs/grub.texi ++++ b/docs/grub.texi +@@ -3315,6 +3315,7 @@ These variables have special meaning to GRUB. + * net_default_ip:: + * net_default_mac:: + * net_default_server:: ++* ofdisk_retry_timeout:: + * pager:: + * prefix:: + * pxe_blksize:: +@@ -3744,6 +3745,13 @@ The default is the value of @samp{color_normal} (@pxref{color_normal}). + @xref{Network}. + + ++@node ofdisk_retry_timeout ++@subsection ofdisk_retry_timeout ++ ++The time in seconds till which the grub will retry to open or read a disk in ++case of failure to do so. This value defaults to 15 seconds. ++ ++ + @node pager + @subsection pager + +diff --git a/grub-core/disk/ieee1275/ofdisk.c b/grub-core/disk/ieee1275/ofdisk.c +index 7197d5401..f96bbb58c 100644 --- a/grub-core/disk/ieee1275/ofdisk.c +++ b/grub-core/disk/ieee1275/ofdisk.c @@ -24,6 +24,9 @@ @@ -25,11 +58,11 @@ #include <grub/time.h> +#include <grub/env.h> + -+#define RETRY_DEFAULT_TIMEOUT 15000 ++#define RETRY_DEFAULT_TIMEOUT 15 static char *last_devpath; static grub_ieee1275_ihandle_t last_ihandle; -@@ -783,7 +786,7 @@ +@@ -783,7 +786,7 @@ compute_dev_path (const char *name) } static grub_err_t @@ -38,49 +71,64 @@ { grub_ieee1275_phandle_t dev; char *devpath; -@@ -879,6 +882,41 @@ +@@ -879,6 +882,56 @@ grub_ofdisk_open (const char *name, grub_disk_t disk) return 0; } +static grub_uint64_t -+grub_ofdisk_disk_timeout(void) ++grub_ofdisk_disk_timeout (grub_disk_t disk) +{ -+ if(grub_env_get("ofdisk_retry_timeout") != NULL) -+ { -+ grub_uint64_t retry = grub_strtoul(grub_env_get("ofdisk_retry_timeout"), 0, 10); -+ if(retry) -+ return retry; -+ } ++ grub_uint64_t retry; ++ const char *timeout = grub_env_get ("ofdisk_retry_timeout"); + -+ return RETRY_DEFAULT_TIMEOUT; ++ if (!(grub_strstr (disk->name, "fibre-channel@") || ++ grub_strstr (disk->name, "vfc-client")) || ++ grub_strstr(disk->name, "nvme-of")) ++ { ++ /* Do not retry in case of non network drives */ ++ return 0; ++ } ++ ++ if (timeout != NULL) ++ { ++ retry = grub_strtoul (timeout, 0, 10); ++ if (grub_errno != GRUB_ERR_NONE) ++ { ++ grub_errno = GRUB_ERR_NONE; ++ return RETRY_DEFAULT_TIMEOUT; ++ } ++ if (retry) ++ return retry; ++ } ++ return RETRY_DEFAULT_TIMEOUT; +} + +static grub_err_t +grub_ofdisk_open (const char *name, grub_disk_t disk) +{ + grub_err_t err; -+ grub_uint64_t timeout = grub_get_time_ms () + grub_ofdisk_disk_timeout(); -+ -+ retry: -+ err = grub_ofdisk_open_real (name, disk); -+ -+ if (err == GRUB_ERR_UNKNOWN_DEVICE) ++ grub_uint64_t timeout = grub_get_time_ms () + (grub_ofdisk_disk_timeout (disk) * 1000); ++ _Bool cont; ++ do + { -+ if (grub_get_time_ms () < timeout) ++ err = grub_ofdisk_open_real (name, disk); ++ cont = grub_get_time_ms () < timeout; ++ if (err == GRUB_ERR_UNKNOWN_DEVICE && cont) + { + grub_dprintf ("ofdisk","Failed to open disk %s. Retrying...\n", name); + grub_errno = GRUB_ERR_NONE; -+ goto retry; -+ } -+ } -+ ++ } ++ else ++ break; ++ grub_millisleep (1000); ++ } while (cont); + return err; +} + static void grub_ofdisk_close (grub_disk_t disk) { -@@ -915,7 +953,7 @@ +@@ -915,7 +968,7 @@ grub_ofdisk_prepare (grub_disk_t disk, grub_disk_addr_t sector) } static grub_err_t @@ -89,34 +137,37 @@ grub_size_t size, char *buf) { grub_err_t err; -@@ -935,6 +973,29 @@ +@@ -934,6 +987,29 @@ grub_ofdisk_read (grub_disk_t disk, grub_disk_addr_t sector, + return 0; } - static grub_err_t ++static grub_err_t +grub_ofdisk_read (grub_disk_t disk, grub_disk_addr_t sector, + grub_size_t size, char *buf) +{ + grub_err_t err; -+ grub_uint64_t timeout = grub_get_time_ms () + grub_ofdisk_disk_timeout(); -+ -+ retry: -+ err = grub_ofdisk_read_real (disk, sector, size, buf); -+ -+ if (err == GRUB_ERR_READ_ERROR) ++ grub_uint64_t timeout = grub_get_time_ms () + (grub_ofdisk_disk_timeout (disk) * 1000); ++ _Bool cont; ++ do + { -+ if (grub_get_time_ms () < timeout) ++ err = grub_ofdisk_read_real (disk, sector, size, buf); ++ cont = grub_get_time_ms () < timeout; ++ if (err == GRUB_ERR_UNKNOWN_DEVICE && cont) + { + grub_dprintf ("ofdisk","Failed to read disk %s. Retrying...\n", (char*)disk->data); + grub_errno = GRUB_ERR_NONE; -+ goto retry; -+ } -+ } -+ ++ } ++ else ++ break; ++ grub_millisleep (1000); ++ } while (cont); + return err; +} + -+static grub_err_t + static grub_err_t grub_ofdisk_write (grub_disk_t disk, grub_disk_addr_t sector, grub_size_t size, const char *buf) - { +-- +2.41.0 + ++++++ arm64-Use-proper-memory-type-for-kernel-allocation.patch ++++++ >From 4f9d3f4f8d7866c69e52ba7d81562daea38b22e6 Mon Sep 17 00:00:00 2001 From: Maximilian Luz <luzmaximil...@gmail.com> Date: Tue, 28 Jun 2022 23:06:46 +0200 Subject: [PATCH] arm64: Use proper memory type for kernel allocation References: bsc#1215151 Patch-Mainline: no, it's a downstream fix based on Fedora/openSUSE grub2 Currently, the kernel pages are allocated with type EFI_LOADER_DATA. While the vast majority of systems will happily execute code from those pages (i.e. don't care about memory protection), the Microsoft Surface Pro X stalls, as this memory is not designated as "executable". Therefore, allocate the kernel pages as EFI_LOADER_CODE to request memory that is actually executable. Link: https://github.com/rhboot/grub2/commit/4f9d3f4f8d7866c69e52ba7d81562daea38b22e6 Signed-off-by: Maximilian Luz <luzmaximil...@gmail.com> Signed-off-by: Chester Lin <c...@suse.com> --- grub-core/loader/arm64/linux.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/grub-core/loader/arm64/efi/linux.c b/grub-core/loader/arm64/efi/linux.c index 419f2201d..a3a193c25 100644 --- a/grub-core/loader/arm64/efi/linux.c +++ b/grub-core/loader/arm64/efi/linux.c @@ -26,7 +26,9 @@ #include <grub/mm.h> #include <grub/types.h> #include <grub/cpu/linux.h> +#include <grub/efi/api.h> #include <grub/efi/efi.h> +#include <grub/cpu/efi/memory.h> #include <grub/efi/fdtload.h> #include <grub/efi/memory.h> #include <grub/efi/pe32.h> @@ -403,7 +405,10 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)), grub_loader_unset(); kernel_alloc_pages = GRUB_EFI_BYTES_TO_PAGES (kernel_size + align - 1); - kernel_alloc_addr = grub_efi_allocate_any_pages (kernel_alloc_pages); + kernel_alloc_addr = grub_efi_allocate_pages_real (GRUB_EFI_MAX_USABLE_ADDRESS, + kernel_alloc_pages, + GRUB_EFI_ALLOCATE_MAX_ADDRESS, + GRUB_EFI_LOADER_CODE); grub_dprintf ("linux", "kernel numpages: %d\n", kernel_alloc_pages); if (!kernel_alloc_addr) { -- 2.40.0