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 [email protected] https://lists.sourceforge.net/lists/listinfo/kvm-devel
