Re: Regression in panic

From
Mandeep Singh Baines <hidden>
Date
2011-06-20 23:20:33
Also in
lkml
Reply to
David Rientjes, 2011-06-20
On Mon, Jun 20, 2011 at 4:03 PM, David Rientjes [off-list ref] wrote:
On Mon, 20 Jun 2011, Mandeep Singh Baines wrote:
quoted
Hi Dave,

I think this change is causing a regression I'm seeing in panic.
Before this change, I'd get a
reboot on panic (we've configured as such).

With this change, my machine gets wedged if the machine is running in
X when the panic occurs.

I traced the code flow to this:

bust_spinlocks(0);
 ->unblank_screen();
   ->do_unblank_screen(0);
     ->vc->vc_sw->con_blank(vc, 0, 0);
       ->fbcon_blank(vc, 0, 0);
         ->update_screen(vc);
           ->redraw_screen(vc, 0);
             ->vc->vc_sw->con_switch(vc);
               ->fbcon_switch(vc);
                 ->ops->update_start(info);
                   ->bit_update_start(info);
                    ->fb_pan_display(info, &ops->var);
                      ->info->fbops->fb_pan_display(var, info);
                        ->drm_fb_helper_pan_display(var, info);
                          ->mutex_lock(&dev->mode_config.mutex); *this blocks*

With this change, there is now a lot going on in the panic path. Stuff
that I'm not sure is safe when panicking. In addition to the
mutex_lock, there is also a del_timer_sync()
now happening in the context of panic().

I see this bug with a 2.6.38 kernel but did a quick scan of a newer
kernels and did not see anything that changed in this path so I
suspect its still there.

Reverting this change fixes the regression.
Chris Fowler reports something similar when running 2.6.38 by inducing a
kernel panic via the oom killer -- see
http://marc.info/?l=linux-kernel&m0805985022791.  I've added him to the
cc so he can participate in the thread and cherry-pick any fixes (last
status update was that he was going to be trying 2.6.38.8).
One potential fix might be to convert the mutex_lock to a try if
oops_in_progress but
I suspect oops_in_progress checks may be needed in a bunch of other places in
the screen_unblank code path.
Thread (3 messages) 3 messages, 2 authors, last reply 2011-06-20
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help