On Thu, 25 Aug 2011, Peter Zijlstra wrote: > Also, I thought this_cpu thing's were at best locally atomic. If you > make them full blown atomic ops then even __this_cpu ops will have to be > full atomic ops, otherwise: > > > CPU0 CPU(1) > > this_cpu_inc(&foo); preempt_disable(); > __this_cpu_inc(&foo); > preempt_enable(); > > might step on each other's toes. They would both have their own instance of "foo". per cpu atomicity is only one requirement of this_cpu_ops. The other is the ability to relocate accesses relative to the current per cpu area. Full blown atomicity is almost a superset of per cpu atomicity but its only usable if the full atomic instructions can also relocate accesses relative to some base. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>