diff options
author | Radim Krčmář <rkrcmar@redhat.com> | 2016-09-29 16:01:51 +0200 |
---|---|---|
committer | Radim Krčmář <rkrcmar@redhat.com> | 2016-09-29 16:01:51 +0200 |
commit | 45ca877ad0519a02c22aaff2e2cdf333a1421a0a (patch) | |
tree | d7abbc767611379f878bf30b8c3b507d4e31982e /virt/kvm/arm/pmu.c | |
parent | c5a6d5f7faad8549bb5ff7e3e5792e33933c5b9f (diff) | |
parent | 0099b7701f5296a758d9e6b945ec96f96847cc2f (diff) | |
download | linux-45ca877ad0519a02c22aaff2e2cdf333a1421a0a.tar.bz2 |
Merge tag 'kvm-arm-for-v4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into next
KVM/ARM Changes for v4.9
- Various cleanups and removal of redundant code
- Two important fixes for not using an in-kernel irqchip
- A bit of optimizations
- Handle SError exceptions and present them to guests if appropriate
- Proxying of GICV access at EL2 if guest mappings are unsafe
- GICv3 on AArch32 on ARMv8
- Preparations for GICv3 save/restore, including ABI docs
Diffstat (limited to 'virt/kvm/arm/pmu.c')
-rw-r--r-- | virt/kvm/arm/pmu.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/virt/kvm/arm/pmu.c b/virt/kvm/arm/pmu.c index a027569facfa..6e9c40eea208 100644 --- a/virt/kvm/arm/pmu.c +++ b/virt/kvm/arm/pmu.c @@ -423,6 +423,14 @@ static int kvm_arm_pmu_v3_init(struct kvm_vcpu *vcpu) if (!kvm_arm_support_pmu_v3()) return -ENODEV; + /* + * We currently require an in-kernel VGIC to use the PMU emulation, + * because we do not support forwarding PMU overflow interrupts to + * userspace yet. + */ + if (!irqchip_in_kernel(vcpu->kvm) || !vgic_initialized(vcpu->kvm)) + return -ENODEV; + if (!test_bit(KVM_ARM_VCPU_PMU_V3, vcpu->arch.features) || !kvm_arm_pmu_irq_initialized(vcpu)) return -ENXIO; |