""" Utilities useful to client control files that test KVM. """ from autotest_lib.client.bin import utils from autotest_lib.client.common_lib import error def get_kvm_arch(): """ Determines the kvm architecture kernel module that should be loaded. @return: "kvm_amd", "kvm_intel", or raise TestError exception """ arch_type = "" for line in open("/proc/cpuinfo"): if arch_type == "": if "AuthenticAMD" in line: arch_type = "kvm_amd" elif "GenuineIntel" in line: arch_type = "kvm_intel" elif "flags" in line: if arch_type == "kvm_amd" and "svm" in line: return arch_type if arch_type == "kvm_intel" and "vmx" in line: return arch_type raise error.TestError("CPU Must be AMD or Intel, and must be KVM ready.") def load_kvm(): """ Loads the appropriate KVM kernel modules """ kvm_status = utils.system('modprobe kvm') kvm_amdintel_status = utils.system("modprobe " + kvm_arch) if kvm_status: return kvm_status else: return kvm_amdintel_status def unload_kvm(): """ Unloads the appropriate KVM kernel modules """ kvm_amdintel_status = utils.system("rmmod " + kvm_arch) kvm_status = utils.system('rmmod kvm') if kvm_status: return kvm_status else: return kvm_amdintel_status kvm_arch = get_kvm_arch()