From: Thomas Hellstrom <thomas@tungstengraphics.com>
To: Nick Piggin <npiggin@suse.de>
Cc: Andrew Morton <akpm@osdl.org>,
Linux Memory Management <linux-mm@kvack.org>,
Linux Kernel <linux-kernel@vger.kernel.org>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>
Subject: Re: [patch 3/3] mm: fault handler to replace nopage and populate
Date: Mon, 09 Oct 2006 15:38:10 +0200 [thread overview]
Message-ID: <452A50C2.9050409@tungstengraphics.com> (raw)
In-Reply-To: <20061009121417.GA3785@wotan.suse.de>
Nick Piggin wrote:
> On Mon, Oct 09, 2006 at 10:07:50PM +1000, Benjamin Herrenschmidt wrote:
>
>>On Mon, 2006-10-09 at 13:58 +0200, Nick Piggin wrote:
>>
>>>The VM won't see that you have struct pages backing the ptes, and won't
>>>do the right refcounting or rmap stuff... But for file backed mappings,
>>>all the critical rmap stuff should be set up at mmap time, so you might
>>>have another option to simply always do the nopfn thing, as far as the
>>>VM is concerned (ie. even when you do have a struct page)
>>
>>Any reason why it wouldn't work to flip that bit on the first no_page()
>>after a migration ? A migration always involves destroying all PTEs and
>>is done with a per-object mutex held that no_page() takes too, so we can
>>be pretty sure that the first nopage can set that bit before any PTE is
>>actually inserted in the mapping after all the previous ones have been
>>invalidated... That would avoid having to walk the vma's.
>
>
> Ok I guess that would work. I was kind of thinking that one needs to
> hold the mmap_sem for writing when changing the flags, but so long
> as everyone *else* does, then I guess you can get exclusion from just
> the read lock. And your per-object mutex would prevent concurrent
> nopages from modifying it.
Wouldn't that confuse concurrent readers?
Could it be an option to make it safe for the fault handler to
temporarily drop the mmap_sem read lock given that some conditions TBD
are met?
In that case it can retake the mmap_sem write lock, do the VMA flags
modifications, downgrade and do the pte modifications using a helper, or
even use remap_pfn_range() during the time the write lock is held?
/Thomas
WARNING: multiple messages have this Message-ID (diff)
From: Thomas Hellstrom <thomas@tungstengraphics.com>
To: Nick Piggin <npiggin@suse.de>
Cc: Andrew Morton <akpm@osdl.org>,
Linux Memory Management <linux-mm@kvack.org>,
Linux Kernel <linux-kernel@vger.kernel.org>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>
Subject: Re: [patch 3/3] mm: fault handler to replace nopage and populate
Date: Mon, 09 Oct 2006 15:38:10 +0200 [thread overview]
Message-ID: <452A50C2.9050409@tungstengraphics.com> (raw)
In-Reply-To: <20061009121417.GA3785@wotan.suse.de>
Nick Piggin wrote:
> On Mon, Oct 09, 2006 at 10:07:50PM +1000, Benjamin Herrenschmidt wrote:
>
>>On Mon, 2006-10-09 at 13:58 +0200, Nick Piggin wrote:
>>
>>>The VM won't see that you have struct pages backing the ptes, and won't
>>>do the right refcounting or rmap stuff... But for file backed mappings,
>>>all the critical rmap stuff should be set up at mmap time, so you might
>>>have another option to simply always do the nopfn thing, as far as the
>>>VM is concerned (ie. even when you do have a struct page)
>>
>>Any reason why it wouldn't work to flip that bit on the first no_page()
>>after a migration ? A migration always involves destroying all PTEs and
>>is done with a per-object mutex held that no_page() takes too, so we can
>>be pretty sure that the first nopage can set that bit before any PTE is
>>actually inserted in the mapping after all the previous ones have been
>>invalidated... That would avoid having to walk the vma's.
>
>
> Ok I guess that would work. I was kind of thinking that one needs to
> hold the mmap_sem for writing when changing the flags, but so long
> as everyone *else* does, then I guess you can get exclusion from just
> the read lock. And your per-object mutex would prevent concurrent
> nopages from modifying it.
Wouldn't that confuse concurrent readers?
Could it be an option to make it safe for the fault handler to
temporarily drop the mmap_sem read lock given that some conditions TBD
are met?
In that case it can retake the mmap_sem write lock, do the VMA flags
modifications, downgrade and do the pte modifications using a helper, or
even use remap_pfn_range() during the time the write lock is held?
/Thomas
--
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:[~2006-10-09 13:38 UTC|newest]
Thread overview: 98+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-10-07 13:05 [rfc] 2.6.19-rc1: vm stuff Nick Piggin
2006-10-07 13:05 ` Nick Piggin
2006-10-07 13:05 ` [patch 1/3] mm: arch_free_page fix Nick Piggin
2006-10-07 13:05 ` Nick Piggin
2006-10-07 13:05 ` [patch 2/3] mm: locks_freed fix Nick Piggin
2006-10-07 13:05 ` Nick Piggin
2006-10-07 13:06 ` [patch 3/3] mm: add arch_alloc_page Nick Piggin
2006-10-07 13:06 ` Nick Piggin
2006-10-07 20:43 ` Andrew Morton
2006-10-07 20:43 ` Andrew Morton
2006-10-08 1:39 ` Nick Piggin
2006-10-08 1:39 ` Nick Piggin
2006-10-11 14:48 ` Martin Schwidefsky
2006-10-11 14:48 ` Martin Schwidefsky
2006-10-11 14:56 ` Nick Piggin
2006-10-11 14:56 ` Nick Piggin
2006-10-11 15:07 ` Martin Schwidefsky
2006-10-11 15:07 ` Martin Schwidefsky
2006-10-07 13:06 ` [patch 1/3] mm: fault vs invalidate/truncate check Nick Piggin
2006-10-07 13:06 ` Nick Piggin
2006-10-07 13:06 ` [patch 2/3] mm: fault vs invalidate/truncate race fix Nick Piggin
2006-10-07 13:06 ` Nick Piggin
2006-10-07 20:43 ` Andrew Morton
2006-10-07 20:43 ` Andrew Morton
2006-10-07 20:44 ` Andrew Morton
2006-10-07 20:44 ` Andrew Morton
2006-10-08 2:05 ` Nick Piggin
2006-10-08 2:05 ` Nick Piggin
2006-10-07 13:06 ` [patch 3/3] mm: fault handler to replace nopage and populate Nick Piggin
2006-10-07 13:06 ` Nick Piggin
2006-10-07 15:14 ` Jeff Garzik
2006-10-07 15:14 ` Jeff Garzik
2006-10-08 2:17 ` Nick Piggin
2006-10-08 2:17 ` Nick Piggin
2006-10-07 20:44 ` Andrew Morton
2006-10-07 20:44 ` Andrew Morton
2006-10-08 2:12 ` Nick Piggin
2006-10-08 2:12 ` Nick Piggin
2006-10-08 23:46 ` Benjamin Herrenschmidt
2006-10-08 23:46 ` Benjamin Herrenschmidt
2006-10-09 10:26 ` Nick Piggin
2006-10-09 10:26 ` Nick Piggin
2006-10-09 10:50 ` Benjamin Herrenschmidt
2006-10-09 10:50 ` Benjamin Herrenschmidt
2006-10-09 11:00 ` Nick Piggin
2006-10-09 11:00 ` Nick Piggin
2006-10-09 11:10 ` Benjamin Herrenschmidt
2006-10-09 11:10 ` Benjamin Herrenschmidt
2006-10-09 11:19 ` Nick Piggin
2006-10-09 11:19 ` Nick Piggin
2006-10-09 11:32 ` Benjamin Herrenschmidt
2006-10-09 11:32 ` Benjamin Herrenschmidt
2006-10-09 11:45 ` Nick Piggin
2006-10-09 11:45 ` Nick Piggin
2006-10-09 11:49 ` Benjamin Herrenschmidt
2006-10-09 11:49 ` Benjamin Herrenschmidt
2006-10-09 11:58 ` Nick Piggin
2006-10-09 11:58 ` Nick Piggin
2006-10-09 12:07 ` Benjamin Herrenschmidt
2006-10-09 12:07 ` Benjamin Herrenschmidt
2006-10-09 12:14 ` Nick Piggin
2006-10-09 12:14 ` Nick Piggin
2006-10-09 13:38 ` Thomas Hellstrom [this message]
2006-10-09 13:38 ` Thomas Hellstrom
2006-10-09 13:52 ` Nick Piggin
2006-10-09 13:52 ` Nick Piggin
2006-10-09 20:50 ` Benjamin Herrenschmidt
2006-10-09 20:50 ` Benjamin Herrenschmidt
2006-10-10 6:11 ` Thomas Hellström
2006-10-10 6:11 ` Thomas Hellström
2006-10-10 7:55 ` Benjamin Herrenschmidt
2006-10-10 7:55 ` Benjamin Herrenschmidt
2006-10-10 8:39 ` Thomas Hellstrom
2006-10-10 8:39 ` Thomas Hellstrom
2006-10-09 20:45 ` Benjamin Herrenschmidt
2006-10-09 20:45 ` Benjamin Herrenschmidt
2006-10-09 12:09 ` Nick Piggin
2006-10-09 12:09 ` Nick Piggin
2006-10-09 12:11 ` Benjamin Herrenschmidt
2006-10-09 12:11 ` Benjamin Herrenschmidt
2006-10-10 12:10 ` Christoph Hellwig
2006-10-10 12:10 ` Christoph Hellwig
2006-10-10 12:13 ` Nick Piggin
2006-10-10 12:13 ` Nick Piggin
2006-10-10 17:52 ` Andrew Morton
2006-10-10 17:52 ` Andrew Morton
2006-10-11 0:43 ` SPAM: " Nick Piggin
2006-10-11 0:43 ` Nick Piggin
[not found] ` <5c77e7070610120456t1bdaa95cre611080c9c953582@mail.gmail.com>
2006-10-12 12:07 ` Nick Piggin
2006-10-12 12:07 ` Nick Piggin
2006-10-14 13:28 ` Ingo Oeser
2006-10-14 13:28 ` Ingo Oeser
2006-10-15 7:54 ` Nick Piggin
2006-10-15 7:54 ` Nick Piggin
2006-10-24 21:31 ` Dave Airlie
2006-10-24 21:31 ` Dave Airlie
2006-10-26 11:09 ` Nick Piggin
2006-10-26 11:09 ` Nick Piggin
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=452A50C2.9050409@tungstengraphics.com \
--to=thomas@tungstengraphics.com \
--cc=akpm@osdl.org \
--cc=benh@kernel.crashing.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=npiggin@suse.de \
/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.