commit 4443a68d523043d69195e5a5a27fb9fc7ae8c50f Author: Shrikanth Hegde Date: Mon Mar 10 22:29:16 2025 +0530 lparstat: print memory mode correctly (revised) 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 HWCAP mechanism and print memory model as dedicated for power10 onwards. Suggested-by: Peter Bergner Signed-off-by: Shrikanth Hegde Signed-off-by: Tyrel Datwyler diff --git a/src/lparstat.c b/src/lparstat.c index db22316..8eddd7c 100644 --- a/src/lparstat.c +++ b/src/lparstat.c @@ -37,6 +37,11 @@ #include "pseries_platform.h" #include "cpu_info_helpers.h" #include +#include + +#ifndef PPC_FEATURE2_ARCH_3_1 +#define PPC_FEATURE2_ARCH_3_1 0x00040000 +#endif #define LPARCFG_FILE "/proc/ppc64/lparcfg" #define SE_NOT_FOUND "???" @@ -794,7 +799,11 @@ void get_memory_mode(struct sysentry *se, char *buf) 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");