Skip to content
Snippets Groups Projects
  1. Apr 06, 2017
  2. Apr 05, 2017
  3. Apr 04, 2017
  4. Apr 03, 2017
    • Peter Maydell's avatar
      tests/libqtest.c: Delete possible stale unix sockets · d9123d09
      Peter Maydell authored
      
      Occasionally if a test crashes or is interrupted by the user
      at the wrong moment it could leave behind a stale UNIX
      socket in /tmp/. This will then cause a subsequent test
      run to fail spuriously with
       tests/libqtest.c:70:init_socket: assertion failed (ret != -1): (-1 != -1)
      if it happens to reuse the same PID.
      
      Defend against this by deleting any stray stale socket before
      trying to open the new ones for this test.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Message-id: 1490963801-27870-1-git-send-email-peter.maydell@linaro.org
      d9123d09
    • Richard W.M. Jones's avatar
      main-loop: Acquire main_context lock around os_host_main_loop_wait. · ecbddbb1
      Richard W.M. Jones authored
      When running virt-rescue the serial console hangs from time to time.
      Virt-rescue runs an ordinary Linux kernel "appliance", but there is
      only a single idle process running inside, so the qemu main loop is
      largely idle.  With virt-rescue >= 1.37 you may be able to observe the
      hang by doing:
      
        $ virt-rescue -e ^] --scratch
        ><rescue> while true; do ls -l /usr/bin; done
      
      The hang in virt-rescue can be resolved by pressing a key on the
      serial console.
      
      Possibly with the same root cause, we also observed hangs during very
      early boot of regular Linux VMs with a serial console.  Those hangs
      are extremely rare, but you may be able to observe them by running
      this command on baremetal for a sufficiently long time:
      
        $ while libguestfs-test-tool -t 60 >& /tmp/log ; do echo -n . ; done
      
      (Check in /tmp/log that the failure was caused by a hang during early
      boot, and not some other reason)
      
      During investigation of this bug, Paolo Bonzini wrote:
      
      > glib is expecting QEMU to use g_main_context_acquire around accesses to
      > GMainContext.  However QEMU is not doing that, instead it is taking its
      > own mutex.  So we should add g_main_context_acquire and
      > g_main_context_release in the two implementations of
      > os_host_main_loop_wait; these should undo the effect of Frediano's
      > glib patch.
      
      This patch exactly implements Paolo's suggestion in that paragraph.
      
      This fixes the serial console hang in my testing, across 3 different
      physical machines (AMD, Intel Core i7 and Intel Xeon), over many hours
      of automated testing.  I wasn't able to reproduce the early boot hangs
      (but as noted above, these are extremely rare in any case).
      
      Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1435432
      
      
      Reported-by: default avatarRichard W.M. Jones <rjones@redhat.com>
      Tested-by: default avatarRichard W.M. Jones <rjones@redhat.com>
      Signed-off-by: default avatarRichard W.M. Jones <rjones@redhat.com>
      Message-Id: <20170331205133.23906-1-rjones@redhat.com>
      [Paolo: this is actually a glib bug: recent glib versions are also
      expecting g_main_context_acquire around g_poll---but that is not
      documented and probably not even intended].
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      ecbddbb1
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/maxreitz/tags/pull-block-2017-04-03' into staging · b1a419ec
      Peter Maydell authored
      
      Block patches for 2.9-rc3
      
      # gpg: Signature made Mon 03 Apr 2017 16:29:49 BST
      # gpg:                using RSA key 0xF407DB0061D5CF40
      # gpg: Good signature from "Max Reitz <mreitz@redhat.com>"
      # Primary key fingerprint: 91BE B60A 30DB 3E88 57D1  1829 F407 DB00 61D5 CF40
      
      * remotes/maxreitz/tags/pull-block-2017-04-03:
        block/parallels: Avoid overflows
        iotests: Improve image-clear tests on non-aligned image
        qcow2: Discard unaligned tail when wiping image
        iotests: fix 097 when run with qcow
        qemu-io-cmds: Assert that global and nofile commands don't use ct->perms
        sheepdog: Fix blockdev-add
        nbd: Tidy up blockdev-add interface
        sockets: New helper socket_address_crumple()
        qapi-schema: SocketAddressFlat variants 'vsock' and 'fd'
        gluster: Prepare for SocketAddressFlat extension
        block: Document -drive problematic code and bugs
        io vnc sockets: Clean up SocketAddressKind switches
        char: Fix socket with "type": "vsock" address
        nbd sockets vnc: Mark problematic address family tests TODO
        block: add missed aio_context_acquire into release_drive
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      b1a419ec
    • Hanna Reitz's avatar
      block/parallels: Avoid overflows · 86d1bd70
      Hanna Reitz authored
      
      Change the types of variables in allocate_clusters() to int64_t so we do
      not have to worry about potential overflows.
      
      Add an assertion that our accesses to s->bat[] do not result in a buffer
      overflow and that the implicit conversion performed when invoking
      bat_entry_off() does not result in an integer overflow.
      
      Coverity-id: 1307776
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Message-id: 20170331170512.10381-1-mreitz@redhat.com
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      86d1bd70
    • Eric Blake's avatar
      iotests: Improve image-clear tests on non-aligned image · f82c5b17
      Eric Blake authored
      
      Tweak 097 and 176 to operate on an image that is not cluster-aligned,
      to give further coverage of clearing out an entire image, including
      the recent fix to eliminate the difference between fast path (97) and
      slow (176) for qcow2.  Also tested on qcow (97 only, since qcow lacks
      snapshots).
      
      Signed-off-by: default avatarEric Blake <eblake@redhat.com>
      Message-id: 20170331185356.2479-4-eblake@redhat.com
      Reviewed-by: default avatarMax Reitz <mreitz@redhat.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      f82c5b17
    • Eric Blake's avatar
      qcow2: Discard unaligned tail when wiping image · 0c1bd469
      Eric Blake authored
      
      There is a subtle difference between the fast (qcow2v3 with no
      extra data) and slow path (qcow2v2 format [aka 0.10], or when a
      snapshot is present) of qcow2_make_empty().  The slow path fails
      to discard the final (partial) cluster of an unaligned image.
      
      The problem stems from the fact that qcow2_discard_clusters() was
      silently ignoring sub-cluster head and tail on unaligned requests.
      A quick audit of all callers shows that qcow2_snapshot_create() has
      always passed a cluster-aligned request since the call was added
      in commit 1ebf561c; qcow2_co_pdiscard() has passed a cluster-aligned
      request since commit ecdbead6 taught the block layer about preferred
      discard alignment; and qcow2_make_empty() was fixed to pass an
      aligned start (but not necessarily end) in commit a3e1505d.
      
      Asserting that the start is always aligned also points out that we
      now have a dead check: rounding the end offset down can never result
      in a value less than the aligned start offset (the check was rendered
      dead with commit ecdbead6).  Meanwhile, we do not want to round the
      end cluster down in the one case of the end offset matching the
      (unaligned) file size - that final partial cluster should still be
      discarded.
      
      With those fixes in place, the fast and slow paths are back in sync
      at discarding an entire image; the next patch will update
      qemu-iotests to ensure we don't regress.
      
      Note that bdrv_co_pdiscard ignores ALL partial cluster requests,
      including the partial cluster at the end of an image; it can be
      argued that the partial cluster at the end should be special-cased
      so that a guest issuing discard requests at proper alignments
      everywhere else can likewise empty the entire image.  But that
      optimization is left for another day.
      
      Signed-off-by: default avatarEric Blake <eblake@redhat.com>
      Message-id: 20170331185356.2479-3-eblake@redhat.com
      Reviewed-by: default avatarMax Reitz <mreitz@redhat.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      0c1bd469
    • Daniel P. Berrangé's avatar
      iotests: fix 097 when run with qcow · 07ff948b
      Daniel P. Berrangé authored
      
      The previous commit:
      
        commit a3e1505d
        Author: Eric Blake <eblake@redhat.com>
        Date:   Mon Dec 5 09:49:34 2016 -0600
      
          qcow2: Don't strand clusters near 2G intervals during commit
      
      extended the 097 test case so that it did two passes, once
      with an internal snapshot, once without.
      
      qcow (v1) does not support internal snapshots, so this change
      broke test 097 when run against qcow.
      
      This splits 097 in two, creating a new 176 that tests the
      internal snapshot codepath, effectively putting 097 back
      to its content before the above commit.
      
      Reviewed-by: default avatarMax Reitz <mreitz@redhat.com>
      Signed-off-by: default avatarDaniel P. Berrange <berrange@redhat.com>
      Message-Id: <20170221115512.21918-8-berrange@redhat.com>
      [eblake: test collisions: s/173/176/g]
      Signed-off-by: default avatarEric Blake <eblake@redhat.com>
      Message-id: 20170331185356.2479-2-eblake@redhat.com
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      07ff948b
    • Peter Maydell's avatar
      qemu-io-cmds: Assert that global and nofile commands don't use ct->perms · 6aabeb58
      Peter Maydell authored
      
      It would be a bug for a command with the CMD_NOFILE_OK or
      CMD_FLAG_GLOBAL flags set to also set the ct->perms field,
      because the former says "OK for a file not to be open"
      but the latter is a check on a file.
      
      Add an assertion in qemuio_add_command() so we can catch that
      sort of buggy command definition immediately rather than it
      being a bug that only manifests when a particular set of
      command line options is used.
      
      (Coverity gets confused about this (CID 1371723) and reports
      that we might dereference a NULL blk pointer in this case,
      because it can't tell that that code path never happens with
      the cmdinfo_t that we have. This commit won't help unconfuse
      it, but it does fix the underlying issue.)
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1490967529-4767-1-git-send-email-peter.maydell@linaro.org
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      6aabeb58
    • Markus Armbruster's avatar
      sheepdog: Fix blockdev-add · d1c13688
      Markus Armbruster authored
      
      Commit 831acdc9 "sheepdog: Implement bdrv_parse_filename()" and commit
      d282f34e "sheepdog: Support blockdev-add" have different ideas on how
      the QemuOpts parameters for the server address are named.  Fix that.
      While there, rename BlockdevOptionsSheepdog member addr to server, for
      consistency with BlockdevOptionsSsh, BlockdevOptionsGluster,
      BlockdevOptionsNbd.
      
      Commit 831acdc9's example becomes
      
          --drive driver=sheepdog,server.type=inet,server.host=fido,server.port=7000,vdi=dolly
      
      instead of
      
          --drive driver=sheepdog,host=fido,vdi=dolly
      
      Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Tested-by: default avatarKashyap Chamarthy <kchamart@redhat.com>
      Message-id: 1490895797-29094-10-git-send-email-armbru@redhat.com
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      d1c13688
    • Markus Armbruster's avatar
      nbd: Tidy up blockdev-add interface · 9445673e
      Markus Armbruster authored
      
      SocketAddress is a simple union, and simple unions are awkward: they
      have their variant members wrapped in a "data" object on the wire, and
      require additional indirections in C.  I intend to limit its use to
      existing external interfaces, and convert all internal interfaces to
      SocketAddressFlat.
      
      BlockdevOptionsNbd is an external interface using SocketAddress.  We
      already use SocketAddressFlat elsewhere in blockdev-add.  Replace it
      by SocketAddressFlat while we can (it's new in 2.9) for simplicity and
      consistency.  For example,
      
          { "execute": "blockdev-add",
            "arguments": { "node-name": "foo", "driver": "nbd",
                           "server": { "type": "inet",
      		                 "data": { "host": "localhost",
      				           "port": "12345" } } } }
      
      becomes
      
          { "execute": "blockdev-add",
            "arguments": { "node-name": "foo", "driver": "nbd",
                           "server": { "type": "inet",
      		                 "host": "localhost", "port": "12345" } } }
      
      Since the internal interfaces still take SocketAddress, this requires
      conversion function socket_address_crumple().  It'll go away when I
      update the interfaces.
      
      Unfortunately, SocketAddress is also visible in -drive since 2.8:
      
          -drive if=none,driver=nbd,server.type=inet,server.data.host=127.0.0.1,server.data.port=12345
      
      Nobody should be using it, as it's fairly new and has never been
      documented, so adding still more compatibility gunk to keep it working
      isn't worth the trouble.  You now have to use
      
          -drive if=none,driver=nbd,server.type=inet,server.host=127.0.0.1,server.port=12345
      
      Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
      Message-id: 1490895797-29094-9-git-send-email-armbru@redhat.com
      
      [mreitz: Change iotest 147 accordingly]
      
      Because of this interface change, iotest 147 has to be adapted.
      Unfortunately, we cannot just flatten all of the addresses because
      nbd-server-start still takes a plain SocketAddress. Therefore, we need
      both and this is most easily achieved by writing the SocketAddress into
      the code and flattening it where necessary.
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Message-id: 20170330221243.17333-1-mreitz@redhat.com
      
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      9445673e
    • Markus Armbruster's avatar
      sockets: New helper socket_address_crumple() · 216411b8
      Markus Armbruster authored
      
      SocketAddress is a simple union, and simple unions are awkward: they
      have their variant members wrapped in a "data" object on the wire, and
      require additional indirections in C.  I intend to limit its use to
      existing external interfaces.  New ones should use SocketAddressFlat.
      I further intend to convert all internal interfaces to
      SocketAddressFlat.  This helper should go away then.
      
      Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
      Message-id: 1490895797-29094-8-git-send-email-armbru@redhat.com
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      216411b8
    • Markus Armbruster's avatar
      qapi-schema: SocketAddressFlat variants 'vsock' and 'fd' · 8bc0673f
      Markus Armbruster authored
      
      Note that the new variants are impossible in qemu_gluster_glfs_init(),
      because the gconf->server can only come from qemu_gluster_parse_uri()
      or qemu_gluster_parse_json(), and neither can create anything but
      'inet' or 'unix'.
      
      Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: default avatarMax Reitz <mreitz@redhat.com>
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Message-id: 1490895797-29094-7-git-send-email-armbru@redhat.com
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      8bc0673f
    • Markus Armbruster's avatar
      gluster: Prepare for SocketAddressFlat extension · fce5d538
      Markus Armbruster authored
      
      qemu_gluster_glfs_init() and qemu_gluster_parse_json() rely on the
      fact that SocketAddressFlatType has only two members
      SOCKET_ADDRESS_FLAT_TYPE_INET and SOCKET_ADDRESS_FLAT_TYPE_UNIX.
      Correct, but won't stay correct.  Make them more robust.
      
      Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: default avatarMax Reitz <mreitz@redhat.com>
      Reviewed-by: default avatarJeff Cody <jcody@redhat.com>
      Message-id: 1490895797-29094-6-git-send-email-armbru@redhat.com
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      fce5d538
    • Markus Armbruster's avatar
      block: Document -drive problematic code and bugs · 129c7d1c
      Markus Armbruster authored
      
      -blockdev and blockdev_add convert their arguments via QObject to
      BlockdevOptions for qmp_blockdev_add(), which converts them back to
      QObject, then to a flattened QDict.  The QDict's members are typed
      according to the QAPI schema.
      
      -drive converts its argument via QemuOpts to a (flat) QDict.  This
      QDict's members are all QString.
      
      Thus, the QType of a flat QDict member depends on whether it comes
      from -drive or -blockdev/blockdev_add, except when the QAPI type maps
      to QString, which is the case for 'str' and enumeration types.
      
      The block layer core extracts generic configuration from the flat
      QDict, and the block driver extracts driver-specific configuration.
      
      Both commonly do so by converting (parts of) the flat QDict to
      QemuOpts, which turns all values into strings.  Not exactly elegant,
      but correct.
      
      However, A few places access the flat QDict directly:
      
      * Most of them access members that are always QString.  Correct.
      
      * bdrv_open_inherit() accesses a boolean, carefully.  Correct.
      
      * nfs_config() uses a QObject input visitor.  Correct only because the
        visited type contains nothing but QStrings.
      
      * nbd_config() and ssh_config() use a QObject input visitor, and the
        visited types contain non-QStrings: InetSocketAddress members
        @numeric, @to, @ipv4, @ipv6.  -drive works as long as you don't try
        to use them (they're all optional).  @to is ignored anyway.
      
        Reproducer:
        -drive driver=ssh,server.host=h,server.port=22,server.ipv4,path=p
        -drive driver=nbd,server.type=inet,server.data.host=h,server.data.port=22,server.data.ipv4
        both fail with "Invalid parameter type for 'data.ipv4', expected: boolean"
      
      Add suitable comments to all these places.  Mark the buggy ones FIXME.
      
      "Fortunately", -drive's driver-specific options are entirely
      undocumented.
      
      Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
      Message-id: 1490895797-29094-5-git-send-email-armbru@redhat.com
      [mreitz: Fixed two typos]
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      129c7d1c
    • Markus Armbruster's avatar
      io vnc sockets: Clean up SocketAddressKind switches · a6c76285
      Markus Armbruster authored
      
      We have quite a few switches over SocketAddressKind.  Some have case
      labels for all enumeration values, others rely on a default label.
      Some abort when the value isn't a valid SocketAddressKind, others
      report an error then.
      
      Unify as follows.  Always provide case labels for all enumeration
      values, to clarify intent.  Abort when the value isn't a valid
      SocketAddressKind, because the program state is messed up then.
      
      Improve a few error messages while there.
      
      Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: default avatarMax Reitz <mreitz@redhat.com>
      Message-id: 1490895797-29094-4-git-send-email-armbru@redhat.com
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      a6c76285
    • Markus Armbruster's avatar
      char: Fix socket with "type": "vsock" address · d2e49aad
      Markus Armbruster authored
      
      Watch this:
      
          $ qemu-system-x86_64 -nodefaults -S -display none -qmp stdio
          {"QMP": {"version": {"qemu": {"micro": 91, "minor": 8, "major": 2}, "package": " (v2.8.0-1195-gf84141e-dirty)"}, "capabilities": []}}
          { "execute": "qmp_capabilities" }
          {"return": {}}
          { "execute": "chardev-add", "arguments": { "id": "chr0", "backend": { "type": "socket", "data": { "addr": { "type": "vsock", "data": { "cid": "CID", "port": "P" }}}}}}
          Aborted (core dumped)
      
      Crashes because SocketAddress_to_str() is blissfully unaware of
      SOCKET_ADDRESS_KIND_VSOCK.  Fix that.  Pick the output format to match
      socket_parse(), just like the existing formats.
      
      Cc: Stefan Hajnoczi <stefanha@redhat.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
      Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: default avatarMax Reitz <mreitz@redhat.com>
      Message-id: 1490895797-29094-3-git-send-email-armbru@redhat.com
      Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      d2e49aad
    • Markus Armbruster's avatar
      nbd sockets vnc: Mark problematic address family tests TODO · ca0b64e5
      Markus Armbruster authored
      
      Certain features make sense only with certain address families.  For
      instance, passing file descriptors requires AF_UNIX.  Testing
      SocketAddress's saddr->type == SOCKET_ADDRESS_KIND_UNIX is obvious,
      but problematic: it can't recognize AF_UNIX when type ==
      SOCKET_ADDRESS_KIND_FD.
      
      Mark such tests of saddr->type TODO.  We may want to check the address
      family with getsockname() there.
      
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Gerd Hoffmann <kraxel@redhat.com>
      Cc: Daniel P. Berrange <berrange@redhat.com>
      Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: default avatarMax Reitz <mreitz@redhat.com>
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Message-id: 1490895797-29094-2-git-send-email-armbru@redhat.com
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      ca0b64e5
    • Denis V. Lunev's avatar
      block: add missed aio_context_acquire into release_drive · 9588c589
      Denis V. Lunev authored
      
      Recently we expirience hang with iothreads enabled with the following
      call trace:
      Thread 1 (Thread 0x7fa95efebc80 (LWP 177117)):
      0  ppoll () from /lib64/libc.so.6
      2  qemu_poll_ns () at qemu-timer.c:313
      3  aio_poll () at aio-posix.c:457
      4  bdrv_flush () at block/io.c:2641
      5  bdrv_close () at block.c:2143
      6  bdrv_delete () at block.c:2352
      7  bdrv_unref () at block.c:3429
      8  blk_remove_bs () at block/block-backend.c:427
      9  blk_delete () at block/block-backend.c:178
      10 blk_unref () at block/block-backend.c:226
      11 object_property_del_all () at qom/object.c:399
      12 object_finalize () at qom/object.c:461
      13 object_unref () at qom/object.c:898
      14 object_property_del_child () at qom/object.c:422
      15 qmp_marshal_device_del () at qmp-marshal.c:1145
      16 handle_qmp_command () at /usr/src/debug/qemu-2.6.0/monitor.c:3929
      
      Technically bdrv_flush() stucks in
          while (rwco.ret == NOT_DONE) {
              aio_poll(aio_context, true);
          }
      but rwco.ret is equal to 0 thus we have missed wakeup. Code investigation
      reveals that we do not have performed aio_context_acquire() on this call
      stack.
      
      This patch adds missed lock.
      
      Signed-off-by: default avatarDenis V. Lunev <den@openvz.org>
      CC: Kevin Wolf <kwolf@redhat.com>
      CC: Max Reitz <mreitz@redhat.com>
      CC: Eric Blake <eblake@redhat.com>
      CC: Markus Armbruster <armbru@redhat.com>
      Message-id: 1490717566-25516-1-git-send-email-den@openvz.org
      Reviewed-by: default avatarFam Zheng <famz@redhat.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      9588c589
    • Gerd Hoffmann's avatar
      usb-host: switch to LIBUSB_API_VERSION · 102a3d84
      Gerd Hoffmann authored
      
      libusbx doesn't exist any more, the fork got merged back to libusb.  So
      stop using LIBUSBX_API_VERSION and use LIBUSB_API_VERSION instead.  For
      backward compatibility alias LIBUSB_API_VERSION to LIBUSBX_API_VERSION
      in case we figure LIBUSB_API_VERSION isn't defined.
      
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      Reviewed-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Tested-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Message-id: 20170403105238.23262-1-kraxel@redhat.com
      102a3d84
    • Peter Maydell's avatar
      disas/cris.c: Avoid unintentional sign extension · 230f4c6b
      Peter Maydell authored
      
      Commit 001ebaca fixed some unintended sign extension issues
      spotted by Coverity (CID 1005402, 1005403), but didn't catch
      all of them. Fix the rest, so we behave consistently whether
      'long' is 32 bit or 64 bit.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarEdgar E. Iglesias <edgar.iglesias@xilinx.com>
      Message-id: 1490970671-20560-1-git-send-email-peter.maydell@linaro.org
      230f4c6b
    • Peter Maydell's avatar
      configure: Mark SPARC as supported · 6499fd15
      Peter Maydell authored
      
      Thanks to John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
      and the Debian Project, we now have access to a SPARC Linux
      system we can use for build testing. Move SPARC back into
      the "supported" list.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1490698718-23762-1-git-send-email-peter.maydell@linaro.org
      6499fd15
    • Peter Maydell's avatar
      tcg/sparc: Zero extend address argument to ld/st helpers · 5c32be5b
      Peter Maydell authored
      
      The C store helper functions take the address argument as a
      target_ulong type; if this is 32 bit but the host is 64 bit
      then the SPARC calling convention requires that the caller
      must zero extend the value. We weren't doing this, which
      meant we could pass values to the caller with high bits set
      and QEMU would crash if it was compiled with optimizations.
      In particular, the i386 BIOS would not start.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1490871151-29029-3-git-send-email-peter.maydell@linaro.org
      Reviewed-by: default avatarRichard Henderson <rth@twiddle.net>
      5c32be5b
    • Peter Maydell's avatar
      tcg/sparc: Zero extend data argument to store helpers · 709a340d
      Peter Maydell authored
      
      The C store helper functions take the data argument as a uint8_t,
      uint16_t, etc depending on the store size. The SPARC calling
      convention requires that data types smaller than the register
      size must be extended by the caller. We weren't doing this,
      which meant that if QEMU was compiled with optimizations enabled
      we could end up storing incorrect values to guest memory.
      (In particular the i386 guest BIOS would crash on startup.)
      
      Add code to the trampolines that call the store helpers to
      do the zero extension as required.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Message-id: 1490871151-29029-2-git-send-email-peter.maydell@linaro.org
      Reviewed-by: default avatarRichard Henderson <rth@twiddle.net>
      709a340d
    • Paolo Bonzini's avatar
      exec: revert MemoryRegionCache · 90c4fe5f
      Paolo Bonzini authored
      
      MemoryRegionCache did not know about virtio support for IOMMUs (because the
      two features were developed at the same time).  Revert MemoryRegionCache
      to "normal" address_space_* operations for 2.9, as it is simpler than
      undoing the virtio patches.
      
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      90c4fe5f
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/kraxel/tags/pull-fixes-20170403-1' into staging · f9e46d37
      Peter Maydell authored
      
      bugfixes: xhci, input-linux and vnc
      
      # gpg: Signature made Mon 03 Apr 2017 11:25:29 BST
      # gpg:                using RSA key 0x4CB6D8EED3E87138
      # gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>"
      # gpg:                 aka "Gerd Hoffmann <gerd@kraxel.org>"
      # gpg:                 aka "Gerd Hoffmann (private) <kraxel@gmail.com>"
      # Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138
      
      * remotes/kraxel/tags/pull-fixes-20170403-1:
        vnc: allow to connect with add_client when -vnc none
        Fix input-linux reading from device
        xhci: flush dequeue pointer to endpoint context
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      f9e46d37
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-2.9-20170403' into staging · 9eb5adae
      Peter Maydell authored
      
      ppc patch queue 2017-04-03
      
      A single bugfix in this pull request, for an ugly assert() failure, if
      the user ignores the information in query-hotpluggable-cpus and tries
      to hot add CPUs to pseries with bad parameters.
      
      # gpg: Signature made Mon 03 Apr 2017 11:06:58 BST
      # 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.9-20170403:
        pseries: Enforce homogeneous threads-per-core
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      9eb5adae
    • Marc-André Lureau's avatar
      vnc: allow to connect with add_client when -vnc none · fa03cb7f
      Marc-André Lureau authored
      Do not skip VNC initialization, in particular of auth method when vnc is
      configured without sockets, since we should still allow connections
      through QMP add_client.
      
      Fixes:
      https://bugzilla.redhat.com/show_bug.cgi?id=1434551
      
      
      
      Signed-off-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-id: 20170328160646.21250-1-marcandre.lureau@redhat.com
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      fa03cb7f
Loading