diff options
author | Atish Patra <atish.patra@wdc.com> | 2019-08-14 18:02:15 -0700 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2019-08-16 08:42:58 +0530 |
commit | 75229705a0bf804099fbf32b61d7f6ba459226ec (patch) | |
tree | 70b560e35bb5dc9d9bd3d3976bd6c7a1107e1a45 | |
parent | 897a97a6af31174eb2c6058c6ceb9d3ccc6c6e3c (diff) |
platform: Remove the ipi_sync method from all platforms.
OpenSBI manages outstanding TLB flush requests by queueing
them in a fifo synchronously. An ipi sync which uses an
atomic operation on MMIO address is no longer required.
Remove the ipi sync method from platform header and all usage.
Signed-off-by: Atish Patra <atish.patra@wdc.com>
Reviewed-by: Anup Patel <anup.patel@wdc.com>
-rw-r--r-- | include/sbi/sbi_platform.h | 15 | ||||
-rw-r--r-- | lib/utils/sys/clint.c | 23 | ||||
-rw-r--r-- | platform/ariane-fpga/platform.c | 1 | ||||
-rw-r--r-- | platform/kendryte/k210/platform.c | 1 | ||||
-rw-r--r-- | platform/qemu/sifive_u/platform.c | 1 | ||||
-rw-r--r-- | platform/qemu/virt/platform.c | 1 | ||||
-rw-r--r-- | platform/sifive/fu540/platform.c | 1 | ||||
-rw-r--r-- | platform/template/platform.c | 10 |
8 files changed, 0 insertions, 53 deletions
diff --git a/include/sbi/sbi_platform.h b/include/sbi/sbi_platform.h index 34cd732..97195c4 100644 --- a/include/sbi/sbi_platform.h +++ b/include/sbi/sbi_platform.h @@ -90,8 +90,6 @@ struct sbi_platform_operations { /** Send IPI to a target HART */ void (*ipi_send)(u32 target_hart); - /** Wait for target HART to acknowledge IPI */ - void (*ipi_sync)(u32 target_hart); /** Clear IPI for a target HART */ void (*ipi_clear)(u32 target_hart); /** Initialize IPI for current HART */ @@ -371,19 +369,6 @@ static inline void sbi_platform_ipi_send(const struct sbi_platform *plat, } /** - * Wait for target HART to acknowledge IPI - * - * @param plat pointer to struct sbi_platform - * @param target_hart HART ID of IPI target - */ -static inline void sbi_platform_ipi_sync(const struct sbi_platform *plat, - u32 target_hart) -{ - if (plat && sbi_platform_ops(plat)->ipi_sync) - sbi_platform_ops(plat)->ipi_sync(target_hart); -} - -/** * Clear IPI for a target HART * * @param plat pointer to struct sbi_platform diff --git a/lib/utils/sys/clint.c b/lib/utils/sys/clint.c index 055a513..d58e4e6 100644 --- a/lib/utils/sys/clint.c +++ b/lib/utils/sys/clint.c @@ -25,29 +25,6 @@ void clint_ipi_send(u32 target_hart) writel(1, &clint_ipi[target_hart]); } -void clint_ipi_sync(u32 target_hart) -{ - u32 target_ipi, incoming_ipi; - u32 source_hart = sbi_current_hartid(); - - if (clint_ipi_hart_count <= target_hart) - return; - - /* Wait until target HART has handled IPI */ - incoming_ipi = 0; - while (1) { - target_ipi = readl(&clint_ipi[target_hart]); - if (!target_ipi) - break; - - incoming_ipi |= - atomic_raw_xchg_uint(&clint_ipi[source_hart], 0); - } - - if (incoming_ipi) - writel(incoming_ipi, &clint_ipi[source_hart]); -} - void clint_ipi_clear(u32 target_hart) { if (clint_ipi_hart_count <= target_hart) diff --git a/platform/ariane-fpga/platform.c b/platform/ariane-fpga/platform.c index 62cee90..daeb9cd 100644 --- a/platform/ariane-fpga/platform.c +++ b/platform/ariane-fpga/platform.c @@ -185,7 +185,6 @@ const struct sbi_platform_operations platform_ops = { .irqchip_init = ariane_irqchip_init, .ipi_init = ariane_ipi_init, .ipi_send = clint_ipi_send, - .ipi_sync = clint_ipi_sync, .ipi_clear = clint_ipi_clear, .timer_init = ariane_timer_init, .timer_value = clint_timer_value, diff --git a/platform/kendryte/k210/platform.c b/platform/kendryte/k210/platform.c index 4c31ee9..19c569c 100644 --- a/platform/kendryte/k210/platform.c +++ b/platform/kendryte/k210/platform.c @@ -102,7 +102,6 @@ const struct sbi_platform_operations platform_ops = { .ipi_init = k210_ipi_init, .ipi_send = clint_ipi_send, - .ipi_sync = clint_ipi_sync, .ipi_clear = clint_ipi_clear, .timer_init = k210_timer_init, diff --git a/platform/qemu/sifive_u/platform.c b/platform/qemu/sifive_u/platform.c index d8b586f..40d6584 100644 --- a/platform/qemu/sifive_u/platform.c +++ b/platform/qemu/sifive_u/platform.c @@ -136,7 +136,6 @@ const struct sbi_platform_operations platform_ops = { .console_init = sifive_u_console_init, .irqchip_init = sifive_u_irqchip_init, .ipi_send = clint_ipi_send, - .ipi_sync = clint_ipi_sync, .ipi_clear = clint_ipi_clear, .ipi_init = sifive_u_ipi_init, .timer_value = clint_timer_value, diff --git a/platform/qemu/virt/platform.c b/platform/qemu/virt/platform.c index 1cf0b7d..6ef6a19 100644 --- a/platform/qemu/virt/platform.c +++ b/platform/qemu/virt/platform.c @@ -141,7 +141,6 @@ const struct sbi_platform_operations platform_ops = { .console_init = virt_console_init, .irqchip_init = virt_irqchip_init, .ipi_send = clint_ipi_send, - .ipi_sync = clint_ipi_sync, .ipi_clear = clint_ipi_clear, .ipi_init = virt_ipi_init, .timer_value = clint_timer_value, diff --git a/platform/sifive/fu540/platform.c b/platform/sifive/fu540/platform.c index 827e294..81e8e8d 100644 --- a/platform/sifive/fu540/platform.c +++ b/platform/sifive/fu540/platform.c @@ -199,7 +199,6 @@ const struct sbi_platform_operations platform_ops = { .console_init = fu540_console_init, .irqchip_init = fu540_irqchip_init, .ipi_send = clint_ipi_send, - .ipi_sync = clint_ipi_sync, .ipi_clear = clint_ipi_clear, .ipi_init = fu540_ipi_init, .timer_value = clint_timer_value, diff --git a/platform/template/platform.c b/platform/template/platform.c index 148bfa9..e123f3a 100644 --- a/platform/template/platform.c +++ b/platform/template/platform.c @@ -125,15 +125,6 @@ static void platform_ipi_send(u32 target_hart) } /* - * Wait for target HART to acknowledge IPI. - */ -static void platform_ipi_sync(u32 target_hart) -{ - /* Example if the generic CLINT driver is used */ - clint_ipi_sync(target_hart); -} - -/* * Clear IPI for a target HART. */ static void platform_ipi_clear(u32 target_hart) @@ -216,7 +207,6 @@ const struct sbi_platform_operations platform_ops = { .console_init = platform_console_init, .irqchip_init = platform_irqchip_init, .ipi_send = platform_ipi_send, - .ipi_sync = platform_ipi_sync, .ipi_clear = platform_ipi_clear, .ipi_init = platform_ipi_init, .timer_value = platform_timer_value, |