On Thu, Mar 18, 2021 at 09:39:36AM -0400, Stefan Monnier wrote: > > I tried to reconstruct the given backtrace in [1]. > > Thanks, > > > So the actual issue seems to be a "movq" instruction which > > seems to be due to [3] a SSE2 instruction, which might > > the "Pentium III M" is lacking, like Stefan already noted. > > I am not sure where the current Debian baseline could be > > consulted regarding this, maybe [4] could give a hint. > > AFAIK Debian's i386 architecture does not (yet) require SSE2 (as > witnessed by the existence of the package `sse2-support`). > > Where does this instruction come from? > Is it generated by GCC (and if so, why does GCC generate it)? >
I'm guessing because of this: https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel/-/blob/master/src/sna/blt.c#L37 Does the below help? diff --git a/src/sna/blt.c b/src/sna/blt.c index afc719f6..803c5142 100644 --- a/src/sna/blt.c +++ b/src/sna/blt.c @@ -626,17 +626,17 @@ memcpy_between_tiled_x__swizzle_0__sse2(const void *src, void *dst, int bpp, assert(((uintptr_t)src_row & (tile_width - 1)) == 0); to_memcpy(assume_aligned(dst_row, tile_width), assume_aligned(src_row, tile_width), w); } } } -#pragma GCC push_options +#pragma GCC pop_options #endif fast void memcpy_blt(const void *src, void *dst, int bpp, int32_t src_stride, int32_t dst_stride, int16_t src_x, int16_t src_y, int16_t dst_x, int16_t dst_y, uint16_t width, uint16_t height) Cheers, Julien