Message ID | 20240227192109.487402-26-andrew.jones@linux.dev (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64: EFI improvements | expand |
On 27/02/2024 19:21, Andrew Jones wrote: > Push the run code in arm/efi/run into a function named > uefi_shell_run() since it will create an EFI file system, copy > the test and possibly the DTB there, and create a startup.nsh > which executes the test from the UEFI shell. Pushing this > code into a function allows additional execution paths to be > created in the script. Also rename EFI_RUN to UEFI_SHELL_RUN > to pass the information on to arm/run that it's being called > from uefi_shell_run(). > > Signed-off-by: Andrew Jones <andrew.jones@linux.dev> Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Thanks, Nikos > --- > arm/efi/run | 33 +++++++++++++++++++-------------- > arm/run | 4 ++-- > 2 files changed, 21 insertions(+), 16 deletions(-) > > diff --git a/arm/efi/run b/arm/efi/run > index e45cecfa3265..494ba9e7efe7 100755 > --- a/arm/efi/run > +++ b/arm/efi/run > @@ -63,18 +63,23 @@ if [ "$EFI_CASE" = "_NO_FILE_4Uhere_" ]; then > exit > fi > > -mkdir -p "$EFI_CASE_DIR" > -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_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_CASE_DIR/startup.nsh" > +uefi_shell_run() > +{ > + mkdir -p "$EFI_CASE_DIR" > + 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" > + UEFI_SHELL_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_CASE_DIR/startup.nsh" > + > + UEFI_SHELL_RUN=y $TEST_DIR/run \ > + -bios "$EFI_UEFI" \ > + -drive file.dir="$EFI_CASE_DIR/",file.driver=vvfat,file.rw=on,format=raw,if=virtio \ > + "${qemu_args[@]}" > +} > > -EFI_RUN=y $TEST_DIR/run \ > - -bios "$EFI_UEFI" \ > - -drive file.dir="$EFI_CASE_DIR/",file.driver=vvfat,file.rw=on,format=raw,if=virtio \ > - "${qemu_args[@]}" > +uefi_shell_run > diff --git a/arm/run b/arm/run > index ac64b3b461a2..40c2ca66ba7e 100755 > --- a/arm/run > +++ b/arm/run > @@ -60,7 +60,7 @@ if ! $qemu $M -chardev '?' | grep -q testdev; then > exit 2 > fi > > -if [ "$EFI_RUN" != "y" ]; then > +if [ "$UEFI_SHELL_RUN" != "y" ]; then > chr_testdev='-device virtio-serial-device' > chr_testdev+=' -device virtconsole,chardev=ctd -chardev testdev,id=ctd' > fi > @@ -75,7 +75,7 @@ command="$qemu -nodefaults $M $A -cpu $processor $chr_testdev $pci_testdev" > command+=" -display none -serial stdio" > command="$(migration_cmd) $(timeout_cmd) $command" > > -if [ "$EFI_RUN" = "y" ]; then > +if [ "$UEFI_SHELL_RUN" = "y" ]; then > ENVIRON_DEFAULT=n run_qemu_status $command "$@" > else > run_qemu $command -kernel "$@"
diff --git a/arm/efi/run b/arm/efi/run index e45cecfa3265..494ba9e7efe7 100755 --- a/arm/efi/run +++ b/arm/efi/run @@ -63,18 +63,23 @@ if [ "$EFI_CASE" = "_NO_FILE_4Uhere_" ]; then exit fi -mkdir -p "$EFI_CASE_DIR" -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_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_CASE_DIR/startup.nsh" +uefi_shell_run() +{ + mkdir -p "$EFI_CASE_DIR" + 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" + UEFI_SHELL_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_CASE_DIR/startup.nsh" + + UEFI_SHELL_RUN=y $TEST_DIR/run \ + -bios "$EFI_UEFI" \ + -drive file.dir="$EFI_CASE_DIR/",file.driver=vvfat,file.rw=on,format=raw,if=virtio \ + "${qemu_args[@]}" +} -EFI_RUN=y $TEST_DIR/run \ - -bios "$EFI_UEFI" \ - -drive file.dir="$EFI_CASE_DIR/",file.driver=vvfat,file.rw=on,format=raw,if=virtio \ - "${qemu_args[@]}" +uefi_shell_run diff --git a/arm/run b/arm/run index ac64b3b461a2..40c2ca66ba7e 100755 --- a/arm/run +++ b/arm/run @@ -60,7 +60,7 @@ if ! $qemu $M -chardev '?' | grep -q testdev; then exit 2 fi -if [ "$EFI_RUN" != "y" ]; then +if [ "$UEFI_SHELL_RUN" != "y" ]; then chr_testdev='-device virtio-serial-device' chr_testdev+=' -device virtconsole,chardev=ctd -chardev testdev,id=ctd' fi @@ -75,7 +75,7 @@ command="$qemu -nodefaults $M $A -cpu $processor $chr_testdev $pci_testdev" command+=" -display none -serial stdio" command="$(migration_cmd) $(timeout_cmd) $command" -if [ "$EFI_RUN" = "y" ]; then +if [ "$UEFI_SHELL_RUN" = "y" ]; then ENVIRON_DEFAULT=n run_qemu_status $command "$@" else run_qemu $command -kernel "$@"
Push the run code in arm/efi/run into a function named uefi_shell_run() since it will create an EFI file system, copy the test and possibly the DTB there, and create a startup.nsh which executes the test from the UEFI shell. Pushing this code into a function allows additional execution paths to be created in the script. Also rename EFI_RUN to UEFI_SHELL_RUN to pass the information on to arm/run that it's being called from uefi_shell_run(). Signed-off-by: Andrew Jones <andrew.jones@linux.dev> --- arm/efi/run | 33 +++++++++++++++++++-------------- arm/run | 4 ++-- 2 files changed, 21 insertions(+), 16 deletions(-)