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

On 01/26/2014 08:26 PM, Wolfgang Grandegger wrote:
> 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.

Aligning the data begining costs 2 bytes by struct rtcan_rb_frame. How
many such structures are there for a typical driver?


-- 
                                                                Gilles.


  reply	other threads:[~2014-01-26 19:29 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
2014-01-26 19:29                 ` Gilles Chanteperdrix [this message]
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=52E56221.5070005@xenomai.org \
    --to=gilles.chanteperdrix@xenomai.org \
    --cc=wg@grandegger.com \
    --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.