diff options
author | Jocelyn Falempe <jfalempe@redhat.com> | 2024-12-04 16:45:04 +0100 |
---|---|---|
committer | Jocelyn Falempe <jfalempe@redhat.com> | 2024-12-10 14:36:54 +0100 |
commit | cd41b4489c27058570255fe0594a33c25e4bd209 (patch) | |
tree | 14594b8c9b368da8885ea515ac0774cde231d881 /drivers/gpu/drm/clients | |
parent | 25e2c2a3eff55683bbe77b108db2a7e389246666 (diff) |
drm/log: Implement suspend/resume
Normally the console is already suspended when the graphic driver
suspend callback is called, but if the parameter no_console_suspend
is set, it might still be active.
So call console_stop()/console_start() in the suspend/resume
callbacks, to make sure it won't try to write to the framebuffer
while the graphic driver is suspended.
Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com>
Reviewed-by: John Ogness <john.ogness@linutronix.de>
Acked-by: Petr Mladek <pmladek@suse.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20241204160014.1171469-6-jfalempe@redhat.com
Diffstat (limited to 'drivers/gpu/drm/clients')
-rw-r--r-- | drivers/gpu/drm/clients/drm_log.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/drm/clients/drm_log.c b/drivers/gpu/drm/clients/drm_log.c index 5a995742aec5..d5f9c679f2c0 100644 --- a/drivers/gpu/drm/clients/drm_log.c +++ b/drivers/gpu/drm/clients/drm_log.c @@ -310,10 +310,30 @@ static int drm_log_client_hotplug(struct drm_client_dev *client) return 0; } +static int drm_log_client_suspend(struct drm_client_dev *client, bool _console_lock) +{ + struct drm_log *dlog = client_to_drm_log(client); + + console_stop(&dlog->con); + + return 0; +} + +static int drm_log_client_resume(struct drm_client_dev *client, bool _console_lock) +{ + struct drm_log *dlog = client_to_drm_log(client); + + console_start(&dlog->con); + + return 0; +} + static const struct drm_client_funcs drm_log_client_funcs = { .owner = THIS_MODULE, .unregister = drm_log_client_unregister, .hotplug = drm_log_client_hotplug, + .suspend = drm_log_client_suspend, + .resume = drm_log_client_resume, }; static void drm_log_write_thread(struct console *con, struct nbcon_write_context *wctxt) |