Message ID | 20191217040704.91995-1-olof@lixom.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | riscv: export flush_icache_all to modules | expand |
On Tue, Dec 17, 2019 at 9:37 AM Olof Johansson <olof@lixom.net> wrote: > > This is needed by LKDTM (crash dump test module), it calls > flush_icache_range(), which on RISC-V turns into flush_icache_all(). On > other architectures, the actual implementation is exported, so follow > that precedence and export it here too. > > Fixes build of CONFIG_LKDTM that fails with: > ERROR: "flush_icache_all" [drivers/misc/lkdtm/lkdtm.ko] undefined! > > Signed-off-by: Olof Johansson <olof@lixom.net> > --- > arch/riscv/mm/cacheflush.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/arch/riscv/mm/cacheflush.c b/arch/riscv/mm/cacheflush.c > index 8f19006866405..8930ab7278e6d 100644 > --- a/arch/riscv/mm/cacheflush.c > +++ b/arch/riscv/mm/cacheflush.c > @@ -22,6 +22,7 @@ void flush_icache_all(void) > else > on_each_cpu(ipi_remote_fence_i, NULL, 1); > } > +EXPORT_SYMBOL(flush_icache_all); > > /* > * Performs an icache flush for the given MM context. RISC-V has no direct > -- > 2.11.0 > LGTM. Reviewed-by: Anup Patel <anup@brainfault.org> Regards, Anup
On Mon, 16 Dec 2019, Olof Johansson wrote: > This is needed by LKDTM (crash dump test module), it calls > flush_icache_range(), which on RISC-V turns into flush_icache_all(). On > other architectures, the actual implementation is exported, so follow > that precedence and export it here too. > > Fixes build of CONFIG_LKDTM that fails with: > ERROR: "flush_icache_all" [drivers/misc/lkdtm/lkdtm.ko] undefined! In the past we've resisted doing this; see https://lore.kernel.org/linux-riscv/20190611134945.GA28532@lst.de/ under the principle that we don't want modules to be able to flush the I$ directly via this interface. But maybe, like moving the L2 related code out of arch/riscv, we should just do it. - Paul
On Fri, Dec 20, 2019 at 3:05 AM Paul Walmsley <paul.walmsley@sifive.com> wrote: > > On Mon, 16 Dec 2019, Olof Johansson wrote: > > > This is needed by LKDTM (crash dump test module), it calls > > flush_icache_range(), which on RISC-V turns into flush_icache_all(). On > > other architectures, the actual implementation is exported, so follow > > that precedence and export it here too. > > > > Fixes build of CONFIG_LKDTM that fails with: > > ERROR: "flush_icache_all" [drivers/misc/lkdtm/lkdtm.ko] undefined! > > In the past we've resisted doing this; see > > https://lore.kernel.org/linux-riscv/20190611134945.GA28532@lst.de/ > > under the principle that we don't want modules to be able to flush the I$ > directly via this interface. But maybe, like moving the L2 related code > out of arch/riscv, we should just do it. So you are aware that all other architectures that don't have coherent icache already exports this, right? Being more puritan on RISC-V buys nothing w.r.t. keeping modules from doing anything, you'll just end up having to mark a bunch of them broken on your architecture. :( -Olof
On Fri, 20 Dec 2019, Olof Johansson wrote: > On Fri, Dec 20, 2019 at 3:05 AM Paul Walmsley <paul.walmsley@sifive.com> wrote: > > > > On Mon, 16 Dec 2019, Olof Johansson wrote: > > > > > This is needed by LKDTM (crash dump test module), it calls > > > flush_icache_range(), which on RISC-V turns into flush_icache_all(). On > > > other architectures, the actual implementation is exported, so follow > > > that precedence and export it here too. > > > > > > Fixes build of CONFIG_LKDTM that fails with: > > > ERROR: "flush_icache_all" [drivers/misc/lkdtm/lkdtm.ko] undefined! > > > > In the past we've resisted doing this; see > > > > https://lore.kernel.org/linux-riscv/20190611134945.GA28532@lst.de/ > > > > under the principle that we don't want modules to be able to flush the I$ > > directly via this interface. But maybe, like moving the L2 related code > > out of arch/riscv, we should just do it. > > So you are aware that all other architectures that don't have coherent > icache already exports this, right? > > Being more puritan on RISC-V buys nothing w.r.t. keeping modules from > doing anything, you'll just end up having to mark a bunch of them > broken on your architecture. :( Yep, we'll pick it up. - Paul
On Mon, 16 Dec 2019, Olof Johansson wrote: > This is needed by LKDTM (crash dump test module), it calls > flush_icache_range(), which on RISC-V turns into flush_icache_all(). On > other architectures, the actual implementation is exported, so follow > that precedence and export it here too. > > Fixes build of CONFIG_LKDTM that fails with: > ERROR: "flush_icache_all" [drivers/misc/lkdtm/lkdtm.ko] undefined! > > Signed-off-by: Olof Johansson <olof@lixom.net> Thanks Olof, queued for v5.5-rc. - Paul
diff --git a/arch/riscv/mm/cacheflush.c b/arch/riscv/mm/cacheflush.c index 8f19006866405..8930ab7278e6d 100644 --- a/arch/riscv/mm/cacheflush.c +++ b/arch/riscv/mm/cacheflush.c @@ -22,6 +22,7 @@ void flush_icache_all(void) else on_each_cpu(ipi_remote_fence_i, NULL, 1); } +EXPORT_SYMBOL(flush_icache_all); /* * Performs an icache flush for the given MM context. RISC-V has no direct
This is needed by LKDTM (crash dump test module), it calls flush_icache_range(), which on RISC-V turns into flush_icache_all(). On other architectures, the actual implementation is exported, so follow that precedence and export it here too. Fixes build of CONFIG_LKDTM that fails with: ERROR: "flush_icache_all" [drivers/misc/lkdtm/lkdtm.ko] undefined! Signed-off-by: Olof Johansson <olof@lixom.net> --- arch/riscv/mm/cacheflush.c | 1 + 1 file changed, 1 insertion(+)