[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




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.