All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/11] KVM: arm64: vgic: Missing checks for REDIST/CPU and ITS regions above the VM IPA size
@ 2021-10-05  1:19 ` Ricardo Koller
  0 siblings, 0 replies; 46+ messages in thread
From: Ricardo Koller @ 2021-10-05  1:19 UTC (permalink / raw)
  To: kvm, maz, kvmarm, drjones, eric.auger, alexandru.elisei
  Cc: Paolo Bonzini, oupton, james.morse, suzuki.poulose, shuah,
	jingzhangos, pshier, rananta, reijiw, Ricardo Koller

KVM doesn't check for redist, CPU interface, and ITS regions that extend
partially above the guest addressable IPA range (phys_size).  This can happen
when using the V[2|3]_ADDR_TYPE_CPU, ADDR_TYPE_REDIST[_REGION], or
ITS_ADDR_TYPE attributes to set a new region that extends partially above
phys_size (with the base below phys_size).  The issue is that vcpus can
potentially run into a situation where some redistributors are addressable and
others are not, or just the first half of the ITS is addressable.

Patches 1-5 fixes the issue for GICv2 and GICv3 (and the ITS). Patches 6-11 add
some selftests for all these fixes. While adding these tests, these add support
for some extra GICv2 and ITS device tests.

Changes:
v4: better vgic_check_iorange, drop vgic_check_ioaddr, minor changes on the
    selftests patches (better comments, title).
v3: add missing checks for GICv2 and the ITS, plus tests for the fixes.
v2: adding a test for KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, and returning E2BIG
    instead of EINVAL (thanks Alexandru and Eric).

Ricardo Koller (11):
  kvm: arm64: vgic: Introduce vgic_check_iorange
  KVM: arm64: vgic-v3: Check redist region is not above the VM IPA size
  KVM: arm64: vgic-v2: Check cpu interface region is not above the VM
    IPA size
  KVM: arm64: vgic-v3: Check ITS region is not above the VM IPA size
  KVM: arm64: vgic: Drop vgic_check_ioaddr()
  KVM: arm64: selftests: Make vgic_init gic version agnostic
  KVM: arm64: selftests: Make vgic_init/vm_gic_create version agnostic
  KVM: arm64: selftests: Add some tests for GICv2 in vgic_init
  KVM: arm64: selftests: Add tests for GIC redist/cpuif partially above
    IPA range
  KVM: arm64: selftests: Add test for legacy GICv3 REDIST base partially
    above IPA range
  KVM: arm64: selftests: Add init ITS device test

 arch/arm64/kvm/vgic/vgic-its.c                |   4 +-
 arch/arm64/kvm/vgic/vgic-kvm-device.c         |  25 +-
 arch/arm64/kvm/vgic/vgic-mmio-v3.c            |   6 +-
 arch/arm64/kvm/vgic/vgic-v3.c                 |   6 +-
 arch/arm64/kvm/vgic/vgic.h                    |   5 +-
 .../testing/selftests/kvm/aarch64/vgic_init.c | 366 +++++++++++++-----
 6 files changed, 298 insertions(+), 114 deletions(-)

-- 
2.33.0.800.g4c38ced690-goog


^ permalink raw reply	[flat|nested] 46+ messages in thread

end of thread, other threads:[~2021-10-11  8:43 UTC | newest]

Thread overview: 46+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-05  1:19 [PATCH v4 00/11] KVM: arm64: vgic: Missing checks for REDIST/CPU and ITS regions above the VM IPA size Ricardo Koller
2021-10-05  1:19 ` Ricardo Koller
2021-10-05  1:19 ` [PATCH v4 01/11] kvm: arm64: vgic: Introduce vgic_check_iorange Ricardo Koller
2021-10-05  1:19   ` Ricardo Koller
2021-10-05  1:19 ` [PATCH v4 02/11] KVM: arm64: vgic-v3: Check redist region is not above the VM IPA size Ricardo Koller
2021-10-05  1:19   ` Ricardo Koller
2021-10-05  1:19 ` [PATCH v4 03/11] KVM: arm64: vgic-v2: Check cpu interface " Ricardo Koller
2021-10-05  1:19   ` Ricardo Koller
2021-10-05  1:19 ` [PATCH v4 04/11] KVM: arm64: vgic-v3: Check ITS " Ricardo Koller
2021-10-05  1:19   ` Ricardo Koller
2021-10-05  1:19 ` [PATCH v4 05/11] KVM: arm64: vgic: Drop vgic_check_ioaddr() Ricardo Koller
2021-10-05  1:19   ` Ricardo Koller
2021-10-05  7:56   ` Eric Auger
2021-10-05  7:56     ` Eric Auger
2021-10-05  1:19 ` [PATCH v4 06/11] KVM: arm64: selftests: Make vgic_init gic version agnostic Ricardo Koller
2021-10-05  1:19   ` Ricardo Koller
2021-10-06  9:46   ` Andrew Jones
2021-10-06  9:46     ` Andrew Jones
2021-10-05  1:19 ` [PATCH v4 07/11] KVM: arm64: selftests: Make vgic_init/vm_gic_create " Ricardo Koller
2021-10-05  1:19   ` Ricardo Koller
2021-10-06  9:47   ` Andrew Jones
2021-10-06  9:47     ` Andrew Jones
2021-10-05  1:19 ` [PATCH v4 08/11] KVM: arm64: selftests: Add some tests for GICv2 in vgic_init Ricardo Koller
2021-10-05  1:19   ` Ricardo Koller
2021-10-05  8:09   ` Eric Auger
2021-10-05  8:09     ` Eric Auger
2021-10-06  9:52   ` Andrew Jones
2021-10-06  9:52     ` Andrew Jones
2021-10-05  1:19 ` [PATCH v4 09/11] KVM: arm64: selftests: Add tests for GIC redist/cpuif partially above IPA range Ricardo Koller
2021-10-05  1:19   ` Ricardo Koller
2021-10-05  8:12   ` Eric Auger
2021-10-05  8:12     ` Eric Auger
2021-10-06 10:07   ` Andrew Jones
2021-10-06 10:07     ` Andrew Jones
2021-10-05  1:19 ` [PATCH v4 10/11] KVM: arm64: selftests: Add test for legacy GICv3 REDIST base " Ricardo Koller
2021-10-05  1:19   ` Ricardo Koller
2021-10-06 10:12   ` Andrew Jones
2021-10-06 10:12     ` Andrew Jones
2021-10-05  1:19 ` [PATCH v4 11/11] KVM: arm64: selftests: Add init ITS device test Ricardo Koller
2021-10-05  1:19   ` Ricardo Koller
2021-10-05  8:06   ` Eric Auger
2021-10-05  8:06     ` Eric Auger
2021-10-06 10:13   ` Andrew Jones
2021-10-06 10:13     ` Andrew Jones
2021-10-11  8:43 ` [PATCH v4 00/11] KVM: arm64: vgic: Missing checks for REDIST/CPU and ITS regions above the VM IPA size Marc Zyngier
2021-10-11  8:43   ` Marc Zyngier

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.