Here is v2 of the TPR access optimization. Changes: - plug race between patching and running VCPUs accessing the same TPR instruction by stopping VCPUs during patch process - realized forward/backward check in evaluate_tpr_instruction via a table but kept patch_instruction as is (too much variations for a table-driven approach) - dropped smp_cpus == 1 special case from get_kpcr_number - fixed comment why R/W ROM alias has to be page-aligned
The series is also available at git://git.kiszka.org/qemu-kvm.git queues/kvm-tpr Please review/apply. CC: Paolo Bonzini <pbonz...@redhat.com> Jan Kiszka (8): kvm: Set cpu_single_env only once Allow to use pause_all_vcpus from VCPU context target-i386: Add infrastructure for reporting TPR MMIO accesses kvmvapic: Add option ROM kvmvapic: Introduce TPR access optimization for Windows guests kvmvapic: Simplify mp/up_set_tpr optionsrom: Reserve space for checksum kvmvapic: Use optionrom helpers .gitignore | 1 + Makefile | 2 +- Makefile.target | 3 +- cpu-all.h | 3 +- cpus.c | 13 + hw/apic.c | 126 ++++++- hw/apic.h | 2 + hw/apic_common.c | 68 ++++- hw/apic_internal.h | 27 ++ hw/kvm/apic.c | 32 ++ hw/kvmvapic.c | 774 +++++++++++++++++++++++++++++++++++++++++ kvm-all.c | 5 - pc-bios/optionrom/Makefile | 2 +- pc-bios/optionrom/kvmvapic.S | 335 ++++++++++++++++++ pc-bios/optionrom/optionrom.h | 3 +- target-i386/cpu.h | 9 + target-i386/helper.c | 19 + target-i386/kvm.c | 24 ++- 18 files changed, 1423 insertions(+), 25 deletions(-) create mode 100644 hw/kvmvapic.c create mode 100644 pc-bios/optionrom/kvmvapic.S -- 1.7.3.4