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] Get the network interface working in shadow translate mo

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Get the network interface working in shadow translate mode. This
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 30 Jan 2006 15:00:08 +0000
Delivery-date: Mon, 30 Jan 2006 15:23:21 +0000
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/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/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 sos22@xxxxxxxxxxxxxxxxxxxx
# Node ID 1580009f137c2d90a3de05c06d677dfbdd65e4bd
# Parent  cc9bb3e0e348e6484d6fa2bc43b4900c6a40da79
Get the network interface working in shadow translate mode.  This
required a few extra __gpfn_to_mfn translations, and also required a
minor change in the grant tables interface: if we're in shadow
translate mode, then shared->frame is supposed to be the pfn you want
to map the new mfn to when accepting a grant transfer, and Xen handles
updating the M2P and P2M tables for you.

Signed-off-by: Steven Smith, sos22@xxxxxxxxx

diff -r cc9bb3e0e348 -r 1580009f137c xen/common/grant_table.c
--- a/xen/common/grant_table.c  Wed Jan 25 17:57:44 2006
+++ b/xen/common/grant_table.c  Thu Jan 26 13:33:20 2006
@@ -711,6 +711,7 @@
     int i;
     grant_entry_t *sha;
     gnttab_transfer_t gop;
+    unsigned long real_mfn;
 
     for ( i = 0; i < count; i++ )
     {
@@ -731,7 +732,8 @@
             continue;
         }
 
-        page = pfn_to_page(gop.mfn);
+        real_mfn = __gpfn_to_mfn(d, gop.mfn);
+        page = pfn_to_page(real_mfn);
         if ( unlikely(IS_XEN_HEAP_FRAME(page)) )
         { 
             DPRINTK("gnttab_transfer: xen frame %lx\n",
@@ -792,7 +794,21 @@
 
         /* Tell the guest about its new page frame. */
         sha = &e->grant_table->shared[gop.ref];
-        sha->frame = gop.mfn;
+        if (shadow_mode_translate(e)) {
+            struct domain_mmap_cache c1, c2;
+            unsigned long pfn = sha->frame;
+            domain_mmap_cache_init(&c1);
+            domain_mmap_cache_init(&c2);
+            shadow_lock(e);
+            shadow_sync_and_drop_references(e, page);
+            set_p2m_entry(e, pfn, real_mfn, &c1, &c2);
+            set_pfn_from_mfn(real_mfn, pfn);
+            shadow_unlock(e);
+            domain_mmap_cache_destroy(&c1);
+            domain_mmap_cache_destroy(&c2);
+        } else {
+            sha->frame = real_mfn;
+        }
         wmb();
         sha->flags |= GTF_transfer_completed;
 
diff -r cc9bb3e0e348 -r 1580009f137c xen/common/memory.c
--- a/xen/common/memory.c       Wed Jan 25 17:57:44 2006
+++ b/xen/common/memory.c       Thu Jan 26 13:33:20 2006
@@ -76,7 +76,7 @@
     int           *preempted)
 {
     struct pfn_info *page;
-    unsigned long    i, j, mpfn;
+    unsigned long    i, j, mpfn, mfn;
 
     if ( !array_access_ok(extent_list, nr_extents, sizeof(*extent_list)) )
         return 0;
@@ -94,14 +94,15 @@
 
         for ( j = 0; j < (1 << extent_order); j++ )
         {
-            if ( unlikely((mpfn + j) >= max_page) )
+            mfn = __gpfn_to_mfn(d, mpfn + j);
+            if ( unlikely(mfn >= max_page) )
             {
                 DPRINTK("Domain %u page number out of range (%lx >= %lx)\n", 
-                        d->domain_id, mpfn + j, max_page);
+                        d->domain_id, mfn, max_page);
                 return i;
             }
             
-            page = pfn_to_page(mpfn + j);
+            page = pfn_to_page(mfn);
             if ( unlikely(!get_page(page, d)) )
             {
                 DPRINTK("Bad page free for domain %u\n", d->domain_id);

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Get the network interface working in shadow translate mode. This, Xen patchbot -unstable <=