> You said that there were a lot of "stepi" commands to get through > rcu_read_lock() on x86_64. This is quite surprising, especially if you > built with CONFIG_RCU_TREE. Even if you built with CONFIG_PREEMPT_RCU_TREE, > you should only see something like the following from rcu_read_lock(): > > 000000b7 <__rcu_read_lock>: > b7: 55 push %ebp > b8: 64 a1 00 00 00 00 mov %fs:0x0,%eax > be: ff 80 80 01 00 00 incl 0x180(%eax) > c4: 89 e5 mov %esp,%ebp > c6: 5d pop %ebp > c7: c3 ret > > Unless you have some sort of debugging options turned on. Or unless > six instructions counts for "quite many" stepi commands. ;-) > Paul, this should be inlined, dont you think ? Also, I dont understand why we use ACCESS_ONCE() in rcu_read_lock() ACCESS_ONCE(current->rcu_read_lock_nesting)++; Apparently, some compilers are a bit noisy here. mov 0x1b0(%rdx),%eax inc %eax mov %eax,0x1b0(%rdx) instead of : incl 0x1b0(%rax) So if the ACCESS_ONCE() is needed, we might add a comment, because it's not obvious ;) -- To unsubscribe from this list: send the line "unsubscribe lvs-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html