Messages in this thread | | | From | Atish Patra <> | Date | Thu, 3 Nov 2022 00:01:31 -0700 | Subject | Re: [PATCH v10 7/7] RISC-V: Use IPIs for remote icache flush when possible |
| |
On Tue, Nov 1, 2022 at 7:35 AM Anup Patel <apatel@ventanamicro.com> wrote: > > If we have specialized interrupt controller (such as AIA IMSIC) which > allows supervisor mode to directly inject IPIs without any assistance > from M-mode or HS-mode then using such specialized interrupt controller, > we can do remote icache flushe directly from supervisor mode instead of > using the SBI RFENCE calls. > > This patch extends remote icache flush functions to use supervisor mode > IPIs whenever direct supervisor mode IPIs.are supported by interrupt > controller. > > Signed-off-by: Anup Patel <apatel@ventanamicro.com> > --- > arch/riscv/mm/cacheflush.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/arch/riscv/mm/cacheflush.c b/arch/riscv/mm/cacheflush.c > index 57b40a350420..f10cb47eac3a 100644 > --- a/arch/riscv/mm/cacheflush.c > +++ b/arch/riscv/mm/cacheflush.c > @@ -19,7 +19,7 @@ void flush_icache_all(void) > { > local_flush_icache_all(); > > - if (IS_ENABLED(CONFIG_RISCV_SBI)) > + if (IS_ENABLED(CONFIG_RISCV_SBI) && !riscv_use_ipi_for_rfence()) > sbi_remote_fence_i(NULL); > else > on_each_cpu(ipi_remote_fence_i, NULL, 1); > @@ -67,7 +67,8 @@ void flush_icache_mm(struct mm_struct *mm, bool local) > * with flush_icache_deferred(). > */ > smp_mb(); > - } else if (IS_ENABLED(CONFIG_RISCV_SBI)) { > + } else if (IS_ENABLED(CONFIG_RISCV_SBI) && > + !riscv_use_ipi_for_rfence()) { > sbi_remote_fence_i(&others); > } else { > on_each_cpu_mask(&others, ipi_remote_fence_i, NULL, 1); > -- > 2.34.1 >
Reviewed-by: Atish Patra <atishp@rivosinc.com>
-- Regards, Atish
| |