| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
| |
Remaining work for global OMLP is just to add a check for inh_res
in higher_res_prio.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
see comments left on clear_inheritance_prio
|
|
|
|
|
|
|
|
|
|
|
| |
Unlink in gedf_reservation would try to unlink a task that's not linked
nor in the ready queue. It is in fact in the release queue. This happens
when multiple check_for_preemptions occur simultaneously, and causes a
task to be "scheduled" on 2 cpu_entries simultaneously while out of
budget. Thus, both cpus in update_time replenishes the budget and tries
to unlink it. The first one succeeds, while the second fails.
For more details on how this occurs, see the comment in update_time in
gedf_reservation.c
|
| |
|
|\
| |
| |
| |
| | |
Merge in change to reservation priority to avoid swapping order
of calls to higher_res_prio.
|
| |
| |
| |
| |
| | |
Now set to ULLONG_MAX - deadline(absolute). This fixes logic issues in
using higher_res_prio when one parameter is null
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Dynamic CPU entry/exit changes:
- Fix build with CONFIG_RELEASE_MASTER
- Migrate gedf_env release timer when a core is suspended
- Fix race condition in gedf_env core resume
- Add documentation
- Allow for gedf_env_suspend() and gedf_env_resume() to be called
on CPUs that have already been suspended or resumed. (They do
nothing in those cases.)
Portability:
- Allocate space in `gedf_reservation_environment` using
`num_online_cpus()` rather than `NR_CPUS`. Otherwise the stack
frame can overflow when `NR_CPUS` is large.
- Assign `plugin_state` from the plugin rather than the extended
reservations code to support other uses of `plugin_state`.
Misc:
- Improve robustnesss of `gedf_env_is_np()`
- Don't memset with 0 memory already zeroed-out by `kzalloc()`
- Use GFP_ATOMIC for allocations when in a scheduling context
|
| |
| |
| |
| | |
priority inheritance.
|
| |
| |
| |
| | |
inheritance.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Dynamic CPU entry/exit changes:
- Fix build with CONFIG_RELEASE_MASTER
- Migrate gedf_env release timer when a core is suspended
- Fix race condition in gedf_env core resume
- Add documentation
- Allow for gedf_env_suspend() and gedf_env_resume() to be called
on CPUs that have already been suspended or resumed. (They do
nothing in those cases.)
Portability:
- Allocate space in `gedf_reservation_environment` using
`num_online_cpus()` rather than `NR_CPUS`. Otherwise the stack
frame can overflow when `NR_CPUS` is large.
- Assign `plugin_state` from the plugin rather than the extended
reservations code to support other uses of `plugin_state`.
Misc:
- Improve robustnesss of `gedf_env_is_np()`
- Don't memset with 0 memory already zeroed-out by `kzalloc()`
- Use GFP_ATOMIC for allocations when in a scheduling context
|
|/ |
|
|
|
|
|
|
|
|
|
|
| |
Bugs fixed:
- cpu priority comparison in gedf environment made it so cpus were
ordered opposite to what they are supposed to
- shutdown of component did not free all memory
Note: It is up to the table maker such that components do not cause
cross migrations of tasks
|
|
|
|
|
|
|
|
|
|
| |
Fixed the following:
-reservations(both mtd and gedf) were not properly added to the all_reservations list that
allows it to be found by find_res_by_id
-mtd_reservations not linked after it has been allocated
-fixed mtd_env_dispatch logic so that when nothing is in ready_queue, it
scheduled NULL instead of currently scheduled reservation
-fixed find_res_by_id forgetting to release lock
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Also, includes WIP of component allocator. This WIP is not included in
the makefile so it won't mess up the compilation.
|
|
|
|
|
|
|
|
|
|
|
| |
Changed gedf_reservation_environment suspend and resume logic to better support
a cleverer way of handling mapping real cpu to environment cpu_entries.
This removes the cpu_mapping variable which forces a multi-core component to
update cpu_mapping on one core(the first one to call schedule).
The new logic decentralizes this process, and allows a component to be
scheduled on a completely new set of cores in 1 scheduling pass.
|
| |
|
|
|
|
|
| |
Encounters problem where task waits an extra period due to
sleep(unresolved)
|
|
|
|
| |
Works under preliminary tests
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
| |
Didn't fail thanks to the CHECK
|
|
|
| |
This did not turn into an error thanks to the ```CHECK(should_wait_for_stack)``` at the registering function
|
| |
|
|\
| |
| | |
add missing curly braces to error path
|
|/
|
| |
Error with the curly braquets
|
|
|
|
|
| |
To allow userspace to determine when exactly a synchronous release
should occur.
|
| |
|
| |
|
|
|
|
|
| |
Instead of replicating this code across all supported architectures,
hook into the IPI code only once.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
The platform code does not synchronize anything, so make sure there's
only one caller at any time.
|
| |
|
| |
|