Skip to content

Commit 59094fa

Browse files
suryasaimadhugregkh
authored andcommitted
x86/kaiser: Move feature detection up
... before the first use of kaiser_enabled as otherwise funky things happen: about to get started... (XEN) d0v0 Unhandled page fault fault/trap [#14, ec=0000] (XEN) Pagetable walk from ffff88022a449090: (XEN) L4[0x110] = 0000000229e0e067 0000000000001e0e (XEN) L3[0x008] = 0000000000000000 ffffffffffffffff (XEN) domain_crash_sync called from entry.S: fault at ffff82d08033fd08 entry.o#create_bounce_frame+0x135/0x14d (XEN) Domain 0 (vcpu#0) crashed on cpu#0: (XEN) ----[ Xen-4.9.1_02-3.21 x86_64 debug=n Not tainted ]---- (XEN) CPU: 0 (XEN) RIP: e033:[<ffffffff81007460>] (XEN) RFLAGS: 0000000000000286 EM: 1 CONTEXT: pv guest (d0v0) Signed-off-by: Borislav Petkov <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 402e63d commit 59094fa

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

arch/x86/include/asm/kaiser.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,10 @@ DECLARE_PER_CPU(unsigned long, x86_cr3_pcid_user);
9696
extern char __per_cpu_user_mapped_start[], __per_cpu_user_mapped_end[];
9797

9898
extern int kaiser_enabled;
99+
extern void __init kaiser_check_boottime_disable(void);
99100
#else
100101
#define kaiser_enabled 0
102+
static inline void __init kaiser_check_boottime_disable(void) {}
101103
#endif /* CONFIG_KAISER */
102104

103105
/*

arch/x86/kernel/setup.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@
114114
#include <asm/microcode.h>
115115
#include <asm/mmu_context.h>
116116
#include <asm/kaslr.h>
117+
#include <asm/kaiser.h>
117118

118119
/*
119120
* max_low_pfn_mapped: highest direct mapped pfn under 4GB
@@ -1019,6 +1020,12 @@ void __init setup_arch(char **cmdline_p)
10191020
*/
10201021
init_hypervisor_platform();
10211022

1023+
/*
1024+
* This needs to happen right after XENPV is set on xen and
1025+
* kaiser_enabled is checked below in cleanup_highmap().
1026+
*/
1027+
kaiser_check_boottime_disable();
1028+
10221029
x86_init.resources.probe_roms();
10231030

10241031
/* after parse_early_param, so could debug it */

arch/x86/mm/kaiser.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,8 +310,6 @@ void __init kaiser_init(void)
310310
{
311311
int cpu;
312312

313-
kaiser_check_boottime_disable();
314-
315313
if (!kaiser_enabled)
316314
return;
317315

0 commit comments

Comments
 (0)