diff options
Diffstat (limited to 'arch/powerpc/sysdev/xics/icp-hv.c')
| -rw-r--r-- | arch/powerpc/sysdev/xics/icp-hv.c | 6 | 
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/powerpc/sysdev/xics/icp-hv.c b/arch/powerpc/sysdev/xics/icp-hv.c index 14469cf9df6..df0fc582146 100644 --- a/arch/powerpc/sysdev/xics/icp-hv.c +++ b/arch/powerpc/sysdev/xics/icp-hv.c @@ -65,7 +65,11 @@ static inline void icp_hv_set_xirr(unsigned int value)  static inline void icp_hv_set_qirr(int n_cpu , u8 value)  {  	int hw_cpu = get_hard_smp_processor_id(n_cpu); -	long rc = plpar_hcall_norets(H_IPI, hw_cpu, value); +	long rc; + +	/* Make sure all previous accesses are ordered before IPI sending */ +	mb(); +	rc = plpar_hcall_norets(H_IPI, hw_cpu, value);  	if (rc != H_SUCCESS) {  		pr_err("%s: bad return code qirr cpu=%d hw_cpu=%d mfrr=0x%x "  			"returned %ld\n", __func__, n_cpu, hw_cpu, value, rc);  |