1. 22 11月, 2017 5 次提交
    • P
      Merge remote-tracking branch 'remotes/cody/tags/block-pull-request' into staging · 64807cd7
      Peter Maydell 提交于
      # gpg: Signature made Tue 21 Nov 2017 17:01:33 GMT
      # gpg:                using RSA key 0xBDBE7B27C0DE3057
      # gpg: Good signature from "Jeffrey Cody <jcody@redhat.com>"
      # gpg:                 aka "Jeffrey Cody <jeff@codyprime.org>"
      # gpg:                 aka "Jeffrey Cody <codyprime@gmail.com>"
      # Primary key fingerprint: 9957 4B4D 3474 90E7 9D98  D624 BDBE 7B27 C0DE 3057
      
      * remotes/cody/tags/block-pull-request:
        qemu-iotest: add test for blockjob coroutine race condition
        qemu-iotests: add option in common.qemu for mismatch only
        coroutine: abort if we try to schedule or enter a pending coroutine
        blockjob: do not allow coroutine double entry or entry-after-completion
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      64807cd7
    • J
      d975301d
    • 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 21 次提交
    • P
      Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging · fc7dbc11
      Peter Maydell 提交于
      Block layer patches for 2.11.0-rc2
      
      # gpg: Signature made Tue 21 Nov 2017 15:09:12 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:
        iotests: Fix 176 on 32-bit host
        block: Close a BlockDriverState completely even when bs->drv is NULL
        block: Error out on load_vm with active dirty bitmaps
        block: Add errp to bdrv_all_goto_snapshot()
        block: Add errp to bdrv_snapshot_goto()
        block: Don't request I/O permission with BDRV_O_NO_IO
        block: Don't use BLK_PERM_CONSISTENT_READ for format probing
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      fc7dbc11
    • 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
    • K
      Merge remote-tracking branch 'mreitz/tags/pull-block-2017-11-21' into queue-block · 4fd0295c
      Kevin Wolf 提交于
      Block patches for 2.11.0-rc2
      
      # gpg: Signature made Tue Nov 21 14:54:28 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-21:
        iotests: Fix 176 on 32-bit host
        block: Close a BlockDriverState completely even when bs->drv is NULL
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      4fd0295c
    • E
      iotests: Fix 176 on 32-bit host · 2807746f
      Eric Blake 提交于
      The contents of a qcow2 bitmap are rounded up to a size that
      matches the number of bits available for the granularity, but
      that granularity differs for 32-bit hosts (our default 64k
      cluster allows for 2M bitmap coverage per 'long') and 64-bit
      hosts (4M bitmap per 'long').  If the image is a multiple of
      2M but not 4M, then the number of bytes occupied by the array
      of longs in memory differs between architecture, thus
      resulting in different SHA256 hashes.
      
      Furthermore (but untested by me), if our computation of the
      SHA256 hash is at all endian-dependent because of how we store
      data in memory, that's another variable we'd have to account
      for (ideally, we specified the bitmap stored in qcow2 as
      fixed-endian on disk, because the same qcow2 file must be
      usable across any architecture; but that says nothing about
      how we represent things in memory).  But we already have test
      165 to validate that bitmaps are stored correctly on disk,
      while this test is merely testing that the bitmap exists.
      
      So for this test, the easiest solution is to filter out the
      actual hash value.  Broken in commit 4096974e.
      Reported-by: NMax Reitz <mreitz@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-id: 20171117190422.23626-1-eblake@redhat.com
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      Reviewed-by: NMax Reitz <mreitz@redhat.com>
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      2807746f
    • A
      block: Close a BlockDriverState completely even when bs->drv is NULL · 50a3efb0
      Alberto Garcia 提交于
      bdrv_close() skips much of its logic when bs->drv is NULL. This is
      fine when we're closing a BlockDriverState that has just been created
      (because e.g the initialization process failed), but it's not enough
      in other cases.
      
      For example, when a valid qcow2 image is found to be corrupted then
      QEMU marks it as such in the file header and then sets bs->drv to
      NULL in order to make the BlockDriverState unusable. When that BDS is
      later closed then many of its data structures are not freed (leaking
      their memory) and none of its children are detached. This results in
      bdrv_close_all() failing to close all BDSs and making this assertion
      fail when QEMU is being shut down:
      
         bdrv_close_all: Assertion `QTAILQ_EMPTY(&all_bdrv_states)' failed.
      
      This patch makes bdrv_close() do the full uninitialization process
      in all cases. This fixes the problem with corrupted images and still
      works fine with freshly created BDSs.
      Signed-off-by: NAlberto Garcia <berto@igalia.com>
      Message-id: 20171106145345.12038-1-berto@igalia.com
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      50a3efb0
    • K
      block: Error out on load_vm with active dirty bitmaps · 70a5afed
      Kevin Wolf 提交于
      Loading a snapshot invalidates the bitmap. Just marking all blocks dirty
      is not a useful response in practice, instead the user needs to be aware
      that we switch to a completely different state. If they are okay with
      losing the dirty bitmap, they can just explicitly delete it.
      
      This effectively reverts commit 04dec3c3.
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NDenis V. Lunev <den@openvz.org>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      70a5afed
    • K
    • K
      0b62bcbc
    • K
      block: Don't request I/O permission with BDRV_O_NO_IO · 1f4ad7d3
      Kevin Wolf 提交于
      'qemu-img info' makes sense even when BLK_PERM_CONSISTENT_READ cannot be
      granted because of a block job in a running qemu process. It already
      sets BDRV_O_NO_IO to indicate that it doesn't access the guest visible
      data at all.
      
      Check the BDRV_O_NO_IO flags in blk_new_open(), so that I/O related
      permissions are not unnecessarily requested and 'qemu-img info' can work
      even if BLK_PERM_CONSISTENT_READ cannot be granted.
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      Reviewed-by: NFam Zheng <famz@redhat.com>
      Reviewed-by: NAlberto Garcia <berto@igalia.com>
      1f4ad7d3
    • K
      block: Don't use BLK_PERM_CONSISTENT_READ for format probing · dacaa162
      Kevin Wolf 提交于
      For format probing, we don't really care whether all of the image
      content is consistent. The only thing we're looking at is the image
      header, and specifically the magic numbers that are expected to never
      change, no matter how inconsistent the guest visible disk content is.
      
      Therefore, don't request BLK_PERM_CONSISTENT_READ. This allows to use
      format probing, e.g. in the context of 'qemu-img info', even while the
      guest visible data in the image is inconsistent during a running block
      job.
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      Reviewed-by: NFam Zheng <famz@redhat.com>
      dacaa162
    • 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 14 次提交