Commit c5eec4df authored by Christophe Leroy's avatar Christophe Leroy Committed by Michael Ellerman
Browse files

powerpc/8xx: Reduce default size of module/execmem area



8xx boards don't have much memory, the two I know have respectively
32Mbytes and 128Mbytes, so there is no point in having 256 Mbytes of
memory for module text.

Reduce it to 32Mbytes for 8xx, that's more than enough.

Nevertheless, make it a configurable value so that it can be customised
if needed.

Also add a build verification for overlap of module execmem space
with user PMD.

Signed-off-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/8db23b61e33a0d1913d814f94bfe71ba7ac78b0f.1724173828.git.christophe.leroy@csgroup.eu
parent bcf77a70
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -1271,6 +1271,24 @@ config TASK_SIZE
	default "0x80000000" if PPC_8xx
	default "0xb0000000" if PPC_BOOK3S_32
	default "0xc0000000"

config MODULES_SIZE_BOOL
	bool "Set custom size for modules/execmem area"
	depends on EXECMEM && ADVANCED_OPTIONS
	depends on PPC_8xx
	help
	  This option allows you to set the size of kernel virtual address
	  space dedicated for modules/execmem.
	  For the time being it is only for 8xx.

	  Say N here unless you know what you are doing.

config MODULES_SIZE
	int "Size of modules/execmem area (In Mbytes)" if MODULES_SIZE_BOOL
	range 1 256 if EXECMEM
	default 32 if EXECMEM && PPC_8xx
	default 0

endmenu

if PPC64
+2 −1
Original line number Diff line number Diff line
@@ -170,8 +170,9 @@

#define mmu_linear_psize	MMU_PAGE_8M

#define MODULES_VADDR	(PAGE_OFFSET - SZ_256M)
#define MODULES_END	PAGE_OFFSET
#define MODULES_SIZE	(CONFIG_MODULES_SIZE * SZ_1M)
#define MODULES_VADDR	(MODULES_END - MODULES_SIZE)

#ifndef __ASSEMBLY__

+2 −0
Original line number Diff line number Diff line
@@ -207,6 +207,8 @@ void __init setup_initial_memory_limit(phys_addr_t first_memblock_base,

	/* 8xx can only access 32MB at the moment */
	memblock_set_current_limit(min_t(u64, first_memblock_size, SZ_32M));

	BUILD_BUG_ON(ALIGN_DOWN(MODULES_VADDR, PGDIR_SIZE) < TASK_SIZE);
}

int pud_clear_huge(pud_t *pud)