diff mbox series

[v2,06/12] MIPS: c-octeon: Provide alternative SMP cache flush function

Message ID 20230321104852.25284-7-jiaxun.yang@flygoat.com (mailing list archive)
State Superseded
Headers show
Series MIPS Virt board support | expand

Commit Message

Jiaxun Yang March 21, 2023, 10:48 a.m. UTC
Curretly c-octeon relies on octeon's own smp function to flush
I-Cache. However this function is not available on generic platform.

Just use smp_call_function_many on generic platform.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
---
v2: Style fix
---
 arch/mips/mm/c-octeon.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Thomas Bogendoerfer March 24, 2023, 1:31 p.m. UTC | #1
On Tue, Mar 21, 2023 at 10:48:46AM +0000, Jiaxun Yang wrote:
> Curretly c-octeon relies on octeon's own smp function to flush

typo

> I-Cache. However this function is not available on generic platform.
> 
> Just use smp_call_function_many on generic platform.
> 
> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> ---
> v2: Style fix
> ---
>  arch/mips/mm/c-octeon.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/arch/mips/mm/c-octeon.c b/arch/mips/mm/c-octeon.c
> index c7ed589de882..b7393b61cfa7 100644
> --- a/arch/mips/mm/c-octeon.c
> +++ b/arch/mips/mm/c-octeon.c
> @@ -83,8 +83,13 @@ static void octeon_flush_icache_all_cores(struct vm_area_struct *vma)
>  	else
>  		mask = *cpu_online_mask;
>  	cpumask_clear_cpu(cpu, &mask);
> +#ifdef CONFIG_CAVIUM_OCTEON_SOC
>  	for_each_cpu(cpu, &mask)
>  		octeon_send_ipi_single(cpu, SMP_ICACHE_FLUSH);
> +#else
> +	smp_call_function_many(&mask, (smp_call_func_t)octeon_local_flush_icache,
> +			       NULL, 1);
> +#endif
>  
>  	preempt_enable();
>  #endif
> -- 
> 2.37.1 (Apple Git-137.1)
diff mbox series

Patch

diff --git a/arch/mips/mm/c-octeon.c b/arch/mips/mm/c-octeon.c
index c7ed589de882..b7393b61cfa7 100644
--- a/arch/mips/mm/c-octeon.c
+++ b/arch/mips/mm/c-octeon.c
@@ -83,8 +83,13 @@  static void octeon_flush_icache_all_cores(struct vm_area_struct *vma)
 	else
 		mask = *cpu_online_mask;
 	cpumask_clear_cpu(cpu, &mask);
+#ifdef CONFIG_CAVIUM_OCTEON_SOC
 	for_each_cpu(cpu, &mask)
 		octeon_send_ipi_single(cpu, SMP_ICACHE_FLUSH);
+#else
+	smp_call_function_many(&mask, (smp_call_func_t)octeon_local_flush_icache,
+			       NULL, 1);
+#endif
 
 	preempt_enable();
 #endif