aboutsummaryrefslogtreecommitdiffstats
path: root/include
Commit message (Collapse)AuthorAge
* BUG FIX: Support DGLs with PRIOQ_MUTEXwip-prioq-dglGlenn Elliott2013-02-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | First 'working' implementation of DGLs with PRIOQ_MUTEX. (All other code prior was work-in-progress.) General approach: Because of priority queue order, PRIOQ_MUTEX DGLs must be *acquired* atomically. This means that a task cannot acquire an available PRIOQ_MUTEX if another PRIOQ_MUTEX is not available at the same time. Requests are buffered in PRIOQ_MUTEX and the resource 'idles'-- that is, the mutex owner is NULL, but there are waiting tasks for the resource. Several notes/side-effects: 1) A high-priority task that idles a resource can effectively block lower-priority tasks from acquiring that resource. This is because the low-prio task cannot skip ahead of the high-prio task in the priority queue. 2) Priority inheritance from nesting can cause the low-prioity task in #1 to jump over the high-priority task and acquire the resource. This means that any task blocked on a DGL that receives an increase in priority while blocked on the DGL must trigger a re-eval of the locks it can take. If the resources can be acquired, then the task needs to be woken up! <<<<< Lock acquisition via inheritance is entirely new and weird! >>>>> 3) A similar case for #2 exists for priorty decreases (example: this can happen when a task loses a donor) while it is blocked on a PRIOQ_MUTEX. The high-priority task described in #1 can change and become a lower- priority task. Every idle lock (mutex owner is NULL) on which the task losing priority must be revaluated--- it is possible that the (possible) new head on the priority queue can take the lock. Note: This affects BOTH singular and DGL resource requests, while the case described in #2 only affects DGL requests (because a singular request at the head of the priority queue will never idle a resource).
* PRIOQ_MUTEX dgl progressGlenn Elliott2013-02-11
|
* Make PRIOQ &DGLs work. hangs w/ ikglp thoughGlenn Elliott2013-02-08
|
* Extend support for PRIOQ_MUTEXGlenn Elliott2013-02-08
|
* Add PRIOQ_MUTEX semaphoreGlenn Elliott2013-02-08
|
* Rename RSM Mutex to FIFO MutexGlenn Elliott2013-02-07
|
* re-enable klmirqd for workqueues, and grace rebootGlenn Elliott2013-02-06
|
* Merge branch 'prop/misc-fixes' into wip-2012.3-gpuGlenn Elliott2013-02-05
|\
| * TRACE_TASK(): accept NULL pointersBjoern Brandenburg2013-02-04
| | | | | | | | Allow tracing of NULL tasks. Makes debugging a bit easier.
* | part. gpu hack and fixed dumb ikglp bugGlenn Elliott2013-01-28
| | | | | | | | | | | | IKGLP wasn't being passed the right value for 'm' in C-EDF. It went undected for so long since m < k in our GPUSync experiments.
* | ECRTS13 testbed (hopefully)Glenn Elliott2013-01-27
| | | | | | | | | | fixed minor bugs and cleaned up ikglp affinity logic
* | Fix inheritance propagation for klmirqd&aux tasks.Glenn Elliott2013-01-24
| | | | | | | | | | | | | | | | | | | | Bug: Inheritance not propagated to klmirqd and aux tasks when the task these threads inherit from has a change in its own priority. (Also removed per-task NV interrupt tracking since we cannnot identify exact interrupt ownership under GPUSync.)
* | Fix AUX tasks from being dropped by Litmus.Glenn Elliott2013-01-23
| |
* | Fixed case where blocked tasks are released.Glenn Elliott2013-01-21
| | | | | | | | | | | | | | | | | | | | Fixed bug where AUX tasks were being added to the ready queue while those AUX tasks were actually blocked. Bug stems from the fact that the AUX tasks do not make themselves realtime, but another thread does this instead. Also fixed minor bugs elsewhere. NOTE: ONLY FIXES C-EDF. OTHER PLUGINS REMAIN TO BE FIXED.
* | Minor changes to lock procGlenn Elliott2013-01-18
| |
* | Support NV 304.x and 310.x drivers.Glenn Elliott2013-01-18
| |
* | /proc hooks for locking protocols.Glenn Elliott2013-01-18
| | | | | | | | RSM locks only make use of /proc for now.
* | Remove tasklet::owner field (just commented out).Glenn Elliott2013-01-18
| |
* | Remove tasklet_owner requirements.Glenn Elliott2013-01-15
| |
* | remove sem/mutex hacks needed for old klmirqdGlenn Elliott2013-01-10
| |
* | Merge branch 'wip-gpu-cleanup' into wip-2012.3-gpuGlenn Elliott2013-01-10
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: include/litmus/fpmath.h include/litmus/litmus.h include/litmus/rt_param.h include/litmus/trace.h kernel/sched.c kernel/softirq.c litmus/edf_common.c litmus/jobs.c litmus/litmus.c litmus/locking.c litmus/preempt.c litmus/sched_cedf.c litmus/sched_gsn_edf.c litmus/sched_litmus.c litmus/sync.c
| * Enable sched_trace log injection from userspacewip-gpu-cleanupGlenn Elliott2013-01-09
| |
| * Allow klmirqd threads to be given names.wip-klmirqd-to-auxGlenn Elliott2012-12-13
| |
| * Fix several klmirqd bugs.Glenn Elliott2012-12-13
| | | | | | | | | | | | | | | | | | | | 1) Deadlock in litmus_task_exit()-- added litmus_pre_task_exit() to be called without the Linux runqueue lock held. 2) Prioritization of base-prio klmirqd/aux threads vs. normal real-time tasks. 3) Initialization of gpu owner binheap node moved to *after* memset(0) of rt_params. 4) Exit path of klmirqd threads.
| * Use num_online_gpus()Glenn Elliott2012-12-12
| | | | | | | | | | | | Note that num_online_gpus() merely reports the staticly configured maximum number of available GPUs. Will make dynamic in the future.
| * Cluster assignment of nv klmirqd threads.Glenn Elliott2012-12-12
| |
| * make klmirqd work like aux tasks. checkpoint.Glenn Elliott2012-12-12
| | | | | | | | this code is untested!
| * Rename klitirqd klmirqd.Glenn Elliott2012-12-09
| |
| * AUX_FUTURE and revised inh-based aux tie breakGlenn Elliott2012-12-06
| |
| * Fix compilation warnings.Glenn Elliott2012-11-30
| |
| * More improvements on affinity heuristicsGlenn Elliott2012-11-30
| |
| * improve ikglp heuristicsGlenn Elliott2012-11-11
| |
| * Fixed three bugs with aux threads and nested locksGlenn Elliott2012-09-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes two bugs with nested locks: 1) List of aux threads could become corrupted. -- moved modifications to be within scheduler lock. 2) Fixed bad EDF comparison ordering that could lead to schedule thrashing in an infinite loop. 3) Prevent aux threads from inheriting a priority from a task that is blocked on a real-time litmus lock. (since the aux threads can't possibly hold these locks, we don't have to worry about inheritance.)
| * Added CONFIG_REALTIME_AUX_TASKS optionGlenn Elliott2012-09-16
| | | | | | | | | | | | Auxillary task features were enabled by CONFIG_LITMUS_LOCKING. Made auxillary tasks a seperate feature that depends upon CONFIG_LITMUS_LOCKING.
| * Implement real-time aux threads. G-EDF only.Glenn Elliott2012-09-16
| |
| * checkpoint for aux_tasks. can still deadlockGlenn Elliott2012-09-14
| |
| * Merge branch 'wip-gpu-rtas12' into wip-slave-threadsGlenn Elliott2012-09-11
| |\ | | | | | | | | | | | | | | | | | | Conflicts: include/litmus/unistd_32.h include/litmus/unistd_64.h litmus/litmus.c
| | * Fix hang from bug in edf_common.cGlenn Elliott2012-09-11
| | |
| | * Merge remote-tracking branch 'github/prop/litmus-signals' into wip-gpu-rtas12Glenn Elliott2012-09-10
| | |\ | | | | | | | | | | | | | | | | Conflicts: litmus/sched_gsn_edf.c
| | | * Infrastructure for Litmus signals.prop/litmus-signalsGlenn Elliott2012-09-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added signals to Litmus. Specifcally, SIG_BUDGET signals are delivered (when requested by real-time tasks) when a budget is exceeded. Note: pfair not currently supported (but it probably could be).
| | * | Merge branch 'prop/robust-tie-break' into wip-gpu-rtas12Glenn Elliott2012-09-10
| | |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: include/litmus/binheap.h include/litmus/fdso.h include/litmus/litmus.h litmus/Makefile litmus/binheap.c litmus/edf_common.c litmus/fdso.c litmus/jobs.c litmus/locking.c
| | | * | EDF priority tie-breaks.wip-robust-tie-breakGlenn Elliott2012-08-27
| | | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of tie-breaking by PID (which is a static priority tie-break), we can tie-break by other job-level-unique parameters. This is desirable because tasks are equaly affected by tardiness since static priority tie-breaks cause tasks with greater PID values to experience the most tardiness. There are four tie-break methods: 1) Lateness. If two jobs, J_{1,i} and J_{2,j} of tasks T_1 and T_2, respectively, have equal deadlines, we favor the job of the task that had the worst lateness for jobs J_{1,i-1} and J_{2,j-1}. Note: Unlike tardiness, lateness may be less than zero. This occurs when a job finishes before its deadline. 2) Normalized Lateness. The same as #1, except lateness is first normalized by each task's relative deadline. This prevents tasks with short relative deadlines and small execution requirements from always losing tie-breaks. 3) Hash. The job tuple (PID, Job#) is used to generate a hash. Hash values are then compared. A job has ~50% chance of winning a tie-break with respect to another job. Note: Emperical testing shows that some jobs can have +/- ~1.5% advantage in tie-breaks. Linux's built-in hash function is not totally a uniform hash. 4) PIDs. PID-based tie-break used in prior versions of Litmus. Conflicts: litmus/edf_common.c
| | * | standard devation-based gpu affinity predictorGlenn Elliott2012-09-10
| | | |
| | * | simple average trackingGlenn Elliott2012-09-09
| | | |
| | * | GPUSync patch for Litmus 2012.1.Glenn Elliott2012-05-26
| | | |
| * | | blargGlenn Elliott2012-09-11
| | |/ | |/|
* | | litmus: get rid of unused RT_F_EXIT_SEM flagManohar Vanga2012-11-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch removes the RT_F_EXIT_SEM flag. All code paths depending on it being true are assumed to be unreachable and removed. The 'flags' field in struct rt_params is left as-is for use by specific schedulers. For example, sched_pfair defines a custom flag RT_F_REQUEUE within the 'flags' field. Signed-off-by: Manohar Vanga <mvanga@mpi-sws.org>
* | | litmus: get rid of RT_F_SLEEP and RT_F_RUNNINGManohar Vanga2012-11-27
| | | | | | | | | | | | | | | | | | | | | | | | This patch removes the flags RT_F_SLEEP and RT_F_RUNNING as their name is misleading. This patch replaces them with a 'completed' field in struct rt_param. Signed-off-by: Manohar Vanga <mvanga@mpi-sws.org>
* | | litmus: fix compiler warning in sched_plugin.hManohar Vanga2012-11-27
| | | | | | | | | | | | | | | | | | | | | | | | This patch fixes the compiler warning about struct litmus_locking being defined in the parameter list when CONFIG_LITMUS_LOCKING is not set. Signed-off-by: Manohar Vanga <mvanga@mpi-sws.org>
* | | P-FP: prevent misuse of priority queueBjoern Brandenburg2012-10-18
| | | | | | | | | | | | Stop hard-to-detect out-of-bounds errors early.