|
@@ -2,6 +2,8 @@
|
|
|
#define _ASM_X86_PGTABLE_DEFS_H
|
|
|
|
|
|
#include <linux/const.h>
|
|
|
+#include <linux/mem_encrypt.h>
|
|
|
+
|
|
|
#include <asm/page_types.h>
|
|
|
|
|
|
#define FIRST_USER_ADDRESS 0UL
|
|
@@ -121,10 +123,10 @@
|
|
|
|
|
|
#define _PAGE_PROTNONE (_AT(pteval_t, 1) << _PAGE_BIT_PROTNONE)
|
|
|
|
|
|
-#define _PAGE_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | \
|
|
|
- _PAGE_ACCESSED | _PAGE_DIRTY)
|
|
|
-#define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | \
|
|
|
- _PAGE_DIRTY)
|
|
|
+#define _PAGE_TABLE_NOENC (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER |\
|
|
|
+ _PAGE_ACCESSED | _PAGE_DIRTY)
|
|
|
+#define _KERNPG_TABLE_NOENC (_PAGE_PRESENT | _PAGE_RW | \
|
|
|
+ _PAGE_ACCESSED | _PAGE_DIRTY)
|
|
|
|
|
|
/*
|
|
|
* Set of bits not changed in pte_modify. The pte's
|
|
@@ -191,18 +193,29 @@ enum page_cache_mode {
|
|
|
#define __PAGE_KERNEL_IO (__PAGE_KERNEL)
|
|
|
#define __PAGE_KERNEL_IO_NOCACHE (__PAGE_KERNEL_NOCACHE)
|
|
|
|
|
|
-#define PAGE_KERNEL __pgprot(__PAGE_KERNEL)
|
|
|
-#define PAGE_KERNEL_RO __pgprot(__PAGE_KERNEL_RO)
|
|
|
-#define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC)
|
|
|
-#define PAGE_KERNEL_RX __pgprot(__PAGE_KERNEL_RX)
|
|
|
-#define PAGE_KERNEL_NOCACHE __pgprot(__PAGE_KERNEL_NOCACHE)
|
|
|
-#define PAGE_KERNEL_LARGE __pgprot(__PAGE_KERNEL_LARGE)
|
|
|
-#define PAGE_KERNEL_LARGE_EXEC __pgprot(__PAGE_KERNEL_LARGE_EXEC)
|
|
|
-#define PAGE_KERNEL_VSYSCALL __pgprot(__PAGE_KERNEL_VSYSCALL)
|
|
|
-#define PAGE_KERNEL_VVAR __pgprot(__PAGE_KERNEL_VVAR)
|
|
|
-
|
|
|
-#define PAGE_KERNEL_IO __pgprot(__PAGE_KERNEL_IO)
|
|
|
-#define PAGE_KERNEL_IO_NOCACHE __pgprot(__PAGE_KERNEL_IO_NOCACHE)
|
|
|
+#ifndef __ASSEMBLY__
|
|
|
+
|
|
|
+#define _PAGE_ENC (_AT(pteval_t, sme_me_mask))
|
|
|
+
|
|
|
+#define _PAGE_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | \
|
|
|
+ _PAGE_ACCESSED | _PAGE_DIRTY | _PAGE_ENC)
|
|
|
+#define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | \
|
|
|
+ _PAGE_DIRTY | _PAGE_ENC)
|
|
|
+
|
|
|
+#define PAGE_KERNEL __pgprot(__PAGE_KERNEL | _PAGE_ENC)
|
|
|
+#define PAGE_KERNEL_RO __pgprot(__PAGE_KERNEL_RO | _PAGE_ENC)
|
|
|
+#define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC | _PAGE_ENC)
|
|
|
+#define PAGE_KERNEL_RX __pgprot(__PAGE_KERNEL_RX | _PAGE_ENC)
|
|
|
+#define PAGE_KERNEL_NOCACHE __pgprot(__PAGE_KERNEL_NOCACHE | _PAGE_ENC)
|
|
|
+#define PAGE_KERNEL_LARGE __pgprot(__PAGE_KERNEL_LARGE | _PAGE_ENC)
|
|
|
+#define PAGE_KERNEL_LARGE_EXEC __pgprot(__PAGE_KERNEL_LARGE_EXEC | _PAGE_ENC)
|
|
|
+#define PAGE_KERNEL_VSYSCALL __pgprot(__PAGE_KERNEL_VSYSCALL | _PAGE_ENC)
|
|
|
+#define PAGE_KERNEL_VVAR __pgprot(__PAGE_KERNEL_VVAR | _PAGE_ENC)
|
|
|
+
|
|
|
+#define PAGE_KERNEL_IO __pgprot(__PAGE_KERNEL_IO)
|
|
|
+#define PAGE_KERNEL_IO_NOCACHE __pgprot(__PAGE_KERNEL_IO_NOCACHE)
|
|
|
+
|
|
|
+#endif /* __ASSEMBLY__ */
|
|
|
|
|
|
/* xwr */
|
|
|
#define __P000 PAGE_NONE
|