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

Fri Jan 8 21:54:00 UTC 2010
Robert Heller <heller at deepsoft.com>

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? 

-- 
Robert Heller             -- 978-544-6933
Deepwoods Software        -- Download the Model Railroad System
http://www.deepsoft.com/  -- Binaries for Linux and MS-Windows
heller at deepsoft.com       -- http://www.deepsoft.com/ModelRailroadSystem/