| """ |
| 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() |