On 15/10/2025 18:31, Michael Tokarev wrote:
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 :)
Yeah that's an odd one. I just tested master here and it works fine here on Debian
bookworm:
$ PYTHON=python3 QTEST_QEMU_BINARY=./qemu-system-i386 tests/qtest/cdrom-test --tap -k
-p /i386/cdrom/boot/am53c974
# random seed: R02Sa8c7bf5b1a18b3b0358cc0699bb45534
xorriso 1.5.4 : RockRidge filesystem manipulator, libburnia project.
xorriso 1.5.4
ISO 9660 Rock Ridge filesystem manipulator and CD/DVD/BD burn program
Copyright (C) 2019, Thomas Schmitt <[email protected]>, libburnia project.
xorriso version : 1.5.4
Version timestamp : 2021.01.30.150001
Build timestamp : -none-given-
libisofs in use : 1.5.4 (min. 1.5.4)
libjte in use : 2.0.0 (min. 2.0.0)
libburn in use : 1.5.4 (min. 1.5.4)
libburn OS adapter: internal GNU/Linux SG_IO adapter sg-linux
libisoburn in use : 1.5.4 (min. 1.5.4)
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.4 : RockRidge filesystem manipulator, libburnia project.
# starting QEMU: exec ./qemu-system-i386 -qtest unix:/tmp/qtest-1253673.sock
-qtest-log /dev/null -chardev socket,path=/tmp/qtest-1253673.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-1253673.sock
-qtest-log /dev/null -chardev socket,path=/tmp/qtest-1253673.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-1253673.sock
-qtest-log /dev/null -chardev socket,path=/tmp/qtest-1253673.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-gLvZnQ -accel qtest
ok 1 /i386/cdrom/boot/am53c974
# End of boot tests
# End of cdrom tests
# End of i386 tests
1..1
Could it be related to the newer xorriso version? And are you sure there isn't an
older copy of SeaBIOS lying around somewhere that is getting picked up by accident?
ATB,
Mark.