All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/7] drm/log: Introduce a new boot logger to draw the kmsg on the screen
@ 2024-10-11 10:49 Jocelyn Falempe
  2024-10-11 10:49 ` [PATCH v4 1/7] [NOT FOR REVIEW] drm/client, squash of drm client pending series Jocelyn Falempe
                   ` (6 more replies)
  0 siblings, 7 replies; 11+ messages in thread
From: Jocelyn Falempe @ 2024-10-11 10:49 UTC (permalink / raw)
  To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Daniel Vetter, John Ogness, Javier Martinez Canillas,
	Guilherme G . Piccoli, bluescreen_avenger, Caleb Connolly,
	dri-devel, linux-kernel
  Cc: Jocelyn Falempe

drm_log is a simple logger that uses the drm_client API to print the kmsg boot log on the screen.
This is not a full replacement to fbcon, as it will only print the kmsg.
It will never handle user input, or a terminal because this is better done in userspace.

If you're curious on how it looks like, I've put a small demo here:
https://people.redhat.com/jfalempe/drm_log/drm_log_draft_boot_v2.mp4

Design decisions:
  * It uses the drm_client API, so it should work on all drm drivers from the start.
  * It doesn't scroll the message, that way it doesn't need to redraw the whole screen for each new message.
    It also means it doesn't have to keep drawn messages in memory, to redraw them when scrolling.
  * It uses the new non-blocking console API, so it should work well with PREEMPT_RT
 
v2:
 * Use vmap_local() api, with that change, I've tested it successfully on simpledrm, virtio-gpu, amdgpu, and nouveau.
 * Stop drawing when the drm_master is taken. This avoid wasting CPU cycle if the buffer is not visible.
 * Use deferred probe. Only do the probe the first time there is a log to draw. With this, if you boot with quiet, drm_log won't do any modeset.
 * Add color support for the timestamp prefix, like what dmesg does.
 * Add build dependency on  disabling the fbdev emulation, as they are both drm_client, and there is no way to choose which one gets the focus.

v3:
 * Remove the work thread and circular buffer, and use the new write_thread() console API.
 * Register a console for each drm driver.

v4:
 * Can be built as a module, even if that's not really useful.
 * Rebased on top of "drm: Introduce DRM client library" series from Thomas Zimmermann.
 * Add a Kconfig menu to choose between drm client.
 * Add suspend/resume callbacks.
 * Add integer scaling support.

Thanks and best regards,

-- 

Jocelyn

Jocelyn Falempe (6):
  drm/panic: Move drawing functions to drm_draw
  drm/log: Introduce a new boot logger to draw the kmsg on the screen
  drm/log: Do not draw if drm_master is taken
  drm/log: Color the timestamp, to improve readability
  drm/log: Implement suspend/resume
  drm/log: Add integer scaling support

Thomas Zimmermann (1):
  [NOT FOR REVIEW] drm/client, squash of drm client pending series

 Documentation/gpu/drm-client.rst              |   3 +
 drivers/gpu/drm/Kconfig                       |  92 +++-
 drivers/gpu/drm/Makefile                      |  23 +-
 drivers/gpu/drm/amd/amdgpu/Kconfig            |   1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c    |  22 +-
 drivers/gpu/drm/drm_client.c                  | 121 -----
 drivers/gpu/drm/drm_client_event.c            | 197 ++++++++
 drivers/gpu/drm/drm_client_setup.c            |  21 +-
 drivers/gpu/drm/drm_debugfs.c                 |   1 -
 drivers/gpu/drm/drm_draw.c                    | 216 +++++++++
 drivers/gpu/drm/drm_draw.h                    |  56 +++
 drivers/gpu/drm/drm_drv.c                     |   2 +-
 drivers/gpu/drm/drm_fb_helper.c               |  31 --
 drivers/gpu/drm/drm_fbdev_client.c            |  30 +-
 drivers/gpu/drm/drm_file.c                    |   2 +-
 drivers/gpu/drm/drm_internal.h                |  15 +
 drivers/gpu/drm/drm_kms_helper_common.c       |  38 ++
 drivers/gpu/drm/drm_log.c                     | 426 ++++++++++++++++++
 drivers/gpu/drm/drm_log.h                     |  11 +
 drivers/gpu/drm/drm_modeset_helper.c          |  14 +-
 drivers/gpu/drm/drm_panic.c                   | 247 +---------
 drivers/gpu/drm/drm_probe_helper.c            |   2 +-
 drivers/gpu/drm/i915/Kconfig                  |   1 +
 .../drm/i915/display/intel_display_driver.c   |   2 +-
 drivers/gpu/drm/nouveau/nouveau_display.c     |   8 +-
 drivers/gpu/drm/nouveau/nouveau_vga.c         |   2 +-
 drivers/gpu/drm/radeon/radeon_device.c        |  19 +-
 drivers/gpu/drm/radeon/radeon_fbdev.c         |   6 -
 drivers/gpu/drm/radeon/radeon_mode.h          |   3 -
 drivers/gpu/drm/xe/Kconfig                    |   1 +
 include/drm/drm_client.h                      |  41 +-
 include/drm/drm_client_event.h                |  27 ++
 32 files changed, 1235 insertions(+), 446 deletions(-)
 create mode 100644 drivers/gpu/drm/drm_client_event.c
 create mode 100644 drivers/gpu/drm/drm_draw.c
 create mode 100644 drivers/gpu/drm/drm_draw.h
 create mode 100644 drivers/gpu/drm/drm_log.c
 create mode 100644 drivers/gpu/drm/drm_log.h
 create mode 100644 include/drm/drm_client_event.h


base-commit: 33c255312660653cf54f8019896b5dca28e3c580
-- 
2.46.2


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2024-10-15 20:05 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-11 10:49 [PATCH v4 0/7] drm/log: Introduce a new boot logger to draw the kmsg on the screen Jocelyn Falempe
2024-10-11 10:49 ` [PATCH v4 1/7] [NOT FOR REVIEW] drm/client, squash of drm client pending series Jocelyn Falempe
2024-10-11 10:49 ` [PATCH v4 2/7] drm/panic: Move drawing functions to drm_draw Jocelyn Falempe
2024-10-11 10:50 ` [PATCH v4 3/7] drm/log: Introduce a new boot logger to draw the kmsg on the screen Jocelyn Falempe
2024-10-15 20:05   ` kernel test robot
2024-10-11 10:50 ` [PATCH v4 4/7] drm/log: Do not draw if drm_master is taken Jocelyn Falempe
2024-10-11 10:50 ` [PATCH v4 5/7] drm/log: Color the timestamp, to improve readability Jocelyn Falempe
2024-10-11 10:50 ` [PATCH v4 6/7] drm/log: Implement suspend/resume Jocelyn Falempe
2024-10-11 10:50 ` [PATCH v4 7/7] drm/log: Add integer scaling support Jocelyn Falempe
2024-10-11 11:18   ` Jani Nikula
2024-10-11 11:58     ` Jocelyn Falempe

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.