[ranguvar@khufu linux-torvalds]$ git bisect start status: waiting for both good and bad commits [ranguvar@khufu linux-torvalds]$ git bisect bad v6.12 status: waiting for good commit(s), bad commit known [ranguvar@khufu linux-torvalds]$ git bisect good v6.11 Bisecting: 7334 revisions left to test after this (roughly 13 steps) [509d2cd12a10d057fdf72f565b930f9a81140d59] Merge tag 'Smack-for-6.12' of https://github.com/cschaufler/smack-next [ranguvar@khufu linux-torvalds]$ git bisect bad 2004cef11ea0 # Known bad commit roughly in middle, tested many times Bisecting: 3701 revisions left to test after this (roughly 12 steps) [7b17f5ebd5fc5e9275eaa5af3d0771f2a7b01bbf] Merge tag 'soc-dt-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc [ranguvar@khufu linux-torvalds]$ git describe v6.11-3635-g7b17f5ebd5fc [ranguvar@khufu linux-torvalds]$ git bisect good 7b17f5ebd5fc Bisecting: 1825 revisions left to test after this (roughly 11 steps) [3a7101e9b27fe97240c2fd430c71e61262447dd1] Merge tag 'powerpc-6.12-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux [ranguvar@khufu linux-torvalds]$ git describe v6.11-5511-g3a7101e9b27f [ranguvar@khufu linux-torvalds]$ git bisect good 3a7101e9b27f Bisecting: 912 revisions left to test after this (roughly 10 steps) [6dcc304f85898b099b35c63748c5e11ba56d0c8a] drm/amd/display: Resolve Coverity Issues [ranguvar@khufu linux-torvalds]$ git describe v6.11-rc5-913-g6dcc304f8589 [ranguvar@khufu linux-torvalds]$ git bisect good 6dcc304f8589 Bisecting: 469 revisions left to test after this (roughly 9 steps) [ae2c6d8b3b88c176dff92028941a4023f1b4cb91] Merge tag 'drm-xe-next-fixes-2024-09-12' of https://gitlab.freedesktop.org/drm/xe/kernel into drm-next [ranguvar@khufu linux-torvalds]$ git describe v6.11-rc7-1356-gae2c6d8b3b88 [ranguvar@khufu linux-torvalds]$ git bisect good ae2c6d8b3b88 Bisecting: 242 revisions left to test after this (roughly 8 steps) [a65b3c3ed49a3b8068c002e98c90f8594927ff25] Merge tag 'hid-for-linus-2024091602' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid [ranguvar@khufu linux-torvalds]$ git describe v6.11-5738-ga65b3c3ed49a [ranguvar@khufu linux-torvalds]$ git bisect good a65b3c3ed49a Bisecting: 148 revisions left to test after this (roughly 7 steps) [cff06a799dbe81f3a697ae7c805eaf88d30c2308] Merge patch series "smartpqi updates" [ranguvar@khufu linux-torvalds]$ git describe v6.11-rc1-94-gcff06a799dbe [ranguvar@khufu linux-torvalds]$ git bisect good cff06a799dbe Bisecting: 74 revisions left to test after this (roughly 6 steps) [839c4f596f898edc424070dc8b517381572f8502] Merge tag 'mm-hotfixes-stable-2024-09-19-00-31' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm [ranguvar@khufu linux-torvalds]$ git describe v6.11-7262-g839c4f596f89 [ranguvar@khufu linux-torvalds]$ git bisect good 839c4f596f89 Bisecting: 37 revisions left to test after this (roughly 5 steps) [152e11f6df293e816a6a37c69757033cdc72667d] sched/fair: Implement delayed dequeue [ranguvar@khufu linux-torvalds]$ git describe v6.11-rc1-42-g152e11f6df29 [ranguvar@khufu linux-torvalds]$ git bisect skip # Fails to compile with Makefile error Bisecting: 37 revisions left to test after this (roughly 5 steps) [54a58a78779169f9c92a51facf6de7ce94962328] sched/fair: Implement DELAY_ZERO [ranguvar@khufu linux-torvalds]$ git describe v6.11-rc1-43-g54a58a787791 [ranguvar@khufu linux-torvalds]$ git bisect good 54a58a787791 Bisecting: 17 revisions left to test after this (roughly 4 steps) [6b9ccbc033cf179956a37fef3ee415bdc3029d2f] kthread: Fix task state in kthread worker if being frozen [ranguvar@khufu linux-torvalds]$ git describe v6.11-rc1-62-g6b9ccbc033cf [ranguvar@khufu linux-torvalds]$ git bisect bad 6b9ccbc033cf Bisecting: 8 revisions left to test after this (roughly 3 steps) [4686cc598f669dea1b50dde1568e6c65c355bc67] sched: Clean up DL server vs core sched [ranguvar@khufu linux-torvalds]$ git describe v6.11-rc1-53-g4686cc598f66 [ranguvar@khufu linux-torvalds]$ git bisect good 4686cc598f66 Bisecting: 3 revisions left to test after this (roughly 2 steps) [b2d70222dbf2a2ff7a972a685d249a5d75afa87f] sched: Add put_prev_task(.next) [ranguvar@khufu linux-torvalds]$ git describe v6.11-rc1-58-gb2d70222dbf2 [ranguvar@khufu linux-torvalds]$ git bisect bad b2d70222dbf2 Bisecting: 1 revision left to test after this (roughly 1 step) [436f3eed5c69c1048a5754df6e3dbb291e5cccbd] sched: Combine the last put_prev_task() and the first set_next_task() [ranguvar@khufu linux-torvalds]$ git describe v6.11-rc1-56-g436f3eed5c69 [ranguvar@khufu linux-torvalds]$ git bisect good 436f3eed5c69 Bisecting: 0 revisions left to test after this (roughly 0 steps) [bd9bbc96e8356886971317f57994247ca491dbf1] sched: Rework dl_server [ranguvar@khufu linux-torvalds]$ git describe v6.11-rc1-57-gbd9bbc96e835 [ranguvar@khufu linux-torvalds]$ git bisect bad bd9bbc96e835 bd9bbc96e8356886971317f57994247ca491dbf1 is the first bad commit commit bd9bbc96e8356886971317f57994247ca491dbf1 (HEAD) Author: Peter Zijlstra Date: Wed Aug 14 00:25:55 2024 +0200 sched: Rework dl_server When a task is selected through a dl_server, it will have p->dl_server set, such that it can account runtime to the dl_server, see update_curr_task(). Currently p->dl_server is set in pick*task() whenever it goes through the dl_server, clearing it is a bit of a mess though. The trivial solution is clearing it on the final put (now that we have this location). However, this gives a problem when: p = pick_task(rq); if (p) put_prev_set_next_task(rq, prev, next); picks the same task but through a different path, notably when it goes from picking through the dl_server to a direct pick or vice-versa. In that case we cannot readily determine wether we should clear or preserve p->dl_server. An additional complication is pick_*task() setting p->dl_server for a remote pick, it might still need to update runtime before it schedules the core_pick. Close all these holes and remove all the random clearing of p->dl_server by: - having pick_*task() manage rq->dl_server - having the final put_prev_task() clear p->dl_server - having the first set_next_task() set p->dl_server = rq->dl_server - complicate the core_sched code to save/restore rq->dl_server where appropriate. Signed-off-by: Peter Zijlstra (Intel) Link: https://lore.kernel.org/r/20240813224016.259853414@infradead.org kernel/sched/core.c | 40 +++++++++++++++------------------------- kernel/sched/deadline.c | 2 +- kernel/sched/fair.c | 10 ++-------- kernel/sched/sched.h | 14 ++++++++++++++ 4 files changed, 32 insertions(+), 34 deletions(-)