aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuergen Gross <jgross@suse.com>2018-08-28 03:40:22 -0400
committerThomas Gleixner <tglx@linutronix.de>2018-09-03 10:50:36 -0400
commit40181646db45fb72f46563a2f3b792adc5380710 (patch)
tree2f5a0b6e64a3849da6de632a2ff914b82e5f0a8e
parentc00a280a8efa4dc077596cf646bd50cbd13db3c8 (diff)
x86/paravirt: Move items in pv_info under PARAVIRT_XXL umbrella
All items but name in pv_info are needed by Xen PV only. Define them with CONFIG_PARAVIRT_XXL set only. Signed-off-by: Juergen Gross <jgross@suse.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: xen-devel@lists.xenproject.org Cc: virtualization@lists.linux-foundation.org Cc: akataria@vmware.com Cc: rusty@rustcorp.com.au Cc: boris.ostrovsky@oracle.com Cc: hpa@zytor.com Link: https://lkml.kernel.org/r/20180828074026.820-12-jgross@suse.com
-rw-r--r--arch/x86/include/asm/paravirt.h2
-rw-r--r--arch/x86/include/asm/paravirt_types.h2
-rw-r--r--arch/x86/include/asm/pgtable-3level_types.h2
-rw-r--r--arch/x86/include/asm/ptrace.h2
-rw-r--r--arch/x86/include/asm/segment.h2
-rw-r--r--arch/x86/kernel/paravirt.c2
6 files changed, 9 insertions, 3 deletions
diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h
index 2ba23e98c5cd..dbaedf1ed622 100644
--- a/arch/x86/include/asm/paravirt.h
+++ b/arch/x86/include/asm/paravirt.h
@@ -104,7 +104,9 @@ static inline void wbinvd(void)
104 PVOP_VCALL0(cpu.wbinvd); 104 PVOP_VCALL0(cpu.wbinvd);
105} 105}
106 106
107#ifdef CONFIG_PARAVIRT_XXL
107#define get_kernel_rpl() (pv_info.kernel_rpl) 108#define get_kernel_rpl() (pv_info.kernel_rpl)
109#endif
108 110
109static inline u64 paravirt_read_msr(unsigned msr) 111static inline u64 paravirt_read_msr(unsigned msr)
110{ 112{
diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h
index cee91a337620..5bfed396c6b4 100644
--- a/arch/x86/include/asm/paravirt_types.h
+++ b/arch/x86/include/asm/paravirt_types.h
@@ -66,12 +66,14 @@ struct paravirt_callee_save {
66 66
67/* general info */ 67/* general info */
68struct pv_info { 68struct pv_info {
69#ifdef CONFIG_PARAVIRT_XXL
69 unsigned int kernel_rpl; 70 unsigned int kernel_rpl;
70 int shared_kernel_pmd; 71 int shared_kernel_pmd;
71 72
72#ifdef CONFIG_X86_64 73#ifdef CONFIG_X86_64
73 u16 extra_user_64bit_cs; /* __USER_CS if none */ 74 u16 extra_user_64bit_cs; /* __USER_CS if none */
74#endif 75#endif
76#endif
75 77
76 const char *name; 78 const char *name;
77}; 79};
diff --git a/arch/x86/include/asm/pgtable-3level_types.h b/arch/x86/include/asm/pgtable-3level_types.h
index 858358a82b14..33845d36897c 100644
--- a/arch/x86/include/asm/pgtable-3level_types.h
+++ b/arch/x86/include/asm/pgtable-3level_types.h
@@ -20,7 +20,7 @@ typedef union {
20} pte_t; 20} pte_t;
21#endif /* !__ASSEMBLY__ */ 21#endif /* !__ASSEMBLY__ */
22 22
23#ifdef CONFIG_PARAVIRT 23#ifdef CONFIG_PARAVIRT_XXL
24#define SHARED_KERNEL_PMD ((!static_cpu_has(X86_FEATURE_PTI) && \ 24#define SHARED_KERNEL_PMD ((!static_cpu_has(X86_FEATURE_PTI) && \
25 (pv_info.shared_kernel_pmd))) 25 (pv_info.shared_kernel_pmd)))
26#else 26#else
diff --git a/arch/x86/include/asm/ptrace.h b/arch/x86/include/asm/ptrace.h
index 6de1fd3d0097..250be50aa257 100644
--- a/arch/x86/include/asm/ptrace.h
+++ b/arch/x86/include/asm/ptrace.h
@@ -144,7 +144,7 @@ static inline int v8086_mode(struct pt_regs *regs)
144static inline bool user_64bit_mode(struct pt_regs *regs) 144static inline bool user_64bit_mode(struct pt_regs *regs)
145{ 145{
146#ifdef CONFIG_X86_64 146#ifdef CONFIG_X86_64
147#ifndef CONFIG_PARAVIRT 147#ifndef CONFIG_PARAVIRT_XXL
148 /* 148 /*
149 * On non-paravirt systems, this is the only long mode CPL 3 149 * On non-paravirt systems, this is the only long mode CPL 3
150 * selector. We do not allow long mode selectors in the LDT. 150 * selector. We do not allow long mode selectors in the LDT.
diff --git a/arch/x86/include/asm/segment.h b/arch/x86/include/asm/segment.h
index e293c122d0d5..0ffbe9519e68 100644
--- a/arch/x86/include/asm/segment.h
+++ b/arch/x86/include/asm/segment.h
@@ -211,7 +211,7 @@
211 211
212#endif 212#endif
213 213
214#ifndef CONFIG_PARAVIRT 214#ifndef CONFIG_PARAVIRT_XXL
215# define get_kernel_rpl() 0 215# define get_kernel_rpl() 0
216#endif 216#endif
217 217
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
index 0ca0576c88ff..ce0e28506942 100644
--- a/arch/x86/kernel/paravirt.c
+++ b/arch/x86/kernel/paravirt.c
@@ -293,12 +293,14 @@ enum paravirt_lazy_mode paravirt_get_lazy_mode(void)
293 293
294struct pv_info pv_info = { 294struct pv_info pv_info = {
295 .name = "bare hardware", 295 .name = "bare hardware",
296#ifdef CONFIG_PARAVIRT_XXL
296 .kernel_rpl = 0, 297 .kernel_rpl = 0,
297 .shared_kernel_pmd = 1, /* Only used when CONFIG_X86_PAE is set */ 298 .shared_kernel_pmd = 1, /* Only used when CONFIG_X86_PAE is set */
298 299
299#ifdef CONFIG_X86_64 300#ifdef CONFIG_X86_64
300 .extra_user_64bit_cs = __USER_CS, 301 .extra_user_64bit_cs = __USER_CS,
301#endif 302#endif
303#endif
302}; 304};
303 305
304#if defined(CONFIG_X86_32) && !defined(CONFIG_X86_PAE) 306#if defined(CONFIG_X86_32) && !defined(CONFIG_X86_PAE)