From: Hugh Dickins <hugh.dickins@tiscali.co.uk>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Wu Fengguang <fengguang.wu@intel.com>,
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 22:00:20 +0100 (BST) [thread overview]
Message-ID: <Pine.LNX.4.64.0909282134100.11529@sister.anvils> (raw)
In-Reply-To: <a0ea21a7cfe313202e2b51510aa5435a.squirrel@webmail-b.css.fujitsu.com>
On Tue, 29 Sep 2009, KAMEZAWA Hiroyuki wrote:
> Hugh Dickins wrote:
> > On Mon, 28 Sep 2009, KAMEZAWA Hiroyuki wrote:
> >>
> >> What I dislike is making vm_flags to be long long ;)
> >
> > Why?
> I'm sorry if my "dislike" sounds too strong.
No, not at all, I like the honesty with which you say "dislike".
>
> Every time I see long long in the kernel, my concern is
> "do I need spinlock to access this for 32bit arch ? is it safe ?".
> (And it makes binary=>disassemble=>C (by eyes) a bit difficult)
> Then, I don't like long long personally.
>
> Another reason is some other calls like test_bit() cannot be used against
> long long. (even if it's not used _now_)
>
> Maybe vm->vm_flags will not require extra locks because
> it can be protected by bigger lock as mmap_sem.
I think that even as you wrote, you guessed I wouldn't be persuaded ;)
It sounds like you've had a bad experience with a long long in the past.
We already have to have locking for vm_flags, of course we do: it's
mmap_sem, yes, though I think you'll find some exceptions which know
they have exclusive access without it.
We use ordinary logical operations on vm_flags, we don't need it to
be atomic, we don't need an additional spinlock, we don't need to use
test_bit(). It's very easy! (But irritating in a few places which
have to down_write mmap_sem for no other reason than to update vm_flags.)
> Then, please make it to be long long if its's recommended.
>
> keeping vm_flags to be 32bit may makes vma_merge() ugly.
> If so, long long is a choice.
unsigned long long is certainly the natural choice: that way leaves
freedom for people to add more flags in future without worrying about
which flags variable to put them into. I'd better explain some of my
objections to Nigel's patch in a reply to him rather than here.
I have made up a patch to convert it to unsigned long long (not gone
through all the arches yet though), mainly to try a build to see how
it works out in practice. I used a config which built most of the
non-debugging objects in mm/, things like migration and mempolicy
and memcg and ksm and so forth, but not kmemleak.
And I have to admit that the 834 bytes it added to i386 kernel text
is more than I was expecting, more than I can just brush away as "in
the noise". I don't fully understand it yet. There's a few silly
"andl $0xffffffff"s from the compiler (4.3.2), but not enough to
worry about. Typically enlarged objects grow by 4 bytes, presumably
clearing the upper half when setting vma->vm_flags, fair enough.
300 bytes of growth is in mmap.o, 100 bytes of that in do_mmap_pgoff();
yet I don't see why it needed to grow by more than, say, 12 bytes.
My current feeling is that unsigned long long is the right way to
go, but given the bloat, we shouldn't convert over until we need to:
right now we should look to save a few flags instead.
Hugh
--
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 20:54 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <4AB9A0D6.1090004@crca.org.au>
2009-09-23 20:23 ` Hugh Dickins
2009-09-25 8:30 ` Nigel Cunningham
2009-09-25 11:36 ` Hugh Dickins
2009-09-25 11:47 ` Nigel Cunningham
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 16:06 ` Mike Frysinger
2009-09-24 1:05 ` No more bits in vm_area_struct's vm_flags KAMEZAWA Hiroyuki
2009-09-25 8:34 ` Nigel Cunningham
2009-09-25 8:40 ` KAMEZAWA Hiroyuki
2009-09-25 8:48 ` Nigel Cunningham
2009-09-25 21:09 ` Joerg Roedel
2009-09-28 2:45 ` Nigel Cunningham
2009-09-28 3:04 ` KAMEZAWA Hiroyuki
2009-09-28 3:36 ` Wu Fengguang
2009-09-28 3:57 ` KAMEZAWA Hiroyuki
2009-09-28 4:37 ` Nigel Cunningham
2009-09-28 4:51 ` Wu Fengguang
2009-09-28 4:53 ` KAMEZAWA Hiroyuki
2009-09-28 5:22 ` Nigel Cunningham
2009-09-28 5:32 ` KAMEZAWA Hiroyuki
2009-09-28 21:21 ` Hugh Dickins
2009-09-28 21:33 ` Nigel Cunningham
2009-09-28 15:38 ` Hugh Dickins
2009-09-28 16:14 ` KAMEZAWA Hiroyuki
2009-09-28 21:00 ` Hugh Dickins [this message]
2009-09-28 21:22 ` Nigel Cunningham
2009-09-29 1:57 ` KAMEZAWA Hiroyuki
2009-09-29 14:22 ` Christoph Lameter
2009-10-01 10:54 ` Hugh Dickins
2009-10-01 13:47 ` Christoph Lameter
2009-10-01 11:38 ` Hugh Dickins
2009-10-02 0:42 ` KAMEZAWA Hiroyuki
2009-10-02 1:37 ` 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=Pine.LNX.4.64.0909282134100.11529@sister.anvils \
--to=hugh.dickins@tiscali.co.uk \
--cc=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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox