diff options
Diffstat (limited to 'arch/powerpc/platforms/pseries/setup.c')
| -rw-r--r-- | arch/powerpc/platforms/pseries/setup.c | 15 | 
1 files changed, 12 insertions, 3 deletions
| diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c index 633c45ec406d..090c13f6c881 100644 --- a/arch/powerpc/platforms/pseries/setup.c +++ b/arch/powerpc/platforms/pseries/setup.c @@ -542,7 +542,7 @@ static void init_cpu_char_feature_flags(struct h_cpu_char_result *result)  		security_ftr_clear(SEC_FTR_BNDS_CHK_SPEC_BAR);  } -void pseries_setup_rfi_flush(void) +void pseries_setup_security_mitigations(void)  {  	struct h_cpu_char_result result;  	enum l1d_flush_type types; @@ -579,6 +579,16 @@ void pseries_setup_rfi_flush(void)  	setup_rfi_flush(types, enable);  	setup_count_cache_flush(); + +	enable = security_ftr_enabled(SEC_FTR_FAVOUR_SECURITY) && +		 security_ftr_enabled(SEC_FTR_L1D_FLUSH_ENTRY); +	setup_entry_flush(enable); + +	enable = security_ftr_enabled(SEC_FTR_FAVOUR_SECURITY) && +		 security_ftr_enabled(SEC_FTR_L1D_FLUSH_UACCESS); +	setup_uaccess_flush(enable); + +	setup_stf_barrier();  }  #ifdef CONFIG_PCI_IOV @@ -768,8 +778,7 @@ static void __init pSeries_setup_arch(void)  	fwnmi_init(); -	pseries_setup_rfi_flush(); -	setup_stf_barrier(); +	pseries_setup_security_mitigations();  	pseries_lpar_read_hblkrm_characteristics();  	/* By default, only probe PCI (can be overridden by rtas_pci) */ | 
