]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Revert "printk: Save console options for add_preferred_console_match()"
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 25 Jun 2024 05:58:10 +0000 (07:58 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 25 Jun 2024 05:58:10 +0000 (07:58 +0200)
This reverts commit f03e8c1060f86c23eb49bafee99d9fcbd1c1bd77.

Let's roll back all of the serial core and printk console changes that
went into 6.10-rc1 as there still are problems with them that need to be
sorted out.

Link: https://lore.kernel.org/r/ZnpRozsdw6zbjqze@tlindgre-MOBL1
Reported-by: Petr Mladek <pmladek@suse.com>
Reported-by: Tony Lindgren <tony@atomide.com>
Cc: Jiri Slaby <jirislaby@kernel.org>
Cc: John Ogness <john.ogness@linutronix.de>
Cc: Sergey Senozhatsky <senozhatsky@chromium.org>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/linux/printk.h
kernel/printk/Makefile
kernel/printk/conopt.c [deleted file]
kernel/printk/console_cmdline.h
kernel/printk/printk.c

index 40afab23881a0a63fa68e710cb6c8a0389171146..65c5184470f18c64c30009e5a7f7f56d5dedb6d3 100644 (file)
@@ -60,9 +60,6 @@ static inline const char *printk_skip_headers(const char *buffer)
 #define CONSOLE_LOGLEVEL_DEFAULT CONFIG_CONSOLE_LOGLEVEL_DEFAULT
 #define CONSOLE_LOGLEVEL_QUIET  CONFIG_CONSOLE_LOGLEVEL_QUIET
 
-int add_preferred_console_match(const char *match, const char *name,
-                               const short idx);
-
 extern int console_printk[];
 
 #define console_loglevel (console_printk[0])
index 040fe7d1eda2f4f7533275f900c141ef95adc80f..39a2b61c7232e7b65d64eafd3ceadcf72cd32760 100644 (file)
@@ -1,5 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0-only
-obj-y  = printk.o conopt.o
+obj-y  = printk.o
 obj-$(CONFIG_PRINTK)   += printk_safe.o nbcon.o
 obj-$(CONFIG_A11Y_BRAILLE_CONSOLE)     += braille.o
 obj-$(CONFIG_PRINTK_INDEX)     += index.o
diff --git a/kernel/printk/conopt.c b/kernel/printk/conopt.c
deleted file mode 100644 (file)
index 9d507ba..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Kernel command line console options for hardware based addressing
- *
- * Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com/
- * Author: Tony Lindgren <tony@atomide.com>
- */
-
-#include <linux/console.h>
-#include <linux/init.h>
-#include <linux/string.h>
-#include <linux/types.h>
-
-#include <asm/errno.h>
-
-#include "console_cmdline.h"
-
-/*
- * Allow longer DEVNAME:0.0 style console naming such as abcd0000.serial:0.0
- * in addition to the legacy ttyS0 style naming.
- */
-#define CONSOLE_NAME_MAX       32
-
-#define CONSOLE_OPT_MAX                16
-#define CONSOLE_BRL_OPT_MAX    16
-
-struct console_option {
-       char name[CONSOLE_NAME_MAX];
-       char opt[CONSOLE_OPT_MAX];
-       char brl_opt[CONSOLE_BRL_OPT_MAX];
-       u8 has_brl_opt:1;
-};
-
-/* Updated only at console_setup() time, no locking needed */
-static struct console_option conopt[MAX_CMDLINECONSOLES];
-
-/**
- * console_opt_save - Saves kernel command line console option for driver use
- * @str: Kernel command line console name and option
- * @brl_opt: Braille console options
- *
- * Saves a kernel command line console option for driver subsystems to use for
- * adding a preferred console during init. Called from console_setup() only.
- *
- * Return: 0 on success, negative error code on failure.
- */
-int __init console_opt_save(const char *str, const char *brl_opt)
-{
-       struct console_option *con;
-       size_t namelen, optlen;
-       const char *opt;
-       int i;
-
-       namelen = strcspn(str, ",");
-       if (namelen == 0 || namelen >= CONSOLE_NAME_MAX)
-               return -EINVAL;
-
-       opt = str + namelen;
-       if (*opt == ',')
-               opt++;
-
-       optlen = strlen(opt);
-       if (optlen >= CONSOLE_OPT_MAX)
-               return -EINVAL;
-
-       for (i = 0; i < MAX_CMDLINECONSOLES; i++) {
-               con = &conopt[i];
-
-               if (con->name[0]) {
-                       if (!strncmp(str, con->name, namelen))
-                               return 0;
-                       continue;
-               }
-
-               /*
-                * The name isn't terminated, only opt is. Empty opt is fine,
-                * but brl_opt can be either empty or NULL. For more info, see
-                * _braille_console_setup().
-                */
-               strscpy(con->name, str, namelen + 1);
-               strscpy(con->opt, opt, CONSOLE_OPT_MAX);
-               if (brl_opt) {
-                       strscpy(con->brl_opt, brl_opt, CONSOLE_BRL_OPT_MAX);
-                       con->has_brl_opt = 1;
-               }
-
-               return 0;
-       }
-
-       return -ENOMEM;
-}
-
-static struct console_option *console_opt_find(const char *name)
-{
-       struct console_option *con;
-       int i;
-
-       for (i = 0; i < MAX_CMDLINECONSOLES; i++) {
-               con = &conopt[i];
-               if (!strcmp(name, con->name))
-                       return con;
-       }
-
-       return NULL;
-}
-
-/**
- * add_preferred_console_match - Adds a preferred console if a match is found
- * @match: Expected console on kernel command line, such as console=DEVNAME:0.0
- * @name: Name of the console character device to add such as ttyS
- * @idx: Index for the console
- *
- * Allows driver subsystems to add a console after translating the command
- * line name to the character device name used for the console. Options are
- * added automatically based on the kernel command line. Duplicate preferred
- * consoles are ignored by __add_preferred_console().
- *
- * Return: 0 on success, negative error code on failure.
- */
-int add_preferred_console_match(const char *match, const char *name,
-                               const short idx)
-{
-       struct console_option *con;
-       char *brl_opt = NULL;
-
-       if (!match || !strlen(match) || !name || !strlen(name) ||
-           idx < 0)
-               return -EINVAL;
-
-       con = console_opt_find(match);
-       if (!con)
-               return -ENOENT;
-
-       /*
-        * See __add_preferred_console(). It checks for NULL brl_options to set
-        * the preferred_console flag. Empty brl_opt instead of NULL leads into
-        * the preferred_console flag not set, and CON_CONSDEV not being set,
-        * and the boot console won't get disabled at the end of console_setup().
-        */
-       if (con->has_brl_opt)
-               brl_opt = con->brl_opt;
-
-       console_opt_add_preferred_console(name, idx, con->opt, brl_opt);
-
-       return 0;
-}
index a125e0235589d56b549e0d8903fb52c110c9d4dc..3ca74ad391d6e88daf0d63f3085a7991daad361f 100644 (file)
@@ -2,12 +2,6 @@
 #ifndef _CONSOLE_CMDLINE_H
 #define _CONSOLE_CMDLINE_H
 
-#define MAX_CMDLINECONSOLES 8
-
-int console_opt_save(const char *str, const char *brl_opt);
-int console_opt_add_preferred_console(const char *name, const short idx,
-                                     char *options, char *brl_options);
-
 struct console_cmdline
 {
        char    name[16];                       /* Name of the driver       */
index b582404cd29d19497cd7097233824e994d5c6d10..dddb15f48d59577b0754a7ab84818022a3d01f71 100644 (file)
@@ -383,6 +383,9 @@ static int console_locked;
 /*
  *     Array of consoles built from command line options (console=)
  */
+
+#define MAX_CMDLINECONSOLES 8
+
 static struct console_cmdline console_cmdline[MAX_CMDLINECONSOLES];
 
 static int preferred_console = -1;
@@ -2500,10 +2503,6 @@ static int __init console_setup(char *str)
        if (_braille_console_setup(&str, &brl_options))
                return 1;
 
-       /* Save the console for driver subsystem use */
-       if (console_opt_save(str, brl_options))
-               return 1;
-
        /*
         * Decode str into name, index, options.
         */
@@ -2534,13 +2533,6 @@ static int __init console_setup(char *str)
 }
 __setup("console=", console_setup);
 
-/* Only called from add_preferred_console_match() */
-int console_opt_add_preferred_console(const char *name, const short idx,
-                                     char *options, char *brl_options)
-{
-       return __add_preferred_console(name, idx, options, brl_options, true);
-}
-
 /**
  * add_preferred_console - add a device to the list of preferred consoles.
  * @name: device name