lkml.org 
[lkml]   [2017]   [Oct]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.18 24/24] swiotlb-xen: implement xen_swiotlb_dma_mmap callback
    Date
    3.18-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>

    commit 7e91c7df29b5e196de3dc6f086c8937973bd0b88 upstream.

    This function creates userspace mapping for the DMA-coherent memory.

    Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
    Signed-off-by: Oleksandr Dmytryshyn <oleksandr.dmytryshyn@globallogic.com>
    Signed-off-by: Andrii Anisov <andrii_anisov@epam.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/arm/xen/mm.c | 1 +
    drivers/xen/swiotlb-xen.c | 19 +++++++++++++++++++
    include/xen/swiotlb-xen.h | 5 +++++
    3 files changed, 25 insertions(+)

    --- a/arch/arm/xen/mm.c
    +++ b/arch/arm/xen/mm.c
    @@ -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)
    --- a/drivers/xen/swiotlb-xen.c
    +++ b/drivers/xen/swiotlb-xen.c
    @@ -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);
    --- a/include/xen/swiotlb-xen.h
    +++ b/include/xen/swiotlb-xen.h
    @@ -58,4 +58,9 @@ xen_swiotlb_dma_supported(struct device

    extern 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 */

    \
     
     \ /
      Last update: 2017-10-03 15:18    [W:2.562 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site