Anthony Liguori wrote: > This patch actually enables KVM support for QEMU. I apologize that it is so > large but this was the only sane way to preserve bisectability. > > The goal of this patch is to add KVM support, but not to impact users when > KVM isn't being used. It achieves this by using a kvm_enabled() macro that > evaluates to (0) when KVM support is not enabled. An if (kvm_enabled()) is > just as good as using an #ifdef since GCC will eliminate the dead code. > > This patches touches a lot of areas. For performance reasons, the guest CPU > state is not kept in sync with CPUState. This requires an explicit > synchronization whenever CPUState is required. KVM also uses it's own main > loop as it runs each VCPU in it's own thread. > > Trapping VGA updates via MMIO is far too slow when running KVM so there is > additional logic to allow VGA memory to be accessed as RAM. We use KVM's > shadow page tables to keep track of which portions of RAM have been dirtied. > > KVM also supports an in-kernel APIC implementation as a performance > enhancement. Finally, KVM supports APIC TPR patching. This allows TPR > accesses (which are very frequently for Windows) to be patches into CALL > instructions to the BIOS (for 32-bit guests). This results in a very > sigificant performance improvement for Windows guests. > > While this patch is very large, the new files are only included when KVM > support is compiled in. Every change to QEMU is wrapped in an > if (kvm_enabled()) so the code disappears when KVM support is not compiled in. > This is done to ensure no regressions are introduced to normal QEMU.
Some questions: - QEMU already maintains modified page status for VGA memory (and kqemu for example fully supports that), so I don't see why KVM needs a new method. - Why is kvm_cpu_register_physical_memory() needed ? kqemu can work without it because there is a remapping between physical memory and RAM address. I suggest to add that feature in KVM or to modify cpu_register_physical_memory() to hide it. - If KVM implements its own CPU loop, why are there patches in libqemu.a (CPU core) ? Regards, Fabrice. ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel