From nobody Tue Feb 10 06:43:01 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1EB3B32938C for ; Sat, 27 Dec 2025 12:19:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766837988; cv=none; b=iSgEsLP/6HnwDjl9VpQqLZHNUd6YoYzflPsUca6QFEgsly4ufeDbGrlWlUUfH2se+1V+1CEhGAEqnlErQ7WKHF5JNH6kaUvQqALKCL5VNoCSxGiCgEUFxS+j+58x3XdNp2q+L0KbZRWgiIzP2GwvcDSa7Q8nzttmTXNgpYuIXac= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766837988; c=relaxed/simple; bh=jfxXivsE45EkgkvCbI8I2BEVFtLSwL83e0mmBVPuH+w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QY9svhdBDfpCLB4oskcG/P00jD8NwlWd5bBJUpjz0PpFbyJYbT4QuYcDSmoM7azBimRCkvfN56Pwq4SnqGJ1qkEaoWmJK2HSDPG1cBz3LCZ/zbbD4KkgvKbYeZJWR52ODDR3rNIPQowpJm4ca8Kms8ExvbsmkpzIaFJFJF9phZ8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=Y2jxOsoA; arc=none smtp.client-ip=209.85.128.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="Y2jxOsoA" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-47aa03d3326so49893835e9.3 for ; Sat, 27 Dec 2025 04:19:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1766837983; x=1767442783; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=xV/54pzRS8Etay7a+DmZn75b0ho6rdI/NPswC/OMCoI=; b=Y2jxOsoAqRMTW++xm1Ay/yJuOOy1RSw0vAWWwUTSoUdqeEIwZSjwXqHgWVjjub24Xt tvEle8RLwQq+JVMFzL2UdOd39wmI2bQPQB/y7ZCPP5/qPa08n3JBtR7hf9NZwKtyMEId VP6fkG41KKpMrDeK3NBqOietavOHxnvDbCiiXwiJNAp8W5QcMSdkmn6eOFGuPCrdo4AI gdT3+a4IdhDS3EqM4Qo+VK1RbtzGLkZ+zEjadZix0mfjy9qZVtQ+5StVGaM5rUepKSH2 dGcBC7BKh2ZqIAEOYoAZVj949A89y+06+4DQVOA2+IQHfSf6hf2P4WdYkJCU1zsH5RaT Wteg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766837983; x=1767442783; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=xV/54pzRS8Etay7a+DmZn75b0ho6rdI/NPswC/OMCoI=; b=S8eyjRBVX8BwkC5ZOlE/sTA4KNciPJO6jytxEJKjeclS3EhrTIP83k8sT3oOIZZLZd CqTHonIsQUVyI2xPX0DElvvLFeCULFsvFug6Td7u309c0kNx1xmz0rshJCadPJ1oPayH 5DxOis4kgBZT4hkwCothoNJ2Uoen+o2FZSqpyVGOf+AgMEK0qa/tomONhjb400d6QcYY lii/fVD7rnmFjhLTgq62hM6lGGL/tPB54TOFrdQkp4btVTA65r6Q97KcyXyvHff7KK85 P+WASnpDQ5EPKYdFnI63lCjNWjrDpu9UuUefC9LbxY3qvpNajWiBR4EBWFvXhE64dokQ f/xw== X-Forwarded-Encrypted: i=1; AJvYcCVcqn5oRS6AZSLP96xEExhbvm7Es/h5Zmw7eNzp7MFydHCV7cPGIUFwyYfJ0whmi/OVZiX2k8YBSV8SUh4=@vger.kernel.org X-Gm-Message-State: AOJu0Yx+Z/Mkt9zXAmPxDXrm47ZutJtG6k0nmUPBXW2Og/mal1H987Sf Txs24vKrjlTshbr7MU4UJT64R7bBwHwuUfkOFIAV/ju83AoDFzUFjVUZR7b40WoUy5s= X-Gm-Gg: AY/fxX6AvucnIHq9ktQudZXyexGPp3uRi2mLnZCYjoVMFp9HvuyNAm2AaHNajKluogU Db2WVcxGExnumibx2ZXPjAwtTBGlXfAxwMEj+Tf5fPuvKBaOI63qcoCy2gRIToOasADy6ABrt/L lU8xijcTj2vmXppWqL4Yyu78XHaXXd0WbFQ18sQZgT6HgiH6MGWDohx5ETkC67wSl0tntLaEsfP LOUzSRvVPaAUqv5O2vt0fZiDJDJDXL7uFuJ/P+GEk6WbmV3Pa3jnhzkjaANPcD56u0fxKQK5D3l 0AvkHXirTRuO48BB2lAyFQM53jlVe3Nx5NLOCb6b5kd+SCdfzYhrBqDR/FD4rC115c6jWO/JZsr t7XKCpNFPtCzMPtadNLMVu8lsN1i/OoMpfdJceZdHPoe/TW97zh64aW7uYECX+ZXlFoIVvPKqLy 2StNprP/fiGCLHGmslO2k= X-Google-Smtp-Source: AGHT+IH8iMWTGKOo0ODMODi1rEzmJGgWpFcndwFU+BLf6Q6Oiy3SLl7fhkZeY72om2wNWMGGrFeTWQ== X-Received: by 2002:a05:600d:8:b0:477:5897:a0c4 with SMTP id 5b1f17b1804b1-47d1c13fcfdmr225764485e9.4.1766837983269; Sat, 27 Dec 2025 04:19:43 -0800 (PST) Received: from [127.0.0.1] ([2804:5078:811:d400:58f2:fc97:371f:2]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-121724cfdd0sm97940127c88.4.2025.12.27.04.19.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 04:19:42 -0800 (PST) From: Marcos Paulo de Souza Date: Sat, 27 Dec 2025 09:16:26 -0300 Subject: [PATCH 19/19] printk: Remove CON_ENABLED flag Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251227-printk-cleanup-part3-v1-19-21a291bcf197@suse.com> References: <20251227-printk-cleanup-part3-v1-0-21a291bcf197@suse.com> In-Reply-To: <20251227-printk-cleanup-part3-v1-0-21a291bcf197@suse.com> To: Richard Weinberger , Anton Ivanov , Johannes Berg , Greg Kroah-Hartman , Jason Wessel , Daniel Thompson , Douglas Anderson , Petr Mladek , Steven Rostedt , John Ogness , Sergey Senozhatsky , Jiri Slaby , Breno Leitao , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Geert Uytterhoeven , Kees Cook , Tony Luck , "Guilherme G. Piccoli" , Madhavan Srinivasan , Michael Ellerman , Nicholas Piggin , Christophe Leroy , Andreas Larsson , Alexander Shishkin , Maxime Coquelin , Alexandre Torgue , Jacky Huang , Shan-Chun Hung , Laurentiu Tudor Cc: linux-um@lists.infradead.org, linux-kernel@vger.kernel.org, kgdb-bugreport@lists.sourceforge.net, linux-serial@vger.kernel.org, netdev@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-hardening@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, sparclinux@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-fsdevel@vger.kernel.org, Marcos Paulo de Souza X-Mailer: b4 0.15-dev X-Developer-Signature: v=1; a=ed25519-sha256; t=1766837798; l=5342; i=mpdesouza@suse.com; s=20231031; h=from:subject:message-id; bh=jfxXivsE45EkgkvCbI8I2BEVFtLSwL83e0mmBVPuH+w=; b=L4bmhgBbhK4MabaljXOFYoWoPA/F2Ms1Hw5KRZJ0wiLbS51oCxDTE2j2nmUG21whYB1lNSvfW KXB3PChlBf2AMEmTwaAmskLdw1SadRBF3zXvV826sJWL27JOeadfagz X-Developer-Key: i=mpdesouza@suse.com; a=ed25519; pk=/Ni/TsKkr69EOmdZXkp1Q/BlzDonbOBRsfPa18ySIwU= All remaining usages of CON_ENABLED were removed from console drivers that were being registered without being specified on boot using console=3D argument. The usefulness of the flag was questionable since at first it meant that the console was ready to print records. Later on, console drivers started to set the flag when registering the console to make sure that the console would be registered even without being specified by a kernel argument. With the inclusion a global state for system wide suspend/resume in place, with console_{suspend,resume} handling CON_SUSPEND, and with console_is_usable helper being more used, the CON_ENABLED flag can be safely removed. Signed-off-by: Marcos Paulo de Souza --- fs/proc/consoles.c | 1 - include/linux/console.h | 27 ++++++++++----------------- kernel/printk/printk.c | 15 ++------------- 3 files changed, 12 insertions(+), 31 deletions(-) diff --git a/fs/proc/consoles.c b/fs/proc/consoles.c index b7cab1ad990d..b6916ed7957b 100644 --- a/fs/proc/consoles.c +++ b/fs/proc/consoles.c @@ -18,7 +18,6 @@ static int show_console_dev(struct seq_file *m, void *v) short flag; char name; } con_flags[] =3D { - { CON_ENABLED, 'E' }, { CON_CONSDEV, 'C' }, { CON_BOOT, 'B' }, { CON_NBCON, 'N' }, diff --git a/include/linux/console.h b/include/linux/console.h index 7d374a29a625..0ab02f7ba307 100644 --- a/include/linux/console.h +++ b/include/linux/console.h @@ -164,9 +164,6 @@ static inline void con_debug_leave(void) { } * consoles or read by userspace via syslog() syscall. * @CON_CONSDEV: Indicates that the console driver is backing * /dev/console. - * @CON_ENABLED: Indicates if a console is allowed to print records. If - * false, the console also will not advance to later - * records. * @CON_BOOT: Marks the console driver as early console driver which * is used during boot before the real driver becomes * available. It will be automatically unregistered @@ -192,14 +189,13 @@ static inline void con_debug_leave(void) { } enum cons_flags { CON_PRINTBUFFER =3D BIT(0), CON_CONSDEV =3D BIT(1), - CON_ENABLED =3D BIT(2), - CON_BOOT =3D BIT(3), - CON_ANYTIME =3D BIT(4), - CON_BRL =3D BIT(5), - CON_EXTENDED =3D BIT(6), - CON_SUSPENDED =3D BIT(7), - CON_NBCON =3D BIT(8), - CON_NBCON_ATOMIC_UNSAFE =3D BIT(9), + CON_BOOT =3D BIT(2), + CON_ANYTIME =3D BIT(3), + CON_BRL =3D BIT(4), + CON_EXTENDED =3D BIT(5), + CON_SUSPENDED =3D BIT(6), + CON_NBCON =3D BIT(7), + CON_NBCON_ATOMIC_UNSAFE =3D BIT(8), }; =20 /** @@ -522,9 +518,9 @@ extern bool consoles_suspended; * * Requires console_srcu_read_lock to be held, which implies that @con mig= ht * be a registered console. The purpose of holding console_srcu_read_lock = is - * to guarantee that the console state is valid (CON_SUSPENDED/CON_ENABLED) - * and that no exit/cleanup routines will run if the console is currently - * undergoing unregistration. + * to guarantee that the console state is valid (CON_SUSPENDED) and that no + * exit/cleanup routines will run if the console is currently undergoing + * unregistration. * * If the caller is holding the console_list_lock or it is _certain_ that * @con is not and will not become registered, the caller may read @@ -706,9 +702,6 @@ static inline bool __console_is_usable(struct console *= con, short flags, if (all_suspended) return false; =20 - if (!(flags & CON_ENABLED)) - return false; - if ((flags & CON_SUSPENDED)) return false; =20 diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index c5c05e4d0a67..9cb0911997e5 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -3890,21 +3890,17 @@ static int try_enable_preferred_console(struct cons= ole *newcon, if (err) return err; } - newcon->flags |=3D CON_ENABLED; if (i =3D=3D preferred_console) newcon->flags |=3D CON_CONSDEV; return 0; } =20 - if (force) - newcon->flags |=3D CON_ENABLED; - /* * Some consoles, such as pstore and netconsole, can be enabled even * without matching. Accept the pre-enabled consoles only when match() * and setup() had a chance to be called. */ - if (newcon->flags & CON_ENABLED && c->user_specified =3D=3D user_specifie= d) + if (force && c->user_specified =3D=3D user_specified) return 0; =20 return -ENOENT; @@ -3919,8 +3915,6 @@ static void try_enable_default_console(struct console= *newcon) if (console_call_setup(newcon, NULL) !=3D 0) return; =20 - newcon->flags |=3D CON_ENABLED; - if (newcon->device) newcon->flags |=3D CON_CONSDEV; } @@ -3977,10 +3971,8 @@ static u64 get_init_console_seq(struct console *newc= on, bool bootcon_registered) for_each_console(con) { u64 seq; =20 - if (!(con->flags & CON_BOOT) || - !(con->flags & CON_ENABLED)) { + if (!(con->flags & CON_BOOT)) continue; - } =20 if (con->flags & CON_NBCON) seq =3D nbcon_seq_read(con); @@ -4233,9 +4225,6 @@ static int unregister_console_locked(struct console *= console) consoles_suspended, NBCON_USE_ATOMIC)) __pr_flush(console, 1000, true); =20 - /* Disable it unconditionally */ - console_srcu_write_flags(console, console->flags & ~CON_ENABLED); - if (res < 0) return res; =20 --=20 2.52.0