mbox series

[v11,00/12] KVM: arm64: Enable 'writable' ID registers

Message ID 20231003230408.3405722-1-oliver.upton@linux.dev (mailing list archive)
Headers show
Series KVM: arm64: Enable 'writable' ID registers | expand

Message

Oliver Upton Oct. 3, 2023, 11:03 p.m. UTC
Few more fixes that I threw on top:

v10 -> v11:
 - Drop the custom handling of FEAT_BC as it is now fixed on the arm64
   side (Kristina)
 - Bikeshed on the naming of the masks ioctl to keep things in the KVM_
   namespace
 - Apply more bikeshedding to the ioctl documentation, spinning off
   separate blocks for the 'generic' description and the Feature ID
   documentation
 - Fix referencing in the vCPU features doc
 - Fix use of uninitialized data in selftest

Jing Zhang (7):
  KVM: arm64: Allow userspace to get the writable masks for feature ID
    registers
  KVM: arm64: Document KVM_ARM_GET_REG_WRITABLE_MASKS
  KVM: arm64: Use guest ID register values for the sake of emulation
  KVM: arm64: Allow userspace to change ID_AA64MMFR{0-2}_EL1
  KVM: arm64: Allow userspace to change ID_AA64PFR0_EL1
  KVM: arm64: selftests: Import automatic generation of sysreg defs
  KVM: arm64: selftests: Test for setting ID register from usersapce

Oliver Upton (5):
  KVM: arm64: Reject attempts to set invalid debug arch version
  KVM: arm64: Bump up the default KVM sanitised debug version to v8p8
  KVM: arm64: Allow userspace to change ID_AA64ISAR{0-2}_EL1
  KVM: arm64: Allow userspace to change ID_AA64ZFR0_EL1
  KVM: arm64: Document vCPU feature selection UAPIs

 Documentation/virt/kvm/api.rst                |   52 +
 Documentation/virt/kvm/arm/index.rst          |    1 +
 Documentation/virt/kvm/arm/vcpu-features.rst  |   48 +
 arch/arm64/include/asm/kvm_host.h             |    2 +
 arch/arm64/include/uapi/asm/kvm.h             |   32 +
 arch/arm64/kvm/arm.c                          |   10 +
 arch/arm64/kvm/sys_regs.c                     |  181 +-
 include/uapi/linux/kvm.h                      |    2 +
 tools/arch/arm64/include/.gitignore           |    1 +
 tools/arch/arm64/include/asm/gpr-num.h        |   26 +
 tools/arch/arm64/include/asm/sysreg.h         |  839 ++----
 tools/arch/arm64/tools/gen-sysreg.awk         |  336 +++
 tools/arch/arm64/tools/sysreg                 | 2497 +++++++++++++++++
 tools/testing/selftests/kvm/Makefile          |   15 +-
 .../selftests/kvm/aarch64/aarch32_id_regs.c   |    4 +-
 .../selftests/kvm/aarch64/debug-exceptions.c  |   12 +-
 .../selftests/kvm/aarch64/page_fault_test.c   |    6 +-
 .../selftests/kvm/aarch64/set_id_regs.c       |  479 ++++
 .../selftests/kvm/lib/aarch64/processor.c     |    6 +-
 19 files changed, 3860 insertions(+), 689 deletions(-)
 create mode 100644 Documentation/virt/kvm/arm/vcpu-features.rst
 create mode 100644 tools/arch/arm64/include/.gitignore
 create mode 100644 tools/arch/arm64/include/asm/gpr-num.h
 create mode 100755 tools/arch/arm64/tools/gen-sysreg.awk
 create mode 100644 tools/arch/arm64/tools/sysreg
 create mode 100644 tools/testing/selftests/kvm/aarch64/set_id_regs.c


base-commit: 6465e260f48790807eef06b583b38ca9789b6072

Comments

Marc Zyngier Oct. 4, 2023, 9:40 a.m. UTC | #1
On Wed, 04 Oct 2023 00:03:56 +0100,
Oliver Upton <oliver.upton@linux.dev> wrote:
> 
> Few more fixes that I threw on top:
> 
> v10 -> v11:
>  - Drop the custom handling of FEAT_BC as it is now fixed on the arm64
>    side (Kristina)
>  - Bikeshed on the naming of the masks ioctl to keep things in the KVM_
>    namespace
>  - Apply more bikeshedding to the ioctl documentation, spinning off
>    separate blocks for the 'generic' description and the Feature ID
>    documentation
>  - Fix referencing in the vCPU features doc
>  - Fix use of uninitialized data in selftest

We'll probably need another bit on top to deal with Kirstina's
FEAT_MOPS series and make that field writable.

The minor nitpicks I had notwithstanding:

Reviewed-by: Marc Zyngier <maz@kernel.org>

Thanks,

	M.
Oliver Upton Oct. 4, 2023, 4:53 p.m. UTC | #2
On Wed, Oct 04, 2023 at 10:40:45AM +0100, Marc Zyngier wrote:
> On Wed, 04 Oct 2023 00:03:56 +0100,
> Oliver Upton <oliver.upton@linux.dev> wrote:
> > 
> > Few more fixes that I threw on top:
> > 
> > v10 -> v11:
> >  - Drop the custom handling of FEAT_BC as it is now fixed on the arm64
> >    side (Kristina)
> >  - Bikeshed on the naming of the masks ioctl to keep things in the KVM_
> >    namespace
> >  - Apply more bikeshedding to the ioctl documentation, spinning off
> >    separate blocks for the 'generic' description and the Feature ID
> >    documentation
> >  - Fix referencing in the vCPU features doc
> >  - Fix use of uninitialized data in selftest
> 
> We'll probably need another bit on top to deal with Kirstina's
> FEAT_MOPS series and make that field writable.

Yep, I was planning on a one-liner to unmask MOPS once I get Kristina's
patches applied.

> The minor nitpicks I had notwithstanding:
> 
> Reviewed-by: Marc Zyngier <maz@kernel.org>

Appreciated!
Oliver Upton Oct. 4, 2023, 5:46 p.m. UTC | #3
On Tue, 3 Oct 2023 23:03:56 +0000, Oliver Upton wrote:
> Few more fixes that I threw on top:
> 
> v10 -> v11:
>  - Drop the custom handling of FEAT_BC as it is now fixed on the arm64
>    side (Kristina)
>  - Bikeshed on the naming of the masks ioctl to keep things in the KVM_
>    namespace
>  - Apply more bikeshedding to the ioctl documentation, spinning off
>    separate blocks for the 'generic' description and the Feature ID
>    documentation
>  - Fix referencing in the vCPU features doc
>  - Fix use of uninitialized data in selftest
> 
> [...]

Applied to kvmarm/next, thanks!

[01/12] KVM: arm64: Allow userspace to get the writable masks for feature ID registers
        https://git.kernel.org/kvmarm/kvmarm/c/3f9cd0ca8484
[02/12] KVM: arm64: Document KVM_ARM_GET_REG_WRITABLE_MASKS
        https://git.kernel.org/kvmarm/kvmarm/c/6656cda0f3b2
[03/12] KVM: arm64: Use guest ID register values for the sake of emulation
        https://git.kernel.org/kvmarm/kvmarm/c/8b6958d6ace1
[04/12] KVM: arm64: Reject attempts to set invalid debug arch version
        https://git.kernel.org/kvmarm/kvmarm/c/a9bc4a1c1e0c
[05/12] KVM: arm64: Bump up the default KVM sanitised debug version to v8p8
        https://git.kernel.org/kvmarm/kvmarm/c/9f9917bc71b0
[06/12] KVM: arm64: Allow userspace to change ID_AA64ISAR{0-2}_EL1
        https://git.kernel.org/kvmarm/kvmarm/c/56d77aa8bdf5
[07/12] KVM: arm64: Allow userspace to change ID_AA64MMFR{0-2}_EL1
        https://git.kernel.org/kvmarm/kvmarm/c/d5a32b60dc18
[08/12] KVM: arm64: Allow userspace to change ID_AA64PFR0_EL1
        https://git.kernel.org/kvmarm/kvmarm/c/8cfd5be88ebe
[09/12] KVM: arm64: Allow userspace to change ID_AA64ZFR0_EL1
        https://git.kernel.org/kvmarm/kvmarm/c/f89fbb350dd7
[10/12] KVM: arm64: Document vCPU feature selection UAPIs
        https://git.kernel.org/kvmarm/kvmarm/c/dafa493dd01d
[11/12] KVM: arm64: selftests: Import automatic generation of sysreg defs
        https://git.kernel.org/kvmarm/kvmarm/c/6a4c6c6a56c1
[12/12] KVM: arm64: selftests: Test for setting ID register from usersapce
        https://git.kernel.org/kvmarm/kvmarm/c/3b44c2008bf0

--
Best,
Oliver