powerpc/64s: Relax PACA address limitations
Book3S PACA memory allocation is restricted by the RMA limit and also must not take SLB faults when accessed in virtual mode. Currently a fixed 256MB limit is used for this, which is imprecise and sub-optimal. Update the paca allocation limits to use use the ppc64_rma_size for RMA limit, and share the safe_stack_limit() that is currently used for stack allocations that must not take virtual mode faults. The safe_stack_limit() name is changed to ppc64_bolted_size() to match ppc64_rma_size and some comments are updated. We also need to use early_mmu_has_feature() because we are now calling this function prior to the jump label patching that enables mmu_has_feature(). Signed-off-by: Nicholas Piggin <npiggin@gmail.com> [mpe: Change mmu_has_feature() to early_mmu_has_feature()] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:

committed by
Michael Ellerman

parent
c610d65c0a
commit
1af19331a3
@@ -18,6 +18,8 @@
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/kexec.h>
|
||||
|
||||
#include "setup.h"
|
||||
|
||||
#ifdef CONFIG_PPC_BOOK3S
|
||||
|
||||
/*
|
||||
@@ -208,15 +210,14 @@ void __init allocate_pacas(void)
|
||||
u64 limit;
|
||||
int cpu;
|
||||
|
||||
limit = ppc64_rma_size;
|
||||
|
||||
#ifdef CONFIG_PPC_BOOK3S_64
|
||||
/*
|
||||
* We can't take SLB misses on the paca, and we want to access them
|
||||
* in real mode, so allocate them within the RMA and also within
|
||||
* the first segment.
|
||||
* We access pacas in real mode, and cannot take SLB faults
|
||||
* on them when in virtual mode, so allocate them accordingly.
|
||||
*/
|
||||
limit = min(0x10000000ULL, limit);
|
||||
limit = min(ppc64_bolted_size(), ppc64_rma_size);
|
||||
#else
|
||||
limit = ppc64_rma_size;
|
||||
#endif
|
||||
|
||||
paca_size = PAGE_ALIGN(sizeof(struct paca_struct) * nr_cpu_ids);
|
||||
|
Reference in New Issue
Block a user