[PATCH v3 0/8] ARM: KVM: Support for vgic-v3
Vladimir Murzin
vladimir.murzin at arm.com
Fri Sep 9 00:58:23 PDT 2016
+Christoffer
I should have checked my send-email command twice...
Vladimir
On 08/09/16 17:06, Vladimir Murzin wrote:
> 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:
>
> 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 (8):
> 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: Support 64-bit data manipulation on 32-bit host
> systems
> ARM: Change MPIDR_AFFINITY_LEVEL to ignore Aff3
> ARM: Move system register accessors to asm/cp15.h
> 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 | 3 +-
> arch/arm/include/asm/kvm_asm.h | 3 +
> arch/arm/include/asm/kvm_host.h | 13 +++
> arch/arm/include/asm/kvm_hyp.h | 20 +----
> arch/arm/include/asm/virt.h | 8 ++
> arch/arm/include/uapi/asm/kvm.h | 7 ++
> arch/arm/kernel/vmlinux.lds.S | 6 ++
> arch/arm/kvm/Makefile | 2 +
> arch/arm/kvm/arm.c | 19 +++++
> arch/arm/kvm/coproc.c | 36 ++++++++
> arch/arm/kvm/hyp/Makefile | 1 +
> arch/arm/kvm/hyp/switch.c | 12 ++-
> arch/arm64/include/asm/arch_gicv3.h | 13 +++
> arch/arm64/include/asm/kvm_host.h | 15 ++++
> arch/arm64/include/asm/kvm_hyp.h | 2 -
> arch/arm64/include/asm/virt.h | 7 ++
> arch/arm64/kernel/vmlinux.lds.S | 6 ++
> arch/arm64/kvm/Kconfig | 4 +-
> arch/arm64/kvm/hyp/Makefile | 2 +-
> arch/arm64/kvm/hyp/switch.c | 19 ++---
> include/kvm/arm_vgic.h | 8 --
> {arch/arm64/kvm => virt/kvm/arm}/hyp/vgic-v3-sr.c | 13 ---
> 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.h | 54 +-----------
> 29 files changed, 265 insertions(+), 139 deletions(-)
> rename {arch/arm64/kvm => virt/kvm/arm}/hyp/vgic-v3-sr.c (96%)
>
More information about the linux-arm-kernel
mailing list