aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2017-04-18 15:12:17 -0400
committerMichael Ellerman <mpe@ellerman.id.au>2017-05-03 06:45:55 -0400
commit700b7eadd5625d22b8235fb21259b3d7d564c000 (patch)
treedfc4d8ea12ce0770a45761adef12fe46194d4622
parent6b3d12a948d27977816a15eb48409a298902a548 (diff)
powerpc/64s: Power9 has no LPCR[VRMASD] field so don't set it
Power9/ISAv3 has no VRMASD field in LPCR, we shouldn't be setting reserved bits, so don't set them on Power9. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-rw-r--r--arch/powerpc/kernel/cpu_setup_power.S21
1 files changed, 12 insertions, 9 deletions
diff --git a/arch/powerpc/kernel/cpu_setup_power.S b/arch/powerpc/kernel/cpu_setup_power.S
index 1fce4ddd2e6c..10cb2896b2ae 100644
--- a/arch/powerpc/kernel/cpu_setup_power.S
+++ b/arch/powerpc/kernel/cpu_setup_power.S
@@ -30,7 +30,7 @@ _GLOBAL(__setup_cpu_power7)
30 mtspr SPRN_LPID,r0 30 mtspr SPRN_LPID,r0
31 mfspr r3,SPRN_LPCR 31 mfspr r3,SPRN_LPCR
32 li r4,(LPCR_LPES1 >> LPCR_LPES_SH) 32 li r4,(LPCR_LPES1 >> LPCR_LPES_SH)
33 bl __init_LPCR 33 bl __init_LPCR_ISA206
34 bl __init_tlb_power7 34 bl __init_tlb_power7
35 mtlr r11 35 mtlr r11
36 blr 36 blr
@@ -44,7 +44,7 @@ _GLOBAL(__restore_cpu_power7)
44 mtspr SPRN_LPID,r0 44 mtspr SPRN_LPID,r0
45 mfspr r3,SPRN_LPCR 45 mfspr r3,SPRN_LPCR
46 li r4,(LPCR_LPES1 >> LPCR_LPES_SH) 46 li r4,(LPCR_LPES1 >> LPCR_LPES_SH)
47 bl __init_LPCR 47 bl __init_LPCR_ISA206
48 bl __init_tlb_power7 48 bl __init_tlb_power7
49 mtlr r11 49 mtlr r11
50 blr 50 blr
@@ -62,7 +62,7 @@ _GLOBAL(__setup_cpu_power8)
62 mfspr r3,SPRN_LPCR 62 mfspr r3,SPRN_LPCR
63 ori r3, r3, LPCR_PECEDH 63 ori r3, r3, LPCR_PECEDH
64 li r4,0 /* LPES = 0 */ 64 li r4,0 /* LPES = 0 */
65 bl __init_LPCR 65 bl __init_LPCR_ISA206
66 bl __init_HFSCR 66 bl __init_HFSCR
67 bl __init_tlb_power8 67 bl __init_tlb_power8
68 bl __init_PMU_HV 68 bl __init_PMU_HV
@@ -84,7 +84,7 @@ _GLOBAL(__restore_cpu_power8)
84 mfspr r3,SPRN_LPCR 84 mfspr r3,SPRN_LPCR
85 ori r3, r3, LPCR_PECEDH 85 ori r3, r3, LPCR_PECEDH
86 li r4,0 /* LPES = 0 */ 86 li r4,0 /* LPES = 0 */
87 bl __init_LPCR 87 bl __init_LPCR_ISA206
88 bl __init_HFSCR 88 bl __init_HFSCR
89 bl __init_tlb_power8 89 bl __init_tlb_power8
90 bl __init_PMU_HV 90 bl __init_PMU_HV
@@ -108,7 +108,7 @@ _GLOBAL(__setup_cpu_power9)
108 LOAD_REG_IMMEDIATE(r4, LPCR_UPRT | LPCR_HR) 108 LOAD_REG_IMMEDIATE(r4, LPCR_UPRT | LPCR_HR)
109 andc r3, r3, r4 109 andc r3, r3, r4
110 li r4,0 /* LPES = 0 */ 110 li r4,0 /* LPES = 0 */
111 bl __init_LPCR 111 bl __init_LPCR_ISA300
112 bl __init_HFSCR 112 bl __init_HFSCR
113 bl __init_tlb_power9 113 bl __init_tlb_power9
114 bl __init_PMU_HV 114 bl __init_PMU_HV
@@ -132,7 +132,7 @@ _GLOBAL(__restore_cpu_power9)
132 LOAD_REG_IMMEDIATE(r4, LPCR_UPRT | LPCR_HR) 132 LOAD_REG_IMMEDIATE(r4, LPCR_UPRT | LPCR_HR)
133 andc r3, r3, r4 133 andc r3, r3, r4
134 li r4,0 /* LPES = 0 */ 134 li r4,0 /* LPES = 0 */
135 bl __init_LPCR 135 bl __init_LPCR_ISA300
136 bl __init_HFSCR 136 bl __init_HFSCR
137 bl __init_tlb_power9 137 bl __init_tlb_power9
138 bl __init_PMU_HV 138 bl __init_PMU_HV
@@ -150,7 +150,7 @@ __init_hvmode_206:
150 std r5,CPU_SPEC_FEATURES(r4) 150 std r5,CPU_SPEC_FEATURES(r4)
151 blr 151 blr
152 152
153__init_LPCR: 153__init_LPCR_ISA206:
154 /* Setup a sane LPCR: 154 /* Setup a sane LPCR:
155 * Called with initial LPCR in R3 and desired LPES 2-bit value in R4 155 * Called with initial LPCR in R3 and desired LPES 2-bit value in R4
156 * 156 *
@@ -163,6 +163,11 @@ __init_LPCR:
163 * 163 *
164 * Other bits untouched for now 164 * Other bits untouched for now
165 */ 165 */
166 li r5,0x10
167 rldimi r3,r5, LPCR_VRMASD_SH, 64-LPCR_VRMASD_SH-5
168
169 /* POWER9 has no VRMASD */
170__init_LPCR_ISA300:
166 rldimi r3,r4, LPCR_LPES_SH, 64-LPCR_LPES_SH-2 171 rldimi r3,r4, LPCR_LPES_SH, 64-LPCR_LPES_SH-2
167 ori r3,r3,(LPCR_PECE0|LPCR_PECE1|LPCR_PECE2) 172 ori r3,r3,(LPCR_PECE0|LPCR_PECE1|LPCR_PECE2)
168 li r5,4 173 li r5,4
@@ -170,8 +175,6 @@ __init_LPCR:
170 clrrdi r3,r3,1 /* clear HDICE */ 175 clrrdi r3,r3,1 /* clear HDICE */
171 li r5,4 176 li r5,4
172 rldimi r3,r5, LPCR_VC_SH, 0 177 rldimi r3,r5, LPCR_VC_SH, 0
173 li r5,0x10
174 rldimi r3,r5, LPCR_VRMASD_SH, 64-LPCR_VRMASD_SH-5
175 mtspr SPRN_LPCR,r3 178 mtspr SPRN_LPCR,r3
176 isync 179 isync
177 blr 180 blr