diff options
Diffstat (limited to 'arch/x86/realmode')
-rw-r--r-- | arch/x86/realmode/init.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/arch/x86/realmode/init.c b/arch/x86/realmode/init.c index cbca565af5bd..c44ea7cf5741 100644 --- a/arch/x86/realmode/init.c +++ b/arch/x86/realmode/init.c | |||
@@ -84,10 +84,12 @@ void __init setup_real_mode(void) | |||
84 | } | 84 | } |
85 | 85 | ||
86 | /* | 86 | /* |
87 | * set_real_mode_permissions() gets called very early, to guarantee the | 87 | * setup_real_mode() gets called very early, to guarantee the |
88 | * availability of low memory. This is before the proper kernel page | 88 | * availability of low memory. This is before the proper kernel page |
89 | * tables are set up, so we cannot set page permissions in that | 89 | * tables are set up, so we cannot set page permissions in that |
90 | * function. Thus, we use an arch_initcall instead. | 90 | * function. Also trampoline code will be executed by APs so we |
91 | * need to mark it executable at do_pre_smp_initcalls() at least, | ||
92 | * thus run it as a early_initcall(). | ||
91 | */ | 93 | */ |
92 | static int __init set_real_mode_permissions(void) | 94 | static int __init set_real_mode_permissions(void) |
93 | { | 95 | { |
@@ -111,5 +113,4 @@ static int __init set_real_mode_permissions(void) | |||
111 | 113 | ||
112 | return 0; | 114 | return 0; |
113 | } | 115 | } |
114 | 116 | early_initcall(set_real_mode_permissions); | |
115 | arch_initcall(set_real_mode_permissions); | ||