<div dir="ltr"><div dir="ltr">On Mon, May 31, 2021 at 1:08 PM HAGIO KAZUHITO(萩尾 一仁) <<a href="mailto:k-hagio-ab@nec.com">k-hagio-ab@nec.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">The nid member of struct memory_block is a 4-byte integer, but read<br>
and printed as a 8-byte integer on 64-bit machines.  Without the patch,<br>
the option displays wrong NIDs.<br></blockquote><div><br></div><div>Good findings, Kazu. </div><div>Acked-by: Lianbo Jiang <<a href="mailto:lijiang@redhat.com">lijiang@redhat.com</a>></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
  crash> kmem -n<br>
  ...<br>
     MEM_BLOCK        NAME          PHYSICAL RANGE       NODE  STATE   START_SECTION_NO<br>
   ffff9edeff2b9400   memory0             0 -   7fffffff 14195095130662240256  ONLINE  0<br>
   ffff9edeff2bb400   memory2     100000000 -  17fffffff 14195094718345379840  ONLINE  32<br>
<br>
The issue seems to appear on Linux 5.12 and later kernels that contain<br>
commit e9a2e48e8704c ("drivers/base/memory: don't store phys_device in<br>
memory blocks"), which changed the arrangement of the members of struct<br>
memory_block.<br>
<br>
Signed-off-by: Kazuhito Hagio <<a href="mailto:k-hagio-ab@nec.com" target="_blank">k-hagio-ab@nec.com</a>><br>
---<br>
 memory.c | 4 ++--<br>
 1 file changed, 2 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/memory.c b/memory.c<br>
index 8c6bbe409922..600f2de336d9 100644<br>
--- a/memory.c<br>
+++ b/memory.c<br>
@@ -17564,13 +17564,13 @@ print_memory_block(ulong memory_block)<br>
<br>
        if (MEMBER_EXISTS("memory_block", "nid")) {<br>
                readmem(memory_block + OFFSET(memory_block_nid), KVADDR, &nid,<br>
-                       sizeof(void *), "memory_block nid", FAULT_ON_ERROR);<br>
+                       sizeof(int), "memory_block nid", FAULT_ON_ERROR);<br>
                fprintf(fp, " %s %s %s %s  %s %s\n",<br>
                        mkstring(buf1, VADDR_PRLEN, LJUST|LONG_HEX,<br>
                        MKSTR(memory_block)),<br>
                        mkstring(buf2, 12, CENTER, name),<br>
                        parangebuf,<br>
-                       mkstring(buf5, strlen("NODE"), CENTER|LONG_DEC,<br>
+                       mkstring(buf5, strlen("NODE"), CENTER|INT_DEC,<br>
                        MKSTR(nid)),<br>
                        mkstring(buf6, strlen("OFFLINE"), LJUST,<br>
                        statebuf),<br>
-- <br>
2.27.0<br>
<br>
</blockquote></div></div>