The following changes since commit 47d3b60858d90ac8a0cc3a72af7f95c96781125a: Merge remote-tracking branch 'remotes/riscv/tags/riscv-qemu-2.12-important-fixes' into staging (2018-03-28 22:13:38 +0100) are available in the git repository at: https://github.com/riscv/riscv-qemu.git tags/riscv-qemu-2.12-critical-fixes for you to fetch changes up to b02403363f1056421d120c8e974fdf9c76a84f95: RISC-V: Workaround for critical mstatus.FS bug (2018-03-29 10:22:26 -0700) ---------------------------------------------------------------- RISC-V: Critical fixes for QEMU 2.12 This series includes changes that are considered release critical, such as floating point register file corruption under SMP Linux due to incorrect handling of mstatus.FS. This workaround will be replaced with a more comprehensive fix for mstatus.FS handling in QEMU 2.13. ---------------------------------------------------------------- Michael Clark (1): RISC-V: Workaround for critical mstatus.FS bug target/riscv/op_helper.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-)
Hi Peter, I had tested Richard's proper fix but we didn't have a PR or the required Reviewed-by and Signed-off-by so I made the PR for the conservative fix, assuming we can test Richard's more correct fix and include it in the QEMU 2.13 timeframe. I've tested Richard's fix with the simple scheduling test case, so if he makes a PR, I'm happy for that to be included versus this workaround. The workaround is, of course, the most conservative fix as it will always cause FP state to be saved, assuming we missed a case in Richard's patch. I'll leave it up to you and Richard, but please include either this workaround or Richard's slightly larger change in QEMU 2.12, if possible. In any case, I believe vendors have patches they can include in their packages... but it would be nice that upstream QEMU 2.12 has working FP for RISC-V with SMP Linux. Thanks, Michael. On Thu, Mar 29, 2018 at 10:26 AM, Michael Clark <mjc@sifive.com> wrote: > The following changes since commit 47d3b60858d90ac8a0cc3a72af7f95 > c96781125a: > > Merge remote-tracking branch 'remotes/riscv/tags/riscv-qemu-2.12-important-fixes' > into staging (2018-03-28 22:13:38 +0100) > > are available in the git repository at: > > https://github.com/riscv/riscv-qemu.git tags/riscv-qemu-2.12-critical- > fixes > > for you to fetch changes up to b02403363f1056421d120c8e974fdf9c76a84f95: > > RISC-V: Workaround for critical mstatus.FS bug (2018-03-29 10:22:26 > -0700) > > ---------------------------------------------------------------- > RISC-V: Critical fixes for QEMU 2.12 > > This series includes changes that are considered release critical, > such as floating point register file corruption under SMP Linux > due to incorrect handling of mstatus.FS. > > This workaround will be replaced with a more comprehensive fix > for mstatus.FS handling in QEMU 2.13. > > ---------------------------------------------------------------- > Michael Clark (1): > RISC-V: Workaround for critical mstatus.FS bug > > target/riscv/op_helper.c | 17 +++++++++++++++-- > 1 file changed, 15 insertions(+), 2 deletions(-) >
On Fri, Mar 30, 2018 at 10:08:23AM -0700, Michael Clark wrote: > Hi Peter, > > I had tested Richard's proper fix but we didn't have a PR or the required > Reviewed-by and Signed-off-by so I made the PR for the conservative fix, "Richard" is me or Richard Henderson? Anyway if you meant Stefan O'Rear's fix (https://github.com/rwmjones/fedora-riscv-bootstrap/blob/master/stage1-riscv-qemu/force-float-save.patch) then it is my understanding that this is also just a workaround. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-p2v converts physical machines to virtual machines. Boot with a live CD or over the network (PXE) and turn machines into KVM guests. http://libguestfs.org/virt-v2v
On Sun, Apr 1, 2018 at 11:49 AM, Richard W.M. Jones <rjones@redhat.com> wrote: > On Fri, Mar 30, 2018 at 10:08:23AM -0700, Michael Clark wrote: > > Hi Peter, > > > > I had tested Richard's proper fix but we didn't have a PR or the required > > Reviewed-by and Signed-off-by so I made the PR for the conservative fix, > > "Richard" is me or Richard Henderson? Anyway if you meant Stefan > O'Rear's fix (https://github.com/rwmjones/fedora-riscv-bootstrap/blob/ > master/stage1-riscv-qemu/force-float-save.patch) > then it is my understanding that this is also just a workaround. Apologies for not being precise. Richard Henderson has a comprehensive fix that correctly marks mstatus.FS dirty inside of FP arithmetic and FP loads. This logic is missing in the current QEMU, hence the bug. i.e. QEMU currently only has logic to throw exceptions if mstatus.FS state is set of off, but FP arithmetic and FP loads do not cause state change to dirty. I submitted the pull request for your's/Stefan's workaround so that QEMU 2.12 has working FP context switching under Linux (always returning dirty or off is valid implementation choice according to the specification), given Richard Henderson had not made a PR for his more comprehensive fix, with the rationale that we could implement the comprehensive fix for QEMU 2.13. At this point, I think neither of the fixes have gone in due to timing i.e. the Easter Holidays, so vendors will need either your's/Stefan's workaround or Richard Henderson's 2 patch series which he sent to the mailing list. - https://lists.nongnu.org/archive/html/qemu-devel/2018-03/msg07034.html
On 3 April 2018 at 03:43, Michael Clark <mjc@sifive.com> wrote: > I submitted the pull request for your's/Stefan's workaround so that QEMU > 2.12 has working FP context switching under Linux (always returning dirty or > off is valid implementation choice according to the specification), given > Richard Henderson had not made a PR for his more comprehensive fix, with the > rationale that we could implement the comprehensive fix for QEMU 2.13 Given that riscv is your area as submaintainer I (and likely also RTH) would expect RTH's patch to go in via a pull request from you, not one directly from him. One of the things the submaintainer does is evaluate what the right set of patches to go in for the area are, if there are multiple proposed ways to fix something. thanks -- PMM
Hi, This series failed docker-mingw@fedora build test. Please find the testing commands and their output below. If you have Docker installed, you can probably reproduce it locally. Type: series Message-id: 1522344417-60114-1-git-send-email-mjc@sifive.com Subject: [Qemu-devel] [PULL 0/1] RISC-V: Critical fixes for QEMU 2.12 === TEST SCRIPT BEGIN === #!/bin/bash set -e git submodule update --init dtc # Let docker tests dump environment info export SHOW_ENV=1 export J=8 time make docker-test-mingw@fedora === TEST SCRIPT END === Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384 Switched to a new branch 'test' 237fb031f4 RISC-V: Workaround for critical mstatus.FS bug === OUTPUT BEGIN === Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc' Cloning into '/var/tmp/patchew-tester-tmp-ysxzxo5z/src/dtc'... Submodule path 'dtc': checked out 'e54388015af1fb4bf04d0bca99caba1074d9cc42' BUILD fedora make[1]: Entering directory '/var/tmp/patchew-tester-tmp-ysxzxo5z/src' GEN /var/tmp/patchew-tester-tmp-ysxzxo5z/src/docker-src.2018-03-31-02.33.56.26135/qemu.tar Cloning into '/var/tmp/patchew-tester-tmp-ysxzxo5z/src/docker-src.2018-03-31-02.33.56.26135/qemu.tar.vroot'... done. Checking out files: 25% (1548/6066) Checking out files: 26% (1578/6066) Checking out files: 27% (1638/6066) Checking out files: 28% (1699/6066) Checking out files: 29% (1760/6066) Checking out files: 30% (1820/6066) Checking out files: 31% (1881/6066) Checking out files: 32% (1942/6066) Checking out files: 33% (2002/6066) Checking out files: 34% (2063/6066) Checking out files: 35% (2124/6066) Checking out files: 36% (2184/6066) Checking out files: 37% (2245/6066) Checking out files: 38% (2306/6066) Checking out files: 39% (2366/6066) Checking out files: 40% (2427/6066) Checking out files: 41% (2488/6066) Checking out files: 42% (2548/6066) Checking out files: 43% (2609/6066) Checking out files: 44% (2670/6066) Checking out files: 45% (2730/6066) Checking out files: 46% (2791/6066) Checking out files: 47% (2852/6066) Checking out files: 48% (2912/6066) Checking out files: 49% (2973/6066) Checking out files: 50% (3033/6066) Checking out files: 51% (3094/6066) Checking out files: 52% (3155/6066) Checking out files: 53% (3215/6066) Checking out files: 54% (3276/6066) Checking out files: 55% (3337/6066) Checking out files: 56% (3397/6066) Checking out files: 57% (3458/6066) Checking out files: 58% (3519/6066) Checking out files: 59% (3579/6066) Checking out files: 60% (3640/6066) Checking out files: 61% (3701/6066) Checking out files: 62% (3761/6066) Checking out files: 63% (3822/6066) Checking out files: 64% (3883/6066) Checking out files: 65% (3943/6066) Checking out files: 66% (4004/6066) Checking out files: 67% (4065/6066) Checking out files: 68% (4125/6066) Checking out files: 69% (4186/6066) Checking out files: 70% (4247/6066) Checking out files: 71% (4307/6066) Checking out files: 72% (4368/6066) Checking out files: 73% (4429/6066) Checking out files: 74% (4489/6066) Checking out files: 75% (4550/6066) Checking out files: 76% (4611/6066) Checking out files: 77% (4671/6066) Checking out files: 78% (4732/6066) Checking out files: 79% (4793/6066) Checking out files: 80% (4853/6066) Checking out files: 81% (4914/6066) Checking out files: 82% (4975/6066) Checking out files: 83% (5035/6066) Checking out files: 84% (5096/6066) Checking out files: 85% (5157/6066) Checking out files: 86% (5217/6066) Checking out files: 87% (5278/6066) Checking out files: 88% (5339/6066) Checking out files: 89% (5399/6066) Checking out files: 90% (5460/6066) Checking out files: 91% (5521/6066) Checking out files: 92% (5581/6066) Checking out files: 93% (5642/6066) Checking out files: 93% (5655/6066) Checking out files: 93% (5690/6066) Checking out files: 94% (5703/6066) Checking out files: 95% (5763/6066) Checking out files: 96% (5824/6066) Checking out files: 97% (5885/6066) Checking out files: 98% (5945/6066) Checking out files: 99% (6006/6066) Checking out files: 100% (6066/6066) Checking out files: 100% (6066/6066), done. Your branch is up-to-date with 'origin/test'. Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc' Cloning into '/var/tmp/patchew-tester-tmp-ysxzxo5z/src/docker-src.2018-03-31-02.33.56.26135/qemu.tar.vroot/dtc'... Submodule path 'dtc': checked out 'e54388015af1fb4bf04d0bca99caba1074d9cc42' Submodule 'ui/keycodemapdb' (git://git.qemu.org/keycodemapdb.git) registered for path 'ui/keycodemapdb' Cloning into '/var/tmp/patchew-tester-tmp-ysxzxo5z/src/docker-src.2018-03-31-02.33.56.26135/qemu.tar.vroot/ui/keycodemapdb'... Submodule path 'ui/keycodemapdb': checked out '6b3d716e2b6472eb7189d3220552280ef3d832ce' tar: /var/tmp/patchew-tester-tmp-ysxzxo5z/src/docker-src.2018-03-31-02.33.56.26135/qemu.tar: Wrote only 2048 of 10240 bytes tar: Error is not recoverable: exiting now failed to create tar file COPY RUNNER RUN test-mingw in qemu:fedora tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now /var/tmp/qemu/run: line 32: prep_fail: command not found Packages installed: PyYAML-3.12-5.fc27.x86_64 SDL-devel-1.2.15-29.fc27.x86_64 bc-1.07.1-3.fc27.x86_64 bison-3.0.4-8.fc27.x86_64 bzip2-1.0.6-24.fc27.x86_64 ccache-3.3.6-1.fc27.x86_64 clang-5.0.1-3.fc27.x86_64 findutils-4.6.0-16.fc27.x86_64 flex-2.6.1-5.fc27.x86_64 gcc-7.3.1-5.fc27.x86_64 gcc-c++-7.3.1-5.fc27.x86_64 gettext-0.19.8.1-12.fc27.x86_64 git-2.14.3-3.fc27.x86_64 glib2-devel-2.54.3-2.fc27.x86_64 hostname-3.18-4.fc27.x86_64 libaio-devel-0.3.110-9.fc27.x86_64 libasan-7.3.1-5.fc27.x86_64 libfdt-devel-1.4.6-1.fc27.x86_64 libubsan-7.3.1-5.fc27.x86_64 llvm-5.0.1-3.fc27.x86_64 make-4.2.1-4.fc27.x86_64 mingw32-SDL-1.2.15-9.fc27.noarch mingw32-bzip2-1.0.6-9.fc27.noarch mingw32-curl-7.54.1-2.fc27.noarch mingw32-glib2-2.54.1-1.fc27.noarch mingw32-gmp-6.1.2-2.fc27.noarch mingw32-gnutls-3.5.13-2.fc27.noarch mingw32-gtk2-2.24.31-4.fc27.noarch mingw32-gtk3-3.22.16-1.fc27.noarch mingw32-libjpeg-turbo-1.5.1-3.fc27.noarch mingw32-libpng-1.6.29-2.fc27.noarch mingw32-libssh2-1.8.0-3.fc27.noarch mingw32-libtasn1-4.13-1.fc27.noarch mingw32-nettle-3.3-3.fc27.noarch mingw32-pixman-0.34.0-3.fc27.noarch mingw32-pkg-config-0.28-9.fc27.x86_64 mingw64-SDL-1.2.15-9.fc27.noarch mingw64-bzip2-1.0.6-9.fc27.noarch mingw64-curl-7.54.1-2.fc27.noarch mingw64-glib2-2.54.1-1.fc27.noarch mingw64-gmp-6.1.2-2.fc27.noarch mingw64-gnutls-3.5.13-2.fc27.noarch mingw64-gtk2-2.24.31-4.fc27.noarch mingw64-gtk3-3.22.16-1.fc27.noarch mingw64-libjpeg-turbo-1.5.1-3.fc27.noarch mingw64-libpng-1.6.29-2.fc27.noarch mingw64-libssh2-1.8.0-3.fc27.noarch mingw64-libtasn1-4.13-1.fc27.noarch mingw64-nettle-3.3-3.fc27.noarch mingw64-pixman-0.34.0-3.fc27.noarch mingw64-pkg-config-0.28-9.fc27.x86_64 nettle-devel-3.4-1.fc27.x86_64 perl-5.26.1-403.fc27.x86_64 pixman-devel-0.34.0-4.fc27.x86_64 python3-3.6.2-13.fc27.x86_64 sparse-0.5.1-2.fc27.x86_64 tar-1.29-7.fc27.x86_64 which-2.21-4.fc27.x86_64 zlib-devel-1.2.11-4.fc27.x86_64 Environment variables: TARGET_LIST= PACKAGES=ccache gettext git tar PyYAML sparse flex bison python3 bzip2 hostname glib2-devel pixman-devel zlib-devel SDL-devel libfdt-devel gcc gcc-c++ llvm clang make perl which bc findutils libaio-devel nettle-devel libasan libubsan mingw32-pixman mingw32-glib2 mingw32-gmp mingw32-SDL mingw32-pkg-config mingw32-gtk2 mingw32-gtk3 mingw32-gnutls mingw32-nettle mingw32-libtasn1 mingw32-libjpeg-turbo mingw32-libpng mingw32-curl mingw32-libssh2 mingw32-bzip2 mingw64-pixman mingw64-glib2 mingw64-gmp mingw64-SDL mingw64-pkg-config mingw64-gtk2 mingw64-gtk3 mingw64-gnutls mingw64-nettle mingw64-libtasn1 mingw64-libjpeg-turbo mingw64-libpng mingw64-curl mingw64-libssh2 mingw64-bzip2 J=8 V= HOSTNAME=1cc388470a43 DEBUG= SHOW_ENV=1 PWD=/ HOME=/root CCACHE_DIR=/var/tmp/ccache DISTTAG=f27container QEMU_CONFIGURE_OPTS=--python=/usr/bin/python3 FGC=f27 TEST_DIR=/tmp/qemu-test SHLVL=1 FEATURES=mingw clang pyyaml asan dtc PATH=/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin MAKEFLAGS= -j8 EXTRA_CONFIGURE_OPTS= _=/usr/bin/env Configure options: --enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/tmp/qemu-test/install --python=/usr/bin/python3 --cross-prefix=x86_64-w64-mingw32- --enable-trace-backends=simple --enable-gnutls --enable-nettle --enable-curl --enable-vnc --enable-bzip2 --enable-guest-agent --with-sdlabi=1.2 --with-gtkabi=2.0 ERROR: DTC (libfdt) version >= 1.4.2 not present. Please install the DTC (libfdt) devel package Traceback (most recent call last): File "./tests/docker/docker.py", line 407, in <module> sys.exit(main()) File "./tests/docker/docker.py", line 404, in main return args.cmdobj.run(args, argv) File "./tests/docker/docker.py", line 261, in run return Docker().run(argv, args.keep, quiet=args.quiet) File "./tests/docker/docker.py", line 229, in run quiet=quiet) File "./tests/docker/docker.py", line 147, in _do_check return subprocess.check_call(self._command + cmd, **kwargs) File "/usr/lib64/python2.7/subprocess.py", line 186, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['docker', 'run', '--label', 'com.qemu.instance.uuid=8ca43b3634ad11e8a04c52540069c830', '-u', '0', '--security-opt', 'seccomp=unconfined', '--rm', '--net=none', '-e', 'TARGET_LIST=', '-e', 'EXTRA_CONFIGURE_OPTS=', '-e', 'V=', '-e', 'J=8', '-e', 'DEBUG=', '-e', 'SHOW_ENV=1', '-e', 'CCACHE_DIR=/var/tmp/ccache', '-v', '/root/.cache/qemu-docker-ccache:/var/tmp/ccache:z', '-v', '/var/tmp/patchew-tester-tmp-ysxzxo5z/src/docker-src.2018-03-31-02.33.56.26135:/var/tmp/qemu:z,ro', 'qemu:fedora', '/var/tmp/qemu/run', 'test-mingw']' returned non-zero exit status 1 make[1]: *** [tests/docker/Makefile.include:129: docker-run] Error 1 make[1]: Leaving directory '/var/tmp/patchew-tester-tmp-ysxzxo5z/src' make: *** [tests/docker/Makefile.include:163: docker-run-test-mingw@fedora] Error 2 real 1m12.482s user 0m9.279s sys 0m6.951s === OUTPUT END === Test command exited with code: 2 --- Email generated automatically by Patchew [http://patchew.org/]. Please send your feedback to patchew-devel@redhat.com
On 29 March 2018 at 18:26, Michael Clark <mjc@sifive.com> wrote: > The following changes since commit 47d3b60858d90ac8a0cc3a72af7f95c96781125a: > > Merge remote-tracking branch 'remotes/riscv/tags/riscv-qemu-2.12-important-fixes' into staging (2018-03-28 22:13:38 +0100) > > are available in the git repository at: > > https://github.com/riscv/riscv-qemu.git tags/riscv-qemu-2.12-critical-fixes > > for you to fetch changes up to b02403363f1056421d120c8e974fdf9c76a84f95: > > RISC-V: Workaround for critical mstatus.FS bug (2018-03-29 10:22:26 -0700) > > ---------------------------------------------------------------- > RISC-V: Critical fixes for QEMU 2.12 > > This series includes changes that are considered release critical, > such as floating point register file corruption under SMP Linux > due to incorrect handling of mstatus.FS. > > This workaround will be replaced with a more comprehensive fix > for mstatus.FS handling in QEMU 2.13. > > ---------------------------------------------------------------- Applied, thanks. -- PMM
© 2016 - 2024 Red Hat, Inc.