Documentation/virt/kvm/api.rst | 3 + arch/arm64/include/asm/kvm_emulate.h | 34 + arch/arm64/include/asm/kvm_host.h | 16 +- arch/arm64/include/asm/kvm_pgtable.h | 2 + arch/arm64/include/asm/kvm_rme.h | 155 +++ arch/arm64/include/asm/rmi_cmds.h | 510 ++++++++ arch/arm64/include/asm/rmi_smc.h | 255 ++++ arch/arm64/include/asm/virt.h | 1 + arch/arm64/include/uapi/asm/kvm.h | 49 + arch/arm64/kvm/Kconfig | 1 + arch/arm64/kvm/Makefile | 3 +- arch/arm64/kvm/arch_timer.c | 45 +- arch/arm64/kvm/arm.c | 166 ++- arch/arm64/kvm/guest.c | 99 +- arch/arm64/kvm/hyp/pgtable.c | 5 +- arch/arm64/kvm/hypercalls.c | 4 +- arch/arm64/kvm/inject_fault.c | 2 + arch/arm64/kvm/mmio.c | 10 +- arch/arm64/kvm/mmu.c | 185 ++- arch/arm64/kvm/pmu-emul.c | 7 +- arch/arm64/kvm/psci.c | 29 + arch/arm64/kvm/reset.c | 23 +- arch/arm64/kvm/rme-exit.c | 207 ++++ arch/arm64/kvm/rme.c | 1628 ++++++++++++++++++++++++++ arch/arm64/kvm/sys_regs.c | 83 +- arch/arm64/kvm/vgic/vgic-v3.c | 8 +- arch/arm64/kvm/vgic/vgic.c | 41 +- arch/arm64/mm/fault.c | 31 +- drivers/perf/arm_pmu.c | 15 + include/kvm/arm_arch_timer.h | 2 + include/kvm/arm_pmu.h | 4 + include/kvm/arm_psci.h | 2 + include/linux/kvm_host.h | 2 + include/linux/perf/arm_pmu.h | 5 + include/uapi/linux/kvm.h | 31 +- virt/kvm/kvm_main.c | 7 + 36 files changed, 3569 insertions(+), 101 deletions(-) create mode 100644 arch/arm64/include/asm/kvm_rme.h create mode 100644 arch/arm64/include/asm/rmi_cmds.h create mode 100644 arch/arm64/include/asm/rmi_smc.h create mode 100644 arch/arm64/kvm/rme-exit.c create mode 100644 arch/arm64/kvm/rme.c