11.07.2025 23:46, Mark Cave-Ayland wrote:
If an ESP command is issued in an incorrect mode then an illegal command
interrupt should be generated. Add a new esp_cmd_is_valid() function to
indicate whether the ESP command is valid for the current mode, and if not
then raise the illegal command interrupt.
This fixes WinNT MIPS which issues ICCS after a Chip Reset which is not
permitted, but will fail with an INACCESSIBLE_BOOT_DEVICE error unless an
interrupt is generated.
Signed-off-by: Mark Cave-Ayland <[email protected]>
Fixes: 83428f7a97 ("esp.c: move write_response() non-DMA logic to
esp_do_nodma()")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2464
This is commit 6f8ce26bb00 which landed between v10.0.0 and v10.1.0,
and after seabios update to 1.17.0.
This commit - bisectable - breaks qemu's cdrom test.
$ PYTHON=python3 QTEST_QEMU_BINARY=./qemu-system-i386 tests/qtest/cdrom-test
--tap -k -p /i386/cdrom/boot/am53c974
TAP version 14
# random seed: R02S10a5ccc054a33d854e7868e868e33d3c
xorriso 1.5.6 : RockRidge filesystem manipulator, libburnia project.
xorriso 1.5.6
ISO 9660 Rock Ridge filesystem manipulator and CD/DVD/BD burn program
Copyright (C) 2023, Thomas Schmitt <[email protected]>, libburnia project.
xorriso version : 1.5.6
Version timestamp : 2023.06.07.180001
Build timestamp : -none-given-
libisofs in use : 1.5.6 (min. 1.5.6)
libjte in use : 2.0.0 (min. 2.0.0)
libburn in use : 1.5.6 (min. 1.5.6)
libburn OS adapter: internal GNU/Linux SG_IO adapter sg-linux
libisoburn in use : 1.5.6 (min. 1.5.6)
Provided under GNU GPL version 3 or later, due to libreadline license.
There is NO WARRANTY, to the extent permitted by law.
xorriso 1.5.6 : RockRidge filesystem manipulator, libburnia project.
# starting QEMU: exec ./qemu-system-i386 -qtest unix:/tmp/qtest-1823149.sock -qtest-log /dev/null -chardev socket,path=/tmp/qtest-1823149.qmp,id=char0
-mon chardev=char0,mode=control -display none -audio none -machine none -accel qtest
# starting QEMU: exec ./qemu-system-i386 -qtest unix:/tmp/qtest-1823149.sock -qtest-log /dev/null -chardev socket,path=/tmp/qtest-1823149.qmp,id=char0
-mon chardev=char0,mode=control -display none -audio none -machine none -accel qtest
# Start of i386 tests
# Start of cdrom tests
# Start of boot tests
# starting QEMU: exec ./qemu-system-i386 -qtest unix:/tmp/qtest-1823149.sock -qtest-log /dev/null -chardev socket,path=/tmp/qtest-1823149.qmp,id=char0
-mon chardev=char0,mode=control -display none -audio none -accel kvm -accel tcg -no-shutdown -device am53c974 -device scsi-cd,drive=cd1 -drive
if=none,id=cd1,format=raw,file=cdrom-boot-iso-b5O01H -accel qtest
[long pause - I guess qemu binary just times out after a few minutes]
ERROR:../../build/qemu/10.1/tests/qtest/boot-sector.c:173:boot_sector_test:
assertion failed (signature == SIGNATURE): (0x00000000 == 0x0000dead)
Mark, it looks you were right on IRC - this is one of your ESP changes :)
But I also wonder why we haven't noticed this in the CI on gitlab. I only
come across it on my local system when I installed xorriso for an unrelated
reason, and this test started to fail - I thought it's my staging-10.1
regression :)
Thanks,
/mjt