Re: [PATCH v3 2/3] KVM: arm64: Introduce KVM_PGTABLE_WALK_SKIP_LEVEL* walk flags

From: Leonardo Bras

Date: Mon Jul 13 2026 - 06:17:06 EST


On Sat, Jul 11, 2026 at 06:53:28AM +0100, Wei-Lin Chang wrote:
> Hi Leonardo,

Hi Wei-Lin, thanks for reviewing!

>
> On Wed, Jul 08, 2026 at 02:40:58PM +0100, Leonardo Bras wrote:
> > Add the new walking flags that tell kvm_pgtable_walk() to skip lower levels
> > when walking the pagetables.
> >
> > Signed-off-by: Leonardo Bras <leo.bras@xxxxxxx>
> > ---
> > arch/arm64/include/asm/kvm_pgtable.h | 13 +++++++++++++
> > arch/arm64/kvm/hyp/pgtable.c | 19 ++++++++++++++++---
> > 2 files changed, 29 insertions(+), 3 deletions(-)
> >
> > diff --git a/arch/arm64/include/asm/kvm_pgtable.h b/arch/arm64/include/asm/kvm_pgtable.h
> > index 41a8687938eb..20c7c12e0e76 100644
> > --- a/arch/arm64/include/asm/kvm_pgtable.h
> > +++ b/arch/arm64/include/asm/kvm_pgtable.h
> > @@ -311,31 +311,44 @@ typedef bool (*kvm_pgtable_force_pte_cb_t)(u64 addr, u64 end,
> > * @KVM_PGTABLE_WALK_SHARED: Indicates the page-tables may be shared
> > * with other software walkers.
> > * @KVM_PGTABLE_WALK_IGNORE_EAGAIN: Don't terminate the walk early if
> > * the walker returns -EAGAIN.
> > * @KVM_PGTABLE_WALK_SKIP_BBM_TLBI: Visit and update table entries
> > * without Break-before-make's
> > * TLB invalidation.
> > * @KVM_PGTABLE_WALK_SKIP_CMO: Visit and update table entries
> > * without Cache maintenance
> > * operations required.
> > + * @KVM_PGTABLE_WALK_SKIP_LEVEL0: Skip visiting level-0+ entries
> > + * @KVM_PGTABLE_WALK_SKIP_LEVEL1: Skip visiting level-1+ entries
> > + * @KVM_PGTABLE_WALK_SKIP_LEVEL2: Skip visiting level-2+ entries
> > + * @KVM_PGTABLE_WALK_SKIP_LEVEL3: Skip visiting level-3 entries
>
> Just a drive-by nit:
> Maybe avoid the level-$LEVEL terminology? Since as you said there is
> level -1 in the architecture, in that case you'd have to write
> "level--1" which is awkward :)

It would have to be something like level-(-1), or we could call it level+1,
LOL.

Seriously though, yes it's bad.
I could call it level_1 entries, but level_-1 also seems weird :(
level(1) & level(-1) could work, but looks like a function now

maybe just saying 'level 1' and 'level -1' can be better.

What do you think?

Thanks!
Leo