All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gerd Hoffmann <kraxel@redhat.com>
To: Andrea Arcangeli <andrea@qumranet.com>
Cc: Christoph Lameter <clameter@sgi.com>,
	Andrew Morton <akpm@osdl.org>, Nick Piggin <npiggin@suse.de>,
	kvm-devel@lists.sourceforge.net,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	steiner@sgi.com, linux-kernel@vger.kernel.org,
	Avi Kivity <avi@qumranet.com>,
	linux-mm@kvack.org, daniel.blueman@quadrics.com, holt@sgi.com,
	Hugh Dickins <hugh@veritas.com>
Subject: Re: [kvm-devel] [PATCH] export notifier #1
Date: Wed, 23 Jan 2008 18:47:54 +0100	[thread overview]
Message-ID: <47977DCA.3040904@redhat.com> (raw)
In-Reply-To: <20080123154130.GC7141@v2.random>

Andrea Arcangeli wrote:
> Like Avi said, Xen is dealing with the linux pte only, so there's no
> racy smp page fault to serialize against. Perhaps we can add another
> notifier for Xen though.
> 
> But I think it's still not enough for Xen to have a method called
> before the ptep_clear_flush: rmap.c would get confused in
> page_mkclean_one for example.

The current code sets a bunch of vma flags (VM_RESERVED, VM_DONTCOPY,
VM_FOREIGN) so the VM doesn't try to handle those special mapping.  IIRC
one of them was needed to not make rmap unhappy.

> Nevertheless if you've any idea on how to use the notifiers for Xen
> I'd be glad to help. Perhaps one workable way to change my patch to
> work for you could be to pass the retval of ptep_clear_flush to the
> notifiers themself. something like:
> 
> #define ptep_clear_flush(__vma, __address, __ptep)			\
> ({									\
> 	pte_t __pte;							\
> 	__pte = ptep_get_and_clear((__vma)->vm_mm, __address, __ptep);	\
> 	flush_tlb_page(__vma, __address);				\
> 	__pte = mmu_notifier(invalidate_page, (__vma)->vm_mm, __address, __pte, __ptep);	\
> 	__pte;								\
> })

Would not work.  Need to pass a pointer to the pte so the xen hypervisor
can do unmap (aka pte_clear) and grant release as atomic operation.
Thus passing the value of the pte entry isn't good enougth.

Another maybe workable approach for Xen is to go through pv_ops
(although pte_clear doesn't go through pv_ops right now, so this would
be an additional hook too ...).

cheers,
  Gerd


WARNING: multiple messages have this Message-ID (diff)
From: Gerd Hoffmann <kraxel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Andrea Arcangeli <andrea-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
Cc: Andrew Morton <akpm-3NddpPZAyC0@public.gmane.org>,
	Nick Piggin <npiggin-l3A5Bk7waGM@public.gmane.org>,
	kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
	Benjamin Herrenschmidt
	<benh-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r@public.gmane.org>,
	steiner-sJ/iWh9BUns@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>,
	linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org,
	daniel.blueman-xqY44rlHlBpWk0Htik3J/w@public.gmane.org,
	holt-sJ/iWh9BUns@public.gmane.org,
	Hugh Dickins <hugh-DTz5qymZ9yRBDgjK7y7TUQ@public.gmane.org>,
	Christoph Lameter <clameter-sJ/iWh9BUns@public.gmane.org>
Subject: Re: [PATCH] export notifier #1
Date: Wed, 23 Jan 2008 18:47:54 +0100	[thread overview]
Message-ID: <47977DCA.3040904@redhat.com> (raw)
In-Reply-To: <20080123154130.GC7141-lysg2Xt5kKMAvxtiuMwx3w@public.gmane.org>

Andrea Arcangeli wrote:
> Like Avi said, Xen is dealing with the linux pte only, so there's no
> racy smp page fault to serialize against. Perhaps we can add another
> notifier for Xen though.
> 
> But I think it's still not enough for Xen to have a method called
> before the ptep_clear_flush: rmap.c would get confused in
> page_mkclean_one for example.

The current code sets a bunch of vma flags (VM_RESERVED, VM_DONTCOPY,
VM_FOREIGN) so the VM doesn't try to handle those special mapping.  IIRC
one of them was needed to not make rmap unhappy.

> Nevertheless if you've any idea on how to use the notifiers for Xen
> I'd be glad to help. Perhaps one workable way to change my patch to
> work for you could be to pass the retval of ptep_clear_flush to the
> notifiers themself. something like:
> 
> #define ptep_clear_flush(__vma, __address, __ptep)			\
> ({									\
> 	pte_t __pte;							\
> 	__pte = ptep_get_and_clear((__vma)->vm_mm, __address, __ptep);	\
> 	flush_tlb_page(__vma, __address);				\
> 	__pte = mmu_notifier(invalidate_page, (__vma)->vm_mm, __address, __pte, __ptep);	\
> 	__pte;								\
> })

Would not work.  Need to pass a pointer to the pte so the xen hypervisor
can do unmap (aka pte_clear) and grant release as atomic operation.
Thus passing the value of the pte entry isn't good enougth.

Another maybe workable approach for Xen is to go through pv_ops
(although pte_clear doesn't go through pv_ops right now, so this would
be an additional hook too ...).

cheers,
  Gerd


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

WARNING: multiple messages have this Message-ID (diff)
From: Gerd Hoffmann <kraxel@redhat.com>
To: Andrea Arcangeli <andrea@qumranet.com>
Cc: Christoph Lameter <clameter@sgi.com>,
	Andrew Morton <akpm@osdl.org>, Nick Piggin <npiggin@suse.de>,
	kvm-devel@lists.sourceforge.net,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	steiner@sgi.com, linux-kernel@vger.kernel.org,
	Avi Kivity <avi@qumranet.com>,
	linux-mm@kvack.org, daniel.blueman@quadrics.com, holt@sgi.com,
	Hugh Dickins <hugh@veritas.com>
Subject: Re: [kvm-devel] [PATCH] export notifier #1
Date: Wed, 23 Jan 2008 18:47:54 +0100	[thread overview]
Message-ID: <47977DCA.3040904@redhat.com> (raw)
In-Reply-To: <20080123154130.GC7141@v2.random>

Andrea Arcangeli wrote:
> Like Avi said, Xen is dealing with the linux pte only, so there's no
> racy smp page fault to serialize against. Perhaps we can add another
> notifier for Xen though.
> 
> But I think it's still not enough for Xen to have a method called
> before the ptep_clear_flush: rmap.c would get confused in
> page_mkclean_one for example.

The current code sets a bunch of vma flags (VM_RESERVED, VM_DONTCOPY,
VM_FOREIGN) so the VM doesn't try to handle those special mapping.  IIRC
one of them was needed to not make rmap unhappy.

> Nevertheless if you've any idea on how to use the notifiers for Xen
> I'd be glad to help. Perhaps one workable way to change my patch to
> work for you could be to pass the retval of ptep_clear_flush to the
> notifiers themself. something like:
> 
> #define ptep_clear_flush(__vma, __address, __ptep)			\
> ({									\
> 	pte_t __pte;							\
> 	__pte = ptep_get_and_clear((__vma)->vm_mm, __address, __ptep);	\
> 	flush_tlb_page(__vma, __address);				\
> 	__pte = mmu_notifier(invalidate_page, (__vma)->vm_mm, __address, __pte, __ptep);	\
> 	__pte;								\
> })

Would not work.  Need to pass a pointer to the pte so the xen hypervisor
can do unmap (aka pte_clear) and grant release as atomic operation.
Thus passing the value of the pte entry isn't good enougth.

Another maybe workable approach for Xen is to go through pv_ops
(although pte_clear doesn't go through pv_ops right now, so this would
be an additional hook too ...).

cheers,
  Gerd

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

  reply	other threads:[~2008-01-23 17:49 UTC|newest]

