Hi > > > > > > In fair.c:select_task_rq_fair(), if feec() returns a error (< 0), then > > > prev_cpu is selected. I think it's better to still let feec() signal > > > that something happened and let select_task_rq_fair() select prev_cpu by > > > itself. > > In fair.c:select_task_rq_fair(), when feec() returns a error (< 0), > > the new_cpu = find_idlest_cpu() or select_idle_sibling(). > > In your patch, you should return prev_cpu instead of -1 if you want to > > select the prev_cpu. > Having a negative delta doesn't imply that prev_cpu is still available. > E.g.: If prev_cpu cannot receive the task (and is skipped), and a > negative delta appears when evaluating the other CPUs. In such case > feec() cannot select prev_cpu. dst_cpu must be selected by another function. In this case, would it be better to add a condition "prev_delta == ULONG_MAX" ? Returnig(-1) could avoid the negative delta, but I still think this is not the fundamental way to solve the problem. But I think you can send a V2 with the bail out mechanism.
Regards

