Messages in this thread | | | Date | Fri, 19 Jul 2013 16:58:09 -0400 | From | Waiman Long <> | Subject | Re: [PATCH] mutex: Fix mutex_can_spin_on_owner |
| |
On 07/19/2013 03:41 PM, Thomas Gleixner wrote: > On Fri, 19 Jul 2013, Waiman Long wrote: >> On 07/19/2013 02:31 PM, Peter Zijlstra wrote: >>> rcu_read_lock(); >>> - if (lock->owner) >>> - retval = lock->owner->on_cpu; >>> + owner = ACCESS_ONCE(lock->owner); >>> + if (owner) >>> + retval = owner->on_cpu; >>> rcu_read_unlock(); >>> /* >>> * if lock->owner is not set, the mutex owner may have just >>> acquired >> I am fine with this change. However, the compiler is smart enough to >> not do two memory accesses to the same memory location. So this will >> not change the generated code. Below is the relevant x86 code for >> that section of code: > That's true for your particular compiler, but it's not guaranteed at > all. So it matters even when your compiler generates the same > code. Others might not. There is a world outside of x8664. > > Thanks, > > tglx
I supposed that only the gcc compiler can be used to build Linux kernel as the kernel source uses a lot of features specific to gcc. Optimizations like these are done by the front end of the compiler which should be universal across all the architecture. So what I want to say is that there is nothing specific to x86-64 or any architecture here. This is what a good compiler should do.
I am not against the fix as it makes the intention more clear. I am just saying that there won't be any performance change because of this.
Regards, Longman
| |