Thread (113 messages) 113 messages, 10 authors, 2008-03-19

[ofa-general] Re: [PATCH] mmu notifiers #v8

From: Jack Steiner <hidden>
Date: 2008-03-03 15:19:27
Also in: linux-mm, lkml

On Mon, Mar 03, 2008 at 02:10:17PM +0100, Nick Piggin wrote:
On Mon, Mar 03, 2008 at 01:51:53PM +0100, Andrea Arcangeli wrote:
quoted
On Mon, Mar 03, 2008 at 04:29:34AM +0100, Nick Piggin wrote:
quoted
to something I prefer. Others may not, but I'll post them for debate
anyway.
Sure, thanks!
quoted
quoted
I didn't drop invalidate_page, because invalidate_range_begin/end
would be slower for usages like KVM/GRU (we don't need a begin/end
there because where invalidate_page is called, the VM holds a
reference on the page). do_wp_page should also use invalidate_page
since it can free the page after dropping the PT lock without losing
any performance (that's not true for the places where invalidate_range
is called).
I'm still not completely happy with this. I had a very quick look
at the GRU driver, but I don't see why it can't be implemented
more like the regular TLB model, and have TLB insertions depend on
the linux pte, and do invalidates _after_ restricting permissions
to the pte.

Ie. I'd still like to get rid of invalidate_range_begin, and get
rid of invalidate calls from places where permissions are relaxed.
_begin exists because by the time _end is called, the VM already
dropped the reference on the page. This way we can do a single
invalidate no matter how large the range is. I don't see ways to
remove _begin while still invoking _end a single time for the whole
range.
Is this just a GRU problem? Can't we just require them to take a ref
on the page (IIRC Jack said GRU could be changed to more like a TLB
model).
Maintaining a long-term reference on a page is a problem. The GRU does not
currently maintain tables to track the pages for which dropins have been done.

The GRU has a large internal TLB and is designed to reference up to 8PB of
memory. The size of the tables to track this many referenced pages would be
a problem (at best).
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help