#! /bin/bash
kvm_setup_powerpc () {
if grep '^platform[[:space:]]*:[[:space:]]*PowerNV' /proc/cpuinfo > /dev/null; then
# PowerNV platform, which is KVM HV capable
if [ -z "$SUBCORES" ]; then
SUBCORES=1
fi
# Step 1. Load the KVM HVmodule
if ! modprobe -b kvm_hv; then
return
fi
# On POWER8 a host core can only run threads of a single
# guest, meaning that SMT must be disabled on the host in
# order to run KVM guests. (Also applieds to POWER7, but we
# don't support that).
#
# POWER9 doesn't have this limitation (though it will for hash
# guests on radix host when that's implemented). So, only set
# up subcores and disable SMT for POWER*.
if grep '^cpu[[:space:]]*:[[:space:]]*POWER8' /proc/cpuinfo > /dev/null; then
# Step 2. Configure subcore mode
/usr/sbin/ppc64_cpu --subcores-per-core=$SUBCORES
# Step 3. Disable SMT (multithreading)
/usr/sbin/ppc64_cpu --smt=off
fi
fi
}
kvm_setup_s390x () {
if grep -q "^features.*sie" /proc/cpuinfo; then
modprobe kvm
fi
}
case $(uname -m) in
ppc64|ppc64le)
kvm_setup_powerpc
;;
s390x)
kvm_setup_s390x
;;
esac
exit 0