diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2013-01-21 20:00:29 -0500 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2013-01-21 20:00:29 -0500 |
commit | 95717fa9f4b9f725928e898c42fb0e711e896311 (patch) | |
tree | 6c552bd879cdafcd90b6bdacdc167338dd3189bf /litmus/nvidia_info.c | |
parent | 84aa3706d63edda13560ff812740cac0adf744e1 (diff) |
Fixed case where blocked tasks are released.
Fixed bug where AUX tasks were being added to the
ready queue while those AUX tasks were actually blocked.
Bug stems from the fact that the AUX tasks do not
make themselves realtime, but another thread does this
instead. Also fixed minor bugs elsewhere.
NOTE: ONLY FIXES C-EDF. OTHER PLUGINS REMAIN TO BE FIXED.
Diffstat (limited to 'litmus/nvidia_info.c')
-rw-r--r-- | litmus/nvidia_info.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/litmus/nvidia_info.c b/litmus/nvidia_info.c index 7160bb85ac9d..dda863009fee 100644 --- a/litmus/nvidia_info.c +++ b/litmus/nvidia_info.c | |||
@@ -729,6 +729,7 @@ int gpu_owner_increase_priority(struct task_struct *t) | |||
729 | binheap_decrease(&tsk_rt(t)->gpu_owner_node, ®->owners); | 729 | binheap_decrease(&tsk_rt(t)->gpu_owner_node, ®->owners); |
730 | } | 730 | } |
731 | 731 | ||
732 | #ifdef CONFIG_LITMUS_SOFTIRQD | ||
732 | hp = container_of(binheap_top_entry(®->owners, struct rt_param, gpu_owner_node), | 733 | hp = container_of(binheap_top_entry(®->owners, struct rt_param, gpu_owner_node), |
733 | struct task_struct, rt_param); | 734 | struct task_struct, rt_param); |
734 | 735 | ||
@@ -738,6 +739,7 @@ int gpu_owner_increase_priority(struct task_struct *t) | |||
738 | 739 | ||
739 | retval = gpu_klmirqd_increase_priority(reg->thread, hp_eff); | 740 | retval = gpu_klmirqd_increase_priority(reg->thread, hp_eff); |
740 | } | 741 | } |
742 | #endif | ||
741 | 743 | ||
742 | out: | 744 | out: |
743 | return retval; | 745 | return retval; |
@@ -774,6 +776,7 @@ int gpu_owner_decrease_priority(struct task_struct *t) | |||
774 | binheap_add(&tsk_rt(t)->gpu_owner_node, ®->owners, | 776 | binheap_add(&tsk_rt(t)->gpu_owner_node, ®->owners, |
775 | struct rt_param, gpu_owner_node); | 777 | struct rt_param, gpu_owner_node); |
776 | 778 | ||
779 | #ifdef CONFIG_LITMUS_SOFTIRQD | ||
777 | if (hp == t) { /* t was originally the hp */ | 780 | if (hp == t) { /* t was originally the hp */ |
778 | struct task_struct *new_hp = | 781 | struct task_struct *new_hp = |
779 | container_of(binheap_top_entry(®->owners, struct rt_param, gpu_owner_node), | 782 | container_of(binheap_top_entry(®->owners, struct rt_param, gpu_owner_node), |
@@ -784,6 +787,7 @@ int gpu_owner_decrease_priority(struct task_struct *t) | |||
784 | retval = gpu_klmirqd_decrease_priority(reg->thread, hp_eff); | 787 | retval = gpu_klmirqd_decrease_priority(reg->thread, hp_eff); |
785 | } | 788 | } |
786 | } | 789 | } |
790 | #endif | ||
787 | 791 | ||
788 | out: | 792 | out: |
789 | return retval; | 793 | return retval; |