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

Attachment: 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
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to