Hi Peter, On 28 January 2015 at 00:47, Peter Zijlstra <pet...@infradead.org> wrote: > On Mon, Jan 19, 2015 at 04:49:38AM +0000, Xunlei Pang wrote: >> In check_preempt_equal_dl(), cpudl_find() is called with a NULL >> later_mask, thus cpudl_find() here doesn't check cpudl::free_cpus >> at all. >> >> This patch takles this issue by always passing a non-NULL later_mask >> to cpudl_find(), thereby fixing this issue. > > Fix what issue? Afaict this is an optimization not a fix.
Currently, check_preempt_equal_dl() invokes cpudl_find() with a NULL mask, so cpudl_find() won't check cpudl::free_cpus. For example, 4 core system, CPU0~CPU2 are all idle(free of deadline tasks), a deadline task is woken on CPU3 which already has one running deadline task with the same deadline value, then cpudl_find() will fail causing CPU3 holding 2 deadline tasks while other cpus are idle, obviously it should be placed on one idle cpu. Thanks, Xunlei -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/