Skip to content

Commit

Permalink
Merge pull request #4035 from bgartzi/env_process_refactoring-reload_kvm
Browse files Browse the repository at this point in the history
env_process: Refactor kvm module reload/restore steps
  • Loading branch information
YongxueHong authored Dec 8, 2024
2 parents 1760004 + 6d21daa commit 2c4c8fe
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 20 deletions.
22 changes: 2 additions & 20 deletions virttest/env_process.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
from six.moves import xrange

from virttest import (
arch,
cpu,
data_dir,
error_context,
Expand All @@ -31,7 +30,6 @@
qemu_storage,
storage,
test_setup,
utils_kernel_module,
utils_libguestfs,
utils_logfile,
utils_misc,
Expand All @@ -46,6 +44,7 @@
from virttest._wrappers import lazy_import
from virttest.test_setup.core import SetupManager
from virttest.test_setup.gcov import ResetQemuGCov
from virttest.test_setup.kernel import ReloadKVMModules
from virttest.test_setup.libvirt_setup import LibvirtdDebugLogConfig
from virttest.test_setup.migration import MigrationEnvSetup
from virttest.test_setup.networking import (
Expand Down Expand Up @@ -99,9 +98,6 @@
postprocess_vm_on_hook = None
postprocess_vm_off_hook = None

#: A list to handle kvm and kvm_probe modules reload with certain parameters
KVM_MODULE_HANDLERS = []

#: QEMU version regex. Attempts to extract the simple and extended version
#: information from the output produced by `qemu -version`
QEMU_VERSION_RE = r"QEMU (?:PC )?emulator version\s([0-9]+\.[0-9]+\.[0-9]+)\s?\((.*?)\)"
Expand Down Expand Up @@ -1030,24 +1026,13 @@ def preprocess(test, params, env):
_setup_manager.register(IPSniffer)
_setup_manager.register(MigrationEnvSetup)
_setup_manager.register(UnrequestedVMHandler)
_setup_manager.register(ReloadKVMModules)
_setup_manager.do_setup()

vm_type = params.get("vm_type")

base_dir = data_dir.get_data_dir()

global KVM_MODULE_HANDLERS
kvm_modules = arch.get_kvm_module_list()
for module in reversed(kvm_modules):
param_prefix = module if module == "kvm" else "kvm_probe"
module_force_load = params.get_boolean("%s_module_force_load" % param_prefix)
module_parameters = params.get("%s_module_parameters" % param_prefix, "")
module_handler = utils_kernel_module.reload(
module, module_force_load, module_parameters
)
if module_handler is not None:
KVM_MODULE_HANDLERS.append(module_handler)

version_info = {}
# Get the KVM kernel module version
if os.path.exists("/dev/kvm"):
Expand Down Expand Up @@ -1707,9 +1692,6 @@ def postprocess(test, params, env):
err += "\nTHP cleanup: %s" % str(details).replace("\\n", "\n ")
LOG.error(details)

for kvm_module in KVM_MODULE_HANDLERS:
kvm_module.restore()

if params.get("setup_ksm") == "yes":
try:
ksm = test_setup.KSMConfig(params, env)
Expand Down
28 changes: 28 additions & 0 deletions virttest/test_setup/kernel.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
from virttest import arch, utils_kernel_module
from virttest.test_setup.core import Setuper


class ReloadKVMModules(Setuper):
def __init__(self, test, params, env):
super().__init__(test, params, env)
self.kvm_module_handlers = []

def setup(self):
kvm_modules = arch.get_kvm_module_list()
for module in reversed(kvm_modules):
param_prefix = module if module == "kvm" else "kvm_probe"
module_force_load = self.params.get_boolean(
"%s_module_force_load" % param_prefix
)
module_parameters = self.params.get(
"%s_module_parameters" % param_prefix, ""
)
module_handler = utils_kernel_module.reload(
module, module_force_load, module_parameters
)
if module_handler is not None:
self.kvm_module_handlers.append(module_handler)

def cleanup(self):
for kvm_module in self.kvm_module_handlers:
kvm_module.restore()

0 comments on commit 2c4c8fe

Please sign in to comment.