summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorStewart Smith <stewart@linux.vnet.ibm.com>2016-11-23 11:38:29 +1100
committerStewart Smith <stewart@linux.vnet.ibm.com>2016-11-24 16:47:16 +1100
commitecac29429861a912bd061df799dbc54493966f98 (patch)
treec3a39ae4011099e5569c4cd541307d4dc0335f64 /core
parent9fcb109218b1374a8caa3cac62e83fbedb1f7f2f (diff)
downloadblackbird-skiboot-ecac29429861a912bd061df799dbc54493966f98.tar.gz
blackbird-skiboot-ecac29429861a912bd061df799dbc54493966f98.zip
run pollers in cpu_process_local_jobs() if running job synchonously
In the event we only have 1 CPU thread, we run asynchronous jobs synchronously, and while we wait for them to finish, we run pollers. However, if the jobs themselves don't call pollers (e.g. by time_wait()) then we'll end up in long periods of not running pollers at all. To work around this, explicitly run pollers when we're the only CPU thread (i.e. when we run the job synchronously). Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'core')
-rw-r--r--core/cpu.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/core/cpu.c b/core/cpu.c
index 62140eb9..f83d9104 100644
--- a/core/cpu.c
+++ b/core/cpu.c
@@ -403,6 +403,7 @@ void cpu_process_local_jobs(void)
if (cpu == this_cpu()) {
prlog_once(PR_DEBUG, "Processing jobs synchronously\n");
cpu_process_jobs();
+ opal_run_pollers();
}
}
OpenPOWER on IntegriCloud