summary refs log tree commit diff stats
path: root/results/classifier/zero-shot/105/assembly/1724570
diff options
context:
space:
mode:
Diffstat (limited to 'results/classifier/zero-shot/105/assembly/1724570')
-rw-r--r--results/classifier/zero-shot/105/assembly/172457095
1 files changed, 95 insertions, 0 deletions
diff --git a/results/classifier/zero-shot/105/assembly/1724570 b/results/classifier/zero-shot/105/assembly/1724570
new file mode 100644
index 000000000..4d4fabe5b
--- /dev/null
+++ b/results/classifier/zero-shot/105/assembly/1724570
@@ -0,0 +1,95 @@
+assembly: 0.726
+semantic: 0.724
+other: 0.691
+mistranslation: 0.691
+instruction: 0.685
+graphic: 0.670
+device: 0.663
+socket: 0.647
+network: 0.619
+boot: 0.585
+vnc: 0.563
+KVM: 0.450
+
+qemu-system-x86_64 generates ACPI tables with broken endianess when run on big-endian hosts
+
+The bios-tables-test always fails when run on a big-endian host, which has iasl installed. When it calls iasl to dumps the AML files into ASL files, iasl complains
+
+Intel ACPI Component Architecture
+ASL+ Optimizing Compiler/Disassembler version 20170831
+Copyright (c) 2000 - 2017 Intel Corporation
+
+Input file aml-4L677Y, Length 0x38 (56) bytes
+Table [TEPH] is too long for file - needs: 0x38000000, remaining in file: 0x38
+Could not get ACPI tables from aml-4L677Y, AE_BAD_HEADER
+
+
+At first I thought this was an iasl bug, but the latest version of iasl in rawhide is ported to big endian.
+
+So I looked at the actual AML files that bios-tables-test extracts from the qemu-system-x86_64 memory space, when running on ppc64 host. These do indeed have different content from the AML files generated by qemu-system-x86_64 when running on an x86_64 host.
+
+
+eg the AML file for the HPET shows
+
+< 0000000   T   E   P   H nul nul nul   8 soh etx   B   O   C   H   S  sp
+<            4554    4850    0000    3800    0301    4f42    4843    2053
+< 0000020   B   X   P   C   H   P   E   T nul nul nul soh   B   X   P   C
+<            5842    4350    5048    5445    0000    0100    5842    4350
+< 0000040 nul nul nul soh soh   " ack nul nul nul nul nul nul nul   P   ~
+<            0000    0100    a201    8086    0000    0000    0000    fed0
+---
+> 0000000   H   P   E   T   8 nul nul nul soh etx   B   O   C   H   S  sp
+>            5048    5445    0038    0000    0301    4f42    4843    2053
+> 0000020   B   X   P   C   H   P   E   T soh nul nul nul   B   X   P   C
+>            5842    4350    5048    5445    0001    0000    5842    4350
+> 0000040 soh nul nul nul soh   " ack nul nul nul nul nul nul nul   P   ~
+>            0001    0000    a201    8086    0000    0000    0000    fed0
+
+so not only is the table name inverted, but the lenght is inverted, and several fields later on are inverted too.
+
+Other AML files for APIC and DSDT show similar brokenness
+
+This is seen with QEMU 2.10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+I think something like this should fix this issue:
+
+diff a/tests/bios-tables-test.c b/tests/bios-tables-test.c
+--- a/tests/bios-tables-test.c
++++ b/tests/bios-tables-test.c
+@@ -279,8 +279,19 @@ static void dump_aml_files(test_data *data, bool rebuild)
+         }
+         g_assert(fd >= 0);
+ 
++        sdt->header.signature = cpu_to_le32(sdt->header.signature);
++        sdt->header.length = cpu_to_le32(sdt->header.length);
++        sdt->header.oem_revision = cpu_to_le32(sdt->header.oem_revision);
++        sdt->header.asl_compiler_revision = cpu_to_le32(sdt->header.asl_compiler_revision);
++
+         ret = qemu_write_full(fd, sdt, sizeof(AcpiTableHeader));
+         g_assert(ret == sizeof(AcpiTableHeader));
++
++        sdt->header.signature = le32_to_cpu(sdt->header.signature);
++        sdt->header.length = le32_to_cpu(sdt->header.length);
++        sdt->header.oem_revision = le32_to_cpu(sdt->header.oem_revision);
++        sdt->header.asl_compiler_revision = le32_to_cpu(sdt->header.asl_compiler_revision);
++
+         ret = qemu_write_full(fd, sdt->aml, sdt->aml_len);
+         g_assert(ret == sdt->aml_len);
+ 
+
+
+Fixed here:
+https://git.qemu.org/?p=qemu.git;a=commitdiff;h=3831c07b89ab1f7aa1427
+