Add patches from upstream fixing details view on kernels build with

CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER
This commit is contained in:
Hans de Goede 2018-07-02 13:51:24 +02:00
parent 61f6bb5711
commit ccb48d1b6d
4 changed files with 174 additions and 1 deletions

View File

@ -0,0 +1,36 @@
From eb147e52b123070ab8839c3f59aaecc43fcc8652 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Mon, 25 Jun 2018 22:02:07 +0200
Subject: [PATCH 1/3] renderer: support reactivating renderer without closing
it first
At the moment, ply_renderer_activate() doesn't work immediately following
ply_renderer_deactivate(). This is because the renderer isn't marked
inactive until it's closed.
This commit marks the renderer inactive when it's deactivated.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
https://bugs.freedesktop.org/show_bug.cgi?id=107047
---
src/libply-splash-core/ply-renderer.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/libply-splash-core/ply-renderer.c b/src/libply-splash-core/ply-renderer.c
index b9059ef..ecf7082 100644
--- a/src/libply-splash-core/ply-renderer.c
+++ b/src/libply-splash-core/ply-renderer.c
@@ -314,7 +314,8 @@ ply_renderer_deactivate (ply_renderer_t *renderer)
{
assert (renderer->plugin_interface != NULL);
- return renderer->plugin_interface->deactivate (renderer->backend);
+ renderer->plugin_interface->deactivate (renderer->backend);
+ renderer->is_active = false;
}
bool
--
2.17.1

View File

@ -0,0 +1,61 @@
From 778e0fb77a9dfb85270242f1238eba237488eb48 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Mon, 25 Jun 2018 16:55:39 +0200
Subject: [PATCH 2/3] main: move ply_device_manager_deactivate_renderers() into
hide_splash()
hide_splash() should be the counter-part of show_splash(). show_splash()
calls ply_device_manager_activate_renderers() (through show_theme()).
2 of the 3 callers of hide_splash() are already calling
ply_device_manager_deactivate_renderers() directly before calling
hide_splash(). This commit moves the deactivate call into hide_splash()
so that it also gets called from the 3th code-path, which is when
the user hits the escape to key to toggle from the splash to details.
It's important that plymouth deactivates its renderers before going
to details, because those renderers can block the kernel from
initializing fbcon, which the kernel will start doing lazily in the
future:
https://lkml.org/lkml/2018/6/26/489.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
https://bugs.freedesktop.org/show_bug.cgi?id=107047
---
src/main.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main.c b/src/main.c
index 841fe6b..ff02ea6 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1174,6 +1174,8 @@ quit_splash (state_t *state)
static void
hide_splash (state_t *state)
{
+ ply_device_manager_deactivate_renderers (state->device_manager);
+
state->is_shown = false;
cancel_pending_delayed_show (state);
@@ -1193,7 +1195,6 @@ dump_details_and_quit_splash (state_t *state)
state->showing_details = false;
toggle_between_splash_and_details (state);
- ply_device_manager_deactivate_renderers (state->device_manager);
hide_splash (state);
quit_splash (state);
}
@@ -1291,7 +1292,6 @@ on_boot_splash_idle (state_t *state)
if (state->quit_trigger != NULL) {
if (!state->should_retain_splash) {
ply_trace ("hiding splash");
- ply_device_manager_deactivate_renderers (state->device_manager);
hide_splash (state);
}
--
2.17.1

View File

@ -0,0 +1,66 @@
From 353d12806adf6be4d051d491a2af28e3b24b3063 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Mon, 2 Jul 2018 09:39:12 +0200
Subject: [PATCH 3/3] show_theme: Only activate renderers if the splash uses
pixel-displays
Since commit eb147e52b123 ("renderer: support reactivating renderer without
closing it first"), the show_theme() call done by
toggle_between_splash_and_details() will reactivate the renderers after
switching to details mode, causing the drm renderer to switch the screen
from text to graphics mode hiding the details being logged on the console.
This commit fixes this by making show_theme() not call
ply_device_manager_activate_renderers() if the splash does not uses
pixel-displays.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
src/libply-splash-core/ply-boot-splash.c | 5 +++++
src/libply-splash-core/ply-boot-splash.h | 1 +
src/main.c | 3 ++-
3 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/libply-splash-core/ply-boot-splash.c b/src/libply-splash-core/ply-boot-splash.c
index 87a7a0c..7888785 100644
--- a/src/libply-splash-core/ply-boot-splash.c
+++ b/src/libply-splash-core/ply-boot-splash.c
@@ -695,4 +695,9 @@ ply_boot_splash_become_idle (ply_boot_splash_t *splash,
splash->plugin_interface->become_idle (splash->plugin, splash->idle_trigger);
}
+bool ply_boot_splash_uses_pixel_displays (ply_boot_splash_t *splash)
+{
+ return splash->plugin_interface->add_pixel_display != NULL;
+}
+
/* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */
diff --git a/src/libply-splash-core/ply-boot-splash.h b/src/libply-splash-core/ply-boot-splash.h
index b66ca47..0bdbe96 100644
--- a/src/libply-splash-core/ply-boot-splash.h
+++ b/src/libply-splash-core/ply-boot-splash.h
@@ -89,6 +89,7 @@ void ply_boot_splash_attach_progress (ply_boot_splash_t *splash,
void ply_boot_splash_become_idle (ply_boot_splash_t *splash,
ply_boot_splash_on_idle_handler_t idle_handler,
void *user_data);
+bool ply_boot_splash_uses_pixel_displays (ply_boot_splash_t *splash);
#endif
diff --git a/src/main.c b/src/main.c
index ff02ea6..13848c1 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1763,7 +1763,8 @@ show_theme (state_t *state,
return NULL;
attach_splash_to_devices (state, splash);
- ply_device_manager_activate_renderers (state->device_manager);
+ if (ply_boot_splash_uses_pixel_displays (splash))
+ ply_device_manager_activate_renderers (state->device_manager);
splash_mode = get_splash_mode_from_mode (state->mode);
--
2.17.1

View File

@ -16,7 +16,7 @@
Summary: Graphical Boot Animation and Logger
Name: plymouth
Version: 0.9.3
Release: 9%{?snapshot_rel}%{?dist}
Release: 10%{?snapshot_rel}%{?dist}
License: GPLv2+
URL: http://www.freedesktop.org/wiki/Software/Plymouth
Group: System Environment/Base
@ -43,6 +43,12 @@ Patch8: 0001-device-manager-skip-graphical-renderer-setup-when-de.patch
# Patch from upstream fixes boot with rhgb but no renderers available
Patch9: 0001-device-manager-fall-back-to-text-mode-if-graphical-d.patch
# Patches from upstream to fix details view on kernels build with
# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER
Patch10: 0001-renderer-support-reactivating-renderer-without-closi.patch
Patch11: 0002-main-move-ply_device_manager_deactivate_renderers-in.patch
Patch12: 0003-show_theme-Only-activate-renderers-if-the-splash-use.patch
BuildRequires: pkgconfig(libdrm)
BuildRequires: pkgconfig(libudev)
BuildRequires: kernel-headers
@ -464,6 +470,10 @@ fi
%files system-theme
%changelog
* Mon Jul 02 2018 Hans de Goede <jwrdegoede@fedoraproject.org> - 0.9.3-10
- Add patches from upstream fixing details view on kernels build with
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER
* Wed Jun 06 2018 Adam Williamson <awilliam@redhat.com> - 0.9.3-9
- Backport patch to avoid loading renderers on non-rhgb boot
- Backport patch to handle 'rhgb' but no renderers available