From: Zhang Xiantao <[EMAIL PROTECTED]> Date: Mon, 3 Dec 2007 16:51:23 +0800 Subject: [PATCH] kvm: qemu: using kvm_arch_post_kvm_run to hold x86-specific code. In this patch, it use kvm_arch_post_kvm_run to hold x86-specific code for post_kvm_run; Signed-off-by: Zhang Xiantao <[EMAIL PROTECTED]> --- qemu/qemu-kvm-x86.c | 14 ++++++++++++++ qemu/qemu-kvm.c | 12 ++---------- 2 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/qemu/qemu-kvm-x86.c b/qemu/qemu-kvm-x86.c index d5fe6c2..e79e4ad 100644 --- a/qemu/qemu-kvm-x86.c +++ b/qemu/qemu-kvm-x86.c @@ -23,6 +23,7 @@ extern kvm_context_t kvm_context; static int kvm_has_msr_star; static int lm_capable_kernel; +extern __thread CPUState *vcpu_env; int kvm_arch_qemu_create_context(void) { @@ -573,4 +574,17 @@ void kvm_arch_pre_kvm_run(void *opaque, int vcpu) kvm_set_cr8(kvm_context, vcpu, cpu_get_apic_tpr(env)); } +void kvm_arch_post_kvm_run(void *opaque, int vcpu) +{ + CPUState *env = vcpu_env; + cpu_single_env = env; + + env->eflags = kvm_get_interrupt_flag(kvm_context, vcpu) + ? env->eflags | IF_MASK : env->eflags & ~IF_MASK; + env->ready_for_interrupt_injection + = kvm_is_ready_for_interrupt_injection(kvm_context, vcpu); + + cpu_set_apic_tpr(env, kvm_get_cr8(kvm_context, vcpu)); + cpu_set_apic_base(env, kvm_get_apic_base(kvm_context, vcpu)); +} #endif diff --git a/qemu/qemu-kvm.c b/qemu/qemu-kvm.c index 669720c..6ec33fe 100644 --- a/qemu/qemu-kvm.c +++ b/qemu/qemu-kvm.c @@ -28,7 +28,7 @@ kvm_context_t kvm_context; extern int smp_cpus; pthread_mutex_t qemu_mutex = PTHREAD_MUTEX_INITIALIZER; -static __thread CPUState *vcpu_env; +__thread CPUState *vcpu_env; static sigset_t io_sigset, io_negsigset; @@ -110,17 +110,9 @@ static int try_push_interrupts(void *opaque) static void post_kvm_run(void *opaque, int vcpu) { - CPUState *env = vcpu_env; pthread_mutex_lock(&qemu_mutex); - cpu_single_env = env; - env->eflags = kvm_get_interrupt_flag(kvm_context, vcpu) - ? env->eflags | IF_MASK : env->eflags & ~IF_MASK; - env->ready_for_interrupt_injection - = kvm_is_ready_for_interrupt_injection(kvm_context, vcpu); - - cpu_set_apic_tpr(env, kvm_get_cr8(kvm_context, vcpu)); - cpu_set_apic_base(env, kvm_get_apic_base(kvm_context, vcpu)); + kvm_arch_post_kvm_run(opaque, vcpu); } static int pre_kvm_run(void *opaque, int vcpu) -- 1.5.1.2
0007-kvm-qemu-using-kvm_arch_post_kvm_run-to-hold-x86-s.patch
Description: 0007-kvm-qemu-using-kvm_arch_post_kvm_run-to-hold-x86-s.patch
------------------------------------------------------------------------- SF.Net email is sponsored by: The Future of Linux Business White Paper from Novell. From the desktop to the data center, Linux is going mainstream. Let it simplify your IT future. http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
_______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel