mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-30 01:56:42 +07:00
arm/arm64: KVM: vgic: Check for !irqchip_in_kernel() when mapping resources
Untilb26e5fdac4
("arm/arm64: KVM: introduce per-VM ops"), kvm_vgic_map_resources() used to include a check on irqchip_in_kernel(), and vgic_v2_map_resources() still has it. But now vm_ops are not initialized until we call kvm_vgic_create(). Therefore kvm_vgic_map_resources() can being called without a VGIC, and we die because vm_ops.map_resources is NULL. Fixing this restores QEMU's kernel-irqchip=off option to a working state, allowing to use GIC emulation in userspace. Fixes:b26e5fdac4
("arm/arm64: KVM: introduce per-VM ops") Cc: stable@vger.kernel.org Signed-off-by: Pavel Fedin <p.fedin@samsung.com> [maz: reworked commit message] Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
This commit is contained in:
parent
ca09f02f12
commit
c2f58514cf
@ -446,7 +446,7 @@ static int kvm_vcpu_first_run_init(struct kvm_vcpu *vcpu)
|
|||||||
* Map the VGIC hardware resources before running a vcpu the first
|
* Map the VGIC hardware resources before running a vcpu the first
|
||||||
* time on this VM.
|
* time on this VM.
|
||||||
*/
|
*/
|
||||||
if (unlikely(!vgic_ready(kvm))) {
|
if (unlikely(irqchip_in_kernel(kvm) && !vgic_ready(kvm))) {
|
||||||
ret = kvm_vgic_map_resources(kvm);
|
ret = kvm_vgic_map_resources(kvm);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
Loading…
Reference in New Issue
Block a user