Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package powerpc-utils for openSUSE:Factory checked in at 2026-08-21 16:49:50 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/powerpc-utils (Old) and /work/SRC/openSUSE:Factory/.powerpc-utils.new.1258 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "powerpc-utils" Fri Aug 21 16:49:50 2026 rev:160 rq:1372036 version:1.3.14 Changes: -------- --- /work/SRC/openSUSE:Factory/powerpc-utils/powerpc-utils.changes 2026-07-12 16:21:04.211824088 +0200 +++ /work/SRC/openSUSE:Factory/.powerpc-utils.new.1258/powerpc-utils.changes 2026-08-21 16:50:15.581421811 +0200 @@ -1,0 +2,10 @@ +Wed Aug 19 12:55:42 UTC 2026 - Michal Suchanek <[email protected]> + +- Add timeoout for DLPAR memory remove operation (bsc#1265903 ltc#216658 bsc#1268314 ltc#218736) + - drmgr-Use-30-secs-timeout-for-each-LMB-removal-kerne.patch +- Fix description of lcpu field in the output of "lparstat" (bsc#1257065 ltc#216990) + - lparstat-report-virtual-cpus-as-vcpu-in-non-legacy-m.patch +- Refresh patch to upstream version + - bootlist-set-ethernet-using-open-firmware-path-as-bo.patch + +------------------------------------------------------------------- @@ -22 +32 @@ - * 0010-drmgr-Add-timeout-signal-handling-for-NUMA-memory-RE.patch (bsc#1265903 ltc#216658) + * 0010-drmgr-Add-timeout-signal-handling-for-NUMA-memory-RE.patch (bsc#1265903 ltc#216658 bsc#1268314 ltc#218736) @@ -88,2 +98,2 @@ -- Refresh lparstat-Fix-negative-values-for-idle-PURR.patch to work without - PPC_FEATURE2_ARCH_3_1 defined (bsc#1238322 ltc#210808) +- Refresh lparstat-print-memory-mode-correctly.patch to work without + PPC_FEATURE2_ARCH_3_1 defined (bsc#1237409 ltc#211627) New: ---- drmgr-Use-30-secs-timeout-for-each-LMB-removal-kerne.patch lparstat-report-virtual-cpus-as-vcpu-in-non-legacy-m.patch ----------(New B)---------- New:- Add timeoout for DLPAR memory remove operation (bsc#1265903 ltc#216658 bsc#1268314 ltc#218736) - drmgr-Use-30-secs-timeout-for-each-LMB-removal-kerne.patch - Fix description of lcpu field in the output of "lparstat" (bsc#1257065 ltc#216990) New:- Fix description of lcpu field in the output of "lparstat" (bsc#1257065 ltc#216990) - lparstat-report-virtual-cpus-as-vcpu-in-non-legacy-m.patch - Refresh patch to upstream version ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ powerpc-utils.spec ++++++ --- /var/tmp/diff_new_pack.u2ujXC/_old 2026-08-21 16:50:17.995508426 +0200 +++ /var/tmp/diff_new_pack.u2ujXC/_new 2026-08-21 16:50:17.996508462 +0200 @@ -38,6 +38,8 @@ Patch11: 0011-drmgr-Do-not-remove-LMBs-when-the-timer-expires.patch Patch12: bootlist-set-ethernet-using-open-firmware-path-as-bo.patch Patch13: ppc64_cpu-bring-power-mode-reporting-inline-with-PAP.patch +Patch14: drmgr-Use-30-secs-timeout-for-each-LMB-removal-kerne.patch +Patch15: lparstat-report-virtual-cpus-as-vcpu-in-non-legacy-m.patch Patch41: powerpc-utils-lsprop.patch Patch42: ofpathname_powernv.patch Patch43: fix_kexec_service_name_for_suse.patch ++++++ bootlist-set-ethernet-using-open-firmware-path-as-bo.patch ++++++ --- /var/tmp/diff_new_pack.u2ujXC/_old 2026-08-21 16:50:18.197515616 +0200 +++ /var/tmp/diff_new_pack.u2ujXC/_new 2026-08-21 16:50:18.209516042 +0200 @@ -1,18 +1,31 @@ -From 9756f6cddad56722e843fb038c953105acdccdf6 Mon Sep 17 00:00:00 2001 +From 1d42b5fe7df6ab2445618e52101d20cecce4a6a9 Mon Sep 17 00:00:00 2001 From: Wen Xiong <[email protected]> Date: Thu, 9 Jul 2026 22:39:29 -0400 -Subject: [PATCH] bootlist: set ethernet using open firmware path as boot list +Subject: [PATCH] bootlist: ensure non-nvme devices are processed with + add_logical -Bootlist cannot set ethernet using open firmware path as boot list. -This patch fixes the issue. +Upstream: merged, expected in 1.3.15 +Git-commit: 1d42b5fe7df6ab2445618e52101d20cecce4a6a9 +Additions to process nvme fabric and nvme multipath devices mistakenly +assumed that only dm devices should be passed to add_logical. As a +result some devices such as ethernet devices fail to be added and +instead register an "Device XXX does not appear to be valide" error. + +Fix the nvme device logic to ensure non-nmve devices are passed to +add_logical. + +Fixes: 3847a1c25a64 ("Support multiple dev paths for a nvmf boot device") Signed-off-by: Wen Xiong <[email protected]> +[tyreld: edited commit message] +[tyreld: remove redundant *"nvme-of"* guard] +Signed-off-by: Tyrel Datwyler <[email protected]> --- scripts/bootlist | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/scripts/bootlist b/scripts/bootlist -index 58c090f..d94810a 100755 +index 58c090f..81fd2ce 100755 --- a/scripts/bootlist +++ b/scripts/bootlist @@ -525,9 +525,7 @@ while [[ -n $1 ]]; do @@ -22,7 +35,7 @@ - if [[ "$1" == *"dm-"* ]] ; then - add_logical $1 - else -+ if [[ "$1" == *"nvme-of"* ]] || [[ "$1" == *"nvme"* ]] || [[ "$1" == *"namespace"* ]]; then ++ if [[ "$1" == *"nvme"* ]] || [[ "$1" == *"namespace"* ]]; then if [[ "$1" == *"nvme-of"* ]] || [[ "$1" == *"namespace"* ]]; then ctrl_name=`get_logical_device_name $1` master_of_path=$1 ++++++ drmgr-Use-30-secs-timeout-for-each-LMB-removal-kerne.patch ++++++ >From 4e9a9d74cbf7728e59858dccabc17e8cd24ff778 Mon Sep 17 00:00:00 2001 From: Haren Myneni <[email protected]> Date: Mon, 3 Aug 2026 14:23:55 -0700 Subject: [PATCH] drmgr: Use 30 secs timeout for each LMB removal kernel interface Upstream: merged, expected in 1.3.15 Git-commit: 4e9a9d74cbf7728e59858dccabc17e8cd24ff778 The drmgr selects the removal LMB based on NUMA node ratio and calls the kernel interface for each selected LMB. Then the kernel interface removes the LMB only after all pages are isolated. But this page isolation can take longer which may affect the memory removal process. The kernel interface returns to the user space if any signals are pending. So do not allow the kernel interface to execute more than 30 secs for each LMB removal. Setup 30 secs timer to generate SIGUSR1 signal for each kernel interface call. Signed-off-by: Haren Myneni <[email protected]> [tyreld: zero .tv_nsec as well at disarm] Signed-off-by: Tyrel Datwyler <[email protected]> --- src/drmgr/common.c | 1 + src/drmgr/drslot_chrp_mem.c | 102 ++++++++++++++++++++++++++++++++---- 2 files changed, 93 insertions(+), 10 deletions(-) diff --git a/src/drmgr/common.c b/src/drmgr/common.c index 68041a9..70f5d3b 100644 --- a/src/drmgr/common.c +++ b/src/drmgr/common.c @@ -937,6 +937,7 @@ sig_setup(void) sigdelset(&sigset, SIGALRM); sigdelset(&sigset, SIGQUIT); sigdelset(&sigset, SIGABRT); + sigdelset(&sigset, SIGUSR1); /* Now block all remaining signals */ rc = sigprocmask(SIG_SETMASK, &sigset, NULL); diff --git a/src/drmgr/drslot_chrp_mem.c b/src/drmgr/drslot_chrp_mem.c index 4a3fe3a..c37c2dc 100644 --- a/src/drmgr/drslot_chrp_mem.c +++ b/src/drmgr/drslot_chrp_mem.c @@ -39,6 +39,16 @@ uint64_t block_sz_bytes = 0; static char *state_strs[] = {"offline", "online"}; sig_atomic_t numa_mem_timeout = 0; +sig_atomic_t lmb_rm_timeout = 0; +struct itimerspec lmb_tval; +struct sigevent lmb_sevent; +timer_t lmb_timer; + +/* + * Timer to generate SIGUSR1 signal for each LMB removal + * kernel request + */ +#define LMB_REMOVAL_TIMER_SECS 30 static char *usagestr = "-c mem {-a | -r} {-q <quantity> -p {variable_weight | ent_capacity} | {-q <quantity> | -s [<drc_name> | <drc_index>]}}"; @@ -62,6 +72,16 @@ void mem_timeout_handler(int sig) numa_mem_timeout = 1; } +/* + * SIGUSR1 handler for LMB removal timeout and used + * only for NUMA based memory removal + */ +void lmb_rm_timeout_handler(int sig) +{ + if (sig == SIGUSR1) + lmb_rm_timeout = 1; +} + /** * report_resource_count * @brief Report the number of LMBs that were added or removed. @@ -1461,12 +1481,46 @@ int valid_mem_options(void) static int remove_lmb_by_index(uint32_t drc_index) { char cmdbuf[128]; - int offset; + int offset, rc; offset = sprintf(cmdbuf, "memory remove index 0x%x", drc_index); - return do_kernel_dlpar_common(cmdbuf, offset, - 1 /* Don't report error */); + /* + * The kernel interface removes LMB only after all pages are + * isolated. So sometimes the kernel waits forever to isolate + * pages and the drmgr can not make any progress. The kernel + * returns to the user space for any pending signals. + * + * Setup 30 secs timer and generate SIGUSR1 signal in case + * the kernel request takes longer than 30 secs. + */ + lmb_rm_timeout = 0; + lmb_tval.it_value.tv_sec = LMB_REMOVAL_TIMER_SECS; + if (timer_settime(lmb_timer, 0, &lmb_tval, NULL)) { + say(ERROR, "Set LMB removal timer failed %s\n", + strerror(errno)); + return -errno; + } + + rc = do_kernel_dlpar_common(cmdbuf, offset, + 1 /* Don't report error */); + + /* + * Disable the timer in case if the kernel request returned + * before 30 secs interval. + */ + lmb_tval.it_value.tv_sec = 0; + lmb_tval.it_value.tv_nsec = 0; + /* + * The caller of this function expects the return value 0 for + * LMB remove success and failure for other values. The success + * return is considered to increment the number of LMBs removed + * which is used to report the total removed LMBs to HMC. + * So do not consider the failure of disable timer. + */ + timer_settime(lmb_timer, 0, &lmb_tval, NULL); + + return rc; } static int remove_lmb_from_node(struct ppcnuma_node *node, uint32_t count) @@ -1483,10 +1537,16 @@ static int remove_lmb_from_node(struct ppcnuma_node *node, uint32_t count) unlinked++; err = remove_lmb_by_index(lmb->drc_index); - if (err) - say(WARN, "Can't remove LMB node:%d index:0x%x: %s\n", - node->node_id, lmb->drc_index, strerror(-err)); - else + if (err) { + if (lmb_rm_timeout) + say(WARN, "LMB remove timeout. node:%d index:0x%x: %s\n", + node->node_id, lmb->drc_index, + strerror(-err)); + else + say(WARN, "Can't remove LMB node:%d index:0x%x: %s\n", + node->node_id, lmb->drc_index, + strerror(-err)); + } else done++; } @@ -1707,12 +1767,33 @@ static void clear_numa_lmb_links(void) * (with -w option). In the case of LMB removal, the kernel * interface can run longer until all pages in LMB are isolated * and can return to the user space if any pending signals. - * This SIGALRM signal can exit the kernel in case LMB removal - * is taking longer than timeout. + * It may cause drmgr waiting forever on 1 LMB removal and can not + * make progress further. So setup SIGUSR1 30 secs timer for each + * LMB kernel removal request. + * + * This SIGUSR1 signal is used to exit drmgr in case if the complete + * memory removal process takes longer than the timeout value. */ static int drmem_timer_setup(void) { - struct sigaction sigact; + struct sigaction sigact, lmb_sigact; + + lmb_sigact.sa_handler = lmb_rm_timeout_handler; + sigemptyset(&lmb_sigact.sa_mask); + lmb_sigact.sa_flags = 0; + if (sigaction(SIGUSR1, &lmb_sigact, NULL)) + return -1; + + lmb_sevent.sigev_notify = SIGEV_SIGNAL; + lmb_sevent.sigev_signo = SIGUSR1; + lmb_sevent.sigev_value.sival_ptr = &lmb_timer; + if (timer_create(CLOCK_MONOTONIC, &lmb_sevent, &lmb_timer)) + return -1; + + lmb_tval.it_value.tv_sec = LMB_REMOVAL_TIMER_SECS; + lmb_tval.it_value.tv_nsec = 0; + lmb_tval.it_interval.tv_sec = 0; + lmb_tval.it_interval.tv_nsec = 0; if (!usr_timeout) return 0; @@ -1770,6 +1851,7 @@ static int numa_based_remove(uint32_t count) out_free: free_lmbs(lmb_list); out_clear: + timer_delete(lmb_timer); clear_numa_lmb_links(); report_resource_count(done); return rc; -- 2.51.0 ++++++ lparstat-report-virtual-cpus-as-vcpu-in-non-legacy-m.patch ++++++ >From 36cb77858d91d417ee579a309a569d862efa6477 Mon Sep 17 00:00:00 2001 From: Tyrel Datwyler <[email protected]> Date: Thu, 6 Aug 2026 11:39:35 -0700 Subject: [PATCH] lparstat: report virtual cpus as vcpu in non-legacy mode Upstream: merged, expected in 1.3.15 Git-commit: 36cb77858d91d417ee579a309a569d862efa6477 There is a subtle difference between lcpu when using the --legacy flag ane when not using the flag. Prior to this patch lcpu is the number of SMT threads when using --legacy, and the number of virtual processor cores when not. This can be confusing the the end user. Change lcpu to vcpu in non-legacy reporting to better correspond to the notion of a virtual processor core as opposed to the logical cpu mapping to a thread of execution as is generally understood on Linux. Update the man page as well to reflect this change as well as the cpus value is number of online virtual processor in the processor pool and not logical cpu threads. Signed-off-by: Tyrel Datwyler <[email protected]> --- man/lparstat.8 | 7 +++++-- src/lparstat.c | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/man/lparstat.8 b/man/lparstat.8 index ef20250..7bad4f3 100644 --- a/man/lparstat.8 +++ b/man/lparstat.8 @@ -29,13 +29,16 @@ smt Indicates whether simultaneous multi-threading is enabled or disabled in the partition. If SMT is enabled, the number of SMT threads is displayed. .TP lcpu -Number of online logical processors. +Number of online logical SMT threads. This is reported when using the --legacy flag. +.TP +vcpu +Number of online virtual processor cores. .TP mem Online Memory Capacity. .TP cpus -Number of online physical processors in the pool. +Number of online physical processor cores in the pool. .RS This attribute is referred as .B psize diff --git a/src/lparstat.c b/src/lparstat.c index 9158353..6244868 100644 --- a/src/lparstat.c +++ b/src/lparstat.c @@ -1115,7 +1115,7 @@ void print_system_configuration(void) if (o_legacy) offset += sprintf(buf + offset, "lcpu=%d ", active_proc*smt); else - offset += sprintf(buf + offset, "lcpu=%s ", value); + offset += sprintf(buf + offset, "vcpu=%s ", value); get_sysdata("MemTotal", &descr, value); offset += sprintf(buf + offset, "mem=%s ", value); get_sysdata("active_cpus_in_pool", &descr, value); -- 2.51.0 ++++++ ppc64_cpu-bring-power-mode-reporting-inline-with-PAP.patch ++++++ --- /var/tmp/diff_new_pack.u2ujXC/_old 2026-08-21 16:50:18.450524598 +0200 +++ /var/tmp/diff_new_pack.u2ujXC/_new 2026-08-21 16:50:18.467525201 +0200 @@ -7,6 +7,7 @@ Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit +Upstream: merged, expected in 1.3.15 Git-commit: 1ada5f8c469ad15e2a9761d67d09dd7037a079b5 Since Power8 the energy management power mode names have changed
