1. 31 1月, 2019 1 次提交
  2. 27 11月, 2018 1 次提交
  3. 23 11月, 2018 2 次提交
  4. 22 11月, 2018 3 次提交
  5. 19 11月, 2018 1 次提交
  6. 13 11月, 2018 2 次提交
  7. 15 8月, 2018 1 次提交
  8. 10 7月, 2018 1 次提交
  9. 02 7月, 2018 1 次提交
  10. 29 6月, 2018 1 次提交
  11. 15 6月, 2018 1 次提交
  12. 01 6月, 2018 1 次提交
  13. 09 2月, 2018 1 次提交
  14. 23 1月, 2018 1 次提交
  15. 22 12月, 2017 1 次提交
  16. 19 12月, 2017 2 次提交
  17. 15 10月, 2017 1 次提交
  18. 29 8月, 2017 1 次提交
    • D
      nvme: Fix get/set number of queues feature, again · cdd34637
      Dan Aloni 提交于
      The number of queues that should be return by the admin command should:
      
        1) Only mention the number of non-admin queues.
        2) It is zero-based, meaning that '0 == one non-admin queue',
           '1 == two non-admin queues', and so forth.
      
      Because our `num_queues` means the number of queues _plus_ the admin
      queue, then the right calculation for the number returned from the admin
      command is `num_queues - 2`, combining the two requirements mentioned.
      
      The issue was discovered by reducing num_queues from 64 to 8 and running
      a Linux VM with an SMP parameter larger than that (e.g. 22). It tries to
      utilize all queues, and therefore fails with an invalid queue number
      when trying to queue I/Os on the last queue.
      Signed-off-by: NDan Aloni <dan@kernelim.com>
      CC: Alex Friedman <alex@e8storage.com>
      CC: Keith Busch <keith.busch@intel.com>
      CC: Stefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NKeith Busch <keith.busch@intel.com>
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      cdd34637
  19. 26 6月, 2017 1 次提交
  20. 26 5月, 2017 1 次提交
  21. 11 5月, 2017 1 次提交
  22. 01 3月, 2017 1 次提交
  23. 01 2月, 2017 1 次提交
    • C
      pci: Convert msix_init() to Error and fix callers · ee640c62
      Cao jin 提交于
      msix_init() reports errors with error_report(), which is wrong when
      it's used in realize().  The same issue was fixed for msi_init() in
      commit 1108b2f8. In order to make the API change as small as possible,
      leave the return value check to later patch.
      
      For some devices(like e1000e, vmxnet3, nvme) who won't fail because of
      msix_init's failure, suppress the error report by passing NULL error
      object.
      
      Bonus: add comment for msix_init.
      
      CC: Jiri Pirko <jiri@resnulli.us>
      CC: Gerd Hoffmann <kraxel@redhat.com>
      CC: Dmitry Fleytman <dmitry@daynix.com>
      CC: Jason Wang <jasowang@redhat.com>
      CC: Michael S. Tsirkin <mst@redhat.com>
      CC: Hannes Reinecke <hare@suse.de>
      CC: Paolo Bonzini <pbonzini@redhat.com>
      CC: Alex Williamson <alex.williamson@redhat.com>
      CC: Markus Armbruster <armbru@redhat.com>
      CC: Marcel Apfelbaum <marcel@redhat.com>
      Signed-off-by: NCao jin <caoj.fnst@cn.fujitsu.com>
      Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      ee640c62
  24. 28 10月, 2016 2 次提交
  25. 05 8月, 2016 2 次提交
  26. 13 7月, 2016 1 次提交
  27. 12 7月, 2016 1 次提交
  28. 26 5月, 2016 1 次提交
  29. 23 3月, 2016 1 次提交
    • M
      include/qemu/osdep.h: Don't include qapi/error.h · da34e65c
      Markus Armbruster 提交于
      Commit 57cb38b3 included qapi/error.h into qemu/osdep.h to get the
      Error typedef.  Since then, we've moved to include qemu/osdep.h
      everywhere.  Its file comment explains: "To avoid getting into
      possible circular include dependencies, this file should not include
      any other QEMU headers, with the exceptions of config-host.h,
      compiler.h, os-posix.h and os-win32.h, all of which are doing a
      similar job to this file and are under similar constraints."
      qapi/error.h doesn't do a similar job, and it doesn't adhere to
      similar constraints: it includes qapi-types.h.  That's in excess of
      100KiB of crap most .c files don't actually need.
      
      Add the typedef to qemu/typedefs.h, and include that instead of
      qapi/error.h.  Include qapi/error.h in .c files that need it and don't
      get it now.  Include qapi-types.h in qom/object.h for uint16List.
      
      Update scripts/clean-includes accordingly.  Update it further to match
      reality: replace config.h by config-target.h, add sysemu/os-posix.h,
      sysemu/os-win32.h.  Update the list of includes in the qemu/osdep.h
      comment quoted above similarly.
      
      This reduces the number of objects depending on qapi/error.h from "all
      of them" to less than a third.  Unfortunately, the number depending on
      qapi-types.h shrinks only a little.  More work is needed for that one.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      [Fix compilation without the spice devel packages. - Paolo]
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      da34e65c
  30. 02 2月, 2016 1 次提交
    • L
      nvme: generate OpenFirmware device path in the "bootorder" fw_cfg file · a907ec52
      Laszlo Ersek 提交于
      Background on QEMU boot indices
      -------------------------------
      
      Normally, the "bootindex" property is configured for bootable devices
      with:
      
        DEVICE_instance_init()
          device_add_bootindex_property(..., "bootindex", ...)
            object_property_add(..., device_get_bootindex,
                                device_set_bootindex, ...)
      
      and when the bootindex is set on the QEMU command line, with
      
        -device DEVICE,...,bootindex=N
      
      the setter that was configured above is invoked:
      
        device_set_bootindex()
          /* parse boot index */
          visit_type_int32()
      
          /* verify unicity */
          check_boot_index()
      
          /* store parsed boot index */
          ...
      
          /* insert device path to boot order */
          add_boot_device_path()
      
      In the last step, add_boot_device_path() ensures that an OpenFirmware
      device path will show up in the "bootorder" fw_cfg file, at a position
      corresponding to the device's boot index. Thus guest firmware (SeaBIOS and
      OVMF) can try to boot off the device with the right priority.
      
      NVMe boot index
      ---------------
      
      In QEMU commit 33739c71,
      
        nvma: ide: add bootindex to qom property
      
      the following generic setters / getters:
      - device_set_bootindex()
      - device_get_bootindex()
      
      were open-coded for NVMe, under the names
      - nvme_set_bootindex()
      - nvme_get_bootindex()
      
      Plus nvme_instance_init() was added to configure the "bootindex" property
      manually, designating the open-coded getter & setter, rather than calling
      device_add_bootindex_property().
      
      Crucially, nvme_set_bootindex() avoided the final add_boot_device_path()
      call. This fact is spelled out in the message of commit 33739c71, and
      it was presumably the entire reason for all of the code duplication.
      
      Now, Vladislav filed an RFE for OVMF
      <https://github.com/tianocore/edk2/issues/48>; OVMF should boot off NVMe
      devices. It is simple to build edk2's existent NvmExpressDxe driver into
      OVMF, but the boot order matching logic in OVMF can only handle NVMe if
      the "bootorder" fw_cfg file includes such devices.
      
      Therefore this patch converts the NVMe device model to
      device_set_bootindex() all the way.
      
      Device paths
      ------------
      
      device_set_bootindex() accepts an optional parameter called "suffix". When
      present, it is expected to take the form of an OpenFirmware device path
      node, and it gets appended as last node to the otherwise auto-generated
      OFW path.
      
      For NVMe, the auto-generated part is
      
        /pci@i0cf8/pci8086,5845@6[,1]
             ^     ^            ^  ^
             |     |            PCI slot and (present when nonzero)
             |     |            function of the NVMe controller, both hex
             |     "driver name" component, built from PCI vendor & device IDs
             PCI root at system bus port, PIO
      
      to which here we append the suffix
      
        /namespace@1,0
                   ^ ^
                   | big endian (MSB at lowest address) numeric interpretation
                   | of the 64-bit IEEE Extended Unique Identifier, aka EUI-64,
                   | hex
                   32-bit NVMe namespace identifier, aka NSID, hex
      
      resulting in the OFW device path
      
        /pci@i0cf8/pci8086,5845@6[,1]/namespace@1,0
      
      The reason for including the NSID and the EUI-64 is that an NVMe device
      can in theory produce several different namespaces (distinguished by
      NSID). Additionally, each of those may (optionally) have an EUI-64 value.
      
      For now, QEMU only provides namespace 1.
      
      Furthermore, QEMU doesn't even represent the EUI-64 as a standalone field;
      it is embedded (and left unused) inside the "NvmeIdNs.res30" array, at the
      last eight bytes. (Which is fine, since EUI-64 can be left zero-filled if
      unsupported by the device.)
      
      Based on the above, we set the "unit address" part of the last
      ("namespace") node to fixed "1,0".
      
      OVMF will then map the above OFW device path to the following UEFI device
      path fragment, for boot order processing:
      
        PciRoot(0x0)/Pci(0x6,0x1)/NVMe(0x1,00-00-00-00-00-00-00-00)
                ^        ^   ^    ^    ^   ^
                |        |   |    |    |   octets of the EUI-64 in address order
                |        |   |    |    NSID
                |        |   |    NVMe namespace messaging device path node
                |        PCI slot and function
                PCI root bridge
      
      Cc: Keith Busch <keith.busch@intel.com> (supporter:nvme)
      Cc: Kevin Wolf <kwolf@redhat.com> (supporter:Block layer core)
      Cc: qemu-block@nongnu.org (open list:nvme)
      Cc: Gonglei <arei.gonglei@huawei.com>
      Cc: Vladislav Vovchenko <vladislav.vovchenko@sk.com>
      Cc: Feng Tian <feng.tian@intel.com>
      Cc: Gerd Hoffmann <kraxel@redhat.com>
      Cc: Kevin O'Connor <kevin@koconnor.net>
      Signed-off-by: NLaszlo Ersek <lersek@redhat.com>
      Acked-by: NGonglei <arei.gonglei@huawei.com>
      Acked-by: NKeith Busch <keith.busch@intel.com>
      Tested-by: NVladislav Vovchenko <vladislav.vovchenko@sk.com>
      Message-id: 1453850483-27511-1-git-send-email-lersek@redhat.com
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      a907ec52
  31. 20 1月, 2016 1 次提交
  32. 12 11月, 2015 1 次提交
  33. 07 9月, 2015 1 次提交