diff -Nru qemu-4.2/debian/binfmt-install qemu-4.2/debian/binfmt-install --- qemu-4.2/debian/binfmt-install 2020-04-15 09:26:44.000000000 +0000 +++ qemu-4.2/debian/binfmt-install 2020-04-15 12:27:15.000000000 +0000 @@ -79,6 +79,7 @@ arm | armel | armhf | arm64) omit="arm|aarch64" ;; ppc64 | powerpc) omit="ppc|ppc64|ppc64abi32" ;; ppc64el) omit="ppc64le" ;; + riscv64) omit="riscv32|riscv64" ;; s390x) omit="s390x" ;; sparc | sparc64) omit="sparc|sparc32plus|sparc64" ;; *) omit="$DEB_HOST_ARCH" ;; diff -Nru qemu-4.2/debian/changelog qemu-4.2/debian/changelog --- qemu-4.2/debian/changelog 2020-04-15 09:26:44.000000000 +0000 +++ qemu-4.2/debian/changelog 2020-04-15 12:27:15.000000000 +0000 @@ -1,5 +1,26 @@ +qemu (1:4.2-3ubuntu6) focal; urgency=medium + + [ Christian Ehrhardt ] + * enable riscv build (LP: #1872931) + [ changes picked from Debian ] + - enable support for riscv64 hosts + - only enable librbd on architectures where it is built + - ceph: do not list librados-dev as we only use librbd-dev and the latter + depends on the former + - seccomp grew up, no need in versioned build-dep + - enable seccomp only on architectures where it can be built + * d/p/ubuntu/lp-1872931-*: fix build on non KVM platforms + * d/p/ubuntu/lp-1872945-*: fix riscv emulation errors that e.g. hung ssh + and clobbered doubles (LP: #1872945) + + [ William Grant ] + * d/control-in: disable rbd support unavailable on riscv (LP: 1872931) + + -- Christian Ehrhardt Wed, 15 Apr 2020 14:27:15 +0200 + qemu (1:4.2-3ubuntu5) focal; urgency=medium + [ Christian Ehrhardt ] * d/p/ubuntu/lp-1871830-*: avoid crash when using QEMU_MODULE_DIR (LP: #1871830) * Security and packaging fixes (LP: #1872937) diff -Nru qemu-4.2/debian/control qemu-4.2/debian/control --- qemu-4.2/debian/control 2020-04-15 09:26:44.000000000 +0000 +++ qemu-4.2/debian/control 2020-04-15 12:27:15.000000000 +0000 @@ -52,20 +52,20 @@ libvirglrenderer-dev, # --enable-opengl libepoxy-dev, libdrm-dev, libgbm-dev, -# --enable-numa i386|amd64|ia64|mips|mipsel|powerpc|powerpcspe|x32|ppc64|ppc64el|arm64|sparc|s390x - libnuma-dev [i386 amd64 ia64 mips mipsel mips64 mips64el powerpc powerpcspe x32 ppc64 ppc64el arm64 sparc s390x], +# --enable-numa i386|amd64|ia64|mips|mipsel|powerpc|powerpcspe|x32|ppc64|ppc64el|arm64|sparc|s390x|riscv64 + libnuma-dev [i386 amd64 ia64 mips mipsel mips64 mips64el powerpc powerpcspe x32 ppc64 ppc64el arm64 sparc s390x riscv64], # --enable-smartcard libcacard-dev, libpixman-1-dev, -# --enable-rbd linux-* - librados-dev [linux-any], librbd-dev [linux-any], +# --enable-rbd amd64|arm64|armel|armhf|i386|mips64el|mipsel|ppc64el|s390x|ppc64|sparc64 + librbd-dev [amd64 arm64 armel armhf i386 mips64el mipsel ppc64el s390x ppc64 sparc64], # glusterfs is debian-only since ubuntu/glusterfs is in universe (MIR LP: #1274247) # before buster it was glusterfs-common so keep it for now for bpo # --enable-vnc-sasl libsasl2-dev, # --disable-sdl -# --enable-seccomp linux-* - libseccomp-dev (>= 2.3.0) [linux-any], +# --enable-seccomp amd64|arm64|armel|armhf|i386|mips64el|mipsel|ppc64el|s390x|hppa|powerpc|ppc64|riscv64|x32 + libseccomp-dev [amd64 arm64 armel armhf i386 mips64el mipsel ppc64el s390x hppa powerpc ppc64 riscv64 x32], # --enable-slirp=system libslirp-dev, # --enable-spice linux-amd64|linux-i386|linux-arm64 @@ -124,7 +124,7 @@ Vcs-Git: https://git.launchpad.net/ubuntu/+source/qemu Package: qemu -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Section: oldlibs Depends: ${misc:Depends} @@ -144,7 +144,7 @@ This package can safely be removed. Package: qemu-system -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Depends: ${misc:Depends}, qemu-system-arm, @@ -165,7 +165,7 @@ QEMU supports. Package: qemu-block-extra -Architecture: amd64 arm arm64 armel armhf hppa i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf hppa i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: same Depends: ${misc:Depends}, ${shlibs:Depends}, Enhances: qemu-utils, qemu-system-misc, @@ -195,7 +195,7 @@ QEMU emulation (qemu-system-*) packages. Package: qemu-system-common -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Replaces: qemu-system-data (<< 1:3.1+dfsg-1~), qemu-utils (<< 1:4.2-1ubuntu1~) Breaks: qemu-system-data (<< 1:3.1+dfsg-1~), qemu-utils (<< 1:4.2-1ubuntu1~) @@ -214,7 +214,7 @@ full system emulation (qemu-system-*) packages. Package: qemu-system-gui -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: same Depends: ${misc:Depends}, ${shlibs:Depends}, Description: QEMU full system emulation binaries (user interface and audio support) @@ -222,7 +222,7 @@ and audio backends for full system emulation (qemu-system-*) packages. Package: qemu-system-misc -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> 1:2.12~), qemu-system-data (>> ${source:Version}~), Recommends: qemu-system-gui (= ${binary:Version}), qemu-utils, @@ -248,7 +248,7 @@ machines on a single server. Package: qemu-system-arm -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> 1:2.12~), qemu-system-data (>> ${source:Version}~), Recommends: qemu-system-gui (= ${binary:Version}), qemu-utils, @@ -272,7 +272,7 @@ machines on a single server. Package: qemu-system-mips -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> 1:2.12~), qemu-system-data (>> ${source:Version}~), Recommends: qemu-system-gui (= ${binary:Version}), qemu-utils, @@ -294,7 +294,7 @@ machines on a single server. Package: qemu-system-ppc -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> 1:2.12~), qemu-system-data (>> ${source:Version}~), qemu-slof, @@ -320,7 +320,7 @@ machines on a single server. Package: qemu-system-sparc -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> 1:2.12~), qemu-system-data (>> ${source:Version}~), # ubuntu/openbios-sparc is in universe @@ -344,7 +344,7 @@ machines on a single server. Package: qemu-system-x86 -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> 1:2.12~), qemu-system-data (>> ${source:Version}~), ipxe-qemu-256k-compat-efi-roms, @@ -387,7 +387,7 @@ For any other common KVM based activity qemu-system-x86 will be more suited. Package: qemu-user -Architecture: amd64 arm arm64 armel armhf i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends} Recommends: qemu-user-binfmt @@ -409,7 +409,7 @@ qemu-user-static will register statically linked binfmt handlers instead. Package: qemu-user-static -Architecture: amd64 arm arm64 armel armhf i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Built-Using: ${built-using} Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends} @@ -433,7 +433,7 @@ directly. Package: qemu-user-binfmt -Architecture: amd64 arm arm64 armel armhf i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Depends: ${misc:Depends}, qemu-user (= ${binary:Version}), binfmt-support Breaks: binfmt-support (<< 2.1.7~) @@ -450,7 +450,7 @@ at install and remove times. Package: qemu-utils -Architecture: amd64 arm arm64 armel armhf hppa i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf hppa i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Breaks: qemu-system-common (<< 1:4.2-1ubuntu1~) Depends: ${shlibs:Depends}, ${misc:Depends}, @@ -510,7 +510,7 @@ compatibility. Package: qemu-system-s390x -Architecture: amd64 arm arm64 armel armhf hppa i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 +Architecture: amd64 arm arm64 armel armhf hppa i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> 2.0.0+dfsg-8~), qemu-system-data (>> ${source:Version}~), Recommends: qemu-utils, diff -Nru qemu-4.2/debian/control-in qemu-4.2/debian/control-in --- qemu-4.2/debian/control-in 2020-04-15 09:26:44.000000000 +0000 +++ qemu-4.2/debian/control-in 2020-04-15 12:27:15.000000000 +0000 @@ -56,13 +56,13 @@ libepoxy-dev, libdrm-dev, libgbm-dev, :debian:# --enable-libnfs :debian: libnfs-dev (>> 1.9.3), -# --enable-numa i386|amd64|ia64|mips|mipsel|powerpc|powerpcspe|x32|ppc64|ppc64el|arm64|sparc|s390x - libnuma-dev [i386 amd64 ia64 mips mipsel mips64 mips64el powerpc powerpcspe x32 ppc64 ppc64el arm64 sparc s390x], +# --enable-numa i386|amd64|ia64|mips|mipsel|powerpc|powerpcspe|x32|ppc64|ppc64el|arm64|sparc|s390x|riscv64 + libnuma-dev [i386 amd64 ia64 mips mipsel mips64 mips64el powerpc powerpcspe x32 ppc64 ppc64el arm64 sparc s390x riscv64], # --enable-smartcard libcacard-dev, libpixman-1-dev, -# --enable-rbd linux-* - librados-dev [linux-any], librbd-dev [linux-any], +# --enable-rbd amd64|arm64|armel|armhf|i386|mips64el|mipsel|ppc64el|s390x|ppc64|sparc64 + librbd-dev [amd64 arm64 armel armhf i386 mips64el mipsel ppc64el s390x ppc64 sparc64], # glusterfs is debian-only since ubuntu/glusterfs is in universe (MIR LP: #1274247) # before buster it was glusterfs-common so keep it for now for bpo :debian:# --enable-glusterfs @@ -70,8 +70,8 @@ # --enable-vnc-sasl libsasl2-dev, # --disable-sdl -# --enable-seccomp linux-* - libseccomp-dev (>= 2.3.0) [linux-any], +# --enable-seccomp amd64|arm64|armel|armhf|i386|mips64el|mipsel|ppc64el|s390x|hppa|powerpc|ppc64|riscv64|x32 + libseccomp-dev [amd64 arm64 armel armhf i386 mips64el mipsel ppc64el s390x hppa powerpc ppc64 riscv64 x32], # --enable-slirp=system libslirp-dev, # --enable-spice linux-amd64|linux-i386|linux-arm64 @@ -135,7 +135,7 @@ :ubuntu:Vcs-Git: https://git.launchpad.net/ubuntu/+source/qemu Package: qemu -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Section: oldlibs Depends: ${misc:Depends} @@ -155,7 +155,7 @@ This package can safely be removed. Package: qemu-system -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Depends: ${misc:Depends}, qemu-system-arm, @@ -176,7 +176,7 @@ QEMU supports. Package: qemu-block-extra -Architecture: amd64 arm arm64 armel armhf hppa i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf hppa i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: same Depends: ${misc:Depends}, ${shlibs:Depends}, Enhances: qemu-utils, qemu-system-misc, @@ -206,7 +206,7 @@ QEMU emulation (qemu-system-*) packages. Package: qemu-system-common -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Replaces: qemu-system-data (<< 1:3.1+dfsg-1~), qemu-utils (<< 1:4.2-1ubuntu1~) Breaks: qemu-system-data (<< 1:3.1+dfsg-1~), qemu-utils (<< 1:4.2-1ubuntu1~) @@ -225,7 +225,7 @@ full system emulation (qemu-system-*) packages. Package: qemu-system-gui -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: same Depends: ${misc:Depends}, ${shlibs:Depends}, Description: QEMU full system emulation binaries (user interface and audio support) @@ -233,7 +233,7 @@ and audio backends for full system emulation (qemu-system-*) packages. Package: qemu-system-misc -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> 1:2.12~), qemu-system-data (>> ${source:Version}~), Recommends: qemu-system-gui (= ${binary:Version}), qemu-utils, @@ -259,7 +259,7 @@ machines on a single server. Package: qemu-system-arm -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> 1:2.12~), qemu-system-data (>> ${source:Version}~), Recommends: qemu-system-gui (= ${binary:Version}), qemu-utils, @@ -283,7 +283,7 @@ machines on a single server. Package: qemu-system-mips -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> 1:2.12~), qemu-system-data (>> ${source:Version}~), Recommends: qemu-system-gui (= ${binary:Version}), qemu-utils, @@ -305,7 +305,7 @@ machines on a single server. Package: qemu-system-ppc -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> 1:2.12~), qemu-system-data (>> ${source:Version}~), qemu-slof, @@ -332,7 +332,7 @@ machines on a single server. Package: qemu-system-sparc -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> 1:2.12~), qemu-system-data (>> ${source:Version}~), # ubuntu/openbios-sparc is in universe @@ -357,7 +357,7 @@ machines on a single server. Package: qemu-system-x86 -Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> 1:2.12~), qemu-system-data (>> ${source:Version}~), :ubuntu: ipxe-qemu-256k-compat-efi-roms, @@ -400,7 +400,7 @@ For any other common KVM based activity qemu-system-x86 will be more suited. Package: qemu-user -Architecture: amd64 arm arm64 armel armhf i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends} Recommends: qemu-user-binfmt @@ -422,7 +422,7 @@ qemu-user-static will register statically linked binfmt handlers instead. Package: qemu-user-static -Architecture: amd64 arm arm64 armel armhf i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Built-Using: ${built-using} Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends} @@ -446,7 +446,7 @@ directly. Package: qemu-user-binfmt -Architecture: amd64 arm arm64 armel armhf i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Depends: ${misc:Depends}, qemu-user (= ${binary:Version}), binfmt-support Breaks: binfmt-support (<< 2.1.7~) @@ -463,7 +463,7 @@ at install and remove times. Package: qemu-utils -Architecture: amd64 arm arm64 armel armhf hppa i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 +Architecture: amd64 arm arm64 armel armhf hppa i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 x32 Multi-Arch: foreign Breaks: qemu-system-common (<< 1:4.2-1ubuntu1~) Depends: ${shlibs:Depends}, ${misc:Depends}, @@ -525,7 +525,7 @@ compatibility. :ubuntu:Package: qemu-system-s390x -:ubuntu:Architecture: amd64 arm arm64 armel armhf hppa i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 +:ubuntu:Architecture: amd64 arm arm64 armel armhf hppa i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc powerpcspe ppc64 ppc64el riscv64 s390x sparc sparc64 :ubuntu:Multi-Arch: foreign :ubuntu:Depends: ${shlibs:Depends}, ${misc:Depends}, qemu-system-common (>> 2.0.0+dfsg-8~), qemu-system-data (>> ${source:Version}~), :ubuntu:Recommends: qemu-utils, diff -Nru qemu-4.2/debian/patches/series qemu-4.2/debian/patches/series --- qemu-4.2/debian/patches/series 2020-04-15 09:26:44.000000000 +0000 +++ qemu-4.2/debian/patches/series 2020-04-15 12:27:15.000000000 +0000 @@ -81,3 +81,10 @@ ubuntu/lp-1835546-s390x-protvirt-Fix-stray-error_report_err.patch ubuntu/lp-1871830-module-increase-dirs-array-size-by-one.patch ubuntu/lp-1872107-kvm-Reallocate-dirty_bmap-when-we-change-a-slot.patch +ubuntu/lp-1872931-s390x-s390-virtio-ccw-Fix-build-on-systems-without-K.patch +ubuntu/lp-1872945-riscv-sifive_u-fix-a-memory-leak-in-soc_realize.patch +ubuntu/lp-1872945-riscv-Set-xPIE-to-1-after-xRET.patch +ubuntu/lp-1872945-target-riscv-Fix-tb-flags-FS-status.patch +ubuntu/lp-1872945-target-riscv-fsd-fsw-doesn-t-dirty-FP-state.patch +ubuntu/lp-1872945-target-riscv-update-mstatus.SD-when-FS-is-set-dirty.patch +ubuntu/lp-1872945-target-openrisc-Fix-FPCSR-mask-to-allow-setting-DZF.patch diff -Nru qemu-4.2/debian/patches/ubuntu/lp-1872931-s390x-s390-virtio-ccw-Fix-build-on-systems-without-K.patch qemu-4.2/debian/patches/ubuntu/lp-1872931-s390x-s390-virtio-ccw-Fix-build-on-systems-without-K.patch --- qemu-4.2/debian/patches/ubuntu/lp-1872931-s390x-s390-virtio-ccw-Fix-build-on-systems-without-K.patch 1970-01-01 00:00:00.000000000 +0000 +++ qemu-4.2/debian/patches/ubuntu/lp-1872931-s390x-s390-virtio-ccw-Fix-build-on-systems-without-K.patch 2020-04-15 12:27:15.000000000 +0000 @@ -0,0 +1,138 @@ +From fba8f4834b95873c7756b321961fb51d8e0e99a3 Mon Sep 17 00:00:00 2001 +From: Christian Borntraeger +Date: Mon, 6 Apr 2020 06:01:58 -0400 +Subject: [PATCH] s390x/s390-virtio-ccw: Fix build on systems without KVM + +linux/kvm.h is not available on all platforms. Let us move +s390_machine_inject_pv_error into pv.c as it uses KVM structures. +Also rename the function to s390_pv_inject_reset_error. + +While at it, ipl.h needs an include for "exec/address-spaces.h" +as it uses address_space_memory. + +Fixes: 49fc3220175e ("s390x: protvirt: Support unpack facility") +Reported-by: Bruce Rogers +Signed-off-by: Christian Borntraeger +Message-Id: <20200406100158.5940-2-borntraeger@de.ibm.com> +Reviewed-by: David Hildenbrand +Signed-off-by: Cornelia Huck + +Origin: upstream, https://github.com/cohuck/qemu/commit/fba8f4834b95873c7756b321961fb51d8e0e99a3 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1872931 +Last-Update: 2020-04-17 + +--- + hw/s390x/ipl.h | 1 + + hw/s390x/pv.c | 11 +++++++++++ + hw/s390x/s390-virtio-ccw.c | 12 +----------- + include/hw/s390x/pv.h | 3 +++ + 4 files changed, 16 insertions(+), 11 deletions(-) + +diff --git a/hw/s390x/ipl.h b/hw/s390x/ipl.h +index 89b3044d7a2..53cc9eb5ac4 100644 +--- a/hw/s390x/ipl.h ++++ b/hw/s390x/ipl.h +@@ -14,6 +14,7 @@ + #define HW_S390_IPL_H + + #include "cpu.h" ++#include "exec/address-spaces.h" + #include "hw/qdev-core.h" + + struct IPLBlockPVComp { +diff --git a/hw/s390x/pv.c b/hw/s390x/pv.c +index d3333d6e130..68dbc022d02 100644 +--- a/hw/s390x/pv.c ++++ b/hw/s390x/pv.c +@@ -13,8 +13,10 @@ + + #include + ++#include "cpu.h" + #include "qemu/error-report.h" + #include "sysemu/kvm.h" ++#include "hw/s390x/ipl.h" + #include "hw/s390x/pv.h" + + static int __s390_pv_cmd(uint32_t cmd, const char *cmdname, void *data) +@@ -100,3 +102,12 @@ void s390_pv_unshare(void) + { + s390_pv_cmd_exit(KVM_PV_VM_UNSHARE_ALL, NULL); + } ++ ++void s390_pv_inject_reset_error(CPUState *cs) ++{ ++ int r1 = (cs->kvm_run->s390_sieic.ipa & 0x00f0) >> 4; ++ CPUS390XState *env = &S390_CPU(cs)->env; ++ ++ /* Report that we are unable to enter protected mode */ ++ env->regs[r1 + 1] = DIAG_308_RC_INVAL_FOR_PV; ++} +diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c +index b2689073953..45292fb5a8b 100644 +--- a/hw/s390x/s390-virtio-ccw.c ++++ b/hw/s390x/s390-virtio-ccw.c +@@ -45,7 +45,6 @@ + #include "sysemu/sysemu.h" + #include "sysemu/balloon.h" + #include "hw/s390x/pv.h" +-#include + #include "migration/blocker.h" + + static Error *pv_mig_blocker; +@@ -390,15 +389,6 @@ out_err: + return rc; + } + +-static void s390_machine_inject_pv_error(CPUState *cs) +-{ +- int r1 = (cs->kvm_run->s390_sieic.ipa & 0x00f0) >> 4; +- CPUS390XState *env = &S390_CPU(cs)->env; +- +- /* Report that we are unable to enter protected mode */ +- env->regs[r1 + 1] = DIAG_308_RC_INVAL_FOR_PV; +-} +- + static void s390_pv_prepare_reset(S390CcwMachineState *ms) + { + CPUState *cs; +@@ -484,7 +474,7 @@ static void s390_machine_reset(MachineState *machine) + run_on_cpu(cs, s390_do_cpu_reset, RUN_ON_CPU_NULL); + + if (s390_machine_protect(ms)) { +- s390_machine_inject_pv_error(cs); ++ s390_pv_inject_reset_error(cs); + /* + * Continue after the diag308 so the guest knows something + * went wrong. +diff --git a/include/hw/s390x/pv.h b/include/hw/s390x/pv.h +index c6cb360f2f6..522ca6a04ee 100644 +--- a/include/hw/s390x/pv.h ++++ b/include/hw/s390x/pv.h +@@ -13,6 +13,7 @@ + #define HW_S390_PV_H + + #ifdef CONFIG_KVM ++#include "cpu.h" + #include "hw/s390x/s390-virtio-ccw.h" + + static inline bool s390_is_pv(void) +@@ -41,6 +42,7 @@ int s390_pv_unpack(uint64_t addr, uint64_t size, uint64_t tweak); + void s390_pv_perf_clear_reset(void); + int s390_pv_verify(void); + void s390_pv_unshare(void); ++void s390_pv_inject_reset_error(CPUState *cs); + #else /* CONFIG_KVM */ + static inline bool s390_is_pv(void) { return false; } + static inline int s390_pv_vm_enable(void) { return 0; } +@@ -50,6 +52,7 @@ static inline int s390_pv_unpack(uint64_t addr, uint64_t size, uint64_t tweak) { + static inline void s390_pv_perf_clear_reset(void) {} + static inline int s390_pv_verify(void) { return 0; } + static inline void s390_pv_unshare(void) {} ++static inline void s390_pv_inject_reset_error(CPUState *cs) {}; + #endif /* CONFIG_KVM */ + + #endif /* HW_S390_PV_H */ +-- +2.26.0 + diff -Nru qemu-4.2/debian/patches/ubuntu/lp-1872945-riscv-Set-xPIE-to-1-after-xRET.patch qemu-4.2/debian/patches/ubuntu/lp-1872945-riscv-Set-xPIE-to-1-after-xRET.patch --- qemu-4.2/debian/patches/ubuntu/lp-1872945-riscv-Set-xPIE-to-1-after-xRET.patch 1970-01-01 00:00:00.000000000 +0000 +++ qemu-4.2/debian/patches/ubuntu/lp-1872945-riscv-Set-xPIE-to-1-after-xRET.patch 2020-04-15 12:27:15.000000000 +0000 @@ -0,0 +1,48 @@ +From a37f21c27d3e2342c2080aafd4cfe7e949612428 Mon Sep 17 00:00:00 2001 +From: Yiting Wang +Date: Fri, 3 Jan 2020 11:53:42 +0800 +Subject: [PATCH] riscv: Set xPIE to 1 after xRET + +When executing an xRET instruction, supposing xPP holds the +value y, xIE is set to xPIE; the privilege mode is changed to y; +xPIE is set to 1. But QEMU sets xPIE to 0 incorrectly. + +Signed-off-by: Yiting Wang +Reviewed-by: Bin Meng +Tested-by: Bin Meng +Reviewed-by: Alistair Francis +Signed-off-by: Palmer Dabbelt + +Origin: upstream, https://git.qemu.org/?p=qemu.git;a=commit;h=a37f21c27d +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1872945 +Last-Update: 2020-04-20 + +--- + target/riscv/op_helper.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/target/riscv/op_helper.c b/target/riscv/op_helper.c +index 331cc362321..e87c9115bc2 100644 +--- a/target/riscv/op_helper.c ++++ b/target/riscv/op_helper.c +@@ -93,7 +93,7 @@ target_ulong helper_sret(CPURISCVState *env, target_ulong cpu_pc_deb) + env->priv_ver >= PRIV_VERSION_1_10_0 ? + MSTATUS_SIE : MSTATUS_UIE << prev_priv, + get_field(mstatus, MSTATUS_SPIE)); +- mstatus = set_field(mstatus, MSTATUS_SPIE, 0); ++ mstatus = set_field(mstatus, MSTATUS_SPIE, 1); + mstatus = set_field(mstatus, MSTATUS_SPP, PRV_U); + riscv_cpu_set_mode(env, prev_priv); + env->mstatus = mstatus; +@@ -118,7 +118,7 @@ target_ulong helper_mret(CPURISCVState *env, target_ulong cpu_pc_deb) + env->priv_ver >= PRIV_VERSION_1_10_0 ? + MSTATUS_MIE : MSTATUS_UIE << prev_priv, + get_field(mstatus, MSTATUS_MPIE)); +- mstatus = set_field(mstatus, MSTATUS_MPIE, 0); ++ mstatus = set_field(mstatus, MSTATUS_MPIE, 1); + mstatus = set_field(mstatus, MSTATUS_MPP, PRV_U); + riscv_cpu_set_mode(env, prev_priv); + env->mstatus = mstatus; +-- +2.26.0 + diff -Nru qemu-4.2/debian/patches/ubuntu/lp-1872945-riscv-sifive_u-fix-a-memory-leak-in-soc_realize.patch qemu-4.2/debian/patches/ubuntu/lp-1872945-riscv-sifive_u-fix-a-memory-leak-in-soc_realize.patch --- qemu-4.2/debian/patches/ubuntu/lp-1872945-riscv-sifive_u-fix-a-memory-leak-in-soc_realize.patch 1970-01-01 00:00:00.000000000 +0000 +++ qemu-4.2/debian/patches/ubuntu/lp-1872945-riscv-sifive_u-fix-a-memory-leak-in-soc_realize.patch 2020-04-15 12:27:15.000000000 +0000 @@ -0,0 +1,39 @@ +From bb8136df698bd565ee4f6c18d26c50dee320bfe4 Mon Sep 17 00:00:00 2001 +From: Pan Nengyuan +Date: Tue, 10 Dec 2019 15:14:37 +0800 +Subject: [PATCH] riscv/sifive_u: fix a memory leak in soc_realize() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fix a minor memory leak in riscv_sifive_u_soc_realize() + +Reported-by: Euler Robot +Signed-off-by: Pan Nengyuan +Reviewed-by: Philippe Mathieu-Daudé +Reviewed-by: Alistair Francis +Signed-off-by: Palmer Dabbelt + +Origin: upstream, https://git.qemu.org/?p=qemu.git;a=commit;h=bb8136df69 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1872945 +Last-Update: 2020-04-20 + +--- + hw/riscv/sifive_u.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c +index 0140e95732a..0e12b3ccef5 100644 +--- a/hw/riscv/sifive_u.c ++++ b/hw/riscv/sifive_u.c +@@ -542,6 +542,7 @@ static void riscv_sifive_u_soc_realize(DeviceState *dev, Error **errp) + SIFIVE_U_PLIC_CONTEXT_BASE, + SIFIVE_U_PLIC_CONTEXT_STRIDE, + memmap[SIFIVE_U_PLIC].size); ++ g_free(plic_hart_config); + sifive_uart_create(system_memory, memmap[SIFIVE_U_UART0].base, + serial_hd(0), qdev_get_gpio_in(DEVICE(s->plic), SIFIVE_U_UART0_IRQ)); + sifive_uart_create(system_memory, memmap[SIFIVE_U_UART1].base, +-- +2.26.0 + diff -Nru qemu-4.2/debian/patches/ubuntu/lp-1872945-target-openrisc-Fix-FPCSR-mask-to-allow-setting-DZF.patch qemu-4.2/debian/patches/ubuntu/lp-1872945-target-openrisc-Fix-FPCSR-mask-to-allow-setting-DZF.patch --- qemu-4.2/debian/patches/ubuntu/lp-1872945-target-openrisc-Fix-FPCSR-mask-to-allow-setting-DZF.patch 1970-01-01 00:00:00.000000000 +0000 +++ qemu-4.2/debian/patches/ubuntu/lp-1872945-target-openrisc-Fix-FPCSR-mask-to-allow-setting-DZF.patch 2020-04-15 12:27:15.000000000 +0000 @@ -0,0 +1,40 @@ +From 97a254b3f03a184136e381c6d9fd80475e1795ac Mon Sep 17 00:00:00 2001 +From: Stafford Horne +Date: Sat, 11 Jan 2020 06:28:43 +0900 +Subject: [PATCH] target/openrisc: Fix FPCSR mask to allow setting DZF + +The mask used when setting FPCSR allows setting bits 10 to 1. However, +OpenRISC has flags and config bits in 11 to 1, 11 being Divide by Zero +Flag (DZF). This seems like an off-by-one bug. + +This was found when testing the GLIBC test suite which has test cases to +set and clear all bits. + +Signed-off-by: Stafford Horne +Message-Id: <20200110212843.27335-1-shorne@gmail.com> +Signed-off-by: Richard Henderson + +Origin: upstream, https://git.qemu.org/?p=qemu.git;a=commit;h=97a254b3f0 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1872945 +Last-Update: 2020-04-20 + +--- + target/openrisc/fpu_helper.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/target/openrisc/fpu_helper.c b/target/openrisc/fpu_helper.c +index 59e14132791..6f75ea0505b 100644 +--- a/target/openrisc/fpu_helper.c ++++ b/target/openrisc/fpu_helper.c +@@ -70,7 +70,7 @@ void cpu_set_fpcsr(CPUOpenRISCState *env, uint32_t val) + float_round_down + }; + +- env->fpcsr = val & 0x7ff; ++ env->fpcsr = val & 0xfff; + set_float_rounding_mode(rm_to_sf[extract32(val, 1, 2)], &env->fp_status); + } + +-- +2.26.0 + diff -Nru qemu-4.2/debian/patches/ubuntu/lp-1872945-target-riscv-Fix-tb-flags-FS-status.patch qemu-4.2/debian/patches/ubuntu/lp-1872945-target-riscv-Fix-tb-flags-FS-status.patch --- qemu-4.2/debian/patches/ubuntu/lp-1872945-target-riscv-Fix-tb-flags-FS-status.patch 1970-01-01 00:00:00.000000000 +0000 +++ qemu-4.2/debian/patches/ubuntu/lp-1872945-target-riscv-Fix-tb-flags-FS-status.patch 2020-04-15 12:27:15.000000000 +0000 @@ -0,0 +1,53 @@ +From 613fa160e19abe8e1fe44423fcfa8ec73d3d48e5 Mon Sep 17 00:00:00 2001 +From: ShihPo Hung +Date: Tue, 14 Jan 2020 22:17:31 -0800 +Subject: [PATCH] target/riscv: Fix tb->flags FS status + +It was found that running libquantum on riscv-linux qemu produced an +incorrect result. After investigation, FP registers are not saved +during context switch due to incorrect mstatus.FS. + +In current implementation tb->flags merges all non-disabled state to +dirty. This means the code in mark_fs_dirty in translate.c that +handles initial and clean states is unreachable. + +This patch fixes it and is successfully tested with: + libquantum + +Thanks to Richard for pointing out the actual bug. + +v3: remove the redundant condition +v2: root cause FS problem + +Suggested-by: Richard Henderson +Signed-off-by: ShihPo Hung +Reviewed-by: Richard Henderson +Signed-off-by: Palmer Dabbelt + +Origin: upstream, https://git.qemu.org/?p=qemu.git;a=commit;h=613fa160e1 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1872945 +Last-Update: 2020-04-20 + +--- + target/riscv/cpu.h | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h +index e59343e13c0..de0a8d893a3 100644 +--- a/target/riscv/cpu.h ++++ b/target/riscv/cpu.h +@@ -293,10 +293,7 @@ static inline void cpu_get_tb_cpu_state(CPURISCVState *env, target_ulong *pc, + #ifdef CONFIG_USER_ONLY + *flags = TB_FLAGS_MSTATUS_FS; + #else +- *flags = cpu_mmu_index(env, 0); +- if (riscv_cpu_fp_enabled(env)) { +- *flags |= TB_FLAGS_MSTATUS_FS; +- } ++ *flags = cpu_mmu_index(env, 0) | (env->mstatus & MSTATUS_FS); + #endif + } + +-- +2.26.0 + diff -Nru qemu-4.2/debian/patches/ubuntu/lp-1872945-target-riscv-fsd-fsw-doesn-t-dirty-FP-state.patch qemu-4.2/debian/patches/ubuntu/lp-1872945-target-riscv-fsd-fsw-doesn-t-dirty-FP-state.patch --- qemu-4.2/debian/patches/ubuntu/lp-1872945-target-riscv-fsd-fsw-doesn-t-dirty-FP-state.patch 1970-01-01 00:00:00.000000000 +0000 +++ qemu-4.2/debian/patches/ubuntu/lp-1872945-target-riscv-fsd-fsw-doesn-t-dirty-FP-state.patch 2020-04-15 12:27:15.000000000 +0000 @@ -0,0 +1,46 @@ +From a59796eb6d59bbd74ce28ddbddb1b83e60674e96 Mon Sep 17 00:00:00 2001 +From: ShihPo Hung +Date: Tue, 14 Jan 2020 22:17:32 -0800 +Subject: [PATCH] target/riscv: fsd/fsw doesn't dirty FP state + +Signed-off-by: ShihPo Hung +Reviewed-by: Richard Henderson +Reviewed-by: Alistair Francis +Signed-off-by: Palmer Dabbelt + +Origin: upstream, https://git.qemu.org/?p=qemu.git;a=commit;h=a59796eb6d +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1872945 +Last-Update: 2020-04-20 + +--- + target/riscv/insn_trans/trans_rvd.inc.c | 1 - + target/riscv/insn_trans/trans_rvf.inc.c | 1 - + 2 files changed, 2 deletions(-) + +diff --git a/target/riscv/insn_trans/trans_rvd.inc.c b/target/riscv/insn_trans/trans_rvd.inc.c +index 393fa0248ce..ea1044f13b4 100644 +--- a/target/riscv/insn_trans/trans_rvd.inc.c ++++ b/target/riscv/insn_trans/trans_rvd.inc.c +@@ -43,7 +43,6 @@ static bool trans_fsd(DisasContext *ctx, arg_fsd *a) + + tcg_gen_qemu_st_i64(cpu_fpr[a->rs2], t0, ctx->mem_idx, MO_TEQ); + +- mark_fs_dirty(ctx); + tcg_temp_free(t0); + return true; + } +diff --git a/target/riscv/insn_trans/trans_rvf.inc.c b/target/riscv/insn_trans/trans_rvf.inc.c +index 172dbfa919b..e23cd639a62 100644 +--- a/target/riscv/insn_trans/trans_rvf.inc.c ++++ b/target/riscv/insn_trans/trans_rvf.inc.c +@@ -52,7 +52,6 @@ static bool trans_fsw(DisasContext *ctx, arg_fsw *a) + tcg_gen_qemu_st_i64(cpu_fpr[a->rs2], t0, ctx->mem_idx, MO_TEUL); + + tcg_temp_free(t0); +- mark_fs_dirty(ctx); + return true; + } + +-- +2.26.0 + diff -Nru qemu-4.2/debian/patches/ubuntu/lp-1872945-target-riscv-update-mstatus.SD-when-FS-is-set-dirty.patch qemu-4.2/debian/patches/ubuntu/lp-1872945-target-riscv-update-mstatus.SD-when-FS-is-set-dirty.patch --- qemu-4.2/debian/patches/ubuntu/lp-1872945-target-riscv-update-mstatus.SD-when-FS-is-set-dirty.patch 1970-01-01 00:00:00.000000000 +0000 +++ qemu-4.2/debian/patches/ubuntu/lp-1872945-target-riscv-update-mstatus.SD-when-FS-is-set-dirty.patch 2020-04-15 12:27:15.000000000 +0000 @@ -0,0 +1,52 @@ +From 82f014671cf057de51c4a577c9e2ad637dcec6f9 Mon Sep 17 00:00:00 2001 +From: ShihPo Hung +Date: Tue, 14 Jan 2020 22:17:33 -0800 +Subject: [PATCH] target/riscv: update mstatus.SD when FS is set dirty + +remove the check becuase SD bit should summarize FS and XS fields +unconditionally. + +Signed-off-by: ShihPo Hung +Reviewed-by: Richard Henderson +Reviewed-by: Alistair Francis +Signed-off-by: Palmer Dabbelt + +Origin: upstream, https://git.qemu.org/?p=qemu.git;a=commit;h=82f014671c +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1872945 +Last-Update: 2020-04-20 + +--- + target/riscv/csr.c | 3 +-- + target/riscv/translate.c | 2 +- + 2 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/target/riscv/csr.c b/target/riscv/csr.c +index da02f9f0b17..0e34c292c59 100644 +--- a/target/riscv/csr.c ++++ b/target/riscv/csr.c +@@ -341,8 +341,7 @@ static int write_mstatus(CPURISCVState *env, int csrno, target_ulong val) + + mstatus = (mstatus & ~mask) | (val & mask); + +- dirty = (riscv_cpu_fp_enabled(env) && +- ((mstatus & MSTATUS_FS) == MSTATUS_FS)) | ++ dirty = ((mstatus & MSTATUS_FS) == MSTATUS_FS) | + ((mstatus & MSTATUS_XS) == MSTATUS_XS); + mstatus = set_field(mstatus, MSTATUS_SD, dirty); + env->mstatus = mstatus; +diff --git a/target/riscv/translate.c b/target/riscv/translate.c +index ab6a891dc38..8e40ed3ac41 100644 +--- a/target/riscv/translate.c ++++ b/target/riscv/translate.c +@@ -394,7 +394,7 @@ static void mark_fs_dirty(DisasContext *ctx) + + tmp = tcg_temp_new(); + tcg_gen_ld_tl(tmp, cpu_env, offsetof(CPURISCVState, mstatus)); +- tcg_gen_ori_tl(tmp, tmp, MSTATUS_FS); ++ tcg_gen_ori_tl(tmp, tmp, MSTATUS_FS | MSTATUS_SD); + tcg_gen_st_tl(tmp, cpu_env, offsetof(CPURISCVState, mstatus)); + tcg_temp_free(tmp); + } +-- +2.26.0 +