#!/usr/bin/env bash get_qemu_machine () { if [ "$MACHINE" ]; then echo $MACHINE else echo pseries fi } if [ -z "$KUT_STANDALONE" ]; then if [ ! -f config.mak ]; then echo "run ./configure && make first. See ./configure -h" exit 2 fi source config.mak source scripts/arch-run.bash fi set_qemu_accelerator || exit $? MACHINE=$(get_qemu_machine) || exit $? if [[ "$MACHINE" == "powernv"* ]] && [ "$ACCEL" = "kvm" ]; then echo "PowerNV machine does not support KVM. ACCEL=tcg must be specified." exit 2 fi qemu=$(search_qemu_binary) || exit $? if ! $qemu -machine '?' 2>&1 | grep $MACHINE > /dev/null; then echo "$qemu doesn't support '-machine $MACHINE'. Exiting." exit 2 fi A="-accel $ACCEL$ACCEL_PROPS" M="-machine $MACHINE" B="" D="" if [[ "$MACHINE" == "pseries"* ]] ; then if [[ "$ACCEL" == "tcg" ]] ; then M+=",cap-cfpc=broken,cap-sbbc=broken,cap-ibs=broken,cap-ccf-assist=off" elif [[ "$ACCEL" == "kvm" ]] ; then M+=",cap-ccf-assist=off" fi B+="-bios $FIRMWARE" fi if [[ "$MACHINE" == "powernv"* ]] ; then D+="-device ipmi-bmc-sim,id=bmc0 -device isa-ipmi-bt,bmc=bmc0,irq=10" fi command="$qemu -nodefaults $A $M $B $D" command+=" -display none -serial stdio -kernel" command="$(migration_cmd) $(timeout_cmd) $command" # powerpc tests currently exit with rtas-poweroff, which exits with 0. # run_qemu treats that as a failure exit and returns 1, so we need # to fixup the fixup below by parsing the true exit code from the output. # The second fixup is also a FIXME, because once we add chr-testdev # support for powerpc, we won't need the second fixup. run_qemu_status $command "$@"