diff --git a/sys-utils/lscpu-cputype.c b/sys-utils/lscpu-cputype.c index d5ca8e1f1..d5f0eb7d6 100644 --- a/sys-utils/lscpu-cputype.c +++ b/sys-utils/lscpu-cputype.c @@ -81,6 +81,7 @@ void lscpu_unref_cputype(struct lscpu_cputype *ct) free(ct->model); free(ct->modelname); free(ct->bios_modelname); + free(ct->bios_family); free(ct->revision); /* alternative for model (ppc) */ free(ct->stepping); free(ct->bogomips); diff --git a/sys-utils/lscpu-dmi.c b/sys-utils/lscpu-dmi.c index 177b787eb..782881b75 100644 --- a/sys-utils/lscpu-dmi.c +++ b/sys-utils/lscpu-dmi.c @@ -73,6 +73,11 @@ int parse_dmi_table(uint16_t len, uint16_t num, di->processor_version = dmi_string(&h, data[0x10]); di->current_speed = *((uint16_t *)(&data[0x16])); di->part_num = dmi_string(&h, data[0x22]); + + if (data[0x6] == 0xfe) + di->processor_family = *((uint16_t *)(&data[0x28])); + else + di->processor_family = data[0x6]; } di->sockets++; break; @@ -117,6 +122,11 @@ int dmi_decode_cputype(struct lscpu_cputype *ct) di.current_speed/1000, (di.current_speed % 1000) / 100); ct->bios_modelname = xstrdup(buf); + /* Get CPU family */ + memset(buf, 0, sizeof(buf)); + snprintf(buf, sizeof(buf), "%d", di.processor_family); + ct->bios_family = xstrdup(buf); + free(data); return 0; } diff --git a/sys-utils/lscpu.c b/sys-utils/lscpu.c index 5a99a9a5b..827e84a6d 100644 --- a/sys-utils/lscpu.c +++ b/sys-utils/lscpu.c @@ -863,6 +863,8 @@ print_summary_cputype(struct lscpu_cxt *cxt, sec = add_summary_s(tb, sec, _("Model name:"), ct->modelname); if (ct->bios_modelname) add_summary_s(tb, sec, _("BIOS Model name:"), ct->bios_modelname); + if (ct->bios_family) + add_summary_s(tb, sec, _("BIOS CPU family:"), ct->bios_family); if (ct->machinetype) add_summary_s(tb, sec, _("Machine type:"), ct->machinetype); if (ct->family) diff --git a/sys-utils/lscpu.h b/sys-utils/lscpu.h index 4dc8e0a23..79477b469 100644 --- a/sys-utils/lscpu.h +++ b/sys-utils/lscpu.h @@ -65,6 +65,7 @@ struct lscpu_cputype { char *model; char *modelname; char *bios_modelname; /* aarch64 */ + char *bios_family; /* aarch64 */ char *revision; /* alternative for model (ppc) */ char *stepping; char *bogomips; @@ -318,6 +319,7 @@ struct dmi_info { int sockets; /* Processor Information */ + uint16_t processor_family; char *processor_manufacturer; char *processor_version; uint16_t current_speed;