On 21/08/2024 15:45, Igor Mammedov wrote:
On Wed, 14 Aug 2024 11:56:08 +0000
Ricardo Ribalda <riba...@chromium.org> wrote:
Today for x86 the _PRT() table is computed in runtime.
Under some configurations, computing the _PRT table can take more than
30 seconds and the ACPI timeout is violated.
This patchset modifies _PRT() to return a pre-computed table.
To be sure we are not breaking anything boot tested it with
rhel6.7/9.0, winxp, ws2022
Hi Ricardo/Igor,
Unfortunately it seems that this series (and in particular commit 99cb2c6c7b
("hw/i386/acpi-build: Return a pre-computed _PRT table") breaks my WinXP ISO boot
test case using the dc390/am53C974 SCSI device.
Current master hangs when booting WinXP from a dc390 SCSI CD just after loading the
kernel device drivers and displaying "Setup is starting Windows" instead of
proceeding to the "Welcome to Setup" screen.
Note that there is a separate timeout issue caused by a bug in SeaBIOS which is fixed
in the SeaBIOS repository as commit 2424e4c0 ("esp-scsi: indicate acceptance of
MESSAGE IN phase data"). As the QEMU SeaBIOS binaries haven't yet been updated to
contain this fix, I've uploaded a pre-built bios.bin to
https://www.ilande.co.uk/tmp/qemu/bios.bin to help reproduce the issue.
Once the above file is downloaded the issue can be reproduced with the command line
below:
./qemu-system-x86_64 \
-m 1G \
-device dc390,id=scsi0 \
-device scsi-cd,drive=drive0,bus=scsi0.0,channel=0,scsi-id=6,lun=0 \
-drive file=winxp.iso,if=none,id=drive0 \
-vga cirrus \
-boot d \
-trace 'esp*' \
-bios bios.bin
With the ESP tracing enabled it is possible to see that WinXP appears to get stuck in
a loop trying to send a SCSI command followed by a "Bus Reset". Reverting 99cb2c6c7b
allows the WinXP ISO to boot to the "Welcome to Setup" screen as before.
ATB,
Mark.
Changelog v3->v4 Thanks Richard:
- Make link_name struct static
Changelog v3->v4 Thanks Igor:
- Add missing files to tests/qtest/bios-tables-test-allowed-diff.h
Changelog v2->v3 Thanks Michael:
- Code style
- Add cover letter
Ricardo Ribalda (3):
tests/acpi: pc: allow DSDT acpi table changes
hw/i386/acpi-build: Return a pre-computed _PRT table
tests/acpi: pc: update golden masters for DSDT
hw/i386/acpi-build.c | 120 +++++----------------------
tests/data/acpi/x86/pc/DSDT | Bin 6830 -> 8527 bytes
tests/data/acpi/x86/pc/DSDT.acpierst | Bin 6741 -> 8438 bytes
tests/data/acpi/x86/pc/DSDT.acpihmat | Bin 8155 -> 9852 bytes
tests/data/acpi/x86/pc/DSDT.bridge | Bin 13701 -> 15398 bytes
tests/data/acpi/x86/pc/DSDT.cphp | Bin 7294 -> 8991 bytes
tests/data/acpi/x86/pc/DSDT.dimmpxm | Bin 8484 -> 10181 bytes
tests/data/acpi/x86/pc/DSDT.hpbridge | Bin 6781 -> 8478 bytes
tests/data/acpi/x86/pc/DSDT.hpbrroot | Bin 3337 -> 5034 bytes
tests/data/acpi/x86/pc/DSDT.ipmikcs | Bin 6902 -> 8599 bytes
tests/data/acpi/x86/pc/DSDT.memhp | Bin 8189 -> 9886 bytes
tests/data/acpi/x86/pc/DSDT.nohpet | Bin 6688 -> 8385 bytes
tests/data/acpi/x86/pc/DSDT.numamem | Bin 6836 -> 8533 bytes
tests/data/acpi/x86/pc/DSDT.roothp | Bin 10623 -> 12320 bytes
tests/data/acpi/x86/q35/DSDT.cxl | Bin 9714 -> 13148 bytes
tests/data/acpi/x86/q35/DSDT.viot | Bin 9464 -> 14615 bytes
16 files changed, 22 insertions(+), 98 deletions(-)