On 25.02.2012, at 00:33, Scott Wood wrote:
On 02/24/2012 08:26 AM, Alexander Graf wrote:
quoted
When during guest context we get a performance monitor interrupt, we
currently bail out and oops. Let's route it to its correct handler
instead.
=20
Signed-off-by: Alexander Graf <redacted>
---
arch/powerpc/kvm/booke.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
=20
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index 7adef28..423701b 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -677,6 +677,10 @@ int kvmppc_handle_exit(struct kvm_run *run, =
struct kvm_vcpu *vcpu,
quoted
r =3D RESUME_GUEST;
break;
=20
+ case BOOKE_INTERRUPT_PERFORMANCE_MONITOR:
+ r =3D RESUME_GUEST;
+ break;
+
case BOOKE_INTERRUPT_HV_PRIV:
r =3D emulation_exit(run, vcpu);
break;
=20
Why do we need to call timer_interrupt() explicitly, but can rely on
automatic retriggering for perfmon?
We don't rely on automatic retriggering for perfmon. There are 2 =
different places where we need to handle an incoming exit code - the =
"reinject" code path and the "big switch over all exits" code path. This =
one deals with the latter.
Alex