* Bogus serial port ttyS02
@ 2003-08-13 15:40 Geert Uytterhoeven
2003-08-13 16:16 ` Richard B. Johnson
2003-08-13 18:34 ` Russell King
0 siblings, 2 replies; 7+ messages in thread
From: Geert Uytterhoeven @ 2003-08-13 15:40 UTC (permalink / raw)
To: Linux Kernel Development; +Cc: Linux/PPC Development
Linux always finds 3 serial ports instead of 2:
| ttyS00 at 0x03f8 (irq = 4) is a 16550A
| ttyS01 at 0x02f8 (irq = 3) is a 16550A
| ttyS02 at 0x03e8 (irq = 4) is a 16450
The last one is bogus.
This is not exactly a new problem, and it happens with (and is not limited to)
both 2.4.21 and 2.6.0-test3. System is a PPC box (CHRP LongTrail) with a
National Semiconductor PC78308VUL SuperI/O, which has 2 internal 16550As.
Anyone with a clue? I know nothing about serial chip probing.
Ah, I still have some old dmesg outputs for that machine in my local CVS repo:
2.2.7: OK
2.3.18: OK
2.3.22: OK
2.3.42: not OK
2.3.47: not OK
2.3.48: not OK
2.3.50: not OK
2.3.51: not OK
2.3.99-pre3: not OK
2.4.0-test1: not OK
2.4.0-test1-ac7: OK
2.4.0-test1-ac10: OK
2.4.0-test11: not OK
2.4.0-test13-pre3: not OK
2.4.0-prerelease-ac5: not OK
2.4.0: not OK
2.4.1-pre2: not OK
2.4.1-pre10: not OK
2.4.1: not OK
So the problem was introduced between 2.3.22 and 2.3.42, and temporarily solved
in 2.4.0-test1-ac7 and 2.4.0-test1-ac10.
2.4.0-test1 has serial driver version 4.93 (2000-03-20)
2.4.0-test1-ac7 and 2.4.0-test1-ac10 have version 5.01 (2000-05-29)
2.4.0-test11 has version 5.02 (2000-08-09)
All are with MANY_PORTS SHARE_IRQ SERIAL_PCI enabled. Looking at the diffs
between 2.4.0-test1 and 2.4.0-test1-ac7, and 2.4.0-test1-ac7 and 2.4.0-test11
I couldn't find anything suspicious.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Bogus serial port ttyS02
2003-08-13 15:40 Bogus serial port ttyS02 Geert Uytterhoeven
@ 2003-08-13 16:16 ` Richard B. Johnson
2003-08-13 16:26 ` Geert Uytterhoeven
2003-08-13 18:34 ` Russell King
1 sibling, 1 reply; 7+ messages in thread
From: Richard B. Johnson @ 2003-08-13 16:16 UTC (permalink / raw)
To: Geert Uytterhoeven; +Cc: Linux Kernel Development, Linux/PPC Development
On Wed, 13 Aug 2003, Geert Uytterhoeven wrote:
>
> Linux always finds 3 serial ports instead of 2:
>
> | ttyS00 at 0x03f8 (irq = 4) is a 16550A
> | ttyS01 at 0x02f8 (irq = 3) is a 16550A
> | ttyS02 at 0x03e8 (irq = 4) is a 16450
>
> The last one is bogus.
First, this looks like ix86 stuff, not m68k. Drivers for ix86
machines probe the de facto addresses for up to a maximum of
4 8250-type UARTS. Those addresses are:
(0) 0x3f8
(1) 0x2f8
(2) 0x3e8
(3) 0x328
(from the Phoenix SYSTEM BIOS book)
Usually, there are several bits that are permanently 0 in
some of the registers. This is used to "positively" identify
the chip. Note that many IR devices are also connected
to 8250-type UARTS.
I would guess that you have two serial ports, plus another
UART that's used for IR (maybe a IR keyboard???).
You can do `od /dev/ttyS2` from the root account and see
what happends.
Cheers,
Dick Johnson
Penguin : Linux version 2.4.20 on an i686 machine (797.90 BogoMips).
Note 96.31% of all statistics are fiction.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Bogus serial port ttyS02
2003-08-13 16:16 ` Richard B. Johnson
@ 2003-08-13 16:26 ` Geert Uytterhoeven
0 siblings, 0 replies; 7+ messages in thread
From: Geert Uytterhoeven @ 2003-08-13 16:26 UTC (permalink / raw)
To: Richard B. Johnson; +Cc: Linux Kernel Development, Linux/PPC Development
On Wed, 13 Aug 2003, Richard B. Johnson wrote:
> On Wed, 13 Aug 2003, Geert Uytterhoeven wrote:
> > Linux always finds 3 serial ports instead of 2:
> >
> > | ttyS00 at 0x03f8 (irq = 4) is a 16550A
> > | ttyS01 at 0x02f8 (irq = 3) is a 16550A
> > | ttyS02 at 0x03e8 (irq = 4) is a 16450
> >
> > The last one is bogus.
>
> First, this looks like ix86 stuff, not m68k. Drivers for ix86
It's PPC, not m68k. Both PReP and CHRP have PC-style serial ports.
> machines probe the de facto addresses for up to a maximum of
> 4 8250-type UARTS. Those addresses are:
>
> (0) 0x3f8
> (1) 0x2f8
> (2) 0x3e8
> (3) 0x328
>
> (from the Phoenix SYSTEM BIOS book)
>
> Usually, there are several bits that are permanently 0 in
> some of the registers. This is used to "positively" identify
> the chip. Note that many IR devices are also connected
> to 8250-type UARTS.
>
> I would guess that you have two serial ports, plus another
> UART that's used for IR (maybe a IR keyboard???).
No, the Super I/O has only two serial ports, of which one can be used for IRDA.
> You can do `od /dev/ttyS2` from the root account and see
> what happends.
Nothing, it just waits for data. The same for `echo hello > /dev/ttyS2'. So the
serial driver things it has to wait to accept/send data.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Bogus serial port ttyS02
2003-08-13 15:40 Bogus serial port ttyS02 Geert Uytterhoeven
2003-08-13 16:16 ` Richard B. Johnson
@ 2003-08-13 18:34 ` Russell King
2003-08-13 21:08 ` Geert Uytterhoeven
1 sibling, 1 reply; 7+ messages in thread
From: Russell King @ 2003-08-13 18:34 UTC (permalink / raw)
To: Geert Uytterhoeven; +Cc: Linux Kernel Development, Linux/PPC Development
On Wed, Aug 13, 2003 at 05:40:23PM +0200, Geert Uytterhoeven wrote:
> Linux always finds 3 serial ports instead of 2:
>
> | ttyS00 at 0x03f8 (irq = 4) is a 16550A
> | ttyS01 at 0x02f8 (irq = 3) is a 16550A
> | ttyS02 at 0x03e8 (irq = 4) is a 16450
>
> The last one is bogus.
Do you know that it absolutely does not exist? Can it exist on any
PPC box? If the answer to both those questions is no, I suggest
you don't probe for it in the first place.
You could enable DEBUG_AUTOCONF in 8250.c in 2.6.0-test3 and give
further probing information. 8)
Looking at PPC's pc_serial.h, it seems that you've told it to probe
there using ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ.
ASYNC_SKIP_TEST means that we use a reduced test to probe for a port -
we just check that we can read back a value written to 0x3e9. If this
suceeds, we decide that there is a port present, and go on to try and
derive its type.
If you want to enable the more rigorous tests, remove ASYNC_SKIP_TEST
from the port flags. This will make us check that the device behaves
like a UART before deciding that it is one.
--
Russell King (rmk@arm.linux.org.uk) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Bogus serial port ttyS02
2003-08-13 18:34 ` Russell King
@ 2003-08-13 21:08 ` Geert Uytterhoeven
2003-08-16 15:23 ` Geert Uytterhoeven
0 siblings, 1 reply; 7+ messages in thread
From: Geert Uytterhoeven @ 2003-08-13 21:08 UTC (permalink / raw)
To: Russell King; +Cc: Linux Kernel Development, Linux/PPC Development
On Wed, 13 Aug 2003, Russell King wrote:
> On Wed, Aug 13, 2003 at 05:40:23PM +0200, Geert Uytterhoeven wrote:
> > Linux always finds 3 serial ports instead of 2:
> >
> > | ttyS00 at 0x03f8 (irq = 4) is a 16550A
> > | ttyS01 at 0x02f8 (irq = 3) is a 16550A
> > | ttyS02 at 0x03e8 (irq = 4) is a 16450
> >
> > The last one is bogus.
>
> Do you know that it absolutely does not exist? Can it exist on any
> PPC box? If the answer to both those questions is no, I suggest
> you don't probe for it in the first place.
Not on my box. But since it has an ISA slot, you can add legacy serial ports.
> You could enable DEBUG_AUTOCONF in 8250.c in 2.6.0-test3 and give
> further probing information. 8)
Serial: 8250/16550 driver $Revision: 1.90 $ IRQ sharing disabled
ttyS0: autoconf (0x03f8, 00000000): iir=3 iir1=6 iir2=6 type=16550A
ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
ttyS1: autoconf (0x02f8, 00000000): iir=3 iir1=6 iir2=6 type=16550A
ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
ttyS2: autoconf (0x03e8, 00000000): iir=0 type=16450
ttyS2 at I/O 0x3e8 (irq = 4) is a 16450
ttyS3: autoconf (0x02e8, 00000000): LOOP test failed (10) type=unknown
> Looking at PPC's pc_serial.h, it seems that you've told it to probe
> there using ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ.
>
> ASYNC_SKIP_TEST means that we use a reduced test to probe for a port -
> we just check that we can read back a value written to 0x3e9. If this
> suceeds, we decide that there is a port present, and go on to try and
> derive its type.
>
> If you want to enable the more rigorous tests, remove ASYNC_SKIP_TEST
> from the port flags. This will make us check that the device behaves
> like a UART before deciding that it is one.
If I remove the ASYNC_SKIP_TEST flag, I get
ttyS2: autoconf (0x03e8, 00000000): LOOP test failed (10) type=unknown
and only the 2 existing ports are detected! Thanks!
Why is the ASYNC_SKIP_TEST flag needed? Would it be safe to remove it for PPC,
or are there possible side effects?
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Bogus serial port ttyS02
2003-08-13 21:08 ` Geert Uytterhoeven
@ 2003-08-16 15:23 ` Geert Uytterhoeven
2003-08-16 20:00 ` Russell King
0 siblings, 1 reply; 7+ messages in thread
From: Geert Uytterhoeven @ 2003-08-16 15:23 UTC (permalink / raw)
To: Russell King; +Cc: Linux Kernel Development, Linux/PPC Development
On Wed, 13 Aug 2003, Geert Uytterhoeven wrote:
> On Wed, 13 Aug 2003, Russell King wrote:
> > You could enable DEBUG_AUTOCONF in 8250.c in 2.6.0-test3 and give
> > further probing information. 8)
This patch kills a warning if DEBUG_AUTOCONF is enabled:
--- linux-ppc-2.6.0-test3/drivers/serial/8250.c Mon Aug 11 02:20:41 2003
+++ linux-longtrail-2.6.0-test3/drivers/serial/8250.c Wed Aug 13 22:31:07 2003
@@ -557,7 +557,7 @@
if (!up->port.iobase && !up->port.mapbase && !up->port.membase)
return;
- DEBUG_AUTOCONF("ttyS%d: autoconf (0x%04x, 0x%08lx): ",
+ DEBUG_AUTOCONF("ttyS%d: autoconf (0x%04x, %p): ",
up->port.line, up->port.iobase, up->port.membase);
/*
> > Looking at PPC's pc_serial.h, it seems that you've told it to probe
> > there using ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ.
> >
> > ASYNC_SKIP_TEST means that we use a reduced test to probe for a port -
> > we just check that we can read back a value written to 0x3e9. If this
> > suceeds, we decide that there is a port present, and go on to try and
> > derive its type.
> >
> > If you want to enable the more rigorous tests, remove ASYNC_SKIP_TEST
> > from the port flags. This will make us check that the device behaves
> > like a UART before deciding that it is one.
>
> If I remove the ASYNC_SKIP_TEST flag, I get
>
> ttyS2: autoconf (0x03e8, 00000000): LOOP test failed (10) type=unknown
>
> and only the 2 existing ports are detected! Thanks!
>
> Why is the ASYNC_SKIP_TEST flag needed? Would it be safe to remove it for PPC,
> or are there possible side effects?
This patch removes the ASYNC_SKIP_TEST flag on PPC:
--- linux-ppc-2.6.0-test3/include/asm-ppc/pc_serial.h Mon Aug 11 02:21:00 2003
+++ linux-longtrail-2.6.0-test3/include/asm-ppc/pc_serial.h Wed Aug 13 23:01:50 2003
@@ -28,10 +28,10 @@
/* Standard COM flags (except for COM4, because of the 8514 problem) */
#ifdef CONFIG_SERIAL_DETECT_IRQ
-#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ)
+#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_AUTO_IRQ)
#define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_AUTO_IRQ)
#else
-#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST)
+#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF)
#define STD_COM4_FLAGS ASYNC_BOOT_AUTOCONF
#endif
OK to apply?
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Bogus serial port ttyS02
2003-08-16 15:23 ` Geert Uytterhoeven
@ 2003-08-16 20:00 ` Russell King
0 siblings, 0 replies; 7+ messages in thread
From: Russell King @ 2003-08-16 20:00 UTC (permalink / raw)
To: Geert Uytterhoeven; +Cc: Linux Kernel Development, Linux/PPC Development
On Sat, Aug 16, 2003 at 05:23:20PM +0200, Geert Uytterhoeven wrote:
> This patch kills a warning if DEBUG_AUTOCONF is enabled:
>
> --- linux-ppc-2.6.0-test3/drivers/serial/8250.c Mon Aug 11 02:20:41 2003
> +++ linux-longtrail-2.6.0-test3/drivers/serial/8250.c Wed Aug 13 22:31:07 2003
> @@ -557,7 +557,7 @@
> if (!up->port.iobase && !up->port.mapbase && !up->port.membase)
> return;
>
> - DEBUG_AUTOCONF("ttyS%d: autoconf (0x%04x, 0x%08lx): ",
> + DEBUG_AUTOCONF("ttyS%d: autoconf (0x%04x, %p): ",
> up->port.line, up->port.iobase, up->port.membase);
>
> /*
> This patch removes the ASYNC_SKIP_TEST flag on PPC:
>
> --- linux-ppc-2.6.0-test3/include/asm-ppc/pc_serial.h Mon Aug 11 02:21:00 2003
> +++ linux-longtrail-2.6.0-test3/include/asm-ppc/pc_serial.h Wed Aug 13 23:01:50 2003
> @@ -28,10 +28,10 @@
>
> /* Standard COM flags (except for COM4, because of the 8514 problem) */
> #ifdef CONFIG_SERIAL_DETECT_IRQ
> -#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ)
> +#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_AUTO_IRQ)
> #define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_AUTO_IRQ)
> #else
> -#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST)
> +#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF)
> #define STD_COM4_FLAGS ASYNC_BOOT_AUTOCONF
> #endif
>
> OK to apply?
Both look fine to me.
--
Russell King (rmk@arm.linux.org.uk) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2003-08-16 20:01 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-08-13 15:40 Bogus serial port ttyS02 Geert Uytterhoeven
2003-08-13 16:16 ` Richard B. Johnson
2003-08-13 16:26 ` Geert Uytterhoeven
2003-08-13 18:34 ` Russell King
2003-08-13 21:08 ` Geert Uytterhoeven
2003-08-16 15:23 ` Geert Uytterhoeven
2003-08-16 20:00 ` Russell King
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox