On Mon, 2021-05-24 at 17:45 +0100, Matthew Auld wrote: > 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> Hmm, you're right. I'll fix. Thanks for reviewing! /Thomas