diff options
| author | Juergen Gross <jgross@suse.com> | 2018-08-28 03:40:22 -0400 |
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2018-09-03 10:50:36 -0400 |
| commit | 40181646db45fb72f46563a2f3b792adc5380710 (patch) | |
| tree | 2f5a0b6e64a3849da6de632a2ff914b82e5f0a8e | |
| parent | c00a280a8efa4dc077596cf646bd50cbd13db3c8 (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.h | 2 | ||||
| -rw-r--r-- | arch/x86/include/asm/paravirt_types.h | 2 | ||||
| -rw-r--r-- | arch/x86/include/asm/pgtable-3level_types.h | 2 | ||||
| -rw-r--r-- | arch/x86/include/asm/ptrace.h | 2 | ||||
| -rw-r--r-- | arch/x86/include/asm/segment.h | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/paravirt.c | 2 |
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 | ||
| 109 | static inline u64 paravirt_read_msr(unsigned msr) | 111 | static 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 */ |
| 68 | struct pv_info { | 68 | struct 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) | |||
| 144 | static inline bool user_64bit_mode(struct pt_regs *regs) | 144 | static 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 | ||
| 294 | struct pv_info pv_info = { | 294 | struct 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) |
