KVM/arm was merged just over 7 years ago, and has lived a very quiet life so far. It mostly works if you're prepared to deal with its limitations, it has been a good prototype for the arm64 version, but it suffers a few problems: - It is incomplete (no debug support, no PMU) - It hasn't followed any of the architectural evolutions - It has zero^W very few users (I don't count myself here) - It is more and more getting in the way of new arm64 developments There has been quite a bit of discussion (see [1]) on whether we were depriving users of something they were depending on. Most people didn't object, and actually supported the removal. A few people *did* object to the removal: - Takashi uses it on a regular basis for developments - Daniel uses it as well, although he doesn't depend on it - Marek and Bartlomiej said that Samsung use it internally, without any description of their usage model Alghouth I can really sympathetize with people above, I still don't think we should keep the 32bit port artificially alive for the sake of it, specially considering that the whole of the 32bit architecture is in best effort, maintenance mode. I'd rather drop KVM support now, while it is still in a decent shape, rather than seeing it bit-rot like it happened for ia64. I also plan to keep maintaining it in the various stable kernels, up to (and including) 5.6. To reiterate: 32bit guest support for arm64 stays, of course. Only 32bit host goes. Once this is merged, I plan to move virt/kvm/arm to arm64, and cleanup all the now unnecessary abstractions. The patches have been generated with the -D option to avoid spamming everyone with huge diffs, and there is a kvm-arm/goodbye branch in my kernel.org repository. * From v1: - Rebased on top of kvmarm/next - Simplified the HYP vector replacement code - Updated the MAINTAINERS file - Collected Acks [1] https://lore.kernel.org/linux-arm-kernel/20200210141324.21090-1-maz@xxxxxxxxxx/ Marc Zyngier (7): arm: Unplug KVM from the build system arm: Remove KVM from config files arm: Remove 32bit KVM host support arm: Remove HYP/Stage-2 page-table support arm: Remove GICv3 vgic compatibility macros arm: Remove the ability to set HYP vectors outside of the decompressor MAINTAINERS: RIP KVM/arm Documentation/virt/kvm/arm/hyp-abi.rst | 5 + MAINTAINERS | 5 +- arch/arm/Kconfig | 2 - arch/arm/Makefile | 1 - arch/arm/configs/axm55xx_defconfig | 2 - arch/arm/include/asm/arch_gicv3.h | 114 -- arch/arm/include/asm/kvm_arm.h | 239 ---- arch/arm/include/asm/kvm_asm.h | 77 -- arch/arm/include/asm/kvm_coproc.h | 36 - arch/arm/include/asm/kvm_emulate.h | 372 ------ arch/arm/include/asm/kvm_host.h | 457 -------- arch/arm/include/asm/kvm_hyp.h | 127 --- arch/arm/include/asm/kvm_mmu.h | 435 ------- arch/arm/include/asm/kvm_ras.h | 14 - arch/arm/include/asm/pgtable-3level.h | 20 - arch/arm/include/asm/pgtable.h | 9 - arch/arm/include/asm/sections.h | 6 +- arch/arm/include/asm/stage2_pgtable.h | 75 -- arch/arm/include/asm/virt.h | 17 - arch/arm/include/uapi/asm/kvm.h | 314 ----- arch/arm/kernel/asm-offsets.c | 11 - arch/arm/kernel/hyp-stub.S | 39 +- arch/arm/kernel/vmlinux-xip.lds.S | 8 - arch/arm/kernel/vmlinux.lds.S | 8 - arch/arm/kernel/vmlinux.lds.h | 10 - arch/arm/kvm/Kconfig | 59 - arch/arm/kvm/Makefile | 43 - arch/arm/kvm/coproc.c | 1455 ------------------------ arch/arm/kvm/coproc.h | 130 --- arch/arm/kvm/coproc_a15.c | 39 - arch/arm/kvm/coproc_a7.c | 42 - arch/arm/kvm/emulate.c | 166 --- arch/arm/kvm/guest.c | 387 ------- arch/arm/kvm/handle_exit.c | 175 --- arch/arm/kvm/hyp/Makefile | 34 - arch/arm/kvm/hyp/banked-sr.c | 70 -- arch/arm/kvm/hyp/cp15-sr.c | 72 -- arch/arm/kvm/hyp/entry.S | 121 -- arch/arm/kvm/hyp/hyp-entry.S | 295 ----- arch/arm/kvm/hyp/s2-setup.c | 22 - arch/arm/kvm/hyp/switch.c | 242 ---- arch/arm/kvm/hyp/tlb.c | 68 -- arch/arm/kvm/hyp/vfp.S | 57 - arch/arm/kvm/init.S | 157 --- arch/arm/kvm/interrupts.S | 36 - arch/arm/kvm/irq.h | 16 - arch/arm/kvm/reset.c | 86 -- arch/arm/kvm/trace.h | 86 -- arch/arm/kvm/vgic-v3-coproc.c | 27 - arch/arm/mach-exynos/Kconfig | 2 +- arch/arm/mm/mmu.c | 26 - 51 files changed, 16 insertions(+), 6300 deletions(-) delete mode 100644 arch/arm/include/asm/kvm_arm.h delete mode 100644 arch/arm/include/asm/kvm_asm.h delete mode 100644 arch/arm/include/asm/kvm_coproc.h delete mode 100644 arch/arm/include/asm/kvm_emulate.h delete mode 100644 arch/arm/include/asm/kvm_host.h delete mode 100644 arch/arm/include/asm/kvm_hyp.h delete mode 100644 arch/arm/include/asm/kvm_mmu.h delete mode 100644 arch/arm/include/asm/kvm_ras.h delete mode 100644 arch/arm/include/asm/stage2_pgtable.h delete mode 100644 arch/arm/include/uapi/asm/kvm.h delete mode 100644 arch/arm/kvm/Kconfig delete mode 100644 arch/arm/kvm/Makefile delete mode 100644 arch/arm/kvm/coproc.c delete mode 100644 arch/arm/kvm/coproc.h delete mode 100644 arch/arm/kvm/coproc_a15.c delete mode 100644 arch/arm/kvm/coproc_a7.c delete mode 100644 arch/arm/kvm/emulate.c delete mode 100644 arch/arm/kvm/guest.c delete mode 100644 arch/arm/kvm/handle_exit.c delete mode 100644 arch/arm/kvm/hyp/Makefile delete mode 100644 arch/arm/kvm/hyp/banked-sr.c delete mode 100644 arch/arm/kvm/hyp/cp15-sr.c delete mode 100644 arch/arm/kvm/hyp/entry.S delete mode 100644 arch/arm/kvm/hyp/hyp-entry.S delete mode 100644 arch/arm/kvm/hyp/s2-setup.c delete mode 100644 arch/arm/kvm/hyp/switch.c delete mode 100644 arch/arm/kvm/hyp/tlb.c delete mode 100644 arch/arm/kvm/hyp/vfp.S delete mode 100644 arch/arm/kvm/init.S delete mode 100644 arch/arm/kvm/interrupts.S delete mode 100644 arch/arm/kvm/irq.h delete mode 100644 arch/arm/kvm/reset.c delete mode 100644 arch/arm/kvm/trace.h delete mode 100644 arch/arm/kvm/vgic-v3-coproc.c -- 2.25.0 _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm