diff options
Diffstat (limited to 'arch/riscv/lib/smp.c')
| -rw-r--r-- | arch/riscv/lib/smp.c | 49 | 
1 files changed, 7 insertions, 42 deletions
| diff --git a/arch/riscv/lib/smp.c b/arch/riscv/lib/smp.c index 17adb35730d..ac22136314f 100644 --- a/arch/riscv/lib/smp.c +++ b/arch/riscv/lib/smp.c @@ -12,38 +12,6 @@  DECLARE_GLOBAL_DATA_PTR; -/** - * riscv_send_ipi() - Send inter-processor interrupt (IPI) - * - * Platform code must provide this function. - * - * @hart: Hart ID of receiving hart - * @return 0 if OK, -ve on error - */ -extern int riscv_send_ipi(int hart); - -/** - * riscv_clear_ipi() - Clear inter-processor interrupt (IPI) - * - * Platform code must provide this function. - * - * @hart: Hart ID of hart to be cleared - * @return 0 if OK, -ve on error - */ -extern int riscv_clear_ipi(int hart); - -/** - * riscv_get_ipi() - Get status of inter-processor interrupt (IPI) - * - * Platform code must provide this function. - * - * @hart: Hart ID of hart to be checked - * @pending: Pointer to variable with result of the check, - *           1 if IPI is pending, 0 otherwise - * @return 0 if OK, -ve on error - */ -extern int riscv_get_ipi(int hart, int *pending); -  static int send_ipi_many(struct ipi_data *ipi, int wait)  {  	ofnode node, cpus; @@ -124,7 +92,7 @@ void handle_ipi(ulong hart)  	 */  	ret = riscv_clear_ipi(hart);  	if (ret) { -		pr_err("Cannot clear IPI of hart %ld\n", hart); +		pr_err("Cannot clear IPI of hart %ld (error %d)\n", hart, ret);  		return;  	} @@ -133,14 +101,11 @@ void handle_ipi(ulong hart)  int smp_call_function(ulong addr, ulong arg0, ulong arg1, int wait)  { -	int ret = 0; -	struct ipi_data ipi; - -	ipi.addr = addr; -	ipi.arg0 = arg0; -	ipi.arg1 = arg1; - -	ret = send_ipi_many(&ipi, wait); +	struct ipi_data ipi = { +		.addr = addr, +		.arg0 = arg0, +		.arg1 = arg1, +	}; -	return ret; +	return send_ipi_many(&ipi, wait);  } | 
