sched: fix regression with sched yield
Balbir Singh reported:
> 1:mon> t
> [
c0000000e7677da0]
c000000000067de0 .sys_sched_yield+0x6c/0xbc
> [
c0000000e7677e30]
c000000000008748 syscall_exit+0x0/0x40
> --- Exception: c01 (System Call) at
00000400001d09e4
> SP (
4000664cb10) is in userspace
> 1:mon> r
> cpu 0x1: Vector: 300 (Data Access) at [
c0000000e7677aa0]
> pc:
c000000000068e50: .yield_task_fair+0x94/0xc4
> lr:
c000000000067de0: .sys_sched_yield+0x6c/0xbc
the check that should have avoided that is:
/*
* Are we the only task in the tree?
*/
if (unlikely(rq->load.weight == curr->se.load.weight))
return;
But I guess that overlooks rt tasks, they also increase the load.
So I guess something like this ought to fix it..
Signed-off-by: Ingo Molnar <mingo@elte.hu>