2016-06-01 15:57:00 +02:00
#!/bin/bash
#
# The cpuid tool can be usually found in a package called "cpuid". If your
# distro does not provide such package, you can find the sources or binary
# packages at http://www.etallen.com/cpuid.html
grep 'model name' /proc/cpuinfo | head -n1
cpuid -1r
echo
2019-03-26 10:18:10 +01:00
2019-12-03 16:29:12 +00:00
python3 <<EOF
2019-03-26 10:18:10 +01:00
from struct import pack, unpack
from fcntl import ioctl
import sys, errno
IA32_ARCH_CAPABILITIES_MSR = 0x10a
KVM_GET_MSRS = 0xc008ae88
def print_msr( msr, via = None) :
if via is None:
print( "MSR:" )
else :
print( "MSR via %s:" % via)
print( " 0x%x: 0x%016x" % ( IA32_ARCH_CAPABILITIES_MSR, msr) )
print( )
try:
fd = open( "/dev/cpu/0/msr" , "rb" )
fd.seek( IA32_ARCH_CAPABILITIES_MSR)
buf = fd.read( 8)
msr = unpack( "=Q" , buf) [ 0]
print_msr( msr)
sys.exit( 0)
except IOError as e:
# The MSR is not supported on the host
if e.errno = = errno.EIO:
sys.exit( 0)
try:
fd = open( "/dev/kvm" , "r" )
bufIn = pack( "=LLLLQ" , 1, 0, IA32_ARCH_CAPABILITIES_MSR, 0, 0)
bufOut = ioctl( fd, KVM_GET_MSRS, bufIn)
msr = unpack( "=LLLLQ" , bufOut) [ 4]
print_msr( msr, via = "KVM" )
except IOError as e:
pass
EOF
2016-06-01 15:57:00 +02:00
qemu = qemu-system-x86_64
for cmd in /usr/bin/$qemu /usr/bin/qemu-kvm /usr/libexec/qemu-kvm; do
if [ [ -x $cmd ] ] ; then
qemu = $cmd
break
fi
done
qom_get( )
{
path = '/machine/unattached/device[0]'
echo '{"execute":"qom-get","arguments":{"path":"' $path '",' \
'"property":"' $1 '"},"id":"' $1 '"}'
}
2017-02-01 17:48:41 +01:00
model_expansion( )
{
mode = $1
model = $2
echo '{"execute":"query-cpu-model-expansion","arguments":' \
'{"type":"' " $mode " '","model":' " $model " '},"id":"model-expansion"}'
}
model = $(
$qemu -machine accel = kvm -cpu host -nodefaults -nographic -qmp stdio <<EOF
{ "execute" :"qmp_capabilities" }
$( model_expansion static '{"name":"host"}' )
{ "execute" :"quit" }
EOF
)
model = $(
echo " $model " | \
sed -ne 's/^{"return": {"model": {\(.*{.*}\)}}, .*/{\1}/p'
)
2016-06-01 15:57:00 +02:00
$qemu -machine accel = kvm -cpu host -nodefaults -nographic -qmp stdio <<EOF
{ "execute" :"qmp_capabilities" }
2017-02-01 17:48:41 +01:00
$(
if [ " x $model " != x ] ; then
model_expansion full " $model "
else
qom_get feature-words
qom_get family
qom_get model
qom_get stepping
qom_get model-id
fi
)
2017-09-26 21:08:37 +02:00
{ "execute" :"query-cpu-definitions" ,"id" :"definitions" }
2016-06-01 15:57:00 +02:00
{ "execute" :"quit" }
EOF