From: Wu Fengguang <fengguang.wu@intel.com>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Nigel Cunningham <ncunningham@crca.org.au>,
LKML <linux-kernel@vger.kernel.org>,
"linux-mm@kvack.org" <linux-mm@kvack.org>
Subject: Re: No more bits in vm_area_struct's vm_flags.
Date: Mon, 28 Sep 2009 11:36:24 +0800 [thread overview]
Message-ID: <20090928033624.GA11191@localhost> (raw)
In-Reply-To: <20090928120450.c2d8a4e2.kamezawa.hiroyu@jp.fujitsu.com>
On Mon, Sep 28, 2009 at 11:04:50AM +0800, KAMEZAWA Hiroyuki wrote:
> Hi,
>
> On Mon, 28 Sep 2009 12:45:35 +1000
> Nigel Cunningham <ncunningham@crca.org.au> wrote:
> > KAMEZAWA Hiroyuki wrote:
> > > On Fri, 25 Sep 2009 18:34:56 +1000
> > > Nigel Cunningham <ncunningham@crca.org.au> wrote:
> > >> Hi.
> > >>
> > >> KAMEZAWA Hiroyuki wrote:
> > >>>> I have some code in TuxOnIce that needs a bit too (explicitly mark the
> > >>>> VMA as needing to be atomically copied, for GEM objects), and am not
> > >>>> sure what the canonical way to proceed is. Should a new unsigned long be
> > >>>> added? The difficulty I see with that is that my flag was used in
> > >>>> shmem_file_setup's flags parameter (drm_gem_object_alloc), so that
> > >>>> function would need an extra parameter too..
> > >>> Hmm, how about adding vma->vm_flags2 ?
> > >> The difficulty there is that some functions pass these flags as arguments.
> > >>
> > > Ah yes. But I wonder some special flags, which is rarey used, can be moved
> > > to vm_flags2...
> > >
> > > For example,
> > >
> > > #define VM_SEQ_READ 0x00008000 /* App will access data sequentially */
> > > #define VM_RAND_READ 0x00010000 /* App will not benefit from clustered reads */
> > > are all capsuled under
> > > mm.h
> > > 117 #define VM_READHINTMASK (VM_SEQ_READ | VM_RAND_READ)
> > > 118 #define VM_ClearReadHint(v) (v)->vm_flags &= ~VM_READHINTMASK
> > > 119 #define VM_NormalReadHint(v) (!((v)->vm_flags & VM_READHINTMASK))
> > > 120 #define VM_SequentialReadHint(v) ((v)->vm_flags & VM_SEQ_READ)
> > > 121 #define VM_RandomReadHint(v) ((v)->vm_flags & VM_RAND_READ)
> > >
> > > Or
> > >
> > > 105 #define VM_PFN_AT_MMAP 0x40000000 /* PFNMAP vma that is fully mapped at mmap time */
> > > is only used under special situation.
> > >
> > > etc..
> > >
> > > They'll be able to be moved to other(new) flag field, IIUC.
> >
> CCing Fengguang.
>
> Breif Summary of thread:
> Now, vm->vm_flags has no more avialable bits. Then, I proposed Nigel
> to move some flags from vm->vm_flags to other flags as vm->vm_????.
> It seems readahead-hints are candidates for this......
Agreed and thanks for the summary.
> > I'm working on a patch to do this, and am looking at is_mergeable_vma,
> > which is invoked via can_vma_merge_after from vma_merge from
> > madvise_behaviour (which potentially modifies these hint flags). Should
> > those hints be considered in that function? (Do I need to pass the hints
> > in as well and check they're equal?)
>
> I think it should be handled.
Agreed.
> But, yes it implies to add a new argument to several functions in mmap.c
> and maybe a patch will be ugly.
>
> How about addding this check ?
>
> is_mergeable_vma(...)
> ....
> if (vma->vm_hints)
> return 0;
>
> And not calling vma_merge() at madvice(ACCESS_PATTERN_HINT).
>
> I wonder there are little chances when madice(ACCESS_PATTERN_HINT) is
> given against mapped-file-vma...
Me wonder too. The access hints should be rarely used.
A simple solution is reasonable for them.
But what if more flags going into vm_hints in future?
Thanks,
Fengguang
> >
> > By the way, VM_ClearReadHint and VM_NormalReadHint are currently unused.
> > madvise_behaviour manipulates the flags directly (in preparing
> > potential replacement values). Not sure if something should be done
> > about that.
> >
> > By the way #2, in response to the later message in this thread, I'm
> > calling the new var vma->vm_hints, and have put it at the end of the
> > struct at the moment. Is that a good place?
> >
> I think it seems nice. But please before entries under CONFIG.
> How about just after vm_private_data ?
>
> Regards,
> -Kame
>
WARNING: multiple messages have this Message-ID (diff)
From: Wu Fengguang <fengguang.wu@intel.com>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Nigel Cunningham <ncunningham@crca.org.au>,
LKML <linux-kernel@vger.kernel.org>,
"linux-mm@kvack.org" <linux-mm@kvack.org>
Subject: Re: No more bits in vm_area_struct's vm_flags.
Date: Mon, 28 Sep 2009 11:36:24 +0800 [thread overview]
Message-ID: <20090928033624.GA11191@localhost> (raw)
In-Reply-To: <20090928120450.c2d8a4e2.kamezawa.hiroyu@jp.fujitsu.com>
On Mon, Sep 28, 2009 at 11:04:50AM +0800, KAMEZAWA Hiroyuki wrote:
> Hi,
>
> On Mon, 28 Sep 2009 12:45:35 +1000
> Nigel Cunningham <ncunningham@crca.org.au> wrote:
> > KAMEZAWA Hiroyuki wrote:
> > > On Fri, 25 Sep 2009 18:34:56 +1000
> > > Nigel Cunningham <ncunningham@crca.org.au> wrote:
> > >> Hi.
> > >>
> > >> KAMEZAWA Hiroyuki wrote:
> > >>>> I have some code in TuxOnIce that needs a bit too (explicitly mark the
> > >>>> VMA as needing to be atomically copied, for GEM objects), and am not
> > >>>> sure what the canonical way to proceed is. Should a new unsigned long be
> > >>>> added? The difficulty I see with that is that my flag was used in
> > >>>> shmem_file_setup's flags parameter (drm_gem_object_alloc), so that
> > >>>> function would need an extra parameter too..
> > >>> Hmm, how about adding vma->vm_flags2 ?
> > >> The difficulty there is that some functions pass these flags as arguments.
> > >>
> > > Ah yes. But I wonder some special flags, which is rarey used, can be moved
> > > to vm_flags2...
> > >
> > > For example,
> > >
> > > #define VM_SEQ_READ 0x00008000 /* App will access data sequentially */
> > > #define VM_RAND_READ 0x00010000 /* App will not benefit from clustered reads */
> > > are all capsuled under
> > > mm.h
> > > 117 #define VM_READHINTMASK (VM_SEQ_READ | VM_RAND_READ)
> > > 118 #define VM_ClearReadHint(v) (v)->vm_flags &= ~VM_READHINTMASK
> > > 119 #define VM_NormalReadHint(v) (!((v)->vm_flags & VM_READHINTMASK))
> > > 120 #define VM_SequentialReadHint(v) ((v)->vm_flags & VM_SEQ_READ)
> > > 121 #define VM_RandomReadHint(v) ((v)->vm_flags & VM_RAND_READ)
> > >
> > > Or
> > >
> > > 105 #define VM_PFN_AT_MMAP 0x40000000 /* PFNMAP vma that is fully mapped at mmap time */
> > > is only used under special situation.
> > >
> > > etc..
> > >
> > > They'll be able to be moved to other(new) flag field, IIUC.
> >
> CCing Fengguang.
>
> Breif Summary of thread:
> Now, vm->vm_flags has no more avialable bits. Then, I proposed Nigel
> to move some flags from vm->vm_flags to other flags as vm->vm_????.
> It seems readahead-hints are candidates for this......
Agreed and thanks for the summary.
> > I'm working on a patch to do this, and am looking at is_mergeable_vma,
> > which is invoked via can_vma_merge_after from vma_merge from
> > madvise_behaviour (which potentially modifies these hint flags). Should
> > those hints be considered in that function? (Do I need to pass the hints
> > in as well and check they're equal?)
>
> I think it should be handled.
Agreed.
> But, yes it implies to add a new argument to several functions in mmap.c
> and maybe a patch will be ugly.
>
> How about addding this check ?
>
> is_mergeable_vma(...)
> ....
> if (vma->vm_hints)
> return 0;
>
> And not calling vma_merge() at madvice(ACCESS_PATTERN_HINT).
>
> I wonder there are little chances when madice(ACCESS_PATTERN_HINT) is
> given against mapped-file-vma...
Me wonder too. The access hints should be rarely used.
A simple solution is reasonable for them.
But what if more flags going into vm_hints in future?
Thanks,
Fengguang
> >
> > By the way, VM_ClearReadHint and VM_NormalReadHint are currently unused.
> > madvise_behaviour manipulates the flags directly (in preparing
> > potential replacement values). Not sure if something should be done
> > about that.
> >
> > By the way #2, in response to the later message in this thread, I'm
> > calling the new var vma->vm_hints, and have put it at the end of the
> > struct at the moment. Is that a good place?
> >
> I think it seems nice. But please before entries under CONFIG.
> How about just after vm_private_data ?
>
> Regards,
> -Kame
>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2009-09-28 3:36 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-23 4:15 No more bits in vm_area_struct's vm_flags Nigel Cunningham
2009-09-23 20:23 ` Hugh Dickins
2009-09-23 20:23 ` Hugh Dickins
2009-09-25 8:30 ` Nigel Cunningham
2009-09-25 8:30 ` Nigel Cunningham
2009-09-25 11:36 ` Hugh Dickins
2009-09-25 11:36 ` Hugh Dickins
2009-09-25 11:47 ` Nigel Cunningham
2009-09-25 11:47 ` Nigel Cunningham
2009-09-30 12:02 ` Pavel Machek
2009-09-30 12:02 ` Pavel Machek
2009-09-30 13:08 ` swsusp on nommu, was 'Re: No more bits in vm_area_struct's vm_flags.' Johannes Weiner
2009-09-30 13:08 ` Johannes Weiner
2009-09-30 16:06 ` Mike Frysinger
2009-09-30 16:06 ` Mike Frysinger
2009-09-24 1:05 ` No more bits in vm_area_struct's vm_flags KAMEZAWA Hiroyuki
2009-09-24 1:05 ` KAMEZAWA Hiroyuki
2009-09-25 8:34 ` Nigel Cunningham
2009-09-25 8:34 ` Nigel Cunningham
2009-09-25 8:40 ` KAMEZAWA Hiroyuki
2009-09-25 8:40 ` KAMEZAWA Hiroyuki
2009-09-25 8:48 ` Nigel Cunningham
2009-09-25 8:48 ` Nigel Cunningham
2009-09-25 21:09 ` Joerg Roedel
2009-09-25 21:09 ` Joerg Roedel
2009-09-28 2:45 ` Nigel Cunningham
2009-09-28 2:45 ` Nigel Cunningham
2009-09-28 3:04 ` KAMEZAWA Hiroyuki
2009-09-28 3:04 ` KAMEZAWA Hiroyuki
2009-09-28 3:36 ` Wu Fengguang [this message]
2009-09-28 3:36 ` Wu Fengguang
2009-09-28 3:57 ` KAMEZAWA Hiroyuki
2009-09-28 3:57 ` KAMEZAWA Hiroyuki
2009-09-28 4:37 ` Nigel Cunningham
2009-09-28 4:37 ` Nigel Cunningham
2009-09-28 4:51 ` Wu Fengguang
2009-09-28 4:51 ` Wu Fengguang
2009-09-28 4:53 ` KAMEZAWA Hiroyuki
2009-09-28 4:53 ` KAMEZAWA Hiroyuki
2009-09-28 5:22 ` Nigel Cunningham
2009-09-28 5:22 ` Nigel Cunningham
2009-09-28 5:32 ` KAMEZAWA Hiroyuki
2009-09-28 5:32 ` KAMEZAWA Hiroyuki
2009-09-28 21:21 ` Hugh Dickins
2009-09-28 21:21 ` Hugh Dickins
2009-09-28 21:33 ` Nigel Cunningham
2009-09-28 21:33 ` Nigel Cunningham
2009-09-28 15:38 ` Hugh Dickins
2009-09-28 15:38 ` Hugh Dickins
2009-09-28 16:14 ` KAMEZAWA Hiroyuki
2009-09-28 16:14 ` KAMEZAWA Hiroyuki
2009-09-28 21:00 ` Hugh Dickins
2009-09-28 21:00 ` Hugh Dickins
2009-09-28 21:22 ` Nigel Cunningham
2009-09-28 21:22 ` Nigel Cunningham
2009-09-29 1:57 ` KAMEZAWA Hiroyuki
2009-09-29 1:57 ` KAMEZAWA Hiroyuki
2009-09-29 14:22 ` Christoph Lameter
2009-09-29 14:22 ` Christoph Lameter
2009-10-01 10:54 ` Hugh Dickins
2009-10-01 10:54 ` Hugh Dickins
2009-10-01 13:47 ` Christoph Lameter
2009-10-01 13:47 ` Christoph Lameter
2009-10-01 11:38 ` Hugh Dickins
2009-10-01 11:38 ` Hugh Dickins
2009-10-02 0:42 ` KAMEZAWA Hiroyuki
2009-10-02 0:42 ` KAMEZAWA Hiroyuki
2009-10-02 1:37 ` KAMEZAWA Hiroyuki
2009-10-02 1:37 ` KAMEZAWA Hiroyuki
2009-10-02 2:39 ` KAMEZAWA Hiroyuki
2009-10-02 2:39 ` KAMEZAWA Hiroyuki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090928033624.GA11191@localhost \
--to=fengguang.wu@intel.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ncunningham@crca.org.au \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.