Re: [PATCH 2/6] KVM: arm64: Add KVM_PGTABLE_S2_AS_S1 flag

Will Deacon
2026-01-22T17:05:19Z

On Thu, Jan 22, 2026 at 03:08:32PM +0000, Fuad Tabba wrote:
> On Mon, 19 Jan 2026 at 10:56, Marc Zyngier <maz@kernel.org> wrote:
> >
> > Plumb the MT_S2{,_FWB}_AS_S1 memory types into the KVM_S2_MEMATTR()
> > macro with a new KVM_PGTABLE_S2_AS_S1 flag.
> >
> > Nobody selects it yet.
> >
> > Signed-off-by: Marc Zyngier <maz@kernel.org>
> > ---
> > arch/arm64/include/asm/kvm_pgtable.h | 2 ++
> > arch/arm64/kvm/hyp/pgtable.c | 13 ++++++++++++-
> > 2 files changed, 14 insertions(+), 1 deletion(-)
> >
> > diff --git a/arch/arm64/include/asm/kvm_pgtable.h b/arch/arm64/include/asm/kvm_pgtable.h
> > index fc02de43c68dd..9ce51a637da0a 100644
> > --- a/arch/arm64/include/asm/kvm_pgtable.h
> > +++ b/arch/arm64/include/asm/kvm_pgtable.h
> > @@ -232,10 +232,12 @@ struct kvm_pgtable_mm_ops {
> > * @KVM_PGTABLE_S2_NOFWB: Don't enforce Normal-WB even if the CPUs have
> > * ARM64_HAS_STAGE2_FWB.
> > * @KVM_PGTABLE_S2_IDMAP: Only use identity mappings.
> > + * @KVM_PGTABLE_S2_AS_S1: Final memory attributes are that of Stage-1.
> > */
> > enum kvm_pgtable_stage2_flags {
> > KVM_PGTABLE_S2_NOFWB = BIT(0),
> > KVM_PGTABLE_S2_IDMAP = BIT(1),
> > + KVM_PGTABLE_S2_AS_S1 = BIT(2),
> > };
> >
> > /**
> > diff --git a/arch/arm64/kvm/hyp/pgtable.c b/arch/arm64/kvm/hyp/pgtable.c
> > index 947ac1a951a5b..3c5f399b1b986 100644
> > --- a/arch/arm64/kvm/hyp/pgtable.c
> > +++ b/arch/arm64/kvm/hyp/pgtable.c
> > @@ -659,7 +659,18 @@ void kvm_tlb_flush_vmid_range(struct kvm_s2_mmu *mmu,
> > }
> > }
> >
> > -#define KVM_S2_MEMATTR(pgt, attr) PAGE_S2_MEMATTR(attr, stage2_has_fwb(pgt))
> > +#define KVM_S2_MEMATTR(pgt, attr) \
> > + ({ \
> > + kvm_pte_t __attr; \
>
> nit: new line?
>
> Reviewed-by: Fuad Tabba <tabba@google.com>

If you're going back to fix nits then:

> > + if((pgt)->flags & KVM_PGTABLE_S2_AS_S1) \

please stick a space after the 'if' as well :)

Will