This series adds userspace support for creating a guest which can use SPE. It requires KVM SPE support which is in the RFC phase, hence why this series is also RFC. The kvmtool patches can also be found at [1], and the KVM SPE patches can be found at [2]. To create a guest with SPE support the following steps must be executed: 1. Set the SPE virtual interrupt ID and then initialize the features on every VCPU. 2. After the guest memory memslots have been created and SPE initialized, kvmtool will lock the memslot memory using the newly introduced capability. The first patch is a simple update to the Linux headers; the next two patches are preparatory patches. SPE support is added in patch number 4. And finally, in patch number 5, we take advantage of the newly added KVM_ARM_VCPU_SUPPORTED_CPUS ioctl to inform KVM that we intend to run the VCPUs only on those physical CPUs which support SPE. This is done by concatenating the cpulists from each of the /sys/devices/arm_spe_x/cpumask files created by the Linux SPE driver for each separate PPI partition which has SPE support. [1] https://gitlab.arm.com/linux-arm/kvmtool-ae/-/tree/kvm-spe-v4 [2] https://gitlab.arm.com/linux-arm/linux-ae/-/tree/kvm-spe-v4 Alexandru Elisei (4): update_headers: Sync KVM UAPI headers with KVM SPE implementation arm/arm64: Make kvm__arch_delete_ram() aarch32/aarch64 specific init: Add last_{init, exit} list macros arm64: SPE: Set KVM_ARM_VCPU_SUPPORTED_CPUS Sudeep Holla (1): arm64: Add SPE support Makefile | 2 + arm/aarch32/kvm.c | 8 + arm/aarch64/arm-cpu.c | 2 + arm/aarch64/include/asm/kvm.h | 67 +++- arm/aarch64/include/kvm/kvm-config-arch.h | 2 + arm/aarch64/include/kvm/spe.h | 7 + arm/aarch64/kvm-cpu.c | 5 + arm/aarch64/kvm.c | 18 + arm/aarch64/spe.c | 269 ++++++++++++++ arm/include/arm-common/kvm-config-arch.h | 1 + arm/kvm-cpu.c | 4 + arm/kvm.c | 5 - include/kvm/util-init.h | 6 +- include/linux/kvm.h | 425 +++++++++++++++++++++- powerpc/include/asm/kvm.h | 10 + x86/include/asm/kvm.h | 59 ++- 16 files changed, 870 insertions(+), 20 deletions(-) create mode 100644 arm/aarch32/kvm.c create mode 100644 arm/aarch64/include/kvm/spe.h create mode 100644 arm/aarch64/spe.c -- 2.33.0