| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
| |
Don't set a release timer for jobs that are tardy and already
released.
|
|
|
|
|
| |
Checking state->scheduled is not accurate when bandwidth inheritance
is applied.
|
|
|
|
|
|
|
| |
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.)
|
|
|
|
|
|
| |
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().
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
This makes it a lot easier to write generic code for thread arrival /
thread departure in plugins with multiple types of reservation
clients.
|
|
|
|
|
|
| |
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.
|
|
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.
|