aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* Cleanup priority tracking for budget enforcement.wip-gpusync-mergeGlenn Elliott2014-03-18
|
* Fix task-exit race with budget timer.Glenn Elliott2014-03-16
|
* Make R2DGLP use sbinheap.Glenn Elliott2014-03-14
| | | | | | This patch updates the R2DGLP implementation to use the sbinheap data structure in cases where the max heap size is known.
* More API cleanup for sbinheap.Glenn Elliott2014-03-14
|
* C-EDF: Use sbinheap to track to top-m prio tasks.Glenn Elliott2014-03-13
| | | | | This patch updates C-EDF to use sbinheap instead of binheap to track the m-highest priority released jobs.
* C-EDF: Use sbinheap to track CPU priorityGlenn Elliott2014-03-13
| | | | | This patch updated C-EDF to use the more efficient sbinheap data structure (instead of binheap) to track CPU priorities.
* Make API match binheap when using sbinheap_node_tGlenn Elliott2014-03-13
|
* Add sbinheap. API compatible with binheap.Glenn Elliott2014-03-13
| | | | | | | | | | | | This patch introduces the 'sbinheap' binary heap data structure. Litmus's binheap data structure is inefficient when we can put a reasonable upperbound on maximum heap size (ex. When max size is equal to NR_CPUS). When we can put an upperbound on heap size, then we may statically allocate (or at least kmalloc needed memory) for the heap at compile/initialization-time. With this contiguous buffer, we can do away with left/right/parent pointers through standard binary-tree indexing. This also speeds up heap insert/delete operations.
* Make comparators take const operands.Glenn Elliott2014-03-13
| | | | | This patch updates various parts of litmus that utilize binheap and bheaps to use const operands.
* Make bheap's compare func use const ptrs.Glenn Elliott2014-03-13
| | | | | | This patch changes bheaps compare function pointer to take const parameters. Compare functions should never modify the contents of their operands.
* Optimize binheap imlp.Glenn Elliott2014-03-13
| | | | This patch makes slight optimizations to binheap.
* Use wait-q instead of arrays for delayed wake ups.Glenn Elliott2014-03-07
|
* Move wakeup transition to TASK_RUNNING to pluginGlenn Elliott2014-03-07
| | | | | | This patch moves the task state transition to TASK_RUNNING for task wakup to the plugin, when the ready queue lock has been acquired.
* Call flush_pending_wakes() prior to suspension.Glenn Elliott2014-03-07
| | | | | | | Under nested priority-ordered locking protocols with dynamic group locks, it is possible that priority inheritance can trigger the inheriting task to acquire a resource. Thus, flush any triggered wakeups prior to suspending for a lock.
* EDF compare: Mark self-compare case unlikely.Glenn Elliott2014-03-07
|
* Add mb() to recursive spinlock.Glenn Elliott2014-03-07
| | | | Add mb() to recursive spinlock on the already-held code path.
* print extra TRACE() info for aux tasks.Glenn Elliott2014-03-04
|
* Increase max size of TRACE buffer.Glenn Elliott2014-03-04
|
* fpmath.h: Use normal division outside of kernel.Glenn Elliott2014-03-04
| | | | | | | | Division in fpmath.h is implemented using kernel-only functions. This causes compilation errors when fpmath.h is used from user code. This patch modifies fpmath.h to use standard division (i.e., the '/' operator) when fpmath.h is included in non-kernel (i.e., userspace) code.
* Fix merge bug: plugin activation and tsk cleanupGlenn Elliott2014-03-03
| | | | | | | This patch fixes two bugs introduced during rebase. 1) Double-free of per-task rt data on exit. 2) Failure to set up /proc/litmus/cpus and /litmus/proc/domains on successful plugin activation.
* Fix bug where NP tasks can be dropped from sched.Glenn Elliott2014-03-03
| | | | | | This patch fixes a bug where NP tasks can be dropped by mistake by the real-time scheduler. Affects C-EDF and G-EDF.
* Cleanup sync release.Glenn Elliott2014-03-03
| | | | | | This patch cleans up the sync-release code used by GPUSync. The updated code leverage's Litmus's new per-plugin wait_for_release_at().
* Fix rebase/merge bugsGlenn Elliott2014-03-03
|
* Fix compil. bug when nested locking is disabledGlenn Elliott2014-03-03
| | | | | This patch fixes a compilation bug that occurs when nested locking is disabled.
* Fix logic bug in GPUSync modifications.Glenn Elliott2014-03-03
|
* Support new NV GPU driver 331.44Glenn Elliott2014-03-03
|
* Rename IKGLP R2DGLP.Glenn Elliott2014-03-03
| | | | | | | | The I-KGLP was a pre-publish name for the R^2DGLP locking protocol developed by B. Ward et al. ("Replica-Request Priority Donation: A Real-Time Progress Mechanism for Global Locking Protocols" presented at RTCSA 2012). This patch renames ikglp-named identifiers to r2dglp-named identifiers.
* Fix compilation bug in cedf when sched_trace onGlenn Elliott2014-03-03
|
* C-EDF: make cedf_task_new() match main LitmusGlenn Elliott2014-03-03
| | | | | Formatting changes to make cedf_task_new() follow the structure of cedf_task_new() in mainline Litmus.
* pfair: Reject all budget enforcement policies.Glenn Elliott2014-03-03
| | | | | | pfair does not support any budget tracking/enforcement methods. This patch makes pfair reject any tasks that request budget tracking/enforcement.
* GSN-EDF: Support budget state machineGlenn Elliott2014-03-03
| | | | | | This patch updates GSN-EDF to support basic budget tracking implemented by the budget state machine instead of having GSN-EDF implement its own.
* PSN-EDF: Support budget state machineGlenn Elliott2014-03-03
| | | | | | | | This patch updates PSN-EDF to support basic budget tracking implemented by the budget state machine instead of having PSN-EDF implement its own tracking. (Also fixes some bad formatting in sched_pfp.c.)
* P-FP: Support budget state machineGlenn Elliott2014-03-03
| | | | | | This patch updates P-FP to support basic budget tracking implemented by the budget state machine. (As opposed to P-FP implementing its own budget tracking.)
* GPUSync integration into C-EDF.Glenn Elliott2014-03-03
| | | | | | | | | | | | | | | The changes to C-EDF to support GPUSync are numerous and interdependent. Unfortunatly, things are a bit too complex (given time constraints) to break GPUSync integration into C-EDF into smaller parts. This patch is just a dump of prior development in one big chunk. Changes include: 1) Support for three different budget tracking/enforcement policies 2) Nested priority inheritance 3) Support for klmirqd 4) Support for auxiliary tasks 5) Several locking protocols: FIFO, PRIOQ, IKGLP, and KFMLP 6) GPU-to-CPU-cluster mapping
* Add nvidia tasklet and workqueue tracingGlenn Elliott2014-03-03
| | | | | This patch adds calls to trace tasklet/workqueue releases, begin-execution, and end-execution events.
* Add backlog info to Litmus kshark task completeGlenn Elliott2014-03-03
| | | | | Adds job backlog information to Litmus's litmus_task_completion kernel shark trace event.
* Add priority change events to litmus kshark traceGlenn Elliott2014-03-03
| | | | | Adds Litmus kernel shark trace event to record changes in task scheduling priority.
* Add I/O blocking info to kshark tracingGlenn Elliott2014-03-03
| | | | | | Extends Litmus's litmus_task_block kernel shark tracing event to include information about blocking for I/O (versus blocking for a Litmus lock).
* Update/cleanup lockdep to support nested locksGlenn Elliott2014-03-03
| | | | | | | | | This patch modifies lockdep to support nested locking protocols--specifically allow keys allocated in dynamic memory. We need to allow spinlocks to be acquired in a nested fashion without triggering complaints from lockdep. This is needed to support chained/transitive priority inheritance.
* Minor: Add task period-related macros.Glenn Elliott2014-03-03
| | | | | Add macros for period comparisons. Useful for implementing rate-monotonic schedulers.
* Support recursive ready queue locks.Glenn Elliott2014-03-03
| | | | | | | This patch allows (at compile-time) for schedulers to use recurive locks on the ready queue. Recursive locks are useful for implementing complicated budget enforcement policies where locking protocol priority inheritance is concerned.
* Export symbols for nv tasklet/workqueue schedulingGlenn Elliott2014-03-03
| | | | | | | | | | Export symbols for the following functions so that they may be called from modules: * is_nvidia_func * nv_schedule_work * nv_tasklet_schedule * nv_tasklet_hi_schedule * nv_tasklet_hi_schedule_first
* Fix compilation bug when GPUs and klmirqd are usedGlenn Elliott2014-03-03
| | | | | A few definitions were missing or misplaced. This patch puts them in the right places.
* cleanup: minor formatting issues.Glenn Elliott2014-03-03
|
* Auxiliary- and klmirqd-aware priority comparisons.Glenn Elliott2014-03-03
| | | | | | | | | This patch forces auxiliary and klmirqd tasks to run with a priority statically below any normal real-time tasks when the auxiliary or klmirqd thread is not inheriting a priority. This allows auxiliary and klmirqd threads to still do work in the background when no real-time threads are waiting on them to finish work (better throughput).
* Misc. integration fixes to litmus.cGlenn Elliott2014-03-03
| | | | | | | | This patch updates litmus.c to integrate prior GPUSync patches. Fixes include: 1) klmirqd-aware plugin switching 2) sched_trace event injection from user space 3) proper (re-)initialization of GPUSync data structures in task_struct
* Add gpusync syscalls to arch syscall tables.Glenn Elliott2014-03-03
| | | | | Earlier patches forgot to update the arch-specific syscall tables. That is done here.
* Add more robust budget tracking/enforcement.Glenn Elliott2014-03-03
| | | | | | | | This patch adds more feature-rich budget tracking/enforcement features. Budget tracking is now controlled by a state machine. Each task can elect to use a different budget policy. Hooks are in place to implement bandwidth inheritance (BWI) and virtually exclusive resources.
* Clean up locking.cGlenn Elliott2014-03-03
| | | | Clean up formatting in locking.c
* Add auxiliary task support.Glenn Elliott2014-03-03
| | | | | | | | | | Auxiliary tasks helper threads to real-time tasks. These helper tasks may inherit the priority of the real-time task(s) in the process only if that real-time task is blocked/suspended (and it is not suspending because the job has completed). Otherwise, these threads are scheduled with a default priority greater than normal Linux threads, but lower than any other real-time task, including klmirqd threads.