arm/arm64: KVM: Detect vGIC presence at runtime
authorPavel Fedin <p.fedin@samsung.com>
Fri, 18 Dec 2015 11:38:43 +0000 (14:38 +0300)
committerAlex Shi <alex.shi@linaro.org>
Wed, 9 Nov 2016 14:21:17 +0000 (22:21 +0800)
commit6a852456e1259a8986e8c0b45a984b904ee9466e
tree5b7da59f6710e4e766db498e455def36978b1f25
parent1a1549bd76b83aef16938f575af8f5a1ecf3ed1f
arm/arm64: KVM: Detect vGIC presence at runtime

Before commit 662d9715840aef44dcb573b0f9fab9e8319c868a
("arm/arm64: KVM: Kill CONFIG_KVM_ARM_{VGIC,TIMER}") is was possible to
compile the kernel without vGIC and vTimer support. Commit message says
about possibility to detect vGIC support in runtime, but this has never
been implemented.

This patch introduces runtime check, restoring the lost functionality.
It again allows to use KVM on hardware without vGIC. Interrupt
controller has to be emulated in userspace in this case.

-ENODEV return code from probe function means there's no GIC at all.
-ENXIO happens when, for example, there is GIC node in the device tree,
but it does not specify vGIC resources. Any other error code is still
treated as full stop because it might mean some really serious problems.

Signed-off-by: Pavel Fedin <p.fedin@samsung.com>
Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
(cherry picked from commit c7da6fa43cb1c5e649da0f478a491feb9208cae7)
Signed-off-by: Alex Shi <alex.shi@linaro.org>
arch/arm/kvm/arm.c