linux/arch/arm64/kvm/vgic
Marc Zyngier 9739f6ef05 KVM: arm64: Workaround firmware wrongly advertising GICv2-on-v3 compatibility
It looks like we have broken firmware out there that wrongly advertises
a GICv2 compatibility interface, despite the CPUs not being able to deal
with it.

To work around this, check that the CPU initialising KVM is actually able
to switch to MMIO instead of system registers, and use that as a
precondition to enable GICv2 compatibility in KVM.

Note that the detection happens on a single CPU. If the firmware is
lying *and* that the CPUs are asymetric, all hope is lost anyway.

Reported-by: Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Message-Id: <20210305185254.3730990-8-maz@kernel.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2021-03-06 04:18:41 -05:00
..
trace.h
vgic-debug.c KVM: arm64: vgic-debug: Convert to use DEFINE_SEQ_ATTRIBUTE macro 2020-09-18 16:17:27 +01:00
vgic-init.c KVM: arm64: Consolidate dist->ready setting into kvm_vgic_map_resources() 2020-12-27 14:39:14 +00:00
vgic-irqfd.c KVM: arm64: Allow in-atomic injection of SPIs 2020-07-05 17:26:15 +01:00
vgic-its.c KVM: arm64: Allow in-atomic injection of SPIs 2020-07-05 17:26:15 +01:00
vgic-kvm-device.c
vgic-mmio-v2.c
vgic-mmio-v3.c KVM: arm64: vgic-v3: Drop the reporting of GICR_TYPER.Last for userspace 2020-11-17 18:51:09 +00:00
vgic-mmio.c
vgic-mmio.h
vgic-v2.c KVM: arm64: Consolidate dist->ready setting into kvm_vgic_map_resources() 2020-12-27 14:39:14 +00:00
vgic-v3.c KVM: arm64: Workaround firmware wrongly advertising GICv2-on-v3 compatibility 2021-03-06 04:18:41 -05:00
vgic-v4.c KVM: arm64: Delay the polling of the GICR_VPENDBASER.Dirty bit 2020-11-30 11:18:29 +00:00
vgic.c KVM: arm64: Delay the polling of the GICR_VPENDBASER.Dirty bit 2020-11-30 11:18:29 +00:00
vgic.h