All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tony Lindgren <tony@atomide.com>
To: Paul Walmsley <paul@pwsan.com>
Cc: Russell King - ARM Linux <linux@arm.linux.org.uk>,
	Will Deacon <will.deacon@arm.com>,
	Santosh Shilimkar <santosh.shilimkar@ti.com>,
	Rajendra Nayak <rnayak@ti.com>,
	"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH] ARM: v6: prevent gcc from reordering extended CP15 reads above is_smp() test
Date: Mon, 29 Jul 2013 00:30:11 -0700	[thread overview]
Message-ID: <20130729073010.GU7656@atomide.com> (raw)
In-Reply-To: <alpine.DEB.2.02.1307282012280.23852@utopia.booyaka.com>

Hi,

* Paul Walmsley <paul@pwsan.com> [130728 13:23]:
> 
> Commit 621a0147d5c921f4cc33636ccd0602ad5d7cbfbc ("ARM: 7757/1: mm:
> don't flush icache in switch_mm with hardware broadcasting") breaks
> the boot on OMAP2430SDP with omap2plus_defconfig.  Tracked to an
> undefined instruction abort from the CP15 read in
> cache_ops_need_broadcast().  It turns out that gcc reorders the
> extended CP15 read above the is_smp() test.  This breaks ARM1136 r0
> cores, since they don't support several CP15 registers that later ARM
> cores do.  ARM1136JF-S TRM section 3.2.1 "Register allocation" has the
> details.
> 
> So, when the kernel is built for ARMv6 cores, mark the extended CP15
> read as clobbering memory, which seems to prevent the compiler from
> reordering it before the is_smp() test.  Russell states that the code
> generated from this approach is preferable to marking the inline asm
> as volatile.
> 
> This patch was developed in collaboration with Will Deacon and Russell
> King.
> 
> Signed-off-by: Paul Walmsley <paul@pwsan.com>
> Cc: Will Deacon <will.deacon@arm.com>
> Cc: Russell King <rmk+kernel@arm.linux.org.uk>

Sorry to be late to this party, I was offline last week. This
patch fixes the issue for me:

Acked-by: Tony Lindgren <tony@atomide.com>

WARNING: multiple messages have this Message-ID (diff)
From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: v6: prevent gcc from reordering extended CP15 reads above is_smp() test
Date: Mon, 29 Jul 2013 00:30:11 -0700	[thread overview]
Message-ID: <20130729073010.GU7656@atomide.com> (raw)
In-Reply-To: <alpine.DEB.2.02.1307282012280.23852@utopia.booyaka.com>

Hi,

* Paul Walmsley <paul@pwsan.com> [130728 13:23]:
> 
> Commit 621a0147d5c921f4cc33636ccd0602ad5d7cbfbc ("ARM: 7757/1: mm:
> don't flush icache in switch_mm with hardware broadcasting") breaks
> the boot on OMAP2430SDP with omap2plus_defconfig.  Tracked to an
> undefined instruction abort from the CP15 read in
> cache_ops_need_broadcast().  It turns out that gcc reorders the
> extended CP15 read above the is_smp() test.  This breaks ARM1136 r0
> cores, since they don't support several CP15 registers that later ARM
> cores do.  ARM1136JF-S TRM section 3.2.1 "Register allocation" has the
> details.
> 
> So, when the kernel is built for ARMv6 cores, mark the extended CP15
> read as clobbering memory, which seems to prevent the compiler from
> reordering it before the is_smp() test.  Russell states that the code
> generated from this approach is preferable to marking the inline asm
> as volatile.
> 
> This patch was developed in collaboration with Will Deacon and Russell
> King.
> 
> Signed-off-by: Paul Walmsley <paul@pwsan.com>
> Cc: Will Deacon <will.deacon@arm.com>
> Cc: Russell King <rmk+kernel@arm.linux.org.uk>

Sorry to be late to this party, I was offline last week. This
patch fixes the issue for me:

Acked-by: Tony Lindgren <tony@atomide.com>

  reply	other threads:[~2013-07-29  7:30 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-22 18:07 OMAP2430 SDP boot broken after Linus' rmk merge Paul Walmsley
2013-07-22 18:07 ` Paul Walmsley
2013-07-22 18:43 ` Russell King - ARM Linux
2013-07-22 18:43   ` Russell King - ARM Linux
2013-07-22 20:07   ` Paul Walmsley
2013-07-22 20:07     ` Paul Walmsley
2013-07-23  7:03     ` Rajendra Nayak
2013-07-23  7:03       ` Rajendra Nayak
2013-07-23  7:07       ` Paul Walmsley
2013-07-23  7:07         ` Paul Walmsley
2013-07-23  9:05         ` Rajendra Nayak
2013-07-23  9:05           ` Rajendra Nayak
2013-07-24 13:56           ` Will Deacon
2013-07-24 13:56             ` Will Deacon
2013-07-24 14:17             ` Santosh Shilimkar
2013-07-24 14:17               ` Santosh Shilimkar
2013-07-24 14:20               ` Will Deacon
2013-07-24 14:20                 ` Will Deacon
2013-07-24 14:45                 ` Santosh Shilimkar
2013-07-24 14:45                   ` Santosh Shilimkar
2013-07-27  4:10                 ` Paul Walmsley
2013-07-27  4:10                   ` Paul Walmsley
2013-07-27 12:22                   ` Will Deacon
2013-07-27 12:22                     ` Will Deacon
2013-07-28  5:38                     ` Paul Walmsley
2013-07-28  5:38                       ` Paul Walmsley
2013-07-28  5:46                       ` [PATCH] ARM: v6: avoid remaining accesses to missing CP15 registers on ARM1136 r0 Paul Walmsley
2013-07-28  5:46                         ` Paul Walmsley
2013-07-28  5:58                         ` Paul Walmsley
2013-07-28  5:58                           ` Paul Walmsley
2013-07-28  6:00                         ` [PATCH v2] " Paul Walmsley
2013-07-28  6:00                           ` Paul Walmsley
2013-07-28 19:58                           ` Paul Walmsley
2013-07-28 19:58                             ` Paul Walmsley
2013-07-28  5:43                     ` [PATCH] ARM: v6: avoid read_cpuid_ext() on ARM1136r0 in cache_ops_need_broadcast() Paul Walmsley
2013-07-28  5:43                       ` Paul Walmsley
2013-07-28 11:10                       ` Will Deacon
2013-07-28 11:10                         ` Will Deacon
2013-07-28 11:52                         ` Russell King - ARM Linux
2013-07-28 11:52                           ` Russell King - ARM Linux
2013-07-28 19:56                           ` Paul Walmsley
2013-07-28 19:56                             ` Paul Walmsley
2013-07-28 19:47                         ` Paul Walmsley
2013-07-28 19:47                           ` Paul Walmsley
2013-07-28 20:16                       ` [PATCH] ARM: v6: prevent gcc from reordering extended CP15 reads above is_smp() test Paul Walmsley
2013-07-28 20:16                         ` Paul Walmsley
2013-07-29  7:30                         ` Tony Lindgren [this message]
2013-07-29  7:30                           ` Tony Lindgren
2013-07-29 10:02                         ` Will Deacon
2013-07-29 10:02                           ` Will Deacon
2013-07-30 10:58                           ` Paul Walmsley
2013-07-30 10:58                             ` Paul Walmsley
2013-07-30 11:32                         ` [PATCH v2] ARM: v6: prevent gcc 4.5 " Paul Walmsley
2013-07-30 11:32                           ` Paul Walmsley
2013-07-30 15:04                           ` Will Deacon
2013-07-30 15:04                             ` Will Deacon
2013-07-24 14:52               ` OMAP2430 SDP boot broken after Linus' rmk merge Russell King - ARM Linux
2013-07-24 14:52                 ` Russell King - ARM Linux
2013-07-24 15:40                 ` OMAP4430 SDP boot issues.. (Was Re: OMAP2430 SDP boot broken after Linus' rmk merge) Santosh Shilimkar
2013-07-24 15:40                   ` Santosh Shilimkar
2013-07-24 17:23                   ` Russell King - ARM Linux
2013-07-24 17:23                     ` Russell King - ARM Linux
2013-07-24 18:17                     ` Santosh Shilimkar
2013-07-24 18:17                       ` Santosh Shilimkar
2013-07-25  6:40                 ` OMAP2430 SDP boot broken after Linus' rmk merge Tomi Valkeinen
2013-07-25  6:40                   ` Tomi Valkeinen
2013-07-25  6:50                   ` Tomi Valkeinen
2013-07-25  6:50                     ` Tomi Valkeinen
2013-07-26 22:59                     ` Russell King - ARM Linux
2013-07-26 22:59                       ` Russell King - ARM Linux
2013-08-07 18:09           ` Paul Walmsley
2013-08-07 18:09             ` Paul Walmsley
2013-08-08  5:37             ` Rajendra Nayak
2013-08-08  5:37               ` Rajendra Nayak
2013-08-08 10:20               ` Rajendra Nayak
2013-08-08 10:20                 ` Rajendra Nayak
2013-07-23 10:33 ` Jonathan Austin
2013-07-23 10:33   ` Jonathan Austin
2013-07-31  0:57   ` Paul Walmsley
2013-07-31  0:57     ` Paul Walmsley

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=20130729073010.GU7656@atomide.com \
    --to=tony@atomide.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=paul@pwsan.com \
    --cc=rnayak@ti.com \
    --cc=santosh.shilimkar@ti.com \
    --cc=will.deacon@arm.com \
    /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.