All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] linux-2.6.18: add privileged/unprivileged kernel feature indication
@ 2011-07-05 13:16 Jan Beulich
  0 siblings, 0 replies; only message in thread
From: Jan Beulich @ 2011-07-05 13:16 UTC (permalink / raw)
  To: xen-devel

[-- Attachment #1: Type: text/plain, Size: 3495 bytes --]

This is the kernel side change accompanying the earlier sent Xen side
patch titled identically.

Signed-off-by: Jan Beulich <jbeulich@novell.com>

--- a/arch/i386/kernel/head-xen.S
+++ b/arch/i386/kernel/head-xen.S
@@ -137,6 +137,12 @@ ENTRY(cpu_gdt_table)
 	.quad 0x0000000000000000	/* 0xf0 - unused */
 	.quad 0x0000000000000000	/* 0xf8 - GDT entry 31: double-fault TSS */
 
+#ifdef CONFIG_XEN_UNPRIVILEGED_GUEST
+# define XEN_PRIV_CAP "!unprivileged"
+#else
+# define XEN_PRIV_CAP "privileged|unprivileged"
+#endif
+
 #if CONFIG_XEN_COMPAT <= 0x030002
 /*
  * __xen_guest information
@@ -163,7 +169,8 @@ ENTRY(cpu_gdt_table)
 		utoa (__PAGE_OFFSET + __PHYSICAL_START + VIRT_ENTRY_OFFSET)
 	.ascii	",HYPERCALL_PAGE=0x"
 		utoa ((__PHYSICAL_START+HYPERCALL_PAGE_OFFSET)>>PAGE_SHIFT)
-	.ascii  ",FEATURES=writable_page_tables"
+	.ascii  ",FEATURES=" XEN_PRIV_CAP
+	.ascii	         "|writable_page_tables"
 	.ascii	         "|writable_descriptor_tables"
 	.ascii	         "|auto_translated_physmap"
 	.ascii	         "|pae_pgdir_above_4gb"
@@ -190,7 +197,12 @@ ENTRY(cpu_gdt_table)
 	ELFNOTE(Xen, XEN_ELFNOTE_ENTRY,          .long,  startup_32)
 	ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, .long,  hypercall_page)
 	ELFNOTE(Xen, XEN_ELFNOTE_HV_START_LOW,   .long,  HYPERVISOR_VIRT_START)
-	ELFNOTE(Xen, XEN_ELFNOTE_FEATURES,       .asciz, "writable_page_tables|writable_descriptor_tables|auto_translated_physmap|pae_pgdir_above_4gb|supervisor_mode_kernel")
+	ELFNOTE(Xen, XEN_ELFNOTE_FEATURES,       .ascii, XEN_PRIV_CAP;
+						 .ascii  "|writable_page_tables";
+						 .ascii  "|writable_descriptor_tables";
+						 .ascii  "|auto_translated_physmap";
+						 .ascii  "|pae_pgdir_above_4gb";
+						 .asciz  "|supervisor_mode_kernel")
 #ifdef CONFIG_X86_PAE
 	ELFNOTE(Xen, XEN_ELFNOTE_PAE_MODE,       .asciz, "yes")
 	ELFNOTE(Xen, XEN_ELFNOTE_L1_MFN_VALID,   .quad,  _PAGE_PRESENT,_PAGE_PRESENT)
--- a/arch/x86_64/kernel/head-xen.S
+++ b/arch/x86_64/kernel/head-xen.S
@@ -160,6 +160,12 @@ gdt_end:
 ENTRY(empty_zero_page)
 	.skip PAGE_SIZE
 
+#ifdef CONFIG_XEN_UNPRIVILEGED_GUEST
+# define XEN_PRIV_CAP "!unprivileged"
+#else
+# define XEN_PRIV_CAP "privileged|unprivileged"
+#endif
+
 #if CONFIG_XEN_COMPAT <= 0x030002
 /*
  * __xen_guest information
@@ -186,7 +192,8 @@ ENTRY(empty_zero_page)
 		utoh (__START_KERNEL_map + __PHYSICAL_START)
 	.ascii	",HYPERCALL_PAGE=0x"
 		utoh (phys_hypercall_page >> PAGE_SHIFT)
-	.ascii  ",FEATURES=writable_page_tables"
+	.ascii  ",FEATURES=" XEN_PRIV_CAP
+	.ascii		 "|writable_page_tables"
 	.ascii		 "|writable_descriptor_tables"
 	.ascii		 "|auto_translated_physmap"
 	.ascii	         "|supervisor_mode_kernel"
@@ -206,6 +213,10 @@ ENTRY(empty_zero_page)
 	ELFNOTE(Xen, XEN_ELFNOTE_ENTRY,          .quad,  startup_64)
 	ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, .quad,  hypercall_page)
 	ELFNOTE(Xen, XEN_ELFNOTE_L1_MFN_VALID,   .quad,  _PAGE_PRESENT,_PAGE_PRESENT)
-	ELFNOTE(Xen, XEN_ELFNOTE_FEATURES,       .asciz, "writable_page_tables|writable_descriptor_tables|auto_translated_physmap|supervisor_mode_kernel")
+	ELFNOTE(Xen, XEN_ELFNOTE_FEATURES,       .ascii, XEN_PRIV_CAP;
+						 .ascii "|writable_page_tables";
+						 .ascii "|writable_descriptor_tables";
+						 .ascii "|auto_translated_physmap";
+						 .asciz "|supervisor_mode_kernel")
 	ELFNOTE(Xen, XEN_ELFNOTE_LOADER,         .asciz, "generic")
 	ELFNOTE(Xen, XEN_ELFNOTE_SUSPEND_CANCEL, .long,  1)




[-- Attachment #2: xen-kernel-cap.patch --]
[-- Type: text/plain, Size: 3489 bytes --]

This is the kernel side change accompanying the earlier sent Xen side
patch titled identically.

Signed-off-by: Jan Beulich <jbeulich@novell.com>

--- a/arch/i386/kernel/head-xen.S
+++ b/arch/i386/kernel/head-xen.S
@@ -137,6 +137,12 @@ ENTRY(cpu_gdt_table)
 	.quad 0x0000000000000000	/* 0xf0 - unused */
 	.quad 0x0000000000000000	/* 0xf8 - GDT entry 31: double-fault TSS */
 
+#ifdef CONFIG_XEN_UNPRIVILEGED_GUEST
+# define XEN_PRIV_CAP "!unprivileged"
+#else
+# define XEN_PRIV_CAP "privileged|unprivileged"
+#endif
+
 #if CONFIG_XEN_COMPAT <= 0x030002
 /*
  * __xen_guest information
@@ -163,7 +169,8 @@ ENTRY(cpu_gdt_table)
 		utoa (__PAGE_OFFSET + __PHYSICAL_START + VIRT_ENTRY_OFFSET)
 	.ascii	",HYPERCALL_PAGE=0x"
 		utoa ((__PHYSICAL_START+HYPERCALL_PAGE_OFFSET)>>PAGE_SHIFT)
-	.ascii  ",FEATURES=writable_page_tables"
+	.ascii  ",FEATURES=" XEN_PRIV_CAP
+	.ascii	         "|writable_page_tables"
 	.ascii	         "|writable_descriptor_tables"
 	.ascii	         "|auto_translated_physmap"
 	.ascii	         "|pae_pgdir_above_4gb"
@@ -190,7 +197,12 @@ ENTRY(cpu_gdt_table)
 	ELFNOTE(Xen, XEN_ELFNOTE_ENTRY,          .long,  startup_32)
 	ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, .long,  hypercall_page)
 	ELFNOTE(Xen, XEN_ELFNOTE_HV_START_LOW,   .long,  HYPERVISOR_VIRT_START)
-	ELFNOTE(Xen, XEN_ELFNOTE_FEATURES,       .asciz, "writable_page_tables|writable_descriptor_tables|auto_translated_physmap|pae_pgdir_above_4gb|supervisor_mode_kernel")
+	ELFNOTE(Xen, XEN_ELFNOTE_FEATURES,       .ascii, XEN_PRIV_CAP;
+						 .ascii  "|writable_page_tables";
+						 .ascii  "|writable_descriptor_tables";
+						 .ascii  "|auto_translated_physmap";
+						 .ascii  "|pae_pgdir_above_4gb";
+						 .asciz  "|supervisor_mode_kernel")
 #ifdef CONFIG_X86_PAE
 	ELFNOTE(Xen, XEN_ELFNOTE_PAE_MODE,       .asciz, "yes")
 	ELFNOTE(Xen, XEN_ELFNOTE_L1_MFN_VALID,   .quad,  _PAGE_PRESENT,_PAGE_PRESENT)
--- a/arch/x86_64/kernel/head-xen.S
+++ b/arch/x86_64/kernel/head-xen.S
@@ -160,6 +160,12 @@ gdt_end:
 ENTRY(empty_zero_page)
 	.skip PAGE_SIZE
 
+#ifdef CONFIG_XEN_UNPRIVILEGED_GUEST
+# define XEN_PRIV_CAP "!unprivileged"
+#else
+# define XEN_PRIV_CAP "privileged|unprivileged"
+#endif
+
 #if CONFIG_XEN_COMPAT <= 0x030002
 /*
  * __xen_guest information
@@ -186,7 +192,8 @@ ENTRY(empty_zero_page)
 		utoh (__START_KERNEL_map + __PHYSICAL_START)
 	.ascii	",HYPERCALL_PAGE=0x"
 		utoh (phys_hypercall_page >> PAGE_SHIFT)
-	.ascii  ",FEATURES=writable_page_tables"
+	.ascii  ",FEATURES=" XEN_PRIV_CAP
+	.ascii		 "|writable_page_tables"
 	.ascii		 "|writable_descriptor_tables"
 	.ascii		 "|auto_translated_physmap"
 	.ascii	         "|supervisor_mode_kernel"
@@ -206,6 +213,10 @@ ENTRY(empty_zero_page)
 	ELFNOTE(Xen, XEN_ELFNOTE_ENTRY,          .quad,  startup_64)
 	ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, .quad,  hypercall_page)
 	ELFNOTE(Xen, XEN_ELFNOTE_L1_MFN_VALID,   .quad,  _PAGE_PRESENT,_PAGE_PRESENT)
-	ELFNOTE(Xen, XEN_ELFNOTE_FEATURES,       .asciz, "writable_page_tables|writable_descriptor_tables|auto_translated_physmap|supervisor_mode_kernel")
+	ELFNOTE(Xen, XEN_ELFNOTE_FEATURES,       .ascii, XEN_PRIV_CAP;
+						 .ascii "|writable_page_tables";
+						 .ascii "|writable_descriptor_tables";
+						 .ascii "|auto_translated_physmap";
+						 .asciz "|supervisor_mode_kernel")
 	ELFNOTE(Xen, XEN_ELFNOTE_LOADER,         .asciz, "generic")
 	ELFNOTE(Xen, XEN_ELFNOTE_SUSPEND_CANCEL, .long,  1)

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2011-07-05 13:16 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-07-05 13:16 [PATCH] linux-2.6.18: add privileged/unprivileged kernel feature indication Jan Beulich

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.