aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>2016-07-26 23:19:01 -0400
committerMichael Ellerman <mpe@ellerman.id.au>2016-07-31 21:14:57 -0400
commit5a25b6f527f9f5bbf5747b1b97e538e6d61bd2f2 (patch)
tree892bba1254c0c1249d7e46b2e1b9aa45a490ec07
parenta28e46f109c9637b2539b9995078d5df4f7f6c09 (diff)
powerpc/mm: Make MMU_FTR_RADIX a MMU family feature
MMU feature bits are defined such that we use the lower half to present MMU family features. Remove the strict split of half and also move Radix to a mmu family feature. Radix introduce a new MMU model and strictly speaking it is a new MMU family. This also free up bits which can be used for individual features later. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-rw-r--r--arch/powerpc/include/asm/book3s/64/mmu.h2
-rw-r--r--arch/powerpc/include/asm/mmu.h15
-rw-r--r--arch/powerpc/kernel/entry_64.S2
-rw-r--r--arch/powerpc/kernel/exceptions-64s.S8
-rw-r--r--arch/powerpc/kernel/idle_book3s.S2
-rw-r--r--arch/powerpc/kernel/prom.c2
-rw-r--r--arch/powerpc/mm/init_64.c2
7 files changed, 16 insertions, 17 deletions
diff --git a/arch/powerpc/include/asm/book3s/64/mmu.h b/arch/powerpc/include/asm/book3s/64/mmu.h
index 9ee00c2576d0..ad2d501cddcf 100644
--- a/arch/powerpc/include/asm/book3s/64/mmu.h
+++ b/arch/powerpc/include/asm/book3s/64/mmu.h
@@ -24,7 +24,7 @@ struct mmu_psize_def {
24extern struct mmu_psize_def mmu_psize_defs[MMU_PAGE_COUNT]; 24extern struct mmu_psize_def mmu_psize_defs[MMU_PAGE_COUNT];
25 25
26#ifdef CONFIG_PPC_RADIX_MMU 26#ifdef CONFIG_PPC_RADIX_MMU
27#define radix_enabled() mmu_has_feature(MMU_FTR_RADIX) 27#define radix_enabled() mmu_has_feature(MMU_FTR_TYPE_RADIX)
28#else 28#else
29#define radix_enabled() (0) 29#define radix_enabled() (0)
30#endif 30#endif
diff --git a/arch/powerpc/include/asm/mmu.h b/arch/powerpc/include/asm/mmu.h
index 14220c5c12c9..599781e48552 100644
--- a/arch/powerpc/include/asm/mmu.h
+++ b/arch/powerpc/include/asm/mmu.h
@@ -12,7 +12,7 @@
12 */ 12 */
13 13
14/* 14/*
15 * First half is MMU families 15 * MMU families
16 */ 16 */
17#define MMU_FTR_HPTE_TABLE ASM_CONST(0x00000001) 17#define MMU_FTR_HPTE_TABLE ASM_CONST(0x00000001)
18#define MMU_FTR_TYPE_8xx ASM_CONST(0x00000002) 18#define MMU_FTR_TYPE_8xx ASM_CONST(0x00000002)
@@ -21,9 +21,13 @@
21#define MMU_FTR_TYPE_FSL_E ASM_CONST(0x00000010) 21#define MMU_FTR_TYPE_FSL_E ASM_CONST(0x00000010)
22#define MMU_FTR_TYPE_47x ASM_CONST(0x00000020) 22#define MMU_FTR_TYPE_47x ASM_CONST(0x00000020)
23 23
24/* Radix page table supported and enabled */
25#define MMU_FTR_TYPE_RADIX ASM_CONST(0x00000040)
26
24/* 27/*
25 * This is individual features 28 * Individual features below.
26 */ 29 */
30
27/* 31/*
28 * We need to clear top 16bits of va (from the remaining 64 bits )in 32 * We need to clear top 16bits of va (from the remaining 64 bits )in
29 * tlbie* instructions 33 * tlbie* instructions
@@ -93,11 +97,6 @@
93 */ 97 */
94#define MMU_FTR_1T_SEGMENT ASM_CONST(0x40000000) 98#define MMU_FTR_1T_SEGMENT ASM_CONST(0x40000000)
95 99
96/*
97 * Radix page table available
98 */
99#define MMU_FTR_RADIX ASM_CONST(0x80000000)
100
101/* MMU feature bit sets for various CPUs */ 100/* MMU feature bit sets for various CPUs */
102#define MMU_FTRS_DEFAULT_HPTE_ARCH_V2 \ 101#define MMU_FTRS_DEFAULT_HPTE_ARCH_V2 \
103 MMU_FTR_HPTE_TABLE | MMU_FTR_PPCAS_ARCH_V2 102 MMU_FTR_HPTE_TABLE | MMU_FTR_PPCAS_ARCH_V2
@@ -131,7 +130,7 @@ enum {
131 MMU_FTR_LOCKLESS_TLBIE | MMU_FTR_CI_LARGE_PAGE | 130 MMU_FTR_LOCKLESS_TLBIE | MMU_FTR_CI_LARGE_PAGE |
132 MMU_FTR_1T_SEGMENT | MMU_FTR_TLBIE_CROP_VA | 131 MMU_FTR_1T_SEGMENT | MMU_FTR_TLBIE_CROP_VA |
133#ifdef CONFIG_PPC_RADIX_MMU 132#ifdef CONFIG_PPC_RADIX_MMU
134 MMU_FTR_RADIX | 133 MMU_FTR_TYPE_RADIX |
135#endif 134#endif
136 0, 135 0,
137}; 136};
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
index fcb2887f5a33..6b8bc0dd09d4 100644
--- a/arch/powerpc/kernel/entry_64.S
+++ b/arch/powerpc/kernel/entry_64.S
@@ -532,7 +532,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300)
532#ifdef CONFIG_PPC_STD_MMU_64 532#ifdef CONFIG_PPC_STD_MMU_64
533BEGIN_MMU_FTR_SECTION 533BEGIN_MMU_FTR_SECTION
534 b 2f 534 b 2f
535END_MMU_FTR_SECTION_IFSET(MMU_FTR_RADIX) 535END_MMU_FTR_SECTION_IFSET(MMU_FTR_TYPE_RADIX)
536BEGIN_FTR_SECTION 536BEGIN_FTR_SECTION
537 clrrdi r6,r8,28 /* get its ESID */ 537 clrrdi r6,r8,28 /* get its ESID */
538 clrrdi r9,r1,28 /* get current sp ESID */ 538 clrrdi r9,r1,28 /* get current sp ESID */
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
index 6200e4925d26..334c7fac7a4a 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -938,7 +938,7 @@ BEGIN_MMU_FTR_SECTION
938 b do_hash_page /* Try to handle as hpte fault */ 938 b do_hash_page /* Try to handle as hpte fault */
939MMU_FTR_SECTION_ELSE 939MMU_FTR_SECTION_ELSE
940 b handle_page_fault 940 b handle_page_fault
941ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_RADIX) 941ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_TYPE_RADIX)
942 942
943 .align 7 943 .align 7
944 .globl h_data_storage_common 944 .globl h_data_storage_common
@@ -969,7 +969,7 @@ BEGIN_MMU_FTR_SECTION
969 b do_hash_page /* Try to handle as hpte fault */ 969 b do_hash_page /* Try to handle as hpte fault */
970MMU_FTR_SECTION_ELSE 970MMU_FTR_SECTION_ELSE
971 b handle_page_fault 971 b handle_page_fault
972ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_RADIX) 972ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_TYPE_RADIX)
973 973
974 STD_EXCEPTION_COMMON(0xe20, h_instr_storage, unknown_exception) 974 STD_EXCEPTION_COMMON(0xe20, h_instr_storage, unknown_exception)
975 975
@@ -1390,7 +1390,7 @@ slb_miss_realmode:
1390#ifdef CONFIG_PPC_STD_MMU_64 1390#ifdef CONFIG_PPC_STD_MMU_64
1391BEGIN_MMU_FTR_SECTION 1391BEGIN_MMU_FTR_SECTION
1392 bl slb_allocate_realmode 1392 bl slb_allocate_realmode
1393END_MMU_FTR_SECTION_IFCLR(MMU_FTR_RADIX) 1393END_MMU_FTR_SECTION_IFCLR(MMU_FTR_TYPE_RADIX)
1394#endif 1394#endif
1395 /* All done -- return from exception. */ 1395 /* All done -- return from exception. */
1396 1396
@@ -1404,7 +1404,7 @@ BEGIN_MMU_FTR_SECTION
1404 beq- 2f 1404 beq- 2f
1405FTR_SECTION_ELSE 1405FTR_SECTION_ELSE
1406 b 2f 1406 b 2f
1407ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_RADIX) 1407ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_TYPE_RADIX)
1408 1408
1409.machine push 1409.machine push
1410.machine "power4" 1410.machine "power4"
diff --git a/arch/powerpc/kernel/idle_book3s.S b/arch/powerpc/kernel/idle_book3s.S
index 335eb6cedae5..4c2222cffbbc 100644
--- a/arch/powerpc/kernel/idle_book3s.S
+++ b/arch/powerpc/kernel/idle_book3s.S
@@ -570,7 +570,7 @@ common_exit:
570 570
571BEGIN_MMU_FTR_SECTION 571BEGIN_MMU_FTR_SECTION
572 b no_segments 572 b no_segments
573END_MMU_FTR_SECTION_IFSET(MMU_FTR_RADIX) 573END_MMU_FTR_SECTION_IFSET(MMU_FTR_TYPE_RADIX)
574 /* Restore SLB from PACA */ 574 /* Restore SLB from PACA */
575 ld r8,PACA_SLBSHADOWPTR(r13) 575 ld r8,PACA_SLBSHADOWPTR(r13)
576 576
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
index b4b6952e8991..b0245bed6f54 100644
--- a/arch/powerpc/kernel/prom.c
+++ b/arch/powerpc/kernel/prom.c
@@ -170,7 +170,7 @@ static struct ibm_pa_feature {
170 */ 170 */
171 {CPU_FTR_TM_COMP, 0, 0, 171 {CPU_FTR_TM_COMP, 0, 0,
172 PPC_FEATURE2_HTM_COMP|PPC_FEATURE2_HTM_NOSC_COMP, 22, 0, 0}, 172 PPC_FEATURE2_HTM_COMP|PPC_FEATURE2_HTM_NOSC_COMP, 22, 0, 0},
173 {0, MMU_FTR_RADIX, 0, 0, 40, 0, 0}, 173 {0, MMU_FTR_TYPE_RADIX, 0, 0, 40, 0, 0},
174}; 174};
175 175
176static void __init scan_features(unsigned long node, const unsigned char *ftrs, 176static void __init scan_features(unsigned long node, const unsigned char *ftrs,
diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c
index e0ab33d20a10..6259f5db525b 100644
--- a/arch/powerpc/mm/init_64.c
+++ b/arch/powerpc/mm/init_64.c
@@ -425,7 +425,7 @@ void __init mmu_early_init_devtree(void)
425{ 425{
426 /* Disable radix mode based on kernel command line. */ 426 /* Disable radix mode based on kernel command line. */
427 if (disable_radix) 427 if (disable_radix)
428 cur_cpu_spec->mmu_features &= ~MMU_FTR_RADIX; 428 cur_cpu_spec->mmu_features &= ~MMU_FTR_TYPE_RADIX;
429 429
430 if (radix_enabled()) 430 if (radix_enabled())
431 radix__early_init_devtree(); 431 radix__early_init_devtree();