Re: [PATCH] mutex: Fix mutex_can_spin_on_owner

From: Waiman Long
Date: Fri Jul 19 2013 - 16:58:17 EST


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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/