[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] grant_table: Build fixes for IA64.



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1261992759 0
# Node ID cba7ef4d08a3a3a31fe29b706878a7475c3d03b2
# Parent  4ad86f682f430428d5f9c7877259b8b951ff95e0
grant_table: Build fixes for IA64.

Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
---
 xen/common/grant_table.c |   39 +++++++++++++++++++++++++--------------
 1 files changed, 25 insertions(+), 14 deletions(-)

diff -r 4ad86f682f43 -r cba7ef4d08a3 xen/common/grant_table.c
--- a/xen/common/grant_table.c  Mon Dec 28 09:14:16 2009 +0000
+++ b/xen/common/grant_table.c  Mon Dec 28 09:32:39 2009 +0000
@@ -105,8 +105,17 @@ static unsigned inline int max_nr_maptra
     return (max_nr_grant_frames * MAX_MAPTRACK_TO_GRANTS_RATIO);
 }
 
-#define gfn_to_mfn_private(_d, _gfn, _p2mt) \
-    mfn_x(gfn_to_mfn_unshare(_d, _gfn, _p2mt, 1)) 
+#ifdef CONFIG_X86
+#define gfn_to_mfn_private(_d, _gfn) ({                     \
+    p2m_type_t __p2mt;                                      \
+    unsigned long __x;                                      \
+    __x = mfn_x(gfn_to_mfn_unshare(_d, _gfn, &__p2mt, 1));  \
+    if ( !p2m_is_valid(__p2mt) )                            \
+        __x = INVALID_MFN;                                  \
+    __x; })
+#else
+#define gfn_to_mfn_private(_d, _gfn) gmfn_to_mfn(rd, act->gfn)
+#endif
 
 #define SHGNT_PER_PAGE_V1 (PAGE_SIZE / sizeof(grant_entry_v1_t))
 #define shared_entry_v1(t, e) \
@@ -495,8 +504,6 @@ __gnttab_map_grant_ref(
 
         if ( !act->pin )
         {
-            p2m_type_t p2mt;
-
             act->domid = ld->domain_id;
             if ( sha1 )
                 act->gfn = sha1->frame;
@@ -504,7 +511,7 @@ __gnttab_map_grant_ref(
                 act->gfn = sha2->full_page.frame;
             act->frame = (op->flags & GNTMAP_readonly) ?  
                             gmfn_to_mfn(rd, act->gfn) :
-                            gfn_to_mfn_private(rd, act->gfn, &p2mt); 
+                            gfn_to_mfn_private(rd, act->gfn); 
             act->start = 0;
             act->length = PAGE_SIZE;
             act->is_sub_page = 0;
@@ -1371,7 +1378,6 @@ gnttab_transfer(
     struct gnttab_transfer gop;
     unsigned long mfn;
     unsigned int max_bitsize;
-    p2m_type_t p2mt;
 
     for ( i = 0; i < count; i++ )
     {
@@ -1386,7 +1392,7 @@ gnttab_transfer(
             return -EFAULT;
         }
 
-        mfn = gfn_to_mfn_private(d, gop.mfn, &p2mt);
+        mfn = gfn_to_mfn_private(d, gop.mfn);
 
         /* Check the passed page frame for basic validity. */
         if ( unlikely(!mfn_valid(mfn)) )
@@ -1657,7 +1663,6 @@ __acquire_grant_for_copy(
     int is_sub_page;
     struct domain *ignore;
     s16 rc = GNTST_okay;
-    p2m_type_t p2mt;
 
     *owning_domain = NULL;
 
@@ -1771,7 +1776,7 @@ __acquire_grant_for_copy(
         {
             act->gfn = sha1->frame;
             grant_frame = readonly ? gmfn_to_mfn(rd, act->gfn) :
-                                     gfn_to_mfn_private(rd, act->gfn, &p2mt);
+                                     gfn_to_mfn_private(rd, act->gfn);
             is_sub_page = 0;
             trans_page_off = 0;
             trans_length = PAGE_SIZE;
@@ -1781,7 +1786,7 @@ __acquire_grant_for_copy(
         {
             act->gfn = sha2->full_page.frame;
             grant_frame = readonly ? gmfn_to_mfn(rd, act->gfn) :
-                                     gfn_to_mfn_private(rd, act->gfn, &p2mt);
+                                     gfn_to_mfn_private(rd, act->gfn);
             is_sub_page = 0;
             trans_page_off = 0;
             trans_length = PAGE_SIZE;
@@ -1791,7 +1796,7 @@ __acquire_grant_for_copy(
         {
             act->gfn = sha2->sub_page.frame;
             grant_frame = readonly ? gmfn_to_mfn(rd, act->gfn) :
-                                     gfn_to_mfn_private(rd, act->gfn, &p2mt);
+                                     gfn_to_mfn_private(rd, act->gfn);
             is_sub_page = 1;
             trans_page_off = sha2->sub_page.page_off;
             trans_length = sha2->sub_page.length;
@@ -1886,6 +1891,7 @@ __gnttab_copy(
     }
     else
     {
+#ifdef CONFIG_X86
         p2m_type_t p2mt;
         s_frame = mfn_x(gfn_to_mfn(sd, op->source.u.gmfn, &p2mt));
         if ( !p2m_is_valid(p2mt) )
@@ -1893,10 +1899,12 @@ __gnttab_copy(
         if ( p2m_is_paging(p2mt) )
         {
             p2m_mem_paging_populate(sd, op->source.u.gmfn);
-
             rc = -ENOENT;
             goto error_out;
         }
+#else
+        s_frame = gmfn_to_mfn(sd, op->source.u.gmfn);        
+#endif
         source_domain = sd;
     }
     if ( unlikely(!mfn_valid(s_frame)) )
@@ -1929,17 +1937,20 @@ __gnttab_copy(
     }
     else
     {
+#ifdef CONFIG_X86
         p2m_type_t p2mt;
-        d_frame = gfn_to_mfn_private(dd, op->dest.u.gmfn, &p2mt);
+        d_frame = mfn_x(gfn_to_mfn_unshare(dd, op->dest.u.gmfn, &p2mt, 1));
         if ( !p2m_is_valid(p2mt) )
           d_frame = INVALID_MFN;
         if ( p2m_is_paging(p2mt) )
         {
             p2m_mem_paging_populate(dd, op->dest.u.gmfn);
-
             rc = -ENOENT;
             goto error_out;
         }
+#else
+        d_frame = gmfn_to_mfn(dd, op->dest.u.gmfn);
+#endif
         dest_domain = dd;
     }
     if ( unlikely(!mfn_valid(d_frame)) )

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.