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] minios: Support net/block backend in domU

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] minios: Support net/block backend in domU
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 07 Feb 2008 11:00:23 -0800
Delivery-date: Thu, 07 Feb 2008 11:00:20 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
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 Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1202375759 0
# Node ID c9844192c9651aab174d365648acc035897c193b
# Parent  b280ee89dcdcccd85c81c7c678f835de3ea65c33
minios: Support net/block backend in domU

Signed-off-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx>
---
 extras/mini-os/blkfront.c |   24 +++++++++++++-----------
 extras/mini-os/netfront.c |   30 ++++++++++++++++--------------
 2 files changed, 29 insertions(+), 25 deletions(-)

diff -r b280ee89dcdc -r c9844192c965 extras/mini-os/blkfront.c
--- a/extras/mini-os/blkfront.c Wed Feb 06 18:31:02 2008 +0000
+++ b/extras/mini-os/blkfront.c Thu Feb 07 09:15:59 2008 +0000
@@ -35,6 +35,8 @@ struct blk_buffer {
 };
 
 struct blkfront_dev {
+    domid_t dom;
+
     struct blkif_front_ring ring;
     grant_ref_t ring_ref;
     evtchn_port_t evtchn, local_port;
@@ -81,23 +83,23 @@ struct blkfront_dev *init_blkfront(char 
     dev = malloc(sizeof(*dev));
     dev->nodename = strdup(nodename);
 
-    s = (struct blkif_sring*) alloc_page();
-    memset(s,0,PAGE_SIZE);
-
-
-    SHARED_RING_INIT(s);
-    FRONT_RING_INIT(&dev->ring, s, PAGE_SIZE);
-
-    dev->ring_ref = gnttab_grant_access(0,virt_to_mfn(s),0);
-
     evtchn_alloc_unbound_t op;
     op.dom = DOMID_SELF;
     snprintf(path, sizeof(path), "%s/backend-id", nodename);
-    op.remote_dom = xenbus_read_integer(path); 
+    dev->dom = op.remote_dom = xenbus_read_integer(path); 
     HYPERVISOR_event_channel_op(EVTCHNOP_alloc_unbound, &op);
     clear_evtchn(op.port);        /* Without, handler gets invoked now! */
     dev->local_port = bind_evtchn(op.port, blkfront_handler, dev);
     dev->evtchn=op.port;
+
+    s = (struct blkif_sring*) alloc_page();
+    memset(s,0,PAGE_SIZE);
+
+
+    SHARED_RING_INIT(s);
+    FRONT_RING_INIT(&dev->ring, s, PAGE_SIZE);
+
+    dev->ring_ref = gnttab_grant_access(dev->dom,virt_to_mfn(s),0);
 
     // FIXME: proper frees on failures
 again:
@@ -280,7 +282,7 @@ void blkfront_aio(struct blkfront_aiocb 
             barrier();
         }
        aiocbp->gref[j] = req->seg[j].gref =
-            gnttab_grant_access(0, virtual_to_mfn(data), write);
+            gnttab_grant_access(dev->dom, virtual_to_mfn(data), write);
        req->seg[j].first_sect = 0;
        req->seg[j].last_sect = PAGE_SIZE / dev->sector_size - 1;
     }
diff -r b280ee89dcdc -r c9844192c965 extras/mini-os/netfront.c
--- a/extras/mini-os/netfront.c Wed Feb 06 18:31:02 2008 +0000
+++ b/extras/mini-os/netfront.c Thu Feb 07 09:15:59 2008 +0000
@@ -33,6 +33,8 @@ struct net_buffer {
 };
 
 struct netfront_dev {
+    domid_t dom;
+
     unsigned short tx_freelist[NET_TX_RING_SIZE];
     struct semaphore tx_sem;
 
@@ -141,7 +143,7 @@ moretodo:
 
         /* We are sure to have free gnttab entries since they got released 
above */
         buf->gref = req->gref = 
-            gnttab_grant_access(0,virt_to_mfn(page),0);
+            gnttab_grant_access(dev->dom,virt_to_mfn(page),0);
 
         req->id = id;
     }
@@ -258,6 +260,15 @@ struct netfront_dev *init_netfront(char 
         dev->rx_buffers[i].page = (char*)alloc_page();
     }
 
+    evtchn_alloc_unbound_t op;
+    op.dom = DOMID_SELF;
+    snprintf(path, sizeof(path), "%s/backend-id", nodename);
+    dev->dom = op.remote_dom = xenbus_read_integer(path);
+    HYPERVISOR_event_channel_op(EVTCHNOP_alloc_unbound, &op);
+    clear_evtchn(op.port);        /* Without, handler gets invoked now! */
+    dev->local_port = bind_evtchn(op.port, netfront_handler, dev);
+    dev->evtchn=op.port;
+
     txs = (struct netif_tx_sring*) alloc_page();
     rxs = (struct netif_rx_sring *) alloc_page();
     memset(txs,0,PAGE_SIZE);
@@ -269,17 +280,8 @@ struct netfront_dev *init_netfront(char 
     FRONT_RING_INIT(&dev->tx, txs, PAGE_SIZE);
     FRONT_RING_INIT(&dev->rx, rxs, PAGE_SIZE);
 
-    dev->tx_ring_ref = gnttab_grant_access(0,virt_to_mfn(txs),0);
-    dev->rx_ring_ref = gnttab_grant_access(0,virt_to_mfn(rxs),0);
-
-    evtchn_alloc_unbound_t op;
-    op.dom = DOMID_SELF;
-    snprintf(path, sizeof(path), "%s/backend-id", nodename);
-    op.remote_dom = xenbus_read_integer(path);
-    HYPERVISOR_event_channel_op(EVTCHNOP_alloc_unbound, &op);
-    clear_evtchn(op.port);        /* Without, handler gets invoked now! */
-    dev->local_port = bind_evtchn(op.port, netfront_handler, dev);
-    dev->evtchn=op.port;
+    dev->tx_ring_ref = gnttab_grant_access(dev->dom,virt_to_mfn(txs),0);
+    dev->rx_ring_ref = gnttab_grant_access(dev->dom,virt_to_mfn(rxs),0);
 
     dev->netif_rx = thenetif_rx;
 
@@ -416,7 +418,7 @@ void init_rx_buffers(struct netfront_dev
         req = RING_GET_REQUEST(&dev->rx, requeue_idx);
 
         buf->gref = req->gref = 
-            gnttab_grant_access(0,virt_to_mfn(buf->page),0);
+            gnttab_grant_access(dev->dom,virt_to_mfn(buf->page),0);
 
         req->id = requeue_idx;
 
@@ -461,7 +463,7 @@ void netfront_xmit(struct netfront_dev *
     memcpy(page,data,len);
 
     buf->gref = 
-        tx->gref = gnttab_grant_access(0,virt_to_mfn(page),0);
+        tx->gref = gnttab_grant_access(dev->dom,virt_to_mfn(page),1);
 
     tx->offset=0;
     tx->size = len;

_______________________________________________
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] minios: Support net/block backend in domU, Xen patchbot-unstable <=