[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: > > 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