Thank you for the fix, Lucas.
On Sat, Jan 4, 2025 at 5:54 AM <devel-request(a)lists.crash-utility.osci.io>
wrote:
 Date: Fri,  3 Jan 2025 16:52:18 -0500
 From: soakley(a)redhat.com
 Subject: [Crash-utility] [PATCH] Fix misleading CPU count in
         display_sys_stats()
 To: devel(a)lists.crash-utility.osci.io
 Cc: Lucas Oakley <soakley(a)redhat.com>
 Message-ID: <20250103215218.712496-1-soakley(a)redhat.com>
 Content-Type: text/plain; charset="US-ASCII"; x-default=true
 From: Lucas Oakley <soakley(a)redhat.com>
 This simplication fixes the total CPU count being reported
 incorrectly in ppc64le and s390x systems when some number of
 CPUs have been offlined, as the kt->cpus value is adjusted.
 This adds the word "OFFLINE" to the 'sys' output for s390x
 and ppc64le, like exists for x86_64 and aarch64 when examining
 systems with offlined CPUs.
 Without patch:
   KERNEL: /debug/4.18.0-477.10.1.el8_8.s390x/vmlinux
 DUMPFILE: /proc/kcore
     CPUS: 1
 With patch:
   KERNEL: /debug/4.18.0-477.10.1.el8_8.s390x/vmlinux
 DUMPFILE: /proc/kcore
     CPUS: 2 [OFFLINE: 1]
 Signed-off-by: Lucas Oakley <soakley(a)redhat.com>
 ---
  kernel.c | 16 +++++++---------
  1 file changed, 7 insertions(+), 9 deletions(-)
 diff --git a/kernel.c b/kernel.c
 index 8c2e0ca..3e190f1 100644
 --- a/kernel.c
 +++ b/kernel.c
 @@ -5816,15 +5816,13 @@ display_sys_stats(void)
                                 pc->kvmdump_mapfile);
         }
 -       if (machine_type("PPC64"))
 -               fprintf(fp, "        CPUS: %d\n", get_cpus_to_display());
 -       else {
 -               fprintf(fp, "        CPUS: %d", kt->cpus);
 -               if (kt->cpus - get_cpus_to_display())
 -                       fprintf(fp, " [OFFLINE: %d]",
 -                               kt->cpus - get_cpus_to_display());
 -               fprintf(fp, "\n");
 -       }
 +        int number_cpus_to_display = get_cpus_to_display();
 +        int number_cpus_present = get_cpus_present();
 +        fprintf(fp, "        CPUS: %d", number_cpus_present);
 +        if (number_cpus_present != number_cpus_to_display)
 +                fprintf(fp, " [OFFLINE: %d]",
 +                    number_cpus_present - number_cpus_to_display);
 +        fprintf(fp, "\n");
         if (ACTIVE())
                 get_xtime(&kt->date);
 
What do you think about the following changes?
diff --git a/kernel.c b/kernel.c
index 8c2e0ca50482..2f451cc6056b 100644
--- a/kernel.c
+++ b/kernel.c
@@ -5816,15 +5816,16 @@ display_sys_stats(void)
                                pc->kvmdump_mapfile);
        }
-       if (machine_type("PPC64"))
-               fprintf(fp, "        CPUS: %d\n", get_cpus_to_display());
-       else {
-               fprintf(fp, "        CPUS: %d", kt->cpus);
-               if (kt->cpus - get_cpus_to_display())
-                       fprintf(fp, " [OFFLINE: %d]",
-                               kt->cpus - get_cpus_to_display());
-               fprintf(fp, "\n");
-       }
+        int number_cpus_to_display = get_cpus_to_display();
+        int number_cpus_present = get_cpus_present();
+        if (!number_cpus_present)
+            number_cpus_present = kt->cpus;
+
+        fprintf(fp, "        CPUS: %d", number_cpus_present);
+        if (number_cpus_present > number_cpus_to_display)
+                fprintf(fp, " [OFFLINE: %d]",
+                    number_cpus_present - number_cpus_to_display);
+        fprintf(fp, "\n");
        if (ACTIVE())
                get_xtime(&kt->date);
Thanks
Lianbo
-- 
 2.47.1