RE: [PATCH v5 00/26] KVM: arm64: SVE guest support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Dave,

> -----Original Message-----
> From: linux-arm-kernel <linux-arm-kernel-bounces@xxxxxxxxxxxxxxxxxxx> On
> Behalf Of Dave Martin
> Sent: Tuesday, February 19, 2019 4:52 AM
> To: kvmarm@xxxxxxxxxxxxxxxxxxxxx
> Cc: Peter Maydell <peter.maydell@xxxxxxxxxx>; Okamoto, Takayuki/?本 高幸
> <tokamoto@xxxxxxxxxxxxxx>; Christoffer Dall <cdall@xxxxxxxxxx>; Ard
> Biesheuvel <ard.biesheuvel@xxxxxxxxxx>; Marc Zyngier
> <marc.zyngier@xxxxxxx>; Catalin Marinas <catalin.marinas@xxxxxxx>; Will
> Deacon <will.deacon@xxxxxxx>; Zhang, Lei/? 雷
> <zhang.lei@xxxxxxxxxxxxxx>; Julien Grall <julien.grall@xxxxxxx>; Alex Bennée
> <alex.bennee@xxxxxxxxxx>; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
> Subject: [PATCH v5 00/26] KVM: arm64: SVE guest support
> 
> This series implements support for allowing KVM guests to use the Arm
> Scalable Vector Extension (SVE), superseding the previous v4 series [1].
> 
> The patches are also available on a branch for reviewer convenience. [2]
> 
> The patches are based on v5.0-rc6.
> 
> They depend on another small series currently under review [3] that does a bit
> of relevant refactoring (as well as fixing an anomaly not directly related to this
> series).  A base branch [4] is provided so that reviewers don't need to hunt
> down both series independently.
[>] 
I tested the patch on A64FX chip which SVE feature had been implemented.
All of tests have been passed.
Please add follows :
Tested-by: zhang.lei <zhang.lei@xxxxxxxxxxxxxx>

