From: robherring2@gmail.com (Rob Herring)
To: linux-arm-kernel@lists.infradead.org
Subject: alignment faults in 3.6
Date: Fri, 05 Oct 2012 11:08:16 -0500 [thread overview]
Message-ID: <506F05F0.4050401@gmail.com> (raw)
In-Reply-To: <CANLjY-no-L9=LRCvCetC5XCHicOoSWOfRZmUd7itAiUHWBhAyw@mail.gmail.com>
On 10/04/2012 07:58 PM, Michael Hope wrote:
> On 5 October 2012 12:10, Rob Herring <robherring2@gmail.com> wrote:
>> I've been scratching my head with a "scheduling while atomic" bug I
>> started seeing on 3.6. I can easily reproduce this problem when doing a
>> wget on my system. It ultimately seems to be a combination of factors.
>> The "scheduling while atomic" bug is triggered in do_alignment which
>> gets triggered by this code in net/ipv4/af_inet.c, line 1356:
>>
>> id = ntohl(*(__be32 *)&iph->id);
>> flush = (u16)((ntohl(*(__be32 *)iph) ^ skb_gro_len(skb)) | (id ^ IP_DF));
>> id >>= 16;
>>
>> This code compiles into this using "gcc version 4.6.3 (Ubuntu/Linaro
>> 4.6.3-1ubuntu5)":
>>
>> c02ac020: e8920840 ldm r2, {r6, fp}
>> c02ac024: e6bfbf3b rev fp, fp
>> c02ac028: e6bf6f36 rev r6, r6
>> c02ac02c: e22bc901 eor ip, fp, #16384 ; 0x4000
>> c02ac030: e0266008 eor r6, r6, r8
>> c02ac034: e18c6006 orr r6, ip, r6
>>
>> which generates alignment faults on the ldm. These are silent until this
>> commit is applied:
>
> Hi Rob. I assume that iph is something like:
>
> struct foo {
> u32 x;
> char id[8];
> };
>
> struct foo *iph;
>
> GCC merged the two adjacent loads of x and id into one ldm. This is
> an ARM specific optimisation done in load_multiple_sequence() and
> enabled with -fpeephole2.
I'm probably on some watch list now after searching for peephole...
It's not clear what all turning this off would affect. Is it just struct
or array loading? Or does this turn off lots of different optimizations?
Rob
next prev parent reply other threads:[~2012-10-05 16:08 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
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 [this message]
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=506F05F0.4050401@gmail.com \
--to=robherring2@gmail.com \
--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).