From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (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 3E5A933D501 for ; Thu, 4 Jun 2026 10:15:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780568114; cv=none; b=a8i7yVRESoiPoyJzTbfodqkQD77VSo81aeYx7cRA4OZHLjRPobyVITe/jmIvD3Ad05qvZHmSatha8bLPU6EyaNrXcT2yp/wFYsBgGoQSjhgivfATycc8G+Ar7fj+nqq54CR7Q+PJFY2xXIfE+nx8WjY6cMRyoz1o0fEdIZjpSQY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780568114; c=relaxed/simple; bh=yZp+CfQDPna5CWZ3pWCK5eK6UHp0EikABr+IVZ5nGIU=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=SopVg5Rbz2wjclgM1DmrL0Y26yS9ajoabSgCstpqWT3TzDaR9FF+orC+Fxyf+71TER4NfuIOeixsAFD7y9+VzICtVGz78uVgdnc7sKU7f32XMUeJo+FmpyAWdEp+riTRpO/UdGrWxjixO9cmdLuPlHoLqUl7DvbK7qhybuUOMTg= 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=XIA650QF; arc=none smtp.client-ip=209.85.221.46 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="XIA650QF" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-45efa80e0afso445412f8f.2 for ; Thu, 04 Jun 2026 03:15:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1780568112; x=1781172912; 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=CBCaSKtJVkREy+XvDa71QyJB5vz+fct60pxNVPvCkiM=; b=XIA650QFHS+S7PniC1wXBVLSdys3jwG+V3Fw2rQZATgzdhgd9nFVFimu0Qvq80PoT0 9Di4fGDBgQ6n/GoTZgWzikvMQ+KMpQ6bRcxvGqFCera9kxyCOZEEkGYZWaLsFfHxwp2M 1ij7+JBKgIPcqUf2IQH6p7V1c5FXMH/tmR2qxHKapLWQJbrJMasqGTFASo9TESnFbOUb NQjPKdqZhk/eWI0zQH+Kwf865D+JoOobKYEi6Swjbd8By6AyZrVPZyvnnqv/nH+v+vxw ohxkGPDUQT3yqw5lFsHdSpoL2utzWJHLwyPlpHIUNbIdJozabuLm07iCTX0XXSqAUIEM bAWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780568112; x=1781172912; 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=CBCaSKtJVkREy+XvDa71QyJB5vz+fct60pxNVPvCkiM=; b=mrIXljL03VLk4gWuP/HvkQOWAVf37Gbv8//jJzZNdQw3xD7x2w6XZAPB+OTRdR4nj3 uioXM1MGGVbjI1zfKqH0pi1cT2GpRkzlexkJs9bBaenbRMLVYBpWjF/2AptOVS54hDG/ ccv52GSMjBY8zFMM3HU5YlsUj3DKW0N9qib3Saz9pRLV6cvFKXlSajZxNeyhpnoL//oC Jyl6uUTT3pldf+FrCENisShJGkEUG0Y75xj3Q3JaDlpptbCHk2qn7Y2hCKHLQqZhKq6S 5ljY5/TMYdDauTKsRzZxIvwvYUHy00YTWIGZZ5+Kr4qij5mK443/uXnLAFk2Cj3yow52 RRrw== X-Forwarded-Encrypted: i=1; AFNElJ+mL53d9B3qW8ycwQgArRIjn8mMywMXIML+GiV45spBwD/Yzq+gkMMHzDBymiqosC9gBd2M9m5wsk8ebnE=@vger.kernel.org X-Gm-Message-State: AOJu0Yz0ThKNZK4t0b7vE4v0QZutqocDuBW5oSHs40xfX2RZvfteNwwa 535gCOsmoLXX/+0XhYEg2u2FqXQavIzGmr2PT0u5YNMAWULe+vdAygJvGw+Qs/E2R1U= X-Gm-Gg: Acq92OGTEpkZEkDCKlSCac2OrUdvb2Fuv0PChtQZLX51iS1pa/JyPVJZIWBGs/mNwoU EYeKG1LvqeqRRO4m1aVQS8YEbaGbAv4DnIcIOYO+eV5de4lUgYA718g/gB8WMl6UqkXPLHA4t8g YWPPHZNimcROEOWQmdOYmBbiWCwAfz3KwrIfnI7sxC8NkmI+JYbp+vkx93PvZ/ETXw+OxLaVmcK tWhACmmhCuK9B/xcb0oSMijp9xHeyRDn2qGbkCM4bbdcYkdf/9imFhs0cQdjXUrB4nGv5lrOXIU yO7toMCDwlNEXn7Scu1vXyaU2yiMGZZhnbbeR/nRbeHJUUab4dKAKoiz3SxivANEcF72IeYjsoz 9hCSg0sXwDmtbNJ3TbKrZ/Ji2Cn9O55WsXYjKFU3cLi8K4JXK3sLjzXlm/3wAz8nI2ZYy0mtKue 907DbhK8M9eK6o3oybqw9hrctAE+sVf9VJjthQ X-Received: by 2002:a05:6000:4b11:b0:45e:ec27:b4b0 with SMTP id ffacd0b85a97d-460217264a4mr11102132f8f.18.1780568111676; Thu, 04 Jun 2026 03:15:11 -0700 (PDT) Received: from pathway.suse.cz ([176.114.240.130]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm14731478f8f.8.2026.06.04.03.15.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 03:15:11 -0700 (PDT) From: Petr Mladek To: John Ogness Cc: Sergey Senozhatsky , Steven Rostedt , Marcos Paulo de Souza , Chris Down , Naveen Kumar Chaudhary , linux-kernel@vger.kernel.org, Petr Mladek Subject: [PATCH v4 00/11] printk: Clean up preferred console handling Date: Thu, 4 Jun 2026 12:14:47 +0200 Message-ID: <20260604101459.393162-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 [v3]: + Move the handling of pre-enabled consoles into register_console() as 1st patch. It prevents a possible invalid access. [Petr] + Move the code for handling pre-enabled to console to try_enable_console() in 7th patch. The resulting code is the same as in v3. This 2nd move was not needed in v3 because the code was moved to this final location later. [Petr] + Switch order of the 10th and 11th patch. Aka make try_enable_default_console() return an err before refactoring try_enable_console() call try_enable_preferred_console() only when there is any. [Petr] + Initialize err value in try_enable_console() in 11th patch. It prevents using a non-initialized variable. [AI:gemini-3] + Make sure that pre-enabled consoles won't get registered when something went wrong in try_enable_console() in 11th patch [Petr] 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 [v3] https://lore.kernel.org/r/20260602085312.228251-1-pmladek@suse.com Petr Mladek (11): printk: Handle pre-enabled consoles in the top-level register_console() 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: Modify try_enable_default_console() to return error/success printk: Try enable preferred consoles only when there are any .../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 | 402 ++++++++++++------ 5 files changed, 315 insertions(+), 145 deletions(-) rename kernel/printk/{console_cmdline.h => console_register.h} (83%) -- 2.54.0