
Hi Heinrich,
On Wed, 18 Dec 2024 at 05:09, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 11.12.24 01:46, Simon Glass wrote:
This is a feeble attempt to update the qemu script to run a selection of UEFI tests. It copies a .seq file into the disk so it can be read by SCT.
It doesn't seem to work and I am not sure why. I am posting it in case someone else has ideas or wants to pic it up.
Once Ilias' CI solution is in place, I can perhaps come back to this.
Signed-off-by: Simon Glass sjg@chromium.org
scripts/build-qemu.sh | 56 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 46 insertions(+), 10 deletions(-)
diff --git a/scripts/build-qemu.sh b/scripts/build-qemu.sh index 0ff53593cf9..f9ee0072573 100755 --- a/scripts/build-qemu.sh +++ b/scripts/build-qemu.sh @@ -21,20 +21,28 @@ usage() { fi echo "Usage: $0 -aBkrsw" echo
echo " -a - Select architecture (arm, x86)"
echo " -B - Don't build; assume a build exists"
echo " -k - Use kvm (kernel-based Virtual Machine)"
echo " -o - Run Operating System ('ubuntu' only for now)"
echo " -r - Run QEMU with the image"
echo " -R - Select OS release (e.g. 24.04)"
echo " -s - Use serial only (no display)"
echo " -w - Use word version (32-bit)" ) >&2
echo " -a <arch> - Select architecture (arm, x86)"
How about qemu-riscv64_smode_defconfig for RISC-V?
echo " -B - Don't build; assume a build exists"
echo " -e - Run UEFI Self-Certification Test (SCT)"
echo " -k - Use kvm (kernel-based Virtual Machine)"
echo " -o <name> - Run Operating System ('ubuntu' only for now)"
echo " -r - Run QEMU with the image"
echo " -R <os> - Select OS release (e.g. 24.04)"
echo " -s - Use serial only (no display)"
echo " -S <seq> - Select SCT sequence-file"
echo " -w - Use word version (32-bit)" ) >&2
A typical definition of word size is:
Word "size" refers to the amount of data a CPU's internal data registers can hold and process at one time.
I.e. a word on a 64-bit architecture has 64 bit.
%s/Use word version (32-bit)/Use 32-bit architecture/
Wouldn't it be the best to get rid of this parameter and just use parameter -a with values
- arm
- arm64
- riscv64
- loongson64
- x86
- x86_64
Yes, that might be better. My intent was to try to default to 64-bit, since that is what we normally want, but it isn't a very good flag. The efi script has the same thing.
On the other hand, it is annoying to say '64' when that is almost always what we mean. Perhaps a --32 flag?
exit 1
}
# Directory tree for OS images imagedir=${imagedir-/vid/software/linux}
+# Directory for UEFI Self-Certification Test (SCT) +sctdir=${sctdir-/vid/software/devel/uefi/sct}
+# Mount point for use when writing to disk images +mnt=${mnt-/mnt}
- # architecture (arm or x86) arch=arm
@@ -65,7 +73,7 @@ kvm= # We avoid in-tree build because it gets confusing trying different builds ubdir=${ubdir-/tmp/b}
-while getopts "a:Bko:rR:sw" opt; do +while getopts "a:Beko:rR:sS:w" opt; do case "${opt}" in a) arch=$OPTARG @@ -73,6 +81,17 @@ while getopts "a:Bko:rR:sw" opt; do B) build= ;;
e)
extra+=" -m 4G -smp 4"
extra+=" -display none"
extra+=" -device virtio-gpu-pci"
extra+=" -device qemu-xhci"
extra+=" -device usb-kbd"
extra+=" -drive file=${sctdir}/sct.img,format=raw,if=none,id=vda"
extra+=" -device virtio-blk-device,drive=vda,bootindex=1"
extra+=" -device virtio-net-device,netdev=net0"
extra+=" -netdev user,id=net0"
;; k) kvm="-enable-kvm" ;;
@@ -91,6 +110,9 @@ while getopts "a:Bko:rR:sw" opt; do s) serial=1 ;;
S)
seq=$OPTARG
;; w) bitness=32 ;;
@@ -105,6 +127,19 @@ build_u_boot() { buildman -w -o $DIR --board $BOARD -I || exit $? }
+# Write the SCT test-sequence file into the SCT image +update_sct_seq() {
if [[ -z "${seq}" ]]; then
return
fi
LOOP=$(sudo losetup --show -f -P "${sctdir}/sct.img")
PART="${LOOP}p1"
sudo mount -o loop ${PART} ${mnt} -o uid=$(id -u),gid=$(id -g)
cp "${seq}" "${mnt}/."
This will not work. The sequence file must be in Sequence directory of the installed SCT and you must specify the filename when invoking the SCT.
To avoid instance dependent file names you may copy the user provided sequence file always to the same location mnt/SCT/Sequence/uboot.seq.
OK, thanks, I'll take another look. It would be nice to get this working, although I believe Ilias will have a patch for CI before long.
Regards, Simon