1. 22 11月, 2017 3 次提交
    • J
      qemu-iotests: add option in common.qemu for mismatch only · a2339699
      Jeff Cody 提交于
      Add option to echo response to QMP / HMP command only on mismatch.
      
      Useful for ignore all normal responses, but catching things like
      segfaults.
      Signed-off-by: NJeff Cody <jcody@redhat.com>
      Reviewed-by: NStefan Hajnoczi <stefanha@redhat.com>
      a2339699
    • J
      coroutine: abort if we try to schedule or enter a pending coroutine · 6133b39f
      Jeff Cody 提交于
      The previous patch fixed a race condition, in which there were
      coroutines being executing doubly, or after coroutine deletion.
      
      We can detect common scenarios when this happens, and print an error
      message and abort before we corrupt memory / data, or segfault.
      
      This patch will abort if an attempt to enter a coroutine is made while
      it is currently pending execution, either in a specific AioContext bh,
      or pending execution via a timer.  It will also abort if a coroutine
      is scheduled, before a prior scheduled run has occurred.
      
      We cannot rely on the existing co->caller check for recursive re-entry
      to catch this, as the coroutine may run and exit with
      COROUTINE_TERMINATE before the scheduled coroutine executes.
      
      (This is the scenario that was occurring and fixed in the previous
      patch).
      
      This patch also re-orders the Coroutine struct elements in an attempt to
      optimize caching.
      Signed-off-by: NJeff Cody <jcody@redhat.com>
      Reviewed-by: NStefan Hajnoczi <stefanha@redhat.com>
      6133b39f
    • J
      blockjob: do not allow coroutine double entry or entry-after-completion · 4afeffc8
      Jeff Cody 提交于
      When block_job_sleep_ns() is called, the co-routine is scheduled for
      future execution.  If we allow the job to be re-entered prior to the
      scheduled time, we present a race condition in which a coroutine can be
      entered recursively, or even entered after the coroutine is deleted.
      
      The job->busy flag is used by blockjobs when a coroutine is busy
      executing. The function 'block_job_enter()' obeys the busy flag,
      and will not enter a coroutine if set.  If we sleep a job, we need to
      leave the busy flag set, so that subsequent calls to block_job_enter()
      are prevented.
      
      This changes the prior behavior of block_job_cancel() being able to
      immediately wake up and cancel a job; in practice, this should not be an
      issue, as the coroutine sleep times are generally very small, and the
      cancel will occur the next time the coroutine wakes up.
      
      This fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1508708Signed-off-by: NJeff Cody <jcody@redhat.com>
      Reviewed-by: NStefan Hajnoczi <stefanha@redhat.com>
      4afeffc8
  2. 21 11月, 2017 12 次提交
    • D
      build: disarm the TCG unit test trap · 7c3d1917
      Daniel P. Berrange 提交于
      Developers sometimes mistakenly run 'make test' instead of 'make check'.
      'make test' triggers the ancient, unmaintained tcg unit tests in
      tests/tcg/Makefile which have long since ceased compiling.
      
      Even if someone fixes the TCG tests, it makes little sense to put
      them in a 'make test' target, rather they should be 'make check-tcg',
      possibly wired up as a dependency of 'make check'.
      
      In the meantime, this patch disarms the 'make test' trap by simply
      deleting it so users get an immediate error. This should be enough
      for them to remember to type 'make check' instead (or 'make help'
      to learn). It also deletes 'make speed' which is another route
      into the tcg tests.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      Reviewed-by: NKashyap Chamarthy <kchamart@redhat.com>
      Reviewed-by: NDaniel Henrique Barboza <danielhb@linux.vnet.ibm.com>
      Message-id: 20171121142538.22072-1-berrange@redhat.com
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      7c3d1917
    • S
      Use HTTPS for qemu.org and other domains · 70b7fba9
      Stefan Hajnoczi 提交于
      qemu.org enabled HTTPS in 2017 and it should be used instead of HTTP.
      There are also URLs to json.org, openvpn.net, and other domains that
      support HTTPS.
      
      This patch updates the qemu.org domains everywhere and also third-party
      domains that I have checked.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Message-id: 20171121120435.28728-3-stefanha@redhat.com
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      70b7fba9
    • S
      Use qemu.org domain name · 1b3bbc68
      Stefan Hajnoczi 提交于
      The owner of qemu.org has delegated authority to modify DNS records to
      the QEMU Project.  This has allowed us to use the domain name without
      worries about IP address changes or technical issues disrupting service.
      The issues described in commit 85938981
      ("Use qemu-project.org domain name") have therefore been mitigated.
      
      This patch switches back to consistently using qemu.org instead of
      qemu-project.org in documentation, version.rc, and the Windows installer
      script.
      
      The git submodules and SeaBIOS still use qemu-project.org for the time
      being.  This will be fixed in the QEMU 2.12 release cycle.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Message-id: 20171121120435.28728-2-stefanha@redhat.com
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      1b3bbc68
    • M
      scripts/make-release: ship u-boot source as a tarball · d0dead3b
      Michael Roth 提交于
      The u-boot sources we ship currently cause problems with unpacking on
      a case-insensitive filesystem due to path conflicts. This has been
      fixed in upstream u-boot via commit 610eec7f, but since it is not
      yet included in an official release we implement this approach as a
      temporary workaround.
      
      Once we move to a u-boot containing commit 610eec7f we should revert
      this patch.
      
      Cc: qemu-stable@nongnu.org
      Cc: Alexander Graf <agraf@suse.de>
      Cc: Richard Henderson <richard.henderson@linaro.org>
      Cc: Thomas Huth <thuth@redhat.com>
      Cc: Peter Maydell <peter.maydell@linaro.org>
      Suggested-by: NRichard Henderson <richard.henderson@linaro.org>
      Signed-off-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
      Reviewed-by: NThomas Huth <thuth@redhat.com>
      Message-id: 20171107205201.10207-1-mdroth@linux.vnet.ibm.com
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      d0dead3b
    • P
      accel/tcg: Handle atomic accesses to notdirty memory correctly · 34d49937
      Peter Maydell 提交于
      To do a write to memory that is marked as notdirty, we need
      to invalidate any TBs we have cached for that memory, and
      update the cpu physical memory dirty flags for VGA and migration.
      The slowpath code in notdirty_mem_write() does all this correctly,
      but the new atomic handling code in atomic_mmu_lookup() doesn't
      do anything at all, it just clears the dirty bit in the TLB.
      
      The effect of this bug is that if the first write to a notdirty
      page for which we have cached TBs is by a guest atomic access,
      we fail to invalidate the TBs and subsequently will execute
      incorrect code. This can be seen by trying to run 'javac' on AArch64.
      
      Use the new notdirty_call_before() and notdirty_call_after()
      functions to correctly handle the update to notdirty memory
      in the atomic codepath.
      
      Cc: qemu-stable@nongnu.org
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
      Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
      Message-id: 1511201308-23580-3-git-send-email-peter.maydell@linaro.org
      34d49937
    • P
      exec.c: Factor out before/after actions for notdirty memory writes · 27266271
      Peter Maydell 提交于
      The function notdirty_mem_write() has a sequence of actions
      it has to do before and after the actual business of writing
      data to host RAM to ensure that dirty flags are correctly
      updated and we flush any TCG translations for the region.
      We need to do this also in other places that write directly
      to host RAM, most notably the TCG atomic helper functions.
      Pull out the before and after pieces into their own functions.
      
      We use an API where the prepare function stashes the various
      bits of information about the write into a struct for the
      complete function to use, because in the calls for the atomic
      helpers the place where the complete function will be called
      doesn't have the information to hand.
      
      Cc: qemu-stable@nongnu.org
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
      Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
      Message-id: 1511201308-23580-2-git-send-email-peter.maydell@linaro.org
      27266271
    • P
      Merge remote-tracking branch 'remotes/mdroth/tags/qga-pull-2017-11-20-tag' into staging · a61d3439
      Peter Maydell 提交于
      qemu-ga patch queue for 2.11
      
      * fix potential overflow in network interface stats reporting
      
      # gpg: Signature made Mon 20 Nov 2017 20:56:05 GMT
      # gpg:                using RSA key 0x3353C9CEF108B584
      # gpg: Good signature from "Michael Roth <flukshun@gmail.com>"
      # gpg:                 aka "Michael Roth <mdroth@utexas.edu>"
      # gpg:                 aka "Michael Roth <mdroth@linux.vnet.ibm.com>"
      # Primary key fingerprint: CEAC C9E1 5534 EBAB B82D  3FA0 3353 C9CE F108 B584
      
      * remotes/mdroth/tags/qga-pull-2017-11-20-tag:
        qga: replace GetIfEntry with GetIfEntry2 for interface stats
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      a61d3439
    • P
      Merge remote-tracking branch 'remotes/riku/tags/pull-linux-user-20171120' into staging · 1b4e6e8c
      Peter Maydell 提交于
      late linux-user fixes for Qemu 2.11
      
      # gpg: Signature made Mon 20 Nov 2017 21:19:00 GMT
      # gpg:                using RSA key 0xB44890DEDE3C9BC0
      # gpg: Good signature from "Riku Voipio <riku.voipio@iki.fi>"
      # gpg:                 aka "Riku Voipio <riku.voipio@linaro.org>"
      # Primary key fingerprint: FF82 03C8 C391 98AE 0581  41EF B448 90DE DE3C 9BC0
      
      * remotes/riku/tags/pull-linux-user-20171120:
        linux-user: Fix calculation of auxv length
        linux-user: Handle rt_sigaction correctly for SPARC
        linux-user/sparc: Put address for data faults where linux-user expects it
        linux-user/ppc: Report correct fault address for data faults
        linux-user/s390x: Mask si_addr for SIGSEGV
        linux-user: return EINVAL from prctl(PR_*_SECCOMP)
        linux-user: fix 'finshed' typo in comment
        linux-user/syscall.c: Handle SH4's exceptional alignment for p{read, write}64
        linux-user: Handle TARGET_MAP_STACK and TARGET_MAP_HUGETLB
        linux-user/hppa: Fix TARGET_F_RDLCK, TARGET_F_WRLCK, TARGET_F_UNLCK
        linux-user/hppa: Fix TARGET_MAP_TYPE
        linux-user/hppa: Fix typo for TARGET_NR_epoll_wait
        linux-user/hppa: Fix cpu_clone_regs
        linux-user/hppa: Fix TARGET_SA_* defines
        linux-user: Restrict usage of sa_restorer
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      1b4e6e8c
    • P
      Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20171120' into staging · 5f49d73c
      Peter Maydell 提交于
      target-arm queue:
       * hw/arm: Silence xlnx-ep108 deprecation warning during tests
       * hw/arm/aspeed: Unlock SCU when running kernel
       * arm: check regime, not current state, for ATS write PAR format
       * nvic: Fix ARMv7M MPU_RBAR reads
       * target/arm: Report GICv3 sysregs present in ID registers if needed
      
      # gpg: Signature made Mon 20 Nov 2017 17:35:25 GMT
      # gpg:                using RSA key 0x3C2525ED14360CDE
      # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>"
      # gpg:                 aka "Peter Maydell <pmaydell@gmail.com>"
      # gpg:                 aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>"
      # Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83  15CF 3C25 25ED 1436 0CDE
      
      * remotes/pmaydell/tags/pull-target-arm-20171120:
        hw/arm: Silence xlnx-ep108 deprecation warning during tests
        hw/arm/aspeed: Unlock SCU when running kernel
        arm: check regime, not current state, for ATS write PAR format
        nvic: Fix ARMv7M MPU_RBAR reads
        target/arm: Report GICv3 sysregs present in ID registers if needed
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      5f49d73c
    • Z
      qga: replace GetIfEntry with GetIfEntry2 for interface stats · df83eabd
      ZhiPeng Lu 提交于
      The data obtained by GetIfEntry is 32 bits, and it may overflow. Thus
      using GetIfEntry2 instead of GetIfEntry.
      Signed-off-by: NZhiPeng Lu <lu.zhipeng@zte.com.cn>
      *avoid CamelCase variable names
      *update field names for MIB_IFROW -> MIB_IF_ROW2
      *dynamically probe for GetIfIndex2 to deal with older OSs
      *check return value from get_interface_index
      Signed-off-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
      df83eabd
    • P
      Merge remote-tracking branch 'remotes/cohuck/tags/s390x-20171120-v1' into staging · 3da87f77
      Peter Maydell 提交于
      Fix storing cpu status (both kvm and tcg), locking around diag 308
      (tcg only) and a non-zero variable in the s390-ccw bios.
      
      # gpg: Signature made Mon 20 Nov 2017 15:18:05 GMT
      # gpg:                using RSA key 0xDECF6B93C6F02FAF
      # gpg: Good signature from "Cornelia Huck <conny@cornelia-huck.de>"
      # gpg:                 aka "Cornelia Huck <huckc@linux.vnet.ibm.com>"
      # gpg:                 aka "Cornelia Huck <cornelia.huck@de.ibm.com>"
      # gpg:                 aka "Cornelia Huck <cohuck@kernel.org>"
      # gpg:                 aka "Cornelia Huck <cohuck@redhat.com>"
      # Primary key fingerprint: C3D0 D66D C362 4FF6 A8C0  18CE DECF 6B93 C6F0 2FAF
      
      * remotes/cohuck/tags/s390x-20171120-v1:
        pc-bios/s390-ccw.img: update image
        pc-bios/s390-ccw: Fix problem with invalid virtio-scsi LUN when rebooting
        s390x/tcg: fix DIAG 308 with > 1 VCPU (MTTCG)
        s390x: fix storing CPU status (again)
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      3da87f77
    • P
      Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-2.11-20171120' into staging · b2996bb4
      Peter Maydell 提交于
      ppc patch queue 2017-11-20
      
      Here's the current queue of ppc patches.  These 2 patches are both
      more complex than I'd ideally like this late in the 2.11 cycle.
      However, they do fix important bugs, so I think it's worth it on
      balance.
      
      # gpg: Signature made Mon 20 Nov 2017 03:27:19 GMT
      # gpg:                using RSA key 0x6C38CACA20D9B392
      # gpg: Good signature from "David Gibson <david@gibson.dropbear.id.au>"
      # gpg:                 aka "David Gibson (Red Hat) <dgibson@redhat.com>"
      # gpg:                 aka "David Gibson (ozlabs.org) <dgibson@ozlabs.org>"
      # gpg:                 aka "David Gibson (kernel.org) <dwg@kernel.org>"
      # Primary key fingerprint: 75F4 6586 AE61 A66C C44E  87DC 6C38 CACA 20D9 B392
      
      * remotes/dgibson/tags/ppc-for-2.11-20171120:
        spapr: reset DRCs after devices
        target/ppc: Update setting of cpu features to account for compat modes
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      b2996bb4
  3. 20 11月, 2017 20 次提交
  4. 18 11月, 2017 5 次提交
    • P
      Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging · 2e020834
      Peter Maydell 提交于
      Block layer patches for 2.11.0-rc2
      
      # gpg: Signature made Fri 17 Nov 2017 17:58:36 GMT
      # gpg:                using RSA key 0x7F09B272C88F2FD6
      # gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>"
      # Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6
      
      * remotes/kevin/tags/for-upstream: (25 commits)
        iotests: Make 087 pass without AIO enabled
        block: Make bdrv_next() keep strong references
        qcow2: Fix overly broad madvise()
        qcow2: Refuse to get unaligned offsets from cache
        qcow2: Add bounds check to get_refblock_offset()
        block: Guard against NULL bs->drv
        qcow2: Unaligned zero cluster in handle_alloc()
        qcow2: check_errors are fatal
        qcow2: reject unaligned offsets in write compressed
        iotests: Add test for failing qemu-img commit
        tests: Add check-qobject for equality tests
        iotests: Add test for non-string option reopening
        block: qobject_is_equal() in bdrv_reopen_prepare()
        qapi: Add qobject_is_equal()
        qapi/qlist: Add qlist_append_null() macro
        qapi/qnull: Add own header
        qcow2: fix image corruption on commit with persistent bitmap
        iotests: test clearing unknown autoclear_features by qcow2
        block: Fix permissions in image activation
        qcow2: fix image corruption after committing qcow2 image into base
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      2e020834
    • K
      Merge remote-tracking branch 'mreitz/tags/pull-block-2017-11-17' into queue-block · d5a49c6e
      Kevin Wolf 提交于
      Block patches for 2.11.0-rc2
      
      # gpg: Signature made Fri Nov 17 18:22:07 2017 CET
      # gpg:                using RSA key F407DB0061D5CF40
      # gpg: Good signature from "Max Reitz <mreitz@redhat.com>"
      # Primary key fingerprint: 91BE B60A 30DB 3E88 57D1  1829 F407 DB00 61D5 CF40
      
      * mreitz/tags/pull-block-2017-11-17:
        iotests: Make 087 pass without AIO enabled
        block: Make bdrv_next() keep strong references
        qcow2: Fix overly broad madvise()
        qcow2: Refuse to get unaligned offsets from cache
        qcow2: Add bounds check to get_refblock_offset()
        block: Guard against NULL bs->drv
        qcow2: Unaligned zero cluster in handle_alloc()
        qcow2: check_errors are fatal
        qcow2: reject unaligned offsets in write compressed
        iotests: Add test for failing qemu-img commit
        tests: Add check-qobject for equality tests
        iotests: Add test for non-string option reopening
        block: qobject_is_equal() in bdrv_reopen_prepare()
        qapi: Add qobject_is_equal()
        qapi/qlist: Add qlist_append_null() macro
        qapi/qnull: Add own header
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      d5a49c6e
    • M
      iotests: Make 087 pass without AIO enabled · c0012e9a
      Max Reitz 提交于
      If AIO has not been enabled in the qemu build that is to be tested, we
      should skip the "aio=native without O_DIRECT" test instead of failing.
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      Message-id: 20171115180732.31753-1-mreitz@redhat.com
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      c0012e9a
    • M
      block: Make bdrv_next() keep strong references · 5e003f17
      Max Reitz 提交于
      On one hand, it is a good idea for bdrv_next() to return a strong
      reference because ideally nearly every pointer should be refcounted.
      This fixes intermittent failure of iotest 194.
      
      On the other, it is absolutely necessary for bdrv_next() itself to keep
      a strong reference to both the BB (in its first phase) and the BDS (at
      least in the second phase) because when called the next time, it will
      dereference those objects to get a link to the next one.  Therefore, it
      needs these objects to stay around until then.  Just storing the pointer
      to the next in the iterator is not really viable because that pointer
      might become invalid as well.
      
      Both arguments taken together means we should probably just invoke
      bdrv_ref() and blk_ref() in bdrv_next().  This means we have to assert
      that bdrv_next() is always called from the main loop, but that was
      probably necessary already before this patch and judging from the
      callers, it also looks to actually be the case.
      
      Keeping these strong references means however that callers need to give
      them up if they decide to abort the iteration early.  They can do so
      through the new bdrv_next_cleanup() function.
      Suggested-by: NKevin Wolf <kwolf@redhat.com>
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      Message-id: 20171110172545.32609-1-mreitz@redhat.com
      Reviewed-by: NStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      5e003f17
    • M
      qcow2: Fix overly broad madvise() · 08546bcf
      Max Reitz 提交于
      @mem_size and @offset are both size_t, thus subtracting them from one
      another will just return a big size_t if mem_size < offset -- even more
      obvious here because the result is stored in another size_t.
      
      Checking that result to be positive is therefore not sufficient to
      exclude the case that offset > mem_size.  Thus, we currently sometimes
      issue an madvise() over a very large address range.
      
      This is triggered by iotest 163, but with -m64, this does not result in
      tangible problems.  But with -m32, this test produces three segfaults,
      all of which are fixed by this patch.
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      Message-id: 20171114184127.24238-1-mreitz@redhat.com
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NAlberto Garcia <berto@igalia.com>
      Reviewed-by: NDarren Kenny <darren.kenny@oracle.com>
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      08546bcf