[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