2014-12-01 20:41:57

by Chen Gang

[permalink] [raw]
Subject: [PATCH] arch: uapi: asm: mman.h: Support MADV_FREE for madvise()

At present, kernel supports madvise(MADV_FREE), so can benefit to all
related architectures (can grep MADV_WILLNEED or MADV_REMOVE in "arch/"
to know about all related architectures).

The related git commit: "4fb10ba mm: support madvise(MADV_FREE)".

The related error (with allmodconfig under parisc):

CC mm/madvise.o
mm/madvise.c: In function 'madvise_need_mmap_write':
mm/madvise.c:42:7: error: 'MADV_FREE' undeclared (first use in this function)
case MADV_FREE:
^
mm/madvise.c:42:7: note: each undeclared identifier is reported only once for each function it appears in
mm/madvise.c: In function 'madvise_vma':
mm/madvise.c:534:7: error: 'MADV_FREE' undeclared (first use in this function)
case MADV_FREE:
^
mm/madvise.c: In function 'madvise_behavior_valid':
mm/madvise.c:561:7: error: 'MADV_FREE' undeclared (first use in this function)
case MADV_FREE:
^
make[1]: *** [mm/madvise.o] Error 1
make: *** [mm] Error 2

Signed-off-by: Chen Gang <[email protected]>
---
arch/alpha/include/uapi/asm/mman.h | 1 +
arch/mips/include/uapi/asm/mman.h | 1 +
arch/parisc/include/uapi/asm/mman.h | 1 +
arch/xtensa/include/uapi/asm/mman.h | 1 +
4 files changed, 4 insertions(+)

diff --git a/arch/alpha/include/uapi/asm/mman.h b/arch/alpha/include/uapi/asm/mman.h
index 0086b47..836fbd4 100644
--- a/arch/alpha/include/uapi/asm/mman.h
+++ b/arch/alpha/include/uapi/asm/mman.h
@@ -44,6 +44,7 @@
#define MADV_WILLNEED 3 /* will need these pages */
#define MADV_SPACEAVAIL 5 /* ensure resources are available */
#define MADV_DONTNEED 6 /* don't need these pages */
+#define MADV_FREE 7 /* free pages only if memory pressure */

/* common/generic parameters */
#define MADV_REMOVE 9 /* remove these pages & resources */
diff --git a/arch/mips/include/uapi/asm/mman.h b/arch/mips/include/uapi/asm/mman.h
index cfcb876..106e741 100644
--- a/arch/mips/include/uapi/asm/mman.h
+++ b/arch/mips/include/uapi/asm/mman.h
@@ -67,6 +67,7 @@
#define MADV_SEQUENTIAL 2 /* expect sequential page references */
#define MADV_WILLNEED 3 /* will need these pages */
#define MADV_DONTNEED 4 /* don't need these pages */
+#define MADV_FREE 5 /* free pages only if memory pressure */

/* common parameters: try to keep these consistent across architectures */
#define MADV_REMOVE 9 /* remove these pages & resources */
diff --git a/arch/parisc/include/uapi/asm/mman.h b/arch/parisc/include/uapi/asm/mman.h
index 294d251..6cb8db7 100644
--- a/arch/parisc/include/uapi/asm/mman.h
+++ b/arch/parisc/include/uapi/asm/mman.h
@@ -40,6 +40,7 @@
#define MADV_SPACEAVAIL 5 /* insure that resources are reserved */
#define MADV_VPS_PURGE 6 /* Purge pages from VM page cache */
#define MADV_VPS_INHERIT 7 /* Inherit parents page size */
+#define MADV_FREE 8 /* free pages only if memory pressure */

/* common/generic parameters */
#define MADV_REMOVE 9 /* remove these pages & resources */
diff --git a/arch/xtensa/include/uapi/asm/mman.h b/arch/xtensa/include/uapi/asm/mman.h
index 201aec0..1b19f25 100644
--- a/arch/xtensa/include/uapi/asm/mman.h
+++ b/arch/xtensa/include/uapi/asm/mman.h
@@ -80,6 +80,7 @@
#define MADV_SEQUENTIAL 2 /* expect sequential page references */
#define MADV_WILLNEED 3 /* will need these pages */
#define MADV_DONTNEED 4 /* don't need these pages */
+#define MADV_FREE 5 /* free pages only if memory pressure */

/* common parameters: try to keep these consistent across architectures */
#define MADV_REMOVE 9 /* remove these pages & resources */
--
1.9.3


2014-12-01 20:52:06

by Max Filippov

[permalink] [raw]
Subject: Re: [PATCH] arch: uapi: asm: mman.h: Support MADV_FREE for madvise()

On Mon, Dec 1, 2014 at 11:43 PM, Chen Gang <[email protected]> wrote:
> At present, kernel supports madvise(MADV_FREE), so can benefit to all
> related architectures (can grep MADV_WILLNEED or MADV_REMOVE in "arch/"
> to know about all related architectures).

A similar patch has been posted a while ago:

http://www.spinics.net/lists/linux-mm/msg81538.html

--
Thanks.
-- Max

2014-12-01 21:35:44

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH] arch: uapi: asm: mman.h: Support MADV_FREE for madvise()

On Mon, Dec 1, 2014 at 9:52 PM, Max Filippov <[email protected]> wrote:
> On Mon, Dec 1, 2014 at 11:43 PM, Chen Gang <[email protected]> wrote:
>> At present, kernel supports madvise(MADV_FREE), so can benefit to all
>> related architectures (can grep MADV_WILLNEED or MADV_REMOVE in "arch/"
>> to know about all related architectures).
>
> A similar patch has been posted a while ago:
>
> http://www.spinics.net/lists/linux-mm/msg81538.html

Would it be possible to use the same number everywhere?

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

2014-12-01 22:02:02

by Carlos O'Donell

[permalink] [raw]
Subject: Re: [PATCH] arch: uapi: asm: mman.h: Support MADV_FREE for madvise()

On Mon, Dec 1, 2014 at 4:35 PM, Geert Uytterhoeven <[email protected]> wrote:
> On Mon, Dec 1, 2014 at 9:52 PM, Max Filippov <[email protected]> wrote:
>> On Mon, Dec 1, 2014 at 11:43 PM, Chen Gang <[email protected]> wrote:
>>> At present, kernel supports madvise(MADV_FREE), so can benefit to all
>>> related architectures (can grep MADV_WILLNEED or MADV_REMOVE in "arch/"
>>> to know about all related architectures).
>>
>> A similar patch has been posted a while ago:
>>
>> http://www.spinics.net/lists/linux-mm/msg81538.html
>
> Would it be possible to use the same number everywhere?

Yes please. It's ridiculous that we still need patches like this.

I proposed unifying all this two years ago, but didn't follow up.

>From glibc's perspective it would be simpler if we started using the
same number everywhere.

http://www.spinics.net/lists/linux-api/msg02064.html

Cheers,
Carlos.

2014-12-02 01:49:54

by Chen Gang

[permalink] [raw]
Subject: Re: [PATCH] arch: uapi: asm: mman.h: Support MADV_FREE for madvise()

On 12/2/14 06:01, Carlos O'Donell wrote:
> On Mon, Dec 1, 2014 at 4:35 PM, Geert Uytterhoeven <[email protected]> wrote:
>> On Mon, Dec 1, 2014 at 9:52 PM, Max Filippov <[email protected]> wrote:
>>> On Mon, Dec 1, 2014 at 11:43 PM, Chen Gang <[email protected]> wrote:
>>>> At present, kernel supports madvise(MADV_FREE), so can benefit to all
>>>> related architectures (can grep MADV_WILLNEED or MADV_REMOVE in "arch/"
>>>> to know about all related architectures).
>>>
>>> A similar patch has been posted a while ago:
>>>
>>> http://www.spinics.net/lists/linux-mm/msg81538.html
>>

OK, thanks.


>> Would it be possible to use the same number everywhere?
>

For current patch, I guess, we can use '8' for it, since MADV_FREE in
asm-generic is merged just a few days ago (which is not used by user
mode), and parisc has to use '8'.

And welcome the related member's ideas.


> Yes please. It's ridiculous that we still need patches like this.
>
> I proposed unifying all this two years ago, but didn't follow up.
>
> From glibc's perspective it would be simpler if we started using the
> same number everywhere.
>
> http://www.spinics.net/lists/linux-api/msg02064.html
>

For me, we can divide it into 2 steps:

- Let MADV_FREE has the same value (about current patch).

- Let all shared MADV_* to "asm-generic" (about next patch, although I
am not quite sure whether it is executable).


Thanks.
--
Chen Gang

Open, share, and attitude like air, water, and life which God blessed

2014-12-02 01:55:35

by James Bottomley

[permalink] [raw]
Subject: Re: [PATCH] arch: uapi: asm: mman.h: Support MADV_FREE for madvise()

On Mon, 2014-12-01 at 17:01 -0500, Carlos O'Donell wrote:
> On Mon, Dec 1, 2014 at 4:35 PM, Geert Uytterhoeven <[email protected]> wrote:
> > On Mon, Dec 1, 2014 at 9:52 PM, Max Filippov <[email protected]> wrote:
> >> On Mon, Dec 1, 2014 at 11:43 PM, Chen Gang <[email protected]> wrote:
> >>> At present, kernel supports madvise(MADV_FREE), so can benefit to all
> >>> related architectures (can grep MADV_WILLNEED or MADV_REMOVE in "arch/"
> >>> to know about all related architectures).
> >>
> >> A similar patch has been posted a while ago:
> >>
> >> http://www.spinics.net/lists/linux-mm/msg81538.html
> >
> > Would it be possible to use the same number everywhere?
>
> Yes please. It's ridiculous that we still need patches like this.
>
> I proposed unifying all this two years ago, but didn't follow up.
>
> From glibc's perspective it would be simpler if we started using the
> same number everywhere.
>
> http://www.spinics.net/lists/linux-api/msg02064.html

Please co-ordinate with Andrew then because he's intent on merging this
patch:

http://marc.info/?l=linux-mm-commits&m=141747572930808

James

2014-12-02 02:01:14

by Chen Gang

[permalink] [raw]
Subject: Re: [PATCH] arch: uapi: asm: mman.h: Support MADV_FREE for madvise()

On 12/2/14 09:55, James Bottomley wrote:
> On Mon, 2014-12-01 at 17:01 -0500, Carlos O'Donell wrote:
>> On Mon, Dec 1, 2014 at 4:35 PM, Geert Uytterhoeven <[email protected]> wrote:
>>> On Mon, Dec 1, 2014 at 9:52 PM, Max Filippov <[email protected]> wrote:
>>>> On Mon, Dec 1, 2014 at 11:43 PM, Chen Gang <[email protected]> wrote:
>>>>> At present, kernel supports madvise(MADV_FREE), so can benefit to all
>>>>> related architectures (can grep MADV_WILLNEED or MADV_REMOVE in "arch/"
>>>>> to know about all related architectures).
>>>>
>>>> A similar patch has been posted a while ago:
>>>>
>>>> http://www.spinics.net/lists/linux-mm/msg81538.html
>>>
>>> Would it be possible to use the same number everywhere?
>>
>> Yes please. It's ridiculous that we still need patches like this.
>>
>> I proposed unifying all this two years ago, but didn't follow up.
>>
>> From glibc's perspective it would be simpler if we started using the
>> same number everywhere.
>>
>> http://www.spinics.net/lists/linux-api/msg02064.html
>
> Please co-ordinate with Andrew then because he's intent on merging this
> patch:
>
> http://marc.info/?l=linux-mm-commits&m=141747572930808
>

For me, we can let MADV_FREE to 8 based on the Andrew's mm tree. Since
it is about uapi, we need try our best to let it perfect.


Thanks.
--
Chen Gang

Open, share, and attitude like air, water, and life which God blessed