aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* Fixed Occasional Deadlock when schedulingforbidden-zonesZelin Tong2020-10-23
| | | | | | | | | | | | | | | | | Problem: When multiple scheduling events occur simultaneously, a situation could happen where: - one core schedules a task that is linked to it - a check_for_preemption occurs due to another scheduling event - that task is now linked to another core - the other core tries to schedule it but can't grab the task from the runqueue of the other core Solution: Added in the scheduled_on field in gedf_reservation. This enables us in link_task_to_cpu to check for this occuring and swap the linking so the above situation doesn't happen. The code is taken and modified from link_task_to_cpu in GSN-EDF
* Fixed conflicts between ext_res and litmus budget trackingZelin Tong2020-10-23
| | | | | | | | | | | | | Problem: When using litmus's budget enforcement, due various overheads, the task's budget and the gedf_res's budget may differ a bit. When the task overruns its budget but due to this difference still has budget according to gedf_res, this can cause litmus to bug out due to error checking in litmus's budget enforcement code. Solution: Made sure not to dispatch the task if it's out of budget in gedf_task_dispatch_client
* Removed incorrect TRACE_TASK.Tanya Amert2020-10-20
|
* Added system call to block if in a forbidden zone.Tanya Amert2020-10-20
| | | | | | | | Note that this call assumes the caller already holds the lock. Also, this is currently only supported for the global OMLP under EXT-RES scheduling. This does not include any "skipping ahead" mechanism.
* Have a hard-coded component-wide forbidden zone working.Tanya Amert2020-10-19
|
* Another status update in the quest for a global forbidden zone.Tanya Amert2020-10-18
|
* Still working on global FZs (hard-coded at 100ms), waking up not always working.Tanya Amert2020-10-18
|
* Super WIP of global FZs, includes stuff to revert later.Tanya Amert2020-10-17
|
* Added global OMLP to EXT-RES scheduler.Tanya Amert2020-10-15
| | | | | This includes priority inheritance, but no concept of forbidden zones.
* Added global OMLP to GSN-EDF.Tanya Amert2020-10-15
| | | | | This is the variant of the OMLP that uses priority inheritance, and comes from BBB's dissertation work.
* Remove duplicate or unused functions + style cleanupJoshua Bakita2020-10-14
| | | | | Reduces the size of our diff from upstream litmus and should have no impact on functionality. Ported from MC^2.
* Removed old printk statements.Tanya Amert2020-10-14
|
* Setup new framework for approaching prio inheritanceZelin Tong2020-10-14
|
* Fixed obscure edge case regarding unlinkZelin Tong2020-10-14
| | | | | | | | | | | 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
* Changed how priority is set in gedf_reservationsZelin Tong2020-10-13
| | | | | Now set to ULLONG_MAX - deadline(absolute). This fixes logic issues in using higher_res_prio when one parameter is null
* Improve portability and fix dynamic CPU entry/exit in gedf_envJoshua Bakita2020-10-11
| | | | | | | | | | | | | | | | | | | | | 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
* Fixed various bugsZelin Tong2020-10-09
| | | | | | | | | | 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 bugs with adding reservations, adding tasksZelin Tong2020-10-07
| | | | | | | | | | 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
* Can now install tables correctlyZelin Tong2020-10-02
|
* EXT-RES Checkpoint 2 - Hardly Tested.Zelin Tong2020-09-30
|
* C2 WIP2Zelin Tong2020-09-30
|
* Checkpoint 2 WIPZelin Tong2020-09-30
|
* added support for np-sections in GEDF reservation.Zelin Tong2020-09-28
| | | | | Also, includes WIP of component allocator. This WIP is not included in the makefile so it won't mess up the compilation.
* Updated gedf_reservation suspend and resume logicZelin Tong2020-09-24
| | | | | | | | | | | 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.
* Fixed Period Skipping Issue on Tasks that Overrun WCETZelin Tong2020-09-23
|
* Checkpoint1(Updated)Zelin Tong2020-09-23
| | | | | Encounters problem where task waits an extra period due to sleep(unresolved)
* Checkpoint1 modified to support Checkpoint2 work.Zelin Tong2020-09-22
| | | | Works under preliminary tests
* Backup Commit 2Zelin Tong2020-09-21
|
* WIP commit backupZelin Tong2020-09-16
|
* Backup CommitZelin Tong2020-09-15
|
* Extended Reservation Initial CommitZelin Tong2020-08-24
|
* Add missing function litmus_dummy_fork_taskCarlos Bilbao2020-04-15
|
* Add missing function litmus_dummy_task_cleanupCarlos Bilbao2020-04-15
|
* Missing function litmus_dummy_next_became_invalidCarlos Bilbao2020-04-15
| | | Didn't fail thanks to the CHECK
* Add missing function for the dummy litmus pluginCarlos Bilbao2020-04-15
| | | This did not turn into an error thanks to the ```CHECK(should_wait_for_stack)``` at the registering function
* Fixed small typo in "reschedule"Carlos Bilbao2020-01-28
|
* Merge pull request #9 from Zildj1an/patch-2Björn Brandenburg2019-04-09
|\ | | | | add missing curly braces to error path
| * Small fixCarlos Bilbao2019-04-06
|/ | | Error with the curly braquets
* LITMUS^RT core: use absolute synchronous release timesBjoern Brandenburg2017-07-12
| | | | | To allow userspace to determine when exactly a synchronous release should occur.
* arm64: rescheduling handler IPI does not call irq_enter()Bjoern Brandenburg2017-06-15
|
* arm64: add LITMUS^RT KConfigBjoern Brandenburg2017-06-15
|
* Core: call IPI notifier from generic scheduler IPI handlerBjoern Brandenburg2017-06-15
| | | | | Instead of replicating this code across all supported architectures, hook into the IPI code only once.
* Xen/x86: remove LITMUS^RT IPI notifierBjoern Brandenburg2017-06-15
|
* x86: remove LITMUS^RT IPI notifierBjoern Brandenburg2017-06-15
|
* ARM: remove LITMUS^RT IPI notifierBjoern Brandenburg2017-06-15
|
* Feather-Trace device interface: synchronize event activation/deactivationBjoern Brandenburg2017-06-09
| | | | | The platform code does not synchronize anything, so make sure there's only one caller at any time.
* Feather-trace header: RODATA adjustmentsBjoern Brandenburg2017-06-09
|
* Feather-trace generic: deal with RODATA always being onBjoern Brandenburg2017-06-09
|
* Feather-Trace: make x86 rewriting impl work despite RO textBjoern Brandenburg2017-06-09
| | | | | Mirror what ftrace does to ensure that we can patch up the text segment.
* litmus/preempt.h: do not pollute namespace with TRACE()Bjoern Brandenburg2017-06-09
| | | | | | | This file is indirectly included in a _a lot_ of Linux. A generic name like TRACE causes a symbol clashes in drivers, SquashFS, etc. To avoid this, use only the LITMUS-prefixed version in preempt.h.