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

Guest test td func 1213 #154

Merged
merged 4 commits into from
Dec 21, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
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;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it worthwhile to create a separate kernel module for this?
I have an idea about creating a common test module in LKVS.
Let's have a discussion later.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that would be nice, let's discuss your common test module solution

}

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 || \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi Hongyu, it seems that you haven't created the module. I guess it needs to be compiled before inserting it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there is a test module (the following: guest-test/tdx/tdx_halt_test_module/halt_test.c) being compiled before above test script execution

{ 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