linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: holler@ahsoftware.de (Alexander Holler)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] USB: ehci: use packed,aligned(4) instead of removing the packed attribute
Date: Mon, 20 Jun 2011 19:39:34 +0200	[thread overview]
Message-ID: <4DFF85D6.1090104@ahsoftware.de> (raw)
In-Reply-To: <alpine.LFD.2.00.1106201306210.2142@xanadu.home>

Am 20.06.2011 19:10, schrieb Nicolas Pitre:
> On Mon, 20 Jun 2011, Alan Stern wrote:
>
>> On Mon, 20 Jun 2011, Nicolas Pitre wrote:
>>
>>> On Mon, 20 Jun 2011, Alan Stern wrote:
>>>
>>>> On Sun, 19 Jun 2011, Nicolas Pitre wrote:
>>>>
>>>>>>> The question is: does the structure really has to be packed?
>>>>>>
>>>>>> What do you mean?  The structure really does need to be allocated
>>>>>> without padding between the fields; is that the same thing?  So do a
>>>>>> bunch of other structures that currently have no annotations at all.
>>>>>
>>>>> Yes, that's the same thing.  The packed attribute tells the compiler
>>>>> that you don't want it to insert padding in it as it sees fit.
>>>>
>>>> I thought the packed attribute does more than that.  For example, on
>>>> some architectures doesn't it also force the compiler to use
>>>> byte-oriented instructions for accessing the structure's fields?
>>>
>>> Yes, but that's a consequence of not being able to access those fields
>>> in their naturally aligned position anymore.  Hence the addition of the
>>> align attribute to tell the compiler that we know that the structure is
>>> still aligned to a certain degree letting the compiler to avoid
>>> byte-oriented instructions when possible.
>>
>> Not exactly.  As far as I can tell, the ((packed)) attribute caused the
>> compiler to change the structure's alignment from its natural value to
>> 1.  That's why the fields weren't in their naturally aligned positions
>> and why removing ((packed)) fixed the problem.
>
> Are we talking past each other?
>
> Remember that I was the one asking if the align attribute was needed in
> the first place.  If it is not then by all means please get rid of it!
>
> But if it _is_ needed, then the generated code can be much better if the
> packed attribute is _also_ followed by the align attribute to
> increase it from 1.

That reminds me of some time where I had fun asking someone with deeper 
ppc- and xlC-knowledge than I, if he is sure that assignments, are 
atomic. He always said yes. Got something like a running gag. ;)

I see it that way: packed is needed to be sure that at least for struct 
ehci_regs there are no padding bytes inbetween the members. It might 
work without, but that depends on the compiler (-version, architecture, 
whatever).

That packed without an additional aligned() caused errors on ARM with 
gcc 4.6 is another problem which got (currently) fixed by removing packed.
But this introduces imho doubts and uncertainty about if padding bytes 
could be between the members, therefore I would prefer to use packed 
with aligned instead of removing the packed.

Regards,

