powerpc/32s: Always map kernel text and rodata with BATs
Since commit 2b279c0348
("powerpc/32s: Allow mapping with BATs with
DEBUG_PAGEALLOC"), there is no real situation where mapping without
BATs is required.
In order to simplify memory handling, always map kernel text
and rodata with BATs even when "nobats" kernel parameter is set.
Also fix the 603 TLB miss exceptions that don't require anymore
kernel page table if DEBUG_PAGEALLOC.
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/da51f7ec632825a4ce43290a904aad61648408c0.1606285013.git.christophe.leroy@csgroup.eu
This commit is contained in:
Родитель
98f5559a43
Коммит
035b19a15a
|
@ -457,13 +457,13 @@ InstructionTLBMiss:
|
|||
*/
|
||||
/* Get PTE (linux-style) and check access */
|
||||
mfspr r3,SPRN_IMISS
|
||||
#if defined(CONFIG_MODULES) || defined(CONFIG_DEBUG_PAGEALLOC)
|
||||
#ifdef CONFIG_MODULES
|
||||
lis r1, TASK_SIZE@h /* check if kernel address */
|
||||
cmplw 0,r1,r3
|
||||
#endif
|
||||
mfspr r2, SPRN_SPRG_PGDIR
|
||||
li r1,_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC
|
||||
#if defined(CONFIG_MODULES) || defined(CONFIG_DEBUG_PAGEALLOC)
|
||||
#ifdef CONFIG_MODULES
|
||||
bgt- 112f
|
||||
lis r2, (swapper_pg_dir - PAGE_OFFSET)@ha /* if kernel address, use */
|
||||
addi r2, r2, (swapper_pg_dir - PAGE_OFFSET)@l /* kernel page table */
|
||||
|
|
|
@ -157,11 +157,9 @@ unsigned long __init mmu_mapin_ram(unsigned long base, unsigned long top)
|
|||
unsigned long done;
|
||||
unsigned long border = (unsigned long)__init_begin - PAGE_OFFSET;
|
||||
|
||||
if (__map_without_bats) {
|
||||
pr_debug("RAM mapped without BATs\n");
|
||||
return base;
|
||||
}
|
||||
if (debug_pagealloc_enabled()) {
|
||||
|
||||
if (debug_pagealloc_enabled() || __map_without_bats) {
|
||||
pr_debug_once("Read-Write memory mapped without BATs\n");
|
||||
if (base >= border)
|
||||
return base;
|
||||
if (top >= border)
|
||||
|
|
Загрузка…
Ссылка в новой задаче