Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'sched_urgent_for_v6.18_rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull scheduler fixes from Borislav Petkov:

- Make sure the check for lost pelt idle time is done unconditionally
to have correct lost idle time accounting

- Stop the deadline server task before a CPU goes offline

* tag 'sched_urgent_for_v6.18_rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
sched/fair: Fix pelt lost idle time detection
sched/deadline: Stop dl_server before CPU goes offline

+18 -13
+2
kernel/sched/core.c
··· 8571 8571 sched_tick_stop(cpu); 8572 8572 8573 8573 rq_lock_irqsave(rq, &rf); 8574 + update_rq_clock(rq); 8574 8575 if (rq->nr_running != 1 || rq_has_pinned_tasks(rq)) { 8575 8576 WARN(true, "Dying CPU not properly vacated!"); 8576 8577 dump_rq_tasks(rq, KERN_WARNING); 8577 8578 } 8579 + dl_server_stop(&rq->fair_server); 8578 8580 rq_unlock_irqrestore(rq, &rf); 8579 8581 8580 8582 calc_load_migrate(rq);
+3
kernel/sched/deadline.c
··· 1582 1582 if (!dl_server(dl_se) || dl_se->dl_server_active) 1583 1583 return; 1584 1584 1585 + if (WARN_ON_ONCE(!cpu_online(cpu_of(rq)))) 1586 + return; 1587 + 1585 1588 dl_se->dl_server_active = 1; 1586 1589 enqueue_dl_entity(dl_se, ENQUEUE_WAKEUP); 1587 1590 if (!dl_task(dl_se->rq->curr) || dl_entity_preempt(dl_se, &rq->curr->dl))
+13 -13
kernel/sched/fair.c
··· 8920 8920 return p; 8921 8921 8922 8922 idle: 8923 - if (!rf) 8924 - return NULL; 8923 + if (rf) { 8924 + new_tasks = sched_balance_newidle(rq, rf); 8925 8925 8926 - new_tasks = sched_balance_newidle(rq, rf); 8926 + /* 8927 + * Because sched_balance_newidle() releases (and re-acquires) 8928 + * rq->lock, it is possible for any higher priority task to 8929 + * appear. In that case we must re-start the pick_next_entity() 8930 + * loop. 8931 + */ 8932 + if (new_tasks < 0) 8933 + return RETRY_TASK; 8927 8934 8928 - /* 8929 - * Because sched_balance_newidle() releases (and re-acquires) rq->lock, it is 8930 - * possible for any higher priority task to appear. In that case we 8931 - * must re-start the pick_next_entity() loop. 8932 - */ 8933 - if (new_tasks < 0) 8934 - return RETRY_TASK; 8935 - 8936 - if (new_tasks > 0) 8937 - goto again; 8935 + if (new_tasks > 0) 8936 + goto again; 8937 + } 8938 8938 8939 8939 /* 8940 8940 * rq is about to be idle, check if we need to update the