aboutsummaryrefslogtreecommitdiffstats
path: root/litmus
Commit message (Collapse)AuthorAge
* Manually patched mc^2 related codewip-mc2-cache-slackMing Yang2016-02-11
|
* Patched reservation implementation of MC^2 versionMing Yang2016-02-10
| | | | | | | | Patched using Namhoon's implementation of reservation for MC^2 to support global multiprocessor scheduling. Patched compiler-gcc5 to support gcc v5 compiler. Bug fixed regarding user input big cpu id number causing kernel crash.
* P-RES: improved handling of tardy jobsBjoern Brandenburg2014-09-17
| | | | | Don't set a release timer for jobs that are tardy and already released.
* Reservations: request scheduler update for new active reservationsBjoern Brandenburg2014-09-17
| | | | | | Don't forget to ask for a scheduler update when a reservation is replenished but enters state ACTIVE_IDLE and there's nothing else going on that triggers the scheduler by chance.
* Reservations: fix time-tracking of table-driven reservationsBjoern Brandenburg2014-09-17
| | | | | | Keep track of the current slot and major cycle explicitly to avoid ambiguity when the budget charging is delayed into the next major cycle due to a late interrupt or other sources of delay.
* P-RES: keep track in per-task state of whether it suspendedBjoern Brandenburg2014-09-17
| | | | | Checking state->scheduled is not accurate when bandwidth inheritance is applied.
* P-RES: disable LITMUS^RT's standard budget enforcementBjoern Brandenburg2014-09-17
| | | | | | | The P-RES plugin is currently not compatible with the per-thread budget enforcement logic, which can trigger assertion failures. For now, let's simply disable per-thread timeslice enforcement. (P-RES's reservations are a much better mechanism anyway.)
* P-RES: allocation in pres_admit_task() must be atomicBjoern Brandenburg2014-09-17
| | | | | | The kernel codepath calling into pres_admit_task() is holding some lock unrelated to LITMUS^RT. As a result, we need to pass GFP_ATOMIC, not just GFP_KERNEL, to kzalloc().
* Reservations: keep track of consumed budgetBjoern Brandenburg2014-09-15
| | | | This can be a useful stat for userspace.
* P-RES: fix rare deadlock via hrtimer_start()Bjoern Brandenburg2014-09-12
| | | | | | | | | | | | | | | | | | There's a rare condition under which the current call to hrtimer_start() in pres_update_timer() may result in deadlock. pres_update_timer() // holds runqueue lock and state->lock -> hrtimer_start() -> raise_softirq_irqoff() -> wakeup_softirqd() -> wake_up_process() -> acquires runqueue lock() To avoid this, we need to call __hrtimer_start_range_ns() with the 'wakeup' flag set to zero. While at it, also drop the state->lock before calling into hrtimer(), to avoid making the scheduler critical section longer than necessary.
* Move 'reservation' field from task_client to generic reservation_clientBjoern Brandenburg2014-09-11
| | | | | | This makes it a lot easier to write generic code for thread arrival / thread departure in plugins with multiple types of reservation clients.
* Table-driven replenishments should depend on the current timeBjoern Brandenburg2014-09-08
| | | | | | Make sure we don't accidentally bleed past the current reservation scheduling slot (due to jitter) by determining the remaining budget precisely when replenishing the reservation budget.
* P-RES: ensure scheduler timer fires on _local_ CPU onlyBjoern Brandenburg2014-09-08
| | | | | | Accidentally setting up the timer on the wrong CPU when a thread resumes is problematic can lead (potentially) to deadlock and to missed scheduling events.
* Switch table-driven reservations to use table-driven budgetBjoern Brandenburg2014-09-04
| | | | | Instead of counting how much budget has been consumed, determine budget based on actual time slots.
* Fix scheduler invocation after draining budgetNamhoon Kim2014-09-04
|
* Add partitioned reservation-based scheduler plugin (P-RES)Bjoern Brandenburg2014-07-21
| | | | | | A simple partitioned scheduler that provides a reservation environment on each core, based on the generic reservations code. Hierarchical scheduling is not supported in this version.
* Add basic generic reservation-based scheduling infrastructureBjoern Brandenburg2014-07-21
|
* Add reservation creation API to plugin interface & syscallsBjoern Brandenburg2014-07-21
|
* default_wait_for_release_at() should invoke plugin callbackBjoern Brandenburg2014-07-21
| | | | | | | Instead of calling complete_job() directly, the default implementation of wait_for_release_at() should invoke the plugin-provided complete_job() method to support plugins that happen to override complete_job(), but not wait_for_release_at().
* PFAIR: set release time of new tasksBjoern Brandenburg2014-06-12
| | | | | | | | | | Without a proper release time, the job will be considered "lagging behind" for quite a while, which breaks the period enforcement. This bug manifested only in the absence of a synchronous release (which set a proper release time). This patch simply sets the beginning of the next quantum as the release time of the first job of a newly added task.
* Add PD^2 scheduler pluginBjoern Brandenburg2014-06-07
|
* Add C-EDF scheduler pluginBjoern Brandenburg2014-06-07
|
* Add P-FP scheduler pluginBjoern Brandenburg2014-06-07
|
* Add GSN-EDF scheduler pluginBjoern Brandenburg2014-06-07
|
* Add PSN-EDF scheduler pluginBjoern Brandenburg2014-06-07
|
* Move trace point definition to litmus/litmus.cBjoern Brandenburg2014-06-07
| | | | | | | | If !CONFIG_SCHED_TASK_TRACE, but CONFIG_SCHED_LITMUS_TRACEPOINT, then we still need to define the tracepoint structures. This patch should be integrated with the earlier sched_task_trace.c patches during one of the next major rebasing efforts.
* Add LITMUS^RT core implementationBjoern Brandenburg2014-06-07
| | | | | | | | | | | | | This patch adds the core of LITMUS^RT: - library functionality (heaps, rt_domain, prioritization, etc.) - budget enforcement logic - job management - system call backends - virtual devices (control page, etc.) - scheduler plugin API (and dummy plugin) This code compiles, but is not yet integrated with the rest of Linux.
* Add tracepoint supportBjoern Brandenburg2014-06-07
| | | | | | | This patch integrates LITMUS^RT's sched_trace_XXX() macros with Linux's notion of tracepoints. This is useful to visualize schedules in kernel shark and similar tools. Historically, LITMUS^RT's sched_trace predates Linux's tracepoint infrastructure.
* Add schedule tracing supportBjoern Brandenburg2014-06-07
| | | | | | This patch introduces the sched_trace infrastructure, which in principle allows tracing the generated schedule. However, this patch does not yet integrate the callbacks with the kernel.
* Feather-Trace: write interrupt counts to control pageBjoern Brandenburg2014-06-07
| | | | | This patch exports the interrupt counter to userspace via the control page.
* Feather-Trace: use proper definition of is_realtime()Bjoern Brandenburg2014-06-07
| | | | Remove dummy implementation of is_realtime() in trace.c.
* Add TRACE() debug tracing supportBjoern Brandenburg2014-06-07
| | | | This patch adds the infrastructure for the TRACE() debug macro.
* Feather-Trace: add LITMUS^RT overhead tracing infrastructureBjoern Brandenburg2014-06-07
| | | | | This patch adds the main infrastructure for tracing overheads in LITMUS^RT. It does not yet introduce any tracepoints into the kernel.
* Feather-Trace: add generic ftdev device driverBjoern Brandenburg2014-06-02
| | | | | This patch adds the ftdev device driver, which is used to export samples collected with Feather-Trace to userspace.
* Feather-Trace: add x86 binary rewriting implementationBjoern Brandenburg2014-06-02
| | | | | This patch adds the x86-specific implementation of Feather-Trace triggers that works by rewriting jump instructions.
* Feather-Trace: add platform independent implementationBjoern Brandenburg2014-06-02
| | | | | This patch adds the simple fallback implementation and creates dummy hooks in the x86 and ARM Kconfig files.
* Add LITMUS^RT directoryBjoern Brandenburg2014-06-02
Hookup litmus/ with kernel and add extra version.