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

From: Catalin Marinas
Date: Wed Apr 17 2019 - 06:03:58 EST


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@xxxxxxxx/

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).

--
Catalin