All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wolfgang Grandegger <wg@grandegger.com>
To: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>,
	Alexandre COFFIGNAL <acoffignal@geral.com>
Cc: xenomai@xenomai.org
Subject: Re: [Xenomai] imx28 rtcan flexcan system freezes
Date: Sun, 26 Jan 2014 20:26:39 +0100	[thread overview]
Message-ID: <52E5616F.90002@grandegger.com> (raw)
In-Reply-To: <52DFD1B0.6070303@xenomai.org>

On 01/22/2014 03:12 PM, Gilles Chanteperdrix wrote:
> On 01/22/2014 03:04 PM, Alexandre COFFIGNAL wrote:
>>
>> Le 22/01/2014 14:30, Gilles Chanteperdrix a écrit :
>>> On 01/22/2014 02:27 PM, Alexandre COFFIGNAL wrote:
>>>>
>>>> Le 22/01/2014 13:00, Gilles Chanteperdrix a écrit :
>>>>> On 01/22/2014 12:36 PM, Alexandre COFFIGNAL wrote:
>>>>>>>> +        cf->data[3]=((data0 >> 0)  & 0xFF) ;
>>>>>>>> +        cf->data[2]=((data0 >> 8)  & 0xFF) ;
>>>>>>>> +        cf->data[1]=((data0 >> 16)  & 0xFF) ;
>>>>>>>> +        cf->data[0]=((data0 >> 24)  & 0xFF) ;
>>>>>>>> +        cf->data[7]=((data1 >> 0)  & 0xFF) ;
>>>>>>>> +        cf->data[6]=((data1 >> 8)  & 0xFF) ;
>>>>>>>> +        cf->data[5]=((data1 >> 16)  & 0xFF) ;
>>>>>>>> +        cf->data[4]=((data1 >> 24)  & 0xFF) ;
>>>>>>>>
>>>>>>>> rtcan flexcan works perfectly.
>>>>>>>> is  anyone know what is the problem with first instructions ?
>>>>>>> Probably mb->data does not have the right alignment. Could you not
>>>>>>> arrange to get it properly aligned? Failing that, you should use
>>>>>>> put_unaligned instead of open coding it.
>>>>>>>
>>>>>>>
>>>>>> here structures used in flexcan driver, it seem to be aligned
>>>>>
>>>>> I am talking about the alignment of cf->data, since obviously, that is
>>>>> the one which is causing problems.
>>>>>
>>>>>
>>>> Thank a lot, put_unaligned fix this issue if you want, i can send a
>>>> path
>>>>
>>>
>>> The other solution (getting cf->data to be properly aligned) would be
>>> more efficient, why is not it possible to get cf->data properly aligned?
>>>
>> I think, i can't get cf->data to be properly aligned because "cf" is
>> receive internal frame representation within the ring buffer
>> of a struct rtcan_socket and struct rtcan_rb_frame is a generic
>> structure used in all rtcan drivers .
> 
> Well, if you fix rtcan_rb_frame to be aligned, it will be aligned for
> all drivers, so that looks like a worthwile improvement...

I had a closer look. The CAN message (frame) queuing is optimized for
size to get as much as possible messages into the queue. Therefore the
CAN data are copied using memcpy, but only the real bytes. Directly
behind the real data is the 64 bit timestamp, if requested, which is
also not aligned. Therefore I suggest to use memcpy or byte accesses in
the flexcan driver as well. If this was a good decision is another question.

Wolfgang.



  parent reply	other threads:[~2014-01-26 19:26 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-22 10:24 [Xenomai] imx28 rtcan flexcan system freezes Alexandre COFFIGNAL
2014-01-22 11:23 ` Gilles Chanteperdrix
2014-01-22 11:36   ` Alexandre COFFIGNAL
2014-01-22 12:00     ` Gilles Chanteperdrix
2014-01-22 13:27       ` Alexandre COFFIGNAL
2014-01-22 13:30         ` Gilles Chanteperdrix
2014-01-22 14:04           ` Alexandre COFFIGNAL
2014-01-22 14:12             ` Gilles Chanteperdrix
2014-01-23 10:04               ` Gilles Chanteperdrix
2014-01-23 11:36                 ` Wolfgang Grandegger
2014-01-23 12:05                   ` Gilles Chanteperdrix
2014-01-23 12:21                     ` Wolfgang Grandegger
2014-01-23 12:23                       ` Gilles Chanteperdrix
2014-01-23 13:07                     ` Gilles Chanteperdrix
2014-01-23 12:54                   ` Alexandre COFFIGNAL
2014-01-23 13:10                     ` Alexandre COFFIGNAL
2014-01-26 19:26               ` Wolfgang Grandegger [this message]
2014-01-26 19:29                 ` Gilles Chanteperdrix
2014-01-26 20:16                   ` Wolfgang Grandegger
2014-01-26 20:56                     ` Gilles Chanteperdrix
2014-01-27  7:56                       ` Wolfgang Grandegger
2014-01-28 22:06                         ` Gilles Chanteperdrix
2014-01-29  7:16                           ` Wolfgang Grandegger
2014-01-29 15:50                             ` Alexandre COFFIGNAL
2014-01-29 17:58                               ` Gilles Chanteperdrix
2014-01-31 13:15                                 ` Alexandre COFFIGNAL
2014-01-23 19:48             ` Gilles Chanteperdrix

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52E5616F.90002@grandegger.com \
    --to=wg@grandegger.com \
    --cc=acoffignal@geral.com \
    --cc=gilles.chanteperdrix@xenomai.org \
    --cc=xenomai@xenomai.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.