Skip to content
Snippets Groups Projects
  1. Feb 21, 2017
    • Paolo Bonzini's avatar
      aio: introduce aio_co_schedule and aio_co_wake · 0c330a73
      Paolo Bonzini authored
      
      aio_co_wake provides the infrastructure to start a coroutine on a "home"
      AioContext.  It will be used by CoMutex and CoQueue, so that coroutines
      don't jump from one context to another when they go to sleep on a
      mutex or waitqueue.  However, it can also be used as a more efficient
      alternative to one-shot bottom halves, and saves the effort of tracking
      which AioContext a coroutine is running on.
      
      aio_co_schedule is the part of aio_co_wake that starts a coroutine
      on a remove AioContext, but it is also useful to implement e.g.
      bdrv_set_aio_context callbacks.
      
      The implementation of aio_co_schedule is based on a lock-free
      multiple-producer, single-consumer queue.  The multiple producers use
      cmpxchg to add to a LIFO stack.  The consumer (a per-AioContext bottom
      half) grabs all items added so far, inverts the list to make it FIFO,
      and goes through it one item at a time until it's empty.  The data
      structure was inspired by OSv, which uses it in the very code we'll
      "port" to QEMU for the thread-safe CoMutex.
      
      Most of the new code is really tests.
      
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Reviewed-by: default avatarFam Zheng <famz@redhat.com>
      Message-id: 20170213135235.12274-3-pbonzini@redhat.com
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      0c330a73
    • Paolo Bonzini's avatar
      block: move AioContext, QEMUTimer, main-loop to libqemuutil · c2b38b27
      Paolo Bonzini authored
      
      AioContext is fairly self contained, the only dependency is QEMUTimer but
      that in turn doesn't need anything else.  So move them out of block-obj-y
      to avoid introducing a dependency from io/ to block-obj-y.
      
      main-loop and its dependency iohandler also need to be moved, because
      later in this series io/ will call iohandler_get_aio_context.
      
      [Changed copyright "the QEMU team" to "other QEMU contributors" as
      suggested by Daniel Berrange and agreed by Paolo.
      --Stefan]
      
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Reviewed-by: default avatarFam Zheng <famz@redhat.com>
      Message-id: 20170213135235.12274-2-pbonzini@redhat.com
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      c2b38b27
  2. Feb 20, 2017
  3. Feb 18, 2017
  4. Feb 17, 2017
  5. Feb 16, 2017
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging · ad584d37
      Peter Maydell authored
      
      * GUEST_PANICKED improvements (Anton)
      * vCont gdbstub rewrite (Claudio)
      * Fix CPU creation with -device (Liyang)
      * Logging fixes for pty chardevs (Ed)
      * Makefile "move if changed" fix (Lin)
      * First part of cpu_exec refactoring (me)
      * SVM emulation fix (me)
      * apic_delivered fix (Pavel)
      * "info ioapic" fix (Peter)
      * qemu-nbd socket activation (Richard)
      * QOMification of mcf_uart (Thomas)
      
      # gpg: Signature made Thu 16 Feb 2017 17:37:31 GMT
      # gpg:                using RSA key 0xBFFBD25F78C7AE83
      # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>"
      # gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>"
      # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
      #      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83
      
      * remotes/bonzini/tags/for-upstream: (23 commits)
        target-i386: correctly propagate retaddr into SVM helpers
        vl: log available guest crash information
        report guest crash information in GUEST_PANICKED event
        i386/cpu: add crash-information QOM property
        Makefile: avoid leaving the temporary QEMU_PKGVERSION header file
        vl: Move the cpu_synchronize_all_post_init() after generic devices initialization
        qemu-nbd: Implement socket activation.
        qemu-doc: Clarify that -vga std is now the default
        cpu-exec: remove outermost infinite loop
        cpu-exec: avoid repeated sigsetjmp on interrupts
        cpu-exec: avoid cpu_loop_exit in cpu_handle_interrupt
        cpu-exec: tighten barrier on TCG_EXIT_REQUESTED
        cpu-exec: fix icount out-of-bounds access
        hw/char/mcf_uart: QOMify the ColdFire UART
        gdbstub: Fix vCont behaviour
        move vm_start to cpus.c
        char: drop data written to a disconnected pty
        apic: reset apic_delivered global variable on machine reset
        qemu-char: socket backend: disconnect on write error
        test-vmstate: remove yield_until_fd_readable
        ...
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      ad584d37
Loading