On Thu, Sep 28, 2017 at 08:36:07PM +0900, Sergey Senozhatsky wrote: >On (09/28/17 19:30), Sergey Senozhatsky wrote: >> lib/ratelimit.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/lib/ratelimit.c b/lib/ratelimit.c >> index 08f8043cac61..bddc55834c2e 100644 >> --- a/lib/ratelimit.c >> +++ b/lib/ratelimit.c >> @@ -48,7 +48,8 @@ int ___ratelimit(struct ratelimit_state *rs, const char >> *func) >> if (time_is_before_jiffies(rs->begin + rs->interval)) { >> if (rs->missed) { >> if (!(rs->flags & RATELIMIT_MSG_ON_RELEASE)) { >> - pr_warn("%s: %d callbacks suppressed\n", func, >> rs->missed); >> + printk_deferred(KERN_WARN "%s: %d callbacks >> suppressed\n", > >oops... s/KERN_WARN/KERN_WARNING/ > >sorry about that.
Okay, that seems to have delt with the callbacks supressed issue. I also seem to be hitting it as a result of the scheduler triggering a WARN, where print_stack_trace(), for example, just uses printk(). Now I'm not sure what's your approach here, do we keep converting printk to printk_deferred one by one until we whacked every mole? -- Thanks, Sasha