Lines Matching +full:no +full:- +full:memory +full:- +full:wc

3  * Copyright (c) 2006-2007 Tungsten Graphics, Inc., Cedar Park, TX., USA
20 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
28 * Authors: Thomas Hellström <thomas-at-tungstengraphics-dot-com>
31 #include <linux/dma-buf-map.h>
71 mb(); /*Full memory barrier used before so that CLFLUSH is ordered*/ in drm_cache_flush_clflush()
79 * drm_clflush_pages - Flush dcache lines of a set of pages.
115 pr_err("Architecture has no drm_cache.c support\n"); in drm_clflush_pages()
122 * drm_clflush_sg - Flush dcache lines pointing to a scather-gather.
135 mb(); /*CLFLUSH is ordered only by using memory barriers*/ in drm_clflush_sg()
146 pr_err("Architecture has no drm_cache.c support\n"); in drm_clflush_sg()
153 * drm_clflush_virt_range - Flush dcache lines of a region
154 * @addr: Initial kernel memory address.
168 addr = (void *)(((unsigned long)addr) & -size); in drm_clflush_virt_range()
169 mb(); /*CLFLUSH is only ordered with a full memory barrier*/ in drm_clflush_virt_range()
172 clflushopt(end - 1); /* force serialisation */ in drm_clflush_virt_range()
180 pr_err("Architecture has no drm_cache.c support\n"); in drm_clflush_virt_range()
204 * Enforce dma_alloc_coherent when memory encryption is active as well in drm_need_swiotlb()
210 for (tmp = iomem_resource.child; tmp; tmp = tmp->sibling) in drm_need_swiotlb()
211 max_iomem = max(max_iomem, tmp->end); in drm_need_swiotlb()
221 if (!dst->is_iomem && !src->is_iomem) { in memcpy_fallback()
222 memcpy(dst->vaddr, src->vaddr, len); in memcpy_fallback()
223 } else if (!src->is_iomem) { in memcpy_fallback()
224 dma_buf_map_memcpy_to(dst, src->vaddr, len); in memcpy_fallback()
225 } else if (!dst->is_iomem) { in memcpy_fallback()
226 memcpy_fromio(dst->vaddr, src->vaddr_iomem, len); in memcpy_fallback()
234 void __iomem *_src = src->vaddr_iomem; in memcpy_fallback()
235 void __iomem *_dst = dst->vaddr_iomem; in memcpy_fallback()
242 len -= MEMCPY_BOUNCE_SIZE; in memcpy_fallback()
268 :: "r" (src), "r" (dst) : "memory"); in __memcpy_ntdqa()
271 len -= 4; in __memcpy_ntdqa()
273 while (len--) { in __memcpy_ntdqa()
276 :: "r" (src), "r" (dst) : "memory"); in __memcpy_ntdqa()
286 * non-temporal instructions where available. Note that all arguments
299 * drm_memcpy_from_wc - Perform the fastest available memcpy from a source
300 * that may be WC.
305 * Tries an arch optimized memcpy for prefetching reading out of a WC region,
306 * and if no such beast is available, falls back to a normal memcpy.
318 __drm_memcpy_from_wc(dst->is_iomem ? in drm_memcpy_from_wc()
319 (void __force *)dst->vaddr_iomem : in drm_memcpy_from_wc()
320 dst->vaddr, in drm_memcpy_from_wc()
321 src->is_iomem ? in drm_memcpy_from_wc()
322 (void const __force *)src->vaddr_iomem : in drm_memcpy_from_wc()
323 src->vaddr, in drm_memcpy_from_wc()
333 * drm_memcpy_init_early - One time initialization of the WC memcpy code
338 * Some hypervisors (e.g. KVM) don't support VEX-prefix instructions in drm_memcpy_init_early()