On Wed, Oct 28, 2020 at 12:10:53PM +0000, Catalin Marinas wrote: > On Tue, Oct 27, 2020 at 09:51:16PM +0000, Will Deacon wrote: > > diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c > > index 4784011cecac..c45b5f9dd66b 100644 > > --- a/arch/arm64/kernel/process.c > > +++ b/arch/arm64/kernel/process.c > > @@ -542,6 +542,17 @@ static void erratum_1418040_thread_switch(struct task_struct *prev, > > write_sysreg(val, cntkctl_el1); > > } > > > > +static void compat_thread_switch(struct task_struct *next) > > +{ > > + if (!is_compat_thread(task_thread_info(next))) > > + return; > > + > > + if (!system_has_mismatched_32bit_el0()) > > + return; > > + > > + set_tsk_thread_flag(next, TIF_NOTIFY_RESUME); > > +} > > I wonder whether you could use set_notify_resume() for consistency. I looked at that, but it ends up kicking the task which is not needed here and can result in a reschedule via preempt_enable(). Will