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

[Xen-changelog] [xen-unstable] x86: allow grant table originating ptes t

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] x86: allow grant table originating ptes to have their guest available
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 05 Nov 2008 07:00:58 -0800
Delivery-date: Wed, 05 Nov 2008 07:03:54 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1225799160 0
# Node ID 6bd021d987d7deef4b3b05def5428b53481127b8
# Parent  43a079fd50fdab01cd2be443bfef011b3b0495ae
x86: allow grant table originating ptes to have their guest available
bits set.

In order to allow 2.6.27's get_user_pages_fast() to correctly detect
granted pages (so they would be passed to get_user_pages()), it must
be possible to tell the grant table code in Xen to set the three
available bits in the pte-s it creates.

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
---
 xen/arch/x86/mm.c                |    4 ++++
 xen/common/kernel.c              |    3 ++-
 xen/include/public/features.h    |    6 ++++++
 xen/include/public/grant_table.h |    9 ++++++++-
 4 files changed, 20 insertions(+), 2 deletions(-)

diff -r 43a079fd50fd -r 6bd021d987d7 xen/arch/x86/mm.c
--- a/xen/arch/x86/mm.c Mon Nov 03 13:36:24 2008 +0000
+++ b/xen/arch/x86/mm.c Tue Nov 04 11:46:00 2008 +0000
@@ -3332,6 +3332,10 @@ int create_grant_host_mapping(uint64_t a
     if ( !(flags & GNTMAP_readonly) )
         l1e_add_flags(pte,_PAGE_RW);
 
+    l1e_add_flags(pte,
+                  ((flags >> _GNTMAP_guest_avail0) * _PAGE_AVAIL0)
+                   & _PAGE_AVAIL);
+
     l1e_add_flags(pte, cacheattr_to_pte_flags(cache_flags >> 5));
 
     if ( flags & GNTMAP_contains_pte )
diff -r 43a079fd50fd -r 6bd021d987d7 xen/common/kernel.c
--- a/xen/common/kernel.c       Mon Nov 03 13:36:24 2008 +0000
+++ b/xen/common/kernel.c       Tue Nov 04 11:46:00 2008 +0000
@@ -222,7 +222,8 @@ DO(xen_version)(int cmd, XEN_GUEST_HANDL
 #ifdef CONFIG_X86
             if ( !is_hvm_vcpu(current) )
                 fi.submap |= (1U << XENFEAT_mmu_pt_update_preserve_ad) |
-                             (1U << XENFEAT_highmem_assist);
+                             (1U << XENFEAT_highmem_assist) |
+                             (1U << XENFEAT_gnttab_map_avail_bits);
 #endif
             break;
         default:
diff -r 43a079fd50fd -r 6bd021d987d7 xen/include/public/features.h
--- a/xen/include/public/features.h     Mon Nov 03 13:36:24 2008 +0000
+++ b/xen/include/public/features.h     Tue Nov 04 11:46:00 2008 +0000
@@ -62,6 +62,12 @@
 /* x86: Does this Xen host support the MMU_{CLEAR,COPY}_PAGE hypercall? */
 #define XENFEAT_highmem_assist             6
 
+/*
+ * If set, GNTTABOP_map_grant_ref honors flags to be placed into guest kernel
+ * available pte bits.
+ */
+#define XENFEAT_gnttab_map_avail_bits      7
+
 #define XENFEAT_NR_SUBMAPS 1
 
 #endif /* __XEN_PUBLIC_FEATURES_H__ */
diff -r 43a079fd50fd -r 6bd021d987d7 xen/include/public/grant_table.h
--- a/xen/include/public/grant_table.h  Mon Nov 03 13:36:24 2008 +0000
+++ b/xen/include/public/grant_table.h  Tue Nov 04 11:46:00 2008 +0000
@@ -360,7 +360,7 @@ DEFINE_XEN_GUEST_HANDLE(gnttab_unmap_and
 
 
 /*
- * Bitfield values for update_pin_status.flags.
+ * Bitfield values for gnttab_map_grant_ref.flags.
  */
  /* Map the grant entry for access by I/O devices. */
 #define _GNTMAP_device_map      (0)
@@ -388,6 +388,13 @@ DEFINE_XEN_GUEST_HANDLE(gnttab_unmap_and
 #define GNTMAP_contains_pte     (1<<_GNTMAP_contains_pte)
 
 /*
+ * Bits to be placed in guest kernel available PTE bits (architecture
+ * dependent; only supported when XENFEAT_gnttab_map_avail_bits is set).
+ */
+#define _GNTMAP_guest_avail0    (16)
+#define GNTMAP_guest_avail_mask ((uint32_t)~0 << _GNTMAP_guest_avail0)
+
+/*
  * Values for error status returns. All errors are -ve.
  */
 #define GNTST_okay             (0)  /* Normal return.                        */

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] x86: allow grant table originating ptes to have their guest available, Xen patchbot-unstable <=