Skip to content

Commit f6eedbb

Browse files
kvaneeshmpe
authored andcommitted
powerpc/mm/hash: Increase VA range to 128TB
We update the hash linux page table layout such that we can support 512TB. But we limit the TASK_SIZE to 128TB. We can switch to 128TB by default without conditional because that is the max virtual address supported by other architectures. We will later add a mechanism to on-demand increase the application's effective address range to 512TB. Having the page table layout changed to accommodate 512TB makes testing large memory configuration easier with less code changes to kernel Signed-off-by: Aneesh Kumar K.V <[email protected]> Signed-off-by: Michael Ellerman <[email protected]>
1 parent 59248ae commit f6eedbb

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

arch/powerpc/include/asm/book3s/64/hash-4k.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
#define H_PTE_INDEX_SIZE 9
99
#define H_PMD_INDEX_SIZE 7
1010
#define H_PUD_INDEX_SIZE 9
11-
#define H_PGD_INDEX_SIZE 9
11+
#define H_PGD_INDEX_SIZE 12
1212

1313
#ifndef __ASSEMBLY__
1414
#define H_PTE_TABLE_SIZE (sizeof(pte_t) << H_PTE_INDEX_SIZE)

arch/powerpc/include/asm/book3s/64/hash-64k.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#define H_PTE_INDEX_SIZE 8
55
#define H_PMD_INDEX_SIZE 5
66
#define H_PUD_INDEX_SIZE 5
7-
#define H_PGD_INDEX_SIZE 12
7+
#define H_PGD_INDEX_SIZE 15
88

99
/*
1010
* 64k aligned address free up few of the lower bits of RPN for us

arch/powerpc/include/asm/processor.h

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,25 @@ void release_thread(struct task_struct *);
102102
#endif
103103

104104
#ifdef CONFIG_PPC64
105-
/* 64-bit user address space is 46-bits (64TB user VM) */
106-
#define TASK_SIZE_USER64 (0x0000400000000000UL)
105+
/*
106+
* 64-bit user address space can have multiple limits
107+
* For now supported values are:
108+
*/
109+
#define TASK_SIZE_64TB (0x0000400000000000UL)
110+
#define TASK_SIZE_128TB (0x0000800000000000UL)
111+
#define TASK_SIZE_512TB (0x0002000000000000UL)
107112

108-
/*
109-
* 32-bit user address space is 4GB - 1 page
113+
#ifdef CONFIG_PPC_BOOK3S_64
114+
/*
115+
* Max value currently used:
116+
*/
117+
#define TASK_SIZE_USER64 TASK_SIZE_128TB
118+
#else
119+
#define TASK_SIZE_USER64 TASK_SIZE_64TB
120+
#endif
121+
122+
/*
123+
* 32-bit user address space is 4GB - 1 page
110124
* (this 1 page is needed so referencing of 0xFFFFFFFF generates EFAULT
111125
*/
112126
#define TASK_SIZE_USER32 (0x0000000100000000UL - (1*PAGE_SIZE))

0 commit comments

Comments
 (0)