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>
34 #include <linux/iosys-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 WARN_ONCE(1, "Architecture has no drm_cache.c support\n"); in drm_clflush_pages()
121 * drm_clflush_sg - Flush dcache lines pointing to a scather-gather.
134 mb(); /*CLFLUSH is ordered only by using memory barriers*/ in drm_clflush_sg()
145 WARN_ONCE(1, "Architecture has no drm_cache.c support\n"); in drm_clflush_sg()
151 * drm_clflush_virt_range - Flush dcache lines of a region
152 * @addr: Initial kernel memory address.
166 addr = (void *)(((unsigned long)addr) & -size); in drm_clflush_virt_range()
167 mb(); /*CLFLUSH is only ordered with a full memory barrier*/ in drm_clflush_virt_range()
170 clflushopt(end - 1); /* force serialisation */ in drm_clflush_virt_range()
178 WARN_ONCE(1, "Architecture has no drm_cache.c support\n"); in drm_clflush_virt_range()
201 * Enforce dma_alloc_coherent when memory encryption is active as well in drm_need_swiotlb()
207 for (tmp = iomem_resource.child; tmp; tmp = tmp->sibling) in drm_need_swiotlb()
208 max_iomem = max(max_iomem, tmp->end); in drm_need_swiotlb()
218 if (!dst->is_iomem && !src->is_iomem) { in memcpy_fallback()
219 memcpy(dst->vaddr, src->vaddr, len); in memcpy_fallback()
220 } else if (!src->is_iomem) { in memcpy_fallback()
221 iosys_map_memcpy_to(dst, 0, src->vaddr, len); in memcpy_fallback()
222 } else if (!dst->is_iomem) { in memcpy_fallback()
223 memcpy_fromio(dst->vaddr, src->vaddr_iomem, len); in memcpy_fallback()
231 void __iomem *_src = src->vaddr_iomem; in memcpy_fallback()
232 void __iomem *_dst = dst->vaddr_iomem; in memcpy_fallback()
239 len -= MEMCPY_BOUNCE_SIZE; in memcpy_fallback()
265 :: "r" (src), "r" (dst) : "memory"); in __memcpy_ntdqa()
268 len -= 4; in __memcpy_ntdqa()
270 while (len--) { in __memcpy_ntdqa()
273 :: "r" (src), "r" (dst) : "memory"); in __memcpy_ntdqa()
283 * non-temporal instructions where available. Note that all arguments
296 * drm_memcpy_from_wc - Perform the fastest available memcpy from a source
297 * that may be WC.
302 * Tries an arch optimized memcpy for prefetching reading out of a WC region,
303 * and if no such beast is available, falls back to a normal memcpy.
315 __drm_memcpy_from_wc(dst->is_iomem ? in drm_memcpy_from_wc()
316 (void __force *)dst->vaddr_iomem : in drm_memcpy_from_wc()
317 dst->vaddr, in drm_memcpy_from_wc()
318 src->is_iomem ? in drm_memcpy_from_wc()
319 (void const __force *)src->vaddr_iomem : in drm_memcpy_from_wc()
320 src->vaddr, in drm_memcpy_from_wc()
330 * drm_memcpy_init_early - One time initialization of the WC memcpy code
335 * Some hypervisors (e.g. KVM) don't support VEX-prefix instructions in drm_memcpy_init_early()