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