[RFC] Try a bit harder to get output on the screen at panic time

Jesse Barnes jbarnes at virtuousgeek.org
Thu May 20 09:28:36 PDT 2010


On Thu, 20 May 2010 04:27:07 +0300
Maxim Levitsky <maximlevitsky at gmail.com> wrote:

> On Thu, 2010-05-20 at 04:13 +0300, Maxim Levitsky wrote: 
> > On Wed, 2010-05-19 at 17:34 -0700, Jesse Barnes wrote: 
> > > On Fri, 9 Apr 2010 15:10:50 -0700
> > > Jesse Barnes <jbarnes at virtuousgeek.org> wrote:
> > > 
> > > > This set of 3 patches makes it a little more likely we'll get panic
> > > > output onto the screen even when X is running, assuming a KMS enabled
> > > > stack anyway.
> > > > 
> > > > It gets me from a blank or very sparsely populated black screen at
> > > > panic time, to one including the full backtrace and panic output at
> > > > panic time (tested with "echo c > /proc/sysrq-trigger" from an X
> > > > session).
> > > > 
> > > > It doesn't cover every case; for instance I think it'll fail when X has
> > > > disabled the display, but those cases need to be handled with separate
> > > > patches anyway (need to add atomic DPMS paths for instance).
> > > > 
> > > > Anyway, please test these out and let me know if they work for you.
> > > 
> > > Ping Linus & Dave again.  Have you guys tried these?  Really, it's cool.
> > > 
> > Second that, just tested these patches, and these work perfectly.
> > One more reason for me to dump nvidia driver for nouveau.
> 
> 
> Unfortunately I spoke too soon.
> 
> 
> After suspend to ram, system doesn't properly resume now.
> 
> My system is based on nvidia G86, I use latest nouveau drivers, and
> suspend with compiz running.
> 
> I also patched kernel not to do vt switch on suspend/resume:
> 
> diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c
> b/drivers/gpu/drm/nouveau/nouveau_state.c
> index 062b7f6..b3ef08b 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_state.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_state.c
> @@ -31,6 +31,7 @@
> #include "drm_crtc_helper.h"
> #include <linux/vgaarb.h>
> #include <linux/vga_switcheroo.h>
> +#include <linux/suspend.h>
> 
> #include "nouveau_drv.h"
> #include "nouveau_drm.h"
> @@ -771,6 +772,8 @@ int nouveau_load(struct drm_device *dev, unsigned
> long flags)
>                 int ret = nouveau_card_init(dev);
>                 if (ret)
>                         return ret;
> +
> +               pm_set_vt_switch(0);
>         }
> 
>         return 0;

Hm I don't see how my patches would have affected suspend/resume, since
they just add "oops_in_progress" checks to a few places.  Are you sure
something else isn't breaking your resume path?

-- 
Jesse Barnes, Intel Open Source Technology Center


More information about the dri-devel mailing list