[PATCH 22/45] percpu_counter: Use get/put_online_cpus_atomic() to prevent CPU offline
Srivatsa S. Bhat
srivatsa.bhat at linux.vnet.ibm.com
Tue Jun 25 04:09:58 EST 2013
On 06/24/2013 11:36 PM, Tejun Heo wrote:
> On Mon, Jun 24, 2013 at 10:55:35AM -0700, Tejun Heo wrote:
>>> @@ -105,6 +106,7 @@ s64 __percpu_counter_sum(struct percpu_counter *fbc)
>>> ret += *pcount;
>>> }
>>> raw_spin_unlock(&fbc->lock);
>>> + put_online_cpus_atomic();
>>
>> I don't think this is necessary. CPU on/offlining is explicitly
>> handled via the hotplug callback which synchronizes through fbc->lock.
>> __percpu_counter_sum() racing with actual on/offlining doesn't affect
>> correctness and adding superflous get_online_cpus_atomic() around it
>> can be misleading.
>
> Ah, okay, so you added a debug feature which triggers warning if
> online mask is accessed without synchronization.
Exactly!
> Yeah, that makes
> sense and while the above is not strictly necessary, it probably is
> better to just add it rather than suppressing the warning in a
> different way.
Yeah, I was beginning to scratch my head as to how to suppress the
warning after I read your explanation as to why the calls to
get/put_online_cpus_atomic() would be superfluous in this case...
But as you said, simply invoking those functions is much simpler ;-)
> Can you please at least add a comment explaining that?
>
Sure, will do. Thanks a lot Tejun!
Regards,
Srivatsa S. Bhat
More information about the Linuxppc-dev
mailing list