summary refs log tree commit diff stats
path: root/gitlab/issues/target_s390x/host_missing/accel_TCG
diff options
context:
space:
mode:
authorChristian Krinitsin <mail@krinitsin.com>2025-05-21 21:21:26 +0200
committerChristian Krinitsin <mail@krinitsin.com>2025-05-21 21:21:26 +0200
commit4b927bc37359dec23f67d3427fc982945f24f404 (patch)
tree245449ef9146942dc7fffd0235b48b7e70a00bf2 /gitlab/issues/target_s390x/host_missing/accel_TCG
parentaa8bd79cec7bf6790ddb01d156c2ef2201abbaab (diff)
downloademulator-bug-study-4b927bc37359dec23f67d3427fc982945f24f404.tar.gz
emulator-bug-study-4b927bc37359dec23f67d3427fc982945f24f404.zip
add gitlab issues in toml format
Diffstat (limited to 'gitlab/issues/target_s390x/host_missing/accel_TCG')
-rw-r--r--gitlab/issues/target_s390x/host_missing/accel_TCG/1248.toml21
-rw-r--r--gitlab/issues/target_s390x/host_missing/accel_TCG/1865.toml32
-rw-r--r--gitlab/issues/target_s390x/host_missing/accel_TCG/281.toml15
-rw-r--r--gitlab/issues/target_s390x/host_missing/accel_TCG/319.toml15
-rw-r--r--gitlab/issues/target_s390x/host_missing/accel_TCG/616.toml115
-rw-r--r--gitlab/issues/target_s390x/host_missing/accel_TCG/618.toml103
-rw-r--r--gitlab/issues/target_s390x/host_missing/accel_TCG/655.toml40
-rw-r--r--gitlab/issues/target_s390x/host_missing/accel_TCG/737.toml15
-rw-r--r--gitlab/issues/target_s390x/host_missing/accel_TCG/738.toml15
-rw-r--r--gitlab/issues/target_s390x/host_missing/accel_TCG/902.toml15
-rw-r--r--gitlab/issues/target_s390x/host_missing/accel_TCG/979.toml19
11 files changed, 405 insertions, 0 deletions
diff --git a/gitlab/issues/target_s390x/host_missing/accel_TCG/1248.toml b/gitlab/issues/target_s390x/host_missing/accel_TCG/1248.toml
new file mode 100644
index 00000000..a04ef82c
--- /dev/null
+++ b/gitlab/issues/target_s390x/host_missing/accel_TCG/1248.toml
@@ -0,0 +1,21 @@
+id = 1248
+title = "s390x: glibc widestring algorithms broken"
+state = "closed"
+created_at = "2022-10-10T18:47:41.188Z"
+closed_at = "2022-11-04T13:37:57.063Z"
+labels = ["accel: TCG", "target: s390x", "workflow::Patch available"]
+url = "https://gitlab.com/qemu-project/qemu/-/issues/1248"
+host-os = "ArchLinux"
+host-arch = "x86_64"
+qemu-version = "qemu-s390x version 7.1.0"
+guest-os = "user emulation"
+guest-arch = "s390x"
+description = """Several wide-string functions from glibc are broken und qemu user emulation.
+Affected are at least: `wcsbrk()`, `wcsspn()` and `wcscspn()`. All of these are implemented in optimized assembler in glibc.
+
+Unfortunately I don't have access to the real hardware to check the behavior there. But it would probably been detected by now.
+Also I don't know which instructions exactly don't work, as I don't have any knowledge about s390x assembler."""
+reproduce = """1. Compile the test program above
+2. Run the program
+3. Output is `0`, should be `1`."""
+additional = "n/a"
diff --git a/gitlab/issues/target_s390x/host_missing/accel_TCG/1865.toml b/gitlab/issues/target_s390x/host_missing/accel_TCG/1865.toml
new file mode 100644
index 00000000..b3073e2d
--- /dev/null
+++ b/gitlab/issues/target_s390x/host_missing/accel_TCG/1865.toml
@@ -0,0 +1,32 @@
+id = 1865
+title = "ERROR:../target/s390x/tcg/cc_helper.c:128:cc_calc_addu: assertion failed: (carry_out <= 1)"
+state = "closed"
+created_at = "2023-09-05T12:21:27.362Z"
+closed_at = "2023-11-13T18:06:25.752Z"
+labels = ["accel: TCG", "target: s390x", "workflow::Patch available"]
+url = "https://gitlab.com/qemu-project/qemu/-/issues/1865"
+host-os = "Fedora 38"
+host-arch = "x86 (AMD)"
+qemu-version = "8.1"
+guest-os = "ClefOS 7.7 (CentOS)"
+guest-arch = "s390x"
+description = """Installation progresses OK, but QEMU asserts during post-installation setup tasks:
+
+Performing post-installation setup tasks
+**
+ERROR:../target/s390x/tcg/cc_helper.c:128:cc_calc_addu: assertion failed: (carry_out <= 1)
+Bail out! ERROR:../target/s390x/tcg/cc_helper.c:128:cc_calc_addu: assertion failed: (carry_out <= 1)
+./install.sh: line 25: 158224 Aborted                 (core dumped) $QEMU/qemu-system-s390x -M s390-ccw-virtio -smp 1 -m 4G 
+-nographic -display none -serial mon:stdio -device virtio-scsi -drive file=$ISO,format=raw,if=none,id=c1 -device scsi-cd,dri
+ve=c1 -hda $DISK -kernel $KERNEL -initrd $INITRD -net nic,model=virtio,netdev=net1 -netdev user,id=net1 -D debug.log"""
+reproduce = """1. Download ClefOS 7.7 ISO from [sinenomine](https://download.sinenomine.net/clefos)
+2. Download Fedora 27 ISO and extract kernel.img and initrd.img, for boot purposes
+3. Boot ClefOS ISO using Fedora kernel/initrd
+4. Go through a minimal install, observe crash during post-installation setup tasks"""
+additional = """See script log and install.sh attached. [install-and-output.zip](/uploads/87eb8484344402ea9c68784f89ea3339/install-and-output.zip)
+
+I have tried QEMU 7.2.5 and 8.1 on my Fedora 38 AMD host.
+
+My goal is to create RHEL7, SLES12, Ubuntu20 (or compatible) VMs for s390x software builds.
+So far only Ubuntu20 has been successful.
+RHEL7 fails due to kernel issues described in QEMU issue 906, so I'm trying ClefOS (CentOS for z) based on a procedure [here](https://www.linuxquestions.org/questions/linux-server-73/install-clefos-7-5-an-open-source-version-of-rhel-7-5-s390x-using-qemu-4175658710/)"""
diff --git a/gitlab/issues/target_s390x/host_missing/accel_TCG/281.toml b/gitlab/issues/target_s390x/host_missing/accel_TCG/281.toml
new file mode 100644
index 00000000..83b12bbf
--- /dev/null
+++ b/gitlab/issues/target_s390x/host_missing/accel_TCG/281.toml
@@ -0,0 +1,15 @@
+id = 281
+title = "External modules retreval using Go1.15 on s390x appears to have checksum and ECDSA verification issues"
+state = "closed"
+created_at = "2021-05-13T12:15:26.374Z"
+closed_at = "2021-09-24T08:44:35.195Z"
+labels = ["Launchpad", "accel: TCG", "linux-user", "target: s390x"]
+url = "https://gitlab.com/qemu-project/qemu/-/issues/281"
+host-os = "n/a"
+host-arch = "n/a"
+qemu-version = "n/a"
+guest-os = "n/a"
+guest-arch = "n/a"
+description = "n/a"
+reproduce = "n/a"
+additional = "n/a"
diff --git a/gitlab/issues/target_s390x/host_missing/accel_TCG/319.toml b/gitlab/issues/target_s390x/host_missing/accel_TCG/319.toml
new file mode 100644
index 00000000..5b851bf6
--- /dev/null
+++ b/gitlab/issues/target_s390x/host_missing/accel_TCG/319.toml
@@ -0,0 +1,15 @@
+id = 319
+title = "Openjdk11+ fails to install on s390x"
+state = "closed"
+created_at = "2021-05-15T14:04:48.136Z"
+closed_at = "2021-08-04T08:26:56.929Z"
+labels = ["Launchpad", "accel: TCG", "kind::Bug", "target: s390x", "workflow::In Progress"]
+url = "https://gitlab.com/qemu-project/qemu/-/issues/319"
+host-os = "n/a"
+host-arch = "n/a"
+qemu-version = "n/a"
+guest-os = "n/a"
+guest-arch = "n/a"
+description = "n/a"
+reproduce = "n/a"
+additional = "n/a"
diff --git a/gitlab/issues/target_s390x/host_missing/accel_TCG/616.toml b/gitlab/issues/target_s390x/host_missing/accel_TCG/616.toml
new file mode 100644
index 00000000..a762c3f6
--- /dev/null
+++ b/gitlab/issues/target_s390x/host_missing/accel_TCG/616.toml
@@ -0,0 +1,115 @@
+id = 616
+title = "overflow condition code determined incorrectly after addition on s390x"
+state = "closed"
+created_at = "2021-09-12T15:22:43.008Z"
+closed_at = "2022-04-02T17:38:46.610Z"
+labels = ["accel: TCG", "kind::Bug", "target: s390x", "workflow::Confirmed"]
+url = "https://gitlab.com/qemu-project/qemu/-/issues/616"
+host-os = "Ubuntu 20.04"
+host-arch = "x86_64"
+qemu-version = "6.1.0"
+guest-os = "Linux"
+guest-arch = "s390x"
+description = """The following program foo.c
+[foo.c](/uploads/78f5f799af6e3c400a6a42634f3f0e63/foo.c)
+
+```
+#include <stdio.h>
+
+int overflow_32 (int x, int y)
+{
+  int sum;
+  return ! __builtin_add_overflow (x, y, &sum);
+}
+
+int overflow_64 (long long x, long long y)
+{
+  long sum;
+  return ! __builtin_add_overflow (x, y, &sum);
+}
+
+int a1 = -2147483648;
+int b1 = -2147483648;
+long long a2 = -9223372036854775808L;
+long long b2 = -9223372036854775808L;
+
+int main ()
+{
+  {
+    int a = a1;
+    int b = b1;
+    printf ("a = 0x%x, b = 0x%x\\n", a, b);
+    printf ("no_overflow = %d\\n", overflow_32 (a, b));
+  }
+  {
+    long long a = a2;
+    long long b = b2;
+    printf ("a = 0x%llx, b = 0x%llx\\n", a, b);
+    printf ("no_overflow = %d\\n", overflow_64 (a, b));
+  }
+}
+```
+
+should print
+
+```
+a = 0x80000000, b = 0x80000000
+no_overflow = 0
+a = 0x8000000000000000, b = 0x8000000000000000
+no_overflow = 0
+```
+
+However, when compiled as an s390x program and executed through
+qemu 6.1.0 (Linux user-mode), it prints 'no_overflow = 1' twice.
+
+```
+$ s390x-linux-gnu-gcc-10 --version
+s390x-linux-gnu-gcc-10 (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0
+```
+
+```
+$ s390x-linux-gnu-gcc-10 -static foo.c
+$ ~/inst-qemu/6.1.0/bin/qemu-s390x a.out
+a = 0x80000000, b = 0x80000000
+no_overflow = 1
+a = 0x8000000000000000, b = 0x8000000000000000
+no_overflow = 1
+```
+
+```
+$ s390x-linux-gnu-gcc-10 -O2 -static foo.c
+$ ~/inst-qemu/6.1.0/bin/qemu-s390x a.out
+a = 0x80000000, b = 0x80000000
+no_overflow = 1
+a = 0x8000000000000000, b = 0x8000000000000000
+no_overflow = 1
+```
+
+The code generated by 's390x-linux-gnu-gcc-10 -O2' makes use of the
+'o' (overflow / ones) condition code:
+
+```
+overflow_64:
+        lgr     %r1,%r2    ;; copy a into %r1
+        lghi    %r2,0
+        agr     %r1,%r3    ;; add a and b
+        bnor    %r14       ;; if no overflow, return %r2 = 0
+        lghi    %r2,1
+        br      %r14       ;; otherwise, return %r2 = 1
+```
+
+Either the bug is in GCC, that is, GCC produces code that uses the CPU's
+overflow condition code when it shouldn't.
+
+Or the bug is in QEMU, that is, QEMU does not set the overflow condition
+code correctly.
+
+This can be decided by running the above program on real Linux/s390x hardware
+(to which I don't have access)."""
+reproduce = """[foo.static.s390x](/uploads/ac41abf4c54baf9ca96ba82d75a24ad6/foo.static.s390x)
+(foo.static.s390x is attached, the result of "s390x-linux-gnu-gcc-10 -static -O2 foo.c -o foo.static.s390x")
+
+1. `qemu-s390x foo.static.s390x`"""
+additional = """If the bug is really in QEMU, the attached patch fixes it.
+
+[0001-s390x-Fix-determination-of-overflow-condition-code-a.patch](/uploads/552917079ccd25f1861d682fc9dee3e8/0001-s390x-Fix-determination-of-overflow-condition-code-a.patch)"""
diff --git a/gitlab/issues/target_s390x/host_missing/accel_TCG/618.toml b/gitlab/issues/target_s390x/host_missing/accel_TCG/618.toml
new file mode 100644
index 00000000..cd397f72
--- /dev/null
+++ b/gitlab/issues/target_s390x/host_missing/accel_TCG/618.toml
@@ -0,0 +1,103 @@
+id = 618
+title = "overflow condition code determined incorrectly after subtraction on s390x"
+state = "closed"
+created_at = "2021-09-12T22:42:18.749Z"
+closed_at = "2022-04-02T17:38:46.614Z"
+labels = ["accel: TCG", "kind::Bug", "target: s390x", "workflow::Confirmed"]
+url = "https://gitlab.com/qemu-project/qemu/-/issues/618"
+host-os = "Ubuntu 20.04"
+host-arch = "x86_64"
+qemu-version = "6.1.0"
+guest-os = "Linux"
+guest-arch = "s390x"
+description = """Paul Eggert found this bug, just by taking a look at the file `qemu/target/s390x/tcg/cc_helper.c`.
+
+The following program
+[foo.c](/uploads/c1f425684fd661c4437950d7d8ddf31d/foo.c)
+```
+#include <stdio.h>
+
+int overflow_32 (int x, int y)
+{
+  int sum;
+  return __builtin_sub_overflow (x, y, &sum);
+}
+
+int overflow_64 (long long x, long long y)
+{
+  long sum;
+  return __builtin_sub_overflow (x, y, &sum);
+}
+
+int a1 = 0;
+int b1 = -2147483648;
+long long a2 = 0L;
+long long b2 = -9223372036854775808L;
+
+int main ()
+{
+  {
+    int a = a1;
+    int b = b1;
+    printf ("a = 0x%x, b = 0x%x\\n", a, b);
+    printf ("no_overflow = %d\\n", ! overflow_32 (a, b));
+  }
+  {
+    long long a = a2;
+    long long b = b2;
+    printf ("a = 0x%llx, b = 0x%llx\\n", a, b);
+    printf ("no_overflow = %d\\n", ! overflow_64 (a, b));
+  }
+}
+```
+should print
+```
+a = 0x0, b = 0x80000000
+no_overflow = 0
+a = 0x0, b = 0x8000000000000000
+no_overflow = 0
+```
+However, when compiled as an s390x program and executed through qemu 6.1.0 (Linux user-mode), it prints 'no_overflow = 1' twice.
+```
+$ s390x-linux-gnu-gcc-10 --version
+s390x-linux-gnu-gcc-10 (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0
+```
+
+```
+$ s390x-linux-gnu-gcc-10 -static foo.c
+$ ~/inst-qemu/6.1.0/bin/qemu-s390x a.out
+a = 0x0, b = 0x80000000
+no_overflow = 1
+a = 0x0, b = 0x8000000000000000
+no_overflow = 1
+```
+
+```
+$ s390x-linux-gnu-gcc-10 -O2 -static foo.c
+$ ~/inst-qemu/6.1.0/bin/qemu-s390x a.out
+a = 0x0, b = 0x80000000
+no_overflow = 1
+a = 0x0, b = 0x8000000000000000
+no_overflow = 1
+```
+
+The code generated by 's390x-linux-gnu-gcc-10 -O2' makes use of the 'o' (overflow / ones) condition code:
+```
+overflow_64:
+        lgr     %r1,%r2    ;; copy a into %r1
+        lghi    %r2,0
+        sgr     %r1,%r3    ;; subtract b from a
+        bnor    %r14       ;; if no overflow, return %r2 = 0
+        lghi    %r2,1
+        br      %r14       ;; otherwise, return %r2 = 1
+```
+
+The condition code and the overflow bit are defined in the z/Architecture Principles of Operation (POP) http://publibfi.boulder.ibm.com/epubs/pdf/dz9zr011.pdf page 7-5 / 7-6 / 7-388 : "In mathematical terms, signed addition and subtraction produce a fixed-point overflow when the result is outside the range of representation for signed binary integers."
+
+I conclude that the bug is in QEMU: QEMU does not set the overflow condition code correctly."""
+reproduce = """[foo.static.s390x](/uploads/e4b79b019db590f3a4b13cac41e57ba6/foo.static.s390x)
+(the result of "s390x-linux-gnu-gcc-10 -static -O2 foo.c -o foo.static.s390x")
+
+1. `qemu-s390x foo.static.s390x`"""
+additional = """The attached patch fixes it.
+[0002-s390x-Fix-determination-of-overflow-condition-code-a.patch](/uploads/8d414f84fe0ed36bf07bd28f5e7836ab/0002-s390x-Fix-determination-of-overflow-condition-code-a.patch)"""
diff --git a/gitlab/issues/target_s390x/host_missing/accel_TCG/655.toml b/gitlab/issues/target_s390x/host_missing/accel_TCG/655.toml
new file mode 100644
index 00000000..ada2f531
--- /dev/null
+++ b/gitlab/issues/target_s390x/host_missing/accel_TCG/655.toml
@@ -0,0 +1,40 @@
+id = 655
+title = "Java crashes on s390x VM with SIGILL/ILL_PRVOPC at '__kernel_getcpu+0x8'"
+state = "closed"
+created_at = "2021-09-30T22:39:24.111Z"
+closed_at = "2022-12-04T23:45:56.336Z"
+labels = ["accel: TCG", "target: s390x", "workflow::Patch available"]
+url = "https://gitlab.com/qemu-project/qemu/-/issues/655"
+host-os = "Ubuntu 20.04.3 LTS"
+host-arch = "x86_64"
+qemu-version = "QEMU emulator version 6.1.0"
+guest-os = "Ubuntu 20.04.3 LTS"
+guest-arch = "s390x"
+description = """The `java` command fails with the following message:
+
+```console
+$ /usr/lib/jvm/java-17-openjdk-s390x/bin/java --version
+#
+# A fatal error has been detected by the Java Runtime Environment:
+#
+# SIGILL (0x4) at pc=0x000003ff9e4fe6f4, pid=2883, tid=2884
+#
+# JRE version: (17.0+35) (build )
+# Java VM: OpenJDK 64-Bit Server VM (17+35-Ubuntu-120.04, mixed
+# mode, sharing, tiered, compressed oops, compressed class ptrs,
+# serial gc, linux-s390x)
+# Problematic frame:
+# C [linux-vdso64.so.1+0x6f8] __kernel_getcpu+0x8
+#
+# Core dump will be written. Default location: Core dumps may
+# be processed with "/usr/share/apport/apport %p %s %c %d %P %E"
+# (or dumping to /home/ubuntu/core.2883)
+#
+# An error report file with more information is saved as:
+# /home/ubuntu/hs_err_pid2883.log
+#
+#
+Aborted (core dumped)
+```"""
+reproduce = """1. Run `java --version`"""
+additional = """The corresponding log file is attached as the file [hs_err_pid2883.log](/uploads/1631b6a0f0aad2f77c4928ed6bb540c6/hs_err_pid2883.log)."""
diff --git a/gitlab/issues/target_s390x/host_missing/accel_TCG/737.toml b/gitlab/issues/target_s390x/host_missing/accel_TCG/737.toml
new file mode 100644
index 00000000..4472d932
--- /dev/null
+++ b/gitlab/issues/target_s390x/host_missing/accel_TCG/737.toml
@@ -0,0 +1,15 @@
+id = 737
+title = "s390x/tcg: Implement Miscellaneous-Instruction-Extensions Facility 3 for the s390x"
+state = "closed"
+created_at = "2021-11-19T08:24:51.602Z"
+closed_at = "2022-03-01T15:55:08.755Z"
+labels = ["accel: TCG", "kind::Feature Request", "target: s390x"]
+url = "https://gitlab.com/qemu-project/qemu/-/issues/737"
+host-os = "n/a"
+host-arch = "n/a"
+qemu-version = "n/a"
+guest-os = "n/a"
+guest-arch = "n/a"
+description = "n/a"
+reproduce = "n/a"
+additional = """http://publibfp.dhe.ibm.com/epubs/pdf/a227832c.pdf"""
diff --git a/gitlab/issues/target_s390x/host_missing/accel_TCG/738.toml b/gitlab/issues/target_s390x/host_missing/accel_TCG/738.toml
new file mode 100644
index 00000000..e3584f76
--- /dev/null
+++ b/gitlab/issues/target_s390x/host_missing/accel_TCG/738.toml
@@ -0,0 +1,15 @@
+id = 738
+title = "s390x/tcg: Implement Vector-Enhancements Facility 2 for s390x"
+state = "closed"
+created_at = "2021-11-19T08:32:39.918Z"
+closed_at = "2022-05-05T07:06:55.301Z"
+labels = ["accel: TCG", "kind::Feature Request", "target: s390x"]
+url = "https://gitlab.com/qemu-project/qemu/-/issues/738"
+host-os = "n/a"
+host-arch = "n/a"
+qemu-version = "n/a"
+guest-os = "n/a"
+guest-arch = "n/a"
+description = "n/a"
+reproduce = "n/a"
+additional = """http://publibfp.dhe.ibm.com/epubs/pdf/a227832c.pdf"""
diff --git a/gitlab/issues/target_s390x/host_missing/accel_TCG/902.toml b/gitlab/issues/target_s390x/host_missing/accel_TCG/902.toml
new file mode 100644
index 00000000..f3ff165f
--- /dev/null
+++ b/gitlab/issues/target_s390x/host_missing/accel_TCG/902.toml
@@ -0,0 +1,15 @@
+id = 902
+title = "BootLinuxS390X test failing due to a TCG bug"
+state = "closed"
+created_at = "2022-03-11T17:59:46.516Z"
+closed_at = "2022-03-16T12:18:55.179Z"
+labels = ["Closed::Fixed", "accel: TCG", "kind::Bug", "target: s390x"]
+url = "https://gitlab.com/qemu-project/qemu/-/issues/902"
+host-os = "n/a"
+host-arch = "n/a"
+qemu-version = "n/a"
+guest-os = "n/a"
+guest-arch = "n/a"
+description = "n/a"
+reproduce = "n/a"
+additional = "n/a"
diff --git a/gitlab/issues/target_s390x/host_missing/accel_TCG/979.toml b/gitlab/issues/target_s390x/host_missing/accel_TCG/979.toml
new file mode 100644
index 00000000..13da7b45
--- /dev/null
+++ b/gitlab/issues/target_s390x/host_missing/accel_TCG/979.toml
@@ -0,0 +1,19 @@
+id = 979
+title = "s390x floating point conversion functions broken"
+state = "opened"
+created_at = "2022-04-12T17:20:46.576Z"
+closed_at = "n/a"
+labels = ["accel: TCG", "kind::Bug", "linux-user", "target: s390x"]
+url = "https://gitlab.com/qemu-project/qemu/-/issues/979"
+host-os = "Ubuntu 20.04.4 LTS"
+host-arch = "s390x (although likely backend independent)"
+qemu-version = "v7.0.0-rc4"
+guest-os = "static binary (check-tcg)"
+guest-arch = "s390x"
+description = """While collecting additional reference files for float_convs (and float_convd) I noticed that the s390x handling of some cases is broken. See diff for details:
+
+```
+ diff -y tests/tcg/s390x-linux-user/float_convs.out ../../tests/tcg/s390x/float_convs.ref
+#"""
+reproduce = "n/a"
+additional = "n/a"