----- Original Message -----
> From: Yunping Zheng <[email protected]>
> 
> Using this patch you can enable or disable pci msi before test.
> if you want to disable pci msi before test,just set:
>     pci_msi_sensitive = yes
>     disable_pci_msi = yes
> in subtests.cfg.
> when disable_pci_msi =yes, will modify the kernel params in grub.conf
> and append "pci=nomsi."
> when you using, you need sure you python support guestfs.
> 
> chang_log:
>   V2 from V1
>       using python guestfs lib.
> 
> Signed-off-by: Yunping Zheng <[email protected]>
> ---
>  virttest/env_process.py |   53 ++++++++++++++++++++---
>  virttest/utils_disk.py  |  109
>  ++++++++++++++++++++++++++++++++++++++++++++++-
>  2 files changed, 156 insertions(+), 6 deletions(-)
> 
> diff --git a/virttest/env_process.py b/virttest/env_process.py
> index 0b3bd4e..1f89b82 100644
> --- a/virttest/env_process.py
> +++ b/virttest/env_process.py
> @@ -3,7 +3,7 @@ from autotest.client import utils
>  from autotest.client.shared import error
>  import aexpect, kvm_monitor, ppm_utils, test_setup, virt_vm, kvm_vm
>  import libvirt_vm, video_maker, utils_misc, storage, kvm_storage
> -import remote, ovirt
> +import remote, ovirt, utils_disk
>  
>  try:
>      import PIL.Image
> @@ -17,7 +17,7 @@ _screendump_thread = None
>  _screendump_thread_termination_event = None
>  
>  
> -def preprocess_image(test, params, image_name):
> +def preprocess_image(test, params, env, image_name):
>      """
>      Preprocess a single QEMU image according to the instructions in
>      params.
>  
> @@ -44,6 +44,14 @@ def preprocess_image(test, params, image_name):
>              if not image.create(params):
>                  raise error.TestError("Could not create image")
>  
> +        #if you want set "pci=nomsi" before test, set
> "disable_pci_msi = yes"
> +        #and pci_msi_sensitive = "yes"
> +        if params.get("pci_msi_sensitive", "no") == "yes":
> +            disable_pci_msi = params.get("disable_pci_msi", "no")
> +            enable_disable_pci_msi(test, params, env,
> image_filename,
> +                                   disable_pci_msi)
> +
> +
>  
>  def preprocess_vm(test, params, env, name):
>      """
> @@ -111,7 +119,7 @@ def preprocess_vm(test, params, env, name):
>          vm.params = params
>  
>  
> -def postprocess_image(test, params, image_name):
> +def postprocess_image(test, params, env, image_name):
>      """
>      Postprocess a single QEMU image according to the instructions in
>      params.
>  
> @@ -225,14 +233,14 @@ def process(test, params, env, image_func,
> vm_func, vm_first=False):
>                      if vm is not None and vm.is_alive():
>                          vm.pause()
>                      try:
> -                        image_func(test, image_params, image_name)
> +                        image_func(test, image_params, env,
> image_name)
>                      finally:
>                          if vm is not None and vm.is_alive():
>                              vm.resume()
>          else:
>              for image_name in params.objects("images"):
>                  image_params = params.object_params(image_name)
> -                image_func(test, image_params, image_name)
> +                image_func(test, image_params, env, image_name)
>  
>      if not vm_first:
>          _call_image_func()
> @@ -588,3 +596,38 @@ def _take_screendumps(test, params, env):
>                  _screendump_thread_termination_event = None
>                  break
>              _screendump_thread_termination_event.wait(delay)
> +
> +def enable_disable_pci_msi(test, params, env, image_filename,
> disable_pci_msi):
> +    """
> +    Add or delete "pci=nomsi" in the kernel config line, before
> guest is start.
> +
> +    @Parm  image_filename: image you want to modify.
> +    @Param disable_pci_msi: flag of if disable pci msi.if
> disable_pci_msi is
> +                            True will add pci=nomsi in kernel config
> line.
> +    """
> +
> +    grub_file = params.get("grub_file", "/boot/grub/grub.conf")
> +    kernel_cfg_pos_reg =  params.get("kernel_cfg_pos_reg",
> +                                      "\s*kernel\s*\/vmlinuz-\d+.*")
> +    msi_keyword = params.get("msi_keyword", " pci=nomsi")
> +
> +    f = utils_disk.Guest_Disk(image_filename)
> +    kernel_config_ori = f.read_file(grub_file)
> +    kernel_config_line = re.findall(kernel_cfg_pos_reg,
> kernel_config_ori)[0]
> +    kernel_need_modify = False
> +
> +    if disable_pci_msi == "yes":
> +        if not re.findall(msi_keyword, kernel_config_line):
> +            kernel_config_set = kernel_config_line + msi_keyword
> +            kernel_need_modify = True
> +    elif disable_pci_msi == "no":
> +        if re.findall(msi_keyword, kernel_config_line):
> +            kernel_config_set = re.sub(msi_keyword, "",
> kernel_config_line)
> +            kernel_need_modify = True
> +    if kernel_need_modify:
> +        for vm in env.get_all_vms():
> +            if vm.is_alive():
> +                vm.destroy()
> +        time.sleep(1)
> +        f.replace_image_file_content(grub_file, kernel_config_line,
> +                                     kernel_config_set)


Better to update grub file by 'grubby', it's also support lilo and elilo.

_______________________________________________
Autotest-kernel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/autotest-kernel

Reply via email to