|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [UNIKRAFT PATCH 2/2] plat/xen: support PKE bit on x86
From: Hugo Lefeuvre <hugo.lefeuvre@xxxxxxxxxx>
Signed-off-by: Hugo Lefeuvre <hugo.lefeuvre@xxxxxxxxxxxxxxxx>
---
plat/xen/x86/entry64.S | 9 +++++++++
plat/xen/x86/setup.c | 4 ++++
2 files changed, 13 insertions(+)
diff --git a/plat/xen/x86/entry64.S b/plat/xen/x86/entry64.S
index ae118e1d..c1bee635 100644
--- a/plat/xen/x86/entry64.S
+++ b/plat/xen/x86/entry64.S
@@ -115,6 +115,15 @@ noxsave:
orl $(X86_CR4_FSGSBASE), %edi
movq %rdi, %cr4
nofsgsbase:
+#if CONFIG_HAVE_X86PKU
+ /* check for Memory Protection Keys (PKU) */
+ testl $(X86_CPUID7_ECX_PKU), %ecx
+ jz nopku
+ /* if PKU is supported, enable it via CR4 */
+ orl $(X86_CR4_PKE), %edi
+ movq %rdi, %cr4
+nopku:
+#endif /* CONFIG_HAVE_X86PKU */
/* Done setting up CPU capabilities, hand over to C entry point. */
movq %r8, %rdi /* pass pointer to start_info page to C entry */
call _libxenplat_x86entry
diff --git a/plat/xen/x86/setup.c b/plat/xen/x86/setup.c
index ebe99328..e5d51b32 100644
--- a/plat/xen/x86/setup.c
+++ b/plat/xen/x86/setup.c
@@ -211,5 +211,9 @@ void _libxenplat_x86entry(void *start_info)
init_console();
+#if CONFIG_HAVE_X86PKU
+ _check_ospke();
+#endif /* CONFIG_HAVE_X86PKU */
+
ukplat_entry_argp(CONFIG_UK_NAME, cmdline, MAX_GUEST_CMDLINE);
}
--
2.20.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |