On Wed, Jan 14, 2015 at 10:33 AM, John Stultz <john.stu...@linaro.org> wrote: > > So since this is a time reading function, this could be called > anywhere.
Indeed. Could, and is. >From within the scheduler, with some very core locks held. From within printk itself (more really core locks held). From the tracer (which in turn can be from pretty much anything else). From various lockless and critical places. And from very early in the boot sequence when almost nothing is set up yet, etc etc. You can't print from that context, you can't even disable preemption (because the boot sequence seems to get unhappy when you re-enable preemption before things are really set up), you can't do much at all. It's why my hacky patch just read the state and updated an error flag (and possibly wrote a backtrace), to be printed out later. I think we could possibly do more if being very careful. But the code word really is "very careful indeed". It would probably be ok to use a raw irq-disable spinlock. Maybe the preempt-disable works too if you end up using some raw version that still works during boot etc etc. Linus -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/