Commit 615b04b3 authored by Heiko Carstens's avatar Heiko Carstens Committed by Martin Schwidefsky

[S390] nss: Free unused memory in kernel image.

With CONFIG_SHARED_KERNEL the kernel text segment that might be in a
read only memory sections starts at 1MB. Memory between 0x12000 and
0x100000 is unused then. Free this, so we have appr. an extra MB
of memory available.
Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 229d9c6d
...@@ -148,20 +148,9 @@ startup_continue: ...@@ -148,20 +148,9 @@ startup_continue:
.Lstartup_init: .Lstartup_init:
.long startup_init .long startup_init
.globl ipl_schib
ipl_schib:
.rept 13
.long 0
.endr
.globl ipl_flags
ipl_flags:
.long 0
.globl ipl_devno
ipl_devno:
.word 0
.org 0x12000 .org 0x12000
.globl _ehead
_ehead:
#ifdef CONFIG_SHARED_KERNEL #ifdef CONFIG_SHARED_KERNEL
.org 0x100000 .org 0x100000
#endif #endif
......
...@@ -154,21 +154,9 @@ startup_continue: ...@@ -154,21 +154,9 @@ startup_continue:
.Lparmaddr: .Lparmaddr:
.quad PARMAREA .quad PARMAREA
.globl ipl_schib
ipl_schib:
.rept 13
.long 0
.endr
.globl ipl_flags
ipl_flags:
.long 0
.globl ipl_devno
ipl_devno:
.word 0
.org 0x12000 .org 0x12000
.globl _ehead
_ehead:
#ifdef CONFIG_SHARED_KERNEL #ifdef CONFIG_SHARED_KERNEL
.org 0x100000 .org 0x100000
#endif #endif
......
...@@ -43,6 +43,13 @@ enum ipl_type { ...@@ -43,6 +43,13 @@ enum ipl_type {
#define IPL_FCP_STR "fcp" #define IPL_FCP_STR "fcp"
#define IPL_NSS_STR "nss" #define IPL_NSS_STR "nss"
/*
* Must be in data section since the bss section
* is not cleared when these are accessed.
*/
u16 ipl_devno __attribute__((__section__(".data"))) = 0;
u32 ipl_flags __attribute__((__section__(".data"))) = 0;
static char *ipl_type_str(enum ipl_type type) static char *ipl_type_str(enum ipl_type type)
{ {
switch (type) { switch (type) {
......
...@@ -690,8 +690,13 @@ setup_memory(void) ...@@ -690,8 +690,13 @@ setup_memory(void)
psw_set_key(PAGE_DEFAULT_KEY); psw_set_key(PAGE_DEFAULT_KEY);
free_bootmem_with_active_regions(0, max_pfn); free_bootmem_with_active_regions(0, max_pfn);
reserve_bootmem(0, PFN_PHYS(start_pfn));
/*
* Reserve memory used for lowcore/command line/kernel image.
*/
reserve_bootmem(0, (unsigned long)_ehead);
reserve_bootmem((unsigned long)_stext,
PFN_PHYS(start_pfn) - (unsigned long)_stext);
/* /*
* Reserve the bootmem bitmap itself as well. We do this in two * Reserve the bootmem bitmap itself as well. We do this in two
* steps (first step was init_bootmem()) because this catches * steps (first step was init_bootmem()) because this catches
......
...@@ -1048,7 +1048,7 @@ void reipl_ccw_dev(struct ccw_dev_id *devid) ...@@ -1048,7 +1048,7 @@ void reipl_ccw_dev(struct ccw_dev_id *devid)
do_reipl_asm(*((__u32*)&schid)); do_reipl_asm(*((__u32*)&schid));
} }
extern struct schib ipl_schib; static struct schib __initdata ipl_schib;
/* /*
* ipl_save_parameters gets called very early. It is not allowed to access * ipl_save_parameters gets called very early. It is not allowed to access
......
...@@ -3,6 +3,6 @@ ...@@ -3,6 +3,6 @@
#include <asm-generic/sections.h> #include <asm-generic/sections.h>
extern char _eshared[]; extern char _eshared[], _ehead[];
#endif #endif
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