Patch "swiotlb-xen: implement xen_swiotlb_dma_mmap callback" has been added to the 3.18-stable tree
Subsystems (5)
This is a note to let you know that I've just added the patch titled
swiotlb-xen: implement xen_swiotlb_dma_mmap callback
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
swiotlb-xen-implement-xen_swiotlb_dma_mmap-callback.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
7e91c7df29b5e196de3dc6f086c8937973bd0b88Mon Sep 17 00:00:00 2001
From: Stefano Stabellini <[email protected]>
Date: Tue, 7 Feb 2017 19:58:02 +0200
Subject: swiotlb-xen: implement xen_swiotlb_dma_mmap callback
From: Stefano Stabellini <[email protected]>
commit 7e91c7df29b5e196de3dc6f086c8937973bd0b88 upstream.
This function creates userspace mapping for the DMA-coherent memory.
--- arch/arm/xen/mm.c | 1 + drivers/xen/swiotlb-xen.c | 19 +++++++++++++++++++ include/xen/swiotlb-xen.h | 5 +++++ 3 files changed, 25 insertions(+)
arch/arm/xen/mm.c +1 -0
@@ -59,6 +59,7 @@ static struct dma_map_ops xen_swiotlb_dm .unmap_page = xen_swiotlb_unmap_page, .dma_supported = xen_swiotlb_dma_supported, .set_dma_mask = xen_swiotlb_set_dma_mask, + .mmap = xen_swiotlb_dma_mmap, };int __init xen_mm_init (void )
drivers/xen/swiotlb-xen.c +19 -0
@@ -684,3 +684,22 @@ xen_swiotlb_set_dma_mask(struct device *return 0 ; }EXPORT_SYMBOL_GPL (xen_swiotlb_set_dma_mask); + +/* +* Create userspace mapping for the DMA-coherent memory. +* This function should be called with the pages from the current domain only, +* passing pages mapped from other domains would lead to memory corruption. +*/ +int +xen_swiotlb_dma_mmap (struct device *dev,struct vm_area_struct *vma, +void *cpu_addr,dma_addr_t dma_addr,size_t size, +unsigned long attrs) +{ +#if defined(CONFIG_ARM ) || defined(CONFIG_ARM64 ) +if (__generic_dma_ops (dev)->mmap) +return __generic_dma_ops (dev)->mmap (dev, vma, cpu_addr, + dma_addr, size, attrs); +#endif +return dma_common_mmap (dev, vma, cpu_addr, dma_addr, size); +} +EXPORT_SYMBOL_GPL (xen_swiotlb_dma_mmap);
include/xen/swiotlb-xen.h +5 -0
@@ -58,4 +58,9 @@ xen_swiotlb_dma_supported(struct deviceextern int xen_swiotlb_set_dma_mask (struct device *dev,u64 dma_mask); + +extern int +xen_swiotlb_dma_mmap (struct device *dev,struct vm_area_struct *vma, +void *cpu_addr,dma_addr_t dma_addr,size_t size, +unsigned long attrs);#endif /* __LINUX_SWIOTLB_XEN_H */
Patches currently in stable-queue which might be from [email protected] are
queue-3.18/swiotlb-xen-implement-xen_swiotlb_dma_mmap-callback.patch