From: Masayoshi Mizuma <m.mizuma@xxxxxxxxxxxxxx> Show the number of the number of physical socket even if the sysfs doesn't have the physical socket information. Note, lscpu shows the number of physical socket as 'Socket(s):' only if root user runs it because accessing the DMI table requires root privilege. Signed-off-by: Masayoshi Mizuma <m.mizuma@xxxxxxxxxxxxxx> --- sys-utils/lscpu-arm.c | 2 ++ sys-utils/lscpu.c | 9 +++++++-- sys-utils/lscpu.h | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/sys-utils/lscpu-arm.c b/sys-utils/lscpu-arm.c index 7ef05e8e7..72c2abf65 100644 --- a/sys-utils/lscpu-arm.c +++ b/sys-utils/lscpu-arm.c @@ -360,6 +360,8 @@ static void arm_decode(struct lscpu_cxt *cxt, struct lscpu_cputype *ct) arm_ids_decode(ct); arm_rXpY_decode(ct); + if (cxt->is_cluster) + ct->nr_socket_on_cluster = get_number_of_physical_sockets_from_dmi(); } int lscpu_is_cluster_arm(struct lscpu_cxt *cxt) diff --git a/sys-utils/lscpu.c b/sys-utils/lscpu.c index c5a4cc984..0c7d86a00 100644 --- a/sys-utils/lscpu.c +++ b/sys-utils/lscpu.c @@ -868,10 +868,15 @@ print_summary_cputype(struct lscpu_cxt *cxt, } else add_summary_n(tb, sec, _("Book(s):"), ct->nbooks_per_drawer ?: ct->nbooks); } else { - if (cxt->is_cluster) + if (cxt->is_cluster) { + if (ct->nr_socket_on_cluster > 0) + add_summary_n(tb, sec, _("Socket(s):"), ct->nr_socket_on_cluster); + else + add_summary_s(tb, sec, _("Socket(s):"), "-"); + add_summary_n(tb, sec, _("Cluster(s):"), ct->nsockets_per_book ?: ct->nsockets); - else + } else add_summary_n(tb, sec, _("Socket(s):"), ct->nsockets_per_book ?: ct->nsockets); } diff --git a/sys-utils/lscpu.h b/sys-utils/lscpu.h index d137b94b1..4511c317c 100644 --- a/sys-utils/lscpu.h +++ b/sys-utils/lscpu.h @@ -101,6 +101,8 @@ struct lscpu_cputype { has_configured : 1, has_polarization : 1, has_addresses : 1; + + size_t nr_socket_on_cluster; /* the number of sockets if the is_cluster is 1 */ }; /* dispatching modes */ -- 2.27.0