WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] Re: [Xen-staging] [xen-unstable] linux: Add a hook before a

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] Re: [Xen-staging] [xen-unstable] linux: Add a hook before a page table entry is cleared, for use with
From: Alex Williamson <alex.williamson@xxxxxx>
Date: Sat, 31 Mar 2007 09:56:35 -0600
Delivery-date: Sat, 31 Mar 2007 16:57:53 +0100
Envelope-to: Keir.Fraser@xxxxxxxxxxxx
In-reply-to: <200703311252.l2VCqJiC019689@xxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Organization: HP OSLO R&D
References: <200703311252.l2VCqJiC019689@xxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
   This doesn't work very well for archs that don't define
__HAVE_ARCH_PTEP_GET_AND_CLEAR_FULL as ptep_get_and_clear_full is then
defined as a macro.  I'd suggest a different name to avoid conflicts.
Thanks,

        Alex


On Sat, 2007-03-31 at 13:52 +0100, Xen staging patchbot-unstable wrote:
> # HG changeset patch
> # User Keir Fraser <keir@xxxxxxxxxxxxx>
> # Date 1175341322 -3600
> # Node ID 7180d2e61f926023e24750c53fd4203a71f2a3ae
> # Parent  2de267ba9a76e1358601505e16786969f317aa7d
> linux: Add a hook before a page table entry is cleared, for use with
> the grant-table device.
> 
> Signed-off-by: Derek Murray <Derek.Murray@xxxxxxxxxxxx>
> ---
>  linux-2.6-xen-sparse/include/linux/mm.h |    5 +++++
>  linux-2.6-xen-sparse/mm/memory.c        |   12 ++++++++++--
>  2 files changed, 15 insertions(+), 2 deletions(-)
> 
> diff -r 2de267ba9a76 -r 7180d2e61f92 linux-2.6-xen-sparse/include/linux/mm.h
> --- a/linux-2.6-xen-sparse/include/linux/mm.h Sat Mar 31 12:26:04 2007 +0100
> +++ b/linux-2.6-xen-sparse/include/linux/mm.h Sat Mar 31 12:42:02 2007 +0100
> @@ -205,6 +205,11 @@ struct vm_operations_struct {
>       /* notification that a previously read-only page is about to become
>        * writable, if an error is returned it will cause a SIGBUS */
>       int (*page_mkwrite)(struct vm_area_struct *vma, struct page *page);
> +     /* Area-specific function for clearing the PTE at @ptep. Returns the
> +      * original value of @ptep. */
> +     pte_t (*ptep_get_and_clear_full)(struct vm_area_struct *vma, 
> +                                      unsigned long addr, pte_t *ptep, 
> +                                      int is_fullmm);
>  #ifdef CONFIG_NUMA
>       int (*set_policy)(struct vm_area_struct *vma, struct mempolicy *new);
>       struct mempolicy *(*get_policy)(struct vm_area_struct *vma,
> diff -r 2de267ba9a76 -r 7180d2e61f92 linux-2.6-xen-sparse/mm/memory.c
> --- a/linux-2.6-xen-sparse/mm/memory.c        Sat Mar 31 12:26:04 2007 +0100
> +++ b/linux-2.6-xen-sparse/mm/memory.c        Sat Mar 31 12:42:02 2007 +0100
> @@ -659,8 +659,15 @@ static unsigned long zap_pte_range(struc
>                                    page->index > details->last_index))
>                                       continue;
>                       }
> -                     ptent = ptep_get_and_clear_full(mm, addr, pte,
> -                                                     tlb->fullmm);
> +                     if (unlikely(vma->vm_ops && 
> +                                  vma->vm_ops->ptep_get_and_clear_full))
> +                             ptent = vma->vm_ops->
> +                                     ptep_get_and_clear_full(vma, addr,
> +                                                             pte,
> +                                                             tlb->fullmm);
> +                     else
> +                             ptent = ptep_get_and_clear_full(mm, addr, pte,
> +                                                             tlb->fullmm);
>                       tlb_remove_tlb_entry(tlb, pte, addr);
>                       if (unlikely(!page))
>                               continue;
> @@ -755,6 +762,7 @@ static unsigned long unmap_page_range(st
>               details = NULL;
>  
>       BUG_ON(addr >= end);
> +
>       tlb_start_vma(tlb, vma);
>       pgd = pgd_offset(vma->vm_mm, addr);
>       do {
> 
> _______________________________________________
> Xen-staging mailing list
> Xen-staging@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-staging
> 
-- 
Alex Williamson                             HP Open Source & Linux Org.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


<Prev in Thread] Current Thread [Next in Thread>