linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [GIT PULL] KVM/arm64 updates for 6.12
@ 2024-09-12  9:12 Marc Zyngier
  2024-09-14 13:33 ` Paolo Bonzini
  0 siblings, 1 reply; 2+ messages in thread
From: Marc Zyngier @ 2024-09-12  9:12 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: Alexandru Elisei, Anshuman Khandual, Catalin Marinas,
	Colton Lewis, Fuad Tabba, Joey Gouly, Mark Brown, Oliver Upton,
	Ricardo Koller, Sean Christopherson, Sebastian Ene,
	Snehal Koukuntla, Steven Price, Vincent Donnefort, Will Deacon,
	James Morse, Suzuki K Poulose, Zenghui Yu, kvmarm,
	linux-arm-kernel, kvm

Hi Paolo,

Here's the set of KVM/arm64 changes 6.12. The only two user-visible
features are FP8 support and the new Stage-2 page-table dumper. The NV
onslaught continues with the addition of the address translation
instruction emulation, and we have a bunch of fixes all over the
place (details in the tag text below).

Note that there is a very minor conflict with arm64 in -next, which is
trivially resolved as [1].

Please pull,

	M.

[1] https://lore.kernel.org/linux-next/20240905160856.14e95d14@canb.auug.org.au

The following changes since commit 5be63fc19fcaa4c236b307420483578a56986a37:

  Linux 6.11-rc5 (2024-08-25 19:07:11 +1200)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git tags/kvmarm-6.12

for you to fetch changes up to 17a0005644994087794f6552d7a5e105d6976184:

  Merge branch kvm-arm64/visibility-cleanups into kvmarm-master/next (2024-09-12 08:38:17 +0100)

----------------------------------------------------------------
KVM/arm64 updates for 6.12

* New features:

  - Add a Stage-2 page table dumper, reusing the main ptdump
    infrastructure, and allowing easier debugging of the our
    page-table infrastructure

  - Add FP8 support to the KVM/arm64 floating point handling.

  - Add NV support for the AT family of instructions, which mostly
    results in adding a page table walker that deals with most of the
    complexity of the architecture.

* Improvements, fixes and cleanups:

  - Add selftest checks for a bunch of timer emulation corner cases

  - Fix the multiple of cases where KVM/arm64 doesn't correctly handle
    the guest trying to use a GICv3 that isn't advertised

  - Remove REG_HIDDEN_USER from the sysreg infrastructure, making
    things little more simple

  - Prevent MTE tags being restored by userspace if we are actively
    logging writes, as that's a recipe for disaster

  - Correct the refcount on a page that is not considered for MTE tag
    copying (such as a device)

  - Relax the synchronisation when walking a page table to split block
    mappings, moving it at the end the walk, as there is no need to
    perform it on every store.

  - Fix boundary check when transfering memory using FFA

  - Fix pKVM TLB invalidation, only affecting currently out of tree
    code but worth addressing for peace of mind

----------------------------------------------------------------
Colton Lewis (3):
      KVM: arm64: Move data barrier to end of split walk
      KVM: arm64: selftests: Ensure pending interrupts are handled in arch_timer test
      KVM: arm64: selftests: Add arch_timer_edge_cases selftest

Joey Gouly (1):
      KVM: arm64: Make kvm_at() take an OP_AT_*

Marc Zyngier (47):
      KVM: arm64: Move SVCR into the sysreg array
      KVM: arm64: Add predicate for FPMR support in a VM
      KVM: arm64: Move FPMR into the sysreg array
      KVM: arm64: Add save/restore support for FPMR
      KVM: arm64: Honor trap routing for FPMR
      KVM: arm64: Expose ID_AA64FPFR0_EL1 as a writable ID reg
      KVM: arm64: Enable FP8 support when available and configured
      KVM: arm64: Expose ID_AA64PFR2_EL1 to userspace and guests
      Merge branch kvm-arm64/tlbi-fixes-6.12 into kvmarm-master/next
      KVM: arm64: Move GICv3 trap configuration to kvm_calculate_traps()
      KVM: arm64: Force SRE traps when SRE access is not enabled
      KVM: arm64: Force GICv3 trap activation when no irqchip is configured on VHE
      KVM: arm64: Add helper for last ditch idreg adjustments
      KVM: arm64: Zero ID_AA64PFR0_EL1.GIC when no GICv3 is presented to the guest
      KVM: arm64: Add ICH_HCR_EL2 to the vcpu state
      KVM: arm64: Add trap routing information for ICH_HCR_EL2
      KVM: arm64: Honor guest requested traps in GICv3 emulation
      KVM: arm64: Make most GICv3 accesses UNDEF if they trap
      KVM: arm64: Unify UNDEF injection helpers
      KVM: arm64: Add selftest checking how the absence of GICv3 is handled
      arm64: Add missing APTable and TCR_ELx.HPD masks
      arm64: Add PAR_EL1 field description
      arm64: Add system register encoding for PSTATE.PAN
      arm64: Add ESR_ELx_FSC_ADDRSZ_L() helper
      KVM: arm64: nv: Enforce S2 alignment when contiguous bit is set
      KVM: arm64: nv: Turn upper_attr for S2 walk into the full descriptor
      KVM: arm64: nv: Honor absence of FEAT_PAN2
      KVM: arm64: nv: Add basic emulation of AT S1E{0,1}{R,W}
      KVM: arm64: nv: Add basic emulation of AT S1E1{R,W}P
      KVM: arm64: nv: Add basic emulation of AT S1E2{R,W}
      KVM: arm64: nv: Add emulation of AT S12E{0,1}{R,W}
      KVM: arm64: nv: Make ps_to_output_size() generally available
      KVM: arm64: nv: Add SW walker for AT S1 emulation
      KVM: arm64: nv: Sanitise SCTLR_EL1.EPAN according to VM configuration
      KVM: arm64: nv: Make AT+PAN instructions aware of FEAT_PAN3
      KVM: arm64: nv: Plumb handling of AT S1* traps from EL2
      KVM: arm64: nv: Add support for FEAT_ATS1A
      KVM: arm64: Simplify handling of CNTKCTL_EL12
      KVM: arm64: Simplify visibility handling of AArch32 SPSR_*
      KVM: arm64: Get rid of REG_HIDDEN_USER visibility qualifier
      Merge branch kvm-arm64/mmu-misc-6.12 into kvmarm-master/next
      Merge branch kvm-arm64/fpmr into kvmarm-master/next
      Merge branch kvm-arm64/vgic-sre-traps into kvmarm-master/next
      Merge branch kvm-arm64/selftests-6.12 into kvmarm-master/next
      Merge branch kvm-arm64/nv-at-pan into kvmarm-master/next
      Merge branch kvm-arm64/s2-ptdump into kvmarm-master/next
      Merge branch kvm-arm64/visibility-cleanups into kvmarm-master/next

Oliver Upton (1):
      KVM: arm64: selftests: Cope with lack of GICv3 in set_id_regs

Sean Christopherson (2):
      KVM: arm64: Release pfn, i.e. put page, if copying MTE tags hits ZONE_DEVICE
      KVM: arm64: Disallow copying MTE to guest memory while KVM is dirty logging

Sebastian Ene (5):
      KVM: arm64: Move pagetable definitions to common header
      arm64: ptdump: Expose the attribute parsing functionality
      arm64: ptdump: Use the ptdump description from a local context
      arm64: ptdump: Don't override the level when operating on the stage-2 tables
      KVM: arm64: Register ptdump with debugfs on guest creation

Snehal Koukuntla (1):
      KVM: arm64: Add memory length checks and remove inline in do_ffa_mem_xfer

Will Deacon (2):
      KVM: arm64: Invalidate EL1&0 TLB entries for all VMIDs in nvhe hyp init
      KVM: arm64: Ensure TLBI uses correct VMID after changing context

 arch/arm64/include/asm/esr.h                       |    5 +-
 arch/arm64/include/asm/kvm_arm.h                   |    1 +
 arch/arm64/include/asm/kvm_asm.h                   |    6 +-
 arch/arm64/include/asm/kvm_host.h                  |   22 +-
 arch/arm64/include/asm/kvm_mmu.h                   |    6 +
 arch/arm64/include/asm/kvm_nested.h                |   40 +-
 arch/arm64/include/asm/kvm_pgtable.h               |   42 +
 arch/arm64/include/asm/pgtable-hwdef.h             |    9 +
 arch/arm64/include/asm/ptdump.h                    |   43 +-
 arch/arm64/include/asm/sysreg.h                    |   22 +
 arch/arm64/kvm/Kconfig                             |   17 +
 arch/arm64/kvm/Makefile                            |    3 +-
 arch/arm64/kvm/arm.c                               |   15 +-
 arch/arm64/kvm/at.c                                | 1101 ++++++++++++++++++++
 arch/arm64/kvm/emulate-nested.c                    |   81 +-
 arch/arm64/kvm/fpsimd.c                            |    5 +-
 arch/arm64/kvm/guest.c                             |    6 +
 arch/arm64/kvm/hyp/include/hyp/fault.h             |    2 +-
 arch/arm64/kvm/hyp/include/hyp/switch.h            |    3 +
 arch/arm64/kvm/hyp/nvhe/ffa.c                      |   21 +-
 arch/arm64/kvm/hyp/nvhe/hyp-init.S                 |    2 +-
 arch/arm64/kvm/hyp/nvhe/hyp-main.c                 |    9 +
 arch/arm64/kvm/hyp/nvhe/switch.c                   |    9 +
 arch/arm64/kvm/hyp/nvhe/tlb.c                      |    6 +-
 arch/arm64/kvm/hyp/pgtable.c                       |   48 +-
 arch/arm64/kvm/hyp/vgic-v3-sr.c                    |   97 +-
 arch/arm64/kvm/hyp/vhe/switch.c                    |    3 +
 arch/arm64/kvm/nested.c                            |   55 +-
 arch/arm64/kvm/ptdump.c                            |  268 +++++
 arch/arm64/kvm/sys_regs.c                          |  386 ++++---
 arch/arm64/kvm/sys_regs.h                          |   23 +-
 arch/arm64/kvm/vgic/vgic-v3.c                      |   12 +
 arch/arm64/kvm/vgic/vgic.c                         |   14 +-
 arch/arm64/kvm/vgic/vgic.h                         |    6 +-
 arch/arm64/mm/ptdump.c                             |   70 +-
 tools/testing/selftests/kvm/Makefile               |    2 +
 .../selftests/kvm/aarch64/arch_timer_edge_cases.c  | 1062 +++++++++++++++++++
 tools/testing/selftests/kvm/aarch64/no-vgic-v3.c   |  175 ++++
 tools/testing/selftests/kvm/aarch64/set_id_regs.c  |    1 +
 tools/testing/selftests/kvm/aarch64/vgic_irq.c     |   11 +-
 .../selftests/kvm/include/aarch64/arch_timer.h     |   18 +-
 .../selftests/kvm/include/aarch64/processor.h      |    3 +
 .../testing/selftests/kvm/lib/aarch64/processor.c  |    6 +
 43 files changed, 3405 insertions(+), 331 deletions(-)
 create mode 100644 arch/arm64/kvm/at.c
 create mode 100644 arch/arm64/kvm/ptdump.c
 create mode 100644 tools/testing/selftests/kvm/aarch64/arch_timer_edge_cases.c
 create mode 100644 tools/testing/selftests/kvm/aarch64/no-vgic-v3.c


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [GIT PULL] KVM/arm64 updates for 6.12
  2024-09-12  9:12 [GIT PULL] KVM/arm64 updates for 6.12 Marc Zyngier
@ 2024-09-14 13:33 ` Paolo Bonzini
  0 siblings, 0 replies; 2+ messages in thread
From: Paolo Bonzini @ 2024-09-14 13:33 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: Alexandru Elisei, Anshuman Khandual, Catalin Marinas,
	Colton Lewis, Fuad Tabba, Joey Gouly, Mark Brown, Oliver Upton,
	Ricardo Koller, Sean Christopherson, Sebastian Ene,
	Snehal Koukuntla, Steven Price, Vincent Donnefort, Will Deacon,
	James Morse, Suzuki K Poulose, Zenghui Yu, kvmarm,
	linux-arm-kernel, kvm

On Thu, Sep 12, 2024 at 11:12 AM Marc Zyngier <maz@kernel.org> wrote:
>
> Hi Paolo,
>
> Here's the set of KVM/arm64 changes 6.12. The only two user-visible
> features are FP8 support and the new Stage-2 page-table dumper. The NV
> onslaught continues with the addition of the address translation
> instruction emulation, and we have a bunch of fixes all over the
> place (details in the tag text below).
>
> Note that there is a very minor conflict with arm64 in -next, which is
> trivially resolved as [1].

Pulled, thanks.

Paolo

> Please pull,
>
>         M.
>
> [1] https://lore.kernel.org/linux-next/20240905160856.14e95d14@canb.auug.org.au
>
> The following changes since commit 5be63fc19fcaa4c236b307420483578a56986a37:
>
>   Linux 6.11-rc5 (2024-08-25 19:07:11 +1200)
>
> are available in the Git repository at:
>
>   git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git tags/kvmarm-6.12
>
> for you to fetch changes up to 17a0005644994087794f6552d7a5e105d6976184:
>
>   Merge branch kvm-arm64/visibility-cleanups into kvmarm-master/next (2024-09-12 08:38:17 +0100)
>
> ----------------------------------------------------------------
> KVM/arm64 updates for 6.12
>
> * New features:
>
>   - Add a Stage-2 page table dumper, reusing the main ptdump
>     infrastructure, and allowing easier debugging of the our
>     page-table infrastructure
>
>   - Add FP8 support to the KVM/arm64 floating point handling.
>
>   - Add NV support for the AT family of instructions, which mostly
>     results in adding a page table walker that deals with most of the
>     complexity of the architecture.
>
> * Improvements, fixes and cleanups:
>
>   - Add selftest checks for a bunch of timer emulation corner cases
>
>   - Fix the multiple of cases where KVM/arm64 doesn't correctly handle
>     the guest trying to use a GICv3 that isn't advertised
>
>   - Remove REG_HIDDEN_USER from the sysreg infrastructure, making
>     things little more simple
>
>   - Prevent MTE tags being restored by userspace if we are actively
>     logging writes, as that's a recipe for disaster
>
>   - Correct the refcount on a page that is not considered for MTE tag
>     copying (such as a device)
>
>   - Relax the synchronisation when walking a page table to split block
>     mappings, moving it at the end the walk, as there is no need to
>     perform it on every store.
>
>   - Fix boundary check when transfering memory using FFA
>
>   - Fix pKVM TLB invalidation, only affecting currently out of tree
>     code but worth addressing for peace of mind
>
> ----------------------------------------------------------------
> Colton Lewis (3):
>       KVM: arm64: Move data barrier to end of split walk
>       KVM: arm64: selftests: Ensure pending interrupts are handled in arch_timer test
>       KVM: arm64: selftests: Add arch_timer_edge_cases selftest
>
> Joey Gouly (1):
>       KVM: arm64: Make kvm_at() take an OP_AT_*
>
> Marc Zyngier (47):
>       KVM: arm64: Move SVCR into the sysreg array
>       KVM: arm64: Add predicate for FPMR support in a VM
>       KVM: arm64: Move FPMR into the sysreg array
>       KVM: arm64: Add save/restore support for FPMR
>       KVM: arm64: Honor trap routing for FPMR
>       KVM: arm64: Expose ID_AA64FPFR0_EL1 as a writable ID reg
>       KVM: arm64: Enable FP8 support when available and configured
>       KVM: arm64: Expose ID_AA64PFR2_EL1 to userspace and guests
>       Merge branch kvm-arm64/tlbi-fixes-6.12 into kvmarm-master/next
>       KVM: arm64: Move GICv3 trap configuration to kvm_calculate_traps()
>       KVM: arm64: Force SRE traps when SRE access is not enabled
>       KVM: arm64: Force GICv3 trap activation when no irqchip is configured on VHE
>       KVM: arm64: Add helper for last ditch idreg adjustments
>       KVM: arm64: Zero ID_AA64PFR0_EL1.GIC when no GICv3 is presented to the guest
>       KVM: arm64: Add ICH_HCR_EL2 to the vcpu state
>       KVM: arm64: Add trap routing information for ICH_HCR_EL2
>       KVM: arm64: Honor guest requested traps in GICv3 emulation
>       KVM: arm64: Make most GICv3 accesses UNDEF if they trap
>       KVM: arm64: Unify UNDEF injection helpers
>       KVM: arm64: Add selftest checking how the absence of GICv3 is handled
>       arm64: Add missing APTable and TCR_ELx.HPD masks
>       arm64: Add PAR_EL1 field description
>       arm64: Add system register encoding for PSTATE.PAN
>       arm64: Add ESR_ELx_FSC_ADDRSZ_L() helper
>       KVM: arm64: nv: Enforce S2 alignment when contiguous bit is set
>       KVM: arm64: nv: Turn upper_attr for S2 walk into the full descriptor
>       KVM: arm64: nv: Honor absence of FEAT_PAN2
>       KVM: arm64: nv: Add basic emulation of AT S1E{0,1}{R,W}
>       KVM: arm64: nv: Add basic emulation of AT S1E1{R,W}P
>       KVM: arm64: nv: Add basic emulation of AT S1E2{R,W}
>       KVM: arm64: nv: Add emulation of AT S12E{0,1}{R,W}
>       KVM: arm64: nv: Make ps_to_output_size() generally available
>       KVM: arm64: nv: Add SW walker for AT S1 emulation
>       KVM: arm64: nv: Sanitise SCTLR_EL1.EPAN according to VM configuration
>       KVM: arm64: nv: Make AT+PAN instructions aware of FEAT_PAN3
>       KVM: arm64: nv: Plumb handling of AT S1* traps from EL2
>       KVM: arm64: nv: Add support for FEAT_ATS1A
>       KVM: arm64: Simplify handling of CNTKCTL_EL12
>       KVM: arm64: Simplify visibility handling of AArch32 SPSR_*
>       KVM: arm64: Get rid of REG_HIDDEN_USER visibility qualifier
>       Merge branch kvm-arm64/mmu-misc-6.12 into kvmarm-master/next
>       Merge branch kvm-arm64/fpmr into kvmarm-master/next
>       Merge branch kvm-arm64/vgic-sre-traps into kvmarm-master/next
>       Merge branch kvm-arm64/selftests-6.12 into kvmarm-master/next
>       Merge branch kvm-arm64/nv-at-pan into kvmarm-master/next
>       Merge branch kvm-arm64/s2-ptdump into kvmarm-master/next
>       Merge branch kvm-arm64/visibility-cleanups into kvmarm-master/next
>
> Oliver Upton (1):
>       KVM: arm64: selftests: Cope with lack of GICv3 in set_id_regs
>
> Sean Christopherson (2):
>       KVM: arm64: Release pfn, i.e. put page, if copying MTE tags hits ZONE_DEVICE
>       KVM: arm64: Disallow copying MTE to guest memory while KVM is dirty logging
>
> Sebastian Ene (5):
>       KVM: arm64: Move pagetable definitions to common header
>       arm64: ptdump: Expose the attribute parsing functionality
>       arm64: ptdump: Use the ptdump description from a local context
>       arm64: ptdump: Don't override the level when operating on the stage-2 tables
>       KVM: arm64: Register ptdump with debugfs on guest creation
>
> Snehal Koukuntla (1):
>       KVM: arm64: Add memory length checks and remove inline in do_ffa_mem_xfer
>
> Will Deacon (2):
>       KVM: arm64: Invalidate EL1&0 TLB entries for all VMIDs in nvhe hyp init
>       KVM: arm64: Ensure TLBI uses correct VMID after changing context
>
>  arch/arm64/include/asm/esr.h                       |    5 +-
>  arch/arm64/include/asm/kvm_arm.h                   |    1 +
>  arch/arm64/include/asm/kvm_asm.h                   |    6 +-
>  arch/arm64/include/asm/kvm_host.h                  |   22 +-
>  arch/arm64/include/asm/kvm_mmu.h                   |    6 +
>  arch/arm64/include/asm/kvm_nested.h                |   40 +-
>  arch/arm64/include/asm/kvm_pgtable.h               |   42 +
>  arch/arm64/include/asm/pgtable-hwdef.h             |    9 +
>  arch/arm64/include/asm/ptdump.h                    |   43 +-
>  arch/arm64/include/asm/sysreg.h                    |   22 +
>  arch/arm64/kvm/Kconfig                             |   17 +
>  arch/arm64/kvm/Makefile                            |    3 +-
>  arch/arm64/kvm/arm.c                               |   15 +-
>  arch/arm64/kvm/at.c                                | 1101 ++++++++++++++++++++
>  arch/arm64/kvm/emulate-nested.c                    |   81 +-
>  arch/arm64/kvm/fpsimd.c                            |    5 +-
>  arch/arm64/kvm/guest.c                             |    6 +
>  arch/arm64/kvm/hyp/include/hyp/fault.h             |    2 +-
>  arch/arm64/kvm/hyp/include/hyp/switch.h            |    3 +
>  arch/arm64/kvm/hyp/nvhe/ffa.c                      |   21 +-
>  arch/arm64/kvm/hyp/nvhe/hyp-init.S                 |    2 +-
>  arch/arm64/kvm/hyp/nvhe/hyp-main.c                 |    9 +
>  arch/arm64/kvm/hyp/nvhe/switch.c                   |    9 +
>  arch/arm64/kvm/hyp/nvhe/tlb.c                      |    6 +-
>  arch/arm64/kvm/hyp/pgtable.c                       |   48 +-
>  arch/arm64/kvm/hyp/vgic-v3-sr.c                    |   97 +-
>  arch/arm64/kvm/hyp/vhe/switch.c                    |    3 +
>  arch/arm64/kvm/nested.c                            |   55 +-
>  arch/arm64/kvm/ptdump.c                            |  268 +++++
>  arch/arm64/kvm/sys_regs.c                          |  386 ++++---
>  arch/arm64/kvm/sys_regs.h                          |   23 +-
>  arch/arm64/kvm/vgic/vgic-v3.c                      |   12 +
>  arch/arm64/kvm/vgic/vgic.c                         |   14 +-
>  arch/arm64/kvm/vgic/vgic.h                         |    6 +-
>  arch/arm64/mm/ptdump.c                             |   70 +-
>  tools/testing/selftests/kvm/Makefile               |    2 +
>  .../selftests/kvm/aarch64/arch_timer_edge_cases.c  | 1062 +++++++++++++++++++
>  tools/testing/selftests/kvm/aarch64/no-vgic-v3.c   |  175 ++++
>  tools/testing/selftests/kvm/aarch64/set_id_regs.c  |    1 +
>  tools/testing/selftests/kvm/aarch64/vgic_irq.c     |   11 +-
>  .../selftests/kvm/include/aarch64/arch_timer.h     |   18 +-
>  .../selftests/kvm/include/aarch64/processor.h      |    3 +
>  .../testing/selftests/kvm/lib/aarch64/processor.c  |    6 +
>  43 files changed, 3405 insertions(+), 331 deletions(-)
>  create mode 100644 arch/arm64/kvm/at.c
>  create mode 100644 arch/arm64/kvm/ptdump.c
>  create mode 100644 tools/testing/selftests/kvm/aarch64/arch_timer_edge_cases.c
>  create mode 100644 tools/testing/selftests/kvm/aarch64/no-vgic-v3.c
>



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-09-14 13:35 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-12  9:12 [GIT PULL] KVM/arm64 updates for 6.12 Marc Zyngier
2024-09-14 13:33 ` Paolo Bonzini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).