KVM: arm/arm64: Don't assume initialized vgic when setting PMU IRQ
authorChristoffer Dall <cdall@linaro.org>
Tue, 16 May 2017 17:53:50 +0000 (19:53 +0200)
committerChristoffer Dall <cdall@linaro.org>
Thu, 8 Jun 2017 15:58:54 +0000 (17:58 +0200)
commitebb127f2d6f32665643165289151bd20929d9931
tree4695b7aa5b5e3d1b126accc9bdba9c593d06ef4a
parentcb3f0ad881a6cee39c6a652b4aa4f12f341d98f0
KVM: arm/arm64: Don't assume initialized vgic when setting PMU IRQ

The PMU IRQ number is set through the VCPU device's KVM_SET_DEVICE_ATTR
ioctl handler for the KVM_ARM_VCPU_PMU_V3_IRQ attribute, but there is no
enforced or stated requirement that this must happen after initializing
the VGIC.  As a result, calling vgic_valid_spi() which relies on the
nr_spis being set during the VGIC init can incorrectly fail.

Introduce irq_is_spi, which determines if an IRQ number is within the
SPI range without verifying it against the actual VGIC properties.

Signed-off-by: Christoffer Dall <cdall@linaro.org>
Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
include/kvm/arm_vgic.h
virt/kvm/arm/pmu.c