Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package grub2 for openSUSE:Factory checked in at 2024-07-09 20:03:20 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/grub2 (Old) and /work/SRC/openSUSE:Factory/.grub2.new.2080 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "grub2" Tue Jul 9 20:03:20 2024 rev:332 rq:1186154 version:2.12 Changes: -------- --- /work/SRC/openSUSE:Factory/grub2/grub2.changes 2024-06-09 20:18:58.054877493 +0200 +++ /work/SRC/openSUSE:Factory/.grub2.new.2080/grub2.changes 2024-07-09 20:03:38.599922921 +0200 @@ -1,0 +2,9 @@ +Fri Jul 5 12:23:06 UTC 2024 - Michael Chang <mch...@suse.com> + +- Fix error if dash shell script is used (bsc#1226453) + * 0007-grub-switch-to-blscfg-adapt-to-openSUSE.patch + * 0009-10_linux-Some-refinement-for-BLS.patch +- Fix input handling in ppc64le grub2 has high latency (bsc#1223535) + * 0001-net-drivers-ieee1275-ofnet-Remove-200-ms-timeout-in-.patch + +------------------------------------------------------------------- New: ---- 0001-net-drivers-ieee1275-ofnet-Remove-200-ms-timeout-in-.patch BETA DEBUG BEGIN: New:- Fix input handling in ppc64le grub2 has high latency (bsc#1223535) * 0001-net-drivers-ieee1275-ofnet-Remove-200-ms-timeout-in-.patch BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ grub2.spec ++++++ --- /var/tmp/diff_new_pack.dlOsEJ/_old 2024-07-09 20:03:41.588031662 +0200 +++ /var/tmp/diff_new_pack.dlOsEJ/_new 2024-07-09 20:03:41.592031808 +0200 @@ -404,6 +404,7 @@ Patch214: 0007-grub-switch-to-blscfg-adapt-to-openSUSE.patch Patch215: 0008-blscfg-reading-bls-fragments-if-boot-present.patch Patch216: 0009-10_linux-Some-refinement-for-BLS.patch +Patch217: 0001-net-drivers-ieee1275-ofnet-Remove-200-ms-timeout-in-.patch Requires: gettext-runtime %if 0%{?suse_version} >= 1140 ++++++ 0001-net-drivers-ieee1275-ofnet-Remove-200-ms-timeout-in-.patch ++++++ >From d35ff22516b161f6d472f7f5371a89597b072d04 Mon Sep 17 00:00:00 2001 From: Michael Chang <mch...@suse.com> Date: Mon, 6 May 2024 10:34:22 +0800 Subject: [PATCH] net/drivers/ieee1275/ofnet: Remove 200 ms timeout in get_card_packet() to reduce input latency When GRUB image is netbooted on ppc64le, the keyboard input exhibits significant latency, reports even say that characters are processed about once per second. This issue makes interactively trying to debug a ppc64le config very difficult. It seems that the latency is largely caused by a 200 ms timeout in the idle event loop, during which the network card interface is consistently polled for incoming packets. Often, no packets arrive during this period, so the timeout nearly always expires, which blocks the response to key inputs. Furthermore, this 200 ms timeout might not need to be enforced at this basic layer, considering that GRUB performs synchronous reads and its timeout management is actually handled by higher layers, not directly in the card instance. Additionally, the idle polling, which reacts to unsolicited packets like ICMP and SLAAC, would be fine at a less frequent polling interval, rather than needing a timeout for receiving a response. For these reasons, we believe the timeout in get_card_packet() should be effectively removed. According to test results, the delay has disappeared, and it is now much easier to use interactively. Signed-Off-by: Michael Chang <mch...@suse.com> Tested-by: Tony Jones <to...@suse.com> Reviewed-by: Daniel Kiper <daniel.ki...@oracle.com> --- grub-core/net/drivers/ieee1275/ofnet.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/grub-core/net/drivers/ieee1275/ofnet.c b/grub-core/net/drivers/ieee1275/ofnet.c index 78f03df8e..3bf48b3f0 100644 --- a/grub-core/net/drivers/ieee1275/ofnet.c +++ b/grub-core/net/drivers/ieee1275/ofnet.c @@ -82,15 +82,11 @@ get_card_packet (struct grub_net_card *dev) grub_ssize_t actual; int rc; struct grub_ofnetcard_data *data = dev->data; - grub_uint64_t start_time; struct grub_net_buff *nb; - start_time = grub_get_time_ms (); - do - rc = grub_ieee1275_read (data->handle, dev->rcvbuf, dev->rcvbufsize, &actual); - while ((actual <= 0 || rc < 0) && (grub_get_time_ms () - start_time < 200)); + rc = grub_ieee1275_read (data->handle, dev->rcvbuf, dev->rcvbufsize, &actual); - if (actual <= 0) + if (actual <= 0 || rc < 0) return NULL; nb = grub_netbuff_alloc (actual + 2); -- 2.45.2 ++++++ 0007-grub-switch-to-blscfg-adapt-to-openSUSE.patch ++++++ --- /var/tmp/diff_new_pack.dlOsEJ/_old 2024-07-09 20:03:41.896042871 +0200 +++ /var/tmp/diff_new_pack.dlOsEJ/_new 2024-07-09 20:03:41.900043017 +0200 @@ -1,4 +1,4 @@ -From 855b3e5cd4d672e961a366ff0f53e3a09a1ad0cc Mon Sep 17 00:00:00 2001 +From 96e5a28d120856057fe7fc9b281f11f8933063b7 Mon Sep 17 00:00:00 2001 From: Michael Chang <mch...@suse.com> Date: Fri, 30 Jun 2023 14:37:41 +0800 Subject: [PATCH 7/9] grub-switch-to-blscfg: adapt to openSUSE @@ -12,17 +12,26 @@ - remove RHEL specific $GRUB_LINUX_MAKE_DEBUG and all related code - remove ostree specific hack - ignore increment.mod +- fix error in dash shell script +- fix kernel flavor parsing in openSUSE Signed-off-by: Michael Chang <mch...@suse.com> --- - util/grub-switch-to-blscfg.in | 144 ++++++++++++++++++++-------------- - 1 file changed, 87 insertions(+), 57 deletions(-) + util/grub-switch-to-blscfg.in | 156 ++++++++++++++++++++-------------- + 1 file changed, 94 insertions(+), 62 deletions(-) diff --git a/util/grub-switch-to-blscfg.in b/util/grub-switch-to-blscfg.in -index a851424be..66ecc0cae 100644 +index a851424be..145c22add 100644 --- a/util/grub-switch-to-blscfg.in +++ b/util/grub-switch-to-blscfg.in -@@ -34,21 +34,18 @@ fi +@@ -28,27 +28,24 @@ PACKAGE_NAME=@PACKAGE_NAME@ + PACKAGE_VERSION=@PACKAGE_VERSION@ + datarootdir="@datarootdir@" + datadir="@datadir@" +-if [ ! -v pkgdatadir ]; then ++if [ -z "${pkgdatadir+x}" ]; then + pkgdatadir="${datadir}/@PACKAGE@" + fi self=`basename $0` @@ -162,7 +171,7 @@ gettext_printf "Couldn't find config file\n" 1>&2 exit 1 fi -@@ -190,27 +252,22 @@ fi +@@ -190,27 +252,24 @@ fi mkbls() { local kernelver=$1 && shift local datetime=$1 && shift @@ -173,15 +182,21 @@ - local debugid="" local flavor="" - if [ "$kernelver" == *\+* ] ; then - local flavor=-"${kernelver##*+}" +- if [ "$kernelver" == *\+* ] ; then +- local flavor=-"${kernelver##*+}" - if [ "${flavor}" == "-debug" ]; then - local debugname=" with debugging" - local debugid="-debug" - fi - fi +- fi ++ case "$kernelver" in ++ *-*-*) ++ flavor=-"${kernelver##*-}" ++ ;; ++ esac ( - source /etc/os-release +- source /etc/os-release ++ . /etc/os-release cat <<EOF -title ${NAME} (${kernelver}) ${VERSION}${debugname} @@ -189,13 +204,13 @@ -linux /vmlinuz-${kernelver} -initrd /initramfs-${kernelver}.img +title ${NAME} (${kernelver}) ${VERSION} -+version ${kernelver}$ ++version ${kernelver} +linux ${prefix}/vmlinuz-${kernelver} +initrd ${prefix}/initrd-${kernelver} options ${kernelopts} grub_users \$grub_users grub_arg --unrestricted -@@ -233,42 +290,15 @@ copy_bls() { +@@ -233,42 +292,15 @@ copy_bls() { continue fi @@ -239,7 +254,7 @@ GENERATE=0 if grep '^GRUB_ENABLE_BLSCFG=.*' "${etcdefaultgrub}" \ | grep -vq '^GRUB_ENABLE_BLSCFG="*true"*\s*$' ; then -@@ -297,9 +327,7 @@ if [ "${GENERATE}" -eq 1 ] ; then +@@ -297,9 +329,7 @@ if [ "${GENERATE}" -eq 1 ] ; then fi if [ -n "${mod_dir}" ]; then @@ -250,7 +265,7 @@ fi cp -af "${GRUB_CONFIG_FILE}" "${GRUB_CONFIG_FILE}${backupsuffix}" -@@ -311,6 +339,8 @@ if [ "${GENERATE}" -eq 1 ] ; then +@@ -311,6 +341,8 @@ if [ "${GENERATE}" -eq 1 ] ; then gettext_printf "Updating %s failed\n" "${GRUB_CONFIG_FILE}" exit 1 fi @@ -260,6 +275,6 @@ # Bye. -- -2.44.0 +2.45.2 ++++++ 0009-10_linux-Some-refinement-for-BLS.patch ++++++ --- /var/tmp/diff_new_pack.dlOsEJ/_old 2024-07-09 20:03:41.932044181 +0200 +++ /var/tmp/diff_new_pack.dlOsEJ/_new 2024-07-09 20:03:41.932044181 +0200 @@ -1,4 +1,4 @@ -From 72a72facc6cbaf58fda136286af78bbbd48bd88c Mon Sep 17 00:00:00 2001 +From abd8b83cdc6398c52c7d2b71b378938cf51872fd Mon Sep 17 00:00:00 2001 From: Michael Chang <mch...@suse.com> Date: Wed, 13 Mar 2024 15:26:42 +0800 Subject: [PATCH 9/9] 10_linux: Some refinement for BLS @@ -8,13 +8,16 @@ the responsibility of generating kernel options to a functioning BLS generator. +Additionally, removing unused dead code, which is often blamed for +causing errors in the dash shell script. + Signed-off-by: Michael Chang <mch...@suse.com> --- - util/grub.d/10_linux.in | 29 ----------------------------- - 1 file changed, 29 deletions(-) + util/grub.d/10_linux.in | 194 ---------------------------------------- + 1 file changed, 194 deletions(-) diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in -index edf0fca55..7cbff7466 100644 +index edf0fca55..666eae995 100644 --- a/util/grub.d/10_linux.in +++ b/util/grub.d/10_linux.in @@ -93,11 +93,7 @@ fi @@ -29,20 +32,138 @@ cat <<EOF # This section was generated by a script. Do not modify the generated file - all changes -@@ -200,11 +196,6 @@ populate_menu() - printf "$menu" +@@ -110,102 +106,6 @@ cat <<EOF + EOF } +-read_config() +-{ +- config_file=${1} +- title="" +- initrd="" +- options="" +- linux="" +- grub_arg="" +- +- while read -r line +- do +- record=$(echo ${line} | cut -f 1 -d ' ') +- value=$(echo ${line} | cut -s -f2- -d ' ') +- case "${record}" in +- "title") +- title=${value} +- ;; +- "initrd") +- initrd=${value} +- ;; +- "linux") +- linux=${value} +- ;; +- "options") +- options=${value} +- ;; +- "grub_arg") +- grub_arg=${value} +- ;; +- esac +- done < ${config_file} +-} +- +-blsdir="/boot/loader/entries" +- +-get_sorted_bls() +-{ +- if ! [ -d "${blsdir}" ] || [ -f /run/ostree-booted ] || [ -d /ostree/repo ]; then +- return +- fi +- +- local IFS=$'\n' +- +- files=($(for bls in ${blsdir}/*.conf; do +- if ! [[ -e "${bls}" ]] ; then +- continue +- fi +- bls="${bls%.conf}" +- bls="${bls##*/}" +- echo "${bls}" +- done | ${kernel_sort} 2>/dev/null | tac)) || : +- +- echo "${files[@]}" +-} +- +-update_bls_cmdline() +-{ +- local cmdline="root=${LINUX_ROOT_DEVICE} ro ${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" +- local -a files=($(get_sorted_bls)) +- +- for bls in "${files[@]}"; do +- local options="${cmdline}" +- if [ -z "${bls##*debug*}" ]; then +- options="${options} ${GRUB_CMDLINE_LINUX_DEBUG}" +- fi +- options="$(echo "${options}" | sed -e 's/\//\\\//g')" +- sed -i -e "s/^options.*/options ${options}/" "${blsdir}/${bls}.conf" +- done +-} +- +-populate_menu() +-{ +- local -a files=($(get_sorted_bls)) +- +- gettext_printf "Generating boot entries from BLS files...\n" >&2 +- +- for bls in "${files[@]}"; do +- read_config "${blsdir}/${bls}.conf" +- +- menu="${menu}menuentry '${title}' ${grub_arg} --id=${bls} {\n" +- menu="${menu}\t linux ${linux} ${options}\n" +- if [ -n "${initrd}" ] ; then +- menu="${menu}\t initrd ${boot_prefix}${initrd}\n" +- fi +- menu="${menu}}\n\n" +- done +- # The printf command seems to be more reliable across shells for special character (\n, \t) evaluation +- printf "$menu" +-} +- -# Make BLS the default if GRUB_ENABLE_BLSCFG was not set and grubby is not installed. -# FIXME: The test should be aligned to openSUSE, grubby is not our default tool -if [ -z "${GRUB_ENABLE_BLSCFG}" ] && ! command -v new-kernel-pkg >/dev/null && false; then - GRUB_ENABLE_BLSCFG="true" -fi - +- if [ "x${GRUB_ENABLE_BLSCFG}" = "xtrue" ]; then if [ x$dirname = x/ ]; then -@@ -252,31 +243,11 @@ if [ "x${GRUB_ENABLE_BLSCFG}" = "xtrue" ]; then + if [ -z "${prepare_root_cache}" ]; then +@@ -225,111 +125,17 @@ if [ "x${GRUB_ENABLE_BLSCFG}" = "xtrue" ]; then + prepare_grub_to_access_device_with_variable boot ${boot_device} + fi +- arch="$(uname -m)" +- if [ "x${arch}" = "xppc64le" ] && [ -d /sys/firmware/opal ]; then +- +- BLS_POPULATE_MENU="true" +- petitboot_path="/sys/firmware/devicetree/base/ibm,firmware-versions/petitboot" +- +- if test -e ${petitboot_path}; then +- read -r -d '' petitboot_version < ${petitboot_path} +- petitboot_version="$(echo ${petitboot_version//v})" +- +- if test -n ${petitboot_version}; then +- major_version="$(echo ${petitboot_version} | cut -d . -f1)" +- minor_version="$(echo ${petitboot_version} | cut -d . -f2)" +- +- re='^[0-9]+$' +- if [[ $major_version =~ $re ]] && [[ $minor_version =~ $re ]] && +- ([[ ${major_version} -gt 1 ]] || +- [[ ${major_version} -eq 1 && +- ${minor_version} -ge 8 ]]); then +- BLS_POPULATE_MENU="false" +- fi +- fi +- fi +- fi +- populate_header_warn - cat << EOF @@ -70,10 +191,63 @@ blscfg EOF - fi +- +- if [ "x${GRUB_GRUBENV_UPDATE}" = "xyes" ]; then +- blsdir="/boot/loader/entries" +- [ -d "${blsdir}" ] && GRUB_BLS_FS="$(${grub_probe} --target=fs ${blsdir})" +- if [ "x${GRUB_BLS_FS}" = "xbtrfs" ] || [ "x${GRUB_BLS_FS}" = "xzfs" ]; then +- blsdir=$(make_system_path_relative_to_its_root "${blsdir}") +- if [ "x${blsdir}" != "x/loader/entries" ] && [ "x${blsdir}" != "x/boot/loader/entries" ]; then +- ${grub_editenv} - set blsdir="${blsdir}" +- fi +- fi +- +- if [ -n "${GRUB_EARLY_INITRD_LINUX_CUSTOM}" ]; then +- ${grub_editenv} - set early_initrd="${GRUB_EARLY_INITRD_LINUX_CUSTOM}" +- fi +- +- if [ -n "${GRUB_DEFAULT_DTB}" ]; then +- ${grub_editenv} - set devicetree="${GRUB_DEFAULT_DTB}" +- fi +- +- if [ -n "${GRUB_SAVEDEFAULT}" ]; then +- ${grub_editenv} - set save_default="${GRUB_SAVEDEFAULT}" +- fi +- fi + + exit 0 + fi + +-mktitle () +-{ +- local title_type +- local version +- local OS_NAME +- local OS_VERS +- +- title_type=$1 && shift +- version=$1 && shift +- +- OS_NAME="$(eval $(grep ^NAME= /etc/os-release) ; echo ${NAME})" +- OS_VERS="$(eval $(grep ^VERSION= /etc/os-release) ; echo ${VERSION})" +- +- case $title_type in +- recovery) +- title=$(printf '%s (%s) %s (recovery mode)' \ +- "${OS_NAME}" "${version}" "${OS_VERS}") +- ;; +- *) +- title=$(printf '%s (%s) %s' \ +- "${OS_NAME}" "${version}" "${OS_VERS}") +- ;; +- esac +- echo -n ${title} +-} +- + title_correction_code= - if [ "x${GRUB_GRUBENV_UPDATE}" = "xyes" ]; then - blsdir="/boot/loader/entries" + hotkey=1 -- -2.44.0 +2.45.2