[PATCH v5 0/6] KVM: arm64: nv: Implement nested stage-2 reverse map (new data structure)

Marc Zyngier maz at kernel.org
Thu Sep 3 00:43:35 PDT 2026


On Wed, 02 Sep 2026 17:35:00 +0100,
Wang Han <wanghan at linux.alibaba.com> wrote:
> 
> Hi Wei-Lin,
> 
> I tested this series on a Yitian 710 system with an ARM Neoverse-N2 CPU
> (128 CPUs, 2 NUMA nodes).
> 
> Test environment
> ----------------
> 
>   L0 kernel: Linux v7.2-rc6
>   L1 guest: Ubuntu 26.04 LTS, kernel 7.0.0-27-generic (aarch64)
>   QEMU: 10.2.3
> 
> L0 NUMA balancing was enabled (`/proc/sys/kernel/numa_balancing=1`).
> The host was booted with `kvm_arm.mode=nested`.
> 
> This series fixes a functional hang that is exposed when NUMA balancing is
> enabled.  The previous nested stage-2 unmap path is too slow for this
> workload, making the performance problem user-visible: NUMA balancing can
> leave the L1 guest unable to make progress and eventually hang during boot.
>
> The L1 was started with 8 vCPUs and 32 GiB of RAM using:
> 
>   qemu-system-aarch64 -smp 8 -m 32G \
>     -machine virt,accel=kvm,gic-version=3,virtualization=on \
>     -cpu host -nographic -enable-kvm \
>     -drive if=pflash,format=raw,readonly=on,file=pflash0_bak.img \
>     -drive if=pflash,format=raw,file=pflash1_bak.img \
>     -drive file=./ubuntu-vm.qcow2,format=qcow2,if=virtio,cache=none,aio=native \
>     -nic user,model=virtio-net-pci,hostfwd=tcp::11234-:22 \
>     -serial mon:stdio
> 

Puzzling. If you are only running an L1 in VHE mode, there is no
shadow S2, and therefore nothing to unmap. For shadow S2s to be built
and affect the MMU notifiers, you need to run an L2.

So what are your actual test conditions?

	M.

-- 
Jazz isn't dead. It just smells funny.



More information about the linux-arm-kernel mailing list