[PATCH 0/2] nbcon locking issue with v6.6.10-rt18 kernel

Junxiao Chang posted 2 patches 1 year, 11 months ago
include/linux/console.h     |  2 --
include/linux/serial_core.h |  1 +
kernel/printk/nbcon.c       | 11 +++++++----
3 files changed, 8 insertions(+), 6 deletions(-)
[PATCH 0/2] nbcon locking issue with v6.6.10-rt18 kernel
Posted by Junxiao Chang 1 year, 11 months ago
There are two serial port devices in one Intel ADL hardware, one is 8250 lpss, another is 8250 dw. Multiple uart devices are enumerated as ttyS0, ttyS4, ttyS5,... With 6.6.10 rt18 kernel, booting hangs in nbcon_release if console is enabled by appending "console=ttySx,115200n8" to kernel command line. According to nbcon author John's suggestion, lock flag is moved from console structure to uart_port. Another patch is to add uart_is_nbcon checking in nbcon_release. 

Junxiao Chang (2):
  printk: nbcon: move locked_port flag to struct uart_port
  printk: nbcon: check uart port is nbcon or not in nbcon_release

 include/linux/console.h     |  2 --
 include/linux/serial_core.h |  1 +
 kernel/printk/nbcon.c       | 11 +++++++----
 3 files changed, 8 insertions(+), 6 deletions(-)

-- 
2.34.1
Re: [PATCH 0/2] nbcon locking issue with v6.6.10-rt18 kernel
Posted by John Ogness 1 year, 11 months ago
On 2024-01-23, Junxiao Chang <junxiao.chang@intel.com> wrote:
> There are two serial port devices in one Intel ADL hardware, one is
> 8250 lpss, another is 8250 dw. Multiple uart devices are enumerated as
> ttyS0, ttyS4, ttyS5,... With 6.6.10 rt18 kernel, booting hangs in
> nbcon_release if console is enabled by appending
> "console=ttySx,115200n8" to kernel command line. According to nbcon
> author John's suggestion, lock flag is moved from console structure to
> uart_port. Another patch is to add uart_is_nbcon checking in
> nbcon_release.

Isn't the real issue that the console pointer is copied to device that
are not consoles? I am wondering why that is. Is it possible to
dynamically switch the console index during runtime? If not, I think a
proper fix would be to only assign @cons if it actually registered as a
console. This would also simplify the uart_console() macro.

It is critical that a struct console is not shared by multiple
devices. I do not like the idea (or see the point) of having non-console
devices store a struct console pointer that is registered with another
device.

I will take a closer look at that.

John