Skip to content

Commit a038a3f

Browse files
tq-schiffermmpe
authored andcommitted
powerpc/6xx: set High BAT Enable flag on G2_LE cores
MMU_FTR_USE_HIGH_BATS is set for G2_LE cores and derivatives like e300cX, but the high BATs need to be enabled in HID2 to work. Add register definitions and add the needed setup to __setup_cpu_603. This fixes boot on CPUs like the MPC5200B with STRICT_KERNEL_RWX enabled on systems where the flag has not been set by the bootloader already. Fixes: e4d6654 ("powerpc/mm/32s: rework mmu_mapin_ram()") Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com> Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://msgid.link/20240124103838.43675-1-matthias.schiffer@ew.tq-group.com
1 parent f096962 commit a038a3f

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

arch/powerpc/include/asm/reg.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -617,6 +617,8 @@
617617
#endif
618618
#define SPRN_HID2 0x3F8 /* Hardware Implementation Register 2 */
619619
#define SPRN_HID2_GEKKO 0x398 /* Gekko HID2 Register */
620+
#define SPRN_HID2_G2_LE 0x3F3 /* G2_LE HID2 Register */
621+
#define HID2_G2_LE_HBE (1<<18) /* High BAT Enable (G2_LE) */
620622
#define SPRN_IABR 0x3F2 /* Instruction Address Breakpoint Register */
621623
#define SPRN_IABR2 0x3FA /* 83xx */
622624
#define SPRN_IBCR 0x135 /* 83xx Insn Breakpoint Control Reg */

arch/powerpc/kernel/cpu_setup_6xx.S

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,15 @@ BEGIN_FTR_SECTION
2626
bl __init_fpu_registers
2727
END_FTR_SECTION_IFCLR(CPU_FTR_FPU_UNAVAILABLE)
2828
bl setup_common_caches
29+
30+
/*
31+
* This assumes that all cores using __setup_cpu_603 with
32+
* MMU_FTR_USE_HIGH_BATS are G2_LE compatible
33+
*/
34+
BEGIN_MMU_FTR_SECTION
35+
bl setup_g2_le_hid2
36+
END_MMU_FTR_SECTION_IFSET(MMU_FTR_USE_HIGH_BATS)
37+
2938
mtlr r5
3039
blr
3140
_GLOBAL(__setup_cpu_604)
@@ -115,6 +124,16 @@ SYM_FUNC_START_LOCAL(setup_604_hid0)
115124
blr
116125
SYM_FUNC_END(setup_604_hid0)
117126

127+
/* Enable high BATs for G2_LE and derivatives like e300cX */
128+
SYM_FUNC_START_LOCAL(setup_g2_le_hid2)
129+
mfspr r11,SPRN_HID2_G2_LE
130+
oris r11,r11,HID2_G2_LE_HBE@h
131+
mtspr SPRN_HID2_G2_LE,r11
132+
sync
133+
isync
134+
blr
135+
SYM_FUNC_END(setup_g2_le_hid2)
136+
118137
/* 7400 <= rev 2.7 and 7410 rev = 1.0 suffer from some
119138
* erratas we work around here.
120139
* Moto MPC710CE.pdf describes them, those are errata
@@ -495,4 +514,3 @@ _GLOBAL(__restore_cpu_setup)
495514
mtcr r7
496515
blr
497516
_ASM_NOKPROBE_SYMBOL(__restore_cpu_setup)
498-

0 commit comments

Comments
 (0)