According to the ACPI Serial Port Console Redirection Table (SPCR) specification, the field order after Flow Control is:
- Terminal Type (offset 62, 1 byte) - Language (offset 63, 1 byte) Previously they were swapped in both: - The table generation code (aml-build.c) - The golden reference blobs This fixes: - hw/acpi/aml-build.c - tests/data/acpi/riscv64/virt/SPCR - tests/data/acpi/loongarch64/virt/SPCR Reference: https://learn.microsoft.com/en-us/windows-hardware/drivers/bringup/serial-port-console-redirection-table Signed-off-by: Xiang W <[email protected]> --- hw/acpi/aml-build.c | 4 ++-- tests/data/acpi/loongarch64/virt/SPCR | Bin 80 -> 80 bytes tests/data/acpi/riscv64/virt/SPCR | Bin 90 -> 90 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c index 7edc8aed42..2adf2810c3 100644 --- a/hw/acpi/aml-build.c +++ b/hw/acpi/aml-build.c @@ -2116,10 +2116,10 @@ void build_spcr(GArray *table_data, BIOSLinker *linker, build_append_int_noprefix(table_data, f->stop_bits, 1); /* Flow Control */ build_append_int_noprefix(table_data, f->flow_control, 1); - /* Language */ - build_append_int_noprefix(table_data, f->language, 1); /* Terminal Type */ build_append_int_noprefix(table_data, f->terminal_type, 1); + /* Language */ + build_append_int_noprefix(table_data, f->language, 1); /* PCI Device ID */ build_append_int_noprefix(table_data, f->pci_device_id, 2); /* PCI Vendor ID */ diff --git a/tests/data/acpi/loongarch64/virt/SPCR b/tests/data/acpi/loongarch64/virt/SPCR index 3cc9bbcfb8051e632592d9db0fe3dba0af53ed8d..7bb819cd0d2ad20269e40e4a738709a45260cbb2 100644 GIT binary patch delta 23 TcmWFtm|!Qw%<vxw7?1z}S|J61 delta 23 TcmWFtm|!Qw!2BNw7?1z}S{?;} diff --git a/tests/data/acpi/riscv64/virt/SPCR b/tests/data/acpi/riscv64/virt/SPCR index 09617f8793a6f7b1f08172f735b58aa748671540..59d2c8f7f215a604612cbd0294c18bc6301e208a 100644 GIT binary patch delta 10 Rcma!wnqbGo%rMbG3IGpM0&@TW delta 10 Rcma!wnqbGoz&z1G3IGpJ0&@TW -- 2.47.3
