1. 28 2月, 2016 1 次提交
    • G
      xics: report errors with the QEMU Error API · a005b3ef
      Greg Kurz 提交于
      Using the return value to report errors is error prone:
      - xics_alloc() returns -1 on error but spapr_vio_busdev_realize() errors
        on 0
      - xics_alloc_block() returns the unclear value of ics->offset - 1 on error
        but both rtas_ibm_change_msi() and spapr_phb_realize() error on 0
      
      This patch adds an errp argument to xics_alloc() and xics_alloc_block() to
      report errors. The return value of these functions is a valid IRQ number
      if errp is NULL. It is undefined otherwise.
      
      The corresponding error traces get promotted to error messages. Note that
      the "can't allocate IRQ" error message in spapr_vio_busdev_realize() also
      moves to xics_alloc(). Similar error message consolidation isn't really
      applicable to xics_alloc_block() because callers have extra context (device
      config address, MSI or MSIX).
      
      This fixes the issues mentioned above.
      
      Based on previous work from Brian W. Hart.
      Signed-off-by: NGreg Kurz <gkurz@linux.vnet.ibm.com>
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      a005b3ef
  2. 25 2月, 2016 1 次提交
  3. 09 2月, 2016 1 次提交
    • P
      hw: Add support for LSI SAS1068 (mptsas) device · e351b826
      Paolo Bonzini 提交于
      This adds the SAS1068 device, a SAS disk controller used in VMware that
      is oldish but widely supported and has decent performance.  Unlike
      megasas, it presents itself as a SAS controller and not as a RAID
      controller.  The device corresponds to the mptsas kernel driver in
      Linux.
      
      A few small things in the device setup are based on Don Slutz's old
      patch, but the device emulation was written from scratch based on Don's
      SeaBIOS patch and on the FreeBSD and Linux drivers.  It is 2400 lines
      shorter than Don's patch (and roughly the same size as MegaSAS---also
      because it doesn't support the similar SPI controller), implements SCSI
      task management functions (with asynchronous cancellation), supports
      big-endian hosts, has complete support for migration and follows the
      QEMU coding standards much more closely.
      
      To write the driver, I first split Don's patch in two parts, with
      the configuration bits in one file and the rest in a separate file.
      I first left mptconfig.c in place and rewrote the rest, then deleted
      mptconfig.c as well.  The configuration pages are still based mostly on
      VirtualBox's, though not exactly the same.  However, the implementation
      is completely different.  The contents of the pages themselves should
      not be copyrightable.
      Signed-off-by: NDon Slutz <Don@CloudSwitch.com>
      Message-Id: <1347382813-5662-1-git-send-email-Don@CloudSwitch.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      e351b826
  4. 20 1月, 2016 1 次提交
    • A
      vfio/pci: Lazy PBA emulation · 95239e16
      Alex Williamson 提交于
      The PCI spec recommends devices use additional alignment for MSI-X
      data structures to allow software to map them to separate processor
      pages.  One advantage of doing this is that we can emulate those data
      structures without a significant performance impact to the operation
      of the device.  Some devices fail to implement that suggestion and
      assigned device performance suffers.
      
      One such case of this is a Mellanox MT27500 series, ConnectX-3 VF,
      where the MSI-X vector table and PBA are aligned on separate 4K
      pages.  If PBA emulation is enabled, performance suffers.  It's not
      clear how much value we get from PBA emulation, but the solution here
      is to only lazily enable the emulated PBA when a masked MSI-X vector
      fires.  We then attempt to more aggresively disable the PBA memory
      region any time a vector is unmasked.  The expectation is then that
      a typical VM will run entirely with PBA emulation disabled, and only
      when used is that emulation re-enabled.
      Reported-by: NShyam Kaushik <shyam.kaushik@gmail.com>
      Tested-by: NShyam Kaushik <shyam.kaushik@gmail.com>
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      95239e16
  5. 07 1月, 2016 2 次提交
  6. 18 12月, 2015 8 次提交
    • D
      io: add QIOChannelCommand class · 195e14d0
      Daniel P. Berrange 提交于
      Add a QIOChannel subclass that is capable of performing I/O
      to/from a separate process, via a pair of pipes. The command
      can be used for unidirectional or bi-directional I/O.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      195e14d0
    • D
      io: add QIOChannelWebsock class · 2d1d0e70
      Daniel P. Berrange 提交于
      Add a QIOChannel subclass that can run the websocket protocol over
      the top of another QIOChannel instance. This initial implementation
      is only capable of acting as a websockets server. There is no support
      for acting as a websockets client yet.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      2d1d0e70
    • D
      io: add QIOChannelTLS class · ed8ee42c
      Daniel P. Berrange 提交于
      Add a QIOChannel subclass that can run the TLS protocol over
      the top of another QIOChannel instance. The object provides a
      simplified API to perform the handshake when starting the TLS
      session. The layering of TLS over the underlying channel does
      not have to be setup immediately. It is possible to take an
      existing QIOChannel that has done some handshake and then swap
      in the QIOChannelTLS layer. This allows for use with protocols
      which start TLS right away, and those which start plain text
      and then negotiate TLS.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      ed8ee42c
    • D
      io: add QIOChannelFile class · d6e48869
      Daniel P. Berrange 提交于
      Add a QIOChannel subclass that is capable of operating on things
      that are files, such as plain files, pipes, character/block
      devices, but notably not sockets.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      d6e48869
    • D
      io: add QIOChannelSocket class · 559607ea
      Daniel P. Berrange 提交于
      Implement a QIOChannel subclass that supports sockets I/O.
      The implementation is able to manage a single socket file
      descriptor, whether a TCP/UNIX listener, TCP/UNIX connection,
      or a UDP datagram. It provides APIs which can listen and
      connect either asynchronously or synchronously. Since there
      is no asynchronous DNS lookup API available, it uses the
      QIOTask helper for spawning a background thread to ensure
      non-blocking operation.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      559607ea
    • D
      io: add QIOTask class for async operations · b02db2d9
      Daniel P. Berrange 提交于
      A number of I/O operations need to be performed asynchronously
      to avoid blocking the main loop. The caller of such APIs need
      to provide a callback to be invoked on completion/error and
      need access to the error, if any. The small QIOTask provides
      a simple framework for dealing with such probes. The API
      docs inline provide an outline of how this is to be used.
      
      Some functions don't have the ability to run asynchronously
      (eg getaddrinfo always blocks), so to facilitate their use,
      the task class provides a mechanism to run a blocking
      function in a thread, while triggering the completion
      callback in the main event loop thread. This easily allows
      any synchronous function to be made asynchronous, albeit
      at the cost of spawning a thread.
      
      In this series, the QIOTask class will be used for things like
      the TLS handshake, the websockets handshake and TCP connect()
      progress.
      
      The concept of QIOTask is inspired by the GAsyncResult
      interface / GTask class in the GIO libraries. The min
      version requirements on glib don't allow those to be
      used from QEMU, so QIOTask provides a facsimilie which
      can be easily switched to GTask in the future if the
      min version is increased.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      b02db2d9
    • P
      linux-user: convert DEBUG_SIGNAL logging to tracepoints · c8ee0a44
      Paolo Bonzini 提交于
      "Unimplemented" messages go to stderr, everything else goes to tracepoints
      Reviewed-by: NLaurent Vivier <lvivier@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      c8ee0a44
    • P
      c6ce9f17
  7. 15 12月, 2015 3 次提交
    • G
      fw_cfg: add generic non-DMA read method · 38bf2093
      Gabriel L. Somlo 提交于
      Introduce fw_cfg_data_read(), a generic read method which works
      on all access widths (1 through 8 bytes, inclusive), and can be
      used during both IOPort and MMIO read accesses.
      
      To maintain legibility, only fw_cfg_data_mem_read() (the MMIO
      data read method) is replaced by this patch. The new method
      essentially unwinds the fw_cfg_data_mem_read() + fw_cfg_read()
      combo, but without unnecessarily repeating all the validity
      checks performed by the latter on each byte being read.
      
      This patch also modifies the trace_fw_cfg_read prototype to
      accept a 64-bit value argument, allowing it to work properly
      with the new read method, but also remain backward compatible
      with existing call sites.
      
      Cc: Laszlo Ersek <lersek@redhat.com>
      Cc: Gerd Hoffmann <kraxel@redhat.com>
      Cc: Marc Marí <markmb@redhat.com>
      Signed-off-by: NGabriel Somlo <somlo@cmu.edu>
      Reviewed-by: NLaszlo Ersek <lersek@redhat.com>
      Message-id: 1446733972-1602-6-git-send-email-somlo@cmu.edu
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      38bf2093
    • B
      usb-mtp: Add support for inotify based file monitoring · 8e3e3897
      Bandan Das 提交于
      For now, we use inotify watches to track only a small number of
      events, namely, add, delete and modify. Note that for delete, the kernel
      already deactivates the watch for us and we just need to
      take care of modifying our internal state.
      
      inotify is a linux only mechanism.
      Suggested-by: NGerd Hoffman <kraxel@redhat.com>
      Signed-off-by: NBandan Das <bsd@redhat.com>
      Message-id: 1448314625-3855-4-git-send-email-bsd@redhat.com
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      8e3e3897
    • B
      usb-mtp: use a list for keeping track of children · 4c7a67f5
      Bandan Das 提交于
      To support adding/removal of objects, we will need to update
      the object cache hierarchy we have built internally. Convert
      to using a Qlist for easier management.
      Signed-off-by: NBandan Das <bsd@redhat.com>
      Message-id: 1448314625-3855-2-git-send-email-bsd@redhat.com
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      4c7a67f5
  8. 03 12月, 2015 1 次提交
  9. 10 11月, 2015 22 次提交