From a2e739f68b987e47d9689725744bfdb558420267 Mon Sep 17 00:00:00 2001 From: Hongyu Ning Date: Mon, 6 Jan 2025 14:52:50 +0800 Subject: [PATCH] [LKVS] [guest-test] New Test: add 21 new TCs of VM guest kdump and kexec 9 new TCs of VM guest kdump functional test 11 new TCs of VM guest kexec functional test mainly used as cross check reference of same configuration TD VM test scenarios Signed-off-by: Hongyu Ning --- BM/tdx-guest/tdx.guest_test_executor.sh | 5 ++ BM/tdx-guest/tests | 111 ++++++++++++++++-------- BM/tdx-guest/vm_kdump_test_entry.sh | 60 +++++++++++++ BM/tdx-guest/vm_kexec_test.sh | 100 +++++++++++++++++++++ BM/tdx-guest/vm_kexec_test_entry.sh | 62 +++++++++++++ 5 files changed, 304 insertions(+), 34 deletions(-) create mode 100755 BM/tdx-guest/vm_kdump_test_entry.sh create mode 100755 BM/tdx-guest/vm_kexec_test.sh create mode 100755 BM/tdx-guest/vm_kexec_test_entry.sh diff --git a/BM/tdx-guest/tdx.guest_test_executor.sh b/BM/tdx-guest/tdx.guest_test_executor.sh index 8710bfc7..f6472139 100755 --- a/BM/tdx-guest/tdx.guest_test_executor.sh +++ b/BM/tdx-guest/tdx.guest_test_executor.sh @@ -414,6 +414,11 @@ case "$TESTCASE" in guest_test_entry tdx_kexec_test.sh "-v $VCPU -m $MEM -o yes -k $KEXEC_CNT" || \ die "Failed on $TESTCASE tdx_kexec_test.sh -v $VCPU -m $MEM -o yes -k $KEXEC_CNT" ;; + VM_KEXEC_"$VCPU"C_"$MEM"G_CYCLE_2 | VM_KEXEC_"$VCPU"C_"$MEM"G_CYCLE_1 | VM_KEXEC_"$VCPU"C_"$MEM"G_CYCLE_0) + guest_test_prepare vm_kexec_test.sh + guest_test_entry vm_kexec_test.sh "-v $VCPU -m $MEM -k $KEXEC_CNT" || \ + die "Failed on $TESTCASE vm_kexec_test.sh -v $VCPU -m $MEM -k $KEXEC_CNT" + ;; :) test_print_err "Must specify the test scenario option by [-t]" usage && exit 1 diff --git a/BM/tdx-guest/tests b/BM/tdx-guest/tests index a7e47b9b..1aba90d6 100644 --- a/BM/tdx-guest/tests +++ b/BM/tdx-guest/tests @@ -110,23 +110,23 @@ # case info: [NA for upstream kernel] TD guest booting with disable device filter test for debug purpose ./guest-test/guest.test_launcher.sh -v 1 -s 1 -m 1 -d on -t tdx -e tdx-guest -f tdx -x TD_NO_CCFILTER -c "noccfilter" -p off # case implemented by tdx_kdump_test_entry.sh -# case info: [NA for upstream kernel yet] tdx guest kdump functional check with vcpu 1 sockets 1 and memory size 1 GB +# case info: tdx guest kdump functional check with vcpu 1 sockets 1 and memory size 1 GB ./tdx-guest/tdx_kdump_test_entry.sh -v 1 -m 1 -r /abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm -# case info: [NA for upstream kernel yet] tdx guest kdump functional check with vcpu 1 sockets 1 and memory size 32 GB +# case info: tdx guest kdump functional check with vcpu 1 sockets 1 and memory size 32 GB ./tdx-guest/tdx_kdump_test_entry.sh -v 1 -m 32 -r /abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm -# case info: [NA for upstream kernel yet] tdx guest kdump functional check with vcpu 1 sockets 1 and memory size 96 GB +# case info: tdx guest kdump functional check with vcpu 1 sockets 1 and memory size 96 GB ./tdx-guest/tdx_kdump_test_entry.sh -v 1 -m 96 -r /abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm -# case info: [NA for upstream kernel yet] tdx guest kdump functional check with vcpu 32 sockets 1 and memory size 1 GB +# case info: tdx guest kdump functional check with vcpu 32 sockets 1 and memory size 1 GB ./tdx-guest/tdx_kdump_test_entry.sh -v 32 -m 1 -r /abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm -# case info: [NA for upstream kernel yet] tdx guest kdump functional check with vcpu 32 sockets 1 and memory size 32 GB +# case info: tdx guest kdump functional check with vcpu 32 sockets 1 and memory size 32 GB ./tdx-guest/tdx_kdump_test_entry.sh -v 32 -m 32 -r /abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm -# case info: [NA for upstream kernel yet] tdx guest kdump functional check with vcpu 32 sockets 1 and memory size 96 GB +# case info: tdx guest kdump functional check with vcpu 32 sockets 1 and memory size 96 GB ./tdx-guest/tdx_kdump_test_entry.sh -v 32 -m 96 -r /abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm -# case info: [NA for upstream kernel yet] tdx guest kdump functional check with vcpu 128 sockets 1 and memory size 4 GB +# case info: tdx guest kdump functional check with vcpu 128 sockets 1 and memory size 4 GB ./tdx-guest/tdx_kdump_test_entry.sh -v 128 -m 4 -r /abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm -# case info: [NA for upstream kernel yet] tdx guest kdump functional check with vcpu 128 sockets 1 and memory size 32 GB +# case info: tdx guest kdump functional check with vcpu 128 sockets 1 and memory size 32 GB ./tdx-guest/tdx_kdump_test_entry.sh -v 128 -m 32 -r /abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm -# case info: [NA for upstream kernel yet] tdx guest kdump functional check with vcpu 128 sockets 1 and memory size 96 GB +# case info: tdx guest kdump functional check with vcpu 128 sockets 1 and memory size 96 GB ./tdx-guest/tdx_kdump_test_entry.sh -v 128 -m 96 -r /abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm # case implemented by tdx_stress_test.sh # case info: In TDVM, stress test on memory with stress-ng memrate stressor under config of 1VCPU + 16G MEM + 8 stressors @@ -138,52 +138,95 @@ # case info: In TDVM, stress test on memory with stress-ng network socket + iomix stressor under config of 1VCPU + 96G MEM + 48 stressors ./guest-test/guest.test_launcher.sh -v 1 -s 1 -m 96 -d on -t tdx -e tdx-guest -f tdx -x TD_STRESS_SOCK_IOMIX_1C_96G_48W -c "accept_memory=lazy" -p off # case implemented by tdx_kexec_test_entry.sh -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 1 memory size 1 GB memory drain before kexec test 2 kexec cycles +# case info: tdx guest kexec functional check with vcpu 1 memory size 1 GB memory drain before kexec test 2 kexec cycles ./tdx-guest/tdx_kexec_test_entry.sh -v 1 -m 1 -o yes -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 1 memory size 4 GB memory drain before kexec test 2 kexec cycles +# case info: tdx guest kexec functional check with vcpu 1 memory size 4 GB memory drain before kexec test 2 kexec cycles ./tdx-guest/tdx_kexec_test_entry.sh -v 1 -m 4 -o yes -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 1 memory size 96 GB memory drain before kexec test 2 kexec cycles +# case info: tdx guest kexec functional check with vcpu 1 memory size 96 GB memory drain before kexec test 2 kexec cycles ./tdx-guest/tdx_kexec_test_entry.sh -v 1 -m 96 -o yes -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 2 memory size 1 GB memory drain before kexec test 2 kexec cycles +# case info: tdx guest kexec functional check with vcpu 2 memory size 1 GB memory drain before kexec test 2 kexec cycles ./tdx-guest/tdx_kexec_test_entry.sh -v 2 -m 1 -o yes -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 2 memory size 4 GB memory drain before kexec test 2 kexec cycles +# case info: tdx guest kexec functional check with vcpu 2 memory size 4 GB memory drain before kexec test 2 kexec cycles ./tdx-guest/tdx_kexec_test_entry.sh -v 2 -m 4 -o yes -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 2 memory size 96 GB memory drain before kexec test 2 kexec cycles +# case info: tdx guest kexec functional check with vcpu 2 memory size 96 GB memory drain before kexec test 2 kexec cycles ./tdx-guest/tdx_kexec_test_entry.sh -v 2 -m 96 -o yes -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 32 memory size 1 GB memory drain before kexec test 2 kexec cycles +# case info: tdx guest kexec functional check with vcpu 32 memory size 1 GB memory drain before kexec test 2 kexec cycles ./tdx-guest/tdx_kexec_test_entry.sh -v 32 -m 1 -o yes -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 32 memory size 4 GB memory drain before kexec test 2 kexec cycles +# case info: tdx guest kexec functional check with vcpu 32 memory size 4 GB memory drain before kexec test 2 kexec cycles ./tdx-guest/tdx_kexec_test_entry.sh -v 32 -m 4 -o yes -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 32 memory size 96 GB memory drain before kexec test 2 kexec cycles +# case info: tdx guest kexec functional check with vcpu 32 memory size 96 GB memory drain before kexec test 2 kexec cycles ./tdx-guest/tdx_kexec_test_entry.sh -v 32 -m 96 -o yes -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 64 memory size 1 GB memory drain before kexec test 2 kexec cycles +# case info: tdx guest kexec functional check with vcpu 64 memory size 1 GB memory drain before kexec test 2 kexec cycles ./tdx-guest/tdx_kexec_test_entry.sh -v 64 -m 1 -o yes -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 64 memory size 4 GB memory drain before kexec test 2 kexec cycles +# case info: tdx guest kexec functional check with vcpu 64 memory size 4 GB memory drain before kexec test 2 kexec cycles ./tdx-guest/tdx_kexec_test_entry.sh -v 64 -m 4 -o yes -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 64 memory size 96 GB memory drain before kexec test 2 kexec cycles +# case info: tdx guest kexec functional check with vcpu 64 memory size 96 GB memory drain before kexec test 2 kexec cycles ./tdx-guest/tdx_kexec_test_entry.sh -v 64 -m 96 -o yes -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 1 memory size 1 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete +# case info: tdx guest kexec functional check with vcpu 1 memory size 1 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete ./tdx-guest/tdx_kexec_test_entry.sh -v 1 -m 1 -o no -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 1 memory size 4 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete +# case info: tdx guest kexec functional check with vcpu 1 memory size 4 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete ./tdx-guest/tdx_kexec_test_entry.sh -v 1 -m 4 -o no -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 1 memory size 96 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete +# case info: tdx guest kexec functional check with vcpu 1 memory size 96 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete ./tdx-guest/tdx_kexec_test_entry.sh -v 1 -m 96 -o no -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 2 memory size 1 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete +# case info: tdx guest kexec functional check with vcpu 2 memory size 1 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete ./tdx-guest/tdx_kexec_test_entry.sh -v 2 -m 1 -o no -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 2 memory size 4 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete +# case info: tdx guest kexec functional check with vcpu 2 memory size 4 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete ./tdx-guest/tdx_kexec_test_entry.sh -v 2 -m 4 -o no -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 2 memory size 96 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete +# case info: tdx guest kexec functional check with vcpu 2 memory size 96 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete ./tdx-guest/tdx_kexec_test_entry.sh -v 2 -m 96 -o no -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 32 memory size 1 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete +# case info: tdx guest kexec functional check with vcpu 32 memory size 1 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete ./tdx-guest/tdx_kexec_test_entry.sh -v 32 -m 1 -o no -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 32 memory size 4 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete +# case info: tdx guest kexec functional check with vcpu 32 memory size 4 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete ./tdx-guest/tdx_kexec_test_entry.sh -v 32 -m 4 -o no -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 32 memory size 96 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete +# case info: tdx guest kexec functional check with vcpu 32 memory size 96 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete ./tdx-guest/tdx_kexec_test_entry.sh -v 32 -m 96 -o no -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 64 memory size 1 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete +# case info: tdx guest kexec functional check with vcpu 64 memory size 1 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete ./tdx-guest/tdx_kexec_test_entry.sh -v 64 -m 1 -o no -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 64 memory size 4 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete +# case info: tdx guest kexec functional check with vcpu 64 memory size 4 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete ./tdx-guest/tdx_kexec_test_entry.sh -v 64 -m 4 -o no -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" -# case info: [NA for upstream kernel yet] tdx guest kexec functional check with vcpu 64 memory size 96 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete +# case info: tdx guest kexec functional check with vcpu 64 memory size 96 GB no memory drain before kexec test 2 kexec cycles, do memory drain after kexec cycles complete ./tdx-guest/tdx_kexec_test_entry.sh -v 64 -m 96 -o no -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" - +# case implemented by vm_kdump_test_entry.sh +# case info: vm guest kdump functional check with vcpu 1 sockets 1 and memory size 1 GB +./tdx-guest/vm_kdump_test_entry.sh -v 1 -m 1 -r /abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm +# case info: vm guest kdump functional check with vcpu 1 sockets 1 and memory size 32 GB +./tdx-guest/vm_kdump_test_entry.sh -v 1 -m 32 -r /abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm +# case info: vm guest kdump functional check with vcpu 1 sockets 1 and memory size 96 GB +./tdx-guest/vm_kdump_test_entry.sh -v 1 -m 96 -r /abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm +# case info: vm guest kdump functional check with vcpu 32 sockets 1 and memory size 1 GB +./tdx-guest/vm_kdump_test_entry.sh -v 32 -m 1 -r /abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm +# case info: vm guest kdump functional check with vcpu 32 sockets 1 and memory size 32 GB +./tdx-guest/vm_kdump_test_entry.sh -v 32 -m 32 -r /abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm +# case info: vm guest kdump functional check with vcpu 32 sockets 1 and memory size 96 GB +./tdx-guest/vm_kdump_test_entry.sh -v 32 -m 96 -r /abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm +# case info: vm guest kdump functional check with vcpu 128 sockets 1 and memory size 4 GB +./tdx-guest/vm_kdump_test_entry.sh -v 128 -m 4 -r /abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm +# case info: vm guest kdump functional check with vcpu 128 sockets 1 and memory size 32 GB +./tdx-guest/vm_kdump_test_entry.sh -v 128 -m 32 -r /abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm +# case info: vm guest kdump functional check with vcpu 128 sockets 1 and memory size 96 GB +./tdx-guest/vm_kdump_test_entry.sh -v 128 -m 96 -r /abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm +# case implemented by vm_kexec_test_entry.sh +# case info: vm guest kexec functional check with vcpu 1 memory size 1 GB 2 kexec cycles +./tdx-guest/vm_kexec_test_entry.sh -v 1 -m 1 -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" +# case info: vm guest kexec functional check with vcpu 1 memory size 4 GB 2 kexec cycles +./tdx-guest/vm_kexec_test_entry.sh -v 1 -m 4 -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" +# case info: vm guest kexec functional check with vcpu 1 memory size 96 GB 2 kexec cycles +./tdx-guest/vm_kexec_test_entry.sh -v 1 -m 96 -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" +# case info: vm guest kexec functional check with vcpu 2 memory size 1 GB 2 kexec cycles +./tdx-guest/vm_kexec_test_entry.sh -v 2 -m 1 -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" +# case info: vm guest kexec functional check with vcpu 2 memory size 4 GB 2 kexec cycles +./tdx-guest/vm_kexec_test_entry.sh -v 2 -m 4 -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" +# case info: vm guest kexec functional check with vcpu 2 memory size 96 GB 2 kexec cycles +./tdx-guest/vm_kexec_test_entry.sh -v 2 -m 96 -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" +# case info: vm guest kexec functional check with vcpu 32 memory size 1 GB 2 kexec cycles +./tdx-guest/vm_kexec_test_entry.sh -v 32 -m 1 -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" +# case info: vm guest kexec functional check with vcpu 32 memory size 4 GB 2 kexec cycles +./tdx-guest/vm_kexec_test_entry.sh -v 32 -m 4 -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" +# case info: vm guest kexec functional check with vcpu 32 memory size 96 GB 2 kexec cycles +./tdx-guest/vm_kexec_test_entry.sh -v 32 -m 96 -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" +# case info: vm guest kexec functional check with vcpu 64 memory size 1 GB 2 kexec cycles +./tdx-guest/vm_kexec_test_entry.sh -v 64 -m 1 -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" +# case info: vm guest kexec functional check with vcpu 64 memory size 4 GB 2 kexec cycles +./tdx-guest/vm_kexec_test_entry.sh -v 64 -m 4 -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" +# case info: vm guest kexec functional check with vcpu 64 memory size 96 GB 2 kexec cycles +./tdx-guest/vm_kexec_test_entry.sh -v 64 -m 96 -k 2 -r "/abs/path/to/kdump_test/kenrel_rpm/kernel-x-version-under-test.rpm" \ No newline at end of file diff --git a/BM/tdx-guest/vm_kdump_test_entry.sh b/BM/tdx-guest/vm_kdump_test_entry.sh new file mode 100755 index 00000000..59537bec --- /dev/null +++ b/BM/tdx-guest/vm_kdump_test_entry.sh @@ -0,0 +1,60 @@ +#!/usr/bin/bash +# SPDX-License-Identifier: GPL-2.0-only +# Copyright (c) 2025 Intel Corporation + +# Author: Hongyu Ning +# +# History: 6, Jan., 2025 - Hongyu Ning - creation + + +# @desc This script is general legacy vm guest kdump test entry + +###################### Variables ###################### +source common.sh +DEBUG=on + +###################### Functions ###################### +# helper function +usage() { + cat <<-EOF + usage: ./${0##*/} + -v number of vcpus + -m memory size in GB + -r abs. path to single rpm file: kernel-img, kernel-devel or kernel-headers + -h HELP info +EOF +} + +while getopts :v:m:r:h arg; do + case $arg in + v) + VCPU=$OPTARG + ;; + m) + MEM=$OPTARG + ;; + r) + RPM=$OPTARG + ;; + h) + usage && exit 0 + ;; + *) + test_print_err "Must supply an argument to -$OPTARG." + exit 1 + ;; + esac +done + +###################### Do Works ###################### +# install kdump test kernel rpm in target VM guest OS image +./guest-test/guest.test_launcher.sh -v 1 -s 1 -m 1 -d "$DEBUG" -t legacy -e tdx-guest -f tdx -x TD_RPM_INSTALL -c " " -p off -r "$RPM" || \ + die "Failed on kdump test kernel rpm install" +sleep 3 +# prepare and trigger kdump in target VM guest OS image +./guest-test/guest.test_launcher.sh -v "$VCPU" -s 1 -m "$MEM" -d "$DEBUG" -t legacy -e tdx-guest -f tdx -x TD_KDUMP_START -c "crashkernel=1G-4G:256M,4G-64G:384M,64G-:512M" -p off || \ + die "Failed on trigger kdump" +sleep 3 +# check kdump log generated in target VM guest OS image +./guest-test/guest.test_launcher.sh -v 1 -s 1 -m 16 -d "$DEBUG" -t legacy -e tdx-guest -f tdx -x TD_KDUMP_CHECK -c " " -p off || \ + die "Failed on kdupm log check" \ No newline at end of file diff --git a/BM/tdx-guest/vm_kexec_test.sh b/BM/tdx-guest/vm_kexec_test.sh new file mode 100755 index 00000000..3873e95b --- /dev/null +++ b/BM/tdx-guest/vm_kexec_test.sh @@ -0,0 +1,100 @@ +#!/usr/bin/bash +# SPDX-License-Identifier: GPL-2.0-only +# Copyright (c) 2024 Intel Corporation + +# Author: Hongyu Ning +# +# History: 16, Aug., 2024 - Hongyu Ning - creation + + +# @desc This script do kexec related test and check in Guest VM + +###################### Variables ###################### +SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )" +echo "$SCRIPT_DIR" +source common.sh + +while getopts :v:m:k: arg; do + case $arg in + v) + VCPU=$OPTARG + ;; + m) + MEM=$OPTARG + ;; + k) + KEXEC_CNT=$OPTARG + ;; + *) + test_print_err "Must supply an argument to -$OPTARG." + exit 1 + ;; + esac +done + +###################### Functions ###################### +# function to load kexec target kenrel image and trigger kexec switch to target kernel +kexec_load_switch() { + # stop systemd to avoid unexpected stuck + systemctl stop systemd* + # load kexec target kernel image and initrd, reuse kernel cmdline + if ! kexec -d -l "/boot/vmlinuz-$(uname -r)" --initrd="/boot/initramfs-$(uname -r).img" --reuse-cmdline; then + die "failed to load kexec target kernel image, test failed" + else + test_print_trc "kexec target kernel image loaded" + fi + sleep 5 + # trigger kexec switch to target kernel + test_print_trc "kexec switch to target kernel triggered" + kexec -d -e & +} + +# function to check VCPU and MEMORY size in VM guest +vcpu_mem_check() { + # check vcpu and socket number + vcpu_vm=$(lscpu | grep "CPU(s)" | head -1 | awk '{print $2}') + test_print_trc "vcpu_vm: $vcpu_vm" + vcpu_offline=$(lscpu | grep "Off-line CPU(s)" | awk '{print $NF}') + vcpu_online=$(lscpu | grep "On-line CPU(s)" | awk '{print $NF}') + + if [[ "$vcpu_vm" -ne "$VCPU" ]]; then + die "Guest VM boot with vcpu: $vcpu_vm (expected $VCPU)" + elif [[ -n "$vcpu_offline" ]]; then + die "Guest VM boot with offline vcpu: $vcpu_offline" + fi + + # check memory size + mem_vm=$(grep "MemTotal" /proc/meminfo | awk '$3=="kB" {printf "%.0f\n", $2/(1024*1024)}') + test_print_trc "mem_vm: $mem_vm" + + # $MEM less than or equal to 4GB need special memory size check + if [[ $MEM -le 4 ]]; then + if [[ $(( MEM / mem_vm )) -lt 1 ]] || [[ $(( MEM / mem_vm )) -gt 2 ]]; then + die "Guest VM boot with memory: $mem_vm GB (expected $MEM GB)" + fi + # $MEM more than 4GB use general memory size check + else + if [[ $(( MEM / mem_vm )) -ne 1 ]]; then + die "Guest VM boot with memory: $mem_vm GB (expected $MEM GB)" + fi + fi + + test_print_trc "Guest VM boot up successfully with config:" + test_print_trc "vcpu $VCPU on-line $vcpu_online, memory $MEM GB" +} + +###################### Do Works ###################### +test_print_trc "start kexec test with vcpu: $VCPU, memory: $MEM, kexec_cnt: $KEXEC_CNT" + +# do VCPU and MEM check +vcpu_mem_check || die "failed on vcpu_mem_check" + +if [[ "$KEXEC_CNT" -gt 0 ]]; then + # do kexec load and switch + kexec_load_switch || die "failed on kexec_load_switch" +elif [[ "$KEXEC_CNT" -eq 0 ]]; then + test_print_trc "Guest VM to shutdown after all kexec test completed" + shutdown now || die "failed to shutdown Guest VM in final test loop" +else + die "unsupported kexec test cycle count: $KEXEC_CNT" +fi \ No newline at end of file diff --git a/BM/tdx-guest/vm_kexec_test_entry.sh b/BM/tdx-guest/vm_kexec_test_entry.sh new file mode 100755 index 00000000..fdd11b7b --- /dev/null +++ b/BM/tdx-guest/vm_kexec_test_entry.sh @@ -0,0 +1,62 @@ +#!/usr/bin/bash +# SPDX-License-Identifier: GPL-2.0-only +# Copyright (c) 2025 Intel Corporation + +# Author: Hongyu Ning +# +# History: 6, Jan., 2025 - Hongyu Ning - creation + + +# @desc This script is general vm guest kexec test entry + +###################### Variables ###################### +source common.sh +DEBUG=on + +###################### Functions ###################### +# helper function +usage() { + cat <<-EOF + usage: ./${0##*/} + -v number of vcpus + -m memory size in GB + -k pos-integer value for normal kexec test cycle count + -r abs. path to single rpm file: kernel-img, kernel-devel or kernel-headers + -h HELP info +EOF +} + +while getopts :v:m:k:r:h arg; do + case $arg in + v) + VCPU=$OPTARG + ;; + m) + MEM=$OPTARG + ;; + k) + KEXEC_CNT=$OPTARG + ;; + r) + RPM=$OPTARG + ;; + h) + usage && exit 0 + ;; + *) + test_print_err "Must supply an argument to -$OPTARG." + exit 1 + ;; + esac +done + +###################### Do Works ###################### +# install kexec test kernel rpm in target VM guest OS image +./guest-test/guest.test_launcher.sh -v 1 -s 1 -m 1 -d "$DEBUG" -t legacy -e tdx-guest -f tdx \ + -x TD_RPM_INSTALL -c " " -p off -r "$RPM" || \ + die "Failed on kexec test kernel rpm install" +sleep 3 +# prepare and trigger kexec in target VM guest OS image +./guest-test/guest.test_launcher.sh -v "$VCPU" -s 1 -m "$MEM" -d "$DEBUG" -t legacy -e tdx-guest -f tdx \ + -x VM_KEXEC_"$VCPU"C_"$MEM"G_CYCLE_"$KEXEC_CNT" -c "console= accept_memory=lazy" -p off -k "$KEXEC_CNT" || \ + die "Failed on kexec test" \ No newline at end of file