From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: alignment faults in 3.6
Date: Fri, 5 Oct 2012 08:12:16 +0100 [thread overview]
Message-ID: <20121005071216.GD4625@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <CAG5Tg6V0Vj9HTy3=AU-q+Qa3DuJs6R1Kw+3uOWU_jOGfkgyXzw@mail.gmail.com>
On Fri, Oct 05, 2012 at 03:25:16AM +0100, Mans Rullgard wrote:
> On 5 October 2012 02:56, Rob Herring <robherring2@gmail.com> wrote:
> > This struct is the IP header, so a struct ptr is just set to the
> > beginning of the received data. Since ethernet headers are 14 bytes,
> > often the IP header is not aligned unless the NIC can place the frame at
> > a 2 byte offset (which is something I need to investigate). So this
> > function cannot make any assumptions about the alignment. Does the ABI
> > define structs have some minimum alignment? Does the struct need to be
> > declared as packed or something?
>
> The ABI defines the alignment of structs as the maximum alignment of its
> members. Since this struct contains 32-bit members, the alignment for the
> whole struct becomes 32 bits as well. Declaring it as packed tells gcc it
> might be unaligned (in addition to removing any holes within).
This has come up before in the past.
The Linux network folk will _not_ allow - in any shape or form - for
this struct to be marked packed (it's the struct which needs to be
marked packed) because by doing so, it causes GCC to issue byte loads/
stores on architectures where there isn't a problem, and that decreases
the performance of the Linux IP stack unnecessarily.
I don't think there's going to be a satisfactory answer to this issue.
I think we're going to be stuck between GCC people saying that the
kernel is buggy, and the network people refusing to fix this as they
have done in the past.
next prev parent reply other threads:[~2012-10-05 7:12 UTC|newest]
Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-04 23:10 alignment faults in 3.6 Rob Herring
2012-10-05 0:58 ` Michael Hope
2012-10-05 1:26 ` Mans Rullgard
2012-10-05 1:56 ` Rob Herring
2012-10-05 2:25 ` Mans Rullgard
2012-10-05 3:04 ` Rob Herring
2012-10-05 5:37 ` Khem Raj
2012-10-05 7:12 ` Russell King - ARM Linux [this message]
2012-10-05 8:20 ` Mans Rullgard
2012-10-05 8:24 ` Russell King - ARM Linux
2012-10-05 8:33 ` Mans Rullgard
2012-10-05 8:33 ` Russell King - ARM Linux
2012-10-05 8:37 ` Mans Rullgard
2012-10-05 8:50 ` Russell King - ARM Linux
2012-10-05 13:49 ` Mikael Pettersson
2012-10-05 12:24 ` Rob Herring
2012-10-05 13:51 ` Mikael Pettersson
2012-10-05 16:01 ` Rob Herring
2012-10-05 22:37 ` Mans Rullgard
2012-10-05 22:42 ` Russell King - ARM Linux
2012-10-06 1:41 ` Nicolas Pitre
2012-10-06 16:04 ` Mans Rullgard
2012-10-06 16:19 ` Nicolas Pitre
2012-10-06 16:31 ` Russell King - ARM Linux
2012-10-06 10:58 ` Mikael Pettersson
2012-10-09 14:05 ` Scott Bambrough
2012-10-09 14:18 ` Mans Rullgard
2012-10-05 14:05 ` Russell King - ARM Linux
2012-10-05 14:33 ` Rob Herring
2012-10-11 0:59 ` Jon Masters
2012-10-11 2:27 ` Måns Rullgård
2012-10-11 2:34 ` Jon Masters
2012-10-11 8:21 ` David Laight
2012-10-11 8:53 ` Russell King - ARM Linux
2012-10-11 9:45 ` Måns Rullgård
2012-10-11 10:00 ` Eric Dumazet
2012-10-11 10:20 ` Måns Rullgård
2012-10-11 10:22 ` Eric Dumazet
2012-10-11 10:32 ` Russell King - ARM Linux
2012-10-11 10:49 ` Eric Dumazet
2012-10-11 10:56 ` Maxime Bizon
2012-10-11 11:28 ` Eric Dumazet
2012-10-11 11:47 ` Maxime Bizon
2012-10-11 11:54 ` Eric Dumazet
2012-10-11 12:00 ` Eric Dumazet
2012-10-11 12:51 ` Maxime Bizon
2012-10-11 12:59 ` Eric Dumazet
2012-10-11 12:28 ` Arnd Bergmann
2012-10-11 12:40 ` Eric Dumazet
2012-10-11 13:20 ` Rob Herring
2012-10-11 13:32 ` Måns Rullgård
2012-10-11 13:35 ` Arnd Bergmann
2012-10-11 13:47 ` Eric Dumazet
2012-10-11 15:23 ` Rob Herring
2012-10-11 15:39 ` David Laight
2012-10-11 16:18 ` Måns Rullgård
2012-10-12 8:11 ` Arnd Bergmann
2012-10-12 9:03 ` Russell King - ARM Linux
2012-10-12 10:04 ` Eric Dumazet
2012-10-12 12:24 ` Russell King - ARM Linux
2012-10-12 11:00 ` Måns Rullgård
2012-10-12 11:07 ` Russell King - ARM Linux
2012-10-12 11:18 ` Måns Rullgård
2012-10-12 11:44 ` Russell King - ARM Linux
2012-10-12 12:08 ` Eric Dumazet
2012-10-12 14:22 ` Benjamin LaHaise
2012-10-12 14:36 ` David Laight
2012-10-12 14:48 ` Eric Dumazet
2012-10-12 15:00 ` Benjamin LaHaise
2012-10-12 15:04 ` Ben Hutchings
2012-10-12 15:47 ` David Laight
2012-10-12 16:13 ` Ben Hutchings
2012-10-12 12:16 ` Måns Rullgård
2012-10-12 11:19 ` Russell King - ARM Linux
2012-10-11 16:15 ` Eric Dumazet
2012-10-11 16:59 ` Catalin Marinas
2012-10-11 10:16 ` David Laight
2012-10-11 10:46 ` Måns Rullgård
2012-10-05 16:08 ` Rob Herring
2012-10-05 7:29 ` Russell King - ARM Linux
2012-10-05 10:51 ` Russell King - ARM Linux
2012-10-23 16:30 ` Jon Masters
2012-10-23 16:58 ` Russell King - ARM Linux
2012-10-23 17:15 ` Jon Masters
2012-10-23 19:14 ` Rob Herring
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=20121005071216.GD4625@n2100.arm.linux.org.uk \
--to=linux@arm.linux.org.uk \
--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).