Skip to content

Commit

Permalink
KVM: Add CPU offline/online cases with TD/VM booting
Browse files Browse the repository at this point in the history
* KVM: Add CPU offline/online cases with TD/VM booting

Signed-off-by: Xudong Hao <[email protected]>
  • Loading branch information
xhao22 authored Dec 12, 2024
1 parent fd655e1 commit 58b9a68
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 0 deletions.
18 changes: 18 additions & 0 deletions KVM/qemu/host_cpu_offline_online.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
- host_cpu_offline_online:
type = host_cpu_offline_online
virt_test_type = qemu
vm_accelerator = kvm
# Don't create/remove guest images
force_create_image = no
remove_image = no
# Automatically start VM
start_vm = yes
# Stop VM after testing
kill_vm = yes
variants:
- vm:
- tdvm:
machine_type_extra_params = "kernel-irqchip=split"
vm_secure_guest_type = tdx
auto_cpu_model = "no"
cpu_model = host
45 changes: 45 additions & 0 deletions KVM/qemu/tests/host_cpu_offline_online.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#!/usr/bin/python3

# SPDX-License-Identifier: GPL-2.0-only
# Copyright (c) 2024 Intel Corporation

# Author: Xudong Hao <[email protected]>
#
# History: Dec. 2024 - Xudong Hao - creation

import random
from avocado.utils import cpu

from virttest.cpu import check_if_vm_vcpu_match


def run(test, params, env):
"""
pCPU offline/online test:
1) Launch a guest with many CPU.
2) Offline 3 random online pCPU.
3) Check guest's status
4) Online the offlined pCPU again.
:param test: QEMU test object
:param params: Dictionary with the test parameters
:param env: Dictionary with test environment.
"""
vm = env.get_vm(params["main_vm"])
vcpus = params["smp"]
vm.verify_alive()
timeout = params.get_numeric("login_timeout", 240)
session = vm.wait_for_login(timeout=timeout)

host_cpu_list = cpu.online_list()
processor_list = random.sample(host_cpu_list, 3)
for processor in processor_list:
cpu.offline(processor)
test.log.info("CPUs {} have been offline.".format(processor_list))
if not check_if_vm_vcpu_match(vcpus, vm):
test.fail("vCPU quantity on guest mismatch after offline")

for processor in processor_list:
cpu.online(processor)
test.log.info("CPUs {} have been online.".format(processor_list))
session.close()

0 comments on commit 58b9a68

Please sign in to comment.