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