[PATCH v4 00/10] ARM: KVM: Support for vgic-v3
Vladimir Murzin
vladimir.murzin at arm.com
Mon Sep 12 07:49:14 PDT 2016
Hi,
This is an attempt to make use vgic-v3 under arch/arm since
save-restore functionality got re-written in C and can be shared
between arm/arm64 like it has already been done for vgic-v2 and timer.
With this patches I'm able to get 32 core an AArch32 ARMv8 guest boot:
...
GICv3: CPU31: found redistributor 703 region 0:0x000000003ffd0000
CPU31: thread -1, cpu 3, socket 7, mpidr 80000703
Brought up 32 CPUs
SMP: Total of 32 processors activated (768.00 BogoMIPS).
CPU: All CPU(s) started in SVC mode.
...
Additionally, quite lightweight test based on Self IPI guest test[1]
has been run with up to 255 cpus.
[1] http://www.spinics.net/lists/kvm/msg128974.html
Changelog:
v3 -> v4
- rebased on v4.8-rc6
- dropped hyp_data in preference to embedding the static key
in kvm_vgic_global_state
- GICv3 cpu sysreg mappings were moved out to separate patch
- vgic patch was split into two: changes extract_bytes() and
fixes for compiler's warnings
- change for MPIDR_AFFINITY_LEVEL was dropped
- 32-bit system register accessors were moved under
CONFIG_CPU_CP15
v2 -> v3
- rebased on v4.8-rc5
- commit messages are reworked to be more precise and clear (I
hope so)
- MPIDR_HWID_BITMASK is used to discard Aff3 in
MPIDR_AFFINITY_LEVEL macro
- cast to u64 is used instead of abuse of GENMASK_ULL while
building value for typer register
- static keys are used to select GIC backend
- config option to guard ITS code is moved to separate patch
v1 -> v2
- rebased on v4.8-rc2
- introduced guard for ITS code
Thanks!
Vladimir Murzin (10):
arm64: KVM: Use static keys for selecting the GIC backend
arm64: KVM: Move GIC accessors to arch_gicv3.h
arm64: KVM: Move vgic-v3 save/restore to virt/kvm/arm/hyp
KVM: arm64: vgic-its: Introduce config option to guard ITS specific
code
KVM: arm: vgic: Fix compiler warnings when built for 32-bit
KVM: arm: vgic: Support 64-bit data manipulation on 32-bit host
systems
ARM: Introduce MPIDR_LEVEL_SHIFT macro
ARM: Move system register accessors to asm/cp15.h
ARM: gic-v3: Introduce 32-to-64-bit mappings for GICv3 cpu registers
ARM: KVM: Support vgic-v3
arch/arm/include/asm/arch_gicv3.h | 91 +++++++++++++++++----
arch/arm/include/asm/cp15.h | 15 ++++
arch/arm/include/asm/cputype.h | 1 +
arch/arm/include/asm/kvm_asm.h | 3 +
arch/arm/include/asm/kvm_host.h | 5 ++
arch/arm/include/asm/kvm_hyp.h | 18 +---
arch/arm/include/uapi/asm/kvm.h | 7 ++
arch/arm/kvm/Makefile | 2 +
arch/arm/kvm/coproc.c | 35 ++++++++
arch/arm/kvm/hyp/Makefile | 1 +
arch/arm/kvm/hyp/switch.c | 12 ++-
arch/arm64/include/asm/arch_gicv3.h | 13 +++
arch/arm64/kvm/Kconfig | 4 +-
arch/arm64/kvm/hyp/Makefile | 2 +-
arch/arm64/kvm/hyp/switch.c | 21 ++---
include/kvm/arm_vgic.h | 12 +--
{arch/arm64/kvm => virt/kvm/arm}/hyp/vgic-v3-sr.c | 13 ---
virt/kvm/arm/vgic/vgic-init.c | 4 +
virt/kvm/arm/vgic/vgic-kvm-device.c | 11 +--
virt/kvm/arm/vgic/vgic-mmio-v3.c | 8 +-
virt/kvm/arm/vgic/vgic-mmio.c | 2 -
virt/kvm/arm/vgic/vgic-mmio.h | 4 +-
virt/kvm/arm/vgic/vgic.c | 2 +-
virt/kvm/arm/vgic/vgic.h | 54 +-----------
24 files changed, 205 insertions(+), 135 deletions(-)
rename {arch/arm64/kvm => virt/kvm/arm}/hyp/vgic-v3-sr.c (96%)
--
1.7.9.5
More information about the linux-arm-kernel
mailing list