On Mon, 2013-05-27 at 11:57 +0530, Priyanka Jain wrote: > Add instruction to load TI_FLAGS in r8 > > While returning from exception handling in case of PREEMPT enabled, > _TIF_NEED_RESCHED bit is checked in TI_FLAGS (thread_info flag) of > current > task. Only if this bit is set, it should continue with the process of > calling preempt_schedule_irq() to schedule highest priority task if > available. > > Current code assumes that r8 contains TI_FLAGS and check this for > _TIF_NEED_RESCHED, but as r8 is modified in the code which executes > before > this check, r8 no longer contains the expected TI_FLAGS information.
Hrm, the code was supposed to still have TI_FLAGS in r8 and mostly does until the andis. r8,r8,_TIF_EMULATE_STACK_STORE@h Was added which clobbers it. Can't we just fix the above to use a different destination register ? r0 looks fair game at this point... > As a result check for comparison with _TIF_NEED_RESCHED was failing > even if > NEED_RESCHED bit is set in the current thread_info flag. Due to this, > preempt_schedule_irq() and in turn scheduler was not getting called > even if > highest priority task is ready for execution. Ben. _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev