On 16.11.21 15:21, Paolo Bonzini wrote: > On 11/16/21 15:13, Juergen Gross wrote: >> On 05.11.21 20:20, Marc Zyngier wrote: >>> The kvm structure is pretty large. A large portion of it is the vcpu >>> array, which is 4kB on x86_64 and arm64 as they deal with 512 vcpu >>> VMs. Of course, hardly anyone runs VMs this big, so this is often a >>> net waste of memory and cache locality. >>> >>> A possible approach is to turn the fixed-size array into an xarray, >>> which results in a net code deletion after a bit of cleanup. >>> >>> This series is on top of the current linux/master as it touches the >>> RISC-V implementation. Only tested on arm64. >>> >>> Marc Zyngier (5): >>>    KVM: Move wiping of the kvm->vcpus array to common code >>>    KVM: mips: Use kvm_get_vcpu() instead of open-coded access >>>    KVM: s390: Use kvm_get_vcpu() instead of open-coded access >>>    KVM: x86: Use kvm_get_vcpu() instead of open-coded access >>>    KVM: Convert the kvm->vcpus array to a xarray >>> >>>   arch/arm64/kvm/arm.c           | 10 +--------- >>>   arch/mips/kvm/loongson_ipi.c   |  4 ++-- >>>   arch/mips/kvm/mips.c           | 23 ++--------------------- >>>   arch/powerpc/kvm/powerpc.c     | 10 +--------- >>>   arch/riscv/kvm/vm.c            | 10 +--------- >>>   arch/s390/kvm/kvm-s390.c       | 26 ++++++-------------------- >>>   arch/x86/kvm/vmx/posted_intr.c |  2 +- >>>   arch/x86/kvm/x86.c             |  9 +-------- >>>   include/linux/kvm_host.h       |  7 ++++--- >>>   virt/kvm/kvm_main.c            | 33 ++++++++++++++++++++++++++------- >>>   10 files changed, 45 insertions(+), 89 deletions(-) >>> >> >> For x86 you can add my: >> >> Tested-by: Juergen Gross > > Heh, unfortunately x86 is the only one that needs a change in patch 4. > I'll Cc you on my version. I guess the changes in kvm_main.c are more important for my series. :-) I've replaced patch 4 with your variant and everything is still working. Not sure how relevant that is, though. Juergen