** Description changed:
[ Impact ]
On s390x architecture, qemu cannot emulate riscv64 well because of an
endianess error. Original bug report :
QEMU's DEP-8 test fails on s390x, due to warning output on stderr about
"unsupported version 256 of Verdef record", which is blocking migration
of glibc 2.42-0ubuntu3.
DEP-8 logs:
"""
323s === Checking if /usr/bin/qemu-riscv64 can run executables:
323s glob with sh: /usr/bin/qemu-riscv64 /bin/busybox ash -c
"/usr/bin/qemu-riscv64 /bin/busybox ls -dCFl debian/*[t]*":
323s /bin/busybox: /lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/riscv64-linux-gnu/libresolv.so.2: unsupported version
256 of Verdef record
323s /bin/busybox: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256
of Verdef record
323s
323s Reading package lists.../bin/busybox: /lib/riscv64-linux-gnu/libc.so.6:
unsupported version 256 of Verdef record
323s /bin/busybox: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256
of Verdef record
323s Expected output not found
[...]
328s autopkgtest [22:14:52]: @@@@@@@@@@@@@@@@@@@@ summary
328s test-qemu-img.sh PASS (superficial)
328s test-qemu-system.sh PASS (superficial)
328s test-qemu-user.sh FAIL stderr: /bin/busybox:
/lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256 of Verdef record
"""
Patched by flagging the faulty instructions with the endianness swap
marker.
[ Test Plan ]
Minimal reproducer: (after booting up an s390x vm)
```
ubuntu@slyon-lp-2123828-slyon-glibc-qemu-riscv64:~$ sudo apt update && sudo
apt install qemu-user
ubuntu@slyon-lp-2123828-slyon-glibc-qemu-riscv64:~$ dpkg -l | grep libc6
ii libc6:s390x 2.42-0ubuntu3
ubuntu@slyon-lp-2123828-slyon-glibc-qemu-riscv64:~$ dpkg -l | grep qemu-user
ii qemu-user 1:10.1.0+ds-5ubuntu1
ubuntu@slyon-lp-2123828-slyon-glibc-qemu-riscv64:~$ dpkg --print-architecture
s390x
ubuntu@slyon-lp-2123828-slyon-glibc-qemu-riscv64:~$ sudo dpkg
--add-architecture riscv64
ubuntu@slyon-lp-2123828-slyon-glibc-qemu-riscv64:~$ sudo apt update
ubuntu@slyon-lp-2123828-slyon-glibc-qemu-riscv64:~$ sudo apt install
hello:riscv64
ubuntu@slyon-lp-2123828-slyon-glibc-qemu-riscv64:~$ /usr/bin/qemu-riscv64
/usr/bin/hello
/usr/bin/hello: /lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256 of
Verdef record
/usr/bin/hello: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256 of
Verdef record
/usr/bin/hello: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256 of
Verdef record
/usr/bin/hello: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256 of
Verdef record
/usr/bin/hello: /lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256 of
Verdef record
/usr/bin/hello: /lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256 of
Verdef record
/usr/bin/hello: /lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256 of
Verdef record
```
The same thing with the patch shows "Hello, world !".
[ Where problems could occur ]
This change is really small (3 lines), and only affects riscv64
emulation from QEMU. If the fix was entirely wrong, riscv64 emulation of
compressed instruction could be affected. It can be easily tested.
The patch was accepted upstream, so such tests are conducted upstream as
well, which reduces the amount of possible problems and work to do to
fix those.
[ Other Info ]
- Patch sent upstream:
https://lore.kernel.org/qemu-devel/[email protected]/
+ Patch applied upstream:
https://gitlab.com/qemu-project/qemu/-/commit/b25133d38fe693589cf695b85968caa0724bfafd
Patch available on ppa:
https://launchpad.net/~vhaudiquet/+archive/ubuntu/qemu-fix-lp2123828/+packages
** Changed in: qemu (Ubuntu Resolute)
Status: In Progress => Fix Committed
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/2123828
Title:
[SRU] RISC-V: incorrect emulation of load and store on big-endian
systems
Status in QEMU:
Fix Released
Status in glibc package in Ubuntu:
Invalid
Status in qemu package in Ubuntu:
Fix Committed
Status in gcc-15 source package in Noble:
Invalid
Status in glibc source package in Noble:
Invalid
Status in qemu source package in Noble:
In Progress
Status in gcc-15 source package in Plucky:
Invalid
Status in glibc source package in Plucky:
Invalid
Status in qemu source package in Plucky:
In Progress
Status in gcc-15 source package in Questing:
Invalid
Status in glibc source package in Questing:
Invalid
Status in qemu source package in Questing:
In Progress
Status in glibc source package in Resolute:
Invalid
Status in qemu source package in Resolute:
Fix Committed
Bug description:
[ Impact ]
On s390x architecture, qemu cannot emulate riscv64 well because of an
endianess error. Original bug report :
QEMU's DEP-8 test fails on s390x, due to warning output on stderr
about "unsupported version 256 of Verdef record", which is blocking
migration of glibc 2.42-0ubuntu3.
DEP-8 logs:
"""
323s === Checking if /usr/bin/qemu-riscv64 can run executables:
323s glob with sh: /usr/bin/qemu-riscv64 /bin/busybox ash -c
"/usr/bin/qemu-riscv64 /bin/busybox ls -dCFl debian/*[t]*":
323s /bin/busybox: /lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/riscv64-linux-gnu/libresolv.so.2: unsupported version
256 of Verdef record
323s /bin/busybox: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256
of Verdef record
323s
323s Reading package lists.../bin/busybox: /lib/riscv64-linux-gnu/libc.so.6:
unsupported version 256 of Verdef record
323s /bin/busybox: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256
of Verdef record
323s /bin/busybox: /lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256
of Verdef record
323s Expected output not found
[...]
328s autopkgtest [22:14:52]: @@@@@@@@@@@@@@@@@@@@ summary
328s test-qemu-img.sh PASS (superficial)
328s test-qemu-system.sh PASS (superficial)
328s test-qemu-user.sh FAIL stderr: /bin/busybox:
/lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256 of Verdef record
"""
Patched by flagging the faulty instructions with the endianness swap
marker.
[ Test Plan ]
Minimal reproducer: (after booting up an s390x vm)
```
ubuntu@slyon-lp-2123828-slyon-glibc-qemu-riscv64:~$ sudo apt update && sudo
apt install qemu-user
ubuntu@slyon-lp-2123828-slyon-glibc-qemu-riscv64:~$ dpkg -l | grep libc6
ii libc6:s390x 2.42-0ubuntu3
ubuntu@slyon-lp-2123828-slyon-glibc-qemu-riscv64:~$ dpkg -l | grep qemu-user
ii qemu-user 1:10.1.0+ds-5ubuntu1
ubuntu@slyon-lp-2123828-slyon-glibc-qemu-riscv64:~$ dpkg --print-architecture
s390x
ubuntu@slyon-lp-2123828-slyon-glibc-qemu-riscv64:~$ sudo dpkg
--add-architecture riscv64
ubuntu@slyon-lp-2123828-slyon-glibc-qemu-riscv64:~$ sudo apt update
ubuntu@slyon-lp-2123828-slyon-glibc-qemu-riscv64:~$ sudo apt install
hello:riscv64
ubuntu@slyon-lp-2123828-slyon-glibc-qemu-riscv64:~$ /usr/bin/qemu-riscv64
/usr/bin/hello
/usr/bin/hello: /lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256 of
Verdef record
/usr/bin/hello: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256 of
Verdef record
/usr/bin/hello: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256 of
Verdef record
/usr/bin/hello: /lib/riscv64-linux-gnu/libc.so.6: unsupported version 256 of
Verdef record
/usr/bin/hello: /lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256 of
Verdef record
/usr/bin/hello: /lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256 of
Verdef record
/usr/bin/hello: /lib/ld-linux-riscv64-lp64d.so.1: unsupported version 256 of
Verdef record
```
The same thing with the patch shows "Hello, world !".
[ Where problems could occur ]
This change is really small (3 lines), and only affects riscv64
emulation from QEMU. If the fix was entirely wrong, riscv64 emulation
of compressed instruction could be affected. It can be easily tested.
The patch was accepted upstream, so such tests are conducted upstream
as well, which reduces the amount of possible problems and work to do
to fix those.
[ Other Info ]
Patch applied upstream:
https://gitlab.com/qemu-project/qemu/-/commit/b25133d38fe693589cf695b85968caa0724bfafd
Patch available on ppa:
https://launchpad.net/~vhaudiquet/+archive/ubuntu/qemu-fix-lp2123828/+packages
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/2123828/+subscriptions