From mboxrd@z Thu Jan 1 00:00:00 1970 From: linux@arm.linux.org.uk (Russell King - ARM Linux) Date: Tue, 7 Aug 2012 18:00:26 +0100 Subject: [PATCH] ARM: formalize an IPI for CPU wake-ups In-Reply-To: References: <20120611165115.GB18267@n2100.arm.linux.org.uk> <4FD62DBB.8070407@codeaurora.org> <20120611192519.GF18267@n2100.arm.linux.org.uk> <4FE1FB15.3090305@codeaurora.org> <0e0201cd5f2f$2c2f6e60$848e4b20$%kim@samsung.com> <5016D03D.8010607@codeaurora.org> <037601cd6fc9$f6e5fe30$e4b1fa90$%kim@samsung.com> Message-ID: <20120807170026.GH18957@n2100.arm.linux.org.uk> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Mon, Aug 06, 2012 at 01:41:06PM -0700, Colin Cross wrote: > When testing coupled cpuidle on Exynos5, I found that sending an IPI > does not successfully wake up CPU1. CPU1 is in a wfe with interrupts > masked, not a wfi, so an interrupt is not able to wake it up. It > tends to wake up anyways because the next time a spin lock is > unlocked, often during a timer interrupt on CPU0, CPU0 executes an sev > which wakes up CPU1. You can see that the IPI is unnecessary by > removing the gic_raise_softirq and replacing it with dsb_sev(). That's good news; that supports my assertion that the SMP bringup code we see on various platforms as copies from the Realview code was done without much thought about what is actually required. It's good that you're looking into this, and fixing the code on the CPUs you have access to. I rather wish we'd made it a requirement for people to _document_ the actual bringup conditions in the kernel for their hardware before we accepted their SMP support code.