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