On Fri, 21 May 2021 at 16:33, Thomas Hellström thomas.hellstrom@linux.intel.com wrote:
Memcpy from wc will be used as well by TTM memcpy. Move it to core drm, and make the interface do the right thing even on !X86.
Cc: Christian König christian.koenig@amd.com Cc: Daniel Vetter daniel.vetter@ffwll.ch Cc: Dave Airlie airlied@gmail.com Signed-off-by: Thomas Hellström thomas.hellstrom@linux.intel.com
<snip>
+#ifdef CONFIG_X86 +bool drm_memcpy_from_wc(void *dst, const void *src, unsigned long len); +bool drm_memcpy_from_wc_dbm(struct dma_buf_map *dst,
const struct dma_buf_map *src,
unsigned long len);
+void drm_unaligned_memcpy_from_wc(void *dst, const void *src, unsigned long len);
+/* The movntdqa instructions used for memcpy-from-wc require 16-byte alignment,
- as well as SSE4.1 support. drm_memcpy_from_wc() will report if it cannot
- perform the operation. To check beforehand, pass in the parameters to
- drm_can_memcpy_from_wc() - since we only care about the low 4 bits,
- you only need to pass in the minor offsets, page-aligned pointers are
- always valid.
- For just checking for SSE4.1, in the foreknowledge that the future use
- will be correctly aligned, just use drm_has_memcpy_from_wc().
- */
+#define drm_can_memcpy_from_wc(dst, src, len) \
drm_memcpy_from_wc((void *)((unsigned long)(dst) | (unsigned long)(src) | (len)), NULL, 0)
+#define drm_has_memcpy_from_wc() \
drm_memcpy_from_wc(NULL, NULL, 0)
+void drm_memcpy_init_early(void);
+#else
+#define drm_memcpy_from_wc(_dst, _src, _len) (false) +#define drm_memcpy_from_wc_dbm(_dst, _src, _len) (false) +#define drm_can_memcpy_from_wc(_dst, _src, _len) (false) +#define drm_has_memcpy_from_wc() (false)
Does the compiler not complain for these on !x86, if called without checking the result of the statement? Maybe just make these function stubs?
Otherwise, Reviewed-by: Matthew Auld matthew.auld@intel.com
+#define drm_unaligned_memcpy_from_wc(_dst, _src, _len) WARN_ON(1) +#define drm_memcpy_init_early() do {} while (0) +#endif /* CONFIG_X86 */
+#endif /* __DRM_MEMCPY_H__ */
2.31.1
Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx