diff options
Diffstat (limited to 'kernel/dma/mapping.c')
| -rw-r--r-- | kernel/dma/mapping.c | 28 | 
1 files changed, 12 insertions, 16 deletions
| diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c index 06fec5547e7c..9478eccd1c8e 100644 --- a/kernel/dma/mapping.c +++ b/kernel/dma/mapping.c @@ -156,7 +156,7 @@ dma_addr_t dma_map_page_attrs(struct device *dev, struct page *page,  		addr = dma_direct_map_page(dev, page, offset, size, dir, attrs);  	else  		addr = ops->map_page(dev, page, offset, size, dir, attrs); -	debug_dma_map_page(dev, page, offset, size, dir, addr); +	debug_dma_map_page(dev, page, offset, size, dir, addr, attrs);  	return addr;  } @@ -195,7 +195,7 @@ static int __dma_map_sg_attrs(struct device *dev, struct scatterlist *sg,  		ents = ops->map_sg(dev, sg, nents, dir, attrs);  	if (ents > 0) -		debug_dma_map_sg(dev, sg, nents, ents, dir); +		debug_dma_map_sg(dev, sg, nents, ents, dir, attrs);  	else if (WARN_ON_ONCE(ents != -EINVAL && ents != -ENOMEM &&  			      ents != -EIO))  		return -EIO; @@ -249,12 +249,12 @@ EXPORT_SYMBOL(dma_map_sg_attrs);   * Returns 0 on success or a negative error code on error. The following   * error codes are supported with the given meaning:   * - *   -EINVAL - An invalid argument, unaligned access or other error - *	       in usage. Will not succeed if retried. - *   -ENOMEM - Insufficient resources (like memory or IOVA space) to - *	       complete the mapping. Should succeed if retried later. - *   -EIO    - Legacy error code with an unknown meaning. eg. this is - *	       returned if a lower level call returned DMA_MAPPING_ERROR. + *   -EINVAL	An invalid argument, unaligned access or other error + *		in usage. Will not succeed if retried. + *   -ENOMEM	Insufficient resources (like memory or IOVA space) to + *		complete the mapping. Should succeed if retried later. + *   -EIO	Legacy error code with an unknown meaning. eg. this is + *		returned if a lower level call returned DMA_MAPPING_ERROR.   */  int dma_map_sgtable(struct device *dev, struct sg_table *sgt,  		    enum dma_data_direction dir, unsigned long attrs) @@ -296,16 +296,12 @@ dma_addr_t dma_map_resource(struct device *dev, phys_addr_t phys_addr,  	if (WARN_ON_ONCE(!dev->dma_mask))  		return DMA_MAPPING_ERROR; -	/* Don't allow RAM to be mapped */ -	if (WARN_ON_ONCE(pfn_valid(PHYS_PFN(phys_addr)))) -		return DMA_MAPPING_ERROR; -  	if (dma_map_direct(dev, ops))  		addr = dma_direct_map_resource(dev, phys_addr, size, dir, attrs);  	else if (ops->map_resource)  		addr = ops->map_resource(dev, phys_addr, size, dir, attrs); -	debug_dma_map_resource(dev, phys_addr, size, dir, addr); +	debug_dma_map_resource(dev, phys_addr, size, dir, addr, attrs);  	return addr;  }  EXPORT_SYMBOL(dma_map_resource); @@ -510,7 +506,7 @@ void *dma_alloc_attrs(struct device *dev, size_t size, dma_addr_t *dma_handle,  	else  		return NULL; -	debug_dma_alloc_coherent(dev, size, *dma_handle, cpu_addr); +	debug_dma_alloc_coherent(dev, size, *dma_handle, cpu_addr, attrs);  	return cpu_addr;  }  EXPORT_SYMBOL(dma_alloc_attrs); @@ -566,7 +562,7 @@ struct page *dma_alloc_pages(struct device *dev, size_t size,  	struct page *page = __dma_alloc_pages(dev, size, dma_handle, dir, gfp);  	if (page) -		debug_dma_map_page(dev, page, 0, size, dir, *dma_handle); +		debug_dma_map_page(dev, page, 0, size, dir, *dma_handle, 0);  	return page;  }  EXPORT_SYMBOL_GPL(dma_alloc_pages); @@ -644,7 +640,7 @@ struct sg_table *dma_alloc_noncontiguous(struct device *dev, size_t size,  	if (sgt) {  		sgt->nents = 1; -		debug_dma_map_sg(dev, sgt->sgl, sgt->orig_nents, 1, dir); +		debug_dma_map_sg(dev, sgt->sgl, sgt->orig_nents, 1, dir, attrs);  	}  	return sgt;  } |