28/05/2026 12:58, Thomas Monjalon:
> 28/05/2026 11:47, David Marchand:
> > On Thu, 28 May 2026 at 10:47, Thomas Monjalon <[email protected]> wrote:
> > >
> > > Seen in OBS on i586 Debian:
> > >
> > > from ../drivers/net/sxe2/sxe2_txrx_vec_sse.c:5:
> > > In function ‘_mm_loadu_si128’,
> > > inlined from ‘rte_memcpy’
> > > inlined from ‘sxe2_rx_pkts_refactor’
> > > at
> > > ../drivers/net/sxe2/sxe2_txrx_vec_common.h:233:2:
> > > /usr/lib/gcc/i686-linux-gnu/12/include/emmintrin.h:703:10: error:
> > > array subscript 8 is outside array bounds of ‘struct rte_mbuf
> > > *[32]’
> > >
> > > The important options to reproduce are "-m32 -O2 -march=corei7".
> > >
> > > In 32-bit build the pointer array done_pkts[32] is smaller:
> > > 32 * 4 = 128 bytes
> > > so an SSE access would be outside the bound.
> > >
> > > The libc memcpy does not trigger such warning
> > > and is a good choice to copy an array of pointers.
> > >
> > > Signed-off-by: Thomas Monjalon <[email protected]>
> >
> > I reproduced and checked Debian 13 32 bits build with OBS.
> > Tested-by: David Marchand <[email protected]>
>
> Thanks for testing.
>
> I forgot this:
>
> Fixes: 885647d31504 ("net/sxe2: fix 32-bit SSE build")
Of course I meant
Fixes: ac60f302cbef ("net/sxe2: add vectorized Rx and Tx")