[PATCH V9 38/45] memremap_pages: Reserve a PKS pkey for eventual use by PMEM

From: ira . weiny
Date: Thu Mar 10 2022 - 12:23:26 EST


From: Ira Weiny <ira.weiny@xxxxxxxxx>

Reserve a pkey for use by the memmap facility and set the default
protections to Access Disabled.

Signed-off-by: Ira Weiny <ira.weiny@xxxxxxxxx>

---
Changes for V9
Adjust for new key allocation
From Dave Hansen
use pkey
---
include/linux/pks-keys.h | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/include/linux/pks-keys.h b/include/linux/pks-keys.h
index f7e82e462659..32075ac54964 100644
--- a/include/linux/pks-keys.h
+++ b/include/linux/pks-keys.h
@@ -61,7 +61,9 @@
/* PKS_KEY_DEFAULT must be 0 */
#define PKS_KEY_DEFAULT 0
#define PKS_KEY_TEST PKS_NEW_KEY(PKS_KEY_DEFAULT, CONFIG_PKS_TEST)
-#define PKS_KEY_MAX PKS_NEW_KEY(PKS_KEY_TEST, 1)
+#define PKS_KEY_PGMAP_PROTECTION \
+ PKS_NEW_KEY(PKS_KEY_TEST, CONFIG_DEVMAP_ACCESS_PROTECTION)
+#define PKS_KEY_MAX PKS_NEW_KEY(PKS_KEY_PGMAP_PROTECTION, 1)

#ifdef CONFIG_PKS_TEST_ALL_KEYS
#undef PKS_KEY_MAX
@@ -72,6 +74,8 @@
#define PKS_KEY_DEFAULT_INIT PKS_DECLARE_INIT_VALUE(PKS_KEY_DEFAULT, RW, 1)
#define PKS_KEY_TEST_INIT PKS_DECLARE_INIT_VALUE(PKS_KEY_TEST, AD, \
CONFIG_PKS_TEST)
+#define PKS_KEY_PGMAP_INIT PKS_DECLARE_INIT_VALUE(PKS_KEY_PGMAP_PROTECTION, \
+ AD, CONFIG_DEVMAP_ACCESS_PROTECTION)

#define PKS_ALL_AD_MASK \
GENMASK(PKS_NUM_PKEYS * PKR_BITS_PER_PKEY, \
@@ -79,7 +83,8 @@

#define PKS_INIT_VALUE ((PKS_ALL_AD & PKS_ALL_AD_MASK) | \
PKS_KEY_DEFAULT_INIT | \
- PKS_KEY_TEST_INIT \
+ PKS_KEY_TEST_INIT | \
+ PKS_KEY_PGMAP_INIT \
)

#endif /* CONFIG_ARCH_ENABLE_SUPERVISOR_PKEYS */
--
2.35.1