diff options
| -rw-r--r-- | arch/powerpc/include/asm/book3s/64/hash-4k.h | 2 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/processor.h | 25 | ||||
| -rw-r--r-- | arch/powerpc/kernel/setup-common.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/mm/mmu_context_book3s64.c | 2 | 
4 files changed, 15 insertions, 16 deletions
| diff --git a/arch/powerpc/include/asm/book3s/64/hash-4k.h b/arch/powerpc/include/asm/book3s/64/hash-4k.h index b4b5e6b671ca..0c4e470571ca 100644 --- a/arch/powerpc/include/asm/book3s/64/hash-4k.h +++ b/arch/powerpc/include/asm/book3s/64/hash-4k.h @@ -8,7 +8,7 @@  #define H_PTE_INDEX_SIZE  9  #define H_PMD_INDEX_SIZE  7  #define H_PUD_INDEX_SIZE  9 -#define H_PGD_INDEX_SIZE  12 +#define H_PGD_INDEX_SIZE  9  #ifndef __ASSEMBLY__  #define H_PTE_TABLE_SIZE	(sizeof(pte_t) << H_PTE_INDEX_SIZE) diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h index a2123f291ab0..bb99b651085a 100644 --- a/arch/powerpc/include/asm/processor.h +++ b/arch/powerpc/include/asm/processor.h @@ -110,13 +110,18 @@ void release_thread(struct task_struct *);  #define TASK_SIZE_128TB (0x0000800000000000UL)  #define TASK_SIZE_512TB (0x0002000000000000UL) -#ifdef CONFIG_PPC_BOOK3S_64 +/* + * For now 512TB is only supported with book3s and 64K linux page size. + */ +#if defined(CONFIG_PPC_BOOK3S_64) && defined(CONFIG_PPC_64K_PAGES)  /*   * Max value currently used:   */ -#define TASK_SIZE_USER64	TASK_SIZE_512TB +#define TASK_SIZE_USER64		TASK_SIZE_512TB +#define DEFAULT_MAP_WINDOW_USER64	TASK_SIZE_128TB  #else -#define TASK_SIZE_USER64	TASK_SIZE_64TB +#define TASK_SIZE_USER64		TASK_SIZE_64TB +#define DEFAULT_MAP_WINDOW_USER64	TASK_SIZE_64TB  #endif  /* @@ -132,7 +137,7 @@ void release_thread(struct task_struct *);   * space during mmap's.   */  #define TASK_UNMAPPED_BASE_USER32 (PAGE_ALIGN(TASK_SIZE_USER32 / 4)) -#define TASK_UNMAPPED_BASE_USER64 (PAGE_ALIGN(TASK_SIZE_128TB / 4)) +#define TASK_UNMAPPED_BASE_USER64 (PAGE_ALIGN(DEFAULT_MAP_WINDOW_USER64 / 4))  #define TASK_UNMAPPED_BASE ((is_32bit_task()) ? \  		TASK_UNMAPPED_BASE_USER32 : TASK_UNMAPPED_BASE_USER64 ) @@ -143,21 +148,15 @@ void release_thread(struct task_struct *);   * with 128TB and conditionally enable upto 512TB   */  #ifdef CONFIG_PPC_BOOK3S_64 -#define DEFAULT_MAP_WINDOW	((is_32bit_task()) ? \ -				 TASK_SIZE_USER32 : TASK_SIZE_128TB) +#define DEFAULT_MAP_WINDOW	((is_32bit_task()) ?			\ +				 TASK_SIZE_USER32 : DEFAULT_MAP_WINDOW_USER64)  #else  #define DEFAULT_MAP_WINDOW	TASK_SIZE  #endif  #ifdef __powerpc64__ -#ifdef CONFIG_PPC_BOOK3S_64 -/* Limit stack to 128TB */ -#define STACK_TOP_USER64 TASK_SIZE_128TB -#else -#define STACK_TOP_USER64 TASK_SIZE_USER64 -#endif - +#define STACK_TOP_USER64 DEFAULT_MAP_WINDOW_USER64  #define STACK_TOP_USER32 TASK_SIZE_USER32  #define STACK_TOP (is_32bit_task() ? \ diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c index 71dcda91755d..857129acf960 100644 --- a/arch/powerpc/kernel/setup-common.c +++ b/arch/powerpc/kernel/setup-common.c @@ -928,7 +928,7 @@ void __init setup_arch(char **cmdline_p)  #ifdef CONFIG_PPC_MM_SLICES  #ifdef CONFIG_PPC64 -	init_mm.context.addr_limit = TASK_SIZE_128TB; +	init_mm.context.addr_limit = DEFAULT_MAP_WINDOW_USER64;  #else  #error	"context.addr_limit not initialized."  #endif diff --git a/arch/powerpc/mm/mmu_context_book3s64.c b/arch/powerpc/mm/mmu_context_book3s64.c index c6dca2ae78ef..a3edf813d455 100644 --- a/arch/powerpc/mm/mmu_context_book3s64.c +++ b/arch/powerpc/mm/mmu_context_book3s64.c @@ -99,7 +99,7 @@ static int hash__init_new_context(struct mm_struct *mm)  	 * mm->context.addr_limit. Default to max task size so that we copy the  	 * default values to paca which will help us to handle slb miss early.  	 */ -	mm->context.addr_limit = TASK_SIZE_128TB; +	mm->context.addr_limit = DEFAULT_MAP_WINDOW_USER64;  	/*  	 * The old code would re-promote on fork, we don't do that when using | 
