1. 16 9月, 2019 4 次提交
  2. 13 9月, 2019 20 次提交
    • P
      Merge remote-tracking branch 'remotes/amarkovic/tags/mips-queue-sep-12-2019' into staging · 138985c1
      Peter Maydell 提交于
      MIPS queue for September 12th, 2019
      
      # gpg: Signature made Thu 12 Sep 2019 17:26:10 BST
      # gpg:                using RSA key D4972A8967F75A65
      # gpg: Good signature from "Aleksandar Markovic <amarkovic@wavecomp.com>" [unknown]
      # gpg: WARNING: This key is not certified with a trusted signature!
      # gpg:          There is no indication that the signature belongs to the owner.
      # Primary key fingerprint: 8526 FBF1 5DA3 811F 4A01  DD75 D497 2A89 67F7 5A65
      
      * remotes/amarkovic/tags/mips-queue-sep-12-2019:
        target/mips: gdbstub: Revert commit 8e0b373f
        hw/mips/mips_jazz: Remove no-longer-necessary override of do_unassigned_access
        target/mips: Switch to do_transaction_failed() hook
        hw/mips/mips_jazz: Override do_transaction_failed hook
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      138985c1
    • P
      Merge remote-tracking branch 'remotes/dgilbert/tags/pull-migration-20190912a' into staging · 85182c96
      Peter Maydell 提交于
      Migration pull 2019-09-12
      
      New feature:
        UUID validation check from Yury Kotov
      
      plus a bunch of fixes.
      
      # gpg: Signature made Thu 12 Sep 2019 14:48:28 BST
      # gpg:                using RSA key 45F5C71B4A0CB7FB977A9FA90516331EBC5BFDE7
      # gpg: Good signature from "Dr. David Alan Gilbert (RH2) <dgilbert@redhat.com>" [full]
      # Primary key fingerprint: 45F5 C71B 4A0C B7FB 977A  9FA9 0516 331E BC5B FDE7
      
      * remotes/dgilbert/tags/pull-migration-20190912a:
        migration: fix one typo in comment of function migration_total_bytes()
        migration/qemu-file: fix potential buf waste for extra buf_index adjustment
        migration/qemu-file: remove check on writev_buffer in qemu_put_compression_data
        migration: Fix postcopy bw for recovery
        tests/migration: Add a test for validate-uuid capability
        tests/libqtest: Allow setting expected exit status
        migration: Add validate-uuid capability
        qemu-file: Rework old qemu_fflush comment
        migration: register_savevm_live doesn't need dev
        hw/net/vmxnet3: Fix leftover unregister_savevm
        migration: cleanup check on ops in savevm.handlers iterations
        migration: multifd_send_thread always post p->sem_sync when error happen
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      85182c96
    • P
      Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging · 3d9442ee
      Peter Maydell 提交于
      Block layer patches:
      
      - qcow2: Allow overwriting multiple compressed clusters at once for
        better performance
      - nfs: add support for nfs_umount
      - file-posix: write_zeroes fixes
      - qemu-io, blockdev-create, pr-manager: Fix crashes and memory leaks
      - qcow2: Fix the calculation of the maximum L2 cache size
      - vpc: Fix return code for vpc_co_create()
      - blockjob: Code cleanup
      - iotests improvements (e.g. for use with valgrind)
      
      # gpg: Signature made Fri 13 Sep 2019 11:19:19 BST
      # gpg:                using RSA key 7F09B272C88F2FD6
      # gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>" [full]
      # Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6
      
      * remotes/kevin/tags/for-upstream: (23 commits)
        qcow2: Stop overwriting compressed clusters one by one
        block/create: Do not abort if a block driver is not available
        qemu-io: Don't leak pattern file in error path
        iotests: extend sleeping time under Valgrind
        iotests: extended timeout under Valgrind
        iotests: Valgrind fails with nonexistent directory
        iotests: Add casenotrun report to bash tests
        iotests: exclude killed processes from running under Valgrind
        iotests: allow Valgrind checking all QEMU processes
        block/nfs: add support for nfs_umount
        block/nfs: tear down aio before nfs_close
        iotests: skip 232 when run tests as root
        iotests: Test blockdev-create for vpc
        iotests: Restrict nbd Python tests to nbd
        iotests: Restrict file Python tests to file
        iotests: Add supported protocols to execute_test()
        vpc: Return 0 from vpc_co_create() on success
        file-posix: Fix has_write_zeroes after NO_FALLBACK
        pr-manager: Fix invalid g_free() crash bug
        iotests: Test reverse sub-cluster qcow2 writes
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      3d9442ee
    • P
      Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging · cc9c8b82
      Peter Maydell 提交于
      Pull request
      
      # gpg: Signature made Wed 11 Sep 2019 15:36:02 BST
      # gpg:                using RSA key 8695A8BFD3F97CDAAC35775A9CA4ABB381AB73C8
      # gpg: Good signature from "Stefan Hajnoczi <stefanha@redhat.com>" [full]
      # gpg:                 aka "Stefan Hajnoczi <stefanha@gmail.com>" [full]
      # Primary key fingerprint: 8695 A8BF D3F9 7CDA AC35  775A 9CA4 ABB3 81AB 73C8
      
      * remotes/stefanha/tags/block-pull-request:
        virtio-blk: Cancel the pending BH when the dataplane is reset
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      cc9c8b82
    • A
      qcow2: Stop overwriting compressed clusters one by one · bf3d78ae
      Alberto Garcia 提交于
      handle_alloc() tries to find as many contiguous clusters that need
      copy-on-write as possible in order to allocate all of them at the same
      time.
      
      However, compressed clusters are only overwritten one by one, so let's
      say that we have an image with 1024 consecutive compressed clusters:
      
         qemu-img create -f qcow2 hd.qcow2 64M
         for f in `seq 0 64 65472`; do
            qemu-io -c "write -c ${f}k 64k" hd.qcow2
         done
      
      In this case trying to overwrite the whole image with one large write
      request results in 1024 separate allocations:
      
         qemu-io -c "write 0 64M" hd.qcow2
      
      This restriction comes from commit 095a9c58 from 2008.
      Nowadays QEMU can overwrite multiple compressed clusters just fine,
      and in fact it already does: as long as the first cluster that
      handle_alloc() finds is not compressed, all other compressed clusters
      in the same batch will be overwritten in one go:
      
         qemu-img create -f qcow2 hd.qcow2 64M
         qemu-io -c "write -z 0 64k" hd.qcow2
         for f in `seq 64 64 65472`; do
            qemu-io -c "write -c ${f}k 64k" hd.qcow2
         done
      
      Compared to the previous one, overwriting this image on my computer
      goes from 8.35s down to 230ms.
      Signed-off-by: NAlberto Garcia <berto@igalia.com>
      Reviewed-by: John Snow <jsnow@redhat.com
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      bf3d78ae
    • P
      block/create: Do not abort if a block driver is not available · d90d5cae
      Philippe Mathieu-Daudé 提交于
      The 'blockdev-create' QMP command was introduced as experimental
      feature in commit b0292b85, using the assert() debug call.
      It got promoted to 'stable' command in 3fb588a0, but the
      assert call was not removed.
      
      Some block drivers are optional, and bdrv_find_format() might
      return a NULL value, triggering the assertion.
      
      Stable code is not expected to abort, so return an error instead.
      
      This is easily reproducible when libnfs is not installed:
      
        ./configure
        [...]
        module support    no
        Block whitelist (rw)
        Block whitelist (ro)
        libiscsi support  yes
        libnfs support    no
        [...]
      
      Start QEMU:
      
        $ qemu-system-x86_64 -S -qmp unix:/tmp/qemu.qmp,server,nowait
      
      Send the 'blockdev-create' with the 'nfs' driver:
      
        $ ( cat << 'EOF'
        {'execute': 'qmp_capabilities'}
        {'execute': 'blockdev-create', 'arguments': {'job-id': 'x', 'options': {'size': 0, 'driver': 'nfs', 'location': {'path': '/', 'server': {'host': '::1', 'type': 'inet'}}}}, 'id': 'x'}
        EOF
        ) | socat STDIO UNIX:/tmp/qemu.qmp
        {"QMP": {"version": {"qemu": {"micro": 50, "minor": 1, "major": 4}, "package": "v4.1.0-733-g89ea03a7"}, "capabilities": ["oob"]}}
        {"return": {}}
      
      QEMU crashes:
      
        $ gdb qemu-system-x86_64 core
        Program received signal SIGSEGV, Segmentation fault.
        (gdb) bt
        #0  0x00007ffff510957f in raise () at /lib64/libc.so.6
        #1  0x00007ffff50f3895 in abort () at /lib64/libc.so.6
        #2  0x00007ffff50f3769 in _nl_load_domain.cold.0 () at /lib64/libc.so.6
        #3  0x00007ffff5101a26 in .annobin_assert.c_end () at /lib64/libc.so.6
        #4  0x0000555555d7e1f1 in qmp_blockdev_create (job_id=0x555556baee40 "x", options=0x555557666610, errp=0x7fffffffc770) at block/create.c:69
        #5  0x0000555555c96b52 in qmp_marshal_blockdev_create (args=0x7fffdc003830, ret=0x7fffffffc7f8, errp=0x7fffffffc7f0) at qapi/qapi-commands-block-core.c:1314
        #6  0x0000555555deb0a0 in do_qmp_dispatch (cmds=0x55555645de70 <qmp_commands>, request=0x7fffdc005c70, allow_oob=false, errp=0x7fffffffc898) at qapi/qmp-dispatch.c:131
        #7  0x0000555555deb2a1 in qmp_dispatch (cmds=0x55555645de70 <qmp_commands>, request=0x7fffdc005c70, allow_oob=false) at qapi/qmp-dispatch.c:174
      
      With this patch applied, QEMU returns a QMP error:
      
        {'execute': 'blockdev-create', 'arguments': {'job-id': 'x', 'options': {'size': 0, 'driver': 'nfs', 'location': {'path': '/', 'server': {'host': '::1', 'type': 'inet'}}}}, 'id': 'x'}
        {"id": "x", "error": {"class": "GenericError", "desc": "Block driver 'nfs' not found or not supported"}}
      
      Cc: qemu-stable@nongnu.org
      Reported-by: NXu Tian <xutian@redhat.com>
      Signed-off-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      d90d5cae
    • K
      qemu-io: Don't leak pattern file in error path · c8e68b43
      Kevin Wolf 提交于
      qemu_io_alloc_from_file() needs to close the pattern file even if some
      error occurred.
      
      Setting f = NULL in the success path and checking it for NULL in the
      error path isn't strictly necessary at this point, but let's do it
      anyway in case someone later adds a 'goto error' after closing the file.
      
      Coverity: CID 1405303
      Fixes: 4d731510Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      Reviewed-by: NMax Reitz <mreitz@redhat.com>
      Reviewed-by: NStefano Garzarella <sgarzare@redhat.com>
      c8e68b43
    • A
      iotests: extend sleeping time under Valgrind · 4e08bee4
      Andrey Shinkevich 提交于
      To synchronize the time when QEMU is running longer under the Valgrind,
      increase the sleeping time in the test 247.
      Signed-off-by: NAndrey Shinkevich <andrey.shinkevich@virtuozzo.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      4e08bee4
    • A
      iotests: extended timeout under Valgrind · fbd1c378
      Andrey Shinkevich 提交于
      As the iotests run longer under the Valgrind, the QEMU_COMM_TIMEOUT is
      to be increased in the test cases 028, 183 and 192 when running under
      the Valgrind.
      Suggested-by: NRoman Kagan <rkagan@virtuozzo.com>
      Signed-off-by: NAndrey Shinkevich <andrey.shinkevich@virtuozzo.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      fbd1c378
    • A
      iotests: Valgrind fails with nonexistent directory · ad20319a
      Andrey Shinkevich 提交于
      The Valgrind uses the exported variable TMPDIR and fails if the
      directory does not exist. Let us exclude such a test case from
      being run under the Valgrind and notify the user of it.
      Suggested-by: NKevin Wolf <kwolf@redhat.com>
      Signed-off-by: NAndrey Shinkevich <andrey.shinkevich@virtuozzo.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      ad20319a
    • A
      iotests: Add casenotrun report to bash tests · 5ff1c2c8
      Andrey Shinkevich 提交于
      The new function _casenotrun() is to be invoked if a test case cannot
      be run for some reason. The user will be notified by a message passed
      to the function. It is the caller's responsibility to make skipped a
      particular test.
      Suggested-by: NKevin Wolf <kwolf@redhat.com>
      Signed-off-by: NAndrey Shinkevich <andrey.shinkevich@virtuozzo.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      Reviewed-by: NCleber Rosa <crosa@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      5ff1c2c8
    • A
      iotests: exclude killed processes from running under Valgrind · 8af224d6
      Andrey Shinkevich 提交于
       The Valgrind tool fails to manage its termination in multi-threaded
       processes when they raise the signal SIGKILL. The bug has been reported
       to the Valgrind maintainers and was registered as the bug #409141:
       https://bugs.kde.org/show_bug.cgi?id=409141
       Let's exclude such test cases from running under the Valgrind until a
       new version with the bug fix is released because checking for the
       memory issues is covered by other test cases.
      Suggested-by: NJohn Snow <jsnow@redhat.com>
      Signed-off-by: NAndrey Shinkevich <andrey.shinkevich@virtuozzo.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      8af224d6
    • A
      iotests: allow Valgrind checking all QEMU processes · 036d8cbf
      Andrey Shinkevich 提交于
      With the '-valgrind' option, let all the QEMU processes be run under
      the Valgrind tool. The Valgrind own parameters may be set with its
      environment variable VALGRIND_OPTS, e.g.
      $ VALGRIND_OPTS="--leak-check=yes" ./check -valgrind <test#>
      or they may be listed in the Valgrind checked file ./.valgrindrc or
      ~/.valgrindrc like
      --memcheck:leak-check=no
      --memcheck:track-origins=yes
      To exclude a specific process from running under the Valgrind, the
      corresponding environment variable VALGRIND_QEMU_<name> is to be set
      to the empty string:
      $ VALGRIND_QEMU_IO= ./check -valgrind <test#>
      When QEMU-IO process is being killed, the shell report refers to the
      text of the command in _qemu_io_wrapper(), which was modified with this
      patch. So, the benchmark output for the tests 039, 061 and 137 is to be
      changed also.
      Signed-off-by: NAndrey Shinkevich <andrey.shinkevich@virtuozzo.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      036d8cbf
    • P
      block/nfs: add support for nfs_umount · d2c6becb
      Peter Lieven 提交于
      libnfs recently added support for unmounting. Add support
      in Qemu too.
      Signed-off-by: NPeter Lieven <pl@kamp.de>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      d2c6becb
    • P
      block/nfs: tear down aio before nfs_close · 601dc655
      Peter Lieven 提交于
      nfs_close is a sync call from libnfs and has its own event
      handler polling on the nfs FD. Avoid that both QEMU and libnfs
      are intefering here.
      
      CC: qemu-stable@nongnu.org
      Signed-off-by: NPeter Lieven <pl@kamp.de>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      601dc655
    • P
      Merge remote-tracking branch 'remotes/berrange/tags/filemon-test-pull-request' into staging · 7ff91278
      Peter Maydell 提交于
      Fix filemonitor test broken with newest Linux kernel
      
      # gpg: Signature made Wed 11 Sep 2019 10:31:05 BST
      # gpg:                using RSA key DAF3A6FDB26B62912D0E8E3FBE86EBB415104FDF
      # gpg: Good signature from "Daniel P. Berrange <dan@berrange.com>" [full]
      # gpg:                 aka "Daniel P. Berrange <berrange@redhat.com>" [full]
      # Primary key fingerprint: DAF3 A6FD B26B 6291 2D0E  8E3F BE86 EBB4 1510 4FDF
      
      * remotes/berrange/tags/filemon-test-pull-request:
        tests: make filemonitor test more robust to event ordering
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      7ff91278
    • L
      target/mips: gdbstub: Revert commit 8e0b373f · d1cc1533
      Libo Zhou 提交于
      Multiple reports from users were received regarding failures of
      packet 'g' communication with gdb for some MIPS configurations.
      It was found out (by bisecting) that the problematic commit is
      8e0b373f. Revert that commit until a better solution is developed.
      Suggested-by: NAleksandar Markovic <amarkovic@wavecomp.com>
      Signed-off-by: NLibo Zhou <zhlb29@foxmail.com>
      Signed-off-by: NAleksandar Markovic <amarkovic@wavecomp.com>
      Reviewed-by: NAleksandar Markovic <amarkovic@wavecomp.com>
      Message-Id: <1568207966-25202-1-git-send-email-aleksandar.markovic@rt-rk.com>
      d1cc1533
    • P
      hw/mips/mips_jazz: Remove no-longer-necessary override of do_unassigned_access · 6626286e
      Peter Maydell 提交于
      Now that the MIPS CPU implementation uses the new
      do_transaction_failed hook, we can remove the old code that handled
      the do_unassigned_access hook.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NAleksandar Markovic <amarkovic@wavecomp.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Tested-by: NHervé Poussineau <hpoussin@reactos.org>
      Message-Id: <20190802160458.25681-4-peter.maydell@linaro.org>
      6626286e
    • P
      target/mips: Switch to do_transaction_failed() hook · 4f02a06d
      Peter Maydell 提交于
      Switch the MIPS target from the old unassigned_access hook to the new
      do_transaction_failed hook.
      
      Unlike the old hook, do_transaction_failed is only ever called from
      the TCG memory access paths, so there is no need for the "ignore this
      if we're using KVM" hack that we were previously using to work around
      the way unassigned_access was called for all kinds of memory accesses
      to unassigned physical addresses.
      
      The MIPS target does not ever do direct memory reads by physical
      address (via either ldl_phys etc or address_space_ldl etc), so the
      only memory accesses this affects are the 'normal' guest loads and
      stores, which will be handled by the new hook; their behaviour is
      unchanged.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NAleksandar Markovic <amarkovic@wavecomp.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Tested-by: NHervé Poussineau <hpoussin@reactos.org>
      Message-Id: <20190802160458.25681-3-peter.maydell@linaro.org>
      4f02a06d
    • P
      hw/mips/mips_jazz: Override do_transaction_failed hook · 8d2b8718
      Peter Maydell 提交于
      The MIPS Jazz ('magnum' and 'pica61') boards have some code which
      overrides the CPU's do_unassigned_access hook, so they can intercept
      it and not raise exceptions on data accesses to invalid addresses,
      only for instruction fetches.
      
      We want to switch MIPS over to using the do_transaction_failed
      hook instead, so add an intercept for that as well, and make
      the board code install whichever hook the CPU is actually using.
      Once we've changed the CPU implementation we can remove the
      redundant code for the old hook.
      
      Note: I am suspicious that the behaviour as implemented here may not
      be what the hardware really does.  It was added in commit
      54e75558 to restore the behaviour that was broken by
      commit c658b94f.  But prior to commit c658b94f
      every MIPS board generated exceptions for instruction access to
      invalid addresses but not for data accesses; and other boards,
      notably Malta, were fixed by making all invalid accesses behave as
      reads-as-zero (see the call to empty_slot_init() in
      mips_malta_init()).  Hardware that raises exceptions for instruction
      access and not data access seems to me to be an unlikely design, and
      it's possible that the right way to emulate this is to make the Jazz
      boards do what we did with Malta (or some variation of that).
      Nonetheless, since I don't have access to real hardware to test
      against I have taken the approach of "make QEMU continue to behave
      the same way it did before this commit".  I have updated the comment
      to correct the parts that are no longer accurate and note that
      the hardware might behave differently.
      
      The test case for the need for the hook-hijacking is in
      https://bugs.launchpad.net/qemu/+bug/1245924 That BIOS will boot OK
      either with this overriding of both hooks, or with a simple "global
      memory region to ignore bad accesses of all types", so it doesn't
      provide evidence either way, unfortunately.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NAleksandar Markovic <amarkovic@wavecomp.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Tested-by: NHervé Poussineau <hpoussin@reactos.org>
      Message-Id: <20190802160458.25681-2-peter.maydell@linaro.org>
      8d2b8718
  3. 12 9月, 2019 13 次提交
  4. 11 9月, 2019 3 次提交