On Fri, 21 May 2021 at 16:33, Thomas Hellström <thomas.hellstrom@xxxxxxxxxxxxxxx> 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@xxxxxxx> > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > Cc: Dave Airlie <airlied@xxxxxxxxx> > Signed-off-by: Thomas Hellström <thomas.hellstrom@xxxxxxxxxxxxxxx> > --- <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@xxxxxxxxx> > +#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@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx