aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2012-02-22 10:26:34 -0500
committerAvi Kivity <avi@redhat.com>2012-04-08 05:55:28 -0400
commit7cc1e8ee78f469ecff8aa29465325f1e4c5e1b5f (patch)
treeaf21362c4277480ee03015c05ee446b42d27b9c1 /arch
parent4e642ccbd6a3f1410155c7700f54b56b6c7df9a2 (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>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/include/asm/hw_irq.h1
-rw-r--r--arch/powerpc/kvm/booke.c4
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 @@
33extern void __replay_interrupt(unsigned int vector); 33extern void __replay_interrupt(unsigned int vector);
34 34
35extern void timer_interrupt(struct pt_regs *); 35extern void timer_interrupt(struct pt_regs *);
36extern 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(&regs);
639 performance_monitor_exception(&regs);
640 break;
637 } 641 }
638} 642}
639 643