]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Revert "xen-blkfront: set pages are FOREIGN_FRAME when sharing them"
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Mon, 7 May 2012 20:39:50 +0000 (16:39 -0400)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Mon, 7 May 2012 20:39:50 +0000 (16:39 -0400)
This reverts commit 6a2c6177a518f1c91e846a56a9e572c10efd57ea.

[as it should go through Jen's tree]

drivers/block/xen-blkfront.c

index 6cd6a08b49a058d7ae7e747967b832a3eb4d65cd..4e86393a09cf5c880917fd81d3e67e507a83c0f6 100644 (file)
@@ -260,7 +260,7 @@ static int blkif_ioctl(struct block_device *bdev, fmode_t mode,
 static int blkif_queue_request(struct request *req)
 {
        struct blkfront_info *info = req->rq_disk->private_data;
-       unsigned long buffer_mfn, buffer_pfn;
+       unsigned long buffer_mfn;
        struct blkif_request *ring_req;
        unsigned long id;
        unsigned int fsect, lsect;
@@ -319,8 +319,7 @@ static int blkif_queue_request(struct request *req)
                       BLKIF_MAX_SEGMENTS_PER_REQUEST);
 
                for_each_sg(info->sg, sg, ring_req->u.rw.nr_segments, i) {
-                       buffer_pfn = page_to_pfn(sg_page(sg));
-                       buffer_mfn = pfn_to_mfn(buffer_pfn);
+                       buffer_mfn = pfn_to_mfn(page_to_pfn(sg_page(sg)));
                        fsect = sg->offset >> 9;
                        lsect = fsect + (sg->length >> 9) - 1;
                        /* install a grant reference. */
@@ -339,17 +338,6 @@ static int blkif_queue_request(struct request *req)
                                                .gref       = ref,
                                                .first_sect = fsect,
                                                .last_sect  = lsect };
-                       /* 
-                        * Set the page as foreign, considering that we are giving
-                        * it to a foreign domain.
-                        * This is important in case the destination domain is
-                        * ourselves, so that we can more easily recognize the
-                        * source pfn from destination pfn, both mapping to the same
-                        * mfn.
-                        */
-                       if (xen_pv_domain())
-                               set_phys_to_machine(buffer_pfn,
-                                               FOREIGN_FRAME(buffer_mfn));
                }
        }
 
@@ -725,12 +713,8 @@ static void blkif_completion(struct blk_shadow *s)
        int i;
        /* Do not let BLKIF_OP_DISCARD as nr_segment is in the same place
         * flag. */
-       for (i = 0; i < s->req.u.rw.nr_segments; i++) {
+       for (i = 0; i < s->req.u.rw.nr_segments; i++)
                gnttab_end_foreign_access(s->req.u.rw.seg[i].gref, 0, 0UL);
-               if (xen_pv_domain())
-                       set_phys_to_machine(s->frame[i],
-                                       get_phys_to_machine(s->frame[i]) & ~FOREIGN_FRAME_BIT);
-       }
 }
 
 static irqreturn_t blkif_interrupt(int irq, void *dev_id)
@@ -1066,20 +1050,13 @@ static int blkif_recover(struct blkfront_info *info)
                memcpy(&info->shadow[req->u.rw.id], &copy[i], sizeof(copy[i]));
 
                if (req->operation != BLKIF_OP_DISCARD) {
-                       unsigned long buffer_pfn;
-                       unsigned long buffer_mfn;
                /* Rewrite any grant references invalidated by susp/resume. */
-                       for (j = 0; j < req->u.rw.nr_segments; j++) {
-                               buffer_pfn = info->shadow[req->u.rw.id].frame[j];
-                               buffer_mfn = pfn_to_mfn(buffer_pfn);
+                       for (j = 0; j < req->u.rw.nr_segments; j++)
                                gnttab_grant_foreign_access_ref(
                                        req->u.rw.seg[j].gref,
                                        info->xbdev->otherend_id,
-                                       buffer_mfn,
+                                       pfn_to_mfn(info->shadow[req->u.rw.id].frame[j]),
                                        rq_data_dir(info->shadow[req->u.rw.id].request));
-                               if (xen_pv_domain())
-                                       set_phys_to_machine(buffer_pfn, FOREIGN_FRAME(buffer_mfn));
-                       }
                }
                info->shadow[req->u.rw.id].req = *req;