[CentOS] Serial port fun: CentOS 4.8 (32-bit) vs. CentOS 5.4 (64-bit)

Ron Loftin reloftin at twcny.rr.com
Fri Jan 8 22:13:13 UTC 2010


On Fri, 2010-01-08 at 16:54 -0500, Robert Heller wrote:
> I am in the process of migrating from running CentOS 4.8 (32-bit) to
> CentOS 5.4 (64-bit) on my AMD Sempron(tm) Processor LE-1300 system (it
> is running CentOS 4.8 32-bit because the disk images are from a
> previous PIII system), and things are 'interesting' WRT how the Lava
> Computer mfg Inc Quattro-PCI card is being handled.
> 
> lspci (on CentOS 4.8 32-bit) yields:
> 
> 01:0a.0 Serial controller: Lava Computer mfg Inc Quattro-PCI A
> 01:0a.1 Serial controller: Lava Computer mfg Inc Quattro-PCI B
> 
> On the 32-bit system (2.6.9-89.0.18.EL.plus.c4 [i686]) dmesg says:
> 
> Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing enabled
> ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A  
> ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A   
> ACPI: PCI Interrupt 0000:01:0a.0[A] -> GSI 16 (level, low) -> IRQ 233
> ttyS4 at I/O 0xd080 (irq = 233) is a 16550A
> ttyS5 at I/O 0xd000 (irq = 233) is a 16550A
> ACPI: PCI Interrupt 0000:01:0a.1[A] -> GSI 16 (level, low) -> IRQ 233
> ttyS6 at I/O 0xcc00 (irq = 233) is a 16550A
> ttyS7 at I/O 0xc880 (irq = 233) is a 16550A
> 
> With the 64-bit kernel (2.6.18-164.el5 [x86_64]) I get:
> 
> Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
> serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
> serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
> 00:0a: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
> ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 19
> ACPI: PCI Interrupt 0000:01:0a.0[A] -> Link [LNKC] -> GSI 19 (level,
> low) -> IRQ
>  177
> 0000:01:0a.0: ttyS2 at I/O 0xd080 (irq = 177) is a 16550A
> 0000:01:0a.0: ttyS3 at I/O 0xd000 (irq = 177) is a 16550A
> ACPI: PCI Interrupt 0000:01:0a.1[A] -> Link [LNKC] -> GSI 19 (level,
> low) -> IRQ
>  177
> Couldn't register serial port 0000:01:0a.1: -28
> 
> OK, instead of skipping ttyS2 and ttyS3 (normally old-school on-board COM3 and
> COM4) and allocating ttyS4 through ttyS7 for the Quattro, it is
> assigning ttyS2 and ttyS3 to the first pair, and then barfing (-28?) on
> the second pair.  I looked at the config files and found:
> 
> The 4.8 kernel has:
> 
> #
> # Serial drivers
> #
> CONFIG_SERIAL_8250=y
> CONFIG_SERIAL_8250_CONSOLE=y
> CONFIG_SERIAL_8250_PCI=y
> CONFIG_SERIAL_8250_PNP=y
> CONFIG_SERIAL_8250_CS=m
> CONFIG_SERIAL_8250_NR_UARTS=32
> CONFIG_SERIAL_8250_RUNTIME_UARTS=4
> CONFIG_SERIAL_8250_EXTENDED=y
> CONFIG_SERIAL_8250_MANY_PORTS=y
> CONFIG_SERIAL_8250_SHARE_IRQ=y
> CONFIG_SERIAL_8250_DETECT_IRQ=y
> CONFIG_SERIAL_8250_RSA=y
> 
> and the 5.4 kernel has:
> 
> #
> # Serial drivers
> #
> CONFIG_SERIAL_8250=y
> CONFIG_SERIAL_8250_CONSOLE=y
> CONFIG_SERIAL_8250_CS=m
> # CONFIG_SERIAL_8250_ACPI is not set
> CONFIG_SERIAL_8250_NR_UARTS=4
> CONFIG_SERIAL_8250_EXTENDED=y
> # CONFIG_SERIAL_8250_MANY_PORTS is not set
> CONFIG_SERIAL_8250_SHARE_IRQ=y
> CONFIG_SERIAL_8250_DETECT_IRQ=y
> CONFIG_SERIAL_8250_MULTIPORT=y 
> CONFIG_SERIAL_8250_RSA=y
> 
> Is what I am seeing a result of CONFIG_SERIAL_8250_ACPI and/or
> CONFIG_SERIAL_8250_MANY_PORTS not being set?
> 
> Would upgrading to the CentOSPlus kernel help? 

I don't think you need the plus kernel.

I did a similar dance when migrating to CentOS 5 on a box with a NetMOS
serial card.  My research led me to the boot-time kernel arguments
related to the 8250 serial driver.  Note that this has to be done as
arguments to the kernel, in grub, because the 8250 driver is NOT built
as a module, but is included in the basic kernel.  After some banging
around, I wound up with the argument "8250.nr_uarts=8" appended to the
end of the "kernel" line in grub, and that made things work.

This is sort of documented
in /usr/share/doc/kernel-doc-2.6.18/Documentation/kernel-parameters.txt.
You do have to understand how the kernel params work, but after you get
that straight, the rest follows.

> 
-- 
Ron Loftin                      reloftin at twcny.rr.com

"God, root, what is difference ?"       Piter from UserFriendly



More information about the CentOS mailing list