linux-mips.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* loongson ls2k1000: PCIe serial card WCH CH382L not working, maybe ioports problem
@ 2020-08-07  3:08 Du Huanpeng
  2020-08-07  8:01 ` Jiaxun Yang
  0 siblings, 1 reply; 6+ messages in thread
From: Du Huanpeng @ 2020-08-07  3:08 UTC (permalink / raw)
  To: linux-mips; +Cc: mkl, zhangj, linux, jiaxun.yang

Hi all,

I'm testing a PCIe card to two uarts (WCH CH382L compatible,
         https://item.jd.com/48547850173.html) on a loongson ls2k1000 board.

With the card inserted the kernel detects the two new uarts:

[    2.060884] pci 0000:00:04.1: EHCI: unrecognized capability ff
[    2.066721] pci 0000:00:04.1: EHCI: capability loop?
[    2.066745] pci 0000:00:04.1: quirk_usb_early_handoff+0x0/0xa60 took 358764 usecs
[    2.074542] pcieport 0000:00:09.0: PME: Signaling with IRQ 2
[    2.080651] pcieport 0000:00:0a.0: PME: Signaling with IRQ 3
[    2.086648] pcieport 0000:00:0b.0: PME: Signaling with IRQ 4
[    2.092616] pcieport 0000:00:0c.0: PME: Signaling with IRQ 5
[    2.098579] pcieport 0000:00:0d.0: PME: Signaling with IRQ 6
[    2.104557] pcieport 0000:00:0e.0: PME: Signaling with IRQ 7
[    2.113728] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    2.120891] serial 0000:06:00.0: limiting MRRS to 256
[    2.126314] 0000:06:00.0: ttyS0 at I/O 0xc0 (irq = 7, base_baud = 115200) is a XR16850
[    2.134618] 0000:06:00.0: ttyS1 at I/O 0xc8 (irq = 7, base_baud = 115200) is a XR16850
[    2.143130] 1fe00000.serial: ttyS2 at MMIO 0x1fe00000 (irq = 1, base_baud = 7812500) is a 16550A
[    2.151946] printk: console [ttyS2] enabled
[    2.160255] printk: bootconsole [early0] disabled
[    2.170112] [drm] radeon kernel modesetting enabled.

However a write to the serial fails:
/ # echo "hello" >/dev/ttyS0
[ 9369.631915] serial 0000:06:00.0: LSR safety check engaged!
sh: write error: Input/output error

read from the serial, too:
/ # cat /dev/ttyS0
[ 9531.127623] serial 0000:06:00.0: LSR safety check engaged!
cat: read error: Input/output error

A dump_stack() in front of the "LSR safety check engaged!" shows the following backtrace:
[   40.891789] [<ffffffff8020e7d4>] show_stack+0x9c/0x130
[   40.896949] [<ffffffff80685944>] dump_stack+0xb4/0xf0
[   40.902021] [<ffffffff80743d30>] serial8250_do_startup+0x480/0x888
[   40.908216] [<ffffffff8073e07c>] uart_startup.part.19+0x12c/0x2c0
[   40.914321] [<ffffffff8073e27c>] uart_port_activate+0x6c/0xa8
[   40.920085] [<ffffffff807221b8>] tty_port_open+0xa0/0x128
[   40.925493] [<ffffffff8073a2ec>] uart_open+0x1c/0x30
[   40.930467] [<ffffffff80719220>] tty_open+0x118/0x500
[   40.935530] [<ffffffff80391e0c>] chrdev_open+0xc4/0x1e0
[   40.940767] [<ffffffff803865e8>] do_dentry_open+0x210/0x480
[   40.946353] [<ffffffff8039e7e8>] path_openat+0xb38/0xe50
[   40.951675] [<ffffffff8039fe00>] do_filp_open+0xe8/0x130
[   40.956996] [<ffffffff80386d8c>] do_sys_openat2+0x1fc/0x338
[   40.962579] [<ffffffff803884ac>] do_sys_open+0x5c/0x88
[   40.967728] [<ffffffff80214470>] syscall_common+0x34/0x58

/ # cat /proc/ioports
000000c0-000000c7 : serial
000000c8-000000cf : serial

/ # lspci
00:03.1 Class 0200: 0014:7a03
00:08.0 Class 0106: 0014:7a08
00:0d.0 Class 0604: 0014:7a19
00:10.0 Class 0480: 0014:7a16
00:04.2 Class 0c03: 0014:7a24
00:04.0 Class 0c03: 0014:7a04
00:07.0 Class 0403: 0014:7a07
00:0c.0 Class 0604: 0014:7a09
00:0f.0 Class 0880: 0014:7a0f
06:00.0 Class 0700: 1c00:3253 <-- WCH CH382L
00:03.0 Class 0200: 0014:7a03
00:06.0 Class 0300: 0014:7a06
00:0b.0 Class 0604: 0014:7a09
00:04.1 Class 0c03: 0014:7a14
00:09.0 Class 0604: 0014:7a19
00:0e.0 Class 0604: 0014:7a09
00:11.0 Class 0480: 0014:7a26
00:02.0 Class 0880: 0014:7a02
00:05.0 Class 0302: 0014:7a05
00:0a.0 Class 0604: 0014:7a09

I'm using Yang Jiaxun's kernel and pmon:

kernel:
  https://github.com/FlyGoat/linux
  branch: loogson/next-testing-2k
bootloader:
  https://github.com/FlyGoat/pmon-ls2k
  branch: master
and a simple rootfs:
  https://sourceforge.net/projects/loongsonpi2/files/source-extra/miniroot.tar.xz

For reference, the card work on a standard PC:
    [    0.701127] 0000:01:00.0: ttyS4 at I/O 0xe0c0 (irq = 16, base_baud = 115200) is a XR16850
    [    0.701295] 0000:01:00.0: ttyS5 at I/O 0xe0c8 (irq = 16, base_baud = 115200) is a XR16850

The relevant part of /proc/ioports:
0d00-ffff : PCI Bus 0000:00
  e000-efff : PCI Bus 0000:01
    e000-e0ff : 0000:01:00.0
      e0c0-e0c7 : serial
      e0c8-e0cf : serial


Regards,
Du Huanpeng


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: loongson ls2k1000: PCIe serial card WCH CH382L not working, maybe ioports problem
  2020-08-07  3:08 loongson ls2k1000: PCIe serial card WCH CH382L not working, maybe ioports problem Du Huanpeng
@ 2020-08-07  8:01 ` Jiaxun Yang
  2020-08-07  8:35   ` Marc Kleine-Budde
  0 siblings, 1 reply; 6+ messages in thread
From: Jiaxun Yang @ 2020-08-07  8:01 UTC (permalink / raw)
  To: Du Huanpeng, linux-mips; +Cc: mkl, zhangj, linux



在 2020/8/7 上午11:08, Du Huanpeng 写道:
> Hi all,
>
> I'm testing a PCIe card to two uarts (WCH CH382L compatible,
>           https://item.jd.com/48547850173.html) on a loongson ls2k1000 board.
>
> With the card inserted the kernel detects the two new uarts:
>
> [    2.060884] pci 0000:00:04.1: EHCI: unrecognized capability ff
> [    2.066721] pci 0000:00:04.1: EHCI: capability loop?
> [    2.066745] pci 0000:00:04.1: quirk_usb_early_handoff+0x0/0xa60 took 358764 usecs
> [    2.074542] pcieport 0000:00:09.0: PME: Signaling with IRQ 2
> [    2.080651] pcieport 0000:00:0a.0: PME: Signaling with IRQ 3
> [    2.086648] pcieport 0000:00:0b.0: PME: Signaling with IRQ 4
> [    2.092616] pcieport 0000:00:0c.0: PME: Signaling with IRQ 5
> [    2.098579] pcieport 0000:00:0d.0: PME: Signaling with IRQ 6
> [    2.104557] pcieport 0000:00:0e.0: PME: Signaling with IRQ 7
> [    2.113728] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
> [    2.120891] serial 0000:06:00.0: limiting MRRS to 256
> [    2.126314] 0000:06:00.0: ttyS0 at I/O 0xc0 (irq = 7, base_baud = 115200) is a XR16850
> [    2.134618] 0000:06:00.0: ttyS1 at I/O 0xc8 (irq = 7, base_baud = 115200) is a XR16850
> [    2.143130] 1fe00000.serial: ttyS2 at MMIO 0x1fe00000 (irq = 1, base_baud = 7812500) is a 16550A
> [    2.151946] printk: console [ttyS2] enabled
> [    2.160255] printk: bootconsole [early0] disabled
> [    2.170112] [drm] radeon kernel modesetting enabled.
>
> However a write to the serial fails:
> / # echo "hello" >/dev/ttyS0
> [ 9369.631915] serial 0000:06:00.0: LSR safety check engaged!
> sh: write error: Input/output error

I assume you're using my out-of-tree fork to support LS2K.
I messed with Logic PIO in that fork.
I'll fix it in mainline, sorry for the issue...


>
> read from the serial, too:
> / # cat /dev/ttyS0
> [ 9531.127623] serial 0000:06:00.0: LSR safety check engaged!
> cat: read error: Input/output error
>
> A dump_stack() in front of the "LSR safety check engaged!" shows the following backtrace:
> [   40.891789] [<ffffffff8020e7d4>] show_stack+0x9c/0x130
> [   40.896949] [<ffffffff80685944>] dump_stack+0xb4/0xf0
> [   40.902021] [<ffffffff80743d30>] serial8250_do_startup+0x480/0x888
> [   40.908216] [<ffffffff8073e07c>] uart_startup.part.19+0x12c/0x2c0
> [   40.914321] [<ffffffff8073e27c>] uart_port_activate+0x6c/0xa8
> [   40.920085] [<ffffffff807221b8>] tty_port_open+0xa0/0x128
> [   40.925493] [<ffffffff8073a2ec>] uart_open+0x1c/0x30
> [   40.930467] [<ffffffff80719220>] tty_open+0x118/0x500
> [   40.935530] [<ffffffff80391e0c>] chrdev_open+0xc4/0x1e0
> [   40.940767] [<ffffffff803865e8>] do_dentry_open+0x210/0x480
> [   40.946353] [<ffffffff8039e7e8>] path_openat+0xb38/0xe50
> [   40.951675] [<ffffffff8039fe00>] do_filp_open+0xe8/0x130
> [   40.956996] [<ffffffff80386d8c>] do_sys_openat2+0x1fc/0x338
> [   40.962579] [<ffffffff803884ac>] do_sys_open+0x5c/0x88
> [   40.967728] [<ffffffff80214470>] syscall_common+0x34/0x58
>
> / # cat /proc/ioports
> 000000c0-000000c7 : serial
> 000000c8-000000cf : serial
>
> / # lspci
> 00:03.1 Class 0200: 0014:7a03
> 00:08.0 Class 0106: 0014:7a08
> 00:0d.0 Class 0604: 0014:7a19
> 00:10.0 Class 0480: 0014:7a16
> 00:04.2 Class 0c03: 0014:7a24
> 00:04.0 Class 0c03: 0014:7a04
> 00:07.0 Class 0403: 0014:7a07
> 00:0c.0 Class 0604: 0014:7a09
> 00:0f.0 Class 0880: 0014:7a0f
> 06:00.0 Class 0700: 1c00:3253 <-- WCH CH382L
> 00:03.0 Class 0200: 0014:7a03
> 00:06.0 Class 0300: 0014:7a06
> 00:0b.0 Class 0604: 0014:7a09
> 00:04.1 Class 0c03: 0014:7a14
> 00:09.0 Class 0604: 0014:7a19
> 00:0e.0 Class 0604: 0014:7a09
> 00:11.0 Class 0480: 0014:7a26
> 00:02.0 Class 0880: 0014:7a02
> 00:05.0 Class 0302: 0014:7a05
> 00:0a.0 Class 0604: 0014:7a09
>
> I'm using Yang Jiaxun's kernel and pmon:
>
> kernel:
>    https://github.com/FlyGoat/linux
>    branch: loogson/next-testing-2k
> bootloader:
>    https://github.com/FlyGoat/pmon-ls2k
>    branch: master

Ya, that's my out of tree fork.....


Thanks.

- Jiaxun

> and a simple rootfs:
>    https://sourceforge.net/projects/loongsonpi2/files/source-extra/miniroot.tar.xz
>
> For reference, the card work on a standard PC:
>      [    0.701127] 0000:01:00.0: ttyS4 at I/O 0xe0c0 (irq = 16, base_baud = 115200) is a XR16850
>      [    0.701295] 0000:01:00.0: ttyS5 at I/O 0xe0c8 (irq = 16, base_baud = 115200) is a XR16850
>
> The relevant part of /proc/ioports:
> 0d00-ffff : PCI Bus 0000:00
>    e000-efff : PCI Bus 0000:01
>      e000-e0ff : 0000:01:00.0
>        e0c0-e0c7 : serial
>        e0c8-e0cf : serial
>
>
> Regards,
> Du Huanpeng

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: loongson ls2k1000: PCIe serial card WCH CH382L not working, maybe ioports problem
  2020-08-07  8:01 ` Jiaxun Yang
@ 2020-08-07  8:35   ` Marc Kleine-Budde
  2020-08-07  9:39     ` Jiaxun Yang
  0 siblings, 1 reply; 6+ messages in thread
From: Marc Kleine-Budde @ 2020-08-07  8:35 UTC (permalink / raw)
  To: Jiaxun Yang, Du Huanpeng, linux-mips; +Cc: zhangj, linux


[-- Attachment #1.1: Type: text/plain, Size: 1875 bytes --]

On 8/7/20 10:01 AM, Jiaxun Yang wrote:
>> I'm testing a PCIe card to two uarts (WCH CH382L compatible,
>>           https://item.jd.com/48547850173.html) on a loongson ls2k1000 board.
>>
>> With the card inserted the kernel detects the two new uarts:
>>
>> [    2.060884] pci 0000:00:04.1: EHCI: unrecognized capability ff
>> [    2.066721] pci 0000:00:04.1: EHCI: capability loop?
>> [    2.066745] pci 0000:00:04.1: quirk_usb_early_handoff+0x0/0xa60 took 358764 usecs
>> [    2.074542] pcieport 0000:00:09.0: PME: Signaling with IRQ 2
>> [    2.080651] pcieport 0000:00:0a.0: PME: Signaling with IRQ 3
>> [    2.086648] pcieport 0000:00:0b.0: PME: Signaling with IRQ 4
>> [    2.092616] pcieport 0000:00:0c.0: PME: Signaling with IRQ 5
>> [    2.098579] pcieport 0000:00:0d.0: PME: Signaling with IRQ 6
>> [    2.104557] pcieport 0000:00:0e.0: PME: Signaling with IRQ 7
>> [    2.113728] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
>> [    2.120891] serial 0000:06:00.0: limiting MRRS to 256
>> [    2.126314] 0000:06:00.0: ttyS0 at I/O 0xc0 (irq = 7, base_baud = 115200) is a XR16850
>> [    2.134618] 0000:06:00.0: ttyS1 at I/O 0xc8 (irq = 7, base_baud = 115200) is a XR16850
>> [    2.143130] 1fe00000.serial: ttyS2 at MMIO 0x1fe00000 (irq = 1, base_baud = 7812500) is a 16550A
>> [    2.151946] printk: console [ttyS2] enabled
>> [    2.160255] printk: bootconsole [early0] disabled
>> [    2.170112] [drm] radeon kernel modesetting enabled.
>>
>> However a write to the serial fails:
>> / # echo "hello" >/dev/ttyS0
>> [ 9369.631915] serial 0000:06:00.0: LSR safety check engaged!
>> sh: write error: Input/output error
> 
> I assume you're using my out-of-tree fork to support LS2K.
> I messed with Logic PIO in that fork.
> I'll fix it in mainline, sorry for the issue...

Do you have a tree that we can test?

Marc


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: loongson ls2k1000: PCIe serial card WCH CH382L not working, maybe ioports problem
  2020-08-07  8:35   ` Marc Kleine-Budde
@ 2020-08-07  9:39     ` Jiaxun Yang
  2020-08-07  9:43       ` Marc Kleine-Budde
  0 siblings, 1 reply; 6+ messages in thread
From: Jiaxun Yang @ 2020-08-07  9:39 UTC (permalink / raw)
  To: Marc Kleine-Budde, Du Huanpeng, linux-mips; +Cc: zhangj, linux



在 2020/8/7 下午4:35, Marc Kleine-Budde 写道:
> On 8/7/20 10:01 AM, Jiaxun Yang wrote:
>>> I'm testing a PCIe card to two uarts (WCH CH382L compatible,
>>>            https://item.jd.com/48547850173.html) on a loongson ls2k1000 board.
>>>
>>> With the card inserted the kernel detects the two new uarts:
>>>
>>> [    2.060884] pci 0000:00:04.1: EHCI: unrecognized capability ff
>>> [    2.066721] pci 0000:00:04.1: EHCI: capability loop?
>>> [    2.066745] pci 0000:00:04.1: quirk_usb_early_handoff+0x0/0xa60 took 358764 usecs
>>> [    2.074542] pcieport 0000:00:09.0: PME: Signaling with IRQ 2
>>> [    2.080651] pcieport 0000:00:0a.0: PME: Signaling with IRQ 3
>>> [    2.086648] pcieport 0000:00:0b.0: PME: Signaling with IRQ 4
>>> [    2.092616] pcieport 0000:00:0c.0: PME: Signaling with IRQ 5
>>> [    2.098579] pcieport 0000:00:0d.0: PME: Signaling with IRQ 6
>>> [    2.104557] pcieport 0000:00:0e.0: PME: Signaling with IRQ 7
>>> [    2.113728] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
>>> [    2.120891] serial 0000:06:00.0: limiting MRRS to 256
>>> [    2.126314] 0000:06:00.0: ttyS0 at I/O 0xc0 (irq = 7, base_baud = 115200) is a XR16850
>>> [    2.134618] 0000:06:00.0: ttyS1 at I/O 0xc8 (irq = 7, base_baud = 115200) is a XR16850
>>> [    2.143130] 1fe00000.serial: ttyS2 at MMIO 0x1fe00000 (irq = 1, base_baud = 7812500) is a 16550A
>>> [    2.151946] printk: console [ttyS2] enabled
>>> [    2.160255] printk: bootconsole [early0] disabled
>>> [    2.170112] [drm] radeon kernel modesetting enabled.
>>>
>>> However a write to the serial fails:
>>> / # echo "hello" >/dev/ttyS0
>>> [ 9369.631915] serial 0000:06:00.0: LSR safety check engaged!
>>> sh: write error: Input/output error
>> I assume you're using my out-of-tree fork to support LS2K.
>> I messed with Logic PIO in that fork.
>> I'll fix it in mainline, sorry for the issue...
> Do you have a tree that we can test?

I'm trying to trim my patches to meet mainline requirement but I was
really busy recent days.

I'll report when the tree is ready.

Thanks.

- Jiaxun
>
> Marc
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: loongson ls2k1000: PCIe serial card WCH CH382L not working, maybe ioports problem
  2020-08-07  9:39     ` Jiaxun Yang
@ 2020-08-07  9:43       ` Marc Kleine-Budde
  2020-08-12  6:34         ` Marc Kleine-Budde
  0 siblings, 1 reply; 6+ messages in thread
From: Marc Kleine-Budde @ 2020-08-07  9:43 UTC (permalink / raw)
  To: Jiaxun Yang, Du Huanpeng, linux-mips; +Cc: zhangj, linux


[-- Attachment #1.1: Type: text/plain, Size: 610 bytes --]

On 8/7/20 11:39 AM, Jiaxun Yang wrote:
>>>> However a write to the serial fails:
>>>> / # echo "hello" >/dev/ttyS0
>>>> [ 9369.631915] serial 0000:06:00.0: LSR safety check engaged!
>>>> sh: write error: Input/output error
>>> I assume you're using my out-of-tree fork to support LS2K.
>>> I messed with Logic PIO in that fork.
>>> I'll fix it in mainline, sorry for the issue...
>> Do you have a tree that we can test?
> 
> I'm trying to trim my patches to meet mainline requirement but I was
> really busy recent days.

No problem!

> I'll report when the tree is ready.

thanks,
Marc



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: loongson ls2k1000: PCIe serial card WCH CH382L not working, maybe ioports problem
  2020-08-07  9:43       ` Marc Kleine-Budde
@ 2020-08-12  6:34         ` Marc Kleine-Budde
  0 siblings, 0 replies; 6+ messages in thread
From: Marc Kleine-Budde @ 2020-08-12  6:34 UTC (permalink / raw)
  To: Jiaxun Yang, Du Huanpeng, linux-mips; +Cc: zhangj, linux


[-- Attachment #1.1: Type: text/plain, Size: 438 bytes --]

On 8/7/20 11:43 AM, Marc Kleine-Budde wrote:
>>>> I'll fix it in mainline, sorry for the issue...
>>> Do you have a tree that we can test?
>>
>> I'm trying to trim my patches to meet mainline requirement but I was
>> really busy recent days.
> 
>> I'll report when the tree is ready.

The card is properly detected and works with this branch:

c48bd28cf6aa MIPS: Loongson64: Process ISA Node in DeviceTree

regards,
Marc


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-08-12  6:35 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-07  3:08 loongson ls2k1000: PCIe serial card WCH CH382L not working, maybe ioports problem Du Huanpeng
2020-08-07  8:01 ` Jiaxun Yang
2020-08-07  8:35   ` Marc Kleine-Budde
2020-08-07  9:39     ` Jiaxun Yang
2020-08-07  9:43       ` Marc Kleine-Budde
2020-08-12  6:34         ` Marc Kleine-Budde

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).