ARM64: smp: BUG() if smp_send_reschedule() is called for an offline cpu
Based on the commit 8b775be3 Sending an IPI_RESCHEDULE to an offline CPU is incorrect and potentially bad for both power and stability. On some sub-architectures such as MSM, if a power-collapsed CPU is unexpectedly woken up by an IPI, it will be begin executing without the preparations that would normally happen as part of CPU_UP_PREPARE. If clocks, voltage regulators, or other hardware configuration are not performed, the booting CPU may cause general instability or (at best) poor power performance since the CPU would be powered up but not utilized. One common cause for such issues is misuse of add_timer_on() or APIs such as queue_work_on() which call it. If proper precautions are not taken to block hotplug while these APIs are called then a race may result in IPIs being sent to CPUs that are already offline. This same argument could be applied to other IPIs (with the exception of IPI_WAKEUP), but the others are already restricted to only online CPUs by existing mechanisms, so an explicit assertion is not useful. Change-Id: I2607082719b4cb216e53fb354649ea4c5c875b1e Signed-off-by:Matt Wagantall <mattw@codeaurora.org> Signed-off-by:
Trilok Soni <tsoni@codeaurora.org>
Loading
Please register or sign in to comment