Alexander

  parent reply	other threads:[~2011-06-20 17:39 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-27 14:34 [PATCH] echi: remove structure packing from ehci_def Rabin Vincent
2011-04-27 15:15 ` Sergei Shtylyov
2011-04-27 15:37   ` [PATCHv2] " Rabin Vincent
2011-06-16 16:17     ` [PATCH] USB: ehci: use packed, aligned(4) instead of removing the packed attribute Alexander Holler
2011-06-16 17:09       ` [PATCH] USB: ehci: use packed,aligned(4) " Alan Stern
2011-06-16 17:55         ` [PATCH] USB: ehci: use packed, aligned(4) " Arnd Bergmann
2011-06-16 19:25           ` [PATCH] USB: ehci: use packed,aligned(4) " Alexander Holler
2011-06-16 19:46             ` Alan Stern
2011-06-16 20:10               ` Alexander Holler
2011-06-16 20:20                 ` [PATCH] USB: ehci: use packed, aligned(4) " Arnd Bergmann
2011-06-19 15:02                   ` Nicolas Pitre
2011-06-19 19:00                     ` [PATCH] USB: ehci: use packed,aligned(4) " Alan Stern
2011-06-19 20:02                       ` [PATCH] USB: ehci: use packed, aligned(4) " Arnd Bergmann
2011-06-19 20:11                         ` Arnd Bergmann
2011-06-19 21:39                         ` Nicolas Pitre
2011-06-19 21:27                       ` Nicolas Pitre
2011-06-20 15:03                         ` [PATCH] USB: ehci: use packed,aligned(4) " Alan Stern
2011-06-20 16:16                           ` [PATCH] USB: ehci: use packed, aligned(4) " Nicolas Pitre
2011-06-20 16:48                             ` [PATCH] USB: ehci: use packed,aligned(4) " Alan Stern
2011-06-20 16:58                               ` [PATCH] USB: ehci: use packed, aligned(4) " Arnd Bergmann
2011-06-20 19:02                                 ` Russell King - ARM Linux
2011-06-20 19:20                                   ` Nicolas Pitre
2011-06-20 19:29                                   ` Nicolas Pitre
2011-06-20 17:10                               ` Nicolas Pitre
2011-06-20 17:35                                 ` [PATCH] USB: ehci: use packed,aligned(4) " Alan Stern
2011-06-20 18:48                                   ` Russell King - ARM Linux
2011-06-20 20:26                                     ` [PATCH] USB: ehci: use packed, aligned(4) " Arnd Bergmann
2011-06-20 20:50                                       ` Nicolas Pitre
2011-06-20 20:55                                       ` [PATCH] USB: ehci: use packed,aligned(4) " Russell King - ARM Linux
2011-06-20 21:23                                         ` [PATCH] USB: ehci: use packed, aligned(4) " Arnd Bergmann
2011-06-20 22:23                                           ` Nicolas Pitre
2011-06-21 11:25                                             ` Arnd Bergmann
2011-06-25  1:25                                               ` Nicolas Pitre
2011-06-25  8:09                                                 ` Arnd Bergmann
2011-06-28 18:51                                                   ` Nicolas Pitre
2011-06-29 10:56                                                     ` Arnd Bergmann
2011-06-20 19:14                                   ` Nicolas Pitre
2011-06-20 19:32                                     ` Russell King - ARM Linux
2011-06-20 20:14                                       ` Arnd Bergmann
2011-06-20 20:42                                     ` [PATCH] USB: ehci: use packed,aligned(4) " Alan Stern
2011-06-20 22:36                                       ` [PATCH] USB: ehci: use packed, aligned(4) " Nicolas Pitre
2011-06-21 15:06                                         ` [PATCH] USB: ehci: use packed,aligned(4) " Alan Stern
2011-06-20 17:39                                 ` Alexander Holler [this message]
2011-06-20 18:39                                   ` Alan Stern
2011-06-20 18:46                                     ` Alexander Holler
2011-06-20 18:57                                       ` Alan Stern
2011-06-20 19:56                                     ` [PATCH] USB: ehci: use packed, aligned(4) " Nicolas Pitre
2011-06-20 21:04                                       ` [PATCH] USB: ehci: use packed,aligned(4) " Alan Stern
2011-06-20 22:31                                         ` [PATCH] USB: ehci: use packed, aligned(4) " Nicolas Pitre
2011-06-21 14:58                                           ` [PATCH] USB: ehci: use packed,aligned(4) " Alan Stern
2011-06-21 20:41                                             ` [PATCH] USB: ehci: use packed, aligned(4) " Nicolas Pitre
2011-06-22  6:23                                               ` [PATCH] USB: ehci: use packed,aligned(4) " Alexander Holler
2011-06-20 20:09                                     ` [PATCH] USB: ehci: use packed, aligned(4) " Arnd Bergmann
2011-06-20 21:05                                       ` [PATCH] USB: ehci: use packed,aligned(4) " Alan Stern
2011-06-20 20:07                                   ` [PATCH] USB: ehci: use packed, aligned(4) " Arnd Bergmann
2011-06-20 20:28                                     ` Nicolas Pitre
2011-06-20 20:39                                       ` Arnd Bergmann
2011-06-20 21:03                                         ` Nicolas Pitre
2011-06-23  9:47                                     ` Alexander Holler
2011-06-23 14:25                                       ` Alan Stern
2011-06-24 11:40                                         ` Alexander Holler
2011-06-20 16:26                           ` Arnd Bergmann
2011-06-16 20:30                 ` [PATCH] USB: ehci: use packed,aligned(4) " Alan Stern
2011-06-16 18:16         ` Alexander Holler

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=4DFF85D6.1090104@ahsoftware.de \
    --to=holler@ahsoftware.de \
    --cc=linux-arm-kernel@lists.infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).