2013-09-05 09:33:28

by Geert Uytterhoeven

[permalink] [raw]
Subject: [PATCH] parisc: Export flush_cache_page() (needed by lustre)

ERROR: "flush_cache_page" [drivers/staging/lustre/lustre/libcfs/libcfs.ko] undefined!

Signed-off-by: Geert Uytterhoeven <[email protected]>
---
arch/parisc/kernel/cache.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c
index c035673..b521c0a 100644
--- a/arch/parisc/kernel/cache.c
+++ b/arch/parisc/kernel/cache.c
@@ -602,6 +602,7 @@ flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr, unsigned long
__flush_cache_page(vma, vmaddr, PFN_PHYS(pfn));
}
}
+EXPORT_SYMBOL_GPL(flush_cache_page);

#ifdef CONFIG_PARISC_TMPALIAS

--
1.7.9.5


2013-09-05 16:02:03

by James Bottomley

[permalink] [raw]
Subject: Re: [PATCH] parisc: Export flush_cache_page() (needed by lustre)

On Thu, 2013-09-05 at 11:33 +0200, Geert Uytterhoeven wrote:
> ERROR: "flush_cache_page" [drivers/staging/lustre/lustre/libcfs/libcfs.ko] undefined!
>
> Signed-off-by: Geert Uytterhoeven <[email protected]>
> ---
> arch/parisc/kernel/cache.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c
> index c035673..b521c0a 100644
> --- a/arch/parisc/kernel/cache.c
> +++ b/arch/parisc/kernel/cache.c
> @@ -602,6 +602,7 @@ flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr, unsigned long
> __flush_cache_page(vma, vmaddr, PFN_PHYS(pfn));
> }
> }
> +EXPORT_SYMBOL_GPL(flush_cache_page);

This is an internal API: no architecture exports this. Whoever is
trying to use it needs to use the correct API, so this is the wrong
patch.

James

2013-09-05 17:13:46

by Kyle McMartin

[permalink] [raw]
Subject: Re: [PATCH] parisc: Export flush_cache_page() (needed by lustre)

On Thu, Sep 05, 2013 at 09:01:59AM -0700, James Bottomley wrote:
> > +EXPORT_SYMBOL_GPL(flush_cache_page);
>
> This is an internal API: no architecture exports this. Whoever is
> trying to use it needs to use the correct API, so this is the wrong
> patch.
>

I suspect it's copy_{to,from}_user_page being called here:

drivers/staging/lustre/lustre/libcfs/linux/linux-curproc.c:
copy_to_user_page(vma, page, addr,

which we could probably take out of line.

--Kyle

2013-09-05 18:07:21

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH] parisc: Export flush_cache_page() (needed by lustre)

On Thu, Sep 5, 2013 at 7:13 PM, Kyle McMartin <[email protected]> wrote:
> On Thu, Sep 05, 2013 at 09:01:59AM -0700, James Bottomley wrote:
>> > +EXPORT_SYMBOL_GPL(flush_cache_page);
>>
>> This is an internal API: no architecture exports this. Whoever is
>> trying to use it needs to use the correct API, so this is the wrong
>> patch.
>>
>
> I suspect it's copy_{to,from}_user_page being called here:

Indeed. Sorry, I should have mentioned that.

> drivers/staging/lustre/lustre/libcfs/linux/linux-curproc.c:
> copy_to_user_page(vma, page, addr,
>
> which we could probably take out of line.

If you want to hide flush_cache_page() for modules, yes.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

2013-09-05 18:46:15

by John David Anglin

[permalink] [raw]
Subject: Re: [PATCH] parisc: Export flush_cache_page() (needed by lustre)

On 9/5/2013 12:01 PM, James Bottomley wrote:
> On Thu, 2013-09-05 at 11:33 +0200, Geert Uytterhoeven wrote:
>> ERROR: "flush_cache_page" [drivers/staging/lustre/lustre/libcfs/libcfs.ko] undefined!
>>
>> Signed-off-by: Geert Uytterhoeven <[email protected]>
>> ---
>> arch/parisc/kernel/cache.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c
>> index c035673..b521c0a 100644
>> --- a/arch/parisc/kernel/cache.c
>> +++ b/arch/parisc/kernel/cache.c
>> @@ -602,6 +602,7 @@ flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr, unsigned long
>> __flush_cache_page(vma, vmaddr, PFN_PHYS(pfn));
>> }
>> }
>> +EXPORT_SYMBOL_GPL(flush_cache_page);
> This is an internal API: no architecture exports this. Whoever is
> trying to use it needs to use the correct API, so this is the wrong
> patch.
>
There is a declaration for it in arch/parisc/include/asm/cacheflush.h.
There are a bunch
of callers in mm. The interface in documented in
Documentation/cachetlb.txt. We currently
use it in copy_to_user_page and copy_from_user_page.

Dave

--
John David Anglin [email protected]