Commit 473e2311 authored by GUO Zihua's avatar GUO Zihua Committed by Michael Ellerman

powerpc: Fix preserved memory size for int-vectors

The first 32k of memory is reserved for interrupt vectors, however for
powerpc64 this might not be enough. Fix this by reserving the maximum
size between 32k and the real size of interrupt vectors.
Signed-off-by: default avatarGUO Zihua <guozihua@huawei.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20240113080509.1598290-1-guozihua@huawei.com
parent acb354fe
...@@ -779,6 +779,7 @@ static inline void save_fscr_to_task(void) {} ...@@ -779,6 +779,7 @@ static inline void save_fscr_to_task(void) {}
void __init early_init_devtree(void *params) void __init early_init_devtree(void *params)
{ {
phys_addr_t int_vector_size;
DBG(" -> early_init_devtree(%px)\n", params); DBG(" -> early_init_devtree(%px)\n", params);
...@@ -831,9 +832,16 @@ void __init early_init_devtree(void *params) ...@@ -831,9 +832,16 @@ void __init early_init_devtree(void *params)
setup_initial_memory_limit(memstart_addr, first_memblock_size); setup_initial_memory_limit(memstart_addr, first_memblock_size);
/* Reserve MEMBLOCK regions used by kernel, initrd, dt, etc... */ /* Reserve MEMBLOCK regions used by kernel, initrd, dt, etc... */
memblock_reserve(PHYSICAL_START, __pa(_end) - PHYSICAL_START); memblock_reserve(PHYSICAL_START, __pa(_end) - PHYSICAL_START);
#ifdef CONFIG_PPC64
/* If relocatable, reserve at least 32k for interrupt vectors etc. */
int_vector_size = __end_interrupts - _stext;
int_vector_size = max_t(phys_addr_t, SZ_32K, int_vector_size);
#else
/* If relocatable, reserve first 32k for interrupt vectors etc. */ /* If relocatable, reserve first 32k for interrupt vectors etc. */
int_vector_size = SZ_32K;
#endif
if (PHYSICAL_START > MEMORY_START) if (PHYSICAL_START > MEMORY_START)
memblock_reserve(MEMORY_START, 0x8000); memblock_reserve(MEMORY_START, int_vector_size);
reserve_kdump_trampoline(); reserve_kdump_trampoline();
#if defined(CONFIG_FA_DUMP) || defined(CONFIG_PRESERVE_FA_DUMP) #if defined(CONFIG_FA_DUMP) || defined(CONFIG_PRESERVE_FA_DUMP)
/* /*
......
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