Commit Graph

281 Commits

Author SHA1 Message Date
Karel Zak e282eec2a2 lscpu: fix threads-per-core calculation
On Thu, Mar 24, 2011 at 01:45:34PM +0100, Jan Engelhardt wrote:
> On a 24-thread/6-core SPARC T1, lscpu would wrongly output "5
> threads per core".
>
> It seems that the 6c T1 is simply an 8c T1 where 2c are disabled
> (offering a lesser model for a lower price, and all that marketing
> fluff). So the machine description header of the 6c T1 reports 32
> threads, but only goes on to provide 24 elements thereafter, which
> is why Linux will report threads 24-31 as "offline". So far so good.
>
> But lscpu would take the number of all (online and offline) threads
> (32) and divides it by the number of online cores (6), which yields
> an odd 5.33 threads/core.
>
> Simply pick the number of online threads.

Based on Jan's patch.

Reported-by: Jan Engelhardt <jengelh@medozas.de>
Signed-off-by: Karel Zak <kzak@redhat.com>
2011-03-31 12:55:13 +02:00
Karel Zak 6c7d5ae9a2 move struct option to .rodata
It does not make sense to have writable large arrays of "struct
option" on the stack.

Signed-off-by: Karel Zak <kzak@redhat.com>
2011-03-03 15:00:30 +01:00
Petr Uzel 4581647a62 lscpu: use xstrdup from xalloc.h
Signed-off-by: Petr Uzel <petr.uzel@suse.cz>
2011-02-21 14:41:36 +01:00
Benno Schulenberg e8ab5ce3d0 textual: improve the wording of some error and usage messages
[kzak@redhat.com: - cleanup lscpu(1) usage text
                  - use <disk> rather than <device> in partx(8)
                    usage text]

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
Signed-off-by: Karel Zak <kzak@redhat.com>
2011-02-16 15:46:38 +01:00
Fabian Groffen eb76ca98b0 build-sys: provide alternatives for err, errx, warn and warnx
Solaris lacks err, errx, warn and warnx.  This also means the err.h header
doesn't exist.  Removed err.h include from all files, and included err.h from
c.h instead if it exists, otherwise alternatives are provided.

Signed-off-by: Fabian Groffen <grobian@gentoo.org>
2011-02-14 17:45:24 +01:00
Karel Zak 39561c706a lscpu: cleanup usage()
Signed-off-by: Karel Zak <kzak@redhat.com>
2011-02-08 15:36:28 +01:00
Karel Zak f633ad4e31 lscpu: fix 64bit CPU detection
Note that the code is still not able to detect 64bit on sparcs and
ppc.

Signed-off-by: Karel Zak <kzak@redhat.com>
2011-01-19 09:34:37 +01:00
Fabian Groffen aabe244176 build-sys: use WORDS_BIGENDIAN to determine platform byte-order
Autoconf contains the right magic to determine the endianness on many
platforms next to Linux.  This reverses previous commits to move away
from WORDS_BIGENDIAN:
"use __BYTE_ORDER rather than AC specific WORDS_BIGENDIAN"

This is necessary to compile on non Linux platforms like Darwin and
Solaris.

Signed-off-by: Fabian Groffen <grobian@gentoo.org>
2011-01-17 15:34:45 +01:00
Gerrit Renker 3d6e5c355d lscpu: avoid len = 0 as a consequence of maxcpus = 0
This problem was observed on an x86_64 Mobile AMD Sempron 3700+ where kernel_max
returned "0" as the index of the highest CPU.

As a consequence, several variables in lscpu, which relied on maxcpus >= 1 (in
particular the 'len' value) were set to 0, resulting in the following errors:

host>./lscpu
lscpu: failed to read: /sys/devices/system/cpu/online: No such file or directory
host> cat /sys/devices/system/cpu/kernel_max
0

The fix used by this patch is to interpret kernel_max as an index and maxcpus as
a count >= 1, tested to work.

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Signed-off-by: Karel Zak <kzak@redhat.com>
2010-12-31 00:22:52 +01:00
Karel Zak 80dde62f9c lscpu: use GPLv2+
CAI Qian and I agree that GPLv2+ is better for lscpu.c. This license
is more compatible (than v3) with the rest of the util-linux package.
We need to link the code with functions from lib/ -- mix GPLv3 and
GPLv2 is bad idea.

Note that it was only Cai and I who did significant changes to
lscpu.c, all others changes from others developers was trivial (fix
typos, add _(), ...).

Signed-off-by: CAI Qian <caiqian@redhat.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
2010-12-01 11:20:45 +01:00
Petr Uzel fe81c7d1b8 lscpu: really use 'mode' argument in path_fopen() 2010-10-07 10:24:57 +02:00
Karel Zak 5d4ba40ddc lscpu: support sysfs without cpu/online file
Signed-off-by: Karel Zak <kzak@redhat.com>
2010-08-20 21:15:51 +02:00
Davidlohr Bueso 9b8d4d5f18 lscpu: add byte order and bogoMIPS information
Signed-off-by: Davidlohr Bueso <dave@gnu.org>
Signed-off-by: Karel Zak <kzak@redhat.com>
2010-08-20 13:20:09 +02:00
Karel Zak 4f912c6ac5 lscpu: add -x and {On,Off}-line CPU(s) mask/list
Signed-off-by: Karel Zak <kzak@redhat.com>
2010-08-11 15:41:48 +02:00
Karel Zak aac1e59ebb lscpu: support offline CPUs
# echo 0 >/sys/devices/system/cpu/cpu3/online
 # echo 0 >/sys/devices/system/cpu/cpu2/online

 # grep processor /proc/cpuinfo
 processor       : 0
 processor       : 1

 # lscpu
 lscpu: error: cannot open
 /sys/devices/system/cpu/cpu2/cache/index0/shared_cpu_map: No such file or directory

This patch also add a new "On-line CPU(s):" line to the lscpu(1)
output.

Addresses: http://bugzilla.redhat.com/show_bug.cgi?id=623012
Signed-off-by: Karel Zak <kzak@redhat.com>
2010-08-11 12:43:25 +02:00
Francesco Cosoleto 2f8f138883 lscpu: replace LC_MESSAGES with LC_ALL in setlocate()
LC_CTYPE is necessary to print correctly some non English characters,
set LC_ALL for the sake of brevity.

Example:
    $ LANG=fr_FR lscpu -p | head -n 1
\# La suite est en format analysable, transmissible ? d'autres

instead of:
\# La suite est en format analysable, transmissible à d'autres

Signed-off-by: Francesco Cosoleto <cosoleto@gmail.com>
2010-06-30 12:51:35 +02:00
Francesco Cosoleto 4a939e047c lscpu: gettextize "CPU(s)"
Signed-off-by: Francesco Cosoleto <cosoleto@gmail.com>
2010-06-30 12:51:35 +02:00
Benno Schulenberg d8b25f6254 lscpu: fix typo, "faild" to "failed"
Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
2010-06-15 12:55:17 +02:00
Benno Schulenberg e6b0611b46 messages: gettextize a few skipped or forgotten ones
Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
2010-06-14 11:19:19 +02:00
Benno Schulenberg d0bb6987a8 textual: fix typos, and rephrase some things for clarity
Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
2010-06-14 11:17:00 +02:00
Karel Zak 7e03f38312 lscpu: use cpuset masks, read data for all CPUs
Signed-off-by: Karel Zak <kzak@redhat.com>
2010-06-01 11:11:26 +02:00
Karel Zak d50363cd62 lscpu: improve --sysroot code
Signed-off-by: Karel Zak <kzak@redhat.com>
2010-06-01 11:11:25 +02:00
Karel Zak e8aa16eedd lscpu: cleanup used names
Signed-off-by: Karel Zak <kzak@redhat.com>
2010-06-01 11:10:49 +02:00
Karel Zak ef173bde3f lscpu: cleanup path_scanstr()
Signed-off-by: Karel Zak <kzak@redhat.com>
2010-06-01 11:10:01 +02:00
Henne Vogelsang bc54770d9e lscpu: fix cpuid opcode detection
Fixes commit c9239f23ac. The author
didn't care for matching constraints when resorting the register
constraints.  The eax register (with the cpuid opcode) is now in
operand 1, not zero anymore.

Signed-off-by: Henne Vogelsang <hvogel@opensuse.org>
2010-03-01 11:35:54 +01:00
Karel Zak 79e8b41a4a lscpu: add {32,64}-bit CPU modes detection
This patch add "CPU op-mode(s):" field that prints all supported CPU
operation modes. The field is based on CPU flags:

	rm (real mode)          16-bit
	tm (transparent mode)   32-bit
	lm (long mode)          64-bit

Example:

	$ lscpu
	Architecture:          x86_64
	CPU op-mode(s):        32-bit, 64-bit
	CPU(s):                2
	Thread(s) per core:    1
	Core(s) per socket:    2
	CPU socket(s):         1
	NUMA node(s):          1
	Vendor ID:             GenuineIntel
	CPU family:            6
	Model:                 15
	Stepping:              11
	CPU MHz:               1600.000
	Virtualization:        VT-x
	L1d cache:             32K
	L1i cache:             32K
	L2 cache:              4096K

Signed-off-by: Karel Zak <kzak@redhat.com>
2010-01-07 17:34:03 +01:00
Mike Frysinger c9239f23ac lscpu: fix cpuid code on x86/PIC
If we build lscpu as PIE, we currently get a build failure:
lscpu.c: In function 'main':
lscpu.c:333: error: can't find a register in class 'BREG' while reloading 'asm'
lscpu.c:333: error: 'asm' operand has impossible constraints
make[2]: *** [lscpu.o] Error 1

So we need a little bit of register shuffling to keep gcc happy.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2009-05-11 10:52:02 +02:00
Matthias Koenig cf474aacfc lscpu: return EXIT_SUCCESS at the end
Signed-off-by: Matthias Koenig <mkoenig@suse.de>
2008-10-22 23:35:19 +02:00
Karel Zak c8b64f6d77 lscpu: add Hypervisor detection
This patch adds two new fields:

 * "Hypervisor vendor"  -- based on CPUID and hypervisor specific
   PCI devices. lscpu(1) supports KVM, XEN, Microsoft HV now.

 * "Virtualization type"
	- "none"	= Xen dom0
	- "full"	= full virtualization (KVM, Xen, ...)
	- "para"	= Xen paravirtualization

Co-Author: Ky Srinivasan <ksrinivasan@novell.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
2008-10-22 13:56:52 +02:00
Cai Qian 47b6e8b684 lscpu: --sysroot option and stable cache output
This patch added a --sysroot command-line option for testing purpose. It
also sorted cache names, and displayed cache information in a sorted
manner instead of randomly before. In addition, it had some other minor
fixes.

Signed-off-by: Cai Qian <qcai@redhat.com>
2008-08-14 12:22:29 +02:00
Cai Qian 5dd7507c18 lscpu: new command
Add a lscpu(1) utility program.

[kzak@redhat.com:
	- indent by linux-2.6/scripts/Lindent
	- add lscpu.{c,1} to sys-utils/Makefile.am
	- add NLS suport
	- complete code refactoring
]

Co-Author: Karel Zak <kzak@redhat.com>
Signed-off-by: Cai Qian <qcai@redhat.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
2008-07-18 03:01:49 +02:00