i already pushed one, can you updatr it instead?

Thanks

-- 
Damjan

> On 7 May 2020, at 01:56, Elias Rudberg <elias.rudb...@bahnhof.net> wrote:
> 
> Hi Dave and Damjan,
> 
> Here is instruction and register info:
> 
> (gdb) x/i $pc
> => 0x7fffabbbdd67 <rdma_device_input_refill+759>:    vmovdqa64
> -0x30a0(%rbp),%ymm0
> (gdb) info registers rbp ymm0
> rbp            0x7ffff417daf0    0x7ffff417daf0
> ymm0           {v8_float = {0x0, 0x0, 0x0, 0x3, 0x0, 0x0, 0x0,
> 0xfffffffd}, v4_double = {0x0, 0x37, 0x0, 0xffffffffffffff85}, v32_int8
> = {0x0, 0x0, 0x0, 0x10, 
>    0x3f, 0xf6, 0x41, 0x80, 0x0, 0x0, 0x0, 0x10, 0x3f, 0xf6, 0x4b,
> 0x40, 0x0, 0x0, 0x0, 0x10, 0x3f, 0xf6, 0x55, 0x0, 0x0, 0x0, 0x0, 0x10,
> 0x3f, 0xf6, 0x5e, 
>    0xc0}, v16_int16 = {0x0, 0x1000, 0xf63f, 0x8041, 0x0, 0x1000,
> 0xf63f, 0x404b, 0x0, 0x1000, 0xf63f, 0x55, 0x0, 0x1000, 0xf63f,
> 0xc05e}, v8_int32 = {
>    0x10000000, 0x8041f63f, 0x10000000, 0x404bf63f, 0x10000000,
> 0x55f63f, 0x10000000, 0xc05ef63f}, v4_int64 = {0x8041f63f10000000,
> 0x404bf63f10000000, 
>    0x55f63f10000000, 0xc05ef63f10000000}, v2_int128 =
> {0x404bf63f100000008041f63f10000000,
> 0xc05ef63f100000000055f63f10000000}}
> 
> Not sure if I understand all this but perhaps it means that the value
> in %rbp is used as a memory address, but that address 0x7ffff417daf0 is
> not 32-byte aligned as it needs to be.
> 
> Adding __attribute__((aligned(32))) as Damjan suggests indeed seems to
> help. After that there was again a segfault in another place in the
> same file, where the same trick of adding __attribute__((aligned(32)))
> again helped.
> 
> So it seems the problem can be fixed by adding that alignment attribute
> in two places, like this:
> 
> diff --git a/src/plugins/rdma/input.c b/src/plugins/rdma/input.c
> index cf0b6bffe..324436f01 100644
> --- a/src/plugins/rdma/input.c
> +++ b/src/plugins/rdma/input.c
> @@ -103,7 +103,7 @@ rdma_device_input_refill (vlib_main_t * vm,
> rdma_device_t * rd,
> 
>   if (is_mlx5dv)
>     {
> -      u64 va[8];
> +      u64 va[8] __attribute__((aligned(32)));
>       mlx5dv_rwq_t *wqe = rxq->wqes + slot;
> 
>       while (n >= 1)
> @@ -488,7 +488,7 @@ rdma_device_input_inline (vlib_main_t * vm,
> vlib_node_runtime_t * node,
>   rdma_rxq_t *rxq = vec_elt_at_index (rd->rxqs, qid);
>   vlib_buffer_t *bufs[VLIB_FRAME_SIZE], **b = bufs;
>   struct ibv_wc wc[VLIB_FRAME_SIZE];
> -  u32 byte_cnts[VLIB_FRAME_SIZE];
> +  u32 byte_cnts[VLIB_FRAME_SIZE] __attribute__((aligned(32)));
>   vlib_buffer_t bt;
>   u32 next_index, *to_next, n_left_to_next, n_rx_bytes = 0;
>   int n_rx_packets, skip_ip4_cksum = 0;
> 
> Many thanks for you help!
> 
> Should I push the above as a patch to gerrit?
> 
> / Elias
> 
> 
> 
>> On Wed, 2020-05-06 at 20:38 +0200, Damjan Marion wrote:
>> Can you try this:
>> 
>> diff --git a/src/plugins/rdma/input.c b/src/plugins/rdma/input.c
>> index cf0b6bffe..b461ee27b 100644
>> --- a/src/plugins/rdma/input.c
>> +++ b/src/plugins/rdma/input.c
>> @@ -103,7 +103,7 @@ rdma_device_input_refill (vlib_main_t * vm,
>> rdma_device_t * rd,
>> 
>>   if (is_mlx5dv)
>>     {
>> -      u64 va[8];
>> +      u64 va[8] __attribute__((aligned(32)));
>>       mlx5dv_rwq_t *wqe = rxq->wqes + slot;
>> 
>>       while (n >= 1)
>> 
>> 
>> Thanks!
>> 
>>> On 6 May 2020, at 19:45, Elias Rudberg <elias.rudb...@bahnhof.net>
>>> wrote:
>>> 
>>> Hello VPP experts,
>>> 
>>> When trying to use the current master branch, we get a segmentation
>>> fault error. Here is what it looks like in gdb:
>>> 
>>> Thread 3 "vpp_wk_0" received signal SIGSEGV, Segmentation fault.
>>> [Switching to Thread 0x7fedf91fe700 (LWP 21309)]
>>> rdma_device_input_refill (vm=0x7ff8a5d2f4c0, rd=0x7fedd35ed5c0,
>>> rxq=0x7ffff7edea80, is_mlx5dv=1)
>>>   at vpp/src/plugins/rdma/input.c:115
>>> 115          *(u64x4 *) (va + 4) = u64x4_byte_swap (*(u64x4 *) (va
>>> + 4));
> 
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#16258): https://lists.fd.io/g/vpp-dev/message/16258
Mute This Topic: https://lists.fd.io/mt/74033970/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to