]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
KVM: arm64: Move enum pkvm_page_state to memory.h
authorQuentin Perret <qperret@google.com>
Wed, 18 Dec 2024 19:40:43 +0000 (19:40 +0000)
committerMarc Zyngier <maz@kernel.org>
Fri, 20 Dec 2024 09:43:59 +0000 (09:43 +0000)
In order to prepare the way for storing page-tracking information in
pKVM's vmemmap, move the enum pkvm_page_state definition to
nvhe/memory.h.

No functional changes intended.

Tested-by: Fuad Tabba <tabba@google.com>
Reviewed-by: Fuad Tabba <tabba@google.com>
Signed-off-by: Quentin Perret <qperret@google.com>
Link: https://lore.kernel.org/r/20241218194059.3670226-3-qperret@google.com
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/hyp/include/nvhe/mem_protect.h
arch/arm64/kvm/hyp/include/nvhe/memory.h

index 5462faf6bfeebb17e4ba0c53edb6755df0b96647..25038ac705d8251d7dc7978ecfad3ee7b9d2a528 100644 (file)
 #include <asm/kvm_mmu.h>
 #include <asm/kvm_pgtable.h>
 #include <asm/virt.h>
+#include <nvhe/memory.h>
 #include <nvhe/pkvm.h>
 #include <nvhe/spinlock.h>
 
-/*
- * SW bits 0-1 are reserved to track the memory ownership state of each page:
- *   00: The page is owned exclusively by the page-table owner.
- *   01: The page is owned by the page-table owner, but is shared
- *       with another entity.
- *   10: The page is shared with, but not owned by the page-table owner.
- *   11: Reserved for future use (lending).
- */
-enum pkvm_page_state {
-       PKVM_PAGE_OWNED                 = 0ULL,
-       PKVM_PAGE_SHARED_OWNED          = BIT(0),
-       PKVM_PAGE_SHARED_BORROWED       = BIT(1),
-       __PKVM_PAGE_RESERVED            = BIT(0) | BIT(1),
-
-       /* Meta-states which aren't encoded directly in the PTE's SW bits */
-       PKVM_NOPAGE                     = BIT(2),
-};
-#define PKVM_PAGE_META_STATES_MASK     (~__PKVM_PAGE_RESERVED)
-
-#define PKVM_PAGE_STATE_PROT_MASK      (KVM_PGTABLE_PROT_SW0 | KVM_PGTABLE_PROT_SW1)
-static inline enum kvm_pgtable_prot pkvm_mkstate(enum kvm_pgtable_prot prot,
-                                                enum pkvm_page_state state)
-{
-       prot &= ~PKVM_PAGE_STATE_PROT_MASK;
-       prot |= FIELD_PREP(PKVM_PAGE_STATE_PROT_MASK, state);
-       return prot;
-}
-
-static inline enum pkvm_page_state pkvm_getstate(enum kvm_pgtable_prot prot)
-{
-       return FIELD_GET(PKVM_PAGE_STATE_PROT_MASK, prot);
-}
-
 struct host_mmu {
        struct kvm_arch arch;
        struct kvm_pgtable pgt;
index ab205c4d67748f688c95ed63d00c18b1eca1c7ef..0964c461da9260c65e9a7f23fdfe833721df70be 100644 (file)
@@ -7,6 +7,39 @@
 
 #include <linux/types.h>
 
+/*
+ * SW bits 0-1 are reserved to track the memory ownership state of each page:
+ *   00: The page is owned exclusively by the page-table owner.
+ *   01: The page is owned by the page-table owner, but is shared
+ *       with another entity.
+ *   10: The page is shared with, but not owned by the page-table owner.
+ *   11: Reserved for future use (lending).
+ */
+enum pkvm_page_state {
+       PKVM_PAGE_OWNED                 = 0ULL,
+       PKVM_PAGE_SHARED_OWNED          = BIT(0),
+       PKVM_PAGE_SHARED_BORROWED       = BIT(1),
+       __PKVM_PAGE_RESERVED            = BIT(0) | BIT(1),
+
+       /* Meta-states which aren't encoded directly in the PTE's SW bits */
+       PKVM_NOPAGE                     = BIT(2),
+};
+#define PKVM_PAGE_META_STATES_MASK     (~__PKVM_PAGE_RESERVED)
+
+#define PKVM_PAGE_STATE_PROT_MASK      (KVM_PGTABLE_PROT_SW0 | KVM_PGTABLE_PROT_SW1)
+static inline enum kvm_pgtable_prot pkvm_mkstate(enum kvm_pgtable_prot prot,
+                                                enum pkvm_page_state state)
+{
+       prot &= ~PKVM_PAGE_STATE_PROT_MASK;
+       prot |= FIELD_PREP(PKVM_PAGE_STATE_PROT_MASK, state);
+       return prot;
+}
+
+static inline enum pkvm_page_state pkvm_getstate(enum kvm_pgtable_prot prot)
+{
+       return FIELD_GET(PKVM_PAGE_STATE_PROT_MASK, prot);
+}
+
 struct hyp_page {
        unsigned short refcount;
        unsigned short order;