From: Zixuan Wang <zxwang42@gmail.com>
To: kvm@vger.kernel.org, pbonzini@redhat.com, drjones@redhat.com
Cc: marcorr@google.com, erdemaktas@google.com, rientjes@google.com,
seanjc@google.com, brijesh.singh@amd.com,
Thomas.Lendacky@amd.com, varad.gautam@suse.com, jroedel@suse.de,
bp@suse.de
Subject: [kvm-unit-tests PATCH v1 7/7] x86 UEFI: Make run_tests.sh (mostly) work under UEFI
Date: Sat, 30 Oct 2021 22:56:34 -0700 [thread overview]
Message-ID: <20211031055634.894263-8-zxwang42@gmail.com> (raw)
In-Reply-To: <20211031055634.894263-1-zxwang42@gmail.com>
From: Marc Orr <marcorr@google.com>
Make several fixes so that run_tests.sh can run the test cases when
the repo is configured to run under UEFI. Specifically:
1. The scripts are enlighted to run the .efi test cases rather than the
.flat test cases.
2. The scripts are enlighted to run an empty file, _NO_FILE_4Uhere_,
which is used to sanity check QEMU and QEMU flags.
3. The scripts are updated to always run with `-smp 1`, since SMP is not
yet supported under UEFI.
Notably, QEMU's `-append` flag still does not work. This will need to be
fixed in future commits. For now, test cases that use `-append` are
marked `SKIP`.
Signed-off-by: Marc Orr <marcorr@google.com>
---
scripts/common.bash | 4 ++--
scripts/runtime.bash | 15 +++++++++++++--
x86/efi/run | 24 ++++++++++++++++++++----
3 files changed, 35 insertions(+), 8 deletions(-)
diff --git a/scripts/common.bash b/scripts/common.bash
index 6f45843..c42df95 100644
--- a/scripts/common.bash
+++ b/scripts/common.bash
@@ -26,7 +26,7 @@ function for_each_unittest()
if [[ "$line" =~ ^\[(.*)\]$ ]]; then
rematch=${BASH_REMATCH[1]}
if [ -n "${testname}" ]; then
- $(arch_cmd) "$cmd" "$testname" "$groups" "$smp" "$kernel" "$opts" "$arch" "$check" "$accel" "$timeout"
+ $(arch_cmd) "$cmd" "$testname" "$groups" "$smp" "$kernel" "$opts" "$arch" "$check" "$accel" "$timeout" "$(running_under_efi)"
fi
testname=$rematch
smp=1
@@ -56,7 +56,7 @@ function for_each_unittest()
fi
done
if [ -n "${testname}" ]; then
- $(arch_cmd) "$cmd" "$testname" "$groups" "$smp" "$kernel" "$opts" "$arch" "$check" "$accel" "$timeout"
+ $(arch_cmd) "$cmd" "$testname" "$groups" "$smp" "$kernel" "$opts" "$arch" "$check" "$accel" "$timeout" "$(running_under_efi)"
fi
exec {fd}<&-
}
diff --git a/scripts/runtime.bash b/scripts/runtime.bash
index 132389c..9c89a74 100644
--- a/scripts/runtime.bash
+++ b/scripts/runtime.bash
@@ -81,6 +81,11 @@ function run()
local check="${CHECK:-$7}"
local accel="$8"
local timeout="${9:-$TIMEOUT}" # unittests.cfg overrides the default
+ local running_under_efi="${10}"
+
+ if [ "$running_under_efi" ]; then
+ kernel=$(basename $kernel .flat)
+ fi
if [ -z "$testname" ]; then
return
@@ -127,8 +132,14 @@ function run()
fi
last_line=$(premature_failure > >(tail -1)) && {
- print_result "SKIP" $testname "" "$last_line"
- return 77
+ skip=true
+ if [ "${running_under_efi}" ] && [[ "${last_line}" =~ "Reset" ]]; then
+ skip=false
+ fi
+ if [ ${skip} == true ]; then
+ print_result "SKIP" $testname "" "$last_line"
+ return 77
+ fi
}
cmdline=$(get_cmdline $kernel)
diff --git a/x86/efi/run b/x86/efi/run
index aacc691..e6486ed 100755
--- a/x86/efi/run
+++ b/x86/efi/run
@@ -34,16 +34,27 @@ shift 1
# This host dir will be loaded by QEMU as a FAT32 image
# - Make UEFI startup script that runs the .efi on boot
mkdir -p "$EFI_TEST/$EFI_CASE/"
-cp "$EFI_SRC/$EFI_CASE.efi" "$EFI_TEST/$EFI_CASE/"
+if [ $EFI_CASE != "_NO_FILE_4Uhere_" ]; then
+ cp "$EFI_SRC/$EFI_CASE.efi" "$EFI_TEST/$EFI_CASE/"
+else
+ touch "$EFI_TEST/$EFI_CASE/$EFI_CASE.efi"
+fi
pushd "$EFI_TEST/$EFI_CASE" || exit 2
# 'startup.nsh' is the default script executed by UEFI on boot
# Use this script to run the test binary automatically
-cat << EOF >startup.nsh
+if [ $EFI_CASE != "_NO_FILE_4Uhere_" ]; then
+ cat << EOF >startup.nsh
@echo -off
fs0:
"$EFI_CASE.efi"
EOF
+else
+ cat << EOF >startup.nsh
+@echo -off
+reset -s
+EOF
+fi
popd || exit 2
# Run test case with 256MiB QEMU memory. QEMU default memory size is 128MiB.
@@ -52,11 +63,16 @@ popd || exit 2
# run in UEFI, some test cases, e.g. `x86/pmu.c`, require more free memory. A
# simple fix is to increase the QEMU default memory size to 256MiB so that
# UEFI's largest allocatable memory region is large enough.
+#
+# Also, pass in an EFI-specific smp count (i.e., `-smp 1`) as the last argument
+# to x86/run. This `smp` flag overrides any previous `smp` flags (e.g.,
+# `-smp 4`). This is necessary because KVM-Unit-Tests do not currently support
+# SMP under UEFI. This last flag should be removed when this issue is resolved.
"$TEST_DIR/run" \
-drive file="$EFI_UEFI",format=raw,if=pflash,readonly=on \
-drive file.dir="$EFI_TEST/$EFI_CASE/",file.driver=vvfat,file.rw=on,format=raw,if=virtio \
-net none \
-nographic \
- -smp "$EFI_SMP" \
-m 256 \
- "$@"
+ "$@" \
+ -smp "$EFI_SMP"
--
2.33.0
next prev parent reply other threads:[~2021-10-31 5:56 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-31 5:56 [kvm-unit-tests PATCH v1 0/7] x86_64 UEFI set up process refactor and scripts fixes Zixuan Wang
2021-10-31 5:56 ` [kvm-unit-tests PATCH v1 1/7] x86 UEFI: Remove mixed_mode Zixuan Wang
2021-10-31 5:56 ` [kvm-unit-tests PATCH v1 2/7] x86 UEFI: Refactor set up process Zixuan Wang
2021-11-05 18:54 ` Sean Christopherson
2021-11-09 17:16 ` Zixuan Wang
2021-10-31 5:56 ` [kvm-unit-tests PATCH v1 3/7] x86 UEFI: Convert x86 test cases to PIC Zixuan Wang
2021-10-31 5:56 ` [kvm-unit-tests PATCH v1 4/7] x86 UEFI: Set UEFI OVMF as readonly Zixuan Wang
2021-10-31 5:56 ` [kvm-unit-tests PATCH v1 5/7] x86 UEFI: Exit QEMU with return code Zixuan Wang
2021-10-31 10:01 ` Paolo Bonzini
2021-10-31 21:36 ` Zixuan Wang
2021-10-31 5:56 ` [kvm-unit-tests PATCH v1 6/7] scripts: Generalize EFI check Zixuan Wang
2021-10-31 7:13 ` Paolo Bonzini
2021-10-31 15:35 ` Marc Orr
2021-10-31 5:56 ` Zixuan Wang [this message]
2021-10-31 7:28 ` [kvm-unit-tests PATCH v1 0/7] x86_64 UEFI set up process refactor and scripts fixes Paolo Bonzini
2021-10-31 16:14 ` Marc Orr
2021-10-31 21:54 ` Zixuan Wang
2021-11-01 7:11 ` Andrew Jones
2021-11-01 22:35 ` Zixuan Wang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211031055634.894263-8-zxwang42@gmail.com \
--to=zxwang42@gmail.com \
--cc=Thomas.Lendacky@amd.com \
--cc=bp@suse.de \
--cc=brijesh.singh@amd.com \
--cc=drjones@redhat.com \
--cc=erdemaktas@google.com \
--cc=jroedel@suse.de \
--cc=kvm@vger.kernel.org \
--cc=marcorr@google.com \
--cc=pbonzini@redhat.com \
--cc=rientjes@google.com \
--cc=seanjc@google.com \
--cc=varad.gautam@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).