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

Fri Jan 8 22:44:37 UTC 2010
JohnS <jses27 at gmail.com>

On Fri, 2010-01-08 at 17:13 -0500, Ron Loftin wrote:
> 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
---
One thing to see is from the kernel config he listed is the 4.8 can
scale to 32 ports and the 5.4 only 4.  If more than 4 is needed then a
kernel recompile is needed.  Has to change the value first.  Like Ron
said append it to the kernel line in grub.  

BTW, I never seen any docu on it when i had the problem of hanging port
extenders on tty0 & 1 for modem banks.  Actually later on I found a bug
request in RHB for it.

Also I have a problem with your post, heres why: The same for CentOS and
RHEL 5.
 
uname -ra
Linux ethies 2.6.18-164.9.1.el5 #1 SMP Tue Dec 15 21:04:57 EST 2009 i686
i686 i386 GNU/Linux
#
# 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

That can not be a """5""" Kernel you listed
John