On Fri, 21 May 2021 at 16:33, Thomas Hellström <thomas.hellst...@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.koe...@amd.com> > Cc: Daniel Vetter <daniel.vet...@ffwll.ch> > Cc: Dave Airlie <airl...@gmail.com> > Signed-off-by: Thomas Hellström <thomas.hellst...@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.a...@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 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx