From: Phil Elwell <phil@raspberrypi.org>
To: Thomas Gleixner <tglx@linutronix.de>,
Jason Cooper <jason@lakedaemon.net>,
Marc Zyngier <marc.zyngier@arm.com>,
Florian Fainelli <f.fainelli@gmail.com>,
Ray Jui <rjui@broadcom.com>,
Scott Branden <sbranden@broadcom.com>,
bcm-kernel-feedback-list@broadcom.com,
linux-kernel@vger.kernel.org,
linux-rpi-kernel@lists.infradead.org
Subject: [PATCH] irq_bcm2836: Send event when onlining sleeping cores
Date: Tue, 9 May 2017 09:30:29 +0100 [thread overview]
Message-ID: <ce824cd4-4ae4-d080-ed99-b8cef13f5482@raspberrypi.org> (raw)
In order to reduce power consumption and bus traffic, it is sensible
for secondary cores to enter a low-power idle state when waiting to
be started. The wfe instruction causes a core to wait until an event
or interrupt arrives before continuing to the next instruction.
The sev instruction sends a wakeup event to the other cores, so call
it from bcm2836_smp_boot_secondary, the function that wakes up the
waiting cores during booting.
It is harmless to use this patch without the corresponding change
adding wfe to the ARMv7/ARMv8-32 stubs, but if the stubs are updated
and this patch is not applied then the other cores will sleep forever.
See: https://github.com/raspberrypi/linux/issues/1989
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
---
drivers/irqchip/irq-bcm2836.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/irqchip/irq-bcm2836.c b/drivers/irqchip/irq-bcm2836.c
index e10597c..6dccdf9 100644
--- a/drivers/irqchip/irq-bcm2836.c
+++ b/drivers/irqchip/irq-bcm2836.c
@@ -248,6 +248,9 @@ static int __init bcm2836_smp_boot_secondary(unsigned int cpu,
writel(secondary_startup_phys,
intc.base + LOCAL_MAILBOX3_SET0 + 16 * cpu);
+ dsb(sy); /* Ensure write has completed before waking the other CPUs */
+ sev();
+
return 0;
}
--
1.9.1
next reply other threads:[~2017-05-09 8:56 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-09 8:30 Phil Elwell [this message]
2017-05-09 16:59 ` [PATCH] irq_bcm2836: Send event when onlining sleeping cores Eric Anholt
2017-05-09 17:09 ` Marc Zyngier
2017-05-09 18:08 ` Eric Anholt
2017-05-09 18:14 ` Marc Zyngier
2017-05-09 18:52 ` Phil Elwell
2017-05-09 18:53 ` Marc Zyngier
2017-05-09 19:02 ` Phil Elwell
2017-05-10 7:42 ` Marc Zyngier
2017-05-10 8:27 ` Phil Elwell
2017-05-10 8:55 ` Marc Zyngier
2017-05-10 9:05 ` Phil Elwell
2017-05-10 10:09 ` Marc Zyngier
2017-05-10 10:31 ` Phil Elwell
2017-05-10 16:21 ` Florian Fainelli
2017-05-10 17:15 ` Marc Zyngier
2017-05-10 17:59 ` Florian Fainelli
2017-05-10 18:02 ` Eric Anholt
2017-05-10 18:23 ` Marc Zyngier
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=ce824cd4-4ae4-d080-ed99-b8cef13f5482@raspberrypi.org \
--to=phil@raspberrypi.org \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=f.fainelli@gmail.com \
--cc=jason@lakedaemon.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rpi-kernel@lists.infradead.org \
--cc=marc.zyngier@arm.com \
--cc=rjui@broadcom.com \
--cc=sbranden@broadcom.com \
--cc=tglx@linutronix.de \
/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.