> 
> This series contains no major update except for the removal of multiple register
> slice support in the user register access ioctls.  The ABI is kept as-is so that
> this functionality can be added back in later on if/when needed.  ioctl access
> to nonexistent slices now yields ENOENT, which is more consistent with the
> notion of an absent register.
> 
> For a description of minor updates, see the individual patches.
> 
> 
> Functionality testing and stress-testing has been done, using a hacked-up
> kvmtool [5]:
> 
>  * Arm Fast Model: full testing of arm64 defconfig, including running
>    non-SVE and SVE guests with mixtures of vector lengths.  limited
>    testing of other configurations.
> 
>  * ThunderX2: basic testing of arm64 defconfig, including booting guests
>    (no SVE support on this hardware).
> 
>  * Full build-bisect testing and sparse testing of every commit done
>    for arm64 (defconfig, CONFIG_ARM64_SVE=n, CONFIG_KVM=n) and arm
>    (multi_v7_defconfig, CONFIG_KVM=y).  One new sparse warning,
>    probably spurious (see note in patch 22).
> 
> 
> AArch32 host testing is pending.  I will ping this series with a reply to the cover
> letter when that testing has been completed.
> 
> 
> Known issues:
> 
>  * **Possible bug**
> 
>    SVE state corruption has been in the host when running on the Arm
>    Fast Model.
> 
>    After some investigation with the model engineers, it appears that
>    there may be a model bug in this area.  I have also obtained detailed
>    trace of failure cases, which is also suggestive of a model bug.  No
>    clear evidence has been obtained to show that there is a bug in
>    Linux, so far.
> 
>    All available evidence suggests that this bug will not affect non-SVE
>    hardware: the symptom is unexpected zeroing of bits 128 and above of
>    the vector registers (which don't exist prior to SVE).
> 
>  * kvmtool support is not mature
> 
> 
> [1] [RFC PATCH v4 00/24] KVM: arm64: SVE guest support
> https://lists.cs.columbia.edu/pipermail/kvmarm/2019-January/034134.html
> 
> [2] This series in git:
> http://linux-arm.org/git?p=linux-dm.git;a=shortlog;h=refs/heads/sve-kvm/v5
> /head
> git://linux-arm.org/linux-dm.git sve-kvm/v5/head
> 
> [3] [PATCH v2 0/2] Fix KVM_GET_REG_LIST invalid register ID regression
> https://lists.cs.columbia.edu/pipermail/kvmarm/2018-December/033810.htm
> l
> 
> [4] Base of this series in git:
> http://linux-arm.org/git?p=linux-dm.git;a=shortlog;h=refs/heads/sve-kvm/v5
> /base
> git://linux-arm.org/linux-dm.git sve-kvm/v5/base
> 
> [5] [RFC PATCH 00/12] arm64: SVE guest support test hacks
> https://lists.cs.columbia.edu/pipermail/kvmarm/2019-January/034162.html
> 
> 
> Dave Martin (26):
>   KVM: Documentation: Document arm64 core registers in detail
>   arm64: fpsimd: Always set TIF_FOREIGN_FPSTATE on task state flush
>   KVM: arm64: Delete orphaned declaration for __fpsimd_enabled()
>   KVM: arm64: Refactor kvm_arm_num_regs() for easier maintenance
>   KVM: arm64: Add missing #include of <linux/bitmap.h> to kvm_host.h
>   arm64/sve: Check SVE virtualisability
>   arm64/sve: Clarify role of the VQ map maintenance functions
>   arm64/sve: Enable SVE state tracking for non-task contexts
>   KVM: arm64: Add a vcpu flag to control SVE visibility for the guest
>   KVM: arm64: Propagate vcpu into read_id_reg()
>   KVM: arm64: Extend reset_unknown() to handle mixed RES0/UNKNOWN
>     registers
>   KVM: arm64: Support runtime sysreg visibility filtering
>   KVM: arm64/sve: System register context switch and access support
>   KVM: arm64/sve: Context switch the SVE registers
>   KVM: Allow 2048-bit register access via ioctl interface
>   KVM: arm64: Add missing #include of <linux/string.h> in guest.c
>   KVM: arm64: Reject ioctl access to FPSIMD V-regs on SVE vcpus
>   KVM: arm64/sve: Add SVE support to register access ioctl interface
>   KVM: arm64: Enumerate SVE register indices for KVM_GET_REG_LIST
>   arm64/sve: In-kernel vector length availability query interface
>   KVM: arm/arm64: Add hook to finalize the vcpu configuration
>   KVM: arm64/sve: Add pseudo-register for the guest's vector lengths
>   KVM: arm64/sve: Allow userspace to enable SVE for vcpus
>   KVM: arm64: Add a capabillity to advertise SVE support
>   KVM: Document errors for KVM_GET_ONE_REG and KVM_SET_ONE_REG
>   KVM: arm64/sve: Document KVM API extensions for SVE
> 
>  Documentation/virtual/kvm/api.txt |  93 ++++++++++
>  arch/arm/include/asm/kvm_host.h   |   4 +
>  arch/arm64/include/asm/fpsimd.h   |  33 +++-
>  arch/arm64/include/asm/kvm_host.h |  35 +++-
>  arch/arm64/include/asm/kvm_hyp.h  |   1 -
>  arch/arm64/include/asm/sysreg.h   |   3 +
>  arch/arm64/include/uapi/asm/kvm.h |  22 +++
>  arch/arm64/kernel/cpufeature.c    |   2 +-
>  arch/arm64/kernel/fpsimd.c        | 172 +++++++++++++------
>  arch/arm64/kernel/signal.c        |   5 -
>  arch/arm64/kvm/fpsimd.c           |  17 +-
>  arch/arm64/kvm/guest.c            | 348
> +++++++++++++++++++++++++++++++++++---
>  arch/arm64/kvm/hyp/switch.c       |  69 ++++++--
>  arch/arm64/kvm/reset.c            |  87 +++++++++-
>  arch/arm64/kvm/sys_regs.c         | 144 ++++++++++++++--
>  arch/arm64/kvm/sys_regs.h         |  24 ++-
>  include/uapi/linux/kvm.h          |   2 +
>  virt/kvm/arm/arm.c                |   8 +
>  18 files changed, 944 insertions(+), 125 deletions(-)
> 
> --
> 2.1.4
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel


Thanks,
Zhang Lei
_______________________________________________
kvmarm mailing list
kvmarm@xxxxxxxxxxxxxxxxxxxxx
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux