diff options
Diffstat (limited to 'arch/powerpc/kernel/cpu_setup_power.c')
| -rw-r--r-- | arch/powerpc/kernel/cpu_setup_power.c | 12 | 
1 files changed, 10 insertions, 2 deletions
| diff --git a/arch/powerpc/kernel/cpu_setup_power.c b/arch/powerpc/kernel/cpu_setup_power.c index 3cca88ee96d7..3dc61e203f37 100644 --- a/arch/powerpc/kernel/cpu_setup_power.c +++ b/arch/powerpc/kernel/cpu_setup_power.c @@ -109,7 +109,7 @@ static void init_PMU_HV_ISA207(void)  static void init_PMU(void)  {  	mtspr(SPRN_MMCRA, 0); -	mtspr(SPRN_MMCR0, 0); +	mtspr(SPRN_MMCR0, MMCR0_FC);  	mtspr(SPRN_MMCR1, 0);  	mtspr(SPRN_MMCR2, 0);  } @@ -123,7 +123,7 @@ static void init_PMU_ISA31(void)  {  	mtspr(SPRN_MMCR3, 0);  	mtspr(SPRN_MMCRA, MMCRA_BHRB_DISABLE); -	mtspr(SPRN_MMCR0, MMCR0_PMCCEXT); +	mtspr(SPRN_MMCR0, MMCR0_FC | MMCR0_PMCCEXT);  }  /* @@ -137,6 +137,7 @@ void __setup_cpu_power7(unsigned long offset, struct cpu_spec *t)  		return;  	mtspr(SPRN_LPID, 0); +	mtspr(SPRN_AMOR, ~0);  	mtspr(SPRN_PCR, PCR_MASK);  	init_LPCR_ISA206(mfspr(SPRN_LPCR), LPCR_LPES1 >> LPCR_LPES_SH);  } @@ -150,6 +151,7 @@ void __restore_cpu_power7(void)  		return;  	mtspr(SPRN_LPID, 0); +	mtspr(SPRN_AMOR, ~0);  	mtspr(SPRN_PCR, PCR_MASK);  	init_LPCR_ISA206(mfspr(SPRN_LPCR), LPCR_LPES1 >> LPCR_LPES_SH);  } @@ -164,6 +166,7 @@ void __setup_cpu_power8(unsigned long offset, struct cpu_spec *t)  		return;  	mtspr(SPRN_LPID, 0); +	mtspr(SPRN_AMOR, ~0);  	mtspr(SPRN_PCR, PCR_MASK);  	init_LPCR_ISA206(mfspr(SPRN_LPCR) | LPCR_PECEDH, 0); /* LPES = 0 */  	init_HFSCR(); @@ -184,6 +187,7 @@ void __restore_cpu_power8(void)  		return;  	mtspr(SPRN_LPID, 0); +	mtspr(SPRN_AMOR, ~0);  	mtspr(SPRN_PCR, PCR_MASK);  	init_LPCR_ISA206(mfspr(SPRN_LPCR) | LPCR_PECEDH, 0); /* LPES = 0 */  	init_HFSCR(); @@ -202,6 +206,7 @@ void __setup_cpu_power9(unsigned long offset, struct cpu_spec *t)  	mtspr(SPRN_PSSCR, 0);  	mtspr(SPRN_LPID, 0);  	mtspr(SPRN_PID, 0); +	mtspr(SPRN_AMOR, ~0);  	mtspr(SPRN_PCR, PCR_MASK);  	init_LPCR_ISA300((mfspr(SPRN_LPCR) | LPCR_PECEDH | LPCR_PECE_HVEE |\  			 LPCR_HVICE | LPCR_HEIC) & ~(LPCR_UPRT | LPCR_HR), 0); @@ -223,6 +228,7 @@ void __restore_cpu_power9(void)  	mtspr(SPRN_PSSCR, 0);  	mtspr(SPRN_LPID, 0);  	mtspr(SPRN_PID, 0); +	mtspr(SPRN_AMOR, ~0);  	mtspr(SPRN_PCR, PCR_MASK);  	init_LPCR_ISA300((mfspr(SPRN_LPCR) | LPCR_PECEDH | LPCR_PECE_HVEE |\  			 LPCR_HVICE | LPCR_HEIC) & ~(LPCR_UPRT | LPCR_HR), 0); @@ -242,6 +248,7 @@ void __setup_cpu_power10(unsigned long offset, struct cpu_spec *t)  	mtspr(SPRN_PSSCR, 0);  	mtspr(SPRN_LPID, 0);  	mtspr(SPRN_PID, 0); +	mtspr(SPRN_AMOR, ~0);  	mtspr(SPRN_PCR, PCR_MASK);  	init_LPCR_ISA300((mfspr(SPRN_LPCR) | LPCR_PECEDH | LPCR_PECE_HVEE |\  			 LPCR_HVICE | LPCR_HEIC) & ~(LPCR_UPRT | LPCR_HR), 0); @@ -264,6 +271,7 @@ void __restore_cpu_power10(void)  	mtspr(SPRN_PSSCR, 0);  	mtspr(SPRN_LPID, 0);  	mtspr(SPRN_PID, 0); +	mtspr(SPRN_AMOR, ~0);  	mtspr(SPRN_PCR, PCR_MASK);  	init_LPCR_ISA300((mfspr(SPRN_LPCR) | LPCR_PECEDH | LPCR_PECE_HVEE |\  			 LPCR_HVICE | LPCR_HEIC) & ~(LPCR_UPRT | LPCR_HR), 0); |