Hi Paolo, Here's the 5.14 pull request for 5.14. This round, plenty of changes in the mm department (MTE, CMOs, device mappings, host S2), but also a lot of work in the selftest infrastructure. On top of that, a few PMU fixes, and the ability to run guests on the M1... Note that we carry a branch (arm64/for-next/caches) shared with the arm64 tree in order to avoid ugly conflicts. You will still get a few minor ones with the PPC tree, but the resolution is obvious. Oh, and each merge commit has a full description of what they contain. Hopefully we won't get yelled at this time. Please pull, M. The following changes since commit 8124c8a6b35386f73523d27eacb71b5364a68c4c: Linux 5.13-rc4 (2021-05-30 11:58:25 -1000) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git tags/kvmarm-5.14 for you to fetch changes up to 188982cda00ebfe28b50c2905d9bbaa2e9a001b9: Merge branch kvm-arm64/mmu/mte into kvmarm-master/next (2021-06-25 14:25:56 +0100) ---------------------------------------------------------------- KVM/arm64 updates for v5.14. - Add MTE support in guests, complete with tag save/restore interface - Reduce the impact of CMOs by moving them in the page-table code - Allow device block mappings at stage-2 - Reduce the footprint of the vmemmap in protected mode - Support the vGIC on dumb systems such as the Apple M1 - Add selftest infrastructure to support multiple configuration and apply that to PMU/non-PMU setups - Add selftests for the debug architecture - The usual crop of PMU fixes ---------------------------------------------------------------- Alexandru Elisei (1): KVM: arm64: Don't zero the cycle count register when PMCR_EL0.P is set Andrew Jones (5): KVM: arm64: selftests: get-reg-list: Introduce vcpu configs KVM: arm64: selftests: get-reg-list: Prepare to run multiple configs at once KVM: arm64: selftests: get-reg-list: Provide config selection option KVM: arm64: selftests: get-reg-list: Remove get-reg-list-sve KVM: arm64: selftests: get-reg-list: Split base and pmu registers Fuad Tabba (16): arm64: Apply errata to swsusp_arch_suspend_exit arm64: Do not enable uaccess for flush_icache_range arm64: Do not enable uaccess for invalidate_icache_range arm64: Downgrade flush_icache_range to invalidate arm64: assembler: remove user_alt arm64: Move documentation of dcache_by_line_op arm64: Fix comments to refer to correct function __flush_icache_range arm64: __inval_dcache_area to take end parameter instead of size arm64: dcache_by_line_op to take end parameter instead of size arm64: __flush_dcache_area to take end parameter instead of size arm64: __clean_dcache_area_poc to take end parameter instead of size arm64: __clean_dcache_area_pop to take end parameter instead of size arm64: __clean_dcache_area_pou to take end parameter instead of size arm64: sync_icache_aliases to take end parameter instead of size arm64: Fix cache maintenance function comments arm64: Rename arm64-internal cache maintenance functions Keqian Zhu (2): KVM: arm64: Remove the creation time's mapping of MMIO regions KVM: arm64: Try stage2 block mapping for host device MMIO Marc Zyngier (22): irqchip/gic: Split vGIC probing information from the GIC code KVM: arm64: Handle physical FIQ as an IRQ while running a guest KVM: arm64: vgic: Be tolerant to the lack of maintenance interrupt masking KVM: arm64: vgic: Let an interrupt controller advertise lack of HW deactivation KVM: arm64: vgic: move irq->get_input_level into an ops structure KVM: arm64: vgic: Implement SW-driven deactivation KVM: arm64: timer: Refactor IRQ configuration KVM: arm64: timer: Add support for SW-based deactivation irqchip/apple-aic: Advertise some level of vGICv3 compatibility Merge branch kvm-arm64/m1 into kvmarm-master/next Merge branch kvm-arm64/mmu/MMIO-block-mapping into kvmarm-master/next Merge branch kvm-arm64/mmu/reduce-vmemmap-overhead into kvmarm-master/next Merge branch kvm-arm64/selftest/debug into kvmarm-master/next Merge branch kvm-arm64/mmu/stage2-cmos into kvmarm-master/next KVM: arm64: Restore PMU configuration on first run Merge branch kvm-arm64/pmu-fixes into kvmarm-master/next Merge branch arm64/for-next/caches into kvmarm-master/next KVM: arm64: Update MAINTAINERS to include selftests Merge branch kvm-arm64/selftest/sysreg-list-fix into kvmarm-master/next Merge branch kvm-arm64/mmu/mte into kvmarm-master/next KVM: arm64: Set the MTE tag bit before releasing the page Merge branch kvm-arm64/mmu/mte into kvmarm-master/next Mark Rutland (2): arm64: assembler: replace `kaddr` with `addr` arm64: assembler: add conditional cache fixups Quentin Perret (7): KVM: arm64: Move hyp_pool locking out of refcount helpers KVM: arm64: Use refcount at hyp to check page availability KVM: arm64: Remove list_head from hyp_page KVM: arm64: Unify MMIO and mem host stage-2 pools KVM: arm64: Remove hyp_pool pointer from struct hyp_page KVM: arm64: Use less bits for hyp_page order KVM: arm64: Use less bits for hyp_page refcount Ricardo Koller (6): KVM: selftests: Rename vm_handle_exception KVM: selftests: Complete x86_64/sync_regs_test ucall KVM: selftests: Introduce UCALL_UNHANDLED for unhandled vector reporting KVM: selftests: Move GUEST_ASSERT_EQ to utils header KVM: selftests: Add exception handling support for aarch64 KVM: selftests: Add aarch64/debug-exceptions test Steven Price (6): arm64: mte: Sync tags for pages where PTE is untagged KVM: arm64: Introduce MTE VM feature KVM: arm64: Save/restore MTE registers KVM: arm64: Expose KVM_ARM_CAP_MTE KVM: arm64: Add ioctl to fetch/store tags in a guest KVM: arm64: Document MTE capability and ioctl Yanan Wang (4): KVM: arm64: Introduce two cache maintenance callbacks KVM: arm64: Introduce mm_ops member for structure stage2_attr_data KVM: arm64: Tweak parameters of guest cache maintenance functions KVM: arm64: Move guest CMOs to the fault handlers Documentation/virt/kvm/api.rst | 61 +++ MAINTAINERS | 2 + arch/arm64/include/asm/alternative-macros.h | 5 - arch/arm64/include/asm/arch_gicv3.h | 3 +- arch/arm64/include/asm/assembler.h | 80 ++-- arch/arm64/include/asm/cacheflush.h | 71 ++-- arch/arm64/include/asm/efi.h | 2 +- arch/arm64/include/asm/kvm_arm.h | 3 +- arch/arm64/include/asm/kvm_emulate.h | 3 + arch/arm64/include/asm/kvm_host.h | 14 + arch/arm64/include/asm/kvm_mmu.h | 17 +- arch/arm64/include/asm/kvm_mte.h | 66 ++++ arch/arm64/include/asm/kvm_pgtable.h | 42 +- arch/arm64/include/asm/mte-def.h | 1 + arch/arm64/include/asm/mte.h | 4 +- arch/arm64/include/asm/pgtable.h | 22 +- arch/arm64/include/asm/sysreg.h | 3 +- arch/arm64/include/uapi/asm/kvm.h | 11 + arch/arm64/kernel/alternative.c | 2 +- arch/arm64/kernel/asm-offsets.c | 2 + arch/arm64/kernel/efi-entry.S | 9 +- arch/arm64/kernel/head.S | 13 +- arch/arm64/kernel/hibernate-asm.S | 7 +- arch/arm64/kernel/hibernate.c | 20 +- arch/arm64/kernel/idreg-override.c | 3 +- arch/arm64/kernel/image-vars.h | 2 +- arch/arm64/kernel/insn.c | 2 +- arch/arm64/kernel/kaslr.c | 12 +- arch/arm64/kernel/machine_kexec.c | 30 +- arch/arm64/kernel/mte.c | 18 +- arch/arm64/kernel/probes/uprobes.c | 2 +- arch/arm64/kernel/smp.c | 8 +- arch/arm64/kernel/smp_spin_table.c | 7 +- arch/arm64/kernel/sys_compat.c | 2 +- arch/arm64/kvm/arch_timer.c | 162 ++++++-- arch/arm64/kvm/arm.c | 22 +- arch/arm64/kvm/guest.c | 86 ++++ arch/arm64/kvm/hyp/entry.S | 7 + arch/arm64/kvm/hyp/exception.c | 3 +- arch/arm64/kvm/hyp/hyp-entry.S | 6 +- arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h | 21 + arch/arm64/kvm/hyp/include/nvhe/gfp.h | 45 +-- arch/arm64/kvm/hyp/include/nvhe/mem_protect.h | 2 +- arch/arm64/kvm/hyp/include/nvhe/memory.h | 7 +- arch/arm64/kvm/hyp/include/nvhe/mm.h | 13 +- arch/arm64/kvm/hyp/nvhe/cache.S | 4 +- arch/arm64/kvm/hyp/nvhe/mem_protect.c | 60 +-- arch/arm64/kvm/hyp/nvhe/page_alloc.c | 112 ++++-- arch/arm64/kvm/hyp/nvhe/setup.c | 33 +- arch/arm64/kvm/hyp/nvhe/tlb.c | 2 +- arch/arm64/kvm/hyp/pgtable.c | 61 ++- arch/arm64/kvm/hyp/reserved_mem.c | 3 +- arch/arm64/kvm/mmu.c | 196 ++++++--- arch/arm64/kvm/pmu-emul.c | 4 + arch/arm64/kvm/reset.c | 4 + arch/arm64/kvm/sys_regs.c | 32 +- arch/arm64/kvm/vgic/vgic-init.c | 36 +- arch/arm64/kvm/vgic/vgic-v2.c | 19 +- arch/arm64/kvm/vgic/vgic-v3.c | 19 +- arch/arm64/kvm/vgic/vgic.c | 14 +- arch/arm64/lib/uaccess_flushcache.c | 4 +- arch/arm64/mm/cache.S | 158 ++++---- arch/arm64/mm/flush.c | 29 +- drivers/irqchip/irq-apple-aic.c | 9 + drivers/irqchip/irq-gic-common.c | 13 - drivers/irqchip/irq-gic-common.h | 2 - drivers/irqchip/irq-gic-v3.c | 6 +- drivers/irqchip/irq-gic.c | 6 +- include/kvm/arm_vgic.h | 41 +- include/linux/irqchip/arm-gic-common.h | 25 +- include/linux/irqchip/arm-vgic-info.h | 45 +++ include/uapi/linux/kvm.h | 2 + tools/testing/selftests/kvm/.gitignore | 2 +- tools/testing/selftests/kvm/Makefile | 4 +- .../selftests/kvm/aarch64/debug-exceptions.c | 250 ++++++++++++ .../selftests/kvm/aarch64/get-reg-list-sve.c | 3 - tools/testing/selftests/kvm/aarch64/get-reg-list.c | 439 +++++++++++++++------ .../selftests/kvm/include/aarch64/processor.h | 83 +++- tools/testing/selftests/kvm/include/kvm_util.h | 23 +- .../selftests/kvm/include/x86_64/processor.h | 4 +- tools/testing/selftests/kvm/lib/aarch64/handlers.S | 126 ++++++ .../testing/selftests/kvm/lib/aarch64/processor.c | 97 +++++ tools/testing/selftests/kvm/lib/x86_64/processor.c | 23 +- tools/testing/selftests/kvm/x86_64/evmcs_test.c | 4 +- tools/testing/selftests/kvm/x86_64/kvm_pv_test.c | 2 +- .../testing/selftests/kvm/x86_64/sync_regs_test.c | 7 +- tools/testing/selftests/kvm/x86_64/tsc_msrs_test.c | 9 - .../selftests/kvm/x86_64/userspace_msr_exit_test.c | 8 +- .../testing/selftests/kvm/x86_64/xapic_ipi_test.c | 2 +- 89 files changed, 2208 insertions(+), 740 deletions(-) create mode 100644 arch/arm64/include/asm/kvm_mte.h create mode 100644 include/linux/irqchip/arm-vgic-info.h create mode 100644 tools/testing/selftests/kvm/aarch64/debug-exceptions.c delete mode 100644 tools/testing/selftests/kvm/aarch64/get-reg-list-sve.c create mode 100644 tools/testing/selftests/kvm/lib/aarch64/handlers.S