From: Petr Mladek <pmladek@suse.com>
To: Jocelyn Falempe <jfalempe@redhat.com>
Cc: 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,
Caleb Connolly <caleb.connolly@linaro.org>,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5 5/6] drm/log: Implement suspend/resume
Date: Fri, 1 Nov 2024 17:00:49 +0100 [thread overview]
Message-ID: <ZyT7MScAsHxkACfD@pathway.suse.cz> (raw)
In-Reply-To: <a6c00956-3733-43a1-9538-aa2758d2b4a3@redhat.com>
On Fri 2024-10-25 11:46:16, Jocelyn Falempe wrote:
> On 25/10/2024 01:11, Jocelyn Falempe wrote:
> > On 24/10/2024 16:34, Petr Mladek wrote:
> > > On Wed 2024-10-23 14:00:13, Jocelyn Falempe wrote:
> > > > The console is already suspended in printk.c.
> > >
> > > Does this mean that drm_log_client_suspend() is called
> > > after suspend_console(), please?
> >
> > To be honest, I wasn't able to tell which one is called first, and if
> > the order is enforced (I didn't check if drivers can be suspended in
> > parallel, or if it's all sequential)..
> >
> > I then checked if it's possible to suspend the console, but didn't found
> > an easy API to do so, so I went with this lazy patch, just ensuring
> > we're not writing to a suspended graphic driver.
>
> I've run some tests on my hardware, and the console is suspended before the
> graphic driver:
>
> [ 56.409604] printk: Suspending console(s) (use no_console_suspend to
> debug)
> [ 56.411430] serial 00:05: disabled
> [ 56.421877] sd 0:0:0:0: [sda] Synchronizing SCSI cache
> [ 56.421954] sd 4:0:0:0: [sdb] Synchronizing SCSI cache
> [ 56.422545] ata1.00: Entering standby power mode
> [ 56.422793] DRM log suspend
>
> But because there is the "no_console_suspend" parameter, and we should make
> sure to not draw when the graphic driver is suspended, I think this patch is
> needed, and good enough.
> I will just rephrase the commit message, to make it clear, that some message
> won't be drawn, only if "no_console_suspend" is set.
Ah, I forgot about the "no_console_suspend" parameter. The problem
with this patch is that it would quietly drop all pending messages.
drm_log_write_thread() does not have any return value.
nbcon_emit_next_record() would assume that the message was printed.
And the kthread would continue emitting next message...
In compare, CON_SUSPENDED would cause that console_is_usable()
returns false. As a result, nbcon_kthread_func() would not try
to emit any message and go into a sleep.
If we set CON_SUSPENDED then the pending messages will get printed
after the resume. If we use this patch, the messages would get lost.
This is why I am not happy with this patch. I would prefer to
block the console. I see three better solutions:
1. Set CON_SUSPENDED from drm_log_client_suspend even when
"no_console_suspend" is used.
It is a bit dirty and might cause some confusion.
2. Add a new flag, e.g. CON_BLOCKED or CON_DRIVER_BLOCKED,
which might be used for this purpose.
3. Allow con->write_thread() to return an error code.
The question is how exactly the error should be handled.
The kthread would not know when the printing might succeed
again.
I personally prefer the 2nd variant.
Best Regards,
Petr
PS: I am sorry for the late reply. I had vacation...
next prev parent reply other threads:[~2024-11-01 16:00 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-23 12:00 [PATCH v5 0/6] drm/log: Introduce a new boot logger to draw the kmsg on the screen Jocelyn Falempe
2024-10-23 12:00 ` [PATCH v5 1/6] drm/panic: Move drawing functions to drm_draw Jocelyn Falempe
2024-10-23 12:00 ` [PATCH v5 2/6] drm/log: Introduce a new boot logger to draw the kmsg on the screen Jocelyn Falempe
2024-10-23 12:00 ` [PATCH v5 3/6] drm/log: Do not draw if drm_master is taken Jocelyn Falempe
2024-10-23 12:00 ` [PATCH v5 4/6] drm/log: Color the timestamp, to improve readability Jocelyn Falempe
2024-10-23 12:00 ` [PATCH v5 5/6] drm/log: Implement suspend/resume Jocelyn Falempe
2024-10-24 14:34 ` Petr Mladek
2024-10-24 23:11 ` Jocelyn Falempe
2024-10-25 9:46 ` Jocelyn Falempe
2024-11-01 16:00 ` Petr Mladek [this message]
2024-11-04 9:56 ` Jocelyn Falempe
2024-11-04 10:46 ` John Ogness
2024-11-04 14:15 ` Petr Mladek
2024-11-04 14:36 ` Jocelyn Falempe
2024-11-04 15:32 ` John Ogness
2024-11-05 12:19 ` Petr Mladek
2024-11-05 14:19 ` John Ogness
2024-10-23 12:00 ` [PATCH v5 6/6] drm/log: Add integer scaling support Jocelyn Falempe
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=ZyT7MScAsHxkACfD@pathway.suse.cz \
--to=pmladek@suse.com \
--cc=airlied@gmail.com \
--cc=bluescreen_avenger@verizon.net \
--cc=caleb.connolly@linaro.org \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=gpiccoli@igalia.com \
--cc=javierm@redhat.com \
--cc=jfalempe@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.