diff options
| author | Mark Brown <[email protected]> | 2015-10-12 18:09:27 +0100 | 
|---|---|---|
| committer | Mark Brown <[email protected]> | 2015-10-12 18:09:27 +0100 | 
| commit | 79828b4fa835f73cdaf4bffa48696abdcbea9d02 (patch) | |
| tree | 5e0fa7156acb75ba603022bc807df8f2fedb97a8 /drivers/misc/mic/scif/scif_nodeqp.c | |
| parent | 721b51fcf91898299d96f4b72cb9434cda29dce6 (diff) | |
| parent | 8c1a9d6323abf0fb1e5dad96cf3f1c783505ea5a (diff) | |
Merge remote-tracking branch 'asoc/fix/rt5645' into asoc-fix-rt5645
Diffstat (limited to 'drivers/misc/mic/scif/scif_nodeqp.c')
| -rw-r--r-- | drivers/misc/mic/scif/scif_nodeqp.c | 15 | 
1 files changed, 5 insertions, 10 deletions
diff --git a/drivers/misc/mic/scif/scif_nodeqp.c b/drivers/misc/mic/scif/scif_nodeqp.c index 41e3bdb10061..6dfdae3452d6 100644 --- a/drivers/misc/mic/scif/scif_nodeqp.c +++ b/drivers/misc/mic/scif/scif_nodeqp.c @@ -357,7 +357,7 @@ static void scif_p2p_freesg(struct scatterlist *sg)  }  static struct scatterlist * -scif_p2p_setsg(void __iomem *va, int page_size, int page_cnt) +scif_p2p_setsg(phys_addr_t pa, int page_size, int page_cnt)  {  	struct scatterlist *sg;  	struct page *page; @@ -368,16 +368,11 @@ scif_p2p_setsg(void __iomem *va, int page_size, int page_cnt)  		return NULL;  	sg_init_table(sg, page_cnt);  	for (i = 0; i < page_cnt; i++) { -		page = vmalloc_to_page((void __force *)va); -		if (!page) -			goto p2p_sg_err; +		page = pfn_to_page(pa >> PAGE_SHIFT);  		sg_set_page(&sg[i], page, page_size, 0); -		va += page_size; +		pa += page_size;  	}  	return sg; -p2p_sg_err: -	kfree(sg); -	return NULL;  }  /* Init p2p mappings required to access peerdev from scifdev */ @@ -395,14 +390,14 @@ scif_init_p2p_info(struct scif_dev *scifdev, struct scif_dev *peerdev)  	p2p = kzalloc(sizeof(*p2p), GFP_KERNEL);  	if (!p2p)  		return NULL; -	p2p->ppi_sg[SCIF_PPI_MMIO] = scif_p2p_setsg(psdev->mmio->va, +	p2p->ppi_sg[SCIF_PPI_MMIO] = scif_p2p_setsg(psdev->mmio->pa,  						    PAGE_SIZE, num_mmio_pages);  	if (!p2p->ppi_sg[SCIF_PPI_MMIO])  		goto free_p2p;  	p2p->sg_nentries[SCIF_PPI_MMIO] = num_mmio_pages;  	sg_page_shift = get_order(min(psdev->aper->len, (u64)(1 << 30)));  	num_aper_chunks = num_aper_pages >> (sg_page_shift - PAGE_SHIFT); -	p2p->ppi_sg[SCIF_PPI_APER] = scif_p2p_setsg(psdev->aper->va, +	p2p->ppi_sg[SCIF_PPI_APER] = scif_p2p_setsg(psdev->aper->pa,  						    1 << sg_page_shift,  						    num_aper_chunks);  	p2p->sg_nentries[SCIF_PPI_APER] = num_aper_chunks;  |