From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: imx6q restart is broken
Date: Thu, 9 Aug 2012 10:20:21 +0100 [thread overview]
Message-ID: <20120809092021.GQ18957@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <50232C17.9000700@gmail.com>
On Thu, Aug 09, 2012 at 11:18:47AM +0800, Hui Wang wrote:
> - at the last stage of reset, all non-boot cpus will call
> ipi_cpu_stop()->cpu_relax(), the cpu_relax() is defined to smp_mb() for
> V6, and smp_mb() is defined to dmb ("mcr p15, 0, %0, c7, c10, 5")
I suspect having this dmb inside cpu_relax() is flooding the
interconnects with traffic, which then prevents other CPUs getting
a look-in (maybe there's no fairness when it comes to dmb's.
If I'm right, you'll find is that even converting this to the ARMv7
DMB instruction won't fix the problem. It does, however, point
towards a more serious problem - it means that any tight loop using
dmb is detremental. I have heard some people mention that even on
various ARM SMP platforms, they have see quite an amount of
interaction between the individual CPU cores, and I'm beginning
to wonder whether this is why.
I think a useful test would be to only execute the DMB maybe once
in 50 or 100 loops - the DMB is there to work around a different
problem with the temporal locality of stores on the local CPU. So,
the only requirement is that we issue a DMB at some point while
spinning waiting for another CPU to respond to our previous writes.
next prev parent reply other threads:[~2012-08-09 9:20 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-08 10:18 imx6q restart is broken Shawn Guo
2012-08-08 10:53 ` Dirk Behme
2012-08-09 3:18 ` Hui Wang
2012-08-09 4:41 ` Shawn Guo
2012-08-09 6:32 ` Sascha Hauer
2012-08-09 8:06 ` Catalin Marinas
2012-08-09 8:18 ` Shawn Guo
2012-08-09 9:20 ` Russell King - ARM Linux [this message]
2012-08-09 12:01 ` Shawn Guo
2012-08-09 12:22 ` Shawn Guo
2012-08-09 13:57 ` Russell King - ARM Linux
2012-08-09 14:01 ` Russell King - ARM Linux
2012-08-09 14:24 ` Shawn Guo
2012-08-09 19:03 ` Matt Sealey
2012-08-09 21:07 ` Russell King - ARM Linux
2012-08-10 13:33 ` Matt Sealey
2012-08-10 13:53 ` Russell King - ARM Linux
2012-08-15 15:07 ` Rob Herring
2012-08-15 21:44 ` Russell King - ARM Linux
2012-08-16 2:31 ` Shawn Guo
2012-08-16 17:21 ` Matt Sealey
2012-08-16 22:34 ` Russell King - ARM Linux
2012-08-17 3:48 ` Shawn Guo
2012-08-17 8:11 ` Hui Wang
2012-08-19 15:26 ` Shawn Guo
2012-08-16 8:41 ` Catalin Marinas
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=20120809092021.GQ18957@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).