CC: [email protected] TO: Juri Lelli <[email protected]> tree: https://github.com/jlelli/linux.git fixes/rt-double_enqueue head: f06324e1cbda29c75934fd8596ec7048deb9d810 commit: f06324e1cbda29c75934fd8596ec7048deb9d810 [1/1] sched/rt: Fix double enqueue cause by rt_effective_prio :::::: branch date: 4 hours ago :::::: commit date: 4 hours ago compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> cppcheck possible warnings: (new ones prefixed by >>, may not real problems) >> kernel/sched/core.c:7107:34: warning: Uninitialized variable: >> new_effective_prio [uninitvar] __setscheduler(rq, p, attr, pi, new_effective_prio); ^ vim +7107 kernel/sched/core.c c69e8d9c01db2a kernel/sched.c David Howells 2008-11-14 6876 d50dde5a10f305 kernel/sched/core.c Dario Faggioli 2013-11-07 6877 static int __sched_setscheduler(struct task_struct *p, d50dde5a10f305 kernel/sched/core.c Dario Faggioli 2013-11-07 6878 const struct sched_attr *attr, dbc7f069b93a24 kernel/sched/core.c Peter Zijlstra 2015-06-11 6879 bool user, bool pi) ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 6880 { 383afd0971538b kernel/sched/core.c Steven Rostedt 2014-03-11 6881 int newprio = dl_policy(attr->sched_policy) ? MAX_DL_PRIO - 1 : 383afd0971538b kernel/sched/core.c Steven Rostedt 2014-03-11 6882 MAX_RT_PRIO - 1 - attr->sched_priority; da0c1e65b51a28 kernel/sched/core.c Kirill Tkhai 2014-08-20 6883 int retval, oldprio, oldpolicy = -1, queued, running; 0782e63bc6fe7e kernel/sched/core.c Thomas Gleixner 2015-05-05 6884 int new_effective_prio, policy = attr->sched_policy; 83ab0aa0d5623d kernel/sched.c Thomas Gleixner 2010-02-17 6885 const struct sched_class *prev_class; 565790d28b1e33 kernel/sched/core.c Peter Zijlstra 2020-05-11 6886 struct callback_head *head; eb58075149b7f0 kernel/sched/core.c Peter Zijlstra 2015-07-31 6887 struct rq_flags rf; ca94c442535a44 kernel/sched.c Lennart Poettering 2009-06-15 6888 int reset_on_fork; 7a57f32a4d5c80 kernel/sched/core.c Peter Zijlstra 2017-02-21 6889 int queue_flags = DEQUEUE_SAVE | DEQUEUE_MOVE | DEQUEUE_NOCLOCK; eb58075149b7f0 kernel/sched/core.c Peter Zijlstra 2015-07-31 6890 struct rq *rq; ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 6891 896bbb2522587e kernel/sched/core.c Steven Rostedt (VMware 2017-03-09 6892) /* The pi code expects interrupts enabled */ 896bbb2522587e kernel/sched/core.c Steven Rostedt (VMware 2017-03-09 6893) BUG_ON(pi && in_interrupt()); ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 6894 recheck: d1ccc66df8bfe3 kernel/sched/core.c Ingo Molnar 2017-02-01 6895 /* Double check policy once rq lock held: */ ca94c442535a44 kernel/sched.c Lennart Poettering 2009-06-15 6896 if (policy < 0) { ca94c442535a44 kernel/sched.c Lennart Poettering 2009-06-15 6897 reset_on_fork = p->sched_reset_on_fork; ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 6898 policy = oldpolicy = p->policy; ca94c442535a44 kernel/sched.c Lennart Poettering 2009-06-15 6899 } else { 7479f3c9cf67ed kernel/sched/core.c Peter Zijlstra 2014-01-15 6900 reset_on_fork = !!(attr->sched_flags & SCHED_FLAG_RESET_ON_FORK); ca94c442535a44 kernel/sched.c Lennart Poettering 2009-06-15 6901 20f9cd2acb1d74 kernel/sched/core.c Henrik Austad 2015-09-09 6902 if (!valid_policy(policy)) ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 6903 return -EINVAL; ca94c442535a44 kernel/sched.c Lennart Poettering 2009-06-15 6904 } ca94c442535a44 kernel/sched.c Lennart Poettering 2009-06-15 6905 794a56ebd9a57d kernel/sched/core.c Juri Lelli 2017-12-04 6906 if (attr->sched_flags & ~(SCHED_FLAG_ALL | SCHED_FLAG_SUGOV)) 7479f3c9cf67ed kernel/sched/core.c Peter Zijlstra 2014-01-15 6907 return -EINVAL; 7479f3c9cf67ed kernel/sched/core.c Peter Zijlstra 2014-01-15 6908 ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 6909 /* ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 6910 * Valid priorities for SCHED_FIFO and SCHED_RR are ae18ad281e8259 kernel/sched/core.c Dietmar Eggemann 2021-01-28 6911 * 1..MAX_RT_PRIO-1, valid priority for SCHED_NORMAL, dd41f596cda0d7 kernel/sched.c Ingo Molnar 2007-07-09 6912 * SCHED_BATCH and SCHED_IDLE is 0. ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 6913 */ ae18ad281e8259 kernel/sched/core.c Dietmar Eggemann 2021-01-28 6914 if (attr->sched_priority > MAX_RT_PRIO-1) ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 6915 return -EINVAL; aab03e05e8f7e2 kernel/sched/core.c Dario Faggioli 2013-11-28 6916 if ((dl_policy(policy) && !__checkparam_dl(attr)) || aab03e05e8f7e2 kernel/sched/core.c Dario Faggioli 2013-11-28 6917 (rt_policy(policy) != (attr->sched_priority != 0))) ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 6918 return -EINVAL; ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 6919 37e4ab3f0cba13 kernel/sched.c Olivier Croquette 2005-06-25 6920 /* 37e4ab3f0cba13 kernel/sched.c Olivier Croquette 2005-06-25 6921 * Allow unprivileged RT tasks to decrease priority: 37e4ab3f0cba13 kernel/sched.c Olivier Croquette 2005-06-25 6922 */ 961ccddd59d627 kernel/sched.c Rusty Russell 2008-06-23 6923 if (user && !capable(CAP_SYS_NICE)) { d50dde5a10f305 kernel/sched/core.c Dario Faggioli 2013-11-07 6924 if (fair_policy(policy)) { d0ea026808ad81 kernel/sched/core.c Dongsheng Yang 2014-01-27 6925 if (attr->sched_nice < task_nice(p) && eaad45132c564c kernel/sched/core.c Peter Zijlstra 2014-01-16 6926 !can_nice(p, attr->sched_nice)) d50dde5a10f305 kernel/sched/core.c Dario Faggioli 2013-11-07 6927 return -EPERM; d50dde5a10f305 kernel/sched/core.c Dario Faggioli 2013-11-07 6928 } d50dde5a10f305 kernel/sched/core.c Dario Faggioli 2013-11-07 6929 e05606d3301525 kernel/sched.c Ingo Molnar 2007-07-09 6930 if (rt_policy(policy)) { a44702e8858a07 kernel/sched.c Oleg Nesterov 2010-06-11 6931 unsigned long rlim_rtprio = a44702e8858a07 kernel/sched.c Oleg Nesterov 2010-06-11 6932 task_rlimit(p, RLIMIT_RTPRIO); 5fe1d75f349740 kernel/sched.c Oleg Nesterov 2006-09-29 6933 d1ccc66df8bfe3 kernel/sched/core.c Ingo Molnar 2017-02-01 6934 /* Can't set/change the rt policy: */ 8dc3e9099e01df kernel/sched.c Oleg Nesterov 2006-09-29 6935 if (policy != p->policy && !rlim_rtprio) ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 6936 return -EPERM; 8dc3e9099e01df kernel/sched.c Oleg Nesterov 2006-09-29 6937 d1ccc66df8bfe3 kernel/sched/core.c Ingo Molnar 2017-02-01 6938 /* Can't increase priority: */ d50dde5a10f305 kernel/sched/core.c Dario Faggioli 2013-11-07 6939 if (attr->sched_priority > p->rt_priority && d50dde5a10f305 kernel/sched/core.c Dario Faggioli 2013-11-07 6940 attr->sched_priority > rlim_rtprio) ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 6941 return -EPERM; 8dc3e9099e01df kernel/sched.c Oleg Nesterov 2006-09-29 6942 } c02aa73b1d18e4 kernel/sched.c Darren Hart 2011-02-17 6943 d44753b843e093 kernel/sched/core.c Juri Lelli 2014-03-03 6944 /* d44753b843e093 kernel/sched/core.c Juri Lelli 2014-03-03 6945 * Can't set/change SCHED_DEADLINE policy at all for now d44753b843e093 kernel/sched/core.c Juri Lelli 2014-03-03 6946 * (safest behavior); in the future we would like to allow d44753b843e093 kernel/sched/core.c Juri Lelli 2014-03-03 6947 * unprivileged DL tasks to increase their relative deadline d44753b843e093 kernel/sched/core.c Juri Lelli 2014-03-03 6948 * or reduce their runtime (both ways reducing utilization) d44753b843e093 kernel/sched/core.c Juri Lelli 2014-03-03 6949 */ d44753b843e093 kernel/sched/core.c Juri Lelli 2014-03-03 6950 if (dl_policy(policy)) d44753b843e093 kernel/sched/core.c Juri Lelli 2014-03-03 6951 return -EPERM; d44753b843e093 kernel/sched/core.c Juri Lelli 2014-03-03 6952 dd41f596cda0d7 kernel/sched.c Ingo Molnar 2007-07-09 6953 /* c02aa73b1d18e4 kernel/sched.c Darren Hart 2011-02-17 6954 * Treat SCHED_IDLE as nice 20. Only allow a switch to c02aa73b1d18e4 kernel/sched.c Darren Hart 2011-02-17 6955 * SCHED_NORMAL if the RLIMIT_NICE would normally permit it. dd41f596cda0d7 kernel/sched.c Ingo Molnar 2007-07-09 6956 */ 1da1843f9f0334 kernel/sched/core.c Viresh Kumar 2018-11-05 6957 if (task_has_idle_policy(p) && !idle_policy(policy)) { d0ea026808ad81 kernel/sched/core.c Dongsheng Yang 2014-01-27 6958 if (!can_nice(p, task_nice(p))) dd41f596cda0d7 kernel/sched.c Ingo Molnar 2007-07-09 6959 return -EPERM; c02aa73b1d18e4 kernel/sched.c Darren Hart 2011-02-17 6960 } 8dc3e9099e01df kernel/sched.c Oleg Nesterov 2006-09-29 6961 d1ccc66df8bfe3 kernel/sched/core.c Ingo Molnar 2017-02-01 6962 /* Can't change other user's priorities: */ c69e8d9c01db2a kernel/sched.c David Howells 2008-11-14 6963 if (!check_same_owner(p)) 37e4ab3f0cba13 kernel/sched.c Olivier Croquette 2005-06-25 6964 return -EPERM; ca94c442535a44 kernel/sched.c Lennart Poettering 2009-06-15 6965 d1ccc66df8bfe3 kernel/sched/core.c Ingo Molnar 2017-02-01 6966 /* Normal users shall not reset the sched_reset_on_fork flag: */ ca94c442535a44 kernel/sched.c Lennart Poettering 2009-06-15 6967 if (p->sched_reset_on_fork && !reset_on_fork) ca94c442535a44 kernel/sched.c Lennart Poettering 2009-06-15 6968 return -EPERM; 37e4ab3f0cba13 kernel/sched.c Olivier Croquette 2005-06-25 6969 } ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 6970 725aad24c3ba96 kernel/sched.c Jeremy Fitzhardinge 2008-08-03 6971 if (user) { 794a56ebd9a57d kernel/sched/core.c Juri Lelli 2017-12-04 6972 if (attr->sched_flags & SCHED_FLAG_SUGOV) 794a56ebd9a57d kernel/sched/core.c Juri Lelli 2017-12-04 6973 return -EINVAL; 794a56ebd9a57d kernel/sched/core.c Juri Lelli 2017-12-04 6974 b0ae1981137503 kernel/sched.c KOSAKI Motohiro 2010-10-15 6975 retval = security_task_setscheduler(p); ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 6976 if (retval) ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 6977 return retval; 725aad24c3ba96 kernel/sched.c Jeremy Fitzhardinge 2008-08-03 6978 } 725aad24c3ba96 kernel/sched.c Jeremy Fitzhardinge 2008-08-03 6979 a509a7cd797470 kernel/sched/core.c Patrick Bellasi 2019-06-21 6980 /* Update task specific "requested" clamps */ a509a7cd797470 kernel/sched/core.c Patrick Bellasi 2019-06-21 6981 if (attr->sched_flags & SCHED_FLAG_UTIL_CLAMP) { a509a7cd797470 kernel/sched/core.c Patrick Bellasi 2019-06-21 6982 retval = uclamp_validate(p, attr); a509a7cd797470 kernel/sched/core.c Patrick Bellasi 2019-06-21 6983 if (retval) a509a7cd797470 kernel/sched/core.c Patrick Bellasi 2019-06-21 6984 return retval; a509a7cd797470 kernel/sched/core.c Patrick Bellasi 2019-06-21 6985 } a509a7cd797470 kernel/sched/core.c Patrick Bellasi 2019-06-21 6986 710da3c8ea7dfb kernel/sched/core.c Juri Lelli 2019-07-19 6987 if (pi) 710da3c8ea7dfb kernel/sched/core.c Juri Lelli 2019-07-19 6988 cpuset_read_lock(); 710da3c8ea7dfb kernel/sched/core.c Juri Lelli 2019-07-19 6989 b29739f902ee76 kernel/sched.c Ingo Molnar 2006-06-27 6990 /* d1ccc66df8bfe3 kernel/sched/core.c Ingo Molnar 2017-02-01 6991 * Make sure no PI-waiters arrive (or leave) while we are b29739f902ee76 kernel/sched.c Ingo Molnar 2006-06-27 6992 * changing the priority of the task: 0122ec5b02f766 kernel/sched.c Peter Zijlstra 2011-04-05 6993 * 25985edcedea63 kernel/sched.c Lucas De Marchi 2011-03-30 6994 * To be able to change p->policy safely, the appropriate ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 6995 * runqueue lock must be held. ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 6996 */ eb58075149b7f0 kernel/sched/core.c Peter Zijlstra 2015-07-31 6997 rq = task_rq_lock(p, &rf); 80f5c1b84baa81 kernel/sched/core.c Peter Zijlstra 2016-10-03 6998 update_rq_clock(rq); dc61b1d65e353d kernel/sched.c Peter Zijlstra 2010-06-08 6999 34f971f6f7988b kernel/sched.c Peter Zijlstra 2010-09-22 7000 /* d1ccc66df8bfe3 kernel/sched/core.c Ingo Molnar 2017-02-01 7001 * Changing the policy of the stop threads its a very bad idea: 34f971f6f7988b kernel/sched.c Peter Zijlstra 2010-09-22 7002 */ 34f971f6f7988b kernel/sched.c Peter Zijlstra 2010-09-22 7003 if (p == rq->stop) { 4b211f2b129dd1 kernel/sched/core.c Mathieu Poirier 2019-07-19 7004 retval = -EINVAL; 4b211f2b129dd1 kernel/sched/core.c Mathieu Poirier 2019-07-19 7005 goto unlock; 34f971f6f7988b kernel/sched.c Peter Zijlstra 2010-09-22 7006 } 34f971f6f7988b kernel/sched.c Peter Zijlstra 2010-09-22 7007 a51e91981870d0 kernel/sched.c Dario Faggioli 2011-03-24 7008 /* d6b1e9119787fd kernel/sched/core.c Thomas Gleixner 2014-02-07 7009 * If not changing anything there's no need to proceed further, d6b1e9119787fd kernel/sched/core.c Thomas Gleixner 2014-02-07 7010 * but store a possible modification of reset_on_fork. a51e91981870d0 kernel/sched.c Dario Faggioli 2011-03-24 7011 */ d50dde5a10f305 kernel/sched/core.c Dario Faggioli 2013-11-07 7012 if (unlikely(policy == p->policy)) { d0ea026808ad81 kernel/sched/core.c Dongsheng Yang 2014-01-27 7013 if (fair_policy(policy) && attr->sched_nice != task_nice(p)) d50dde5a10f305 kernel/sched/core.c Dario Faggioli 2013-11-07 7014 goto change; d50dde5a10f305 kernel/sched/core.c Dario Faggioli 2013-11-07 7015 if (rt_policy(policy) && attr->sched_priority != p->rt_priority) d50dde5a10f305 kernel/sched/core.c Dario Faggioli 2013-11-07 7016 goto change; 75381608e8410a kernel/sched/core.c Wanpeng Li 2014-11-26 7017 if (dl_policy(policy) && dl_param_changed(p, attr)) aab03e05e8f7e2 kernel/sched/core.c Dario Faggioli 2013-11-28 7018 goto change; a509a7cd797470 kernel/sched/core.c Patrick Bellasi 2019-06-21 7019 if (attr->sched_flags & SCHED_FLAG_UTIL_CLAMP) a509a7cd797470 kernel/sched/core.c Patrick Bellasi 2019-06-21 7020 goto change; d50dde5a10f305 kernel/sched/core.c Dario Faggioli 2013-11-07 7021 d6b1e9119787fd kernel/sched/core.c Thomas Gleixner 2014-02-07 7022 p->sched_reset_on_fork = reset_on_fork; 4b211f2b129dd1 kernel/sched/core.c Mathieu Poirier 2019-07-19 7023 retval = 0; 4b211f2b129dd1 kernel/sched/core.c Mathieu Poirier 2019-07-19 7024 goto unlock; a51e91981870d0 kernel/sched.c Dario Faggioli 2011-03-24 7025 } d50dde5a10f305 kernel/sched/core.c Dario Faggioli 2013-11-07 7026 change: a51e91981870d0 kernel/sched.c Dario Faggioli 2011-03-24 7027 dc61b1d65e353d kernel/sched.c Peter Zijlstra 2010-06-08 7028 if (user) { 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7029 #ifdef CONFIG_RT_GROUP_SCHED dc61b1d65e353d kernel/sched.c Peter Zijlstra 2010-06-08 7030 /* dc61b1d65e353d kernel/sched.c Peter Zijlstra 2010-06-08 7031 * Do not allow realtime tasks into groups that have no runtime dc61b1d65e353d kernel/sched.c Peter Zijlstra 2010-06-08 7032 * assigned. dc61b1d65e353d kernel/sched.c Peter Zijlstra 2010-06-08 7033 */ dc61b1d65e353d kernel/sched.c Peter Zijlstra 2010-06-08 7034 if (rt_bandwidth_enabled() && rt_policy(policy) && f44937718ce3b8 kernel/sched.c Mike Galbraith 2011-01-13 7035 task_group(p)->rt_bandwidth.rt_runtime == 0 && f44937718ce3b8 kernel/sched.c Mike Galbraith 2011-01-13 7036 !task_group_is_autogroup(task_group(p))) { 4b211f2b129dd1 kernel/sched/core.c Mathieu Poirier 2019-07-19 7037 retval = -EPERM; 4b211f2b129dd1 kernel/sched/core.c Mathieu Poirier 2019-07-19 7038 goto unlock; dc61b1d65e353d kernel/sched.c Peter Zijlstra 2010-06-08 7039 } 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7040 #endif 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7041 #ifdef CONFIG_SMP 794a56ebd9a57d kernel/sched/core.c Juri Lelli 2017-12-04 7042 if (dl_bandwidth_enabled() && dl_policy(policy) && 794a56ebd9a57d kernel/sched/core.c Juri Lelli 2017-12-04 7043 !(attr->sched_flags & SCHED_FLAG_SUGOV)) { 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7044 cpumask_t *span = rq->rd->span; 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7045 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7046 /* 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7047 * Don't allow tasks with an affinity mask smaller than 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7048 * the entire root_domain to become SCHED_DEADLINE. We 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7049 * will also fail if there's no bandwidth available. 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7050 */ 3bd3706251ee8a kernel/sched/core.c Sebastian Andrzej Siewior 2019-04-23 7051 if (!cpumask_subset(span, p->cpus_ptr) || 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7052 rq->rd->dl_bw.bw == 0) { 4b211f2b129dd1 kernel/sched/core.c Mathieu Poirier 2019-07-19 7053 retval = -EPERM; 4b211f2b129dd1 kernel/sched/core.c Mathieu Poirier 2019-07-19 7054 goto unlock; 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7055 } dc61b1d65e353d kernel/sched.c Peter Zijlstra 2010-06-08 7056 } dc61b1d65e353d kernel/sched.c Peter Zijlstra 2010-06-08 7057 #endif 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7058 } dc61b1d65e353d kernel/sched.c Peter Zijlstra 2010-06-08 7059 d1ccc66df8bfe3 kernel/sched/core.c Ingo Molnar 2017-02-01 7060 /* Re-check policy now with rq lock held: */ ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 7061 if (unlikely(oldpolicy != -1 && oldpolicy != p->policy)) { ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 7062 policy = oldpolicy = -1; eb58075149b7f0 kernel/sched/core.c Peter Zijlstra 2015-07-31 7063 task_rq_unlock(rq, p, &rf); 710da3c8ea7dfb kernel/sched/core.c Juri Lelli 2019-07-19 7064 if (pi) 710da3c8ea7dfb kernel/sched/core.c Juri Lelli 2019-07-19 7065 cpuset_read_unlock(); ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 7066 goto recheck; ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 7067 } 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7068 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7069 /* 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7070 * If setscheduling to SCHED_DEADLINE (or changing the parameters 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7071 * of a SCHED_DEADLINE task) we need to check if enough bandwidth 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7072 * is available. 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7073 */ 06a76fe08d4daa kernel/sched/core.c Nicolas Pitre 2017-06-21 7074 if ((dl_policy(policy) || dl_task(p)) && sched_dl_overflow(p, policy, attr)) { 4b211f2b129dd1 kernel/sched/core.c Mathieu Poirier 2019-07-19 7075 retval = -EBUSY; 4b211f2b129dd1 kernel/sched/core.c Mathieu Poirier 2019-07-19 7076 goto unlock; 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7077 } 332ac17ef5bfcf kernel/sched/core.c Dario Faggioli 2013-11-07 7078 c365c292d05908 kernel/sched/core.c Thomas Gleixner 2014-02-07 7079 p->sched_reset_on_fork = reset_on_fork; c365c292d05908 kernel/sched/core.c Thomas Gleixner 2014-02-07 7080 oldprio = p->prio; c365c292d05908 kernel/sched/core.c Thomas Gleixner 2014-02-07 7081 dbc7f069b93a24 kernel/sched/core.c Peter Zijlstra 2015-06-11 7082 if (pi) { f06324e1cbda29 kernel/sched/core.c Juri Lelli 2021-04-23 7083 newprio = fair_policy(attr->sched_policy) ? f06324e1cbda29 kernel/sched/core.c Juri Lelli 2021-04-23 7084 NICE_TO_PRIO(attr->sched_nice) : newprio; f06324e1cbda29 kernel/sched/core.c Juri Lelli 2021-04-23 7085 c365c292d05908 kernel/sched/core.c Thomas Gleixner 2014-02-07 7086 /* 0782e63bc6fe7e kernel/sched/core.c Thomas Gleixner 2015-05-05 7087 * Take priority boosted tasks into account. If the new 0782e63bc6fe7e kernel/sched/core.c Thomas Gleixner 2015-05-05 7088 * effective priority is unchanged, we just store the new c365c292d05908 kernel/sched/core.c Thomas Gleixner 2014-02-07 7089 * normal parameters and do not touch the scheduler class and c365c292d05908 kernel/sched/core.c Thomas Gleixner 2014-02-07 7090 * the runqueue. This will be done when the task deboost c365c292d05908 kernel/sched/core.c Thomas Gleixner 2014-02-07 7091 * itself. c365c292d05908 kernel/sched/core.c Thomas Gleixner 2014-02-07 7092 */ acd58620e415ae kernel/sched/core.c Peter Zijlstra 2017-03-23 7093 new_effective_prio = rt_effective_prio(p, newprio); ff77e468535987 kernel/sched/core.c Peter Zijlstra 2016-01-18 7094 if (new_effective_prio == oldprio) ff77e468535987 kernel/sched/core.c Peter Zijlstra 2016-01-18 7095 queue_flags &= ~DEQUEUE_MOVE; dbc7f069b93a24 kernel/sched/core.c Peter Zijlstra 2015-06-11 7096 } c365c292d05908 kernel/sched/core.c Thomas Gleixner 2014-02-07 7097 da0c1e65b51a28 kernel/sched/core.c Kirill Tkhai 2014-08-20 7098 queued = task_on_rq_queued(p); 051a1d1afa4720 kernel/sched.c Dmitry Adamushko 2007-12-18 7099 running = task_current(rq, p); da0c1e65b51a28 kernel/sched/core.c Kirill Tkhai 2014-08-20 7100 if (queued) ff77e468535987 kernel/sched/core.c Peter Zijlstra 2016-01-18 7101 dequeue_task(rq, p, queue_flags); 83b699ed20f521 kernel/sched.c Srivatsa Vaddagiri 2007-10-15 7102 if (running) f3cd1c4ec059c9 kernel/sched/core.c Kirill Tkhai 2014-09-12 7103 put_prev_task(rq, p); f6b53205e17c8c kernel/sched.c Dmitry Adamushko 2007-10-15 7104 83ab0aa0d5623d kernel/sched.c Thomas Gleixner 2010-02-17 7105 prev_class = p->sched_class; a509a7cd797470 kernel/sched/core.c Patrick Bellasi 2019-06-21 7106 f06324e1cbda29 kernel/sched/core.c Juri Lelli 2021-04-23 @7107 __setscheduler(rq, p, attr, pi, new_effective_prio); a509a7cd797470 kernel/sched/core.c Patrick Bellasi 2019-06-21 7108 __setscheduler_uclamp(p, attr); f6b53205e17c8c kernel/sched.c Dmitry Adamushko 2007-10-15 7109 da0c1e65b51a28 kernel/sched/core.c Kirill Tkhai 2014-08-20 7110 if (queued) { 81a44c5441d7f7 kernel/sched/core.c Thomas Gleixner 2014-02-07 7111 /* 81a44c5441d7f7 kernel/sched/core.c Thomas Gleixner 2014-02-07 7112 * We enqueue to tail when the priority of a task is 81a44c5441d7f7 kernel/sched/core.c Thomas Gleixner 2014-02-07 7113 * increased (user space view). 81a44c5441d7f7 kernel/sched/core.c Thomas Gleixner 2014-02-07 7114 */ ff77e468535987 kernel/sched/core.c Peter Zijlstra 2016-01-18 7115 if (oldprio < p->prio) ff77e468535987 kernel/sched/core.c Peter Zijlstra 2016-01-18 7116 queue_flags |= ENQUEUE_HEAD; 1de64443d755f8 kernel/sched/core.c Peter Zijlstra 2015-09-30 7117 ff77e468535987 kernel/sched/core.c Peter Zijlstra 2016-01-18 7118 enqueue_task(rq, p, queue_flags); 81a44c5441d7f7 kernel/sched/core.c Thomas Gleixner 2014-02-07 7119 } a399d233078edb kernel/sched/core.c Vincent Guittot 2016-09-12 7120 if (running) 03b7fad167efca kernel/sched/core.c Peter Zijlstra 2019-05-29 7121 set_next_task(rq, p); cb46984504048d kernel/sched.c Steven Rostedt 2008-01-25 7122 da7a735e51f962 kernel/sched.c Peter Zijlstra 2011-01-17 7123 check_class_changed(rq, p, prev_class, oldprio); d1ccc66df8bfe3 kernel/sched/core.c Ingo Molnar 2017-02-01 7124 d1ccc66df8bfe3 kernel/sched/core.c Ingo Molnar 2017-02-01 7125 /* Avoid rq from going away on us: */ d1ccc66df8bfe3 kernel/sched/core.c Ingo Molnar 2017-02-01 7126 preempt_disable(); 565790d28b1e33 kernel/sched/core.c Peter Zijlstra 2020-05-11 7127 head = splice_balance_callbacks(rq); eb58075149b7f0 kernel/sched/core.c Peter Zijlstra 2015-07-31 7128 task_rq_unlock(rq, p, &rf); b29739f902ee76 kernel/sched.c Ingo Molnar 2006-06-27 7129 710da3c8ea7dfb kernel/sched/core.c Juri Lelli 2019-07-19 7130 if (pi) { 710da3c8ea7dfb kernel/sched/core.c Juri Lelli 2019-07-19 7131 cpuset_read_unlock(); 95e02ca9bb5324 kernel/sched.c Thomas Gleixner 2006-06-27 7132 rt_mutex_adjust_pi(p); 710da3c8ea7dfb kernel/sched/core.c Juri Lelli 2019-07-19 7133 } 95e02ca9bb5324 kernel/sched.c Thomas Gleixner 2006-06-27 7134 d1ccc66df8bfe3 kernel/sched/core.c Ingo Molnar 2017-02-01 7135 /* Run balance callbacks after we've adjusted the PI chain: */ 565790d28b1e33 kernel/sched/core.c Peter Zijlstra 2020-05-11 7136 balance_callbacks(rq, head); 4c9a4bc89a9cca kernel/sched/core.c Peter Zijlstra 2015-06-11 7137 preempt_enable(); 4c9a4bc89a9cca kernel/sched/core.c Peter Zijlstra 2015-06-11 7138 ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 7139 return 0; 4b211f2b129dd1 kernel/sched/core.c Mathieu Poirier 2019-07-19 7140 4b211f2b129dd1 kernel/sched/core.c Mathieu Poirier 2019-07-19 7141 unlock: 4b211f2b129dd1 kernel/sched/core.c Mathieu Poirier 2019-07-19 7142 task_rq_unlock(rq, p, &rf); 710da3c8ea7dfb kernel/sched/core.c Juri Lelli 2019-07-19 7143 if (pi) 710da3c8ea7dfb kernel/sched/core.c Juri Lelli 2019-07-19 7144 cpuset_read_unlock(); 4b211f2b129dd1 kernel/sched/core.c Mathieu Poirier 2019-07-19 7145 return retval; ^1da177e4c3f41 kernel/sched.c Linus Torvalds 2005-04-16 7146 } 961ccddd59d627 kernel/sched.c Rusty Russell 2008-06-23 7147 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
