From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (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 8CDB33C768B for ; Tue, 2 Jun 2026 08:53:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780390415; cv=none; b=IoRYs7RkKVz6uXbKBvFiJMrPaKp0JWH2m1c72ORpuofibZP2vQz345XQIXGmaEs1DczeonOqsPeNnq0uDJIHR1vvflkPGdLvzOMBhqiwZPgF3SxMbjFFSyR9pLu5ZJ/IDpmGw7dSDB0hBp9OZpe4tqrflGeHWBzwZ0Lpztqkbro= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780390415; c=relaxed/simple; bh=0iyOdmjqTZGhof+BdlBj9op3pk9BcqQZnXOmFnmDsA8=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=WeF2egjDW9Jta6TfI1x/tEowDB1tA9Cya8JyUK1axMIwG+ECSX8Z086wpdT35/UTAcjT6ARUhfP5vld9BaFGUX1NH66sc49Y+IP41hqwF8IdtcrpQJQFTnoXQcOosWARhW+b76EfP4nRvKL+z9qPpjTjI9nV+4m946xiSj+zQJQ= 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=ELTazjgv; arc=none smtp.client-ip=209.85.221.41 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="ELTazjgv" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-45ef82204c6so1707976f8f.3 for ; Tue, 02 Jun 2026 01:53:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1780390410; x=1780995210; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=a8Zl05NdbrplDdPl5e9fVR8VcwpqkFdmjymIusKI/j8=; b=ELTazjgvIzmAKXQ39F/jsAgafToi1Sfn5Gx9nfrj2A4zY9GMqfC2c/mRw+vYqKiEp8 XNoxPZ/+1KtC7Bd2j4UGeh2DLWpiFmfACNirqwr7123JQE4o7jjpLgwk8bFssj68K0EG hefolYxPfeM+iLC33p3hsD1NbqChfbW+oKstiQqG8epepsxBrELuWyuv9iZ6GvHoJwhm fwL4W5d+j689Ddi5LFHjC9knY8Bx2diGHvdKLlzVnQfDGbmQSbEp06UAiTpdvu+XzIuU 1nJTu3n7Iq5FbZCaM4/xAdpxPk5n3Vl8SkAPMmsBXPn+Ca6QmRkTK8j8Qu5M2YpJ0tfJ hfMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780390410; x=1780995210; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=a8Zl05NdbrplDdPl5e9fVR8VcwpqkFdmjymIusKI/j8=; b=dOzoyjIbjpy6C6IW1654CIdOiu+50aC3VrxL0OLSGsqio/QB2UFSzl12Azd0b+0mU+ MfqelwPqlnzg4mSRgHmSynStYtLXjHEEf1pGzudPvvCZo/HO3m7dRIBCqLGdActAjUCw drxAdo2sGQR/m2wH67TPQx6Hi0XZPyvtr6wGV+4W6f8tJQJZBh/c//zODr3rtF9TAjmK xLh+BB9OMWJmL3VaYpnfxezEQHvUKQOK4o7rt0VyBoCVF4dLBG+CHu2VJdtyEiGbwale 8KrR4JhEYSfPs5W/bkbPXgm9Er3/qtQaP5XqAAtYSC8UbNocsaPAHW5O5Xa7gF5rDSFj Yvnw== X-Forwarded-Encrypted: i=1; AFNElJ/erJA8Kg0mNG4k9tqqidrPjrzOSAXPjoS+wMRtha5OJ2Y7NeI8Umf9+BcCocHn3VE9DpESHJet5mBBmfY=@vger.kernel.org X-Gm-Message-State: AOJu0Yxdbw4quuUmVSPLXLZ6ksd+yKwrhz6cuW7pOvSN9N90hCKDij71 YeMKPdO4KLFpEKZx/KwAFcZvY+NH4HBPFyFHoi2gL6hylpzHZiW0FLTmEF+1isgMGQU= X-Gm-Gg: Acq92OGN3LAqKH2cuwGAharUKYp/PC2y3avUgwdDW0yCxcW1MzE8dBFFHPktwgoYKtH TUs98TmRrHbSPVVKXhZfX1oyGFz77Jn34htEpCxfd0Pwl9JnL129b7aLycx5tfwoeciuL+r7i8r yBlh8c2iWM8IMq1lWc/MBF3cLSIPNrcPFiPMBQugzNE7C8cuPPj2x1ooXTC8+vVG3H8J6wj85E8 2uD0V8Ja5jBGzICOuEx5RGDsVi/fM2RZml3OSiPkkCb7q/UnqO2uezlXXI4tBfbODmU6m5Qq5/L ulRL+UASh8n9MZAtYVSfkSOpAODqH+jzdrUyp0g3dsfTnIVfBB4pxrcf/5qViJgVN5PE6VEF9Ss Fm4Z8LOG/+PncOHiKqC+73nv/C3YKbyhWe16y1Ohp2SV5UiOmNbLOPXZ6X0cn/Qkdw4tuqdbf1E 9lvauvm9wpfKCV8F/1qu/ti7xwyQ4in8cMAFG/ X-Received: by 2002:a05:6000:41c8:b0:45f:f142:d571 with SMTP id ffacd0b85a97d-45ff142d634mr19179232f8f.13.1780390409867; Tue, 02 Jun 2026 01:53:29 -0700 (PDT) Received: from pathway.suse.cz ([176.114.240.130]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45ef356b129sm40431354f8f.32.2026.06.02.01.53.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 01:53:28 -0700 (PDT) From: Petr Mladek To: John Ogness Cc: Sergey Senozhatsky , Steven Rostedt , Marcos Paulo de Souza , Chris Down , linux-kernel@vger.kernel.org, Petr Mladek Subject: [PATCH v3 00/11] printk: Clean up preferred console handling Date: Tue, 2 Jun 2026 10:53:01 +0200 Message-ID: <20260602085312.228251-1-pmladek@suse.com> X-Mailer: git-send-email 2.54.0 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: 8bit this patchset does some clean up of the code for handling preferred consoles in the console registration code. + 1st and 2nd patch try to improve some naming. + 3rd patch removes some code duplication. It better defines and describes the rules for adding and updating preferred consoles. It uses a more defensive coding style. + 4-8th patch improve handling of Braille consoles. They are preferred via the command line but they do not get printk() messages and are not associated with /dev/console. The new code makes this more obvious. Also it explicitly defines the relation against default consoles and other non-Braille preferred consoles. + 9th patch removes a hidden side effect of try_enable_preferred_console() + 10th patch prevents adding more side effectes to try_enable_preferred_console(). It allows to call it only when there are any non-Braille preferred consoles. + 11th patch allows to catch an error when enabling a console driver by default. This patchset is a prerequisite for Marcos' clean up of CON_ENABLE flag handling. It should prevent regressions caused by the hidden effects of try_enable_preferred_console(), for example, see https://lore.kernel.org/r/89409a0f48e6998ff6dd2245691b9954f0e1e435.camel@suse.com Also I am working on a feature which would allow to explicitly enable/prefer consoles proposed by SPCR, device tree, or platform-specific code using a generic "console=platform". This clean up is a prerequisite, see https://github.com/pmladek/linux/tree/console-platform-poc1-iter9 Changes against [v2]: + Move static_assert() after declaration (1st patch) [Steven] + Rename update_preferred_console() to add_or_update_preferred_console() [John] + WARN_ON() when called without "name" and "devname" [John] + print error when reached MAX_PREFERRED_CONSOLES + Add comment above code adding new entries [John] (all in 4th patch) + Call console->setup() under console_lock() in braille_register_console() (new patch) [Sashiko] + Use "No functional changes." phrase in commit messages. [Steven] + Call try_enable_preferred_console() only when there is no preferred console (reworked and split 9th patch) [Petr] + Added taken Reviewed-by and Acked-by tags [John, Macros] Changes against [v1]: + Fix stale comment (1st patch, Chris) + Add comment descibing update_preferred_console() behavior (3rd patch, John) + Better describe behavior changes caused by update_preferred_console() in the commit message (3rd patch, Chris) + Use unsigned int for iterating/indexing preferred_consoles[] table (3rd patch, John) + Add a check preventing an update via "devname" is already assigned to a real "name". (3rd patch, Petr) + Use only Braille entries when trying to enable Braille console (Chris) + Split all try_enable_*console() calls into new try_enable_console() and return early when try_enable_braille_console() succeeded. Note that we do not longer need to initialize "err" variable in this case. (new 5th patch, Chris, Petr) + Put back the explicit check of CON_BRL flag in register_console() so that it returns prelimitary only when the driver is used in Braille mode. (6th patch, Chris, Petr) + Add comments explaining that try_enable_braille_console() might succeeded also when newcon->match() succeeded. In this case, the Braille mode can't be used because the console device was already used as an early console.[*] (6th patch, Chris, Petr) + Reset preferred_dev_console_prev when used to revert the value. (7th patch, John) + Add Acked-by and Reviewed-by tags (1st, 2nd, 4th patch, Chris, Marcos) [*] This is a questional behavior. I would personally prefer when the early console is unregistered at this point and the console device is converted into Braille console. I consider the Braille mode more important. But it might be changed/fixed later in another patchset. [v1] https://lore.kernel.org/r/20260206165002.496724-1-pmladek@suse.com [v2] https://lore.kernel.org/r/20260423130015.85175-1-pmladek@suse.com Petr Mladek (11): printk: Rename struct console_cmdline to preferred_console printk: Rename preferred_console to preferred_dev_console printk: Separate code for adding/updating preferred console metadata printk: Cleanup _braille_(un)register_console() wrappers console/braille: Lock console->setup() call during the registration printk: Separate code for enabling console printk: Try to register each console as Braille first printk: Do not set Braille console as preferred_console printk: Handle pre-enabled consoles in the top-level try_enable_console() printk: Try enable preferred consoles only when there are any printk: Modify try_enable_default_console() to return error/success .../accessibility/braille/braille_console.c | 9 +- kernel/printk/braille.c | 20 +- kernel/printk/braille.h | 23 +- .../{console_cmdline.h => console_register.h} | 6 +- kernel/printk/printk.c | 395 ++++++++++++------ 5 files changed, 308 insertions(+), 145 deletions(-) rename kernel/printk/{console_cmdline.h => console_register.h} (83%) -- 2.54.0