From: Zhang Xiantao <[EMAIL PROTECTED]> Date: Mon, 3 Dec 2007 15:30:45 +0800 Subject: [PATCH] kvm: qemu: split kvm_qemu_create_context. This patche splits kvm_qemu_create_context and moves x86-specific to qemu-kvm-x86.c. Temporarily set kvm_has_msr_star to a gloabal variant. Signed-off-by: Zhang Xiantao <[EMAIL PROTECTED]> --- qemu/qemu-kvm-x86.c | 20 ++++++++++++++++++++ qemu/qemu-kvm.c | 18 ++++-------------- qemu/qemu-kvm.h | 1 + 3 files changed, 25 insertions(+), 14 deletions(-)
diff --git a/qemu/qemu-kvm-x86.c b/qemu/qemu-kvm-x86.c
index 6c4cfb2..3916bbd 100644
--- a/qemu/qemu-kvm-x86.c
+++ b/qemu/qemu-kvm-x86.c
@@ -15,4 +15,24 @@ extern int kvm_irqchip;
#include <pthread.h>
#include <sys/utsname.h>
+static struct kvm_msr_list *kvm_msr_list;
+extern unsigned int kvm_shadow_memory;
+extern kvm_context_t kvm_context;
+extern int kvm_has_msr_star;
+
+int kvm_arch_qemu_create_context(void)
+{
+ int i;
+ if (kvm_shadow_memory)
+ kvm_set_shadow_pages(kvm_context, kvm_shadow_memory);
+
+ kvm_msr_list = kvm_get_msr_list(kvm_context);
+ if (!kvm_msr_list)
+ return -1;
+ for (i = 0; i < kvm_msr_list->nmsrs; ++i)
+ if (kvm_msr_list->indices[i] == MSR_STAR)
+ kvm_has_msr_star = 1;
+ return 0;
+}
+
#endif
diff --git a/qemu/qemu-kvm.c b/qemu/qemu-kvm.c
index 73004c0..a18a2b8 100644
--- a/qemu/qemu-kvm.c
+++ b/qemu/qemu-kvm.c
@@ -27,11 +27,9 @@ int kvm_irqchip = 1;
extern void perror(const char *s);
kvm_context_t kvm_context;
-static struct kvm_msr_list *kvm_msr_list;
-static int kvm_has_msr_star;
+int kvm_has_msr_star;
extern int smp_cpus;
-extern unsigned int kvm_shadow_memory;
pthread_mutex_t qemu_mutex = PTHREAD_MUTEX_INITIALIZER;
static __thread CPUState *vcpu_env;
@@ -1006,8 +1004,7 @@ int kvm_qemu_init()
int kvm_qemu_create_context(void)
{
- int i;
-
+ int r;
if (!kvm_irqchip) {
kvm_disable_irqchip_creation(kvm_context);
}
@@ -1015,16 +1012,9 @@ int kvm_qemu_create_context(void)
kvm_qemu_destroy();
return -1;
}
- if (kvm_shadow_memory)
- kvm_set_shadow_pages(kvm_context, kvm_shadow_memory);
- kvm_msr_list = kvm_get_msr_list(kvm_context);
- if (!kvm_msr_list) {
+ r = kvm_arch_qemu_create_context();
+ if(r <0)
kvm_qemu_destroy();
- return -1;
- }
- for (i = 0; i < kvm_msr_list->nmsrs; ++i)
- if (kvm_msr_list->indices[i] == MSR_STAR)
- kvm_has_msr_star = 1;
return 0;
}
diff --git a/qemu/qemu-kvm.h b/qemu/qemu-kvm.h
index 57f70ec..61e3b0f 100644
--- a/qemu/qemu-kvm.h
+++ b/qemu/qemu-kvm.h
@@ -28,6 +28,7 @@ void kvm_update_interrupt_request(CPUState *env);
void kvm_cpu_register_physical_memory(target_phys_addr_t start_addr,
unsigned long size,
unsigned long phys_offset);
+int kvm_arch_qemu_create_context(void);
#define ALIGN(x, y) (((x)+(y)-1) & ~((y)-1))
#define BITMAP_SIZE(m) (ALIGN(((m)>>TARGET_PAGE_BITS), HOST_LONG_BITS)
/ 8)
--
1.5.1.2
0002-kvm-qemu-split-kvm_qemu_create_context.patch
Description: 0002-kvm-qemu-split-kvm_qemu_create_context.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
