Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-05 Thread Nick Piggin
On Wed, Mar 05, 2008 at 10:48:24AM -0800, Christoph Lameter wrote: On Wed, 5 Mar 2008, Nick Piggin wrote: Um, it's bound to the *Linux page tables*, yes. And I have no idea why you would use the paravirt ops for this. paravirt ops allows interception of page table operations? Maybe

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-04 Thread Jack Steiner
On Tue, Mar 04, 2008 at 11:35:32AM +0100, Peter Zijlstra wrote: On Mon, 2008-03-03 at 13:15 -0600, Jack Steiner wrote: I haven't thought about locking requirements for the radix tree. Most accesses would be read-only updates infrequent. Any chance of an RCU-based radix

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-04 Thread Nick Piggin
On Mon, Mar 03, 2008 at 11:01:22AM -0800, Christoph Lameter wrote: On Mon, 3 Mar 2008, Nick Piggin wrote: 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

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-03 Thread Andrea Arcangeli
On Mon, Mar 03, 2008 at 04:29:34AM +0100, Nick Piggin wrote: to something I prefer. Others may not, but I'll post them for debate anyway. Sure, thanks! 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

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-03 Thread Nick Piggin
On Mon, Mar 03, 2008 at 01:51:53PM +0100, Andrea Arcangeli wrote: On Mon, Mar 03, 2008 at 04:29:34AM +0100, Nick Piggin wrote: to something I prefer. Others may not, but I'll post them for debate anyway. Sure, thanks! I didn't drop invalidate_page, because invalidate_range_begin/end

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-03 Thread Andrea Arcangeli
On Mon, Mar 03, 2008 at 02:10:17PM +0100, Nick Piggin wrote: 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). Yes, it's just a GRU problem, it tries to optimize performance by calling follow_page

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-03 Thread Jack Steiner
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: On Mon, Mar 03, 2008 at 04:29:34AM +0100, Nick Piggin wrote: to something I prefer. Others may not, but I'll post them for debate anyway. Sure, thanks!

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-03 Thread Nick Piggin
On Mon, Mar 03, 2008 at 09:18:59AM -0600, Jack Steiner wrote: 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: On Mon, Mar 03, 2008 at 04:29:34AM +0100, Nick Piggin wrote: to something I prefer. Others may not,

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-03 Thread Jack Steiner
On Mon, Mar 03, 2008 at 05:59:10PM +0100, Nick Piggin wrote: On Mon, Mar 03, 2008 at 09:18:59AM -0600, Jack Steiner wrote: 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: On Mon, Mar 03, 2008 at 04:29:34AM

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-03 Thread Avi Kivity
Jack Steiner wrote: The range invalidates have a performance advantage for the GRU. TLB invalidates on the GRU are relatively slow (usec) and interfere somewhat with the performance of other active GRU instructions. Invalidating a large chunk of addresses with a single GRU TLBINVAL

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-03 Thread Jack Steiner
On Mon, Mar 03, 2008 at 08:09:49PM +0200, Avi Kivity wrote: Jack Steiner wrote: The range invalidates have a performance advantage for the GRU. TLB invalidates on the GRU are relatively slow (usec) and interfere somewhat with the performance of other active GRU instructions. Invalidating a

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-03 Thread Nick Piggin
On Mon, Mar 03, 2008 at 12:06:05PM -0600, Jack Steiner wrote: On Mon, Mar 03, 2008 at 05:59:10PM +0100, Nick Piggin wrote: 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

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-03 Thread Christoph Lameter
On Mon, 3 Mar 2008, Nick Piggin wrote: 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

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-03 Thread Christoph Lameter
On Mon, 3 Mar 2008, Nick Piggin wrote: It is going to be really easy to add more weird and wonderful notifiers later that deviate from our standard TLB model. It would be much harder to remove them. So I really want to see everyone conform to this model first. Numbers and comparisons can be

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-03 Thread Christoph Lameter
On Mon, 3 Mar 2008, Nick Piggin wrote: Move definition of struct mmu_notifier and struct mmu_notifier_ops under CONFIG_MMU_NOTIFIER to ensure they doesn't get dereferenced when they don't make sense. The callbacks take a mmu_notifier parameter. So how does this compile for !MMU_NOTIFIER?

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-03 Thread Jack Steiner
On Mon, Mar 03, 2008 at 07:45:17PM +0100, Nick Piggin wrote: On Mon, Mar 03, 2008 at 12:06:05PM -0600, Jack Steiner wrote: On Mon, Mar 03, 2008 at 05:59:10PM +0100, Nick Piggin wrote: Maintaining a long-term reference on a page is a problem. The GRU does not currently maintain

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-03 Thread Andrea Arcangeli
On Mon, Mar 03, 2008 at 11:01:22AM -0800, Christoph Lameter wrote: API still has rcu issues and the example given for making things sleepable is only working for the aging callback. The most important callback is for try_to_unmao and page_mkclean. This means the API is still not generic

Re: [kvm-devel] [PATCH] mmu notifiers #v8 + xpmem

2008-03-02 Thread Andrea Arcangeli
Here an example of the futher orthogonal work to do on top of #v8 during .26-rc to make the whole mmu notifier API sleep capable. 1) Every single ptep_clear_flush_young_notify and ptep_clear_flush_notify must be converted like the below. The below is the conversion of a single one. do_wp_page has

[kvm-devel] [PATCH] mmu notifiers #v8

2008-03-02 Thread Andrea Arcangeli
Difference between #v7 and #v8: 1) s/age_page/clear_flush_young/ (Nick's suggestion) 2) macro fix (Andrew) 3) move release before final unmap_vmas (for GRU, Jack/Christoph) 4) microoptimize mmu_notifier_unregister (Christoph) 5) use mmap_sem for registration serialization (Christoph) The

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-02 Thread Nick Piggin
On Sun, Mar 02, 2008 at 04:54:57PM +0100, Andrea Arcangeli wrote: Difference between #v7 and #v8: 1) s/age_page/clear_flush_young/ (Nick's suggestion) 2) macro fix (Andrew) 3) move release before final unmap_vmas (for GRU, Jack/Christoph) 4) microoptimize mmu_notifier_unregister (Christoph)

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-02 Thread Nick Piggin
On Sun, Mar 02, 2008 at 04:54:57PM +0100, Andrea Arcangeli wrote: Difference between #v7 and #v8: [patch] mmu-v8: demacro Remove the macros from mmu_notifier.h, in favour of functions. This requires untangling the include order circular dependencies as well, so just remove struct

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-02 Thread Nick Piggin
On Sun, Mar 02, 2008 at 04:54:57PM +0100, Andrea Arcangeli wrote: Difference between #v7 and #v8: This one on top of the previous patch [patch] mmu-v8: typesafe Move definition of struct mmu_notifier and struct mmu_notifier_ops under CONFIG_MMU_NOTIFIER to ensure they doesn't get dereferenced

Re: [kvm-devel] [PATCH] mmu notifiers #v8

2008-03-02 Thread Nick Piggin
On Sun, Mar 02, 2008 at 04:54:57PM +0100, Andrea Arcangeli wrote: Difference between #v7 and #v8: Here is just a couple of checkpatch fixes on top of the last patches. Index: linux-2.6/include/linux/mmu_notifier.h === ---