On Fri, Feb 17, 2023 at 2:00 AM Marc Zyngier <maz@xxxxxxxxxx> wrote: > > On Fri, 17 Feb 2023 04:21:28 +0000, > Yu Zhao <yuzhao@xxxxxxxxxx> wrote: > > > > On Thu, Feb 16, 2023 at 9:12 PM Yu Zhao <yuzhao@xxxxxxxxxx> wrote: > > > > > > 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 > > > 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 <yuzhao@xxxxxxxxxx> > > > --- > > > 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 <maz@xxxxxxxxxx> > M: Oliver Upton <oliver.upton@xxxxxxxxx> > R: James Morse <james.morse@xxxxxxx> > R: Suzuki K Poulose <suzuki.poulose@xxxxxxx> > R: Zenghui Yu <yuzenghui@xxxxxxxxxx> > L: kvmarm@xxxxxxxxxxxxxxx > > 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.)