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>
[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>
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>
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>
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>
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>
# 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>
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>
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>
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>
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>
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>
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>