On Sat 2013-05-04 17:23:01, Colin Cross wrote: > On Sat, May 4, 2013 at 5:05 PM, Pavel Machek <pavel@xxxxxx> wrote: > > Hi! > > > >> >> >> --- a/kernel/exit.c > >> >> >> +++ b/kernel/exit.c > >> >> >> @@ -835,7 +835,7 @@ void do_exit(long code) > >> >> >> /* > >> >> >> * Make sure we are holding no locks: > >> >> >> */ > >> >> >> - debug_check_no_locks_held(tsk); > >> >> >> + debug_check_no_locks_held(); > >> >> > > >> >> > Is task guaranteed == current? > >> >> > >> >> Yes, the first line of do_exit is: > >> >> struct task_struct *tsk = current; > >> > > >> > Aha, I understand it now. > >> > > >> > Accessing current is slower than local variable. So your "new" code > >> > will work but will be slower. Please revert this part. > >> > >> Using current instead of passing in tsk was done at Andrew Morton's > >> suggestion, and makes no difference from the freezer's perspective > >> since it would have to use current to get the task to pass in, so I'm > >> going to leave it as is. > > > > Well, current is: > > > > static inline struct thread_info *current_thread_info(void) > > { > > register unsigned long sp asm ("sp"); > > return (struct thread_info *)(sp & ~(THREAD_SIZE - 1)); > > } > > > > #define get_current() (current_thread_info()->task) > > > > #define current get_current() > > > > Instead of passing computed value to debug_check_no_locks_held(), you > > force it to be computed again. do_exit() performance matters for > > configure scripts, etc. > > > > I'd say it makes sense to keep the optimalization. akpm can correct > > me. > > That translates to 3 instructions, with no memory accesses: > c0008350: e1a0300d mov r3, sp > c0008354: e3c32d7f bic r2, r3, #8128 ; 0x1fc0 > c0008358: e3c2203f bic r2, r2, #63 ; 0x3f On ARM, you are right. It seems to have memory access on s390 and x86-64. Ok, it is probably going to be in cache, but... Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html