rpms/kernel/devel linux-2.6-serial-nrports.patch, NONE, 1.1 kernel-2.6.spec, 1.1790, 1.1791
fedora-cvs-commits at redhat.com
fedora-cvs-commits at redhat.com
Wed Dec 28 19:43:52 UTC 2005
Author: davej
Update of /cvs/dist/rpms/kernel/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv4343
Modified Files:
kernel-2.6.spec
Added Files:
linux-2.6-serial-nrports.patch
Log Message:
Limit number of serial ports registered at boot time.
linux-2.6-serial-nrports.patch:
Documentation/kernel-parameters.txt | 2 ++
drivers/serial/8250.c | 28 ++++++++++++++++++----------
drivers/serial/Kconfig | 10 ++++++++++
3 files changed, 30 insertions(+), 10 deletions(-)
--- NEW FILE linux-2.6-serial-nrports.patch ---
Make the number of UARTs registered configurable.
Also add a nr_uarts module option to the 8250 code
to override this, up to a maximum of CONFIG_SERIAL_8250_NR_UARTS
This should appease people who complain about a proliferation
of /dev/ttyS & /sysfs nodes whilst at the same time allowing
a single kernel image to support the rarer occasions of
lots of devices.
Signed-off-by: Dave Jones <davej at redhat.com>
diff -urpN --exclude-from=/home/davej/.exclude vanilla/drivers/serial/8250.c serial/drivers/serial/8250.c
--- vanilla/drivers/serial/8250.c 2005-10-27 20:02:08.000000000 -0400
+++ serial/drivers/serial/8250.c 2005-12-07 20:00:16.000000000 -0500
@@ -53,6 +53,8 @@
*/
static unsigned int share_irqs = SERIAL8250_SHARE_IRQS;
+static unsigned int nr_uarts = CONFIG_SERIAL_8250_RUNTIME_UARTS;
+
/*
* Debugging.
*/
@@ -2047,7 +2049,7 @@ static void __init serial8250_isa_init_p
return;
first = 0;
- for (i = 0; i < UART_NR; i++) {
+ for (i = 0; i < nr_uarts; i++) {
struct uart_8250_port *up = &serial8250_ports[i];
up->port.line = i;
@@ -2066,7 +2068,7 @@ static void __init serial8250_isa_init_p
}
for (i = 0, up = serial8250_ports;
- i < ARRAY_SIZE(old_serial_port) && i < UART_NR;
+ i < ARRAY_SIZE(old_serial_port) && i < nr_uarts;
i++, up++) {
up->port.iobase = old_serial_port[i].port;
up->port.irq = irq_canonicalize(old_serial_port[i].irq);
@@ -2088,7 +2090,7 @@ serial8250_register_ports(struct uart_dr
serial8250_isa_init_ports();
- for (i = 0; i < UART_NR; i++) {
+ for (i = 0; i < nr_uarts; i++) {
struct uart_8250_port *up = &serial8250_ports[i];
up->port.dev = dev;
@@ -2189,7 +2191,7 @@ static int serial8250_console_setup(stru
* if so, search for the first available port that does have
* console support.
*/
- if (co->index >= UART_NR)
+ if (co->index >= nr_uarts)
co->index = 0;
port = &serial8250_ports[co->index].port;
if (!port->iobase && !port->membase)
@@ -2225,7 +2227,7 @@ static int __init find_port(struct uart_
int line;
struct uart_port *port;
- for (line = 0; line < UART_NR; line++) {
+ for (line = 0; line < nr_uarts; line++) {
port = &serial8250_ports[line].port;
if (p->iotype == port->iotype &&
p->iobase == port->iobase &&
@@ -2349,7 +2351,7 @@ static int __devexit serial8250_remove(s
{
int i;
- for (i = 0; i < UART_NR; i++) {
+ for (i = 0; i < nr_uarts; i++) {
struct uart_8250_port *up = &serial8250_ports[i];
if (up->port.dev == dev)
@@ -2421,7 +2423,7 @@ static struct uart_8250_port *serial8250
/*
* First, find a port entry which matches.
*/
- for (i = 0; i < UART_NR; i++)
+ for (i = 0; i < nr_uarts; i++)
if (uart_match_port(&serial8250_ports[i].port, port))
return &serial8250_ports[i];
@@ -2430,7 +2432,7 @@ static struct uart_8250_port *serial8250
* free entry. We look for one which hasn't been previously
* used (indicated by zero iobase).
*/
- for (i = 0; i < UART_NR; i++)
+ for (i = 0; i < nr_uarts; i++)
if (serial8250_ports[i].port.type == PORT_UNKNOWN &&
serial8250_ports[i].port.iobase == 0)
return &serial8250_ports[i];
@@ -2439,7 +2441,7 @@ static struct uart_8250_port *serial8250
* That also failed. Last resort is to find any entry which
* doesn't have a real port associated with it.
*/
- for (i = 0; i < UART_NR; i++)
+ for (i = 0; i < nr_uarts; i++)
if (serial8250_ports[i].port.type == PORT_UNKNOWN)
return &serial8250_ports[i];
@@ -2524,8 +2526,11 @@ static int __init serial8250_init(void)
{
int ret, i;
+ if (nr_uarts > UART_NR)
+ nr_uarts = UART_NR;
+
printk(KERN_INFO "Serial: 8250/16550 driver $Revision: 1.90 $ "
- "%d ports, IRQ sharing %sabled\n", (int) UART_NR,
+ "%d ports, IRQ sharing %sabled\n", nr_uarts,
share_irqs ? "en" : "dis");
for (i = 0; i < NR_IRQS; i++)
@@ -2585,6 +2590,9 @@ module_param(share_irqs, uint, 0644);
MODULE_PARM_DESC(share_irqs, "Share IRQs with other non-8250/16x50 devices"
" (unsafe)");
+module_param(nr_uarts, uint, 0644);
+MODULE_PARM_DESC(nr_uarts, "Maximum number of UARTs supported. (1-" __MODULE_STRING(CONFIG_SERIAL_8250_NR_UARTS) ")");
+
#ifdef CONFIG_SERIAL_8250_RSA
module_param_array(probe_rsa, ulong, &probe_rsa_count, 0444);
MODULE_PARM_DESC(probe_rsa, "Probe I/O ports for RSA");
diff -urpN --exclude-from=/home/davej/.exclude vanilla/drivers/serial/Kconfig serial/drivers/serial/Kconfig
--- vanilla/drivers/serial/Kconfig 2005-10-27 20:02:08.000000000 -0400
+++ serial/drivers/serial/Kconfig 2005-12-07 19:24:11.000000000 -0500
@@ -95,6 +95,16 @@ config SERIAL_8250_NR_UARTS
PCI enumeration and any ports that may be added at run-time
via hot-plug, or any ISA multi-port serial cards.
+config SERIAL_8250_RUNTIME_UARTS
+ int "Number of 8250/16550 serial ports to register at runtime"
+ depends on SERIAL_8250
+ default "4"
+ help
+ Set this to the maximum number of serial ports you want
+ the kernel to register at boot time. This can be overriden
+ with the module parameter "nr_uarts", or boot-time parameter
+ 8250.nr_uarts
+
config SERIAL_8250_EXTENDED
bool "Extended 8250/16550 serial driver options"
depends on SERIAL_8250
--- serial/Documentation/kernel-parameters.txt~ 2005-12-07 20:16:18.000000000 -0500
+++ serial/Documentation/kernel-parameters.txt 2005-12-07 20:17:44.000000000 -0500
@@ -982,6 +982,8 @@ running once the system is up.
nowb [ARM]
+ nr_uarts= [SERIAL] maximum number of UARTs to be registered.
+
opl3= [HW,OSS]
Format: <io>
Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/kernel-2.6.spec,v
retrieving revision 1.1790
retrieving revision 1.1791
diff -u -r1.1790 -r1.1791
--- kernel-2.6.spec 28 Dec 2005 19:22:57 -0000 1.1790
+++ kernel-2.6.spec 28 Dec 2005 19:43:50 -0000 1.1791
@@ -343,6 +343,7 @@
Patch1650: linux-2.6-input-kill-stupid-messages.patch
Patch1660: linux-2.6-input-usblegacy.patch
Patch1670: linux-2.6-serial-tickle-nmi.patch
+Patch1671: linux-2.6-serial-nrports.patch
Patch1680: linux-2.6-missing-exports.patch
Patch1690: linux-2.6-radeon-backlight.patch
Patch1700: linux-2.6-ide-tune-locking.patch
@@ -815,6 +816,8 @@
%patch1660 -p1
# Tickle the NMI whilst doing serial writes.
%patch1670 -p1
+# Limit number of serial ports registered.
+%patch1671 -p1
# Missing EXPORT_SYMBOL's
%patch1680 -p1
# Radeon on thinkpad backlight power-management goodness.
@@ -1357,6 +1360,7 @@
* Wed Dec 28 2005 Dave Jones <davej at redhat.com>
- 2.6.15-rc7-git2
- Reduce stack usage in block layer.
+- Limit number of serial ports registered at boot time.
* Tue Dec 27 2005 Dave Jones <davej at redhat.com>
- 2.6.15-rc7-git1
More information about the fedora-cvs-commits
mailing list