Linux 8250 串口48个数量限制
问题
Linux 8250 串口子系统,在编译时指定了串口数量的限制,一般是48个,导致K3服务器(48个K3串口+1个BMC串口)的串口无法全部探测出来。
排查
- 使用这个命令可以查看8250的串口数量限制
cat /boot/config-$(uname -r) | grep CONFIG_SERIAL_8250_NR_UARTS输出
CONFIG_SERIAL_8250_NR_UARTS=48
可以看到,限制为48个。
而厂家提供的串口驱动,也是调用了8250的函数了,所以也受此限制影响。
从dmesg也可以看到,串口在初始化的时候是使用8250初始化的
~$ sudo dmesg | grep ttyS
[sudo] password for ubuntu:
[ 5.009857] dw-apb-uart.4: ttyS4 at MMIO 0x4017004000 (irq = 16, base_baud = 6250000) is a 16550A
[ 5.050004] 0000:02:00.0: ttyS5 at MMIO 0x52500000 (irq = 180, base_baud = 230400) is a 16550A
[ 5.096713] 0000:02:00.0: ttyS6 at MMIO 0x52500008 (irq = 181, base_baud = 230400) is a 16550A
[ 5.158378] 0000:02:00.0: ttyS7 at MMIO 0x52500010 (irq = 182, base_baud = 230400) is a 16550A
[ 5.195345] 0000:02:00.0: ttyS8 at MMIO 0x52500018 (irq = 183, base_baud = 230400) is a 16550A
[ 5.220571] 0000:02:00.0: ttyS9 at MMIO 0x52500020 (irq = 184, base_baud = 230400) is a 16550A
[ 5.246700] 0000:02:00.0: ttyS10 at MMIO 0x52500028 (irq = 185, base_baud = 230400) is a 16550A
[ 5.272247] 0000:02:00.0: ttyS11 at MMIO 0x52500030 (irq = 186, base_baud = 230400) is a 16550A
[ 5.296352] 0000:02:00.0: ttyS12 at MMIO 0x52500038 (irq = 179, base_baud = 230400) is a 16550A
[ 5.321626] 0000:02:00.0: ttyS13 at MMIO 0x52500040 (irq = 180, base_baud = 230400) is a 16550A
[ 5.345709] 0000:02:00.0: ttyS14 at MMIO 0x52500048 (irq = 181, base_baud = 230400) is a 16550A
- is a 16550A 的内核打印: 这个字符串是 Linux 内核源码树中 drivers/tty/serial/8250/8250_port.c 这个文件专属的输出。
- 而且ttyS是8250的命名方式
留下评论