Thread (20 messages) 20 messages, 5 authors, 2026-01-23

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

From: Fuad Tabba <tabba@google.com>
Date: 2026-01-22 15:09:20
Also in: kvmarm

On Mon, 19 Jan 2026 at 10:56, Marc Zyngier [off-list ref] wrote:
quoted hunk ↗ jump to hunk
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>

Cheers,
/fuad
+               if((pgt)->flags & KVM_PGTABLE_S2_AS_S1)                 \
+                       __attr = PAGE_S2_MEMATTR(AS_S1,                 \
+                                                stage2_has_fwb(pgt));  \
+               else                                                    \
+                       __attr = PAGE_S2_MEMATTR(attr,                  \
+                                                stage2_has_fwb(pgt));  \
+                                                                       \
+               __attr;                                                 \
+       })

 static int stage2_set_xn_attr(enum kvm_pgtable_prot prot, kvm_pte_t *attr)
 {
--
2.47.3
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help