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