Sync from SUSE:SLFO:Main powerpc-utils revision e11f0aba2af094f451ee6985591fe689

This commit is contained in:
Adrian Schröter 2025-03-12 17:20:00 +01:00
parent 47ec395597
commit 6c5159b208
5 changed files with 242 additions and 0 deletions

View File

@ -0,0 +1,39 @@
From 3a8127ad7fe6615a8c6e8a3f0965addfdf888b38 Mon Sep 17 00:00:00 2001
From: Haren Myneni <haren@linux.ibm.com>
Date: Fri, 14 Feb 2025 21:43:33 -0800
Subject: [PATCH] drmgr/pci: Return 0 for success from do_replace()
Patch-mainline: expected 1.3.14
Git-commit: 3a8127ad7fe6615a8c6e8a3f0965addfdf888b38
Added replace_add_work() in commit f40a63b15c563 to support
replacement node and the partner node. But this function returns
0 for user input and 1 for success which caused do_replace()
returns 1. This patch fixes the problem with return 0.
Fixes: f40a63b15c563 ("drmgr/pci: Add multipath partner device support for hotplug replace")
Signed-off-by: Haren Myneni <haren@linux.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
---
src/drmgr/drslot_chrp_pci.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/drmgr/drslot_chrp_pci.c b/src/drmgr/drslot_chrp_pci.c
index 4c41fcd..91c08e9 100644
--- a/src/drmgr/drslot_chrp_pci.c
+++ b/src/drmgr/drslot_chrp_pci.c
@@ -1051,9 +1051,10 @@ static int do_replace(struct dr_node *all_nodes)
}
usr_prompt = prompt_save;
+ return rc;
}
- return rc;
+ return 0;
}
int valid_pci_options(void)
--
2.47.1

View File

@ -0,0 +1,132 @@
From 18a6dbca81b443d3cb7037d8bd39da014b4055ee Mon Sep 17 00:00:00 2001
From: Saket Kumar Bhaskar <skb99@linux.ibm.com>
Date: Mon, 13 Jan 2025 13:43:39 +0530
Subject: [PATCH] lparstat: Fix negative values for %idle PURR
Patch-mainline: expected 1.3.14
Git-commit: 18a6dbca81b443d3cb7037d8bd39da014b4055ee
In certain scenarios, the %idle PURR metric displays negative values [1],
while %busy PURR exceeds 100% giving users false impression of resource
utilisation. This occurs when delta_purr becomes greater than delta_tb,
causing the following expression to yield a negative value, particularly
during 100% system utilization for %idle PURR:
%idle = (delta_tb - delta_purr + delta_idle_purr) / delta_tb * 100;
Without change:
./lparstat -E 1 30
System Configuration
type=Shared mode=Uncapped smt=8 lcpu=20 mem=208057792 kB cpus=42 ent=2.00
---Actual--- -Normalized-
%busy %idle Frequency %busy %idle
------ ------ ------------- ------ ------
103.88 -3.88 2.75GHz[ 98%] 101.80 0.00
103.46 -3.46 2.67GHz[ 95%] 98.28 1.49
101.53 -1.53 2.74GHz[ 98%] 99.50 0.51
103.41 -3.41 2.70GHz[ 96%] 99.27 0.37
The delta_tb is computed using get_scaled_tb, which calculates the
timebase for a given time difference. Previously, nanoseconds were
ignored in the calculation of time difference, which led to delta_tb
being underestimated.
This patch addresses the issue by incorporating nanoseconds into the
time difference, ensuring precise calculations.
Also, rename get_time() to get_time_ns() to denote it returns time in
nanoseconds. get_delta_time() is introduced as a wrapper to get delta
time in seconds.
With change:
./lparstat -E 1 30
System Configuration
type=Shared mode=Uncapped smt=8 lcpu=20 mem=208057792 kB cpus=42 ent=2.00
---Actual--- -Normalized-
%busy %idle Frequency %busy %idle
------ ------ ------------- ------ ------
99.52 0.48 2.74GHz[ 98%] 97.53 2.66
99.53 0.47 2.71GHz[ 97%] 96.54 3.67
99.49 0.51 2.71GHz[ 97%] 96.51 3.87
99.51 0.49 2.70GHz[ 97%] 96.53 3.90
99.48 0.52 2.69GHz[ 96%] 95.50 4.38
[1] https://github.com/ibm-power-utilities/powerpc-utils/issues/103
Signed-off-by: Saket Kumar Bhaskar <skb99@linux.ibm.com>
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
---
src/lparstat.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/lparstat.c b/src/lparstat.c
index fe8b0fc..db22316 100644
--- a/src/lparstat.c
+++ b/src/lparstat.c
@@ -254,7 +254,7 @@ long long get_delta_value(char *se_name)
return (value - old_value);
}
-void get_time()
+void get_time_ns(void)
{
struct sysentry *se;
struct timespec ts;
@@ -266,7 +266,12 @@ void get_time()
se = get_sysentry("time");
sprintf(se->value, "%lld",
- (long long)ts.tv_sec);
+ (long long)ts.tv_sec * 1000000000LL + (long long)ts.tv_nsec);
+}
+
+double get_delta_time(void)
+{
+ return (get_delta_value("time") / 1000000000.0);
}
int get_time_base()
@@ -307,7 +312,7 @@ double get_scaled_tb(void)
se = get_sysentry("online_cores");
online_cores = atoi(se->value);
- elapsed = get_delta_value("time");
+ elapsed = get_delta_time();
se = get_sysentry("timebase");
timebase = atoi(se->value);
@@ -386,7 +391,7 @@ void get_cpu_physc(struct sysentry *unused_se, char *buf)
physc = delta_purr / delta_tb;
} else {
- elapsed = get_delta_value("time");
+ elapsed = get_delta_time();
se = get_sysentry("timebase");
timebase = atoi(se->value);
@@ -415,7 +420,7 @@ void get_cpu_app(struct sysentry *unused_se, char *buf)
float timebase, app, elapsed_time;
long long new_app, old_app;
- elapsed_time = get_delta_value("time");
+ elapsed_time = get_delta_time();
se = get_sysentry("timebase");
timebase = atof(se->value);
@@ -1018,7 +1023,7 @@ void init_sysdata(void)
{
int rc = 0;
- get_time();
+ get_time_ns();
parse_lparcfg();
parse_proc_stat();
parse_proc_ints();
--
2.47.1

View File

@ -0,0 +1,50 @@
From b6f50dc565eea17ce35389555489e9d8da3be9f3 Mon Sep 17 00:00:00 2001
From: Shrikanth Hegde <sshegde@linux.ibm.com>
Date: Mon, 3 Mar 2025 09:36:47 +0530
Subject: [PATCH] lparstat: print memory mode correctly
Patch-mainline: expected 1.3.14
Git-commit: b6f50dc565eea17ce35389555489e9d8da3be9f3
Starting from power10, active memory sharing(AMS) is not supported.
So from power10 onwards the H_GET_MPP hcall fails and hence
corresponding fields in lparcfg are not populated, such as
entitled_memory_pool_number etc.
Use gcc builtins and print memory model as dedicated for power10
onwards.
Suggested-by: Peter Bergner <bergner@linux.ibm.com>
Signed-off-by: Shrikanth Hegde <sshegde@linux.ibm.com>
[tyreld: fixup arch test to use newly defined BUILTIN wrapper]
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
---
src/common/cpu_info_helpers.h | 6 ++++++
src/lparstat.c | 6 +++++-
2 files changed, 11 insertions(+), 1 deletion(-)
Index: powerpc-utils-1.3.13/src/lparstat.c
===================================================================
--- powerpc-utils-1.3.13.orig/src/lparstat.c
+++ powerpc-utils-1.3.13/src/lparstat.c
@@ -31,6 +31,7 @@
#include <fcntl.h>
#include <sched.h>
#include <signal.h>
+#include <sys/auxv.h>
#include <sys/stat.h>
#include <sys/time.h>
#include "lparstat.h"
@@ -789,7 +790,11 @@ void get_memory_mode(struct sysentry *se
struct sysentry *tmp;
tmp = get_sysentry("entitled_memory_pool_number");
- if (atoi(tmp->value) == 65535)
+ /*
+ * from power10 onwards Active Memory Sharing(AMS) is not
+ * supported. Hence always display it as dedicated for those
+ */
+ if (atoi(tmp->value) == 65535 || getauxval(AT_HWCAP2) & PPC_FEATURE2_ARCH_3_1)
sprintf(buf, "Dedicated");
else
sprintf(buf, "Shared");

View File

@ -1,3 +1,21 @@
-------------------------------------------------------------------
Wed Mar 5 15:20:45 UTC 2025 - Michal Suchanek <msuchanek@suse.de>
- Fix negative values of idle PURR (bsc#1238322 ltc#210808)
* lparstat-Fix-negative-values-for-idle-PURR.patch
-------------------------------------------------------------------
Wed Mar 5 10:00:34 UTC 2025 - Michal Suchanek <msuchanek@suse.de>
- drmgr/pci: Return 0 for success from do_replace() (jsc#PED-9914).
* drmgr-pci-Return-0-for-success-from-do_replace.patch
-------------------------------------------------------------------
Tue Mar 4 10:24:35 UTC 2025 - Michal Suchanek <msuchanek@suse.de>
- Fix memory mode display on POWER10 (bsc#1237409 ltc#211627)
* lparstat-print-memory-mode-correctly.patch
-------------------------------------------------------------------
Mon Jan 27 17:34:47 UTC 2025 - Michal Suchanek <msuchanek@suse.de>

View File

@ -29,6 +29,9 @@ Patch1: powerpc-utils-lsprop.patch
Patch2: ofpathname_powernv.patch
Patch3: fix_kexec_service_name_for_suse.patch
Patch4: libvirt-service-dep.patch
Patch5: lparstat-print-memory-mode-correctly.patch
Patch6: drmgr-pci-Return-0-for-success-from-do_replace.patch
Patch7: lparstat-Fix-negative-values-for-idle-PURR.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libnuma-devel