99 lines
3.4 KiB
Diff
99 lines
3.4 KiB
Diff
commit b1b9e76de0f3ab1dfcd9426779fa20fd77cd5625
|
|
Author: Luciano Chavez <lnx1138@linux.ibm.com>
|
|
Date: Wed Aug 24 21:11:32 2022 -0500
|
|
|
|
lsslot: Fix lsslot -c mem output when using 4GB LMB size
|
|
|
|
When using a LMB size of 4GB, the output of lsslot -c mem would get
|
|
reported incorrectly as:
|
|
|
|
Dynamic Reconfiguration Memory (LMB size 0x0)
|
|
:
|
|
DRC Index: 80000001 Address: 100000000
|
|
Removable: No Associativity: (index: 1) 0 1 4 9
|
|
Section(s):
|
|
|
|
This patch changes the declaration of the _node_u._smem._lmb_size from
|
|
a uint32_t to uint64_t to store the value properly. Any variables that
|
|
store the lmb_size are also declared as uint64_t. In addition, we
|
|
use the PRIx64 macro in printf statements to properly print the
|
|
lmb_size value.
|
|
|
|
The patch also includes a necessary change to declare the global
|
|
variable block_sz_bytes as a uint64_t to fix an infinite loop in
|
|
the function get_mem_scns() when the above changes were introduced.
|
|
|
|
Signed-off-by: Luciano Chavez <lnx1138@linux.ibm.com>
|
|
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
|
|
|
|
diff --git a/src/drmgr/drmem.h b/src/drmgr/drmem.h
|
|
index db5a47f..48108c5 100644
|
|
--- a/src/drmgr/drmem.h
|
|
+++ b/src/drmgr/drmem.h
|
|
@@ -58,7 +58,7 @@ struct drconf_mem_v2 {
|
|
#define LMB_REVERSE_SORT 1
|
|
#define LMB_RANDOM_SORT 2
|
|
|
|
-extern int block_sz_bytes;
|
|
+extern uint64_t block_sz_bytes;
|
|
|
|
struct lmb_list_head *get_lmbs(unsigned int);
|
|
void free_lmbs(struct lmb_list_head *);
|
|
diff --git a/src/drmgr/drslot_chrp_mem.c b/src/drmgr/drslot_chrp_mem.c
|
|
index 3b78723..d37ee80 100644
|
|
--- a/src/drmgr/drslot_chrp_mem.c
|
|
+++ b/src/drmgr/drslot_chrp_mem.c
|
|
@@ -33,7 +33,7 @@
|
|
#include "drmem.h"
|
|
#include "common_numa.h"
|
|
|
|
-int block_sz_bytes = 0;
|
|
+uint64_t block_sz_bytes = 0;
|
|
static char *state_strs[] = {"offline", "online"};
|
|
|
|
static char *usagestr = "-c mem {-a | -r} {-q <quantity> -p {variable_weight | ent_capacity} | {-q <quantity> | -s [<drc_name> | <drc_index>]}}";
|
|
@@ -118,7 +118,7 @@ free_lmbs(struct lmb_list_head *lmb_list)
|
|
static int
|
|
get_mem_scns(struct dr_node *lmb)
|
|
{
|
|
- uint32_t lmb_sz = lmb->lmb_size;
|
|
+ uint64_t lmb_sz = lmb->lmb_size;
|
|
uint64_t phys_addr = lmb->lmb_address;
|
|
uint32_t mem_scn;
|
|
int rc = 0;
|
|
diff --git a/src/drmgr/lsslot.c b/src/drmgr/lsslot.c
|
|
index 87f876e..83e9e85 100644
|
|
--- a/src/drmgr/lsslot.c
|
|
+++ b/src/drmgr/lsslot.c
|
|
@@ -741,7 +741,7 @@ int print_drconf_mem(struct lmb_list_head *lmb_list)
|
|
if (usr_drc_name)
|
|
drc_index = strtol(usr_drc_name, NULL, 0);
|
|
|
|
- printf("Dynamic Reconfiguration Memory (LMB size 0x%x)\n",
|
|
+ printf("Dynamic Reconfiguration Memory (LMB size 0x%"PRIx64")\n",
|
|
lmb_list->lmbs->lmb_size);
|
|
|
|
for (lmb = lmb_list->lmbs; lmb; lmb = lmb->next) {
|
|
@@ -808,7 +808,7 @@ int lsslot_chrp_mem(void)
|
|
if (lmb_list->drconf_buf) {
|
|
print_drconf_mem(lmb_list);
|
|
} else {
|
|
- printf("lmb size: 0x%x\n", lmb_list->lmbs->lmb_size);
|
|
+ printf("lmb size: 0x%"PRIx64"\n", lmb_list->lmbs->lmb_size);
|
|
printf("%-20s %-5s %c %s\n", "Memory Node", "Name", 'R',
|
|
"Sections");
|
|
printf("%-20s %-5s %c %s\n", "-----------", "----", '-',
|
|
diff --git a/src/drmgr/ofdt.h b/src/drmgr/ofdt.h
|
|
index 26c943a..bd90810 100644
|
|
--- a/src/drmgr/ofdt.h
|
|
+++ b/src/drmgr/ofdt.h
|
|
@@ -94,7 +94,7 @@ struct dr_node {
|
|
union {
|
|
struct mem_info {
|
|
uint64_t _address;
|
|
- uint32_t _lmb_size;
|
|
+ uint64_t _lmb_size;
|
|
uint32_t _lmb_aa_index;
|
|
struct mem_scn *_mem_scns;
|
|
struct of_node *_of_node;
|