Re: [PATCH v6 13/21] sched: Admit forcefully-affined tasks into SCHED_DEADLINE
From: Will Deacon <will@kernel.org>
Date: 2021-05-18 10:28:47
Also in:
linux-arch, lkml
[Dropping Li Zefan as his mail is bouncing] On Tue, May 18, 2021 at 10:20:38AM +0000, Quentin Perret wrote:
On Tuesday 18 May 2021 at 10:47:17 (+0100), Will Deacon wrote:quoted
On asymmetric systems where the affinity of a task is restricted to contain only the CPUs capable of running it, admission to the deadline scheduler is likely to fail because the span of the sched domain contains incompatible CPUs. Although this is arguably the right thing to do, it is inconsistent with the case where the affinity of a task is restricted after already having been admitted to the deadline scheduler. For example, on an arm64 system where not all CPUs support 32-bit applications, a 64-bit deadline task can exec() a 32-bit image and have its affinity forcefully restricted.So I guess the alternative would be to fail exec-ing into 32bit from a 64bit DL task, and then drop this patch? The nice thing about your approach is that existing applications won't really notice a difference (execve would still 'work'), but on the cons side it breaks admission control, which is sad.
Right, with your suggestion here we would forbid any 32-bit deadline tasks on an asymmetric system, even if you'd gone to the extraordinary effort to cater for that (e.g. by having a separate root domain).
I don't expect this weird execve-to-32bit pattern from DL to be that common in practice (at the very least not in Android), so maybe we could start with the stricter version (fail the execve), and wait to see if folks complain? Making things stricter later will be harder. Thoughts?
I don't have strong opinions on this, but I _do_ want the admission via sched_setattr() to be consistent with execve(). What you're suggesting ticks that box, but how many applications are prepared to handle a failed execve()? I suspect it will be fatal. Probably also worth pointing out that the approach here will at least warn in the execve() case when the affinity is overridden for a deadline task. Will _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel