Commit 0a646e9c authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull x86 fixes from Thomas Gleixner:
 "A small set of changes:

   - a fixup for kexec related to 5-level paging mode. That covers most
     of the cases except kexec from a 5-level kernel to a 4-level
     kernel. The latter needs more work and is going to come in 4.17

   - two trivial fixes for build warnings triggered by LTO and gcc-8"

* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/power: Fix swsusp_arch_resume prototype
  x86/dumpstack: Avoid uninitlized variable
  x86/kexec: Make kexec (mostly) work in 5-level paging mode
parents f74a127f 328008a7
...@@ -109,7 +109,7 @@ void show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs, ...@@ -109,7 +109,7 @@ void show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
struct stack_info stack_info = {0}; struct stack_info stack_info = {0};
unsigned long visit_mask = 0; unsigned long visit_mask = 0;
int graph_idx = 0; int graph_idx = 0;
bool partial; bool partial = false;
printk("%sCall Trace:\n", log_lvl); printk("%sCall Trace:\n", log_lvl);
......
...@@ -68,6 +68,9 @@ relocate_kernel: ...@@ -68,6 +68,9 @@ relocate_kernel:
movq %cr4, %rax movq %cr4, %rax
movq %rax, CR4(%r11) movq %rax, CR4(%r11)
/* Save CR4. Required to enable the right paging mode later. */
movq %rax, %r13
/* zero out flags, and disable interrupts */ /* zero out flags, and disable interrupts */
pushq $0 pushq $0
popfq popfq
...@@ -126,8 +129,13 @@ identity_mapped: ...@@ -126,8 +129,13 @@ identity_mapped:
/* /*
* Set cr4 to a known state: * Set cr4 to a known state:
* - physical address extension enabled * - physical address extension enabled
* - 5-level paging, if it was enabled before
*/ */
movl $X86_CR4_PAE, %eax movl $X86_CR4_PAE, %eax
testq $X86_CR4_LA57, %r13
jz 1f
orl $X86_CR4_LA57, %eax
1:
movq %rax, %cr4 movq %rax, %cr4
jmp 1f jmp 1f
......
...@@ -145,7 +145,7 @@ static inline void resume_init_first_level_page_table(pgd_t *pg_dir) ...@@ -145,7 +145,7 @@ static inline void resume_init_first_level_page_table(pgd_t *pg_dir)
#endif #endif
} }
int swsusp_arch_resume(void) asmlinkage int swsusp_arch_resume(void)
{ {
int error; int error;
......
...@@ -174,7 +174,7 @@ static int relocate_restore_code(void) ...@@ -174,7 +174,7 @@ static int relocate_restore_code(void)
return 0; return 0;
} }
int swsusp_arch_resume(void) asmlinkage int swsusp_arch_resume(void)
{ {
int error; int error;
......
...@@ -384,6 +384,8 @@ extern int swsusp_page_is_forbidden(struct page *); ...@@ -384,6 +384,8 @@ extern int swsusp_page_is_forbidden(struct page *);
extern void swsusp_set_page_free(struct page *); extern void swsusp_set_page_free(struct page *);
extern void swsusp_unset_page_free(struct page *); extern void swsusp_unset_page_free(struct page *);
extern unsigned long get_safe_page(gfp_t gfp_mask); extern unsigned long get_safe_page(gfp_t gfp_mask);
extern asmlinkage int swsusp_arch_suspend(void);
extern asmlinkage int swsusp_arch_resume(void);
extern void hibernation_set_ops(const struct platform_hibernation_ops *ops); extern void hibernation_set_ops(const struct platform_hibernation_ops *ops);
extern int hibernate(void); extern int hibernate(void);
......
...@@ -104,9 +104,6 @@ extern int in_suspend; ...@@ -104,9 +104,6 @@ extern int in_suspend;
extern dev_t swsusp_resume_device; extern dev_t swsusp_resume_device;
extern sector_t swsusp_resume_block; extern sector_t swsusp_resume_block;
extern asmlinkage int swsusp_arch_suspend(void);
extern asmlinkage int swsusp_arch_resume(void);
extern int create_basic_memory_bitmaps(void); extern int create_basic_memory_bitmaps(void);
extern void free_basic_memory_bitmaps(void); extern void free_basic_memory_bitmaps(void);
extern int hibernate_preallocate_memory(void); extern int hibernate_preallocate_memory(void);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment