Skip to content

Commit

Permalink
[guest-test] New Test: add TDX #VE HALT handling TC
Browse files Browse the repository at this point in the history
add TDX #VE HALT handling TC based on tdx_halt_test_module

[Test Components] tdx
[Test Types] func
[Supported Devices] spr,emr,gnr,srf

Signed-off-by: Hongyu Ning <[email protected]>
  • Loading branch information
hongyuni authored and ysun committed Dec 21, 2023
1 parent f091173 commit a6ba181
Show file tree
Hide file tree
Showing 6 changed files with 86 additions and 1 deletion.
10 changes: 10 additions & 0 deletions guest-test/tdx/tdx.test_executor.sh
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,16 @@ case "$TESTCASE" in
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
;;
TD_VE_HALT)
guest_test_prepare tdx_test_module.sh
guest_test_source_code tdx_halt_test_module halt_test || \
{ die "Failed to prepare guest test kernel module for $TESTCASE"; return 1; }
guest_test_entry tdx_test_module.sh "halt_test" || \
{ die "Failed on $TESTCASE tdx_test_module.sh halt_test"; return 1; }
if [[ $GCOV == "off" ]]; then
guest_test_close || { die "Failed on close guest VM"; return 1; }
fi
;;
:)
test_print_err "Must specify the test scenario option by [-t]"
usage && exit 1
Expand Down
1 change: 1 addition & 0 deletions guest-test/tdx/tdx_halt_test_module/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
halt_test.ko
12 changes: 12 additions & 0 deletions guest-test/tdx/tdx_halt_test_module/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# SPDX-License-Identifier: GPL-2.0-only

MODULES = halt_test.ko

obj-m += halt_test.o

KDIR ?= /lib/modules/$(shell uname -r)/build

all:
make -C $(KDIR) M=$(PWD) modules
clean:
make -C $(KDIR) M=$(PWD) clean
22 changes: 22 additions & 0 deletions guest-test/tdx/tdx_halt_test_module/halt_test.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// SPDX-License-Identifier: GPL-2.0-only
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>

static int __init test_tdx_hlt_init(void)
{
pr_info("[TD guest test] Start to trigger hlt instr.\n");
asm("cli");
asm("hlt");
return 0;
}

static void __exit test_tdx_hlt_exit(void)
{
pr_info("[TD guest test] Complete of hlt instr. test, test module exit\n");
}

module_init(test_tdx_hlt_init);
module_exit(test_tdx_hlt_exit);
MODULE_INFO(intree, "Y");
MODULE_LICENSE("GPL");
38 changes: 38 additions & 0 deletions guest-test/tdx/tdx_test_module.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/usr/bin/bash
# SPDX-License-Identifier: GPL-2.0-only
# Copyright (c) 2023 Intel Corporation

# Author: Hongyu Ning <[email protected]>
#
# History: 13, Dec., 2023 - Hongyu Ning - creation


# @desc This script do test by kernel test module in TDX Guest VM

###################### Variables ######################
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
echo "$SCRIPT_DIR"
source common.sh
test_module=$1

###################### Functions ######################
module_check() {
lsmod | grep "$test_module" || \
{ die "test module $test_module not found in lsmod"; return 1; }
test_print_trc "test module loaded and test should be completed now"
}

###################### Do Works ######################
if [[ -f "$test_module".ko ]]; then
test_print_trc "Kernel test module: $test_module.ko is ready for test"
insmod "$test_module".ko || \
{ die "Fail to insmod test module $test_module.ko"; exit 1; }
test_print_trc "$test_module.ko inserted and hlt instruction triggered"
module_check
sleep 3
rmmod "$test_module" || \
{ die "Fail to rmmod test module $test_module.ko"; exit 1; }
else
die "Kernel test module $test_module.ko not found"
exit 1
fi
4 changes: 3 additions & 1 deletion guest-test/tdx/tests
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,6 @@ guest.test_launcher.sh -v 32 -s 1 -m 96 -d on -t tdx -f tdx -x TD_MEM_ACPT_T_32C
guest.test_launcher.sh -v 32 -s 1 -m 96 -d on -t tdx -f tdx -x TD_MEM_ACPT_T_32C_96G_256W -c "accept_memory=lazy" -p off
guest.test_launcher.sh -v 1 -s 1 -m 16 -d on -t tdx -f tdx -x TD_MEM_ACPT_FUNC -c "accept_memory=lazy" -p off
guest.test_launcher.sh -v 1 -s 1 -m 16 -d on -t tdx -f tdx -x TD_MEM_ACPT_CAL -c "accept_memory=lazy" -p off
guest.test_launcher.sh -v 1 -s 1 -m 16 -d on -t tdx -f tdx -x TD_MEM_ACPT_NEG -c "accept_memory=eager" -p off
guest.test_launcher.sh -v 1 -s 1 -m 16 -d on -t tdx -f tdx -x TD_MEM_ACPT_NEG -c "accept_memory=eager" -p off
# case implemented by tdx_test_module.sh
guest.test_launcher.sh -v 1 -s 1 -m 1 -d on -t tdx -f tdx -x TD_VE_HALT -c "accept_memory=lazy" -p off

0 comments on commit a6ba181

Please sign in to comment.