* [PATCH] move hlt exit to arch-specific code, and use upstream version.
@ 2009-10-20 19:15 Glauber Costa
2009-10-20 19:47 ` Gleb Natapov
0 siblings, 1 reply; 4+ messages in thread
From: Glauber Costa @ 2009-10-20 19:15 UTC (permalink / raw)
To: kvm; +Cc: avi
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@redhat.com>
---
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
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] move hlt exit to arch-specific code, and use upstream version.
2009-10-20 19:15 [PATCH] move hlt exit to arch-specific code, and use upstream version Glauber Costa
@ 2009-10-20 19:47 ` Gleb Natapov
2009-10-20 19:56 ` Glauber Costa
0 siblings, 1 reply; 4+ messages in thread
From: Gleb Natapov @ 2009-10-20 19:47 UTC (permalink / raw)
To: Glauber Costa; +Cc: kvm, avi
On Tue, Oct 20, 2009 at 05:15:32PM -0200, Glauber Costa wrote:
> 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.
>
kvm_handle_halt() may return 1. If it does kvm_arch_run() will return 1
too and kvm_run() will abort.
> Signed-off-by: Glauber Costa <glommer@redhat.com>
> ---
> 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@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
Gleb.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] move hlt exit to arch-specific code, and use upstream version.
2009-10-20 19:47 ` Gleb Natapov
@ 2009-10-20 19:56 ` Glauber Costa
2009-10-20 20:05 ` Gleb Natapov
0 siblings, 1 reply; 4+ messages in thread
From: Glauber Costa @ 2009-10-20 19:56 UTC (permalink / raw)
To: Gleb Natapov; +Cc: kvm, avi
On Tue, Oct 20, 2009 at 09:47:44PM +0200, Gleb Natapov wrote:
> On Tue, Oct 20, 2009 at 05:15:32PM -0200, Glauber Costa wrote:
> > 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.
> >
> kvm_handle_halt() may return 1. If it does kvm_arch_run() will return 1
> too and kvm_run() will abort.
kvm_arch_halt() may return 1 as well.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] move hlt exit to arch-specific code, and use upstream version.
2009-10-20 19:56 ` Glauber Costa
@ 2009-10-20 20:05 ` Gleb Natapov
0 siblings, 0 replies; 4+ messages in thread
From: Gleb Natapov @ 2009-10-20 20:05 UTC (permalink / raw)
To: Glauber Costa; +Cc: kvm, avi
On Tue, Oct 20, 2009 at 05:56:35PM -0200, Glauber Costa wrote:
> On Tue, Oct 20, 2009 at 09:47:44PM +0200, Gleb Natapov wrote:
> > On Tue, Oct 20, 2009 at 05:15:32PM -0200, Glauber Costa wrote:
> > > 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.
> > >
> > kvm_handle_halt() may return 1. If it does kvm_arch_run() will return 1
> > too and kvm_run() will abort.
>
> kvm_arch_halt() may return 1 as well.
>
But it's called from another place and its return value is handled
differently.
--
Gleb.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-10-20 20:05 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-20 19:15 [PATCH] move hlt exit to arch-specific code, and use upstream version Glauber Costa
2009-10-20 19:47 ` Gleb Natapov
2009-10-20 19:56 ` Glauber Costa
2009-10-20 20:05 ` Gleb Natapov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox