1. 27 11月, 2018 15 次提交
    • M
      vhost-user-bridge: fix recvmsg iovlen · 8f1d22d9
      Marc-André Lureau 提交于
      After iov_discard_front(), the iov may be smaller than its initial
      size. Fixes the heap-buffer-overflow spotted by ASAN:
      
      ==9036==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6060000001e0 at pc 0x7fe632eca3f0 bp 0x7ffddc4a05a0 sp 0x7ffddc49fd48
      WRITE of size 32 at 0x6060000001e0 thread T0
          #0 0x7fe632eca3ef  (/lib64/libasan.so.5+0x773ef)
          #1 0x7fe632ecad23 in __interceptor_recvmsg (/lib64/libasan.so.5+0x77d23)
          #2 0x561e7491936b in vubr_backend_recv_cb /home/elmarco/src/qemu/tests/vhost-user-bridge.c:333
          #3 0x561e74917711 in dispatcher_wait /home/elmarco/src/qemu/tests/vhost-user-bridge.c:160
          #4 0x561e7491c3b5 in vubr_run /home/elmarco/src/qemu/tests/vhost-user-bridge.c:725
          #5 0x561e7491c85c in main /home/elmarco/src/qemu/tests/vhost-user-bridge.c:806
          #6 0x7fe631a6c412 in __libc_start_main (/lib64/libc.so.6+0x24412)
          #7 0x561e7491667d in _start (/home/elmarco/src/qemu/build/tests/vhost-user-bridge+0x3967d)
      
      0x6060000001e0 is located 0 bytes to the right of 64-byte region [0x6060000001a0,0x6060000001e0)
      allocated by thread T0 here:
          #0 0x7fe632f42848 in __interceptor_malloc (/lib64/libasan.so.5+0xef848)
          #1 0x561e7493acd8 in virtqueue_alloc_element /home/elmarco/src/qemu/contrib/libvhost-user/libvhost-user.c:1848
          #2 0x561e7493c2a8 in vu_queue_pop /home/elmarco/src/qemu/contrib/libvhost-user/libvhost-user.c:1954
          #3 0x561e749189bf in vubr_backend_recv_cb /home/elmarco/src/qemu/tests/vhost-user-bridge.c:297
          #4 0x561e74917711 in dispatcher_wait /home/elmarco/src/qemu/tests/vhost-user-bridge.c:160
          #5 0x561e7491c3b5 in vubr_run /home/elmarco/src/qemu/tests/vhost-user-bridge.c:725
          #6 0x561e7491c85c in main /home/elmarco/src/qemu/tests/vhost-user-bridge.c:806
          #7 0x7fe631a6c412 in __libc_start_main (/lib64/libc.so.6+0x24412)
      
      SUMMARY: AddressSanitizer: heap-buffer-overflow (/lib64/libasan.so.5+0x773ef)
      Shadow bytes around the buggy address:
        0x0c0c7fff7fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        0x0c0c7fff7ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        0x0c0c7fff8000: fa fa fa fa 00 00 00 00 00 00 05 fa fa fa fa fa
        0x0c0c7fff8010: 00 00 00 00 00 00 00 00 fa fa fa fa fd fd fd fd
        0x0c0c7fff8020: fd fd fd fd fa fa fa fa fd fd fd fd fd fd fd fd
      =>0x0c0c7fff8030: fa fa fa fa 00 00 00 00 00 00 00 00[fa]fa fa fa
        0x0c0c7fff8040: fd fd fd fd fd fd fd fd fa fa fa fa fd fd fd fd
        0x0c0c7fff8050: fd fd fd fd fa fa fa fa fd fd fd fd fd fd fd fd
        0x0c0c7fff8060: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
        0x0c0c7fff8070: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
        0x0c0c7fff8080: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
      Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-Id: <20181109173028.3372-1-marcandre.lureau@redhat.com>
      Signed-off-by: NPaolo BOnzini <pbonzini@redhat.com>
      8f1d22d9
    • L
      vl: Improve error message when we can't load fw_cfg from file · 353c7d58
      Li Qiang 提交于
      parse_fw_cfg() reports "can't load" without further details.  Get
      the details from g_file_get_contents(), and include them in the
      error message.
      Signed-off-by: NLi Qiang <liq3ea@gmail.com>
      Message-Id: <1541051971-28584-1-git-send-email-liq3ea@gmail.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      353c7d58
    • M
      vmstate: constify VMStateField · 03fee66f
      Marc-André Lureau 提交于
      Because they are supposed to remain const.
      Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-Id: <20181114132931.22624-1-marcandre.lureau@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      03fee66f
    • P
      migration: savevm: consult migration blockers · 5aaac467
      Paolo Bonzini 提交于
      There is really no difference between live migration and savevm, except
      that savevm does not require bdrv_invalidate_cache to be implemented
      by all disks.  However, it is unlikely that savevm is used with anything
      except qcow2 disks, so the penalty is small and worth the improvement
      in catching bad usage of savevm.
      
      Only one place was taking care of savevm when adding a migration blocker,
      and it can be removed.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      5aaac467
    • G
      lsi: Reselection needed to remove pending commands from queue · 56333e69
      George Kennedy 提交于
      Under heavy IO (e.g. fio) the queue is not checked frequently enough for
      pending commands. As a result some pending commands are timed out by the
      linux sym53c8xx driver, which sends SCSI Abort messages for the timed out
      commands. The SCSI Abort messages result in linux errors, which show up
      on the console and in /var/log/messages.
      
      e.g.
      sd 0:0:3:0: [sdd] tag#33 ABORT operation started
      scsi target0:0:3: control msgout:
      80 20 47 d
      sd 0:0:3:0: ABORT operation complete.
      scsi target0:0:4: message d sent on bad reselection
      
      Now following a WAIT DISCONNECT Script instruction, and if there is no
      current command, check for a pending command on the queue and if one
      exists call lsi_reselect().
      Signed-off-by: NGeorge Kennedy <george.kennedy@oracle.com>
      Message-Id: <1541776692-12271-1-git-send-email-george.kennedy@oracle.com>
      [For safety, add a s->current check in lsi_update_irq - Paolo]
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      56333e69
    • P
      cpus: run work items for all vCPUs if single-threaded · a8efa606
      Paolo Bonzini 提交于
      This avoids the following I/O thread deadlock:
      
      1) the I/O thread calls run_on_cpu for CPU 3 from a timer.  single_tcg_halt_cond
      is signaled
      
      2) CPU 1 is running and exits.  It finds no work item and enters CPU 2
      
      3) because the I/O thread is stuck in run_on_cpu, the round-robin kick
      timer never triggers, and CPU 3 never runs the work item
      
      4) run_on_cpu never completes
      Reviewed-by: NEmilio G. Cota <cota@braap.org>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      a8efa606
    • P
      target/i386: kvm: add VMX migration blocker · d98f2607
      Paolo Bonzini 提交于
      Nested VMX does not support live migration yet.  Add a blocker
      until that is worked out.
      
      Nested SVM only does not support it, but unfortunately it is
      enabled by default for -cpu host so we cannot really disable it.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      d98f2607
    • P
      Merge remote-tracking branch 'remotes/kraxel/tags/fixes-31-20181127-pull-request' into staging · 4822f1ee
      Peter Maydell 提交于
      various bugfixes for 3.1: fmops, ps2, cirrus, hda, usb-host, qapi
      
      # gpg: Signature made Tue 27 Nov 2018 06:49:13 GMT
      # gpg:                using RSA key 4CB6D8EED3E87138
      # 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/fixes-31-20181127-pull-request:
        qapi: add query-display-options command
        usb-host: set ifs.detached as true if kernel driver is not active
        audio/hda: fix guest triggerable assert
        cirrus_vga/migration: update the bank offset before use
        ps2kbd: default to scan enabled after reset
        fmops: fix off-by-one in AR_TABLE and DR_TABLE array size
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      4822f1ee
    • P
      Merge remote-tracking branch 'remotes/ehabkost/tags/x86-for-3.1-pull-request' into staging · d5d31c9a
      Peter Maydell 提交于
      x86 fixes for -rc3
      
      * Fix SynIC crash
      * Fix x86 crash on MSR code on AMD hosts
      
      # gpg: Signature made Mon 26 Nov 2018 20:58:34 GMT
      # gpg:                using RSA key 2807936F984DC5A6
      # gpg: Good signature from "Eduardo Habkost <ehabkost@redhat.com>"
      # Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF  D1AA 2807 936F 984D C5A6
      
      * remotes/ehabkost/tags/x86-for-3.1-pull-request:
        hw/hyperv: fix NULL dereference with pure-kvm SynIC
        kvm: Use KVM_GET_MSR_INDEX_LIST for MSR_IA32_ARCH_CAPABILITIES support
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      d5d31c9a
    • G
      qapi: add query-display-options command · e1ca8f7e
      Gerd Hoffmann 提交于
      Add query-display-options command, which allows querying the qemu
      display configuration.  This isn't particularly useful, except it
      exposes QAPI type DisplayOptions in query-qmp-schema, so that libvirt
      can discover recently added -display parameter rendernode (commit
      d4dc4ab1).  Works around lack of sufficiently powerful command line
      introspection.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Tested-by: NEric Blake <eblake@redhat.com>
      Tested-by: NErik Skultety <eskultet@redhat.com>
      Message-id: 20181122071613.2889-1-kraxel@redhat.com
      
      [ kraxel: reworded commit message as suggested by armbru ]
      e1ca8f7e
    • L
      usb-host: set ifs.detached as true if kernel driver is not active · 933d2d4b
      linzhecheng 提交于
      If no kernel driver is active, we can already claim and perform I/O on
      it without detaching it.
      Signed-off-by: Nlinzhecheng <linzhecheng@huawei.com>
      Message-id: 20181120083419.17716-1-linzhecheng@huawei.com
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      933d2d4b
    • G
      audio/hda: fix guest triggerable assert · 7ec91067
      Gerd Hoffmann 提交于
      Guest writes to a readonly register trigger the assert in
      intel_hda_reg_write().  Add a check and just ignore them.
      
      Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1628433Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Reviewed-by: NDr. David Alan Gilbert <dgilbert@redhat.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Message-id: 20181123063957.9515-1-kraxel@redhat.com
      7ec91067
    • W
      cirrus_vga/migration: update the bank offset before use · b7ee9e49
      Wang Xin 提交于
      The cirrus bank0/1 offset should be updated before we update the vram's alias
      offset.
      Signed-off-by: NWang Xin <wangxinxin.wang@huawei.com>
      Message-id: 20181123064646.23036-1-linzhecheng@huawei.com
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      b7ee9e49
    • H
      ps2kbd: default to scan enabled after reset · d2e550a8
      Hervé Poussineau 提交于
      A check for scan_enabled has been added to ps2_keyboard_event in commit
      143c04c7 to prevent stream corruption.
      This works well as long as operating system is resetting keyboard, or enabling it.
      
      This fixes IBM 40p firmware, which doesn't bother sending KBD_CMD_RESET,
      KBD_CMD_ENABLE or KBD_CMD_RESET_ENABLE before trying to use the keyboard.
      Signed-off-by: NHervé Poussineau <hpoussin@reactos.org>
      Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Message-id: 20181021190721.2148-1-hpoussin@reactos.org
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      d2e550a8
    • R
      hw/hyperv: fix NULL dereference with pure-kvm SynIC · 30a759b6
      Roman Kagan 提交于
      When started in compat configuration of SynIC, e.g.
      
      qemu-system-x86_64 -machine pc-i440fx-2.10,accel=kvm \
       -cpu host,-vmx,hv-relaxed,hv_spinlocks=0x1fff,hv-vpindex,hv-synic
      
      or explicitly
      
      qemu-system-x86_64 -enable-kvm -cpu host,hv-synic,x-hv-synic-kvm-only=on
      
      QEMU crashes in hyperv_synic_reset() trying to access the non-present
      qobject for SynIC.
      
      Add the missing check for NULL.
      Reported-by: NVitaly Kuznetsov <vkuznets@redhat.com>
      Reported-by: NIgor Mammedov <imammedo@redhat.com>
      Fixes: 9b4cf107
      Fixes: 4a93722fSigned-off-by: NRoman Kagan <rkagan@virtuozzo.com>
      Message-Id: <20181126152836.25379-1-rkagan@virtuozzo.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Tested-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      30a759b6
  2. 26 11月, 2018 8 次提交
  3. 23 11月, 2018 8 次提交
    • G
      9p: fix QEMU crash when renaming files · 1d203986
      Greg Kurz 提交于
      When using the 9P2000.u version of the protocol, the following shell
      command line in the guest can cause QEMU to crash:
      
          while true; do rm -rf aa; mkdir -p a/b & touch a/b/c & mv a aa; done
      
      With 9P2000.u, file renaming is handled by the WSTAT command. The
      v9fs_wstat() function calls v9fs_complete_rename(), which calls
      v9fs_fix_path() for every fid whose path is affected by the change.
      The involved calls to v9fs_path_copy() may race with any other access
      to the fid path performed by some worker thread, causing a crash like
      shown below:
      
      Thread 12 "qemu-system-x86" received signal SIGSEGV, Segmentation fault.
      0x0000555555a25da2 in local_open_nofollow (fs_ctx=0x555557d958b8, path=0x0,
       flags=65536, mode=0) at hw/9pfs/9p-local.c:59
      59          while (*path && fd != -1) {
      (gdb) bt
      #0  0x0000555555a25da2 in local_open_nofollow (fs_ctx=0x555557d958b8,
       path=0x0, flags=65536, mode=0) at hw/9pfs/9p-local.c:59
      #1  0x0000555555a25e0c in local_opendir_nofollow (fs_ctx=0x555557d958b8,
       path=0x0) at hw/9pfs/9p-local.c:92
      #2  0x0000555555a261b8 in local_lstat (fs_ctx=0x555557d958b8,
       fs_path=0x555556b56858, stbuf=0x7fff84830ef0) at hw/9pfs/9p-local.c:185
      #3  0x0000555555a2b367 in v9fs_co_lstat (pdu=0x555557d97498,
       path=0x555556b56858, stbuf=0x7fff84830ef0) at hw/9pfs/cofile.c:53
      #4  0x0000555555a1e9e2 in v9fs_stat (opaque=0x555557d97498)
       at hw/9pfs/9p.c:1083
      #5  0x0000555555e060a2 in coroutine_trampoline (i0=-669165424, i1=32767)
       at util/coroutine-ucontext.c:116
      #6  0x00007fffef4f5600 in __start_context () at /lib64/libc.so.6
      #7  0x0000000000000000 in  ()
      (gdb)
      
      The fix is to take the path write lock when calling v9fs_complete_rename(),
      like in v9fs_rename().
      
      Impact:  DoS triggered by unprivileged guest users.
      
      Fixes: CVE-2018-19489
      Cc: P J P <ppandit@redhat.com>
      Reported-by: Nzhibin hu <noirfate@gmail.com>
      Reviewed-by: NPrasad J Pandit <pjp@fedoraproject.org>
      Signed-off-by: NGreg Kurz <groug@kaod.org>
      1d203986
    • P
      Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging · 5298f4d6
      Peter Maydell 提交于
      Block layer patches:
      
      - block: Fix update of BDRV_O_AUTO_RDONLY in update_flags_from_options()
      - block: Fix option inheritance after stream/commit job graph changes
      - qemu-img: Fix memory leak and typo in error message
      - nvme: Fixes for lockups and crashes
      - scsi-disk: Fix crash if underlying host file or disk returns error
      - Several qemu-iotests fixes and improvements
      
      # gpg: Signature made Thu 22 Nov 2018 18:38:30 GMT
      # gpg:                using RSA key 7F09B272C88F2FD6
      # 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:
        block: Update BlockDriverState.inherits_from on bdrv_drop_intermediate()
        block: Update BlockDriverState.inherits_from on bdrv_set_backing_hd()
        iotests: Enhance 223 to cover multiple bitmap granularities
        nvme: fix bug with PCI IRQ pins on teardown
        nvme: fix CMB endianness confusion
        Revert "nvme: fix oob access issue(CVE-2018-16847)"
        nvme: fix out-of-bounds access to the CMB
        nvme: call blk_drain in NVMe reset code to avoid lockups
        iotests: fix nbd test 233 to work correctly with raw images
        block: Fix update of BDRV_O_AUTO_RDONLY in update_flags_from_options()
        scsi-disk: Fix crash if underlying host file or disk returns error
        qemu-img: Fix leak
        qemu-img: Fix typo
        iotests: Skip 233 if certtool not installed
        iotests: Replace assertEquals() with assertEqual()
        iotests: Replace time.clock() with Timeout
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      5298f4d6
    • M
      895e4897
    • A
      block: Update BlockDriverState.inherits_from on bdrv_drop_intermediate() · 6bd858b3
      Alberto Garcia 提交于
      The previous patch fixed the inherits_from pointer after block-stream,
      and this one does the same for block-commit.
      
      When block-commit finishes and the 'top' node is not the topmost one
      from the backing chain then all nodes above 'base' up to and including
      'top' are removed from the chain.
      
      The bdrv_drop_intermediate() call converts a chain like this one:
      
          base <- intermediate <- top <- active
      
      into this one:
      
          base <- active
      
      In a simple scenario each backing file from the first chain has the
      inherits_from attribute pointing to its parent. This means that
      reopening 'active' will recursively reopen all its children, whose
      options can be changed in the process.
      
      However after the 'block-commit' call base.inherits_from is NULL and
      the chain is broken, so 'base' does not inherit from 'active' and will
      not be reopened automatically:
      
         $ qemu-img create -f qcow2 hd0.qcow2 1M
         $ qemu-img create -f qcow2 -b hd0.qcow2 hd1.qcow2
         $ qemu-img create -f qcow2 -b hd1.qcow2 hd2.qcow2
         $ $QEMU -drive if=none,file=hd2.qcow2
      
         { 'execute': 'block-commit',
           'arguments': {
             'device': 'none0',
             'top': 'hd1.qcow2' } }
      
         { 'execute': 'human-monitor-command',
           'arguments': {
              'command-line':
                'qemu-io none0 "reopen -o backing.l2-cache-size=2M"' } }
      
         { "return": "Cannot change the option 'backing.l2-cache-size'\r\n"}
      
      This patch updates base.inherits_from in this scenario, and adds a
      test case.
      Signed-off-by: NAlberto Garcia <berto@igalia.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      6bd858b3
    • A
      block: Update BlockDriverState.inherits_from on bdrv_set_backing_hd() · 0065c455
      Alberto Garcia 提交于
      When a BlockDriverState's child is opened (be it a backing file, the
      protocol layer, or any other) inherits_from is set to point to the
      parent node. Children opened separately and then attached to a parent
      don't have this pointer set.
      
      bdrv_reopen_queue_child() uses this to determine whether a node's
      children must also be reopened inheriting the options from the parent
      or not. If inherits_from points to the parent then the child is
      reopened and its options can be changed, like in this example:
      
         $ qemu-img create -f qcow2 hd0.qcow2 1M
         $ qemu-img create -f qcow2 hd1.qcow2 1M
         $ $QEMU -drive if=none,node-name=hd0,file=hd0.qcow2,\
                        backing.driver=qcow2,backing.file.filename=hd1.qcow2
         (qemu) qemu-io hd0 "reopen -o backing.l2-cache-size=2M"
      
      If the child does not inherit from the parent then it does not get
      reopened and its options cannot be changed:
      
         $ $QEMU -drive if=none,node-name=hd1,file=hd1.qcow2
                 -drive if=none,node-name=hd0,file=hd0.qcow2,backing=hd1
         (qemu) qemu-io hd0 "reopen -o backing.l2-cache-size=2M"
         Cannot change the option 'backing.l2-cache-size'
      
      If a disk image has a chain of backing files then all of them are also
      connected through their inherits_from pointers (i.e. it's possible to
      walk the chain in reverse order from base to top).
      
      However this is broken if the intermediate nodes are removed using
      e.g. block-stream because the inherits_from pointer from the base node
      becomes NULL:
      
         $ qemu-img create -f qcow2 hd0.qcow2 1M
         $ qemu-img create -f qcow2 -b hd0.qcow2 hd1.qcow2
         $ qemu-img create -f qcow2 -b hd1.qcow2 hd2.qcow2
         $ $QEMU -drive if=none,file=hd2.qcow2
         (qemu) qemu-io none0 "reopen -o backing.l2-cache-size=2M"
         (qemu) block_stream none0 0 hd0.qcow2
         (qemu) qemu-io none0 "reopen -o backing.l2-cache-size=2M"
         Cannot change the option 'backing.l2-cache-size'
      
      This patch updates the inherits_from pointer if the intermediate nodes
      of a backing chain are removed using bdrv_set_backing_hd(), and adds a
      test case for this scenario.
      Signed-off-by: NAlberto Garcia <berto@igalia.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      0065c455
    • E
      iotests: Enhance 223 to cover multiple bitmap granularities · a237dea3
      Eric Blake 提交于
      Testing granularity at the same size as the cluster isn't quite
      as fun as what happens when it is larger or smaller.  This
      enhancement also shows that qemu's nbd server can serve the
      same disk over multiple exports simultaneously.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Tested-by: NJohn Snow <jsnow@redhat.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      a237dea3
    • L
      nvme: fix bug with PCI IRQ pins on teardown · ad3a7e45
      Logan Gunthorpe 提交于
      When the submission and completion queues are being torn down
      the IRQ will be asserted for the completion queue when the
      submsission queue is deleted. Then when the completion queue
      is deleted it stays asserted. Thus, on systems that do
      not use MSI, no further interrupts can be triggered on the host.
      
      Linux sees this as a long delay when unbinding the nvme device.
      Eventually the interrupt timeout occurs and it continues.
      
      To fix this we ensure we deassert the IRQ for a CQ when it is
      deleted.
      Signed-off-by: NLogan Gunthorpe <logang@deltatee.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      ad3a7e45
    • P
      nvme: fix CMB endianness confusion · 71a86dde
      Paolo Bonzini 提交于
      The CMB is marked as DEVICE_LITTLE_ENDIAN, so the data must be
      read/written as if it was little-endian output (in the case of
      big endian, we get two swaps, one in the memory core and one
      in nvme.c).
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Tested-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      71a86dde
  4. 22 11月, 2018 8 次提交
  5. 21 11月, 2018 1 次提交