52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
"""
|
|
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()
|