Jump to content
Форум по продукции MOXA

Recommended Posts

Добрый день!

 

При попытке _открыть_ (т.е. syscall 'open') /dev/mxupcie (утилита msdiag)

(драйвер v1.15.27_build_13093015, http://mtsc.moxa.com:8888/Software/ha/msb/SmartioIndustio/Driver/Linux/)

для Linux 3.9.9 получаем kernel panic:

 

...

Oct 9 15:43:52 storekeeper kernel: [ 2.940783] MOXA Smartio/Industio family driver version 1.15.27

Oct 9 15:43:52 storekeeper kernel: [ 2.940795] Found MOXA CP-168EL-A series board(BusNo=6,DevNo=0)

Oct 9 15:43:52 storekeeper kernel: [ 2.940862] ttyMUE0 - ttyMUE7 max. baud rate = 921600 bps.

Oct 9 15:43:52 storekeeper kernel: [ 2.940909] Found MOXA CP-168EL-A series board(BusNo=7,DevNo=0)

Oct 9 15:43:52 storekeeper kernel: [ 2.940945] ttyMUE8 - ttyMUE15 max. baud rate = 921600 bps.

...

Oct 9 15:47:23 storekeeper kernel: [ 214.308790] ------------[ cut here ]------------

Oct 9 15:47:23 storekeeper kernel: [ 214.308795] WARNING: at drivers/tty/tty_io.c:1425 tty_init_dev+0x1c0/0x1d0()

Oct 9 15:47:23 storekeeper kernel: [ 214.308796] Hardware name: System Product Name

Oct 9 15:47:23 storekeeper kernel: [ 214.308797] tty_init_dev: ttyMUE driver does not set tty->port. This will crash the kernel later. Fix the driver!

Oct 9 15:47:23 storekeeper kernel: [ 214.308798] Modules linked in: e100 mxupcie(O) e1000

Oct 9 15:47:23 storekeeper kernel: [ 214.308801] Pid: 4646, comm: msdiag Tainted: G O 3.9.9 #1

Oct 9 15:47:23 storekeeper kernel: [ 214.308802] Call Trace:

Oct 9 15:47:23 storekeeper kernel: [ 214.308806] [<ffffffff8103a4fa>] warn_slowpath_common+0x7a/0xc0

Oct 9 15:47:23 storekeeper kernel: [ 214.308808] [<ffffffff8103a5e1>] warn_slowpath_fmt+0x41/0x50

Oct 9 15:47:23 storekeeper kernel: [ 214.308809] [<ffffffff81406c10>] tty_init_dev+0x1c0/0x1d0

Oct 9 15:47:23 storekeeper kernel: [ 214.308811] [<ffffffff8140739b>] tty_open+0x15b/0x600

Oct 9 15:47:23 storekeeper kernel: [ 214.308813] [<ffffffff814c04f3>] ? kobj_lookup+0x103/0x160

Oct 9 15:47:23 storekeeper kernel: [ 214.308816] [<ffffffff8112bf20>] ? mount_fs+0x1b0/0x1b0

Oct 9 15:47:23 storekeeper kernel: [ 214.308817] [<ffffffff8112c898>] chrdev_open+0x98/0x180

Oct 9 15:47:23 storekeeper kernel: [ 214.308819] [<ffffffff8112c800>] ? cdev_put+0x30/0x30

Oct 9 15:47:23 storekeeper kernel: [ 214.308822] [<ffffffff8112655e>] do_dentry_open+0x21e/0x2a0

Oct 9 15:47:23 storekeeper kernel: [ 214.308824] [<ffffffff81126740>] finish_open+0x30/0x40

Oct 9 15:47:23 storekeeper kernel: [ 214.308826] [<ffffffff811360ae>] do_last+0x72e/0xe60

Oct 9 15:47:23 storekeeper kernel: [ 214.308827] [<ffffffff81133033>] ? inode_permission+0x13/0x50

Oct 9 15:47:23 storekeeper kernel: [ 214.308828] [<ffffffff811330d7>] ? link_path_walk+0x67/0x8e0

Oct 9 15:47:23 storekeeper kernel: [ 214.308830] [<ffffffff81136893>] path_openat+0xb3/0x4a0

Oct 9 15:47:23 storekeeper kernel: [ 214.308831] [<ffffffff811373dd>] do_filp_open+0x3d/0xa0

Oct 9 15:47:23 storekeeper kernel: [ 214.308833] [<ffffffff81143675>] ? __alloc_fd+0x45/0x120

Oct 9 15:47:23 storekeeper kernel: [ 214.308835] [<ffffffff81127a99>] do_sys_open+0xf9/0x1e0

Oct 9 15:47:23 storekeeper kernel: [ 214.308836] [<ffffffff81127b9c>] sys_open+0x1c/0x20

Oct 9 15:47:23 storekeeper kernel: [ 214.308839] [<ffffffff817b7512>] system_call_fastpath+0x16/0x1b

Oct 9 15:47:23 storekeeper kernel: [ 214.308840] ---[ end trace a73eb7c35b7ee2de ]---

Oct 9 15:47:23 storekeeper kernel: [ 214.308842] BUG: unable to handle kernel NULL pointer dereference at 0000000000000050

Oct 9 15:47:23 storekeeper kernel: [ 214.308871] IP: [<ffffffff81406ae3>] tty_init_dev+0x93/0x1d0

Oct 9 15:47:23 storekeeper kernel: [ 214.308889] PGD 40a9c4067 PUD 40c031067 PMD 0

Oct 9 15:47:23 storekeeper kernel: [ 214.308912] Oops: 0002 [#1] SMP

Oct 9 15:47:23 storekeeper kernel: [ 214.308928] Modules linked in: e100 mxupcie(O) e1000

Oct 9 15:47:23 storekeeper kernel: [ 214.308951] CPU 3

Oct 9 15:47:23 storekeeper kernel: [ 214.308959] Pid: 4646, comm: msdiag Tainted: G W O 3.9.9 #1 System manufacturer System Product Name/P8H77-V LE

Oct 9 15:47:23 storekeeper kernel: [ 214.308991] RIP: 0010:[<ffffffff81406ae3>] [<ffffffff81406ae3>] tty_init_dev+0x93/0x1d0

Oct 9 15:47:23 storekeeper kernel: [ 214.309016] RSP: 0018:ffff88040db23b78 EFLAGS: 00010296

Oct 9 15:47:23 storekeeper kernel: [ 214.309032] RAX: 0000000000000000 RBX: ffff880409bab000 RCX: 0000000000000006

Oct 9 15:47:23 storekeeper kernel: [ 214.309051] RDX: 0000000000000007 RSI: 0000000000000000 RDI: 0000000000000009

Oct 9 15:47:23 storekeeper kernel: [ 214.309071] RBP: ffff88040db23ba8 R08: 000000000000000a R09: 0000000000000000

Oct 9 15:47:23 storekeeper kernel: [ 214.309091] R10: 00000000000003c0 R11: 00000000000003bf R12: 0000000000000020

Oct 9 15:47:23 storekeeper kernel: [ 214.309111] R13: ffff8804097b8000 R14: 0000000001f00020 R15: 0000000000008002

Oct 9 15:47:23 storekeeper kernel: [ 214.309132] FS: 00007fb5564af700(0000) GS:ffff88041fac0000(0000) knlGS:0000000000000000

Oct 9 15:47:23 storekeeper kernel: [ 214.309158] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033

Oct 9 15:47:23 storekeeper kernel: [ 214.309175] CR2: 0000000000000050 CR3: 000000040b4fa000 CR4: 00000000001407e0

Oct 9 15:47:23 storekeeper kernel: [ 214.309195] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000

Oct 9 15:47:23 storekeeper kernel: [ 214.309215] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400

Oct 9 15:47:23 storekeeper kernel: [ 214.309235] Process msdiag (pid: 4646, threadinfo ffff88040db22000, task ffff88040ad94ba0)

Oct 9 15:47:23 storekeeper kernel: [ 214.309258] Stack:

Oct 9 15:47:23 storekeeper kernel: [ 214.309265] 0000000001f00020 0000000000008002 ffff88040db23ba8 ffff88040c1e8f00

Oct 9 15:47:23 storekeeper kernel: [ 214.309293] 0000000000000000 ffff8804097b8000 ffff88040db23c28 ffffffff8140739b

Oct 9 15:47:23 storekeeper kernel: [ 214.309321] ffff88040db23c28 ffffffff814c04f3 ffff88040c1e8f00 ffff880408dbaad8

Oct 9 15:47:23 storekeeper kernel: [ 214.309349] Call Trace:

Oct 9 15:47:23 storekeeper kernel: [ 214.309359] [<ffffffff8140739b>] tty_open+0x15b/0x600

Oct 9 15:47:23 storekeeper kernel: [ 214.309375] [<ffffffff814c04f3>] ? kobj_lookup+0x103/0x160

Oct 9 15:47:23 storekeeper kernel: [ 214.309392] [<ffffffff8112bf20>] ? mount_fs+0x1b0/0x1b0

Oct 9 15:47:23 storekeeper kernel: [ 214.309408] [<ffffffff8112c898>] chrdev_open+0x98/0x180

Oct 9 15:47:23 storekeeper kernel: [ 214.309425] [<ffffffff8112c800>] ? cdev_put+0x30/0x30

Oct 9 15:47:23 storekeeper kernel: [ 214.309441] [<ffffffff8112655e>] do_dentry_open+0x21e/0x2a0

Oct 9 15:47:23 storekeeper kernel: [ 214.309459] [<ffffffff81126740>] finish_open+0x30/0x40

Oct 9 15:47:23 storekeeper kernel: [ 214.309475] [<ffffffff811360ae>] do_last+0x72e/0xe60

Oct 9 15:47:23 storekeeper kernel: [ 214.309490] [<ffffffff81133033>] ? inode_permission+0x13/0x50

Oct 9 15:47:23 storekeeper kernel: [ 214.309508] [<ffffffff811330d7>] ? link_path_walk+0x67/0x8e0

Oct 9 15:47:23 storekeeper kernel: [ 214.309525] [<ffffffff81136893>] path_openat+0xb3/0x4a0

Oct 9 15:47:23 storekeeper kernel: [ 214.309541] [<ffffffff811373dd>] do_filp_open+0x3d/0xa0

Oct 9 15:47:23 storekeeper kernel: [ 214.309558] [<ffffffff81143675>] ? __alloc_fd+0x45/0x120

Oct 9 15:47:23 storekeeper kernel: [ 214.309574] [<ffffffff81127a99>] do_sys_open+0xf9/0x1e0

Oct 9 15:47:23 storekeeper kernel: [ 214.309590] [<ffffffff81127b9c>] sys_open+0x1c/0x20

Oct 9 15:47:23 storekeeper kernel: [ 214.309606] [<ffffffff817b7512>] system_call_fastpath+0x16/0x1b

Oct 9 15:47:23 storekeeper kernel: [ 214.309624] Code: 8b 85 a0 00 00 00 48 89 de 4c 89 ef 48 8b 40 08 48 85 c0 74 6b ff d0 85 c0 78 75 48 8b 83 48 02 00 00 48 85 c0 0f 84 9d 00 00 00 <48> 89 58 50 48 89 df 48 8b b3 88 01 00 00 e8 fa 7b 00 00 85 c0

Oct 9 15:47:23 storekeeper kernel: [ 214.309810] RIP [<ffffffff81406ae3>] tty_init_dev+0x93/0x1d0

Oct 9 15:47:23 storekeeper kernel: [ 214.309828] RSP <ffff88040db23b78>

Oct 9 15:47:23 storekeeper kernel: [ 214.309839] CR2: 0000000000000050

Oct 9 15:47:23 storekeeper kernel: [ 214.309867] ---[ end trace a73eb7c35b7ee2df ]---

 

 

lspci -v:

 

06:00.0 Serial controller: Moxa Technologies Co Ltd CP-168EL-A (8-port RS-232 PCI Express Serial Board) (prog-if 02 [16550])

Subsystem: Moxa Technologies Co Ltd CP-168EL-A (8-port RS-232 PCI Express Serial Board)

Flags: fast devsel, IRQ 18

I/O ports at c000

Memory at f7b00000 (32-bit, non-prefetchable)

I/O ports at c040

Capabilities: <access denied>

Kernel modules: mxupcie

 

07:00.0 Serial controller: Moxa Technologies Co Ltd CP-168EL-A (8-port RS-232 PCI Express Serial Board) (prog-if 02 [16550])

Subsystem: Moxa Technologies Co Ltd CP-168EL-A (8-port RS-232 PCI Express Serial Board)

Flags: fast devsel, IRQ 19

I/O ports at b000

Memory at f7a00000 (32-bit, non-prefetchable)

I/O ports at b040

Capabilities: <access denied>

Kernel modules: mxupcie

Link to comment

Сервисный порт, видимо, должен был Пушкин А. С. инициализировать.

 

diff -ur mxser/driver/mxupcie.c mxser/driver/mxupcie.c
--- mxser/driver/mxupcie.c	 2013-09-30 11:13:41.189782188 +0400
+++ mxser/driver/mxupcie.c	 2013-10-09 17:21:52.814173653 +0400
@@ -343,6 +343,10 @@
static int mxupcie_set_baud_method[MXUPCIE_PORTS+1];
static spinlock_t			 gm_lock;
+#if (LINUX_VERSION_CODE >= VERSION_CODE(3,7,0))
+static struct tty_port		 service_port;
+#endif
+
/*
* This is used to figure out the divisor speeds and the timeouts
*/
@@ -900,6 +904,8 @@
				 tty_port_link_device(&mxvar_table[port_idx].ttyPort, mxvar_sdriver, port_idx);
		 }
 }
