Re: drm/mgag200: doesn't work in panic context

Daniel Vetter
2015-06-29T09:58:26Z

On Mon, Jun 29, 2015 at 11:42 AM, Borislav Petkov <bp@alien8.de> wrote:
>> drm_fb_helper_panic isn't the only panic handler - fbdev/fbcon have
>> their own. They interfere, and fbdev blissfully assumes that it can
>> call almost any driver hook from hardirq context. Which means you'd
>> also need to consolidate the various hand-rolled (in drivers instead
>> of the fbdev helper) bits to offload fbdev callbacks to workers and
>> make sure we don't go boom in panics in there either.
>
> Hmmm, this would mean to go and tell them through the panic notifier
> to not do anything "risky" anymore. Perhaps even stop them from doing
> regular tasks which could become risky in the case of panic. I guess
> this would mean, we should be doing the same in other subsystems too.

Not sure that applies to other subsystems, it's really just history.
fbdev was designed for a world where register banging and some writes
to a gart was all you had to do for graphics, and you can very well do
that from hardirq context. And fbdev will take care of some simple
locking itself if needed. The problem really is that drm drivers are
anything but simple, and there's a bit of room to share more code and
tricks (and fix up even more corner-cases) between drm drivers in the
shared fbdev emulation library.