From: Andrew Jones <andrew.jones@linux.dev>
To: Shaoqin Huang <shahuang@redhat.com>
Cc: kvmarm@lists.linux.dev,
Alexandru Elisei <alexandru.elisei@arm.com>,
Eric Auger <eric.auger@redhat.com>,
Nikos Nikoleris <nikos.nikoleris@arm.com>,
Ricardo Koller <ricarkol@google.com>,
kvm@vger.kernel.org
Subject: Re: [kvm-unit-tests PATCH v2 3/3] arm64: efi: Make running tests on EFI can be parallel
Date: Mon, 15 Jan 2024 13:23:42 +0100 [thread overview]
Message-ID: <20240115-df5b09a3501c04572a54416d@orel> (raw)
In-Reply-To: <20231130032940.2729006-4-shahuang@redhat.com>
On Wed, Nov 29, 2023 at 10:29:40PM -0500, Shaoqin Huang wrote:
> Currently running tests on EFI in parallel can cause part of tests to
> fail, this is because arm/efi/run script use the EFI_CASE to create the
> subdir under the efi-tests, and the EFI_CASE is the filename of the
> test, when running tests in parallel, the multiple tests exist in the
> same filename will execute at the same time, which will use the same
> directory and write the test specific things into it, this cause
> chaotic and make some tests fail.
>
> For example, if we running the pmu-sw-incr and pmu-chained-counters
> and other pmu tests on EFI at the same time, the EFI_CASE will be pmu.
> So they will write their $cmd_args to the $EFI/TEST/pmu/startup.nsh
> at the same time, which will corrupt the startup.nsh file.
>
> And we can get the log which outputs:
>
> * pmu-sw-incr.log:
> - ABORT: pmu: Unknown sub-test 'pmu-mem-acce'
> * pmu-chained-counters.log
> - ABORT: pmu: Unknown sub-test 'pmu-mem-access-reliab'
>
> And the efi-tests/pmu/startup.nsh:
>
> @echo -off
> setvar fdtfile -guid 97ef3e03-7329-4a6a-b9ba-6c1fdcc5f823 -rt =L"dtb"
> pmu.efi pmu-mem-access-reliability
> setvar fdtfile -guid 97ef3e03-7329-4a6a-b9ba-6c1fdcc5f823 -rt =L"dtb"
> pmu.efi pmu-chained-sw-incr
>
> As you can see, when multiple tests write to the same startup.nsh file,
> it causes the issue.
>
> To Fix this issue, use the testname instead of the filename to create
> the subdir under the efi-tests. We use the EFI_TESTNAME to replace the
> EFI_CASE in script. Since every testname is specific, now the tests
> can be run parallel. It also considers when user directly use the
> arm/efi/run to run test, in this case, still use the filename.
>
> Besides, replace multiple $EFI_TEST/$EFI_CASE to the $EFI_CASE_DIR, this
> makes the script looks more clean and we don'e need to replace many
> EFI_CASE to EFI_TESTNAME.
>
> Signed-off-by: Shaoqin Huang <shahuang@redhat.com>
> ---
> arm/efi/run | 16 +++++++++-------
> 1 file changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/arm/efi/run b/arm/efi/run
> index 6872c337..03bfbef4 100755
> --- a/arm/efi/run
> +++ b/arm/efi/run
> @@ -24,6 +24,8 @@ fi
> : "${EFI_SRC:=$TEST_DIR}"
> : "${EFI_UEFI:=$DEFAULT_UEFI}"
> : "${EFI_TEST:=efi-tests}"
> +: "${EFI_TESTNAME:=$TESTNAME}"
> +: "${EFI_TESTNAME:=$(basename $1 .efi)}"
> : "${EFI_CASE:=$(basename $1 .efi)}"
We can write it the above like the following to avoid duplicating the
basename call
: "${EFI_CASE:=$(basename $1 .efi)}"
: "${EFI_TESTNAME:=$TESTNAME}"
: "${EFI_TESTNAME:=$EFI_CASE}"
> : "${EFI_VAR_GUID:=97ef3e03-7329-4a6a-b9ba-6c1fdcc5f823}"
>
> @@ -56,20 +58,20 @@ if [ "$EFI_CASE" = "_NO_FILE_4Uhere_" ]; then
> EFI_CASE=dummy
> fi
>
> -: "${EFI_CASE_DIR:="$EFI_TEST/$EFI_CASE"}"
> +: "${EFI_CASE_DIR:="$EFI_TEST/$EFI_TESTNAME"}"
> mkdir -p "$EFI_CASE_DIR"
>
> -cp "$EFI_SRC/$EFI_CASE.efi" "$EFI_TEST/$EFI_CASE/"
> -echo "@echo -off" > "$EFI_TEST/$EFI_CASE/startup.nsh"
> +cp "$EFI_SRC/$EFI_CASE.efi" "$EFI_CASE_DIR/"
> +echo "@echo -off" > "$EFI_CASE_DIR/startup.nsh"
> if [ "$EFI_USE_DTB" = "y" ]; then
> qemu_args+=(-machine acpi=off)
> FDT_BASENAME="dtb"
> - $(EFI_RUN=y $TEST_DIR/run -machine dumpdtb="$EFI_TEST/$EFI_CASE/$FDT_BASENAME" "${qemu_args[@]}")
> - echo "setvar fdtfile -guid $EFI_VAR_GUID -rt =L\"$FDT_BASENAME\"" >> "$EFI_TEST/$EFI_CASE/startup.nsh"
> + $(EFI_RUN=y $TEST_DIR/run -machine dumpdtb="$EFI_CASE_DIR/$FDT_BASENAME" "${qemu_args[@]}")
> + echo "setvar fdtfile -guid $EFI_VAR_GUID -rt =L\"$FDT_BASENAME\"" >> "$EFI_CASE_DIR/startup.nsh"
> fi
> -echo "$EFI_CASE.efi" "${cmd_args[@]}" >> "$EFI_TEST/$EFI_CASE/startup.nsh"
> +echo "$EFI_CASE.efi" "${cmd_args[@]}" >> "$EFI_CASE_DIR/startup.nsh"
>
> EFI_RUN=y $TEST_DIR/run \
> -bios "$EFI_UEFI" \
> - -drive file.dir="$EFI_TEST/$EFI_CASE/",file.driver=vvfat,file.rw=on,format=raw,if=virtio \
> + -drive file.dir="$EFI_CASE_DIR/",file.driver=vvfat,file.rw=on,format=raw,if=virtio \
> "${qemu_args[@]}"
> --
> 2.40.1
>
Otherwise
Reviewed-by: Andrew Jones <andrew.jones@linux.dev>
next prev parent reply other threads:[~2024-01-15 12:23 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-30 3:29 [kvm-unit-tests PATCH v2 0/3] arm64: runtime scripts improvements on efi Shaoqin Huang
2023-11-30 3:29 ` [kvm-unit-tests PATCH v2 1/3] runtime: Fix the missing last_line Shaoqin Huang
2024-01-15 12:26 ` Andrew Jones
2023-11-30 3:29 ` [kvm-unit-tests PATCH v2 2/3] runtime: arm64: Skip the migration tests when run on EFI Shaoqin Huang
2023-11-30 4:17 ` Shaoqin Huang
2024-01-15 12:25 ` Andrew Jones
2024-01-16 6:19 ` Shaoqin Huang
2023-11-30 3:29 ` [kvm-unit-tests PATCH v2 3/3] arm64: efi: Make running tests on EFI can be parallel Shaoqin Huang
2024-01-15 12:23 ` Andrew Jones [this message]
2024-01-16 6:37 ` Shaoqin Huang
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=20240115-df5b09a3501c04572a54416d@orel \
--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=ricarkol@google.com \
--cc=shahuang@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox