2009-04-20 22:07:50

by Chuck Ebbert

[permalink] [raw]
Subject: [patch] serial: add parameter to force skipping the test for the TXEN bug

serial: add parameter to force skipping the test for the TXEN bug

Allow users to force skipping the TXEN test at init time. Applies
to all serial ports. Intended for debugging only.

Signed-off-by: Chuck Ebbert <[email protected]>

Index: linux-2.6.29.noarch/drivers/serial/8250.c
===================================================================
--- linux-2.6.29.noarch.orig/drivers/serial/8250.c
+++ linux-2.6.29.noarch/drivers/serial/8250.c
@@ -67,6 +67,8 @@ static int serial_index(struct uart_port
return (serial8250_reg.minor - 64) + port->line;
}

+static unsigned int skip_txen_test; /* force skip of txen test at init time */
+
/*
* Debugging.
*/
@@ -2097,7 +2099,7 @@ static int serial8250_startup(struct uar
is variable. So, let's just don't test if we receive
TX irq. This way, we'll never enable UART_BUG_TXEN.
*/
- if (up->port.flags & UPF_NO_TXEN_TEST)
+ if (skip_txen_test || up->port.flags & UPF_NO_TXEN_TEST)
goto dont_test_tx_en;

/*
@@ -3245,6 +3247,9 @@ MODULE_PARM_DESC(share_irqs, "Share IRQs
module_param(nr_uarts, uint, 0644);
MODULE_PARM_DESC(nr_uarts, "Maximum number of UARTs supported. (1-" __MODULE_STRING(CONFIG_SERIAL_8250_NR_UARTS) ")");

+module_param(skip_txen_test, uint, 0644);
+MODULE_PARM_DESC(skip_txen_test, "Skip checking for the TXEN bug at init time");
+
#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");


2009-04-21 19:49:57

by Andrew Morton

[permalink] [raw]
Subject: Re: [patch] serial: add parameter to force skipping the test for the TXEN bug

On Mon, 20 Apr 2009 18:05:49 -0400
Chuck Ebbert <[email protected]> wrote:

> serial: add parameter to force skipping the test for the TXEN bug
>
> Allow users to force skipping the TXEN test at init time. Applies
> to all serial ports. Intended for debugging only.
>

<scratches head @ changelog>

>
> Index: linux-2.6.29.noarch/drivers/serial/8250.c
> ===================================================================
> --- linux-2.6.29.noarch.orig/drivers/serial/8250.c
> +++ linux-2.6.29.noarch/drivers/serial/8250.c
> @@ -67,6 +67,8 @@ static int serial_index(struct uart_port
> return (serial8250_reg.minor - 64) + port->line;
> }
>
> +static unsigned int skip_txen_test; /* force skip of txen test at init time */
> +
> /*
> * Debugging.
> */
> @@ -2097,7 +2099,7 @@ static int serial8250_startup(struct uar
> is variable. So, let's just don't test if we receive
> TX irq. This way, we'll never enable UART_BUG_TXEN.
> */
> - if (up->port.flags & UPF_NO_TXEN_TEST)
> + if (skip_txen_test || up->port.flags & UPF_NO_TXEN_TEST)
> goto dont_test_tx_en;
>
> /*
> @@ -3245,6 +3247,9 @@ MODULE_PARM_DESC(share_irqs, "Share IRQs
> module_param(nr_uarts, uint, 0644);
> MODULE_PARM_DESC(nr_uarts, "Maximum number of UARTs supported. (1-" __MODULE_STRING(CONFIG_SERIAL_8250_NR_UARTS) ")");
>
> +module_param(skip_txen_test, uint, 0644);
> +MODULE_PARM_DESC(skip_txen_test, "Skip checking for the TXEN bug at init time");
> +
> #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");

Why is this useful? What is the problem which you're solving here?

2009-04-23 21:07:18

by Chuck Ebbert

[permalink] [raw]
Subject: Re: [patch] serial: add parameter to force skipping the test for the TXEN bug

On Tue, 21 Apr 2009 12:47:45 -0700
Andrew Morton <[email protected]> wrote:

> On Mon, 20 Apr 2009 18:05:49 -0400
> Chuck Ebbert <[email protected]> wrote:
>
> > serial: add parameter to force skipping the test for the TXEN bug
> >
> > Allow users to force skipping the TXEN test at init time. Applies
> > to all serial ports. Intended for debugging only.
> >
>
> <scratches head @ changelog>
>
>
> Why is this useful? What is the problem which you're solving here?

There is a blacklist for devices where we need to skip the test but the list is
not complete. This lets users force skipping the test so we can determine if they
need to be added to the list.

Some HP machines with weird serial consoles have this problem and there may be more.