drm/fbdev-helper: Explain how to debug console_lock fun
Every new KMS driver writer seems to run into this and wonder how exactly drm_fb_helper_initial_config can die doing nothing at all. Set up some big warnings signs around this newbie trap to avoid future frustration and wasting everyone's time. v2: Edits from Laurent. Cc: Carlos Palminha <CARLOS.PALMINHA@synopsys.com> Cc: Xinliang Liu <xinliang.liu@linaro.org> Cc: laurent.pinchart@ideasonboard.com Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Link: http://patchwork.freedesktop.org/patch/msgid/1453449225-10954-1-git-send-email-daniel.vetter@ffwll.ch Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
This commit is contained in:
Родитель
70c0616d5a
Коммит
40f8cf4b5c
|
@ -2091,6 +2091,27 @@ out:
|
|||
* drm_fb_helper_fill_fix() are provided as helpers to setup simple default
|
||||
* values for the fbdev info structure.
|
||||
*
|
||||
* HANG DEBUGGING:
|
||||
*
|
||||
* When you have fbcon support built-in or already loaded, this function will do
|
||||
* a full modeset to setup the fbdev console. Due to locking misdesign in the
|
||||
* VT/fbdev subsystem that entire modeset sequence has to be done while holding
|
||||
* console_lock. Until console_unlock is called no dmesg lines will be sent out
|
||||
* to consoles, not even serial console. This means when your driver crashes,
|
||||
* you will see absolutely nothing else but a system stuck in this function,
|
||||
* with no further output. Any kind of printk() you place within your own driver
|
||||
* or in the drm core modeset code will also never show up.
|
||||
*
|
||||
* Standard debug practice is to run the fbcon setup without taking the
|
||||
* console_lock as a hack, to be able to see backtraces and crashes on the
|
||||
* serial line. This can be done by setting the fb.lockless_register_fb=1 kernel
|
||||
* cmdline option.
|
||||
*
|
||||
* The other option is to just disable fbdev emulation since very likely the
|
||||
* first modest from userspace will crash in the same way, and is even easier to
|
||||
* debug. This can be done by setting the drm_kms_helper.fbdev_emulation=0
|
||||
* kernel cmdline option.
|
||||
*
|
||||
* RETURNS:
|
||||
* Zero if everything went ok, nonzero otherwise.
|
||||
*/
|
||||
|
|
Загрузка…
Ссылка в новой задаче