Pull scheduler fixes from Borislav Petkov: - Prevent incorrect dequeueing of the deadline dlserver helper task and fix its time accounting - Properly track the CFS runqueue runnable stats - Check the total number of all queued tasks in a sched fair's runqueue hierarchy before deciding to stop the tick - Fix the scheduling of the task that got woken last (NEXT_BUDDY) by preventing those from being delayed * tag 'sched_urgent_for_v6.13_rc3-p2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: sched/dlserver: Fix dlserver time accounting sched/dlserver: Fix dlserver double enqueue sched/eevdf: More PELT vs DELAYED_DEQUEUE sched/fair: Fix sched_can_stop_tick() for fair tasks sched/fair: Fix NEXT_BUDDY
Showing the changes to include/linux (1 of 7 files). Show all
Unified · Split
| @@ -656,6 +656,12 @@ struct sched_dl_entity { · 655 unmodified lines | |||
| 656 | * @dl_defer_armed tells if the deferrable server is waiting | 656 | * @dl_defer_armed tells if the deferrable server is waiting |
| 657 | * for the replenishment timer to activate it. | 657 | * for the replenishment timer to activate it. |
| 658 | * | 658 | * |
| 659 | * @dl_server_active tells if the dlserver is active(started). | ||
| 660 | * dlserver is started on first cfs enqueue on an idle runqueue | ||
| 661 | * and is stopped when a dequeue results in 0 cfs tasks on the | ||
| 662 | * runqueue. In other words, dlserver is active only when cpu's | ||
| 663 | * runqueue has atleast one cfs task. | ||
| 664 | * | ||
| 659 | * @dl_defer_running tells if the deferrable server is actually | 665 | * @dl_defer_running tells if the deferrable server is actually |
| 660 | * running, skipping the defer phase. | 666 | * running, skipping the defer phase. |
| 661 | */ | 667 | */ |
| @@ -664,6 +670,7 @@ struct sched_dl_entity { · 2 unmodified lines | |||
| 664 | unsigned int dl_non_contending : 1; | 670 | unsigned int dl_non_contending : 1; |
| 665 | unsigned int dl_overrun : 1; | 671 | unsigned int dl_overrun : 1; |
| 666 | unsigned int dl_server : 1; | 672 | unsigned int dl_server : 1; |
| 673 | unsigned int dl_server_active : 1; | ||
| 667 | unsigned int dl_defer : 1; | 674 | unsigned int dl_defer : 1; |
| 668 | unsigned int dl_defer_armed : 1; | 675 | unsigned int dl_defer_armed : 1; |
| 669 | unsigned int dl_defer_running : 1; | 676 | unsigned int dl_defer_running : 1; |