Add patch queued in -next to make quiet more quiet
Add patches queued in -next to make efifb / fbcon retain the vendor logo (ACPI BRGT boot graphics) until the first text is output to the console
This commit is contained in:
parent
86f7bf57f9
commit
838818e5a9
79
0001-printk-Make-CONSOLE_LOGLEVEL_QUIET-configurable.patch
Normal file
79
0001-printk-Make-CONSOLE_LOGLEVEL_QUIET-configurable.patch
Normal file
@ -0,0 +1,79 @@
|
||||
From 79bfd044ed82290603093be1a3759672176f3e6f Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Tue, 19 Jun 2018 13:30:04 +0200
|
||||
Subject: [PATCH] printk: Make CONSOLE_LOGLEVEL_QUIET configurable
|
||||
|
||||
The goal of passing the "quiet" option to the kernel is for the kernel
|
||||
to be quiet unless something really is wrong.
|
||||
|
||||
Sofar passing quiet has been (mostly) equivalent to passing
|
||||
loglevel=4 on the kernel commandline. Which means to show any messages
|
||||
with a level of KERN_ERR or higher severity on the console.
|
||||
|
||||
In practice this often does not result in a quiet boot though, since
|
||||
there are many false-positive or otherwise harmless error messages printed,
|
||||
defeating the purpose of the quiet option. Esp. the ACPICA code is really
|
||||
bad wrt this, but there are plenty of others too.
|
||||
|
||||
This commit makes CONSOLE_LOGLEVEL_QUIET configurable.
|
||||
|
||||
This for example will allow distros which want quiet to really mean quiet
|
||||
to set CONSOLE_LOGLEVEL_QUIET so that only messages with a higher severity
|
||||
then KERN_ERR (CRIT, ALERT, EMERG) get printed, avoiding an endless game
|
||||
of whack-a-mole silencing harmless error messages.
|
||||
|
||||
Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
include/linux/printk.h | 6 +++---
|
||||
lib/Kconfig.debug | 11 +++++++++++
|
||||
2 files changed, 14 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/include/linux/printk.h b/include/linux/printk.h
|
||||
index 6d7e800affd8..18602bb3eca8 100644
|
||||
--- a/include/linux/printk.h
|
||||
+++ b/include/linux/printk.h
|
||||
@@ -50,15 +50,15 @@ static inline const char *printk_skip_headers(const char *buffer)
|
||||
/* We show everything that is MORE important than this.. */
|
||||
#define CONSOLE_LOGLEVEL_SILENT 0 /* Mum's the word */
|
||||
#define CONSOLE_LOGLEVEL_MIN 1 /* Minimum loglevel we let people use */
|
||||
-#define CONSOLE_LOGLEVEL_QUIET 4 /* Shhh ..., when booted with "quiet" */
|
||||
#define CONSOLE_LOGLEVEL_DEBUG 10 /* issue debug messages */
|
||||
#define CONSOLE_LOGLEVEL_MOTORMOUTH 15 /* You can't shut this one up */
|
||||
|
||||
/*
|
||||
- * Default used to be hard-coded at 7, we're now allowing it to be set from
|
||||
- * kernel config.
|
||||
+ * Default used to be hard-coded at 7, quiet used to be hardcoded at 4,
|
||||
+ * we're now allowing both to be set from kernel config.
|
||||
*/
|
||||
#define CONSOLE_LOGLEVEL_DEFAULT CONFIG_CONSOLE_LOGLEVEL_DEFAULT
|
||||
+#define CONSOLE_LOGLEVEL_QUIET CONFIG_CONSOLE_LOGLEVEL_QUIET
|
||||
|
||||
extern int console_printk[];
|
||||
|
||||
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
|
||||
index 8838d1158d19..0d1c48dd22a9 100644
|
||||
--- a/lib/Kconfig.debug
|
||||
+++ b/lib/Kconfig.debug
|
||||
@@ -30,6 +30,17 @@ config CONSOLE_LOGLEVEL_DEFAULT
|
||||
usage in the kernel. That is controlled by the MESSAGE_LOGLEVEL_DEFAULT
|
||||
option.
|
||||
|
||||
+config CONSOLE_LOGLEVEL_QUIET
|
||||
+ int "quiet console loglevel (1-15)"
|
||||
+ range 1 15
|
||||
+ default "4"
|
||||
+ help
|
||||
+ loglevel to use when "quiet" is passed on the kernel commandline.
|
||||
+
|
||||
+ When "quiet" is passed on the kernel commandline this loglevel
|
||||
+ will be used as the loglevel. IOW passing "quiet" will be the
|
||||
+ equivalent of passing "loglevel=<CONSOLE_LOGLEVEL_QUIET>"
|
||||
+
|
||||
config MESSAGE_LOGLEVEL_DEFAULT
|
||||
int "Default message log level (1-7)"
|
||||
range 1 7
|
||||
--
|
||||
2.18.0
|
||||
|
34
0002-printk-Export-is_console_locked.patch
Normal file
34
0002-printk-Export-is_console_locked.patch
Normal file
@ -0,0 +1,34 @@
|
||||
From d48de54a9dab5370edd2e991f78cc7996cf5483e Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Thu, 28 Jun 2018 15:20:27 +0200
|
||||
Subject: [PATCH 2/7] printk: Export is_console_locked
|
||||
|
||||
This is a preparation patch for adding a number of WARN_CONSOLE_UNLOCKED()
|
||||
calls to the fbcon code, which may be built as a module (event though
|
||||
usually it is not).
|
||||
|
||||
Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
|
||||
Acked-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
|
||||
Acked-by: Petr Mladek <pmladek@suse.com>
|
||||
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
|
||||
---
|
||||
kernel/printk/printk.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
|
||||
index 247808333ba4..3f041e7cbfc9 100644
|
||||
--- a/kernel/printk/printk.c
|
||||
+++ b/kernel/printk/printk.c
|
||||
@@ -2243,6 +2243,7 @@ int is_console_locked(void)
|
||||
{
|
||||
return console_locked;
|
||||
}
|
||||
+EXPORT_SYMBOL(is_console_locked);
|
||||
|
||||
/*
|
||||
* Check if we have any console that is capable of printing while cpu is
|
||||
--
|
||||
2.18.0
|
||||
|
70
0003-fbcon-Call-WARN_CONSOLE_UNLOCKED-where-applicable.patch
Normal file
70
0003-fbcon-Call-WARN_CONSOLE_UNLOCKED-where-applicable.patch
Normal file
@ -0,0 +1,70 @@
|
||||
From 3bd3a0e330aae4fffa8028aba2407ef615ab040b Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Thu, 28 Jun 2018 15:20:28 +0200
|
||||
Subject: [PATCH 3/7] fbcon: Call WARN_CONSOLE_UNLOCKED() where applicable
|
||||
|
||||
Replace comments about places where the console lock should be held with
|
||||
calls to WARN_CONSOLE_UNLOCKED() to assert that it is actually held.
|
||||
|
||||
Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
|
||||
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
|
||||
---
|
||||
drivers/video/fbdev/core/fbcon.c | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
|
||||
index c910e74d46ff..cd8d52a967aa 100644
|
||||
--- a/drivers/video/fbdev/core/fbcon.c
|
||||
+++ b/drivers/video/fbdev/core/fbcon.c
|
||||
@@ -828,6 +828,8 @@ static int set_con2fb_map(int unit, int newidx, int user)
|
||||
struct fb_info *oldinfo = NULL;
|
||||
int found, err = 0;
|
||||
|
||||
+ WARN_CONSOLE_UNLOCKED();
|
||||
+
|
||||
if (oldidx == newidx)
|
||||
return 0;
|
||||
|
||||
@@ -3044,6 +3046,8 @@ static int fbcon_fb_unbind(int idx)
|
||||
{
|
||||
int i, new_idx = -1, ret = 0;
|
||||
|
||||
+ WARN_CONSOLE_UNLOCKED();
|
||||
+
|
||||
if (!fbcon_has_console_bind)
|
||||
return 0;
|
||||
|
||||
@@ -3094,6 +3098,8 @@ static int fbcon_fb_unregistered(struct fb_info *info)
|
||||
{
|
||||
int i, idx;
|
||||
|
||||
+ WARN_CONSOLE_UNLOCKED();
|
||||
+
|
||||
idx = info->node;
|
||||
for (i = first_fb_vc; i <= last_fb_vc; i++) {
|
||||
if (con2fb_map[i] == idx)
|
||||
@@ -3131,6 +3137,9 @@ static int fbcon_fb_unregistered(struct fb_info *info)
|
||||
static void fbcon_remap_all(int idx)
|
||||
{
|
||||
int i;
|
||||
+
|
||||
+ WARN_CONSOLE_UNLOCKED();
|
||||
+
|
||||
for (i = first_fb_vc; i <= last_fb_vc; i++)
|
||||
set_con2fb_map(i, idx, 0);
|
||||
|
||||
@@ -3177,6 +3186,8 @@ static int fbcon_fb_registered(struct fb_info *info)
|
||||
{
|
||||
int ret = 0, i, idx;
|
||||
|
||||
+ WARN_CONSOLE_UNLOCKED();
|
||||
+
|
||||
idx = info->node;
|
||||
fbcon_select_primary(info);
|
||||
|
||||
--
|
||||
2.18.0
|
||||
|
322
0004-console-fbcon-Add-support-for-deferred-console-takeo.patch
Normal file
322
0004-console-fbcon-Add-support-for-deferred-console-takeo.patch
Normal file
@ -0,0 +1,322 @@
|
||||
From 83d83bebf40132e2d55ec58af666713cc76f9764 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Thu, 28 Jun 2018 15:20:30 +0200
|
||||
Subject: [PATCH 4/7] console/fbcon: Add support for deferred console takeover
|
||||
|
||||
Currently fbcon claims fbdevs as soon as they are registered and takes over
|
||||
the console as soon as the first fbdev gets registered.
|
||||
|
||||
This behavior is undesirable in cases where a smooth graphical bootup is
|
||||
desired, in such cases we typically want the contents of the framebuffer
|
||||
(typically a vendor logo) to stay in place as is.
|
||||
|
||||
The current solution for this problem (on embedded systems) is to not
|
||||
enable fbcon.
|
||||
|
||||
This commit adds a new FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER config option,
|
||||
which when enabled defers fbcon taking over the console from the dummy
|
||||
console until the first text is displayed on the console. Together with the
|
||||
"quiet" kernel commandline option, this allows fbcon to still be used
|
||||
together with a smooth graphical bootup, having it take over the console as
|
||||
soon as e.g. an error message is logged.
|
||||
|
||||
Note the choice to detect the first console output in the dummycon driver,
|
||||
rather then handling this entirely inside the fbcon code, was made after
|
||||
2 failed attempts to handle this entirely inside the fbcon code. The fbcon
|
||||
code is woven quite tightly into the console code, making this to only
|
||||
feasible option.
|
||||
|
||||
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
|
||||
---
|
||||
Documentation/fb/fbcon.txt | 7 ++++
|
||||
drivers/video/console/Kconfig | 11 +++++
|
||||
drivers/video/console/dummycon.c | 67 +++++++++++++++++++++++++----
|
||||
drivers/video/fbdev/core/fbcon.c | 72 ++++++++++++++++++++++++++++++++
|
||||
include/linux/console.h | 5 +++
|
||||
5 files changed, 154 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/Documentation/fb/fbcon.txt b/Documentation/fb/fbcon.txt
|
||||
index 79c22d096bbc..d4d642e1ce9c 100644
|
||||
--- a/Documentation/fb/fbcon.txt
|
||||
+++ b/Documentation/fb/fbcon.txt
|
||||
@@ -155,6 +155,13 @@ C. Boot options
|
||||
used by text. By default, this area will be black. The 'color' value
|
||||
is an integer number that depends on the framebuffer driver being used.
|
||||
|
||||
+6. fbcon=nodefer
|
||||
+
|
||||
+ If the kernel is compiled with deferred fbcon takeover support, normally
|
||||
+ the framebuffer contents, left in place by the firmware/bootloader, will
|
||||
+ be preserved until there actually is some text is output to the console.
|
||||
+ This option causes fbcon to bind immediately to the fbdev device.
|
||||
+
|
||||
C. Attaching, Detaching and Unloading
|
||||
|
||||
Before going on how to attach, detach and unload the framebuffer console, an
|
||||
diff --git a/drivers/video/console/Kconfig b/drivers/video/console/Kconfig
|
||||
index 4110ba7d7ca9..e91edef98633 100644
|
||||
--- a/drivers/video/console/Kconfig
|
||||
+++ b/drivers/video/console/Kconfig
|
||||
@@ -150,6 +150,17 @@ config FRAMEBUFFER_CONSOLE_ROTATION
|
||||
such that other users of the framebuffer will remain normally
|
||||
oriented.
|
||||
|
||||
+config FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER
|
||||
+ bool "Framebuffer Console Deferred Takeover"
|
||||
+ depends on FRAMEBUFFER_CONSOLE=y && DUMMY_CONSOLE=y
|
||||
+ help
|
||||
+ If enabled this defers the framebuffer console taking over the
|
||||
+ console from the dummy console until the first text is displayed on
|
||||
+ the console. This is useful in combination with the "quiet" kernel
|
||||
+ commandline option to keep the framebuffer contents initially put up
|
||||
+ by the firmware in place, rather then replacing the contents with a
|
||||
+ black screen as soon as fbcon loads.
|
||||
+
|
||||
config STI_CONSOLE
|
||||
bool "STI text console"
|
||||
depends on PARISC && HAS_IOMEM
|
||||
diff --git a/drivers/video/console/dummycon.c b/drivers/video/console/dummycon.c
|
||||
index f2eafe2ed980..45ad925ad5f8 100644
|
||||
--- a/drivers/video/console/dummycon.c
|
||||
+++ b/drivers/video/console/dummycon.c
|
||||
@@ -26,6 +26,65 @@
|
||||
#define DUMMY_ROWS CONFIG_DUMMY_CONSOLE_ROWS
|
||||
#endif
|
||||
|
||||
+#ifdef CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER
|
||||
+/* These are both protected by the console_lock */
|
||||
+static RAW_NOTIFIER_HEAD(dummycon_output_nh);
|
||||
+static bool dummycon_putc_called;
|
||||
+
|
||||
+void dummycon_register_output_notifier(struct notifier_block *nb)
|
||||
+{
|
||||
+ raw_notifier_chain_register(&dummycon_output_nh, nb);
|
||||
+
|
||||
+ if (dummycon_putc_called)
|
||||
+ nb->notifier_call(nb, 0, NULL);
|
||||
+}
|
||||
+
|
||||
+void dummycon_unregister_output_notifier(struct notifier_block *nb)
|
||||
+{
|
||||
+ raw_notifier_chain_unregister(&dummycon_output_nh, nb);
|
||||
+}
|
||||
+
|
||||
+static void dummycon_putc(struct vc_data *vc, int c, int ypos, int xpos)
|
||||
+{
|
||||
+ dummycon_putc_called = true;
|
||||
+ raw_notifier_call_chain(&dummycon_output_nh, 0, NULL);
|
||||
+}
|
||||
+
|
||||
+static void dummycon_putcs(struct vc_data *vc, const unsigned short *s,
|
||||
+ int count, int ypos, int xpos)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ if (!dummycon_putc_called) {
|
||||
+ /* Ignore erases */
|
||||
+ for (i = 0 ; i < count; i++) {
|
||||
+ if (s[i] != vc->vc_video_erase_char)
|
||||
+ break;
|
||||
+ }
|
||||
+ if (i == count)
|
||||
+ return;
|
||||
+
|
||||
+ dummycon_putc_called = true;
|
||||
+ }
|
||||
+
|
||||
+ raw_notifier_call_chain(&dummycon_output_nh, 0, NULL);
|
||||
+}
|
||||
+
|
||||
+static int dummycon_blank(struct vc_data *vc, int blank, int mode_switch)
|
||||
+{
|
||||
+ /* Redraw, so that we get putc(s) for output done while blanked */
|
||||
+ return 1;
|
||||
+}
|
||||
+#else
|
||||
+static void dummycon_putc(struct vc_data *vc, int c, int ypos, int xpos) { }
|
||||
+static void dummycon_putcs(struct vc_data *vc, const unsigned short *s,
|
||||
+ int count, int ypos, int xpos) { }
|
||||
+static int dummycon_blank(struct vc_data *vc, int blank, int mode_switch)
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
static const char *dummycon_startup(void)
|
||||
{
|
||||
return "dummy device";
|
||||
@@ -44,9 +103,6 @@ static void dummycon_init(struct vc_data *vc, int init)
|
||||
static void dummycon_deinit(struct vc_data *vc) { }
|
||||
static void dummycon_clear(struct vc_data *vc, int sy, int sx, int height,
|
||||
int width) { }
|
||||
-static void dummycon_putc(struct vc_data *vc, int c, int ypos, int xpos) { }
|
||||
-static void dummycon_putcs(struct vc_data *vc, const unsigned short *s,
|
||||
- int count, int ypos, int xpos) { }
|
||||
static void dummycon_cursor(struct vc_data *vc, int mode) { }
|
||||
|
||||
static bool dummycon_scroll(struct vc_data *vc, unsigned int top,
|
||||
@@ -61,11 +117,6 @@ static int dummycon_switch(struct vc_data *vc)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static int dummycon_blank(struct vc_data *vc, int blank, int mode_switch)
|
||||
-{
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
static int dummycon_font_set(struct vc_data *vc, struct console_font *font,
|
||||
unsigned int flags)
|
||||
{
|
||||
diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
|
||||
index cd8d52a967aa..5fb156bdcf4e 100644
|
||||
--- a/drivers/video/fbdev/core/fbcon.c
|
||||
+++ b/drivers/video/fbdev/core/fbcon.c
|
||||
@@ -129,6 +129,12 @@ static inline void fbcon_map_override(void)
|
||||
}
|
||||
#endif /* CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY */
|
||||
|
||||
+#ifdef CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER
|
||||
+static bool deferred_takeover = true;
|
||||
+#else
|
||||
+#define deferred_takeover false
|
||||
+#endif
|
||||
+
|
||||
/* font data */
|
||||
static char fontname[40];
|
||||
|
||||
@@ -499,6 +505,12 @@ static int __init fb_console_setup(char *this_opt)
|
||||
margin_color = simple_strtoul(options, &options, 0);
|
||||
continue;
|
||||
}
|
||||
+#ifdef CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER
|
||||
+ if (!strcmp(options, "nodefer")) {
|
||||
+ deferred_takeover = false;
|
||||
+ continue;
|
||||
+ }
|
||||
+#endif
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
@@ -3100,6 +3112,9 @@ static int fbcon_fb_unregistered(struct fb_info *info)
|
||||
|
||||
WARN_CONSOLE_UNLOCKED();
|
||||
|
||||
+ if (deferred_takeover)
|
||||
+ return 0;
|
||||
+
|
||||
idx = info->node;
|
||||
for (i = first_fb_vc; i <= last_fb_vc; i++) {
|
||||
if (con2fb_map[i] == idx)
|
||||
@@ -3140,6 +3155,13 @@ static void fbcon_remap_all(int idx)
|
||||
|
||||
WARN_CONSOLE_UNLOCKED();
|
||||
|
||||
+ if (deferred_takeover) {
|
||||
+ for (i = first_fb_vc; i <= last_fb_vc; i++)
|
||||
+ con2fb_map_boot[i] = idx;
|
||||
+ fbcon_map_override();
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
for (i = first_fb_vc; i <= last_fb_vc; i++)
|
||||
set_con2fb_map(i, idx, 0);
|
||||
|
||||
@@ -3191,6 +3213,11 @@ static int fbcon_fb_registered(struct fb_info *info)
|
||||
idx = info->node;
|
||||
fbcon_select_primary(info);
|
||||
|
||||
+ if (deferred_takeover) {
|
||||
+ pr_info("fbcon: Deferring console take-over\n");
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
if (info_idx == -1) {
|
||||
for (i = first_fb_vc; i <= last_fb_vc; i++) {
|
||||
if (con2fb_map_boot[i] == idx) {
|
||||
@@ -3566,8 +3593,46 @@ static int fbcon_init_device(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+#ifdef CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER
|
||||
+static struct notifier_block fbcon_output_nb;
|
||||
+
|
||||
+static int fbcon_output_notifier(struct notifier_block *nb,
|
||||
+ unsigned long action, void *data)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ WARN_CONSOLE_UNLOCKED();
|
||||
+
|
||||
+ pr_info("fbcon: Taking over console\n");
|
||||
+
|
||||
+ dummycon_unregister_output_notifier(&fbcon_output_nb);
|
||||
+ deferred_takeover = false;
|
||||
+ logo_shown = FBCON_LOGO_DONTSHOW;
|
||||
+
|
||||
+ for (i = 0; i < FB_MAX; i++) {
|
||||
+ if (registered_fb[i])
|
||||
+ fbcon_fb_registered(registered_fb[i]);
|
||||
+ }
|
||||
+
|
||||
+ return NOTIFY_OK;
|
||||
+}
|
||||
+
|
||||
+static void fbcon_register_output_notifier(void)
|
||||
+{
|
||||
+ fbcon_output_nb.notifier_call = fbcon_output_notifier;
|
||||
+ dummycon_register_output_notifier(&fbcon_output_nb);
|
||||
+}
|
||||
+#else
|
||||
+static inline void fbcon_register_output_notifier(void) {}
|
||||
+#endif
|
||||
+
|
||||
static void fbcon_start(void)
|
||||
{
|
||||
+ if (deferred_takeover) {
|
||||
+ fbcon_register_output_notifier();
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
if (num_registered_fb) {
|
||||
int i;
|
||||
|
||||
@@ -3594,6 +3659,13 @@ static void fbcon_exit(void)
|
||||
if (fbcon_has_exited)
|
||||
return;
|
||||
|
||||
+#ifdef CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER
|
||||
+ if (deferred_takeover) {
|
||||
+ dummycon_unregister_output_notifier(&fbcon_output_nb);
|
||||
+ deferred_takeover = false;
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
kfree((void *)softback_buf);
|
||||
softback_buf = 0UL;
|
||||
|
||||
diff --git a/include/linux/console.h b/include/linux/console.h
|
||||
index dfd6b0e97855..f59f3dbca65c 100644
|
||||
--- a/include/linux/console.h
|
||||
+++ b/include/linux/console.h
|
||||
@@ -21,6 +21,7 @@ struct console_font_op;
|
||||
struct console_font;
|
||||
struct module;
|
||||
struct tty_struct;
|
||||
+struct notifier_block;
|
||||
|
||||
/*
|
||||
* this is what the terminal answers to a ESC-Z or csi0c query.
|
||||
@@ -220,4 +221,8 @@ static inline bool vgacon_text_force(void) { return false; }
|
||||
|
||||
extern void console_init(void);
|
||||
|
||||
+/* For deferred console takeover */
|
||||
+void dummycon_register_output_notifier(struct notifier_block *nb);
|
||||
+void dummycon_unregister_output_notifier(struct notifier_block *nb);
|
||||
+
|
||||
#endif /* _LINUX_CONSOLE_H */
|
||||
--
|
||||
2.18.0
|
||||
|
33
0005-efi-bgrt-Drop-__initdata-from-bgrt_image_size.patch
Normal file
33
0005-efi-bgrt-Drop-__initdata-from-bgrt_image_size.patch
Normal file
@ -0,0 +1,33 @@
|
||||
From 421b8aef3902426c4c3ebd23218c0ad282786e1d Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Tue, 3 Jul 2018 17:43:10 +0200
|
||||
Subject: [PATCH 5/7] efi/bgrt: Drop __initdata from bgrt_image_size
|
||||
|
||||
bgrt_image_size is necessary to (optionally) show the boot graphics from
|
||||
the efifb code. The efifb driver is a platform driver, using a normal
|
||||
driver probe() driver callback. So even though it is always builtin it
|
||||
cannot reference __initdata.
|
||||
|
||||
Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
|
||||
---
|
||||
drivers/firmware/efi/efi-bgrt.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/firmware/efi/efi-bgrt.c b/drivers/firmware/efi/efi-bgrt.c
|
||||
index 50793fda7819..b22ccfb0c991 100644
|
||||
--- a/drivers/firmware/efi/efi-bgrt.c
|
||||
+++ b/drivers/firmware/efi/efi-bgrt.c
|
||||
@@ -20,7 +20,7 @@
|
||||
#include <linux/efi-bgrt.h>
|
||||
|
||||
struct acpi_table_bgrt bgrt_tab;
|
||||
-size_t __initdata bgrt_image_size;
|
||||
+size_t bgrt_image_size;
|
||||
|
||||
struct bmp_header {
|
||||
u16 id;
|
||||
--
|
||||
2.18.0
|
||||
|
201
0006-efifb-Copy-the-ACPI-BGRT-boot-graphics-to-the-frameb.patch
Normal file
201
0006-efifb-Copy-the-ACPI-BGRT-boot-graphics-to-the-frameb.patch
Normal file
@ -0,0 +1,201 @@
|
||||
From a5f742d7ba70c702bcf67dd1fd8d5dde3f5042fc Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Tue, 3 Jul 2018 17:43:10 +0200
|
||||
Subject: [PATCH 6/7] efifb: Copy the ACPI BGRT boot graphics to the
|
||||
framebuffer
|
||||
|
||||
On systems where fbcon is configured for deferred console takeover, the
|
||||
intend is for the framebuffer to show the boot graphics (e.g a vendor
|
||||
logo) until some message (e.g. an error) is printed or a graphical
|
||||
session takes over.
|
||||
|
||||
Some firmware relies on the OS to show the boot graphics.
|
||||
|
||||
This patch adds support to efifb to show the boot graphics and
|
||||
automatically enables this when fbcon is configured for deferred
|
||||
console takeover.
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
|
||||
---
|
||||
drivers/video/fbdev/efifb.c | 140 ++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 140 insertions(+)
|
||||
|
||||
diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c
|
||||
index 46a4484e3da7..fa01eecc0a55 100644
|
||||
--- a/drivers/video/fbdev/efifb.c
|
||||
+++ b/drivers/video/fbdev/efifb.c
|
||||
@@ -9,16 +9,39 @@
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/efi.h>
|
||||
+#include <linux/efi-bgrt.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/fb.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/platform_device.h>
|
||||
+#include <linux/printk.h>
|
||||
#include <linux/screen_info.h>
|
||||
#include <video/vga.h>
|
||||
#include <asm/efi.h>
|
||||
#include <drm/drm_utils.h> /* For drm_get_panel_orientation_quirk */
|
||||
#include <drm/drm_connector.h> /* For DRM_MODE_PANEL_ORIENTATION_* */
|
||||
|
||||
+struct bmp_file_header {
|
||||
+ u16 id;
|
||||
+ u32 file_size;
|
||||
+ u32 reserved;
|
||||
+ u32 bitmap_offset;
|
||||
+} __packed;
|
||||
+
|
||||
+struct bmp_dib_header {
|
||||
+ u32 dib_header_size;
|
||||
+ s32 width;
|
||||
+ s32 height;
|
||||
+ u16 planes;
|
||||
+ u16 bpp;
|
||||
+ u32 compression;
|
||||
+ u32 bitmap_size;
|
||||
+ u32 horz_resolution;
|
||||
+ u32 vert_resolution;
|
||||
+ u32 colors_used;
|
||||
+ u32 colors_important;
|
||||
+} __packed;
|
||||
+
|
||||
static bool request_mem_succeeded = false;
|
||||
static bool nowc = false;
|
||||
|
||||
@@ -66,6 +89,121 @@ static int efifb_setcolreg(unsigned regno, unsigned red, unsigned green,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * If fbcon deffered console takeover is configured, the intent is for the
|
||||
+ * framebuffer to show the boot graphics (e.g. vendor logo) until there is some
|
||||
+ * (error) message to display. But the boot graphics may have been destroyed by
|
||||
+ * e.g. option ROM output, detect this and restore the boot graphics.
|
||||
+ */
|
||||
+#if defined CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER && \
|
||||
+ defined CONFIG_ACPI_BGRT
|
||||
+static void efifb_copy_bmp(u8 *src, u32 *dst, int width, struct screen_info *si)
|
||||
+{
|
||||
+ u8 r, g, b;
|
||||
+
|
||||
+ while (width--) {
|
||||
+ b = *src++;
|
||||
+ g = *src++;
|
||||
+ r = *src++;
|
||||
+ *dst++ = (r << si->red_pos) |
|
||||
+ (g << si->green_pos) |
|
||||
+ (b << si->blue_pos);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void efifb_show_boot_graphics(struct fb_info *info)
|
||||
+{
|
||||
+ u32 bmp_width, bmp_height, bmp_pitch, screen_pitch, dst_x, y, src_y;
|
||||
+ struct screen_info *si = &screen_info;
|
||||
+ struct bmp_file_header *file_header;
|
||||
+ struct bmp_dib_header *dib_header;
|
||||
+ void *bgrt_image = NULL;
|
||||
+ u8 *dst = info->screen_base;
|
||||
+
|
||||
+ if (!bgrt_tab.image_address) {
|
||||
+ pr_info("efifb: No BGRT, not showing boot graphics\n");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ /* Avoid flashing the logo if we're going to print std probe messages */
|
||||
+ if (console_loglevel > CONSOLE_LOGLEVEL_QUIET)
|
||||
+ return;
|
||||
+
|
||||
+ /* bgrt_tab.status is unreliable, so we don't check it */
|
||||
+
|
||||
+ if (si->lfb_depth != 32) {
|
||||
+ pr_info("efifb: not 32 bits, not showing boot graphics\n");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ bgrt_image = memremap(bgrt_tab.image_address, bgrt_image_size,
|
||||
+ MEMREMAP_WB);
|
||||
+ if (!bgrt_image) {
|
||||
+ pr_warn("efifb: Ignoring BGRT: failed to map image memory\n");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (bgrt_image_size < (sizeof(*file_header) + sizeof(*dib_header)))
|
||||
+ goto error;
|
||||
+
|
||||
+ file_header = bgrt_image;
|
||||
+ if (file_header->id != 0x4d42 || file_header->reserved != 0)
|
||||
+ goto error;
|
||||
+
|
||||
+ dib_header = bgrt_image + sizeof(*file_header);
|
||||
+ if (dib_header->dib_header_size != 40 || dib_header->width < 0 ||
|
||||
+ dib_header->planes != 1 || dib_header->bpp != 24 ||
|
||||
+ dib_header->compression != 0)
|
||||
+ goto error;
|
||||
+
|
||||
+ bmp_width = dib_header->width;
|
||||
+ bmp_height = abs(dib_header->height);
|
||||
+ bmp_pitch = round_up(3 * bmp_width, 4);
|
||||
+ screen_pitch = si->lfb_linelength;
|
||||
+
|
||||
+ if ((file_header->bitmap_offset + bmp_pitch * bmp_height) >
|
||||
+ bgrt_image_size)
|
||||
+ goto error;
|
||||
+
|
||||
+ if ((bgrt_tab.image_offset_x + bmp_width) > si->lfb_width ||
|
||||
+ (bgrt_tab.image_offset_y + bmp_height) > si->lfb_height)
|
||||
+ goto error;
|
||||
+
|
||||
+ pr_info("efifb: showing boot graphics\n");
|
||||
+
|
||||
+ for (y = 0; y < si->lfb_height; y++, dst += si->lfb_linelength) {
|
||||
+ /* Only background? */
|
||||
+ if (y < bgrt_tab.image_offset_y ||
|
||||
+ y >= (bgrt_tab.image_offset_y + bmp_height)) {
|
||||
+ memset(dst, 0, 4 * si->lfb_width);
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ src_y = y - bgrt_tab.image_offset_y;
|
||||
+ /* Positive header height means upside down row order */
|
||||
+ if (dib_header->height > 0)
|
||||
+ src_y = (bmp_height - 1) - src_y;
|
||||
+
|
||||
+ memset(dst, 0, bgrt_tab.image_offset_x * 4);
|
||||
+ dst_x = bgrt_tab.image_offset_x;
|
||||
+ efifb_copy_bmp(bgrt_image + file_header->bitmap_offset +
|
||||
+ src_y * bmp_pitch,
|
||||
+ (u32 *)dst + dst_x, bmp_width, si);
|
||||
+ dst_x += bmp_width;
|
||||
+ memset((u32 *)dst + dst_x, 0, (si->lfb_width - dst_x) * 4);
|
||||
+ }
|
||||
+
|
||||
+ memunmap(bgrt_image);
|
||||
+ return;
|
||||
+
|
||||
+error:
|
||||
+ memunmap(bgrt_image);
|
||||
+ pr_warn("efifb: Ignoring BGRT: unexpected or invalid BMP data\n");
|
||||
+}
|
||||
+#else
|
||||
+static inline void efifb_show_boot_graphics(struct fb_info *info) {}
|
||||
+#endif
|
||||
+
|
||||
static void efifb_destroy(struct fb_info *info)
|
||||
{
|
||||
if (info->screen_base)
|
||||
@@ -283,6 +421,8 @@ static int efifb_probe(struct platform_device *dev)
|
||||
goto err_release_fb;
|
||||
}
|
||||
|
||||
+ efifb_show_boot_graphics(info);
|
||||
+
|
||||
pr_info("efifb: framebuffer at 0x%lx, using %dk, total %dk\n",
|
||||
efifb_fix.smem_start, size_remap/1024, size_total/1024);
|
||||
pr_info("efifb: mode is %dx%dx%d, linelength=%d, pages=%d\n",
|
||||
--
|
||||
2.18.0
|
||||
|
@ -0,0 +1,85 @@
|
||||
From c4220b3f747ae6dd28171137d85fba0eab64e36d Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Tue, 24 Jul 2018 19:11:28 +0200
|
||||
Subject: [PATCH 7/7] efifb: BGRT: Do not copy the boot graphics for non native
|
||||
resolutions
|
||||
|
||||
On x86 some firmwares use a low non native resolution for the display when
|
||||
they have shown some text messages. While keeping the bgrt filled with info
|
||||
for the native resolution. If the bgrt image intended for the native
|
||||
resolution still fits, it will be displayed very close to the right edge of
|
||||
the display looking quite bad.
|
||||
|
||||
This commits adds a (heuristics based) checks for this and makes efifb
|
||||
not show the boot graphics when this is the case.
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
|
||||
---
|
||||
drivers/video/fbdev/efifb.c | 43 +++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 43 insertions(+)
|
||||
|
||||
diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c
|
||||
index fa01eecc0a55..52bf39f93888 100644
|
||||
--- a/drivers/video/fbdev/efifb.c
|
||||
+++ b/drivers/video/fbdev/efifb.c
|
||||
@@ -111,6 +111,46 @@ static void efifb_copy_bmp(u8 *src, u32 *dst, int width, struct screen_info *si)
|
||||
}
|
||||
}
|
||||
|
||||
+#ifdef CONFIG_X86
|
||||
+/*
|
||||
+ * On x86 some firmwares use a low non native resolution for the display when
|
||||
+ * they have shown some text messages. While keeping the bgrt filled with info
|
||||
+ * for the native resolution. If the bgrt image intended for the native
|
||||
+ * resolution still fits, it will be displayed very close to the right edge of
|
||||
+ * the display looking quite bad. This function checks for this.
|
||||
+ */
|
||||
+static bool efifb_bgrt_sanity_check(struct screen_info *si, u32 bmp_width)
|
||||
+{
|
||||
+ static const int default_resolutions[][2] = {
|
||||
+ { 800, 600 },
|
||||
+ { 1024, 768 },
|
||||
+ { 1280, 1024 },
|
||||
+ };
|
||||
+ u32 i, right_margin;
|
||||
+
|
||||
+ for (i = 0; i < ARRAY_SIZE(default_resolutions); i++) {
|
||||
+ if (default_resolutions[i][0] == si->lfb_width &&
|
||||
+ default_resolutions[i][1] == si->lfb_height)
|
||||
+ break;
|
||||
+ }
|
||||
+ /* If not a default resolution used for textmode, this should be fine */
|
||||
+ if (i >= ARRAY_SIZE(default_resolutions))
|
||||
+ return true;
|
||||
+
|
||||
+ /* If the right margin is 5 times smaller then the left one, reject */
|
||||
+ right_margin = si->lfb_width - (bgrt_tab.image_offset_x + bmp_width);
|
||||
+ if (right_margin < (bgrt_tab.image_offset_x / 5))
|
||||
+ return false;
|
||||
+
|
||||
+ return true;
|
||||
+}
|
||||
+#else
|
||||
+static bool efifb_bgrt_sanity_check(struct screen_info *si, u32 bmp_width)
|
||||
+{
|
||||
+ return true;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
static void efifb_show_boot_graphics(struct fb_info *info)
|
||||
{
|
||||
u32 bmp_width, bmp_height, bmp_pitch, screen_pitch, dst_x, y, src_y;
|
||||
@@ -169,6 +209,9 @@ static void efifb_show_boot_graphics(struct fb_info *info)
|
||||
(bgrt_tab.image_offset_y + bmp_height) > si->lfb_height)
|
||||
goto error;
|
||||
|
||||
+ if (!efifb_bgrt_sanity_check(si, bmp_width))
|
||||
+ goto error;
|
||||
+
|
||||
pr_info("efifb: showing boot graphics\n");
|
||||
|
||||
for (y = 0; y < si->lfb_height; y++, dst += si->lfb_linelength) {
|
||||
--
|
||||
2.18.0
|
||||
|
1
configs/fedora/generic/CONFIG_CONSOLE_LOGLEVEL_QUIET
Normal file
1
configs/fedora/generic/CONFIG_CONSOLE_LOGLEVEL_QUIET
Normal file
@ -0,0 +1 @@
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=3
|
@ -0,0 +1 @@
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
@ -0,0 +1 @@
|
||||
CONFIG_TOUCHSCREEN_CHIPONE_ICN8505=m
|
@ -990,6 +990,7 @@ CONFIG_COMPACTION=y
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=3
|
||||
CONFIG_CONSOLE_TRANSLATIONS=y
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_CORDIC=m
|
||||
@ -1819,6 +1820,7 @@ CONFIG_FPGA_MGR_MACHXO2_SPI=m
|
||||
CONFIG_FPGA_MGR_XILINX_SPI=m
|
||||
CONFIG_FPGA_MGR_ZYNQ_FPGA=m
|
||||
CONFIG_FPGA_REGION=m
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
|
@ -990,6 +990,7 @@ CONFIG_COMPACTION=y
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=3
|
||||
CONFIG_CONSOLE_TRANSLATIONS=y
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_CORDIC=m
|
||||
@ -1801,6 +1802,7 @@ CONFIG_FPGA_MGR_MACHXO2_SPI=m
|
||||
CONFIG_FPGA_MGR_XILINX_SPI=m
|
||||
CONFIG_FPGA_MGR_ZYNQ_FPGA=m
|
||||
CONFIG_FPGA_REGION=m
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
|
@ -1024,6 +1024,7 @@ CONFIG_COMPACTION=y
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=3
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_CORDIC=m
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
@ -1935,6 +1936,7 @@ CONFIG_FPGA_MGR_MACHXO2_SPI=m
|
||||
CONFIG_FPGA_MGR_XILINX_SPI=m
|
||||
CONFIG_FPGA_MGR_ZYNQ_FPGA=m
|
||||
CONFIG_FPGA_REGION=m
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
|
@ -990,6 +990,7 @@ CONFIG_COMPACTION=y
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=3
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_CORDIC=m
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
@ -1839,6 +1840,7 @@ CONFIG_FPGA_MGR_MACHXO2_SPI=m
|
||||
CONFIG_FPGA_MGR_XILINX_SPI=m
|
||||
CONFIG_FPGA_MGR_ZYNQ_FPGA=m
|
||||
CONFIG_FPGA_REGION=m
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
|
@ -989,6 +989,7 @@ CONFIG_COMPACTION=y
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=3
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_CORDIC=m
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
@ -1821,6 +1822,7 @@ CONFIG_FPGA_MGR_MACHXO2_SPI=m
|
||||
CONFIG_FPGA_MGR_XILINX_SPI=m
|
||||
CONFIG_FPGA_MGR_ZYNQ_FPGA=m
|
||||
CONFIG_FPGA_REGION=m
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
|
@ -1023,6 +1023,7 @@ CONFIG_COMPACTION=y
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=3
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_CORDIC=m
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
@ -1917,6 +1918,7 @@ CONFIG_FPGA_MGR_MACHXO2_SPI=m
|
||||
CONFIG_FPGA_MGR_XILINX_SPI=m
|
||||
CONFIG_FPGA_MGR_ZYNQ_FPGA=m
|
||||
CONFIG_FPGA_REGION=m
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
|
@ -835,6 +835,7 @@ CONFIG_COMPAL_LAPTOP=m
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=3
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_CORDIC=m
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
@ -1643,6 +1644,7 @@ CONFIG_FPGA_MGR_MACHXO2_SPI=m
|
||||
CONFIG_FPGA_MGR_XILINX_SPI=m
|
||||
CONFIG_FPGA_MGR_ZYNQ_FPGA=m
|
||||
CONFIG_FPGA_REGION=m
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
|
@ -838,6 +838,7 @@ CONFIG_COMPAL_LAPTOP=m
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=3
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_CORDIC=m
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
@ -1664,6 +1665,7 @@ CONFIG_FPGA_MGR_MACHXO2_SPI=m
|
||||
CONFIG_FPGA_MGR_XILINX_SPI=m
|
||||
CONFIG_FPGA_MGR_ZYNQ_FPGA=m
|
||||
CONFIG_FPGA_REGION=m
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
|
@ -838,6 +838,7 @@ CONFIG_COMPAL_LAPTOP=m
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=3
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_CORDIC=m
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
@ -1664,6 +1665,7 @@ CONFIG_FPGA_MGR_MACHXO2_SPI=m
|
||||
CONFIG_FPGA_MGR_XILINX_SPI=m
|
||||
CONFIG_FPGA_MGR_ZYNQ_FPGA=m
|
||||
CONFIG_FPGA_REGION=m
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
|
@ -835,6 +835,7 @@ CONFIG_COMPAL_LAPTOP=m
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=3
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_CORDIC=m
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
@ -1643,6 +1644,7 @@ CONFIG_FPGA_MGR_MACHXO2_SPI=m
|
||||
CONFIG_FPGA_MGR_XILINX_SPI=m
|
||||
CONFIG_FPGA_MGR_ZYNQ_FPGA=m
|
||||
CONFIG_FPGA_REGION=m
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
|
@ -826,6 +826,7 @@ CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONNECTOR=y
|
||||
# CONFIG_CONSISTENT_SIZE_BOOL is not set
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=3
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_CORDIC=m
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
@ -1578,6 +1579,7 @@ CONFIG_FPGA_MGR_MACHXO2_SPI=m
|
||||
CONFIG_FPGA_MGR_XILINX_SPI=m
|
||||
CONFIG_FPGA_MGR_ZYNQ_FPGA=m
|
||||
CONFIG_FPGA_REGION=m
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
|
@ -823,6 +823,7 @@ CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONNECTOR=y
|
||||
# CONFIG_CONSISTENT_SIZE_BOOL is not set
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=3
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_CORDIC=m
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
@ -1557,6 +1558,7 @@ CONFIG_FPGA_MGR_MACHXO2_SPI=m
|
||||
CONFIG_FPGA_MGR_XILINX_SPI=m
|
||||
CONFIG_FPGA_MGR_ZYNQ_FPGA=m
|
||||
CONFIG_FPGA_REGION=m
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
|
@ -782,6 +782,7 @@ CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONNECTOR=y
|
||||
# CONFIG_CONSISTENT_SIZE_BOOL is not set
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=3
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_CORDIC=m
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
@ -1531,6 +1532,7 @@ CONFIG_FPGA_MGR_MACHXO2_SPI=m
|
||||
CONFIG_FPGA_MGR_XILINX_SPI=m
|
||||
CONFIG_FPGA_MGR_ZYNQ_FPGA=m
|
||||
CONFIG_FPGA_REGION=m
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
|
@ -779,6 +779,7 @@ CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONNECTOR=y
|
||||
# CONFIG_CONSISTENT_SIZE_BOOL is not set
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=3
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_CORDIC=m
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
@ -1510,6 +1511,7 @@ CONFIG_FPGA_MGR_MACHXO2_SPI=m
|
||||
CONFIG_FPGA_MGR_XILINX_SPI=m
|
||||
CONFIG_FPGA_MGR_ZYNQ_FPGA=m
|
||||
CONFIG_FPGA_REGION=m
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
|
@ -784,6 +784,7 @@ CONFIG_COMPAT=y
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=3
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_CORDIC=m
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
@ -1516,6 +1517,7 @@ CONFIG_FPGA_MGR_MACHXO2_SPI=m
|
||||
CONFIG_FPGA_MGR_XILINX_SPI=m
|
||||
CONFIG_FPGA_MGR_ZYNQ_FPGA=m
|
||||
CONFIG_FPGA_REGION=m
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
|
@ -781,6 +781,7 @@ CONFIG_COMPAT=y
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=3
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_CORDIC=m
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
@ -1495,6 +1496,7 @@ CONFIG_FPGA_MGR_MACHXO2_SPI=m
|
||||
CONFIG_FPGA_MGR_XILINX_SPI=m
|
||||
CONFIG_FPGA_MGR_ZYNQ_FPGA=m
|
||||
CONFIG_FPGA_REGION=m
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
|
@ -856,6 +856,7 @@ CONFIG_COMPAL_LAPTOP=m
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=3
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
# CONFIG_CONTEXT_TRACKING_FORCE is not set
|
||||
CONFIG_CORDIC=m
|
||||
@ -1708,6 +1709,7 @@ CONFIG_FPGA_MGR_MACHXO2_SPI=m
|
||||
CONFIG_FPGA_MGR_XILINX_SPI=m
|
||||
CONFIG_FPGA_MGR_ZYNQ_FPGA=m
|
||||
CONFIG_FPGA_REGION=m
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
@ -5850,7 +5852,7 @@ CONFIG_TOUCHSCREEN_ATMEL_MXT=m
|
||||
CONFIG_TOUCHSCREEN_AUO_PIXCIR=m
|
||||
# CONFIG_TOUCHSCREEN_BU21013 is not set
|
||||
# CONFIG_TOUCHSCREEN_CHIPONE_ICN8318 is not set
|
||||
# CONFIG_TOUCHSCREEN_CHIPONE_ICN8505 is not set
|
||||
CONFIG_TOUCHSCREEN_CHIPONE_ICN8505=m
|
||||
# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
|
||||
# CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set
|
||||
# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set
|
||||
|
@ -853,6 +853,7 @@ CONFIG_COMPAL_LAPTOP=m
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=3
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
# CONFIG_CONTEXT_TRACKING_FORCE is not set
|
||||
CONFIG_CORDIC=m
|
||||
@ -1687,6 +1688,7 @@ CONFIG_FPGA_MGR_MACHXO2_SPI=m
|
||||
CONFIG_FPGA_MGR_XILINX_SPI=m
|
||||
CONFIG_FPGA_MGR_ZYNQ_FPGA=m
|
||||
CONFIG_FPGA_REGION=m
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
@ -5825,7 +5827,7 @@ CONFIG_TOUCHSCREEN_ATMEL_MXT=m
|
||||
CONFIG_TOUCHSCREEN_AUO_PIXCIR=m
|
||||
# CONFIG_TOUCHSCREEN_BU21013 is not set
|
||||
# CONFIG_TOUCHSCREEN_CHIPONE_ICN8318 is not set
|
||||
# CONFIG_TOUCHSCREEN_CHIPONE_ICN8505 is not set
|
||||
CONFIG_TOUCHSCREEN_CHIPONE_ICN8505=m
|
||||
# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
|
||||
# CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set
|
||||
# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set
|
||||
|
15
kernel.spec
15
kernel.spec
@ -625,6 +625,15 @@ Patch514: 0005-treewide-Rename-HOSTLDFLAGS-to-KBUILD_HOSTLDFLAGS.patch
|
||||
Patch515: 0006-treewide-Rename-HOST_LOADLIBES-to-KBUILD_HOSTLDLIBS.patch
|
||||
Patch516: 0007-Kbuild-Use-HOST-FLAGS-options-from-the-command-line.patch
|
||||
|
||||
# For quiet / flickerfree boot, all queued for merging into 4.19-rc1
|
||||
Patch521: 0001-printk-Make-CONSOLE_LOGLEVEL_QUIET-configurable.patch
|
||||
Patch522: 0002-printk-Export-is_console_locked.patch
|
||||
Patch523: 0003-fbcon-Call-WARN_CONSOLE_UNLOCKED-where-applicable.patch
|
||||
Patch524: 0004-console-fbcon-Add-support-for-deferred-console-takeo.patch
|
||||
Patch525: 0005-efi-bgrt-Drop-__initdata-from-bgrt_image_size.patch
|
||||
Patch526: 0006-efifb-Copy-the-ACPI-BGRT-boot-graphics-to-the-frameb.patch
|
||||
Patch527: 0007-efifb-BGRT-Do-not-copy-the-boot-graphics-for-non-nat.patch
|
||||
|
||||
# END OF PATCH DEFINITIONS
|
||||
|
||||
%endif
|
||||
@ -1884,6 +1893,12 @@ fi
|
||||
#
|
||||
#
|
||||
%changelog
|
||||
* Mon Jul 30 2018 Hans de Goede <hdegoede@redhat.com>
|
||||
- Add patch queued in -next to make quiet more quiet
|
||||
- Add patches queued in -next to make efifb / fbcon retain the vendor logo
|
||||
(ACPI BRGT boot graphics) until the first text is output to the console
|
||||
- Enable support for ICN8505 touchscreen used on some Cherry Trail tablets
|
||||
|
||||
* Fri Jul 27 2018 Peter Robinson <pbrobinson@fedoraproject.org>
|
||||
- Enable FPGA Manager kernel framework
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user