All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Jones <andrew.jones@linux.dev>
To: kvm@vger.kernel.org, kvmarm@lists.linux.dev
Cc: alexandru.elisei@arm.com, eric.auger@redhat.com,
	nikos.nikoleris@arm.com, shahuang@redhat.com,
	pbonzini@redhat.com, thuth@redhat.com
Subject: [kvm-unit-tests PATCH v2 10/18] arm64: efi: Allow running tests directly
Date: Tue, 27 Feb 2024 20:21:20 +0100	[thread overview]
Message-ID: <20240227192109.487402-30-andrew.jones@linux.dev> (raw)
In-Reply-To: <20240227192109.487402-20-andrew.jones@linux.dev>

Since it's possible to run tests with UEFI and the QEMU -kernel
option (and now the DTB will be found and even the environ will
be set up from an initrd if given with the -initrd option), then
we can skip the loading of EFI tests into a file system and booting
to the shell to run them. Just run them directly. Running directly
is waaaaaay faster than booting the shell first. We keep the UEFI
shell as the default behavior, though, and provide a new configure
option to enable the direct running.

Signed-off-by: Andrew Jones <andrew.jones@linux.dev>
---
 arm/efi/run | 17 +++++++++++++++--
 arm/run     |  4 +++-
 configure   | 17 +++++++++++++++++
 3 files changed, 35 insertions(+), 3 deletions(-)

diff --git a/arm/efi/run b/arm/efi/run
index b7a8418a07f8..af7b593c2bb8 100755
--- a/arm/efi/run
+++ b/arm/efi/run
@@ -18,10 +18,12 @@ elif [ -f /usr/share/edk2/aarch64/QEMU_EFI.silent.fd ]; then
 	DEFAULT_UEFI=/usr/share/edk2/aarch64/QEMU_EFI.silent.fd
 fi
 
+KERNEL_NAME=$1
+
 : "${EFI_SRC:=$TEST_DIR}"
 : "${EFI_UEFI:=$DEFAULT_UEFI}"
 : "${EFI_TEST:=efi-tests}"
-: "${EFI_CASE:=$(basename $1 .efi)}"
+: "${EFI_CASE:=$(basename $KERNEL_NAME .efi)}"
 : "${EFI_TESTNAME:=$TESTNAME}"
 : "${EFI_TESTNAME:=$EFI_CASE}"
 : "${EFI_CASE_DIR:="$EFI_TEST/$EFI_TESTNAME"}"
@@ -80,4 +82,15 @@ uefi_shell_run()
 		"${qemu_args[@]}"
 }
 
-uefi_shell_run
+if [ "$EFI_DIRECT" = "y" ]; then
+	if [ "$EFI_USE_ACPI" != "y" ]; then
+		qemu_args+=(-machine acpi=off)
+	fi
+	$TEST_DIR/run \
+		$KERNEL_NAME \
+		-append "$(basename $KERNEL_NAME) ${cmd_args[@]}" \
+		-bios "$EFI_UEFI" \
+		"${qemu_args[@]}"
+else
+	uefi_shell_run
+fi
diff --git a/arm/run b/arm/run
index 40c2ca66ba7e..efdd44ce86a7 100755
--- a/arm/run
+++ b/arm/run
@@ -60,7 +60,7 @@ if ! $qemu $M -chardev '?' | grep -q testdev; then
 	exit 2
 fi
 
-if [ "$UEFI_SHELL_RUN" != "y" ]; then
+if [ "$UEFI_SHELL_RUN" != "y" ] && [ "$EFI_USE_ACPI" != "y" ]; then
 	chr_testdev='-device virtio-serial-device'
 	chr_testdev+=' -device virtconsole,chardev=ctd -chardev testdev,id=ctd'
 fi
@@ -77,6 +77,8 @@ command="$(migration_cmd) $(timeout_cmd) $command"
 
 if [ "$UEFI_SHELL_RUN" = "y" ]; then
 	ENVIRON_DEFAULT=n run_qemu_status $command "$@"
+elif [ "$EFI_USE_ACPI" = "y" ]; then
+	run_qemu_status $command -kernel "$@"
 else
 	run_qemu $command -kernel "$@"
 fi
diff --git a/configure b/configure
index 05e6702eab06..283c959973fd 100755
--- a/configure
+++ b/configure
@@ -32,6 +32,7 @@ enable_dump=no
 page_size=
 earlycon=
 efi=
+efi_direct=
 
 # Enable -Werror by default for git repositories only (i.e. developer builds)
 if [ -e "$srcdir"/.git ]; then
@@ -89,6 +90,11 @@ usage() {
 	    --[enable|disable]-efi Boot and run from UEFI (disabled by default, x86_64 and arm64 only)
 	    --[enable|disable]-werror
 	                           Select whether to compile with the -Werror compiler flag
+	    --[enable|disable]-efi-direct
+	                           Select whether to run EFI tests directly with QEMU's -kernel
+	                           option. When not enabled, tests will be placed in an EFI file
+	                           system and run from the UEFI shell. Ignored when efi isn't enabled.
+	                           (arm64 only)
 EOF
     exit 1
 }
@@ -168,6 +174,12 @@ while [[ "$1" = -* ]]; do
 	--disable-efi)
 	    efi=n
 	    ;;
+	--enable-efi-direct)
+	    efi_direct=y
+	    ;;
+	--disable-efi-direct)
+	    efi_direct=n
+	    ;;
 	--enable-werror)
 	    werror=-Werror
 	    ;;
