diff options
| author | Alexander Graf <agraf@suse.de> | 2012-02-22 10:26:34 -0500 |
|---|---|---|
| committer | Avi Kivity <avi@redhat.com> | 2012-04-08 05:55:28 -0400 |
| commit | 7cc1e8ee78f469ecff8aa29465325f1e4c5e1b5f (patch) | |
| tree | af21362c4277480ee03015c05ee446b42d27b9c1 | |
| parent | 4e642ccbd6a3f1410155c7700f54b56b6c7df9a2 (diff) | |
KVM: PPC: booke: Reinject performance monitor interrupts
When we get a performance monitor interrupt, we need to make sure that
the host receives it. So reinject it like we reinject the other host
destined interrupts.
Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Avi Kivity <avi@redhat.com>
| -rw-r--r-- | arch/powerpc/include/asm/hw_irq.h | 1 | ||||
| -rw-r--r-- | arch/powerpc/kvm/booke.c | 4 |
2 files changed, 5 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/hw_irq.h b/arch/powerpc/include/asm/hw_irq.h index 51010bfc792e..c9aac24b02e2 100644 --- a/arch/powerpc/include/asm/hw_irq.h +++ b/arch/powerpc/include/asm/hw_irq.h | |||
| @@ -33,6 +33,7 @@ | |||
| 33 | extern void __replay_interrupt(unsigned int vector); | 33 | extern void __replay_interrupt(unsigned int vector); |
| 34 | 34 | ||
| 35 | extern void timer_interrupt(struct pt_regs *); | 35 | extern void timer_interrupt(struct pt_regs *); |
| 36 | extern void performance_monitor_exception(struct pt_regs *regs); | ||
| 36 | 37 | ||
| 37 | #ifdef CONFIG_PPC64 | 38 | #ifdef CONFIG_PPC64 |
| 38 | #include <asm/paca.h> | 39 | #include <asm/paca.h> |
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c index 488936bece69..8e8aa4cb5968 100644 --- a/arch/powerpc/kvm/booke.c +++ b/arch/powerpc/kvm/booke.c | |||
| @@ -634,6 +634,10 @@ static void kvmppc_restart_interrupt(struct kvm_vcpu *vcpu, | |||
| 634 | case BOOKE_INTERRUPT_MACHINE_CHECK: | 634 | case BOOKE_INTERRUPT_MACHINE_CHECK: |
| 635 | /* FIXME */ | 635 | /* FIXME */ |
| 636 | break; | 636 | break; |
| 637 | case BOOKE_INTERRUPT_PERFORMANCE_MONITOR: | ||
| 638 | kvmppc_fill_pt_regs(®s); | ||
| 639 | performance_monitor_exception(®s); | ||
| 640 | break; | ||
| 637 | } | 641 | } |
| 638 | } | 642 | } |
| 639 | 643 | ||
