diff mbox series

[1/1] arm: mm: Export __sync_icache_dcache() for xen-privcmd

Message ID 20190413163052.11407-1-xypron.glpk@gmx.de (mailing list archive)
State New, archived
Headers show
Series [1/1] arm: mm: Export __sync_icache_dcache() for xen-privcmd | expand

Commit Message

Heinrich Schuchardt April 13, 2019, 4:30 p.m. UTC
This patch avoids
ERROR: "__sync_icache_dcache" [drivers/xen/xen-privcmd.ko] undefined!
observed when compiling v4.19.34.

The xen-privcmd driver, which can be modular, calls set_pte_at()
which in turn may call __sync_icache_dcache().

Cc: stable@vger.kernel.org
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
---
 arch/arm/mm/flush.c | 1 +
 1 file changed, 1 insertion(+)

--
2.20.1

Comments

Christoph Hellwig April 15, 2019, 5:51 a.m. UTC | #1
On Sat, Apr 13, 2019 at 06:30:52PM +0200, Heinrich Schuchardt wrote:
> This patch avoids
> ERROR: "__sync_icache_dcache" [drivers/xen/xen-privcmd.ko] undefined!
> observed when compiling v4.19.34.
> 
> The xen-privcmd driver, which can be modular, calls set_pte_at()
> which in turn may call __sync_icache_dcache().

Maybe that really is a sign that it should not be modular..
Russell King (Oracle) April 17, 2019, 9:41 a.m. UTC | #2
On Sun, Apr 14, 2019 at 10:51:09PM -0700, Christoph Hellwig wrote:
> On Sat, Apr 13, 2019 at 06:30:52PM +0200, Heinrich Schuchardt wrote:
> > This patch avoids
> > ERROR: "__sync_icache_dcache" [drivers/xen/xen-privcmd.ko] undefined!
> > observed when compiling v4.19.34.
> > 
> > The xen-privcmd driver, which can be modular, calls set_pte_at()
> > which in turn may call __sync_icache_dcache().
> 
> Maybe that really is a sign that it should not be modular..

This issue has been discussed several times, and this URL gives a list
of all messages on linux-arm-kernel that mention __sync_icache_dcache:

https://archive.armlinux.org.uk/lurker/search/20380101.000000.00000000@ml:linux-arm-kernel,sb:__sync_icache_dcache.en.html

At the beginning of March, Boris Ostrovsky pointed that another solution
is available that does not need architecture private symbols to be
exported.

Since I've already said in a previous thread that I don't want this
function exported, it seems the way forward is pretty obvious.
Catalin Marinas April 17, 2019, 10:03 a.m. UTC | #3
On Wed, Apr 17, 2019 at 10:41:37AM +0100, Russell King wrote:
> On Sun, Apr 14, 2019 at 10:51:09PM -0700, Christoph Hellwig wrote:
> > On Sat, Apr 13, 2019 at 06:30:52PM +0200, Heinrich Schuchardt wrote:
> > > This patch avoids
> > > ERROR: "__sync_icache_dcache" [drivers/xen/xen-privcmd.ko] undefined!
> > > observed when compiling v4.19.34.
> > > 
> > > The xen-privcmd driver, which can be modular, calls set_pte_at()
> > > which in turn may call __sync_icache_dcache().
> > 
> > Maybe that really is a sign that it should not be modular..
> 
> This issue has been discussed several times, and this URL gives a list
> of all messages on linux-arm-kernel that mention __sync_icache_dcache:
> 
> https://archive.armlinux.org.uk/lurker/search/20380101.000000.00000000@ml:linux-arm-kernel,sb:__sync_icache_dcache.en.html
> 
> At the beginning of March, Boris Ostrovsky pointed that another solution
> is available that does not need architecture private symbols to be
> exported.
> 
> Since I've already said in a previous thread that I don't want this
> function exported, it seems the way forward is pretty obvious.

Arnd submitted a patch, not sure what happened to it:

https://lore.kernel.org/lkml/20190304204826.2414365-1-arnd@arndb.de/

I think this boils down to whether set_pte_at() is allowed to be called
from loadable modules. If yes, __sync_icache_dcache() needs exporting,
otherwise Arnd's patch makes the relevant code built-in (and, if merged,
I'm happy to revert the similar export on arm64).
Russell King (Oracle) April 17, 2019, 10:31 a.m. UTC | #4
On Wed, Apr 17, 2019 at 11:03:51AM +0100, Catalin Marinas wrote:
> On Wed, Apr 17, 2019 at 10:41:37AM +0100, Russell King wrote:
> > On Sun, Apr 14, 2019 at 10:51:09PM -0700, Christoph Hellwig wrote:
> > > On Sat, Apr 13, 2019 at 06:30:52PM +0200, Heinrich Schuchardt wrote:
> > > > This patch avoids
> > > > ERROR: "__sync_icache_dcache" [drivers/xen/xen-privcmd.ko] undefined!
> > > > observed when compiling v4.19.34.
> > > > 
> > > > The xen-privcmd driver, which can be modular, calls set_pte_at()
> > > > which in turn may call __sync_icache_dcache().
> > > 
> > > Maybe that really is a sign that it should not be modular..
> > 
> > This issue has been discussed several times, and this URL gives a list
> > of all messages on linux-arm-kernel that mention __sync_icache_dcache:
> > 
> > https://archive.armlinux.org.uk/lurker/search/20380101.000000.00000000@ml:linux-arm-kernel,sb:__sync_icache_dcache.en.html
> > 
> > At the beginning of March, Boris Ostrovsky pointed that another solution
> > is available that does not need architecture private symbols to be
> > exported.
> > 
> > Since I've already said in a previous thread that I don't want this
> > function exported, it seems the way forward is pretty obvious.
> 
> Arnd submitted a patch, not sure what happened to it:
> 
> https://lore.kernel.org/lkml/20190304204826.2414365-1-arnd@arndb.de/

Thanks Catalin, this is the "another solution" that I referred to above.
(You'll find the exact same URL in Boris' email.)

> I think this boils down to whether set_pte_at() is allowed to be called
> from loadable modules. If yes, __sync_icache_dcache() needs exporting,
> otherwise Arnd's patch makes the relevant code built-in (and, if merged,
> I'm happy to revert the similar export on arm64).

I think I've clearly expressed my opinion on that.  Hence why "the way
forward is pretty obvious."  I don't understand why we still have the
problem.
diff mbox series

Patch

diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c
index 58469623b015..5345f86c56d2 100644
--- a/arch/arm/mm/flush.c
+++ b/arch/arm/mm/flush.c
@@ -295,6 +295,7 @@  void __sync_icache_dcache(pte_t pteval)
 	if (pte_exec(pteval))
 		__flush_icache_all();
 }
+EXPORT_SYMBOL_GPL(__sync_icache_dcache);
 #endif

 /*