All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nigel Cunningham <ncunningham@crca.org.au>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: 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 12:45:35 +1000	[thread overview]
Message-ID: <4AC0234F.2080808@crca.org.au> (raw)
In-Reply-To: <20090925174009.79778649.kamezawa.hiroyu@jp.fujitsu.com>

Hi.

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.

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

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?

Regards,

Nigel

WARNING: multiple messages have this Message-ID (diff)
From: Nigel Cunningham <ncunningham@crca.org.au>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: 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 12:45:35 +1000	[thread overview]
Message-ID: <4AC0234F.2080808@crca.org.au> (raw)
In-Reply-To: <20090925174009.79778649.kamezawa.hiroyu@jp.fujitsu.com>

Hi.

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.

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

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?

Regards,

Nigel

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

  parent reply	other threads:[~2009-09-28  2:44 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 [this message]
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
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=4AC0234F.2080808@crca.org.au \
    --to=ncunningham@crca.org.au \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    /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.