@@ -185,6 +197,10 @@ while [[ "$1" = -* ]]; do
     esac
 done
 
+if [ -z "$efi" ] || [ "$efi" = "n" ]; then
+    [ "$efi_direct" = "y" ] && efi_direct=
+fi
+
 if [ -n "$host_key_document" ] && [ ! -f "$host_key_document" ]; then
     echo "Host key document doesn't exist at the specified location."
     exit 1
@@ -423,6 +439,7 @@ GENPROTIMG=${GENPROTIMG-genprotimg}
 HOST_KEY_DOCUMENT=$host_key_document
 CONFIG_DUMP=$enable_dump
 CONFIG_EFI=$efi
+EFI_DIRECT=$efi_direct
 CONFIG_WERROR=$werror
 GEN_SE_HEADER=$gen_se_header
 EOF
-- 
2.43.0


  parent reply	other threads:[~2024-02-27 19:21 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-27 19:21 [kvm-unit-tests PATCH v2 00/18] arm64: EFI improvements Andrew Jones
2024-02-27 19:21 ` [kvm-unit-tests PATCH v2 01/18] runtime: Update MAX_SMP probe Andrew Jones
2024-03-03 21:43   ` Nikos Nikoleris
2024-02-27 19:21 ` [kvm-unit-tests PATCH v2 02/18] runtime: Add yet another 'no kernel' error message Andrew Jones
2024-03-03 21:50   ` Nikos Nikoleris
2024-02-27 19:21 ` [kvm-unit-tests PATCH v2 03/18] arm64: efi: Don't create dummy test Andrew Jones
2024-03-03 21:57   ` Nikos Nikoleris
2024-02-27 19:21 ` [kvm-unit-tests PATCH v2 04/18] arm64: efi: Make running tests on EFI can be parallel Andrew Jones
2024-03-03 22:06   ` Nikos Nikoleris
2024-02-27 19:21 ` [kvm-unit-tests PATCH v2 05/18] arm64: efi: Remove redundant dtb generation Andrew Jones
2024-03-04  7:16   ` Nikos Nikoleris
2024-02-27 19:21 ` [kvm-unit-tests PATCH v2 06/18] arm64: efi: Move run code into a function Andrew Jones
2024-03-04  7:19   ` Nikos Nikoleris
2024-02-27 19:21 ` [kvm-unit-tests PATCH v2 07/18] arm64: efi: Remove EFI_USE_DTB Andrew Jones
2024-03-04  7:20   ` Nikos Nikoleris
2024-02-27 19:21 ` [kvm-unit-tests PATCH v2 08/18] arm64: efi: Improve device tree discovery Andrew Jones
2024-03-04  7:34   ` Nikos Nikoleris
2024-03-04  9:35     ` Andrew Jones
2024-02-27 19:21 ` [kvm-unit-tests PATCH v2 09/18] lib/efi: Add support for loading the initrd Andrew Jones
2024-03-04  7:44   ` Nikos Nikoleris
2024-02-27 19:21 ` Andrew Jones [this message]
2024-03-04  7:52   ` [kvm-unit-tests PATCH v2 10/18] arm64: efi: Allow running tests directly Nikos Nikoleris
2024-03-04  9:43     ` Andrew Jones
2024-02-27 19:21 ` [kvm-unit-tests PATCH v2 11/18] arm/arm64: Factor out some initial setup Andrew Jones
2024-03-04  7:59   ` Nikos Nikoleris
2024-02-27 19:21 ` [kvm-unit-tests PATCH v2 12/18] arm/arm64: Factor out allocator init from mem_init Andrew Jones
2024-03-04  8:01   ` Nikos Nikoleris
2024-02-27 19:21 ` [kvm-unit-tests PATCH v2 13/18] arm64: Simplify efi_mem_init Andrew Jones
2024-03-04  8:10   ` Nikos Nikoleris
2024-03-04  9:55     ` Andrew Jones
2024-03-04 10:01       ` Nikos Nikoleris
2024-02-27 19:21 ` [kvm-unit-tests PATCH v2 14/18] arm64: Add memregions_efi_init Andrew Jones
2024-03-04  8:16   ` Nikos Nikoleris
2024-02-27 19:21 ` [kvm-unit-tests PATCH v2 15/18] arm64: efi: Don't map reserved regions Andrew Jones
2024-03-04  8:18   ` Nikos Nikoleris
2024-02-27 19:21 ` [kvm-unit-tests PATCH v2 16/18] arm64: efi: Fix _start returns from failed _relocate Andrew Jones
2024-03-04  8:58   ` Nikos Nikoleris
2024-02-27 19:21 ` [kvm-unit-tests PATCH v2 17/18] arm64: efi: Switch to our own stack Andrew Jones
2024-03-04  9:03   ` Nikos Nikoleris
2024-02-27 19:21 ` [kvm-unit-tests PATCH v2 18/18] arm64: efi: Add gitlab CI Andrew Jones
2024-03-04  9:06   ` Nikos Nikoleris

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=20240227192109.487402-30-andrew.jones@linux.dev \
    --to=andrew.jones@linux.dev \
    --cc=alexandru.elisei@arm.com \
    --cc=eric.auger@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.linux.dev \
    --cc=nikos.nikoleris@arm.com \
    --cc=pbonzini@redhat.com \
    --cc=shahuang@redhat.com \
    --cc=thuth@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.