From: Jocelyn Falempe <jfalempe@redhat.com>
To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>,
John Ogness <john.ogness@linutronix.de>,
Javier Martinez Canillas <javierm@redhat.com>,
"Guilherme G . Piccoli" <gpiccoli@igalia.com>,
bluescreen_avenger@verizon.net, dri-devel@lists.freedesktop.org,
linux-kernel@vger.kernel.org
Cc: Jocelyn Falempe <jfalempe@redhat.com>
Subject: [RFC PATCH v2 0/5] drm/log: Introduce a new boot logger to draw the kmsg on the screen
Date: Fri, 16 Aug 2024 14:52:32 +0200 [thread overview]
Message-ID: <20240816125612.1003295-1-jfalempe@redhat.com> (raw)
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 a circular buffer so the console->write() callback is very quick, and will never stall.
* Drawing is done asynchronously using a workqueue.
* drm_log can only be built-in (and drm must be built-in too).
The reason is that, if you build it as a module, then a userspace application will be more appropriate than this module.
* When nbcon will be ready, I will use it. It should simplify this a lot, but I prefer not to depend on it yet.
The first patch is not for review/merge, it's a squash of my pending drm_panic series:
https://patchwork.freedesktop.org/series/135944/
The second patch, moves the drawing function from drm_panic.c, to drm_draw.c, so they can be re-used by drm_log.
The next patches are the actual drm_log implementation.
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.
Thanks and best regards,
--
Jocelyn
Jocelyn Falempe (5):
[NOT FOR REVIEW] drm/panic: Squash of pending series
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
drivers/gpu/drm/Kconfig | 50 ++
drivers/gpu/drm/Makefile | 4 +
drivers/gpu/drm/drm_crtc_internal.h | 4 +
drivers/gpu/drm/drm_draw.c | 216 ++++++
drivers/gpu/drm/drm_draw.h | 56 ++
drivers/gpu/drm/drm_drv.c | 5 +
drivers/gpu/drm/drm_log.c | 515 ++++++++++++++
drivers/gpu/drm/drm_log.h | 11 +
drivers/gpu/drm/drm_panic.c | 569 ++++++++-------
drivers/gpu/drm/drm_panic_qr.rs | 1003 +++++++++++++++++++++++++++
include/drm/drm_rect.h | 15 +
11 files changed, 2193 insertions(+), 255 deletions(-)
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 drivers/gpu/drm/drm_panic_qr.rs
base-commit: 8befe8fa5a4e4b30787b17e078d9d7b5cb92ea19
--
2.46.0
next reply other threads:[~2024-08-16 12:58 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-16 12:52 Jocelyn Falempe [this message]
2024-08-16 12:52 ` [PATCH v2 1/5] [NOT FOR REVIEW] drm/panic: Squash of pending series Jocelyn Falempe
2024-08-16 12:52 ` [PATCH v2 2/5] drm/panic: Move drawing functions to drm_draw Jocelyn Falempe
2024-08-16 12:52 ` [PATCH v2 3/5] drm/log: Introduce a new boot logger to draw the kmsg on the screen Jocelyn Falempe
2024-08-18 8:33 ` kernel test robot
2024-08-16 12:52 ` [PATCH v2 4/5] drm/log: Do not draw if drm_master is taken Jocelyn Falempe
2024-08-16 12:52 ` [PATCH v2 5/5] drm/log: Color the timestamp, to improve readability Jocelyn Falempe
2024-08-17 13:45 ` [RFC PATCH v2 0/5] drm/log: Introduce a new boot logger to draw the kmsg on the screen nerdopolis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240816125612.1003295-1-jfalempe@redhat.com \
--to=jfalempe@redhat.com \
--cc=airlied@gmail.com \
--cc=bluescreen_avenger@verizon.net \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=gpiccoli@igalia.com \
--cc=javierm@redhat.com \
--cc=john.ogness@linutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=tzimmermann@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.