[S390] smp: fix lowcore allocation
The intermediate lowcore for CONFIG_SMP is allocated using a call to __alloc_bootmem() with a goal of 0. That however doesn't guarantee that the allocated piece of memory is below 2GB. Instead we should call __alloc_bootmem_low(). Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
committed by
Martin Schwidefsky
parent
92fe31329c
commit
a08786568a
@@ -401,7 +401,7 @@ setup_lowcore(void)
|
|||||||
* Setup lowcore for boot cpu
|
* Setup lowcore for boot cpu
|
||||||
*/
|
*/
|
||||||
BUILD_BUG_ON(sizeof(struct _lowcore) != LC_PAGES * 4096);
|
BUILD_BUG_ON(sizeof(struct _lowcore) != LC_PAGES * 4096);
|
||||||
lc = __alloc_bootmem(LC_PAGES * PAGE_SIZE, LC_PAGES * PAGE_SIZE, 0);
|
lc = __alloc_bootmem_low(LC_PAGES * PAGE_SIZE, LC_PAGES * PAGE_SIZE, 0);
|
||||||
lc->restart_psw.mask = PSW_BASE_BITS | PSW_DEFAULT_KEY;
|
lc->restart_psw.mask = PSW_BASE_BITS | PSW_DEFAULT_KEY;
|
||||||
lc->restart_psw.addr =
|
lc->restart_psw.addr =
|
||||||
PSW_ADDR_AMODE | (unsigned long) restart_int_handler;
|
PSW_ADDR_AMODE | (unsigned long) restart_int_handler;
|
||||||
@@ -433,7 +433,7 @@ setup_lowcore(void)
|
|||||||
#ifndef CONFIG_64BIT
|
#ifndef CONFIG_64BIT
|
||||||
if (MACHINE_HAS_IEEE) {
|
if (MACHINE_HAS_IEEE) {
|
||||||
lc->extended_save_area_addr = (__u32)
|
lc->extended_save_area_addr = (__u32)
|
||||||
__alloc_bootmem(PAGE_SIZE, PAGE_SIZE, 0);
|
__alloc_bootmem_low(PAGE_SIZE, PAGE_SIZE, 0);
|
||||||
/* enable extended save area */
|
/* enable extended save area */
|
||||||
__ctl_set_bit(14, 29);
|
__ctl_set_bit(14, 29);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user