summaryrefslogtreecommitdiffstats
path: root/src/kernel/syscall.C
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2012-06-14 16:24:56 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2012-06-18 16:25:59 -0500
commite14f34f3648159c2fd5d62900ee5568ca2b78af3 (patch)
tree7efc0c551ee63363136f9cd8bc1e314807c499ca /src/kernel/syscall.C
parent0cf879912d04e5c81ec49502fa792c70f6c3f7d3 (diff)
downloadtalos-hostboot-e14f34f3648159c2fd5d62900ee5568ca2b78af3.tar.gz
talos-hostboot-e14f34f3648159c2fd5d62900ee5568ca2b78af3.zip
Fix task deadlock in VMM flush operation.
Change-Id: I6f5f44009f8b6e76ac660977c567b35400980b22 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/1204 Tested-by: Jenkins Server Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/kernel/syscall.C')
-rw-r--r--src/kernel/syscall.C56
1 files changed, 31 insertions, 25 deletions
diff --git a/src/kernel/syscall.C b/src/kernel/syscall.C
index cfcbed860..dd3d10949 100644
--- a/src/kernel/syscall.C
+++ b/src/kernel/syscall.C
@@ -1,25 +1,26 @@
-// IBM_PROLOG_BEGIN_TAG
-// This is an automatically generated prolog.
-//
-// $Source: src/kernel/syscall.C $
-//
-// IBM CONFIDENTIAL
-//
-// COPYRIGHT International Business Machines Corp. 2010 - 2011
-//
-// p1
-//
-// Object Code Only (OCO) source materials
-// Licensed Internal Code Source Materials
-// IBM HostBoot Licensed Internal Code
-//
-// The source code for this program is not published or other-
-// wise divested of its trade secrets, irrespective of what has
-// been deposited with the U.S. Copyright Office.
-//
-// Origin: 30
-//
-// IBM_PROLOG_END
+/* IBM_PROLOG_BEGIN_TAG
+ * This is an automatically generated prolog.
+ *
+ * $Source: src/kernel/syscall.C $
+ *
+ * IBM CONFIDENTIAL
+ *
+ * COPYRIGHT International Business Machines Corp. 2010-2012
+ *
+ * p1
+ *
+ * Object Code Only (OCO) source materials
+ * Licensed Internal Code Source Materials
+ * IBM HostBoot Licensed Internal Code
+ *
+ * The source code for this program is not published or other-
+ * wise divested of its trade secrets, irrespective of what has
+ * been deposited with the U.S. Copyright Office.
+ *
+ * Origin: 30
+ *
+ * IBM_PROLOG_END_TAG
+ */
#include <assert.h>
#include <errno.h>
#include <kernel/cpu.H>
@@ -48,7 +49,8 @@ void kernel_execute_decrementer()
cpu_t* c = CpuManager::getCurrentCPU();
Scheduler* s = c->scheduler;
TimeManager::checkReleaseTasks(s);
- s->returnRunnable();
+
+ task_t* current_task = TaskManager::getCurrentTask();
CpuManager::executePeriodics(c);//TODO is there still a potential deadlock?
@@ -63,8 +65,12 @@ void kernel_execute_decrementer()
#endif
KernelMisc::shutdown();
}
- CpuManager::executePeriodics(c);
- s->setNextRunnable();
+
+ if (current_task == TaskManager::getCurrentTask())
+ {
+ s->returnRunnable();
+ s->setNextRunnable();
+ }
}
namespace Systemcalls
OpenPOWER on IntegriCloud