powerpc/mm/hash: Support 68 bit VA
Inorder to support large effective address range (512TB), we want to increase the virtual address bits to 68. But we do have platforms like p4 and p5 that can only do 65 bit VA. We support those platforms by limiting context bits on them to 16. The protovsid -> vsid conversion is verified to work with both 65 and 68 bit va values. I also documented the restrictions in a table format as part of code comments. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:

committed by
Michael Ellerman

parent
85beb1c486
commit
e6f81a9201
@@ -28,6 +28,10 @@
|
||||
* Individual features below.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Support for 68 bit VA space. We added that from ISA 2.05
|
||||
*/
|
||||
#define MMU_FTR_68_BIT_VA ASM_CONST(0x00002000)
|
||||
/*
|
||||
* Kernel read only support.
|
||||
* We added the ppp value 0b110 in ISA 2.04.
|
||||
@@ -109,10 +113,10 @@
|
||||
#define MMU_FTRS_POWER4 MMU_FTRS_DEFAULT_HPTE_ARCH_V2
|
||||
#define MMU_FTRS_PPC970 MMU_FTRS_POWER4 | MMU_FTR_TLBIE_CROP_VA
|
||||
#define MMU_FTRS_POWER5 MMU_FTRS_POWER4 | MMU_FTR_LOCKLESS_TLBIE
|
||||
#define MMU_FTRS_POWER6 MMU_FTRS_POWER4 | MMU_FTR_LOCKLESS_TLBIE | MMU_FTR_KERNEL_RO
|
||||
#define MMU_FTRS_POWER7 MMU_FTRS_POWER4 | MMU_FTR_LOCKLESS_TLBIE | MMU_FTR_KERNEL_RO
|
||||
#define MMU_FTRS_POWER8 MMU_FTRS_POWER4 | MMU_FTR_LOCKLESS_TLBIE | MMU_FTR_KERNEL_RO
|
||||
#define MMU_FTRS_POWER9 MMU_FTRS_POWER4 | MMU_FTR_LOCKLESS_TLBIE | MMU_FTR_KERNEL_RO
|
||||
#define MMU_FTRS_POWER6 MMU_FTRS_POWER5 | MMU_FTR_KERNEL_RO | MMU_FTR_68_BIT_VA
|
||||
#define MMU_FTRS_POWER7 MMU_FTRS_POWER6
|
||||
#define MMU_FTRS_POWER8 MMU_FTRS_POWER6
|
||||
#define MMU_FTRS_POWER9 MMU_FTRS_POWER6
|
||||
#define MMU_FTRS_CELL MMU_FTRS_DEFAULT_HPTE_ARCH_V2 | \
|
||||
MMU_FTR_CI_LARGE_PAGE
|
||||
#define MMU_FTRS_PA6T MMU_FTRS_DEFAULT_HPTE_ARCH_V2 | \
|
||||
@@ -136,7 +140,7 @@ enum {
|
||||
MMU_FTR_NO_SLBIE_B | MMU_FTR_16M_PAGE | MMU_FTR_TLBIEL |
|
||||
MMU_FTR_LOCKLESS_TLBIE | MMU_FTR_CI_LARGE_PAGE |
|
||||
MMU_FTR_1T_SEGMENT | MMU_FTR_TLBIE_CROP_VA |
|
||||
MMU_FTR_KERNEL_RO |
|
||||
MMU_FTR_KERNEL_RO | MMU_FTR_68_BIT_VA |
|
||||
#ifdef CONFIG_PPC_RADIX_MMU
|
||||
MMU_FTR_TYPE_RADIX |
|
||||
#endif
|
||||
@@ -290,7 +294,10 @@ static inline bool early_radix_enabled(void)
|
||||
#define MMU_PAGE_16G 14
|
||||
#define MMU_PAGE_64G 15
|
||||
|
||||
/* N.B. we need to change the type of hpte_page_sizes if this gets to be > 16 */
|
||||
/*
|
||||
* N.B. we need to change the type of hpte_page_sizes if this gets to be > 16
|
||||
* Also we need to change he type of mm_context.low/high_slices_psize.
|
||||
*/
|
||||
#define MMU_PAGE_COUNT 16
|
||||
|
||||
#ifdef CONFIG_PPC_BOOK3S_64
|
||||
|
Reference in New Issue
Block a user