1. 10 2月, 2015 2 次提交
  2. 07 2月, 2015 1 次提交
    • P
      virtio-blk: introduce multiread · 95f7142a
      Peter Lieven 提交于
      this patch finally introduces multiread support to virtio-blk. While
      multiwrite support was there for a long time, read support was missing.
      
      The complete merge logic is moved into virtio-blk.c which has
      been the only user of request merging ever since. This is required
      to be able to merge chunks of requests and immediately invoke callbacks
      for those requests. Secondly, this is required to switch to
      direct invocation of coroutines which is planned at a later stage.
      
      The following benchmarks show the performance of running fio with
      4 worker threads on a local ram disk. The numbers show the average
      of 10 test runs after 1 run as warmup phase.
      
                    |        4k        |       64k        |        4k
      MB/s          | rd seq | rd rand | rd seq | rd rand | wr seq | wr rand
      --------------+--------+---------+--------+---------+--------+--------
      master        | 1221   | 1187    | 4178   | 4114    | 1745   | 1213
      multiread     | 1829   | 1189    | 4639   | 4110    | 1894   | 1216
      Signed-off-by: NPeter Lieven <pl@kamp.de>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      95f7142a
  3. 06 2月, 2015 2 次提交
  4. 27 1月, 2015 1 次提交
  5. 20 1月, 2015 1 次提交
  6. 23 12月, 2014 4 次提交
  7. 20 12月, 2014 1 次提交
  8. 31 10月, 2014 7 次提交
  9. 20 10月, 2014 1 次提交
    • M
      hw: Convert from BlockDriverState to BlockBackend, mostly · 4be74634
      Markus Armbruster 提交于
      Device models should access their block backends only through the
      block-backend.h API.  Convert them, and drop direct includes of
      inappropriate headers.
      
      Just four uses of BlockDriverState are left:
      
      * The Xen paravirtual block device backend (xen_disk.c) opens images
        itself when set up via xenbus, bypassing blockdev.c.  I figure it
        should go through qmp_blockdev_add() instead.
      
      * Device model "usb-storage" prompts for keys.  No other device model
        does, and this one probably shouldn't do it, either.
      
      * ide_issue_trim_cb() uses bdrv_aio_discard() instead of
        blk_aio_discard() because it fishes its backend out of a BlockAIOCB,
        which has only the BlockDriverState.
      
      * PC87312State has an unused BlockDriverState[] member.
      
      The next two commits take care of the latter two.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NMax Reitz <mreitz@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      4be74634
  10. 10 10月, 2014 2 次提交
  11. 26 9月, 2014 8 次提交
  12. 23 9月, 2014 1 次提交
  13. 16 9月, 2014 1 次提交
  14. 05 9月, 2014 1 次提交
    • G
      console: stop using PixelFormat · 30f1e661
      Gerd Hoffmann 提交于
      With this patch the qemu console core stops using PixelFormat and pixman
      format codes side-by-side, pixman format code is the primary way to
      specify the DisplaySurface format:
      
       * DisplaySurface stops carrying a PixelFormat field.
       * qemu_create_displaysurface_from() expects a pixman format now.
      
      Functions to convert PixelFormat to pixman_format_code_t (and back)
      exist for those who still use PixelFormat.   As PixelFormat allows
      easy access to masks and shifts it will probably continue to exist.
      
      [ xenfb added by Benjamin Herrenschmidt ]
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      30f1e661
  15. 29 8月, 2014 1 次提交
  16. 12 8月, 2014 2 次提交
  17. 01 7月, 2014 1 次提交
    • Y
      trace: add qemu_system_powerdown_request and qemu_system_shutdown_request trace events · bc78cff9
      Yang Zhiyong 提交于
      We have the experience that the guest doesn't stop successfully
      though it was instructed to shut down.
      
      The root cause may be not in QEMU mostly.  However, QEMU is often
      suspected at the beginning just because the issue occurred in
      virtualization environment.
      
      Therefore, we need to affirm that QEMU received the shutdown
      request and raised ACPI irq from "virsh shutdown" command,
      virt-manger or stopping QEMU process to the VM .
      So that we can affirm the problems was belonged to the Guset OS
      rather than the QEMU itself.
      
      When we stop guests by "virsh shutdown" command or virt-manger,
      or stopping QEMU process, qemu_system_powerdown_request() or
      qemu_system_shutdown_request() is called. Then the below functions
      in main_loop_should_exit() of Vl.c are called roughly in the
      following order.
      
      	if (qemu_powerdown_requested())
      		qemu_system_powerdown()
      			monitor_protocol_event(QEVENT_POWERDOWN, NULL)
      
      	OR
      
      	if(qemu_shutdown_requested()}
      		monitor_protocol_event(QEVENT_SHUTDOWN, NULL);
      
      The tracepoint of monitor_protocol_event() already exists, but no
      tracepoints are defined for qemu_system_powerdown_request() and
      qemu_system_shutdown_request(). So this patch adds two tracepoints for
      the two functions. We believe that it will become much easier to
      isolate the problem mentioned above by these tracepoints.
      Signed-off-by: NYang Zhiyong <yangzy.fnst@cn.fujitsu.com>
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      bc78cff9
  18. 27 6月, 2014 3 次提交
    • A
      spapr_pci: Use XICS interrupt allocator and do not cache interrupts in PHB · 9a321e92
      Alexey Kardashevskiy 提交于
      Currently SPAPR PHB keeps track of all allocated MSI (here and below
      MSI stands for both MSI and MSIX) interrupt because
      XICS used to be unable to reuse interrupts. This is a problem for
      dynamic MSI reconfiguration which happens when guest reloads a driver
      or performs PCI hotplug. Another problem is that the existing
      implementation can enable MSI on 32 devices maximum
      (SPAPR_MSIX_MAX_DEVS=32) and there is no good reason for that.
      
      This makes use of new XICS ability to reuse interrupts.
      
      This reorganizes MSI information storage in sPAPRPHBState. Instead of
      static array of 32 descriptors (one per a PCI function), this patch adds
      a GHashTable when @config_addr is a key and (first_irq, num) pair is
      a value. GHashTable can dynamically grow and shrink so the initial limit
      of 32 devices is gone.
      
      This changes migration stream as @msi_table was a static array while new
      @msi_devs is a dynamic hash table. This adds temporary array which is
      used for migration, it is populated in "spapr_pci"::pre_save() callback
      and expanded into the hash table in post_load() callback. Since
      the destination side does not know the number of MSI-enabled devices
      in advance and cannot pre-allocate the temporary array to receive
      migration state, this makes use of new VMSTATE_STRUCT_VARRAY_ALLOC macro
      which allocates the array automatically.
      
      This resets the MSI configuration space when interrupts are released by
      the ibm,change-msi RTAS call.
      
      This fixed traces to be more informative.
      
      This changes vmstate_spapr_pci_msi name from "...lsi" to "...msi" which
      was incorrect by accident. As the internal representation changed,
      thus bumps migration version number.
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      [agraf: drop g_malloc_n usage]
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      9a321e92
    • A
      xics: Implement xics_ics_free() · 51bba713
      Alexey Kardashevskiy 提交于
      This implements interrupt release function so IRQs can be returned back
      to the pool for reuse in cases such as PCI hot plug.
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      51bba713
    • A
      spapr: Move interrupt allocator to xics · bee763db
      Alexey Kardashevskiy 提交于
      The current allocator returns IRQ numbers from a pool and does not
      support IRQs reuse in any form as it did not keep track of what it
      previously returned, it only keeps the last returned IRQ. Some use
      cases such as PCI hot(un)plug may require IRQ release and reallocation.
      
      This moves an allocator from SPAPR to XICS.
      
      This switches IRQ users to use new API.
      
      This uses LSI/MSI flags to know if interrupt is allocated.
      
      The interrupt release function will be posted as a separate patch.
      Signed-off-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      bee763db