Uh oh!
There was an error while loading. Please reload this page.
edf_schedule: reimplement the whole EDF scheduler - #1710
Conversation
lgirdwood
commented
Aug 7, 2019
@mengdonglin@keqiaozhang this is P1 for testing on legacy. |
lgirdwood
commented
Aug 7, 2019
@tlauda this should be our last big ticket item prior to v1.4-rc1 |
tlauda
commented
Aug 7, 2019
@lgirdwood@keqiaozhang@mengdonglin There seems to be some problem with non SMP configurations, so let me fix it first thing tomorrow and then you can test it on legacy. |
jajanusz
commented
Aug 7, 2019
CI builds also APL for 1 core and it works. |
tlauda
commented
Aug 8, 2019
@jajanusz Yes, I fixed it after my last comment and it worked for APL. Still doesn't work for legacy platforms. |
dbaluta
commented
Aug 8, 2019
@tlauda can you please mention in the commit message what are the limitation of the old scheduler and why do we need to change it? |
090d2b1 to
7d78e15Comparetlauda
commented
Aug 8, 2019
@mengdonglin@keqiaozhang You can now test it on legacy platforms. There is still minor issue with APL, because we don't have enough buffer space for the topology. |
02b26cf to
4146ec6Comparejajanusz
commented
Aug 12, 2019
SOFCI TEST |
1 similar comment
tlauda
commented
Aug 20, 2019
SOFCI TEST |
tlauda
commented
Aug 20, 2019
@lgirdwood@mmaka1 Any comments? |
tlauda
commented
Aug 26, 2019
SOFCI TEST |
tlauda
commented
Aug 30, 2019
@dbaluta@lgirdwood@mmaka1 There is no regression in the CI. Anyone dare to review? |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
lgirdwood
left a comment
There was a problem hiding this comment.
I would split this into some smaller incremental PRs too. The HAL changes could be seperated out and merged first if they dont break any existing code. Btw, does this align the HAL with latest ??
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
We need to comment what we are changing in xtensa HAL and why. Does this also align with latest CAVS version ??
There was a problem hiding this comment.
Every single operation in the assembly code is commented.
What do you mean by "latest CAVS version"?
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
tlauda
commented
Sep 2, 2019
@dbaluta@mmaka1 Solved all your suggestions. I hope now it is more clear. |
tlauda
commented
Sep 5, 2019
SOFCI TEST |
Defines and adds dedicated stacks for interrupt handlers to core data. They are required to implement the execution context switching, which is useful for any preemptive scheduler. EDF is the first scheduler for which they will be used. Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Passes sof context structure to the schedulers during scheduler initialization. It will be required by the new EDF scheduler. Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Removes two tests which don't really test anything and are based on magic numbers. Changing memory map can easily break them. Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Increases HP Buffer Heap and Runtime System Heap sizes in order to fit all the pipeline buffers. Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
This patch implements the new version of EDF scheduler. This is the first basic implementation, which can be easily extended in the future. Previous implementation had two major flaws: - Tasks could only be preempted based on the interrupt level on which they have been scheduled, so it was limited based on the hardware. - This led to the system not fully utilized, so we could never achieve full EDF functionality. The new implementation uses only one software interrupt and allows for dynamic context switching between different tasks based on the deadline. Also for some cases priority is taken into consideration e.g. for idle and almost idle tasks, which don't have deadline at all and should be executed only if the system is free. All other normal tasks should have the same priority. Task chosen to be run is executed on passive level, so automatically can be preempted by every interrupt. Every task has its own private stack on which current context is saved and restored if needed. Note that main firmware loop is task scheduled with idle priority, so it will be executed only after every other task is completed. Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
tlauda
commented
Sep 5, 2019
SOFCI TEST |
lgirdwood
commented
Sep 6, 2019
The CI failures look like they are not related to this PR but to this bug thesofproject/linux#1183 |
This patch reimplements the whole EDF scheduler.
This is the first basic version, which can be easily extended
in the future. The new implementation uses only one
software interrupt and allows for dynamic context switching
between different tasks based on the priority and deadline.
Task chosen to be run is executed on passive level, so automatically
can be preempted by every interrupt. Every task has its own private
stack on which current context is saved and restored if needed.
Note that main firmware loop is task scheduled with idle priority,
so it will be executed only after every other task is completed.
Signed-off-by: Tomasz Lauda tomasz.lauda@linux.intel.com