Re: [RFC][PATCH 4/5] printk: Have wake_up_klogd() use __this_cpu_write()

Steven Rostedt
2011-09-19T23:33:32Z

On Mon, 2011-09-19 at 16:54 -0500, Christoph Lameter wrote:
> On Mon, 19 Sep 2011, Steven Rostedt wrote:
>
> > From: Steven Rostedt <srostedt@redhat.com>
> >
> > The wake up code that triggers klogd does not really matter which
> > CPU it enables the wake up on. Every CPU will be doing a printk_tick()
> > and check the current CPU. As long as one of the CPUs triggers the
> > wakeup we are fine. Use __this_cpu_write() instead of this_cpu_write()
> > to show that we do not care.
>
> printk_needs_cpu() is always called from context where we have disabled
> interrupts therefore this is safe to do.

hehe, the patch is deceiving ;)

@@ -1225,7 +1225,7 @@ int printk_needs_cpu(int cpu)
void wake_up_klogd(void)
{
if (waitqueue_active(&log_wait))

The printk_needs_cpu may be in the patch header there, but the real
function name happened to be in the call itself. "wake_up_klogd()".
Note, just because something is always in a location that preemption is
disabled, does not mean it should use the __this_cpu*() variants.
Because if things change, it may become a problem later on.

-- Steve

>
> Reviewed-by: Christoph Lameter <cl@gentwo.org>