Re: [PATCH v9 0/6] drm/log: Introduce a new boot logger to draw the kmsg on the screen
From: Geert Uytterhoeven
Date: Wed Dec 18 2024 - 06:00:36 EST
Hi Jocelyn,
On Wed, Dec 18, 2024 at 11:14 AM Jocelyn Falempe <jfalempe@xxxxxxxxxx> wrote:
> On 17/12/2024 15:54, Geert Uytterhoeven wrote:
> > On Tue, Dec 17, 2024 at 3:46 PM Jocelyn Falempe <jfalempe@xxxxxxxxxx> wrote:
> >> On 17/12/2024 15:19, Geert Uytterhoeven wrote:
> >>> On Wed, Dec 4, 2024 at 6:41 PM Jocelyn Falempe <jfalempe@xxxxxxxxxx> wrote:
> >>>> 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
> >>>
> >>> I gave this a try on Koelsch (R-Car M2-W), using rcar-du.
> >>> Unfortunately I don't see any kernel messages, and my monitor complains
> >>> about no signal. Does this require special support from the driver?
> >>
> >> It doesn't require a special support from the driver. But as it is the
> >> first drm client other than fbdev emulation, I'm not surprised it's
> >> broken on some driver.
> >> I know it works on virtio-gpu, nouveau, amdgpu, and even on a OnePlus 6
> >> (Qualcomm SDM845/freedreno), without requiring driver changes.
> >>
> >> Do you have a serial console on this device, to check if there is
> >> something in kmsg?
> >
> > Nothing interesting to see. Compared to the fbdev client:
> >
> > rcar-du feb00000.display: [drm] Registered 2 planes with drm panic
> > [drm] Initialized rcar-du 1.0.0 for feb00000.display on minor 0
> > rcar-du feb00000.display: [drm] Device feb00000.display probed
> > -Console: switching to colour frame buffer device 240x67
> > -rcar-du feb00000.display: [drm] fb0: rcar-dudrmfb frame buffer device
> >
> > I did verify (by adding my own debug prints) that the code does
> > get to the success case in drm_log_register().
> > Thanks!
>
> Maybe you need to add console=drm_log to your kernel command line, so
> the kernel will actually use this console.
Thanks, that does the trick!
Note that I do not need to specify any console= kernel command line
parameter for the fbdev console.
With
CONFIG_VT_CONSOLE=y
CONFIG_DRM_CLIENT_DEFAULT_FBDEV=y
I see all console messages on both the emulated fbdev console and on
the serial console by default.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds