Monthly Archives: March 2009

A bit more than ten years ago…

A bit more than ten years ago, I gave the first-ever RCU conference presentation (though this was a few years before it became known as “RCU”). The presentation went reasonably well, in fact almost half of the attendees stayed awake. … Continue reading

Posted in Uncategorized | Tagged | Comments Off on A bit more than ten years ago…

CPU hotplug is not atomic: resolution

Lai Jianshan pulled off an interesting feat, locating a bug in rcu_barrier() by inspection and producing a very nice fix. The interesting part is that he produced the fix just in time for Frederic Weisbecker and perhaps Ingo Molnar as … Continue reading

Posted in Uncategorized | Tagged , , | 2 Comments

CPU hotplug is not atomic

Lai Jiangshan found an interesting bug in rcu_barrier() that can result in rcu_barrier() returning too soon when there are concurrent CPU hotplug operations. The best approach thus far seems to be to make rcu_barrier() independent of CPU hotplug. The penalty … Continue reading

Posted in Uncategorized | Tagged , , | Comments Off on CPU hotplug is not atomic

“Advising Students for Success” by Jeffrey D. Ullman in March 2009 CACM

Both Patterson’s and Ullman’s “Viewpoint” articles in the March 2009 CACM are well worth reading, as I suspect that much of their advice for working with Ph.D. students applies more generally to working with younger people. I was especially impressed … Continue reading

Posted in Uncategorized | Tagged | Comments Off on “Advising Students for Success” by Jeffrey D. Ullman in March 2009 CACM

Remove from structure, and only then invoke call_rcu()…

The idr_remove_all() function in 2.6.28 had an interesting bug. The code traverses the tree from the root down, invoking call_rcu() via the free_layer() function, thereby disposing of the data elements in the tree. Unfortunately, the rcu_assign_pointer() that prevents readers from … Continue reading

Posted in Uncategorized | Tagged , | Comments Off on Remove from structure, and only then invoke call_rcu()…