ANDROID: cpu/hotplug: protect _cpu_down against partial HP

In the event of a partial _cpu_down, (i.e. _cpu_down(target) where
target > CPUHP_AP_OFFLINE), the cpu_online_mask won't be aligned with
cpu_active_mask. This is an issue when trying to offline the last CPU
from cpu_active_mask, while num_online_cpus() > 1.

Protect against this case by checking num_active_cpus() instead of
num_online_cpus().

Bug: 161210528
Change-Id: Ibe7d9ef69e5f91e99be0d98076614a7654bda094
Signed-off-by: Vincent Donnefort <vincent.donnefort@arm.com>
This commit is contained in:
Vincent Donnefort
2020-08-13 18:53:02 +01:00
committed by Todd Kjos
parent bca99ddbf0
commit 1734af6299

View File

@@ -996,7 +996,7 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen,
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
int prev_state, ret = 0;
if (num_online_cpus() == 1)
if (num_active_cpus() == 1)
return -EBUSY;
if (!cpu_present(cpu))