From: Zhang Xiantao <[EMAIL PROTECTED]> Date: Mon, 3 Dec 2007 17:16:34 +0800 Subject: [PATCH] kvm: qemu: Using kvm_arch_try_push_interrupts to hold arch-sepcific stuff. In this patch, kvm_arch_try_push_interrupts is used to handle arch-specific operations for try_push_interrupts. Signed-off-by: Zhang Xiantao <[EMAIL PROTECTED]> --- qemu/qemu-kvm-x86.c | 21 +++++++++++++++++++++ qemu/qemu-kvm.c | 17 +---------------- qemu/qemu-kvm.h | 2 ++ 3 files changed, 24 insertions(+), 16 deletions(-)
diff --git a/qemu/qemu-kvm-x86.c b/qemu/qemu-kvm-x86.c index bb11395..f2583a2 100644 --- a/qemu/qemu-kvm-x86.c +++ b/qemu/qemu-kvm-x86.c @@ -595,4 +595,25 @@ int kvm_arch_has_work(CPUState *env) return 1; return 0; } + +int kvm_arch_try_push_interrupts(void *opaque) +{ + CPUState *env = cpu_single_env; + int r, irq; + + if (env->ready_for_interrupt_injection && + (env->interrupt_request & CPU_INTERRUPT_HARD) && + (env->eflags & IF_MASK)) { + env->interrupt_request &= ~CPU_INTERRUPT_HARD; + irq = cpu_get_pic_interrupt(env); + if (irq >= 0) { + r = kvm_inject_irq(kvm_context, env->cpu_index, irq); + if (r < 0) + printf("cpu %d fail inject %x\n", env->cpu_index, irq); + } + } + + return (env->interrupt_request & CPU_INTERRUPT_HARD) != 0; +} + #endif diff --git a/qemu/qemu-kvm.c b/qemu/qemu-kvm.c index ba02f49..91fa55f 100644 --- a/qemu/qemu-kvm.c +++ b/qemu/qemu-kvm.c @@ -90,22 +90,7 @@ void kvm_apic_init(CPUState *env) static int try_push_interrupts(void *opaque) { - CPUState *env = cpu_single_env; - int r, irq; - - if (env->ready_for_interrupt_injection && - (env->interrupt_request & CPU_INTERRUPT_HARD) && - (env->eflags & IF_MASK)) { - env->interrupt_request &= ~CPU_INTERRUPT_HARD; - irq = cpu_get_pic_interrupt(env); - if (irq >= 0) { - r = kvm_inject_irq(kvm_context, env->cpu_index, irq); - if (r < 0) - printf("cpu %d fail inject %x\n", env->cpu_index, irq); - } - } - - return (env->interrupt_request & CPU_INTERRUPT_HARD) != 0; + return kvm_arch_try_push_interrupts(opaque); } static void post_kvm_run(void *opaque, int vcpu) diff --git a/qemu/qemu-kvm.h b/qemu/qemu-kvm.h index a6d2ed0..fceb173 100644 --- a/qemu/qemu-kvm.h +++ b/qemu/qemu-kvm.h @@ -35,7 +35,9 @@ void kvm_arch_load_regs(CPUState *env); int kvm_arch_qemu_init_env(CPUState *cenv); int kvm_arch_halt(void *opaque, int vcpu); void kvm_arch_pre_kvm_run(void *opaque, int vcpu); +void kvm_arch_post_kvm_run(void *opaque, int vcpu); int kvm_arch_has_work(CPUState *env); +int kvm_arch_try_push_interrupts(void *opaque); #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
0009-kvm-qemu-Using-kvm_arch_try_push_interrupts-to-hol.patch
Description: 0009-kvm-qemu-Using-kvm_arch_try_push_interrupts-to-hol.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