[PATCH] move hlt exit to arch-specific code, and use upstream version.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



HLT exit calls directly an arch-specific function. Furthermore,
upstream qemu already places it on arch specific code, so let's follow it.

The function that handles halt itself is almost equal between them. So
let's use it.

Signed-off-by: Glauber Costa <glommer@xxxxxxxxxx>
---
 qemu-kvm-x86.c    |   14 +++-----------
 qemu-kvm.c        |    3 ---
 target-i386/kvm.c |    2 ++
 3 files changed, 5 insertions(+), 14 deletions(-)

diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c
index c1d0ae9..6573dc5 100644
--- a/qemu-kvm-x86.c
+++ b/qemu-kvm-x86.c
@@ -199,6 +199,9 @@ int kvm_arch_run(CPUState *env)
 			r = kvm_handle_tpr_access(env);
 			break;
 #endif
+        case KVM_EXIT_HLT:
+            r = kvm_handle_halt(env);
+            break;
 		default:
 			r = 1;
 			break;
@@ -1377,17 +1380,6 @@ int kvm_arch_init_vcpu(CPUState *cenv)
     return 0;
 }
 
-int kvm_arch_halt(CPUState *env)
-{
-
-    if (!((env->interrupt_request & CPU_INTERRUPT_HARD) &&
-	  (env->eflags & IF_MASK)) &&
-	!(env->interrupt_request & CPU_INTERRUPT_NMI)) {
-            env->halted = 1;
-    }
-    return 1;
-}
-
 void kvm_arch_pre_kvm_run(void *opaque, CPUState *env)
 {
     if (!kvm_irqchip_in_kernel())
diff --git a/qemu-kvm.c b/qemu-kvm.c
index b8ae4d8..42ead38 100644
--- a/qemu-kvm.c
+++ b/qemu-kvm.c
@@ -1002,9 +1002,6 @@ int kvm_run(CPUState *env)
         case KVM_EXIT_MMIO:
             r = handle_mmio(env);
             break;
-        case KVM_EXIT_HLT:
-            r = kvm_arch_halt(env);
-            break;
         case KVM_EXIT_IRQ_WINDOW_OPEN:
             break;
         case KVM_EXIT_SHUTDOWN:
diff --git a/target-i386/kvm.c b/target-i386/kvm.c
index 1cf0dc3..de10ef1 100644
--- a/target-i386/kvm.c
+++ b/target-i386/kvm.c
@@ -761,6 +761,7 @@ int kvm_arch_post_run(CPUState *env, struct kvm_run *run)
 
     return 0;
 }
+#endif
 
 static int kvm_handle_halt(CPUState *env)
 {
@@ -775,6 +776,7 @@ static int kvm_handle_halt(CPUState *env)
     return 1;
 }
 
+#ifdef KVM_UPSTREAM
 int kvm_arch_handle_exit(CPUState *env, struct kvm_run *run)
 {
     int ret = 0;
-- 
1.6.2.5

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux