[PATCH 00/20] qemu-kvm: Cleanup and switch to upstream - The Season Final

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



With this series applied, we are finally at a level of almost zero
redundancy between QEMU upstream and the qemu-kvm tree. The last major
duplication to be removed is the original io-thread implementation and
everything related to it:
 - locking
 - vcpu wakeup/kicking as well as suspend/resume
 - on-vcpu execution
 - io-thread loop
 - vcpu thread loop

The approach taken here is similar to what was done to morph KVM core
functions into upstream code: First all to be converted code is moved
over into cpus.c, then qemu-kvm's functions are gradually changed and
replaced with the upstream versions.

This means that we have to enable CONFIG_IOTHREAD which is so far
incompatible with qemu-kvm. This incompatibility causes a temporary
breakage of the TCG mode early in the series, but it is healed again
with the last patch applied.

To make it clear: Even with all this applied, there is still a lot to
do to turn upstream QEMU into the primary KVM platform. We need to
 - rework in-kernel IOAPIC/PIC/APIC/PIT support, namely
    - proper qdev modeling
    - new MSI hooking architecture (half-done)
    - VAPIC support (haven't looked at details yet, maybe just cleanups)
 - prepare device assignment for upstream (VFIO and/or KVM-based)
 - clean up remaining small deltas (including posix-aio-compat...)
 - get rid of legacy command line interfaces (e.g. via deprecation
   warning in release X and removal in X+n, n >= 1)

But then we are really done and can all retire. ;)

In the meantime, please review/merge these bits.

Jan Kiszka (20):
  qemu-kvm: Move thread-related code to cpus.c
  qemu-kvm: Enable CONFIG_IOTHREAD
  qemu-kvm: Switch to iothread version of qemu_notify_event
  qemu-kvm: Use upstream mutex and conds
  qemu-kvm: Restrict validity of cpu_single_env
  qemu-kvm: Use upstream qemu_mutex_lock/unlock_iothread
  qemu-kvm: Clean up kvm_update_interrupt_request
  qemu-kvm: Replace kvm_update_interrupt_request with qemu_cpu_kick
  qemu-kvm: Use upstream run_on_cpu and flush_queued_work
  qemu-kvm: Drop kvm_cond_wait
  qemu-kvm: Replace kvm_cpu_is_stopped with cpu_is_stopped
  qemu-kvm: Remove obsolete current_env
  qemu-kvm: Use upstream vcpu pause/resume
  qemu-kvm: Move main loop setup code
  qemu-kvm: Use upstream's way of signaling debug stops
  qemu-kvm: Use upstream main loop
  qemu-kvm: Use upstream main loop initialization
  qemu-kvm: Replace kvm_get_thread_id with qemu_get_thread_id
  qemu-kvm: Use upstream kvm vcpu initialization
  qemu-kvm: Use upstream vcpu loop

 configure            |    1 +
 cpu-defs.h           |   11 +-
 cpus.c               |   17 +--
 cpus.h               |    1 +
 kvm-all.c            |    9 +-
 qemu-kvm.c           |  498 +-------------------------------------------------
 qemu-kvm.h           |    7 -
 target-i386/helper.c |    4 -
 vl.c                 |   17 --
 9 files changed, 13 insertions(+), 552 deletions(-)

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux