On 05/04/17 10:28, Christoffer Dall wrote: > From: Christoffer Dall <christoffer.dall@xxxxxxxxxx> > > When not using an in-kernel VGIC, but instead emulating an interrupt > controller in userspace, we should report the PMU overflow status to > that userspace interrupt controller using the KVM_CAP_ARM_USER_IRQ > feature. > > Signed-off-by: Christoffer Dall <christoffer.dall@xxxxxxxxxx> > --- > arch/arm/kvm/arm.c | 9 ++++++--- > include/kvm/arm_pmu.h | 7 +++++++ > virt/kvm/arm/pmu.c | 42 ++++++++++++++++++++++++++++++++++++++---- > 3 files changed, 51 insertions(+), 7 deletions(-) > > diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c > index efb16e5..f935383 100644 > --- a/arch/arm/kvm/arm.c > +++ b/arch/arm/kvm/arm.c > @@ -635,11 +635,13 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run) > > /* > * If we have a singal pending, or need to notify a userspace > - * irqchip about timer level changes, then we exit (and update > - * the timer level state in kvm_timer_update_run below). > + * irqchip about timer or PMU level changes, then we exit (and > + * update the timer level state in kvm_timer_update_run > + * below). > */ > if (signal_pending(current) || > - kvm_timer_should_notify_user(vcpu)) { > + kvm_timer_should_notify_user(vcpu) || > + kvm_pmu_should_notify_user(vcpu)) { > ret = -EINTR; > run->exit_reason = KVM_EXIT_INTR; > } > @@ -713,6 +715,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run) > > /* Tell userspace about in-kernel device output levels */ > kvm_timer_update_run(vcpu); > + kvm_pmu_update_run(vcpu); Very minor nit: as we now have a couple of functions that are going to check the same thing (irqchip_in_kernel), we could consider moving the test here. I don't have strong feelings about it though. Thanks, M. -- Jazz is not dead. It just smells funny...