On Sat, May 28, 2022 at 7:48 AM Yegor Yefremov <yegorslists@xxxxxxxxxxxxxx> wrote: > > On Fri, May 27, 2022 at 4:13 PM Arnd Bergmann <arnd@xxxxxxxx> wrote: > > > > On Fri, May 27, 2022 at 3:12 PM Ard Biesheuvel <ardb@xxxxxxxxxx> wrote: > > > On Fri, 27 May 2022 at 14:54, Arnd Bergmann <arnd@xxxxxxxx> wrote: > > > > On Fri, May 27, 2022 at 11:50 AM Yegor Yefremov <yegorslists@xxxxxxxxxxxxxx> wrote: > > > > > > Not just per-cpu data: there is also the 'current' global variable > > > which gets used now instead of the user thread ID register, and this > > > is also different between modules and the core kernel (unless > > > CONFIG_ARM_MODULE_PLTS is disabled) > > > > Right, so if the percpu hack doesn't address it, this one might: > > > > diff --git a/arch/arm/include/asm/current.h b/arch/arm/include/asm/current.h > > index 1e1178bf176d..306d1a4cae40 100644 > > --- a/arch/arm/include/asm/current.h > > +++ b/arch/arm/include/asm/current.h > > @@ -18,6 +18,8 @@ static __always_inline __attribute_const__ struct > > task_struct *get_current(void) > > { > > struct task_struct *cur; > > > > + return __current; > > + > > #if __has_builtin(__builtin_thread_pointer) && \ > > defined(CONFIG_CURRENT_POINTER_IN_TPIDRURO) && \ > > !(defined(CONFIG_THUMB2_KERNEL) && \ > > I have tried this patch and the system still stalls. Ok, thanks for testing. To clarify: did you test with both the get_current() and __my_cpu_offset() changes applied, or just the get_current() one? Arnd