multiport serial cards not working under 4.14 (was OK in 4.4)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello dear linux-serial users and developers..

I'd like to ask for help / consultation regarding following problem.

we're using  plenty of Lenovo desktops (various types) equipped with
(various models) of Brainboxes multiport cards.

With 4.4.x kernels, the cards work pretty fine using just builtin 8250
support and being set by setserial according to lspci output.

here's lspci output for 4.4.52:

02:00.0 Multiport serial controller: Brain Boxes Device 4100 (rev 02)
        Subsystem: Brain Boxes Device 0443
        Flags: fast devsel, IRQ 18
        Memory at f7d02000 (32-bit, non-prefetchable) [size=128]
        I/O ports at e000 [size=128]
        I/O ports at e080 [size=64]
        I/O ports at e0c0 [size=16]
        Memory at f7d01000 (32-bit, non-prefetchable) [size=128]
        Memory at f7d00000 (32-bit, non-prefetchable) [size=128]
        Capabilities: [50] MSI: Enable- Count=1/4 Maskable- 64bit+
        Capabilities: [78] Power Management version 3
        Capabilities: [80] Express Legacy Endpoint, MSI 01
        Capabilities: [100] Virtual Channel
        Capabilities: [800] Advanced Error Reporting

and commands to setup ports:
/bin/setserial /dev/ttyS2 port 0xE080 irq 18 baud_base 921600 spd_normal skip_test autoconfig
/bin/setserial /dev/ttyS3 port 0xE088 irq 18 baud_base 921600 spd_normal skip_test autoconfig
/bin/setserial /dev/ttyS4 port 0xE090 irq 18 baud_base 921600 spd_normal skip_test autoconfig
/bin/setserial /dev/ttyS5 port 0xE098 irq 18 baud_base 921600 spd_normal skip_test autoconfig
/bin/setserial /dev/ttyS6 port 0xE0A0 irq 18 baud_base 921600 spd_normal skip_test autoconfig

but under 4.14.6 kernel, trying to setup ports spits out the backtrace and the card doesn't
work.

here's 4.14.6 lspci output:
02:00.0 Multiport serial controller: Brain Boxes Device 4100 (rev 02)
        Subsystem: Brain Boxes Device 0443
        Flags: bus master, fast devsel, latency 0, IRQ 11
        Memory at f7d02000 (32-bit, non-prefetchable) [size=128]
        I/O ports at e000 [size=128]
        I/O ports at e080 [size=64]
        I/O ports at e0c0 [size=16]
        Memory at f7d01000 (32-bit, non-prefetchable) [size=128]
        Memory at f7d00000 (32-bit, non-prefetchable) [size=128]
        Capabilities: [50] MSI: Enable- Count=1/4 Maskable- 64bit+
        Capabilities: [78] Power Management version 3
        Capabilities: [80] Express Legacy Endpoint, MSI 01
        Capabilities: [100] Virtual Channel
        Capabilities: [800] Advanced Error Reporting

(note two new flags and different assigned interrupt)

here are setserial commands:
/bin/setserial /dev/ttyS2 port 0xE080 irq 11 baud_base 921600 spd_normal skip_test autoconfig
/bin/setserial /dev/ttyS3 port 0xE088 irq 11 baud_base 921600 spd_normal skip_test autoconfig
/bin/setserial /dev/ttyS4 port 0xE090 irq 11 baud_base 921600 spd_normal skip_test autoconfig
/bin/setserial /dev/ttyS5 port 0xE098 irq 11 baud_base 921600 spd_normal skip_test autoconfig
/bin/setserial /dev/ttyS6 port 0xE0A0 irq 11 baud_base 921600 spd_normal skip_test autoconfig

after those, I get a bunch of following warnings:

[  167.479914] list_add double add: new=ffffffff82307f38, prev=ffffffff82307f38, next=ffffffff82307f38.
[  167.479922] ------------[ cut here ]------------
[  167.479926] WARNING: CPU: 0 PID: 1864 at lib/list_debug.c:31 __list_add_valid+0x54/0x80
[  167.479926] Modules linked in: binfmt_misc(E) crc32_pclmul(E) ghash_clmulni_intel(E) cryptd(E) snd_hda_codec_hdmi(E) kvm(E) snd_hda_codec_realtek(E) irqbypass(E) snd_hda_codec_generic(E) snd_hda_intel(E) coretemp(E) snd_hda_codec(E) crct10dif_pclmul(E) intel_powerclamp(E) snd_hda_core(E) crc32c_intel(E) snd_hwdep(E) snd_seq(E) iTCO_wdt(E) iTCO_vendor_support(E) snd_seq_device(E) ppdev(E) snd_pcm(E) wmi_bmof(E) r8169(E) x86_pkg_temp_thermal(E) pcspkr(E) snd_timer(E) lpc_ich(E) snd(E) sg(E) mfd_core(E) mii(E) soundcore(E) wmi(E) mei_me(E) parport(E) mei(E) shpchp(E) nfsd(E) auth_rpcgss(E) nfs_acl(E) lockd(E) grace(E) sunrpc(E) ip_tables(E) ext4(E) mbcache(E) jbd2(E) fscrypto(E) sr_mod(E) sd_mod(E) cdrom(E) pata_acpi(E) ata_generic(E) i915(E) i2c_algo_bit(E) ata_piix(E) drm_kms_helper(E) syscopyarea(E)
[  167.479951]  libata(E) sysfillrect(E) sysimgblt(E) fb_sys_fops(E) xhci_pci(E) xhci_hcd(E) drm(E) ehci_pci(E) ehci_hcd(E) i2c_core(E) video(E) dm_mirror(E) dm_region_hash(E) dm_log(E) dm_mod(E) dax(E) [last unloaded: parport_pc]
[  167.479958] CPU: 0 PID: 1864 Comm: setserial Tainted: G            E   4.14.6lb7.01 #1
[  167.479959] Hardware name: LENOVO 10B4S3CS00/ , BIOS FCKT78AUS 05/10/2016
[  167.479959] task: ffff8801190bd600 task.stack: ffffc90001d04000
[  167.479961] RIP: 0010:__list_add_valid+0x54/0x80
[  167.479961] RSP: 0018:ffffc90001d07c00 EFLAGS: 00010046
[  167.479962] RAX: 0000000000000058 RBX: ffffffff82307f38 RCX: 0000000000000000
[  167.479963] RDX: 0000000000000000 RSI: ffff88011fa0e038 RDI: ffff88011fa0e038
[  167.479963] RBP: ffffc90001d07c00 R08: 0000000000000000 R09: 00000000000002e6
[  167.479964] R10: 0000000000000004 R11: 00000000000002e5 R12: ffffffff82307d80
[  167.479964] R13: ffffffff82307f38 R14: ffffffff82307f38 R15: ffff880036dc2154
[  167.479965] FS:  00007fc7b6f43740(0000) GS:ffff88011fa00000(0000) knlGS:0000000000000000
[  167.479966] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  167.479966] CR2: 00007fc7b6bab9f0 CR3: 0000000036cf9005 CR4: 00000000000606f0
[  167.479967] Call Trace:
[  167.479971]  univ8250_setup_irq+0x17c/0x2a0
[  167.479973]  serial8250_do_startup+0x1aa/0x790
[  167.479974]  serial8250_startup+0x25/0x30
[  167.479976]  uart_startup.part.20+0x67/0x150
[  167.479978]  uart_ioctl+0xa15/0xab0
[  167.479980]  ? filename_lookup+0xef/0x190
[  167.479982]  tty_ioctl+0xef/0x8c0
[  167.479984]  ? cp_new_stat+0x152/0x180
[  167.479985]  do_vfs_ioctl+0xa7/0x5e0
[  167.479987]  SyS_ioctl+0x79/0x90
[  167.479989]  do_syscall_64+0x67/0x1b0
[  167.479991]  entry_SYSCALL64_slow_path+0x25/0x25
[  167.479993] RIP: 0033:0x7fc7b6bbdd77
[  167.479993] RSP: 002b:00007ffffccdbbc8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
[  167.479994] RAX: ffffffffffffffda RBX: 00007ffffccdd6bc RCX: 00007fc7b6bbdd77
[  167.479995] RDX: 00007ffffccdbc30 RSI: 000000000000541f RDI: 0000000000000003
[  167.479995] RBP: 00007ffffccdbe20 R08: 0000000000000000 R09: 000000000000000d
[  167.479996] R10: fffffffffffff8dd R11: 0000000000000246 R12: 00007ffffccdbe20
[  167.479996] R13: 0000000000000000 R14: 0000000000000003 R15: 00000000006043e0
[  167.479997] Code: 48 89 c1 48 c7 c7 e8 ff a7 81 31 c0 e8 89 4d d4 ff 0f ff 31 c0 5d c3 48 89 c1 48 89 fe 31 c0 48 c7 c7 88 00 a8 81 e8 6f 4d d4 ff <0f> ff 31 c0 5d c3 48 89 d1 48 c7 c7 38 00 a8 81 48 89 f2 48 89 
[  167.480013] ---[ end trace 05582a1448919f57 ]---
[  167.482347] list_add double add: new=ffffffff82308148, prev=ffffffff82307f38, next=ffffffff82308148.

in both cases, assigned interrupt is used only by the card, both kernels have almost identical
configs (and are built as x86_64 ones)

I was considering bisecting this, but different versions between 4.4 and 4.14 seem to have
different problems trying to setup the ports, including total hangs etc, so I thought I'd
better first ask for tips on how to proceed.

so I'd be very grateful for any recommendations

thanks a lot in advance!

BR

nik


-- 
-------------------------------------
Ing. Nikola CIPRICH
LinuxBox.cz, s.r.o.
28.rijna 168, 709 00 Ostrava

tel.:   +420 591 166 214
fax:    +420 596 621 273
mobil:  +420 777 093 799
www.linuxbox.cz

mobil servis: +420 737 238 656
email servis: servis@xxxxxxxxxxx
-------------------------------------
--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux