mbox series

[GIT,PULL] KVM/arm64 updates for 6.1

Message ID 20221002124219.3902661-1-maz@kernel.org
State New
Headers show
Series [GIT,PULL] KVM/arm64 updates for 6.1 | expand

Pull-request

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

Message

Marc Zyngier Oct. 2, 2022, 12:42 p.m. UTC
Paolo,

Please find below the rather small set of KVM/arm64 updates
for 6.1. This is mostly a set of fixes for existing features,
the most interesting one being Reiji's really good work tracking
an annoying set of bugs in our single-stepping implementation.
Also, I've included the changes making it possible to enable
the dirty-ring tracking on arm64. Full details in the tag.

Note that this pull-request comes with a branch shared with the
arm64 tree, in order to avoid some bad conflicts due to the
ongoing repainting of all the system registers.

Please pull,

	M.

The following changes since commit b90cb1053190353cc30f0fef0ef1f378ccc063c5:

  Linux 6.0-rc3 (2022-08-28 15:05:29 -0700)

are available in the Git repository at:

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

for you to fetch changes up to b302ca52ba8235ff0e18c0fa1fa92b51784aef6a:

  Merge branch kvm-arm64/misc-6.1 into kvmarm-master/next (2022-10-01 10:19:36 +0100)

----------------------------------------------------------------
KVM/arm64 updates for v6.1

- Fixes for single-stepping in the presence of an async
  exception as well as the preservation of PSTATE.SS

- Better handling of AArch32 ID registers on AArch64-only
  systems

- Fixes for the dirty-ring API, allowing it to work on
  architectures with relaxed memory ordering

- Advertise the new kvmarm mailing list

- Various minor cleanups and spelling fixes

----------------------------------------------------------------
Elliot Berman (1):
      KVM: arm64: Ignore kvm-arm.mode if !is_hyp_mode_available()

Gavin Shan (1):
      KVM: arm64: vgic: Remove duplicate check in update_affinity_collection()

Kristina Martsenko (3):
      arm64: cache: Remove unused CTR_CACHE_MINLINE_MASK
      arm64/sysreg: Standardise naming for ID_AA64MMFR1_EL1 fields
      arm64/sysreg: Convert ID_AA64MMFR1_EL1 to automatic generation

Marc Zyngier (12):
      Merge branch kvm-arm64/aarch32-raz-idregs into kvmarm-master/next
      Merge remote-tracking branch 'arm64/for-next/sysreg' into kvmarm-master/next
      Merge branch kvm-arm64/single-step-async-exception into kvmarm-master/next
      KVM: Use acquire/release semantics when accessing dirty ring GFN state
      KVM: Add KVM_CAP_DIRTY_LOG_RING_ACQ_REL capability and config option
      KVM: x86: Select CONFIG_HAVE_KVM_DIRTY_RING_ACQ_REL
      KVM: Document weakly ordered architecture requirements for dirty ring
      KVM: selftests: dirty-log: Upgrade flag accesses to acquire/release semantics
      KVM: selftests: dirty-log: Use KVM_CAP_DIRTY_LOG_RING_ACQ_REL if available
      KVM: arm64: Advertise new kvmarm mailing list
      Merge branch kvm-arm64/dirty-log-ordered into kvmarm-master/next
      Merge branch kvm-arm64/misc-6.1 into kvmarm-master/next

Mark Brown (31):
      arm64/sysreg: Remove stray SMIDR_EL1 defines
      arm64/sysreg: Describe ID_AA64SMFR0_EL1.SMEVer as an enumeration
      arm64/sysreg: Add _EL1 into ID_AA64MMFR0_EL1 definition names
      arm64/sysreg: Add _EL1 into ID_AA64MMFR2_EL1 definition names
      arm64/sysreg: Add _EL1 into ID_AA64PFR0_EL1 definition names
      arm64/sysreg: Add _EL1 into ID_AA64PFR1_EL1 constant names
      arm64/sysreg: Standardise naming of ID_AA64MMFR0_EL1.BigEnd
      arm64/sysreg: Standardise naming of ID_AA64MMFR0_EL1.ASIDBits
      arm64/sysreg: Standardise naming for ID_AA64MMFR2_EL1.VARange
      arm64/sysreg: Standardise naming for ID_AA64MMFR2_EL1.CnP
      arm64/sysreg: Standardise naming for ID_AA64PFR0_EL1 constants
      arm64/sysreg: Standardise naming for ID_AA64PFR0_EL1.AdvSIMD constants
      arm64/sysreg: Standardise naming for SSBS feature enumeration
      arm64/sysreg: Standardise naming for MTE feature enumeration
      arm64/sysreg: Standardise naming of ID_AA64PFR1_EL1 fractional version fields
      arm64/sysreg: Standardise naming of ID_AA64PFR1_EL1 BTI enumeration
      arm64/sysreg: Standardise naming of ID_AA64PFR1_EL1 SME enumeration
      arm64/sysreg: Convert HCRX_EL2 to automatic generation
      arm64/sysreg: Convert ID_AA64MMFR0_EL1 to automatic generation
      arm64/sysreg: Convert ID_AA64MMFR2_EL1 to automatic generation
      arm64/sysreg: Convert ID_AA64PFR0_EL1 to automatic generation
      arm64/sysreg: Convert ID_AA64PFR1_EL1 to automatic generation
      arm64/sysreg: Convert TIPDR_EL1 to automatic generation
      arm64/sysreg: Convert SCXTNUM_EL1 to automatic generation
      arm64/sysreg: Add defintion for ALLINT
      arm64/sysreg: Align field names in ID_AA64DFR0_EL1 with architecture
      arm64/sysreg: Add _EL1 into ID_AA64DFR0_EL1 definition names
      arm64/sysreg: Use feature numbering for PMU and SPE revisions
      arm64/sysreg: Convert ID_AA64FDR0_EL1 to automatic generation
      arm64/sysreg: Convert ID_AA64DFR1_EL1 to automatic generation
      arm64/sysreg: Convert ID_AA64AFRn_EL1 to automatic generation

Oliver Upton (8):
      KVM: arm64: Use visibility hook to treat ID regs as RAZ
      KVM: arm64: Remove internal accessor helpers for id regs
      KVM: arm64: Drop raz parameter from read_id_reg()
      KVM: arm64: Spin off helper for calling visibility hook
      KVM: arm64: Add a visibility bit to ignore user writes
      KVM: arm64: Treat 32bit ID registers as RAZ/WI on 64bit-only system
      KVM: selftests: Add test for AArch32 ID registers
      KVM: selftests: Update top-of-file comment in psci_test

Reiji Watanabe (4):
      KVM: arm64: Preserve PSTATE.SS for the guest while single-step is enabled
      KVM: arm64: Clear PSTATE.SS when the Software Step state was Active-pending
      KVM: arm64: selftests: Refactor debug-exceptions to make it amenable to new test cases
      KVM: arm64: selftests: Add a test case for KVM_GUESTDBG_SINGLESTEP

Wei-Lin Chang (1):
      KVM: arm64: Fix comment typo in nvhe/switch.c

 Documentation/virt/kvm/api.rst                     |  17 +-
 MAINTAINERS                                        |   3 +-
 arch/arm64/include/asm/assembler.h                 |  10 +-
 arch/arm64/include/asm/cache.h                     |   4 -
 arch/arm64/include/asm/cpufeature.h                |  66 +--
 arch/arm64/include/asm/el2_setup.h                 |  18 +-
 arch/arm64/include/asm/hw_breakpoint.h             |   4 +-
 arch/arm64/include/asm/kvm_host.h                  |   4 +
 arch/arm64/include/asm/kvm_pgtable.h               |   6 +-
 arch/arm64/include/asm/sysreg.h                    | 211 ++--------
 arch/arm64/kernel/cpufeature.c                     | 238 +++++------
 arch/arm64/kernel/debug-monitors.c                 |   2 +-
 arch/arm64/kernel/head.S                           |  10 +-
 arch/arm64/kernel/hyp-stub.S                       |   8 +-
 arch/arm64/kernel/idreg-override.c                 |  10 +-
 arch/arm64/kernel/perf_event.c                     |   8 +-
 arch/arm64/kernel/proton-pack.c                    |   4 +-
 arch/arm64/kvm/arm.c                               |  15 +-
 arch/arm64/kvm/debug.c                             |  38 +-
 arch/arm64/kvm/guest.c                             |   1 +
 arch/arm64/kvm/handle_exit.c                       |   8 +-
 arch/arm64/kvm/hyp/include/nvhe/fixed_config.h     |  60 +--
 arch/arm64/kvm/hyp/nvhe/pkvm.c                     |  38 +-
 arch/arm64/kvm/hyp/nvhe/switch.c                   |   2 +-
 arch/arm64/kvm/hyp/nvhe/sys_regs.c                 |  10 +-
 arch/arm64/kvm/hyp/pgtable.c                       |   2 +-
 arch/arm64/kvm/pmu-emul.c                          |  16 +-
 arch/arm64/kvm/reset.c                             |  12 +-
 arch/arm64/kvm/sys_regs.c                          | 198 +++++----
 arch/arm64/kvm/sys_regs.h                          |  24 +-
 arch/arm64/kvm/vgic/vgic-its.c                     |   2 +-
 arch/arm64/mm/context.c                            |   6 +-
 arch/arm64/mm/init.c                               |   2 +-
 arch/arm64/mm/mmu.c                                |   2 +-
 arch/arm64/mm/proc.S                               |   4 +-
 arch/arm64/tools/sysreg                            | 449 ++++++++++++++++++++-
 arch/x86/kvm/Kconfig                               |   3 +-
 drivers/firmware/efi/libstub/arm64-stub.c          |   4 +-
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c    |   6 +-
 drivers/irqchip/irq-gic-v4.c                       |   2 +-
 include/uapi/linux/kvm.h                           |   1 +
 tools/testing/selftests/kvm/.gitignore             |   1 +
 tools/testing/selftests/kvm/Makefile               |   1 +
 .../selftests/kvm/aarch64/aarch32_id_regs.c        | 169 ++++++++
 .../selftests/kvm/aarch64/debug-exceptions.c       | 149 ++++++-
 tools/testing/selftests/kvm/aarch64/psci_test.c    |  10 +-
 tools/testing/selftests/kvm/dirty_log_test.c       |   8 +-
 tools/testing/selftests/kvm/lib/kvm_util.c         |   5 +-
 virt/kvm/Kconfig                                   |  14 +
 virt/kvm/dirty_ring.c                              |   4 +-
 virt/kvm/kvm_main.c                                |   9 +-
 51 files changed, 1294 insertions(+), 604 deletions(-)
 create mode 100644 tools/testing/selftests/kvm/aarch64/aarch32_id_regs.c

Comments

Paolo Bonzini Oct. 3, 2022, 7:39 p.m. UTC | #1
Pulled, thanks!

Paolo

On Sun, Oct 2, 2022 at 2:42 PM Marc Zyngier <maz@kernel.org> wrote:
>
> Paolo,
>
> Please find below the rather small set of KVM/arm64 updates
> for 6.1. This is mostly a set of fixes for existing features,
> the most interesting one being Reiji's really good work tracking
> an annoying set of bugs in our single-stepping implementation.
> Also, I've included the changes making it possible to enable
> the dirty-ring tracking on arm64. Full details in the tag.
>
> Note that this pull-request comes with a branch shared with the
> arm64 tree, in order to avoid some bad conflicts due to the
> ongoing repainting of all the system registers.
>
> Please pull,
>
>         M.
>
> The following changes since commit b90cb1053190353cc30f0fef0ef1f378ccc063c5:
>
>   Linux 6.0-rc3 (2022-08-28 15:05:29 -0700)
>
> are available in the Git repository at:
>
>   git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git tags/kvmarm-6.1
>
> for you to fetch changes up to b302ca52ba8235ff0e18c0fa1fa92b51784aef6a:
>
>   Merge branch kvm-arm64/misc-6.1 into kvmarm-master/next (2022-10-01 10:19:36 +0100)
>
> ----------------------------------------------------------------
> KVM/arm64 updates for v6.1
>
> - Fixes for single-stepping in the presence of an async
>   exception as well as the preservation of PSTATE.SS
>
> - Better handling of AArch32 ID registers on AArch64-only
>   systems
>
> - Fixes for the dirty-ring API, allowing it to work on
>   architectures with relaxed memory ordering
>
> - Advertise the new kvmarm mailing list
>
> - Various minor cleanups and spelling fixes
>
> ----------------------------------------------------------------
> Elliot Berman (1):
>       KVM: arm64: Ignore kvm-arm.mode if !is_hyp_mode_available()
>
> Gavin Shan (1):
>       KVM: arm64: vgic: Remove duplicate check in update_affinity_collection()
>
> Kristina Martsenko (3):
>       arm64: cache: Remove unused CTR_CACHE_MINLINE_MASK
>       arm64/sysreg: Standardise naming for ID_AA64MMFR1_EL1 fields
>       arm64/sysreg: Convert ID_AA64MMFR1_EL1 to automatic generation
>
> Marc Zyngier (12):
>       Merge branch kvm-arm64/aarch32-raz-idregs into kvmarm-master/next
>       Merge remote-tracking branch 'arm64/for-next/sysreg' into kvmarm-master/next
>       Merge branch kvm-arm64/single-step-async-exception into kvmarm-master/next
>       KVM: Use acquire/release semantics when accessing dirty ring GFN state
>       KVM: Add KVM_CAP_DIRTY_LOG_RING_ACQ_REL capability and config option
>       KVM: x86: Select CONFIG_HAVE_KVM_DIRTY_RING_ACQ_REL
>       KVM: Document weakly ordered architecture requirements for dirty ring
>       KVM: selftests: dirty-log: Upgrade flag accesses to acquire/release semantics
>       KVM: selftests: dirty-log: Use KVM_CAP_DIRTY_LOG_RING_ACQ_REL if available
>       KVM: arm64: Advertise new kvmarm mailing list
>       Merge branch kvm-arm64/dirty-log-ordered into kvmarm-master/next
>       Merge branch kvm-arm64/misc-6.1 into kvmarm-master/next
>
> Mark Brown (31):
>       arm64/sysreg: Remove stray SMIDR_EL1 defines
>       arm64/sysreg: Describe ID_AA64SMFR0_EL1.SMEVer as an enumeration
>       arm64/sysreg: Add _EL1 into ID_AA64MMFR0_EL1 definition names
>       arm64/sysreg: Add _EL1 into ID_AA64MMFR2_EL1 definition names
>       arm64/sysreg: Add _EL1 into ID_AA64PFR0_EL1 definition names
>       arm64/sysreg: Add _EL1 into ID_AA64PFR1_EL1 constant names
>       arm64/sysreg: Standardise naming of ID_AA64MMFR0_EL1.BigEnd
>       arm64/sysreg: Standardise naming of ID_AA64MMFR0_EL1.ASIDBits
>       arm64/sysreg: Standardise naming for ID_AA64MMFR2_EL1.VARange
>       arm64/sysreg: Standardise naming for ID_AA64MMFR2_EL1.CnP
>       arm64/sysreg: Standardise naming for ID_AA64PFR0_EL1 constants
>       arm64/sysreg: Standardise naming for ID_AA64PFR0_EL1.AdvSIMD constants
>       arm64/sysreg: Standardise naming for SSBS feature enumeration
>       arm64/sysreg: Standardise naming for MTE feature enumeration
>       arm64/sysreg: Standardise naming of ID_AA64PFR1_EL1 fractional version fields
>       arm64/sysreg: Standardise naming of ID_AA64PFR1_EL1 BTI enumeration
>       arm64/sysreg: Standardise naming of ID_AA64PFR1_EL1 SME enumeration
>       arm64/sysreg: Convert HCRX_EL2 to automatic generation
>       arm64/sysreg: Convert ID_AA64MMFR0_EL1 to automatic generation
>       arm64/sysreg: Convert ID_AA64MMFR2_EL1 to automatic generation
>       arm64/sysreg: Convert ID_AA64PFR0_EL1 to automatic generation
>       arm64/sysreg: Convert ID_AA64PFR1_EL1 to automatic generation
>       arm64/sysreg: Convert TIPDR_EL1 to automatic generation
>       arm64/sysreg: Convert SCXTNUM_EL1 to automatic generation
>       arm64/sysreg: Add defintion for ALLINT
>       arm64/sysreg: Align field names in ID_AA64DFR0_EL1 with architecture
>       arm64/sysreg: Add _EL1 into ID_AA64DFR0_EL1 definition names
>       arm64/sysreg: Use feature numbering for PMU and SPE revisions
>       arm64/sysreg: Convert ID_AA64FDR0_EL1 to automatic generation
>       arm64/sysreg: Convert ID_AA64DFR1_EL1 to automatic generation
>       arm64/sysreg: Convert ID_AA64AFRn_EL1 to automatic generation
>
> Oliver Upton (8):
>       KVM: arm64: Use visibility hook to treat ID regs as RAZ
>       KVM: arm64: Remove internal accessor helpers for id regs
>       KVM: arm64: Drop raz parameter from read_id_reg()
>       KVM: arm64: Spin off helper for calling visibility hook
>       KVM: arm64: Add a visibility bit to ignore user writes
>       KVM: arm64: Treat 32bit ID registers as RAZ/WI on 64bit-only system
>       KVM: selftests: Add test for AArch32 ID registers
>       KVM: selftests: Update top-of-file comment in psci_test
>
> Reiji Watanabe (4):
>       KVM: arm64: Preserve PSTATE.SS for the guest while single-step is enabled
>       KVM: arm64: Clear PSTATE.SS when the Software Step state was Active-pending
>       KVM: arm64: selftests: Refactor debug-exceptions to make it amenable to new test cases
>       KVM: arm64: selftests: Add a test case for KVM_GUESTDBG_SINGLESTEP
>
> Wei-Lin Chang (1):
>       KVM: arm64: Fix comment typo in nvhe/switch.c
>
>  Documentation/virt/kvm/api.rst                     |  17 +-
>  MAINTAINERS                                        |   3 +-
>  arch/arm64/include/asm/assembler.h                 |  10 +-
>  arch/arm64/include/asm/cache.h                     |   4 -
>  arch/arm64/include/asm/cpufeature.h                |  66 +--
>  arch/arm64/include/asm/el2_setup.h                 |  18 +-
>  arch/arm64/include/asm/hw_breakpoint.h             |   4 +-
>  arch/arm64/include/asm/kvm_host.h                  |   4 +
>  arch/arm64/include/asm/kvm_pgtable.h               |   6 +-
>  arch/arm64/include/asm/sysreg.h                    | 211 ++--------
>  arch/arm64/kernel/cpufeature.c                     | 238 +++++------
>  arch/arm64/kernel/debug-monitors.c                 |   2 +-
>  arch/arm64/kernel/head.S                           |  10 +-
>  arch/arm64/kernel/hyp-stub.S                       |   8 +-
>  arch/arm64/kernel/idreg-override.c                 |  10 +-
>  arch/arm64/kernel/perf_event.c                     |   8 +-
>  arch/arm64/kernel/proton-pack.c                    |   4 +-
>  arch/arm64/kvm/arm.c                               |  15 +-
>  arch/arm64/kvm/debug.c                             |  38 +-
>  arch/arm64/kvm/guest.c                             |   1 +
>  arch/arm64/kvm/handle_exit.c                       |   8 +-
>  arch/arm64/kvm/hyp/include/nvhe/fixed_config.h     |  60 +--
>  arch/arm64/kvm/hyp/nvhe/pkvm.c                     |  38 +-
>  arch/arm64/kvm/hyp/nvhe/switch.c                   |   2 +-
>  arch/arm64/kvm/hyp/nvhe/sys_regs.c                 |  10 +-
>  arch/arm64/kvm/hyp/pgtable.c                       |   2 +-
>  arch/arm64/kvm/pmu-emul.c                          |  16 +-
>  arch/arm64/kvm/reset.c                             |  12 +-
>  arch/arm64/kvm/sys_regs.c                          | 198 +++++----
>  arch/arm64/kvm/sys_regs.h                          |  24 +-
>  arch/arm64/kvm/vgic/vgic-its.c                     |   2 +-
>  arch/arm64/mm/context.c                            |   6 +-
>  arch/arm64/mm/init.c                               |   2 +-
>  arch/arm64/mm/mmu.c                                |   2 +-
>  arch/arm64/mm/proc.S                               |   4 +-
>  arch/arm64/tools/sysreg                            | 449 ++++++++++++++++++++-
>  arch/x86/kvm/Kconfig                               |   3 +-
>  drivers/firmware/efi/libstub/arm64-stub.c          |   4 +-
>  drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c    |   6 +-
>  drivers/irqchip/irq-gic-v4.c                       |   2 +-
>  include/uapi/linux/kvm.h                           |   1 +
>  tools/testing/selftests/kvm/.gitignore             |   1 +
>  tools/testing/selftests/kvm/Makefile               |   1 +
>  .../selftests/kvm/aarch64/aarch32_id_regs.c        | 169 ++++++++
>  .../selftests/kvm/aarch64/debug-exceptions.c       | 149 ++++++-
>  tools/testing/selftests/kvm/aarch64/psci_test.c    |  10 +-
>  tools/testing/selftests/kvm/dirty_log_test.c       |   8 +-
>  tools/testing/selftests/kvm/lib/kvm_util.c         |   5 +-
>  virt/kvm/Kconfig                                   |  14 +
>  virt/kvm/dirty_ring.c                              |   4 +-
>  virt/kvm/kvm_main.c                                |   9 +-
>  51 files changed, 1294 insertions(+), 604 deletions(-)
>  create mode 100644 tools/testing/selftests/kvm/aarch64/aarch32_id_regs.c
>