aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2021-12-17 12:17:22 +1000
committerCédric Le Goater <clg@kaod.org>2021-12-23 18:47:26 +0100
commitfa28a10c946c33de8c240c3412675f7c5a68335d (patch)
treef250fb7158bb65e636f42e5c11ffe5cf30dd990d
parent175170ba6a181682ad9368b184f2241acce568c3 (diff)
downloadskiboot-fa28a10c946c33de8c240c3412675f7c5a68335d.zip
skiboot-fa28a10c946c33de8c240c3412675f7c5a68335d.tar.gz
skiboot-fa28a10c946c33de8c240c3412675f7c5a68335d.tar.bz2
core/cpu: move cpu_wake out of job_lock
There is no need to send the IPI while holding the job_lock. If the target does wake after the job is queued and before we send the IPI, it will check for new jobs anyway. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Cédric Le Goater <clg@kaod.org>
-rw-r--r--core/cpu.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/core/cpu.c b/core/cpu.c
index e915d44..a1ef631 100644
--- a/core/cpu.c
+++ b/core/cpu.c
@@ -198,8 +198,9 @@ static void queue_job_on_cpu(struct cpu_thread *cpu, struct cpu_job *job)
cpu->job_has_no_return = true;
else
cpu->job_count++;
- cpu_wake(cpu);
unlock(&cpu->job_lock);
+
+ cpu_wake(cpu);
}
struct cpu_job *__cpu_queue_job(struct cpu_thread *cpu,