free(ct->bios_vendor);
free(ct->machinetype); /* s390 */
free(ct->family);
+ free(ct->microcode);
free(ct->model);
free(ct->modelname);
free(ct->bios_modelname);
fprintf(f, " machinetype: %s\n", ct->machinetype);
if (ct->family)
fprintf(f, " family: %s\n", ct->family);
+ if (ct->microcode)
+ fprintf(f, " microcode: %s\n", ct->microcode);
if (ct->model)
fprintf(f, " model: %s\n", ct->model);
if (ct->modelname)
PAT_FLAGS,
PAT_IMPLEMENTER,
PAT_MAX_THREAD_ID,
+ PAT_MICROCODE,
PAT_MHZ,
PAT_MHZ_DYNAMIC,
PAT_MHZ_STATIC,
DEF_PAT_CPUTYPE( "isa", PAT_ISA, isa), /* riscv */
DEF_PAT_CPUTYPE( "marchid", PAT_FAMILY, family), /* riscv */
DEF_PAT_CPUTYPE( "max thread id", PAT_MAX_THREAD_ID, mtid), /* s390 */
+ DEF_PAT_CPUTYPE( "microcode", PAT_MICROCODE, microcode),
DEF_PAT_CPUTYPE( "mimpid", PAT_MODEL, model), /* riscv */
DEF_PAT_CPUTYPE( "model", PAT_MODEL, model),
DEF_PAT_CPUTYPE( "model name", PAT_MODEL_NAME, modelname),
== DESCRIPTION
-*lscpu* gathers CPU architecture information from _sysfs_, _/proc/cpuinfo_ and any applicable architecture-specific libraries (e.g. *librtas* on Powerpc). The command output can be optimized for parsing or for easy readability by humans. The information includes, for example, the number of CPUs, threads, cores, sockets, and Non-Uniform Memory Access (NUMA) nodes. There is also information about the CPU caches and cache sharing, family, model, bogoMIPS, byte order, and stepping.
+*lscpu* gathers CPU architecture information from _sysfs_, _/proc/cpuinfo_ and any applicable architecture-specific libraries (e.g. *librtas* on Powerpc). The command output can be optimized for parsing or for easy readability by humans. The information includes, for example, the number of CPUs, threads, cores, sockets, and Non-Uniform Memory Access (NUMA) nodes. There is also information about the CPU caches and cache sharing, family, model, bogoMIPS, byte order, stepping and microcode.
The default output formatting on a terminal is subject to change and may be optimized for better readability. The output for non-terminals (e.g., pipes) is never affected by this optimization and it is always in "Field: data\n" format. Use for example "*lscpu | less*" to see the default output without optimizations.
include::man-common/help-version.adoc[]
+== COLUMNS
+
+A list of valid column labels can be viewed with the *--help* option.
+
== BUGS
The basic overview of CPU models is based on heuristics, taking into account differences such as
if (ct->stepping)
add_summary_s(tb, sec, _("Stepping:"), ct->stepping);
+ if (ct->microcode)
+ add_summary_s(tb, sec, _("Microcode version:"), ct->microcode);
if (ct->freqboost >= 0)
add_summary_s(tb, sec, _("Frequency boost:"), ct->freqboost ?
_("enabled") : _("disabled"));
*/
set = cpuset_alloc(cxt->maxcpus, NULL, NULL);
if (!set)
- err(EXIT_FAILURE, _("failed to callocate cpu set"));
+ err(EXIT_FAILURE, _("failed to allocate cpu set"));
CPU_ZERO_S(cxt->setsize, set);
for (i = 0; i < cxt->npossibles; i++) {
struct lscpu_cpu *cpu = cxt->cpus[i];
print_summary_cputype(cxt, cxt->cputypes[i], tb, sec);
sec = NULL;
- /* Section: vitualiazation */
+ /* Section: virtualization */
if (cxt->virt) {
sec = add_summary_e(tb, NULL, _("Virtualization features:"));
if (cxt->virt->cpuflag && !strcmp(cxt->virt->cpuflag, "svm"))
char *bios_vendor; /* aarch64 */
char *machinetype; /* s390 */
char *family;
+ char *microcode;
char *model;
char *modelname;
char *bios_modelname; /* aarch64 */
Core(s) per socket: 2
Socket(s): 1
Stepping: 9
+Microcode version: 0x19
CPU(s) scaling MHz: 42%
CPU max MHz: 3800.0000
CPU min MHz: 1600.0000
Core(s) per socket: 4
Socket(s): 2
Stepping: 0
+Microcode version: 0x6000852
Frequency boost: enabled
CPU(s) scaling MHz: 52%
CPU max MHz: 3200.0000
Core(s) per socket: 4
Socket(s): 1
Stepping: 1
+Microcode version: 0xa6
CPU(s) scaling MHz: 45%
CPU max MHz: 4700.0000
CPU min MHz: 400.0000
Core(s) per socket: 24
Socket(s): 2
Stepping: 2
+Microcode version: 0x8001227
Frequency boost: enabled
CPU(s) scaling MHz: 126%
CPU max MHz: 2300.0000