On 11/23/17 00:32, Jens A. Griepentrog wrote:
On 11/22/17 22:17, Jens A. Griepentrog wrote:
On 11/22/17 15:37, Jens A. Griepentrog wrote:
Dear Misc Listeners,
After the installation of a Logilink PC0017 4x serial puc(4) addon
card, my system initially hung at "setting tty flags" at boot.
After a reboot in single-user mode, from now on the hang-ups are
gone away also in multi-user mode but it seems to me that only two
of the four additional serial ports are configured. This will be no
drama since, in fact, I only need two additional serial ports.
I have to correct myself, the hangups occur again from time to time
when booting in multi-user mode and disappear after some intermediate
reboots in single-user mode. I will disassemble that addon card soon.
With best regards,
Jens
The system configures the chip on my Logilink PC0017 card (with four
serial ports) as "NetMos Nm9865".
Following /src/sys/dev/pci/pucdata.c it expects six serial ports
...
/* NetMos 6S PCI 16C650 : 6S
* Shows up as three PCI devices, two with a single serial
* port and one with four serial ports (on a special ISA
* extender chip).
*/
{ /* "NetMos NM9865 6 UART: 1 UART" */
{ PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9865, 0xa000, 0x1000 },
{ 0xffff, 0xffff, 0xffff, 0xffff },
{
{ PUC_COM_POW2(0), 0x10, 0x0000 },
},
},
{ /* "NetMos NM9865 6 UART: 4 UART ISA" */
{ PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9865, 0xa000, 0x3004 },
{ 0xffff, 0xffff, 0xffff, 0xffff },
{
{ PUC_COM_POW2(0), 0x10, 0x0000 },
{ PUC_COM_POW2(0), 0x14, 0x0000 },
{ PUC_COM_POW2(0), 0x18, 0x0000 },
{ PUC_COM_POW2(0), 0x1c, 0x0000 },
},
},
...
but finds only two of four
...
puc0 at pci7 dev 2 function 0 "NetMos Nm9865" rev 0x00: ports: 1 com
com4 at puc0 port 0 apic 7 int 21: st16650, 32 byte fifo
puc1 at pci7 dev 2 function 1 "NetMos Nm9865" rev 0x00: ports: 1 com
com5 at puc1 port 0 apic 7 int 22: st16650, 32 byte fifo
"NetMos Nm9865" rev 0x00 at pci7 dev 2 function 2 not configured
...
and shows three PCI devices
...
7:2:0: NetMos Nm9865
0x0000: Vendor ID: 9710 Product ID: 9865
0x0004: Command: 0107 Status: 0290
0x0008: Class: 07 Subclass: 00 Interface: 02 Revision: 00
0x000c: BIST: 00 Header Type: 80 Latency Timer: 40 Cache Line
Size: 08
0x0010: BAR io addr: 0x0000ec00/0x0008
0x0014: BAR mem 32bit addr: 0xfbeff000/0x00001000
0x0018: BAR empty (00000000)
0x001c: BAR empty (00000000)
0x0020: BAR mem 32bit addr: 0xfbefe000/0x00001000
0x0024: BAR empty (00000000)
0x0028: Cardbus CIS: 00000000
0x002c: Subsystem Vendor ID: a000 Product ID: 1000
0x0030: Expansion ROM Base Address: 00000000
0x0038: 00000000
0x003c: Interrupt Pin: 01 Line: 0e Min Gnt: 00 Max Lat: 00
0x0048: Capability 0x01: Power Management
State: D0
7:2:1: NetMos Nm9865
0x0000: Vendor ID: 9710 Product ID: 9865
0x0004: Command: 0107 Status: 0290
0x0008: Class: 07 Subclass: 00 Interface: 02 Revision: 00
0x000c: BIST: 00 Header Type: 80 Latency Timer: 40 Cache Line
Size: 08
0x0010: BAR io addr: 0x0000e880/0x0008
0x0014: BAR mem 32bit addr: 0xfbefd000/0x00001000
0x0018: BAR empty (00000000)
0x001c: BAR empty (00000000)
0x0020: BAR mem 32bit addr: 0xfbefc000/0x00001000
0x0024: BAR empty (00000000)
0x0028: Cardbus CIS: 00000000
0x002c: Subsystem Vendor ID: a000 Product ID: 1000
0x0030: Expansion ROM Base Address: 00000000
0x0038: 00000000
0x003c: Interrupt Pin: 02 Line: 03 Min Gnt: 00 Max Lat: 00
0x0048: Capability 0x01: Power Management
State: D0
7:2:2: NetMos Nm9865
0x0000: Vendor ID: 9710 Product ID: 9865
0x0004: Command: 0107 Status: 0290
0x0008: Class: 07 Subclass: 80 Interface: 00 Revision: 00
0x000c: BIST: 00 Header Type: 80 Latency Timer: 40 Cache Line
Size: 08
0x0010: BAR io addr: 0x0000e080/0x0008
0x0014: BAR io addr: 0x0000e800/0x0008
0x0018: BAR io addr: 0x0000e480/0x0008
0x001c: BAR io addr: 0x0000e400/0x0008
0x0020: BAR mem 32bit addr: 0xfbefb000/0x00001000
0x0024: BAR empty (00000000)
0x0028: Cardbus CIS: 00000000
0x002c: Subsystem Vendor ID: a000 Product ID: 3002
0x0030: Expansion ROM Base Address: 00000000
0x0038: 00000000
0x003c: Interrupt Pin: 03 Line: 07 Min Gnt: 00 Max Lat: 00
0x0048: Capability 0x01: Power Management
State: D0
...
But the imprint on the chip of my Logilink PC0017 card (with four
serial ports) is "MosChip MCS9865" which would correspond to
...
/* "MosChip MCS9865 Quad Serial Port" */
{ PCI_VENDOR_MOSCHIP, PCI_PRODUCT_MOSCHIP_MCS9865, 0x1000, 0x4 },
{ 0xffff, 0xffff, 0xffff, 0xffff },
{
{ PUC_COM_POW2(0), 0x10, 0x0000 },
{ PUC_COM_POW2(0), 0x14, 0x0000 },
{ PUC_COM_POW2(0), 0x18, 0x0000 },
{ PUC_COM_POW2(0), 0x1c, 0x0000 },
},
...
In fact, the card was offered to me to have the MosChip MCS9865.
Since I do not believe that the system detects a wrong chip,
this means that the chip seems to have a wrong imprint ...
With best regards,
Jens
The imprint on the chip is MOSCHIP MCS9865IV-AA. Following the manual
I have tried to avoid the misconfiguration of my Logilink PC0017 card
by applying some experimental diff to handle the case of four instead
of six serial ports:
--- pucdata.c.orig Sun Apr 24 08:47:56 2016
+++ pucdata.c Thu Nov 23 22:52:28 2017
@@ -1531,26 +1531,24 @@
},
},
- /* NetMos 6S PCI 16C650 : 6S
+ /* NetMos 4S PCI 16C650 : 4S
* Shows up as three PCI devices, two with a single serial
- * port and one with four serial ports (on a special ISA
+ * port and one with two serial ports (on a special ISA
* extender chip).
*/
- { /* "NetMos NM9865 6 UART: 1 UART" */
+ { /* "NetMos NM9865 4 UART: 1 UART" */
{ PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9865, 0xa000,
0x1000 },
{ 0xffff, 0xffff, 0xffff,
0xffff },
{
{ PUC_COM_POW2(0), 0x10, 0x0000 },
},
},
- { /* "NetMos NM9865 6 UART: 4 UART ISA" */
- { PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9865, 0xa000,
0x3004 },
+ { /* "NetMos NM9865 4 UART: 2 UART ISA" */
+ { PCI_VENDOR_NETMOS, PCI_PRODUCT_NETMOS_NM9865, 0xa000,
0x3002 },
{ 0xffff, 0xffff, 0xffff,
0xffff },
{
{ PUC_COM_POW2(0), 0x10, 0x0000 },
{ PUC_COM_POW2(0), 0x14, 0x0000 },
- { PUC_COM_POW2(0), 0x18, 0x0000 },
- { PUC_COM_POW2(0), 0x1c, 0x0000 },
},
},
Indeed, after recompilation of the kernel and reboot now my four port
serial card seems to be configured successfully:
...
puc0 at pci7 dev 2 function 0 "NetMos Nm9865" rev 0x00: ports: 1 com
com4 at puc0 port 0 apic 7 int 21: st16650, 32 byte fifo
puc1 at pci7 dev 2 function 1 "NetMos Nm9865" rev 0x00: ports: 1 com
com5 at puc1 port 0 apic 7 int 22: st16650, 32 byte fifo
puc2 at pci7 dev 2 function 2 "NetMos Nm9865" rev 0x00: ports: 2 com
com6 at puc2 port 0 apic 7 int 23: ns16550a, 16 byte fifo
com7 at puc2 port 1 apic 7 int 23: ns16550a, 16 byte fifo
...
Nevertheless, the hangups at "setting tty flags" still occur from
time to time when booting in multi-user mode and disappear after
intermediate reboot(s) in single-user mode. This corresponds to
the situation which has been reported yesterday by Nick and Jan
even in the case of two port serial cards of similar type.
With best regards,
Jens