+	 tty_port_init(&service_port);
+	 tty_port_link_device(&service_port, mxvar_sdriver, MXUPCIE_PORTS);
#endif
	 ret1 = 0;
diff -ur mxser/utility/diag/diag.c mxser/utility/diag/diag.c
--- mxser/utility/diag/diag.c 2013-10-09 13:05:47.338310042 +0400
+++ mxser/utility/diag/diag.c 2013-10-09 18:35:34.931325239 +0400
@@ -106,12 +106,11 @@
no_pci:
-	 if ((pcie_fd = open("/dev/mxupcie",O_RDWR)) < 0) {
+	 if ((pcie_fd = open("/dev/ttyMUE32",O_RDWR)) < 0) {
-			 //printf("Open PCIe /dev/mxupcie fail\n");
+			 //printf("Open PCIe /dev/ttyMUE32 fail\n");
		 printf("Please run msmknod and load driver first or there are no Card in the system.\n");
		 retpcie = -1;
		 goto no_pcie;
 }
 if (ioctl(pcie_fd, MOXA_GET_MAJOR, &pcie_major ) < 0) {
		 printf("Can't get PCIe tty major number.\n");
		 close(pcie_fd);

Link to comment

Здравствуйте!

 

Спасибо большое за патч, перешлём его производителю. На указанном Вами ресурсе выкладываются бета-версии драйверов, поэтому там могут быть и ошибки.

 

Можете ли указать, почему Вам потребовалось собирать драйвер самому? Драйверы для плат Moxa уже входят в ядро в виде модуля mxser и должны определяться "из коробки". Может быть, в Вашем дистрибутиве есть пакет с дополнительными драйверами?

Link to comment

Добрый день!

 

Ну, не очень-то они и беты... Правда, часть кода написана несколько криво и при царе Горохе, так что давно перестала соответствовать современным реалиям, ну да бог с ним.

 

Специальный hint для "последователей": бОльшую часть 'утилит' запускать нельзя ни в коем случае! Читать их код совершенно необходимо, но запускать не надо!

 

То, что присутствует в vanilla Linux kernel --- базируется на драйверах Moxa v1.9 2008--2009 года издания (драйвера от 2013-09-30 --- v1.15.27).

Там в помине нет поддержки PCIe плат, в частности CP-168EL-A (т.е. mxupcie там нет). Кроме того, Грег настолько реорганизовал код, относящийся к Moxa, что для того, чтобы сравнить изменения, надо садиться дня на три и плотно разбираться. Почистили бы вы свой код да пропихали бы его в vanilla, а?

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...