Description of problem: The 8250.nr_uarts option has always worked for me to get access to all the ports on my byterunner board, but with FC6 xen kernel, it isn't recognized. With these entries in grub.conf: title Fedora Core (2.6.18-1.2798.fc6) root (hd0,0) kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet audit=0 selinux=0 8250.nr_uarts=9 initrd /initrd-2.6.18-1.2798.fc6.img title Fedora Core (2.6.18-1.2798.fc6xen) root (hd0,0) kernel /xen.gz-2.6.18-1.2798.fc6 module /vmlinuz-2.6.18-1.2798.fc6xen ro root=LABEL=/ rhgb quiet audit=0 selinux=0 8250.nr_uarts=9 module /initrd-2.6.18-1.2798.fc6xen.img Booting fc6xen gives these messages: Built 1 zonelists. Total pages: 483946 Kernel command line: ro root=LABEL=/ rhgb quiet audit=0 selinux=0 8250.nr_uarts=9 audit: disabled (after initialization) Unknown boot option `8250.nr_uarts=9': ignoring Initializing CPU#0 And the only serial ttys I see are: [root@zooty ~]# ls -ld /dev/ttyS* crw-rw-rw- 1 root uucp 4, 64 Oct 26 21:34 /dev/ttyS0 crw------- 1 root root 4, 65 Oct 26 21:34 /dev/ttyS1 crw------- 1 root root 4, 66 Oct 26 21:34 /dev/ttyS2 crw------- 1 root root 4, 67 Oct 26 21:34 /dev/ttyS3 If I boot the non-xen fc6 kernel, I get this: no error messages about unknown boot parameters [root@zooty ~]# ls -ld /dev/ttyS* crw-rw-rw- 1 root uucp 4, 64 Oct 26 21:40 /dev/ttyS0 crw-rw-rw- 1 root uucp 4, 65 Oct 26 21:40 /dev/ttyS1 crw-rw-rw- 1 root uucp 4, 66 Oct 26 21:40 /dev/ttyS2 crw-rw-rw- 1 root uucp 4, 67 Oct 26 21:40 /dev/ttyS3 crw-rw-rw- 1 root uucp 4, 68 Oct 26 21:41 /dev/ttyS4 crw-rw-rw- 1 root uucp 4, 69 Oct 26 21:41 /dev/ttyS5 crw-rw-rw- 1 root uucp 4, 70 Oct 26 21:41 /dev/ttyS6 crw-rw-rw- 1 root uucp 4, 71 Oct 26 21:41 /dev/ttyS7 crw-rw-rw- 1 root uucp 4, 72 Oct 26 21:41 /dev/ttyS8 And all 9 uarts show up. Version-Release number of selected component (if applicable): 2.6.18-1.2798.fc6xen How reproducible: every time Steps to Reproduce: 1. boot xen kernel as show abocve Actual results: unrecognized option, only 4 uarts Expected results: no error, and 9 uarts Additional info: I couldn't possibly tell you the model number of the byterunner board involved, but it is an 8 port PCI board (the 9 comes by adding in the one serial port on the mother board).
The x86 version of xen also suffers from this, but its not in making the /dev/ices, it in the kernels detection of the hardware during boot. There is no mention in dmesg of it detecting and initializing anything but the ps2 ports. Reverting to a regular i686 kernel fixes things right up.
The main reason for the parameter not to be working is that in xen kernels, is that 8250 is put as a module, not builtin, rendering the boot option useless. There's large discussion about it being modular, in bug #204825
This is not a bug, it works as designed. As explained in bug #204825, 8250 must be a module in Xen kernels. Kernel parameters specified on the kernel command line apply only to modules that are built into the kernel image. Module parameters for loadable modules need to be specified with modprobe, either on its command line or in its config files. I suggest to configure nr_uarts in your modprobe.conf for use with Xen. If that doesn't work for you, feel free to reopen the bug.
Mark, This may not be a technical bug. However, this sounds like a serious usability issue wtih Red Hat, effectively putting us back to the 70s. For all non-Unix Administrators, like myself, how do I get RH OS to recognize serial devices? [root@some etc]# setserial -bg /dev/ttyS[0-9]* /dev/ttyS1: No such device or address /dev/ttyS2: No such device or address << One serial device is installed on this port /dev/ttyS3: No such device or address
Peter, Having to specify 8250.nr_uarts to get your devices working isn't terribly usable regardless of whether you have to do it on the kernel command line or with modprobe. Still, the difference between Xen and non-Xen kernel is unfortunate. There's really nothing we can do about that, I'm afraid. See bug #204825 for why. That bug got resolved by a udev update. Does that help you?