KVM: arm64: Move pagetable definitions to common header
authorSebastian Ene <sebastianene@google.com>
Mon, 9 Sep 2024 12:47:17 +0000 (12:47 +0000)
committerMarc Zyngier <maz@kernel.org>
Tue, 10 Sep 2024 16:46:57 +0000 (17:46 +0100)
In preparation for using the stage-2 definitions in ptdump, move some of
these macros in the common header.

Signed-off-by: Sebastian Ene <sebastianene@google.com>
Link: https://lore.kernel.org/r/20240909124721.1672199-2-sebastianene@google.com
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/include/asm/kvm_pgtable.h
arch/arm64/kvm/hyp/pgtable.c

index 19278df..03f4c3d 100644 (file)
@@ -59,6 +59,48 @@ typedef u64 kvm_pte_t;
 
 #define KVM_PHYS_INVALID               (-1ULL)
 
+#define KVM_PTE_LEAF_ATTR_LO           GENMASK(11, 2)
+
+#define KVM_PTE_LEAF_ATTR_LO_S1_ATTRIDX        GENMASK(4, 2)
+#define KVM_PTE_LEAF_ATTR_LO_S1_AP     GENMASK(7, 6)
+#define KVM_PTE_LEAF_ATTR_LO_S1_AP_RO          \
+       ({ cpus_have_final_cap(ARM64_KVM_HVHE) ? 2 : 3; })
+#define KVM_PTE_LEAF_ATTR_LO_S1_AP_RW          \
+       ({ cpus_have_final_cap(ARM64_KVM_HVHE) ? 0 : 1; })
+#define KVM_PTE_LEAF_ATTR_LO_S1_SH     GENMASK(9, 8)
+#define KVM_PTE_LEAF_ATTR_LO_S1_SH_IS  3
+#define KVM_PTE_LEAF_ATTR_LO_S1_AF     BIT(10)
+
+#define KVM_PTE_LEAF_ATTR_LO_S2_MEMATTR        GENMASK(5, 2)
+#define KVM_PTE_LEAF_ATTR_LO_S2_S2AP_R BIT(6)
+#define KVM_PTE_LEAF_ATTR_LO_S2_S2AP_W BIT(7)
+#define KVM_PTE_LEAF_ATTR_LO_S2_SH     GENMASK(9, 8)
+#define KVM_PTE_LEAF_ATTR_LO_S2_SH_IS  3
+#define KVM_PTE_LEAF_ATTR_LO_S2_AF     BIT(10)
+
+#define KVM_PTE_LEAF_ATTR_HI           GENMASK(63, 50)
+
+#define KVM_PTE_LEAF_ATTR_HI_SW                GENMASK(58, 55)
+
+#define KVM_PTE_LEAF_ATTR_HI_S1_XN     BIT(54)
+
+#define KVM_PTE_LEAF_ATTR_HI_S2_XN     BIT(54)
+
+#define KVM_PTE_LEAF_ATTR_HI_S1_GP     BIT(50)
+
+#define KVM_PTE_LEAF_ATTR_S2_PERMS     (KVM_PTE_LEAF_ATTR_LO_S2_S2AP_R | \
+                                        KVM_PTE_LEAF_ATTR_LO_S2_S2AP_W | \
+                                        KVM_PTE_LEAF_ATTR_HI_S2_XN)
+
+#define KVM_INVALID_PTE_OWNER_MASK     GENMASK(9, 2)
+#define KVM_MAX_OWNER_ID               1
+
+/*
+ * Used to indicate a pte for which a 'break-before-make' sequence is in
+ * progress.
+ */
+#define KVM_INVALID_PTE_LOCKED         BIT(10)
+
 static inline bool kvm_pte_valid(kvm_pte_t pte)
 {
        return pte & KVM_PTE_VALID;
index 9e2bbee..c3e9d77 100644 (file)
 #define KVM_PTE_TYPE_PAGE              1
 #define KVM_PTE_TYPE_TABLE             1
 
-#define KVM_PTE_LEAF_ATTR_LO           GENMASK(11, 2)
-
-#define KVM_PTE_LEAF_ATTR_LO_S1_ATTRIDX        GENMASK(4, 2)
-#define KVM_PTE_LEAF_ATTR_LO_S1_AP     GENMASK(7, 6)
-#define KVM_PTE_LEAF_ATTR_LO_S1_AP_RO          \
-       ({ cpus_have_final_cap(ARM64_KVM_HVHE) ? 2 : 3; })
-#define KVM_PTE_LEAF_ATTR_LO_S1_AP_RW          \
-       ({ cpus_have_final_cap(ARM64_KVM_HVHE) ? 0 : 1; })
-#define KVM_PTE_LEAF_ATTR_LO_S1_SH     GENMASK(9, 8)
-#define KVM_PTE_LEAF_ATTR_LO_S1_SH_IS  3
-#define KVM_PTE_LEAF_ATTR_LO_S1_AF     BIT(10)
-
-#define KVM_PTE_LEAF_ATTR_LO_S2_MEMATTR        GENMASK(5, 2)
-#define KVM_PTE_LEAF_ATTR_LO_S2_S2AP_R BIT(6)
-#define KVM_PTE_LEAF_ATTR_LO_S2_S2AP_W BIT(7)
-#define KVM_PTE_LEAF_ATTR_LO_S2_SH     GENMASK(9, 8)
-#define KVM_PTE_LEAF_ATTR_LO_S2_SH_IS  3
-#define KVM_PTE_LEAF_ATTR_LO_S2_AF     BIT(10)
-
-#define KVM_PTE_LEAF_ATTR_HI           GENMASK(63, 50)
-
-#define KVM_PTE_LEAF_ATTR_HI_SW                GENMASK(58, 55)
-
-#define KVM_PTE_LEAF_ATTR_HI_S1_XN     BIT(54)
-
-#define KVM_PTE_LEAF_ATTR_HI_S2_XN     BIT(54)
-
-#define KVM_PTE_LEAF_ATTR_HI_S1_GP     BIT(50)
-
-#define KVM_PTE_LEAF_ATTR_S2_PERMS     (KVM_PTE_LEAF_ATTR_LO_S2_S2AP_R | \
-                                        KVM_PTE_LEAF_ATTR_LO_S2_S2AP_W | \
-                                        KVM_PTE_LEAF_ATTR_HI_S2_XN)
-
-#define KVM_INVALID_PTE_OWNER_MASK     GENMASK(9, 2)
-#define KVM_MAX_OWNER_ID               1
-
-/*
- * Used to indicate a pte for which a 'break-before-make' sequence is in
- * progress.
- */
-#define KVM_INVALID_PTE_LOCKED         BIT(10)
-
 struct kvm_pgtable_walk_data {
        struct kvm_pgtable_walker       *walker;