From 2e0e2e3d9e83767c5add303b2989f8cae76773dc Mon Sep 17 00:00:00 2001 From: Konrad Rzeszutek Wilk Date: Mon, 7 May 2012 16:39:50 -0400 Subject: [PATCH] Revert "xen-blkfront: set pages are FOREIGN_FRAME when sharing them" This reverts commit 6a2c6177a518f1c91e846a56a9e572c10efd57ea. [as it should go through Jen's tree] --- drivers/block/xen-blkfront.c | 33 +++++---------------------------- 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c index 6cd6a08b49a0..4e86393a09cf 100644 --- a/drivers/block/xen-blkfront.c +++ b/drivers/block/xen-blkfront.c @@ -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], ©[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; -- 2.39.5