| #! /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 |