|
@@ -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);
|
|
|
}
|