Re: lockup in rb_get_reader_page

From: Steven Rostedt
Date: Wed Mar 31 2010 - 20:28:33 EST


On Tue, 2010-03-30 at 21:01 -0700, Jiaying Zhang wrote:

> I am going to patch rb_get_reader_page() to print out some debugging
> message when it enters into an infinitely loop. I will keep you updated
> if I find any interesting info.

I was just thinking about this some more. One restriction to the
ring_buffer is that a reader can not preempt a writer, which means that
a read can not happen in an interrupt or NMI. If a read happens there
and preempts a writer as the writer was moving the head page, it will go
into an infinite loop waiting for the writer to finish its move.

You can only do reads from interrupt context if the writer disables
interrupts before reserving and committing the data.

Are you doing reads from interrupt context?

-- Steve


--
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/