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

Reply via email to