Re: [PATCH mm-unstable v1 3/5] kvm/arm64: add kvm_arch_test_clear_young()
From: Yu Zhao <hidden>
Date: 2023-02-23 03:59:28
Also in:
kvm, kvmarm, linux-arm-kernel, linux-mm, lkml
On Fri, Feb 17, 2023 at 2:00 AM Marc Zyngier [off-list ref] wrote:
On Fri, 17 Feb 2023 04:21:28 +0000, Yu Zhao [off-list ref] wrote:quoted
On Thu, Feb 16, 2023 at 9:12 PM Yu Zhao [off-list ref] wrote:quoted
This patch adds kvm_arch_test_clear_young() for the vast majority of VMs that are not pKVM and run on hardware that sets the accessed bit in KVM page tables.I'm really interested in how you can back this statement. 90% of the HW I have access to is not FEAT_HWAFDB capable, either because it predates the feature or because the feature is too buggy to be useful.
This is my expericen too -- most devices are pre v8.2.
Do you have numbers?
Let's do a quick market survey by segment. The following only applies to ARM CPUs: 1. Phones: none of the major Android phone vendors sell phones running VMs; no other major Linux phone vendors. 2. Laptops: only a very limited number of Chromebooks run VMs, namely ACRVM. No other major Linux laptop vendors. 3. Desktops: no major Linux desktop vendors. 4. Embedded/IoT/Router: no major Linux vendors run VMs (Android Auto can be a VM guest on QNX host). 5. Cloud: this is where the vast majority VMs come from. Among the vendors available to the general public, Ampere is the biggest player. Here [1] is a list of its customers. The A-bit works well even on its EVT products (Neoverse cores). [1] https://en.wikipedia.org/wiki/Ampere_Computing
quoted
quoted
It relies on two techniques, RCU and cmpxchg, to safely test and clear the accessed bit without taking the MMU lock. The former protects KVM page tables from being freed while the latter clears the accessed bit atomically against both the hardware and other software page table walkers. Signed-off-by: Yu Zhao <redacted> --- arch/arm64/include/asm/kvm_host.h | 7 +++ arch/arm64/include/asm/kvm_pgtable.h | 8 +++ arch/arm64/include/asm/stage2_pgtable.h | 43 ++++++++++++++ arch/arm64/kvm/arm.c | 1 + arch/arm64/kvm/hyp/pgtable.c | 51 ++-------------- arch/arm64/kvm/mmu.c | 77 ++++++++++++++++++++++++- 6 files changed, 141 insertions(+), 46 deletions(-)Adding Marc and Will. Can you please add other interested parties that I've missed?The MAINTAINERS file has it all: KERNEL VIRTUAL MACHINE FOR ARM64 (KVM/arm64) M: Marc Zyngier [off-list ref] M: Oliver Upton [off-list ref] R: James Morse [off-list ref] R: Suzuki K Poulose [off-list ref] R: Zenghui Yu [off-list ref] L: kvmarm@lists.linux.dev May I suggest that you repost your patch and Cc the interested parties yourself? I guess most folks will want to see this in context, and not as a random, isolated change with no rationale.
This clarified it. Thanks. (I was hesitant to spam people with the entire series containing changes to other architectures.)