Signed-off-by: Vladimir Serbinenko <phco...@gmail.com> --- tests/util/grub-shell.in | 43 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-)
diff --git a/tests/util/grub-shell.in b/tests/util/grub-shell.in index ae5f711fe..04405a789 100644 --- a/tests/util/grub-shell.in +++ b/tests/util/grub-shell.in @@ -33,6 +33,7 @@ export PATH trim=0 trim_head=664cbea8-132f-4770-8aa4-1696d59ac35c +trim_tail=a3f2a1b5-74fb-4c76-959b-4cf5ef5578b3 # Usage: usage # Print the usage. @@ -303,6 +304,41 @@ case "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" in disk="device virtio-blk-device,drive=hd1 -drive if=none,id=hd1,file=" serial_port=efi0 ;; + riscv64-efi) + qemu=qemu-system-riscv64 + boot=hd + console=console + trim=1 + pflash_code=${srcdir}/RISCV_VIRT_CODE.fd + pflash_vars=${srcdir}/RISCV_VIRT_VARS.fd + if [ -f "$pflash_code" ]; then + qemuopts="-drive if=pflash,format=raw,unit=0,readonly=on,file=$pflash_code $qemuopts" + if [ -f "$pflash_vars" ]; then + qemuopts="-drive if=pflash,format=raw,unit=1,snapshot=on,file=$pflash_vars $qemuopts" + fi + elif [ -f /usr/share/qemu-efi-riscv64/RISCV_VIRT_CODE.fd ]; then + pflash_code=/usr/share/qemu-efi-riscv64/RISCV_VIRT_CODE.fd + pflash_vars=/usr/share/qemu-efi-riscv64/RISCV_VIRT_VARS.fd + qemuopts="-drive if=pflash,format=raw,unit=0,readonly=on,file=$pflash_code $qemuopts" + qemuopts="-drive if=pflash,format=raw,unit=1,snapshot=on,file=$pflash_vars $qemuopts" + elif [ -f /usr/share/edk2/riscv/RISCV_VIRT_CODE.fd ]; then + # Fedora ships images that are under 32M and we need to fill them to 32M + cp /usr/share/edk2/riscv/RISCV_VIRT_CODE.fd "$work_directory" + cp /usr/share/edk2/riscv/RISCV_VIRT_VARS.fd "$work_directory" + pflash_code="$work_directory"/RISCV_VIRT_CODE.fd + pflash_vars="$work_directory"/RISCV_VIRT_VARS.fd + truncate -s 32M $pflash_code + truncate -s 32M $pflash_vars + qemuopts="-drive if=pflash,format=raw,unit=0,readonly=on,file=$pflash_code $qemuopts" + qemuopts="-drive if=pflash,format=raw,unit=1,snapshot=on,file=$pflash_vars $qemuopts" + else + echo "Firmware not found, please install either the appropriate Debian/Fedora package or an appropriately named copy in the source directory." >&2 + exit 1 + fi + qemuopts="-machine virt $qemuopts" + disk="device virtio-blk-device,drive=hd1 -drive if=none,id=hd1,file=" + serial_port=efi0 + ;; loongarch64-efi) qemu=qemu-system-loongarch64 boot=hd @@ -498,6 +534,9 @@ source "\$prefix/testcase.cfg" # Stop serial output to suppress "ACPI shutdown failed" error. EOF # Attempt to switch to console on i386-ieee1275 causes "screen not found" message +if [ x"${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = xriscv64-efi ]; then + echo "echo $trim_tail" >>${cfgfile} +fi if [ x$console != x ] && [ x"${grub_modinfo_target_cpu}-${grub_modinfo_platform}" != xi386-ieee1275 ]; then echo "terminal_output $console" >>${cfgfile} fi @@ -547,6 +586,8 @@ if [ x$boot = xhd ]; then device="device virtio-blk-device,drive=hd0 -drive if=none,id=hd0,file=" elif [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = loongarch64-efi ]; then device="device virtio-blk-pci,drive=grubdisk -drive if=none,id=grubdisk,file=" + elif [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = riscv64-efi ]; then + device="device virtio-blk-device,drive=hd0,bootindex=1 -drive if=none,id=hd0,file=" elif [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = mips-arc ]; then device="hdb " else @@ -612,7 +653,7 @@ fi do_trim () { if [ $trim = 1 ] || [ $trim = 2 ]; then - awk '{ if (have_head == 1) print $0; } /^'"$trim_head"'/ { have_head=1; }' + awk ' /^'"$trim_tail"'/ { have_head=0; } { if (have_head == 1) print $0; } /^'"$trim_head"'/ { have_head=1; }' else cat fi -- 2.39.2 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel