Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

KVM: Add CPU offline/online cases with TD/VM booting #430

Merged
merged 2 commits into from
Dec 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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()
Loading