Thread overview: 192+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-13 16:24 [PATCH] mmu notifiers #v2 Andrea Arcangeli
2008-01-13 16:24 ` Andrea Arcangeli
2008-01-13 16:24 ` Andrea Arcangeli
2008-01-13 21:11 ` Benjamin Herrenschmidt
2008-01-13 21:11   ` Benjamin Herrenschmidt
2008-01-13 21:11   ` Benjamin Herrenschmidt
2008-01-14 20:02 ` Christoph Lameter
2008-01-14 20:02   ` Christoph Lameter
2008-01-14 20:02   ` Christoph Lameter
2008-01-15  4:28   ` Benjamin Herrenschmidt
2008-01-15  4:28     ` Benjamin Herrenschmidt
2008-01-15  4:28     ` Benjamin Herrenschmidt
2008-01-15 12:44   ` Andrea Arcangeli
2008-01-15 12:44     ` Andrea Arcangeli
2008-01-15 12:44     ` Andrea Arcangeli
2008-01-15 20:18     ` Benjamin Herrenschmidt
2008-01-15 20:18       ` Benjamin Herrenschmidt
2008-01-15 20:18       ` Benjamin Herrenschmidt
2008-01-16  1:06       ` Andrea Arcangeli
2008-01-16  1:06         ` Andrea Arcangeli
2008-01-16  9:01 ` Brice Goglin
2008-01-16  9:01   ` Brice Goglin
2008-01-16 10:19   ` Andrea Arcangeli
2008-01-16 10:19     ` Andrea Arcangeli
2008-01-16 17:42 ` Rik van Riel
2008-01-16 17:42   ` Rik van Riel
2008-01-16 17:42   ` Rik van Riel
2008-01-16 17:48   ` Izik Eidus
2008-01-16 17:48     ` Izik Eidus
2008-01-16 17:48     ` Izik Eidus
2008-01-17 16:23     ` Andrea Arcangeli
2008-01-17 16:23       ` Andrea Arcangeli
2008-01-17 16:23       ` Andrea Arcangeli
2008-01-17 18:21       ` Izik Eidus
2008-01-17 18:21         ` Izik Eidus
2008-01-17 19:32         ` Andrea Arcangeli
2008-01-17 19:32           ` Andrea Arcangeli
2008-01-17 19:32           ` Andrea Arcangeli
2008-01-21 12:52           ` [PATCH] mmu notifiers #v3 Andrea Arcangeli
2008-01-21 12:52             ` Andrea Arcangeli
2008-01-21 12:52             ` Andrea Arcangeli
2008-01-22  2:21             ` Rik van Riel
2008-01-22  2:21               ` Rik van Riel
2008-01-22  2:21               ` Rik van Riel
2008-01-22 14:12             ` [kvm-devel] " Avi Kivity
2008-01-22 14:12               ` Avi Kivity
2008-01-22 14:12               ` Avi Kivity
2008-01-22 14:43               ` [kvm-devel] " Andrea Arcangeli
2008-01-22 14:43                 ` Andrea Arcangeli
2008-01-22 14:43                 ` Andrea Arcangeli
2008-01-22 20:08                 ` [kvm-devel] [PATCH] mmu notifiers #v4 Andrea Arcangeli
2008-01-22 20:08                   ` Andrea Arcangeli
2008-01-22 20:08                   ` Andrea Arcangeli
2008-01-22 20:34                   ` [kvm-devel] [PATCH] export notifier #1 Christoph Lameter
2008-01-22 20:34                     ` Christoph Lameter
2008-01-22 20:34                     ` Christoph Lameter
2008-01-22 22:31                     ` [kvm-devel] " Andrea Arcangeli
2008-01-22 22:31                       ` Andrea Arcangeli
2008-01-22 22:31                       ` Andrea Arcangeli
2008-01-22 22:53                       ` [kvm-devel] " Christoph Lameter
2008-01-22 22:53                         ` Christoph Lameter
2008-01-22 22:53                         ` Christoph Lameter
2008-01-23 10:27                         ` [kvm-devel] " Avi Kivity
2008-01-23 10:27                           ` Avi Kivity
2008-01-23 10:27                           ` Avi Kivity
2008-01-23 10:52                           ` [kvm-devel] " Robin Holt
2008-01-23 10:52                             ` Robin Holt
2008-01-23 10:52                             ` Robin Holt
2008-01-23 12:04                             ` [kvm-devel] " Andrea Arcangeli
2008-01-23 12:04                               ` Andrea Arcangeli
2008-01-23 12:34                               ` Robin Holt
2008-01-23 12:34                                 ` Robin Holt
2008-01-23 12:34                                 ` Robin Holt
2008-01-23 19:48                               ` [kvm-devel] " Christoph Lameter
2008-01-23 19:48                                 ` Christoph Lameter
2008-01-23 19:48                                 ` Christoph Lameter
2008-01-23 19:58                                 ` [kvm-devel] " Robin Holt
2008-01-23 19:58                                   ` Robin Holt
2008-01-23 19:58                                   ` Robin Holt
2008-01-23 19:47                             ` [kvm-devel] " Christoph Lameter
2008-01-23 19:47                               ` Christoph Lameter
2008-01-23 19:47                               ` Christoph Lameter
2008-01-24  5:56                               ` [kvm-devel] " Avi Kivity
2008-01-24  5:56                                 ` Avi Kivity
2008-01-24  5:56                                 ` Avi Kivity
2008-01-24 12:26                                 ` [kvm-devel] " Andrea Arcangeli
2008-01-24 12:26                                   ` Andrea Arcangeli
2008-01-24 12:26                                   ` Andrea Arcangeli
2008-01-24 12:34                                   ` [kvm-devel] " Avi Kivity
2008-01-24 12:34                                     ` Avi Kivity
2008-01-24 12:34                                     ` Avi Kivity
2008-01-23 11:41                         ` [kvm-devel] " Andrea Arcangeli
2008-01-23 11:41                           ` Andrea Arcangeli
2008-01-23 11:41                           ` Andrea Arcangeli
2008-01-23 12:32                           ` [kvm-devel] " Robin Holt
2008-01-23 12:32                             ` Robin Holt
2008-01-23 12:32                             ` Robin Holt
2008-01-23 17:33                             ` [kvm-devel] " Andrea Arcangeli
2008-01-23 17:33                               ` Andrea Arcangeli
2008-01-23 17:33                               ` Andrea Arcangeli
2008-01-23 20:27                               ` [kvm-devel] " Christoph Lameter
2008-01-23 20:27                                 ` Christoph Lameter
2008-01-23 20:27                                 ` Christoph Lameter
2008-01-24 15:42                                 ` [kvm-devel] " Andrea Arcangeli
2008-01-24 15:42                                   ` Andrea Arcangeli
2008-01-24 20:07                                   ` Christoph Lameter
2008-01-24 20:07                                     ` Christoph Lameter
2008-01-24 20:07                                     ` Christoph Lameter
2008-01-25  6:35                                     ` [kvm-devel] " Avi Kivity
2008-01-25  6:35                                       ` Avi Kivity
2008-01-25  6:35                                       ` Avi Kivity
2008-01-23 20:18                           ` [kvm-devel] " Christoph Lameter
2008-01-23 20:18                             ` Christoph Lameter
2008-01-23 20:18                             ` Christoph Lameter
2008-01-24 14:34                             ` [kvm-devel] " Andrea Arcangeli
2008-01-24 14:34                               ` Andrea Arcangeli
2008-01-24 14:34                               ` Andrea Arcangeli
2008-01-24 14:41                               ` [kvm-devel] " Andrea Arcangeli
2008-01-24 14:41                                 ` Andrea Arcangeli
2008-01-24 14:41                                 ` Andrea Arcangeli
2008-01-24 15:15                               ` [kvm-devel] " Avi Kivity
2008-01-24 15:15                                 ` Avi Kivity
2008-01-24 15:15                                 ` Avi Kivity
2008-01-24 15:18                                 ` [kvm-devel] " Avi Kivity
2008-01-24 15:18                                   ` Avi Kivity
2008-01-24 15:18                                   ` Avi Kivity
2008-01-24 20:01                               ` [kvm-devel] " Christoph Lameter
2008-01-24 20:01                                 ` Christoph Lameter
2008-01-24 20:01                                 ` Christoph Lameter
2008-01-22 23:36                     ` [kvm-devel] " Benjamin Herrenschmidt
2008-01-22 23:36                       ` Benjamin Herrenschmidt
2008-01-22 23:36                       ` Benjamin Herrenschmidt
2008-01-23  0:40                       ` [kvm-devel] " Christoph Lameter
2008-01-23  0:40                         ` Christoph Lameter
2008-01-23  0:40                         ` Christoph Lameter
2008-01-23  1:21                         ` [kvm-devel] " Robin Holt
2008-01-23  1:21                           ` Robin Holt
2008-01-23  1:21                           ` Robin Holt
2008-01-23 12:51                     ` [kvm-devel] " Gerd Hoffmann
2008-01-23 12:51                       ` Gerd Hoffmann
2008-01-23 12:51                       ` Gerd Hoffmann
2008-01-23 13:19                       ` [kvm-devel] " Robin Holt
2008-01-23 13:19                         ` Robin Holt
2008-01-23 13:19                         ` Robin Holt
2008-01-23 14:12                         ` [kvm-devel] " Gerd Hoffmann
2008-01-23 14:12                           ` Gerd Hoffmann
2008-01-23 14:12                           ` Gerd Hoffmann
2008-01-23 14:18                           ` [kvm-devel] " Robin Holt
2008-01-23 14:18                             ` Robin Holt
2008-01-23 14:18                             ` Robin Holt
2008-01-23 14:35                             ` [kvm-devel] " Gerd Hoffmann
2008-01-23 14:35                               ` Gerd Hoffmann
2008-01-23 14:35                               ` Gerd Hoffmann
2008-01-23 15:48                               ` [kvm-devel] " Robin Holt
2008-01-23 15:48                                 ` Robin Holt
2008-01-23 15:48                                 ` Robin Holt
2008-01-23 14:17                         ` [kvm-devel] " Avi Kivity
2008-01-23 14:17                           ` Avi Kivity
2008-01-23 14:17                           ` Avi Kivity
2008-01-24  4:03                           ` [kvm-devel] " Benjamin Herrenschmidt
2008-01-24  4:03                             ` Benjamin Herrenschmidt
2008-01-24  4:03                             ` Benjamin Herrenschmidt
2008-01-23 15:41                       ` [kvm-devel] " Andrea Arcangeli
2008-01-23 15:41                         ` Andrea Arcangeli
2008-01-23 17:47                         ` Gerd Hoffmann [this message]
2008-01-23 17:47                           ` Gerd Hoffmann
2008-01-23 17:47                           ` Gerd Hoffmann
2008-01-24  6:01                           ` [kvm-devel] " Avi Kivity
2008-01-24  6:01                             ` Avi Kivity
2008-01-24  6:01                             ` Avi Kivity
2008-01-24  6:45                           ` [kvm-devel] " Jeremy Fitzhardinge
2008-01-24  6:45                             ` Jeremy Fitzhardinge
2008-01-23 20:40                         ` Christoph Lameter
2008-01-23 20:40                           ` Christoph Lameter
2008-01-23 20:40                           ` Christoph Lameter
2008-01-24  2:00                   ` Enhance mmu notifiers to accomplish a lockless implementation (incomplete) Robin Holt
2008-01-24  2:00                     ` Robin Holt
2008-01-24  2:00                     ` Robin Holt
2008-01-24  4:05                     ` Robin Holt
2008-01-24  4:05                       ` Robin Holt
2008-01-24  4:05                       ` Robin Holt
2008-01-22 19:28             ` [PATCH] mmu notifiers #v3 Peter Zijlstra
2008-01-22 19:28               ` Peter Zijlstra
2008-01-22 20:31               ` Christoph Lameter
2008-01-22 20:31                 ` Christoph Lameter
2008-01-22 20:31                 ` Christoph Lameter
2008-01-22 20:31               ` Andrea Arcangeli
2008-01-22 20:31                 ` Andrea Arcangeli
2008-01-22 20:31                 ` Andrea Arcangeli
2008-01-22 22:10                 ` Hugh Dickins
2008-01-22 22:10                   ` Hugh Dickins
2008-01-22 22:10                   ` Hugh Dickins

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=47977DCA.3040904@redhat.com \
    --to=kraxel@redhat.com \
    --cc=akpm@osdl.org \
    --cc=andrea@qumranet.com \
    --cc=avi@qumranet.com \
    --cc=benh@kernel.crashing.org \
    --cc=clameter@sgi.com \
    --cc=daniel.blueman@quadrics.com \
    --cc=holt@sgi.com \
    --cc=hugh@veritas.com \
    --cc=kvm-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=npiggin@suse.de \
    --cc=steiner@sgi.com \
    /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.