Revert "Revert "x86/mm: Identify the end of the kernel area to be reserved""

This reverts commit 307cefb8d9 which was a
revert of c603a309cc from upstream.

Yes, this breaks the build when using the gold linker for x86, but
upstream has now blacklisted that linker so trying to work around this
by reverting random patches is not going to be a viable solution.

So revert this commit, and deal with the fallout in the build system by
fixing the build infra properly.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Iae2155c02cd5d6a7981e0151e22f024dc6d4f86b
This commit is contained in:
Greg Kroah-Hartman 2019-07-24 11:53:14 +02:00
parent 7db4b737f6
commit f750a9e5b2
3 changed files with 17 additions and 2 deletions

View File

@ -13,4 +13,6 @@ extern char __end_rodata_aligned[];
extern char __end_rodata_hpage_align[];
#endif
extern char __end_of_kernel_reserve[];
#endif /* _ASM_X86_SECTIONS_H */

View File

@ -836,8 +836,14 @@ dump_kernel_offset(struct notifier_block *self, unsigned long v, void *p)
void __init setup_arch(char **cmdline_p)
{
/*
* Reserve the memory occupied by the kernel between _text and
* __end_of_kernel_reserve symbols. Any kernel sections after the
* __end_of_kernel_reserve symbol must be explicitly reserved with a
* separate memblock_reserve() or they will be discarded.
*/
memblock_reserve(__pa_symbol(_text),
(unsigned long)__bss_stop - (unsigned long)_text);
(unsigned long)__end_of_kernel_reserve - (unsigned long)_text);
/*
* Make sure page 0 is always reserved because on systems with

View File

@ -368,6 +368,14 @@ SECTIONS
__bss_stop = .;
}
/*
* The memory occupied from _text to here, __end_of_kernel_reserve, is
* automatically reserved in setup_arch(). Anything after here must be
* explicitly reserved using memblock_reserve() or it will be discarded
* and treated as available memory.
*/
__end_of_kernel_reserve = .;
. = ALIGN(PAGE_SIZE);
.brk : AT(ADDR(.brk) - LOAD_OFFSET) {
__brk_base = .;
@ -407,7 +415,6 @@ SECTIONS
STABS_DEBUG
DWARF_DEBUG
/* Sections to be discarded */
DISCARDS
/DISCARD/ : {
*(.eh_frame)