keyword : irda, MCS7780, networking, SIOCSIFFLAGS Unable to run irda0 with kernel greater than 4.8.17 "ifconfig irda0 up" works with kernel 4.8.17 but fails with kernel 4.9.X, 4.10.X and 4.11-rcX. (SIOCSIFFLAGS: Ressource temporairement non disponible) ________________________________________________ Debian Release: 9.0 Architecture: amd64 (x86_64) Kernel: Linux 4.10.8---2017-03-31.15h31mn (SMP w/8 CPU cores) root@myPC:/# lsusb | grep MCS7780 Bus 006 Device 002: ID 9710:7780 MosChip Semiconductor MCS7780 4Mbps Fast IrDA Adapter root@myPC:/# ifconfig irda0 irda0: flags=128<NOARP> mtu 2048 irda 00:00:00:00 txqueuelen 8 (IrLAP) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 root@myPC:/# ifconfig irda0 up SIOCSIFFLAGS: Ressource temporairement non disponible
________________________________________________ Debian Release: 9.0 Architecture: amd64 (x86_64) Kernel: Linux 4.11.0-rc4---2017-04-02.11h43mn (SMP w/8 CPU cores) When I plug in the MCS7780, dmesg says: [520.184860] usb 6-1: new full-speed USB device number 4 using uhci_hcd [520.338921] usb 6-1: New USB device found, idVendor=9710, idProduct=7780 [520.338924] usb 6-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [520.918411] ModemManager[1622]: segfault at 0 ip 00005571802ccc47 sp 00007fffa95a9920 error 4 in ModemManager[557180292000+122000]
Hi, If I compile the kernel by setting CONFIG_VMAP_STACK = N, "ifconfig irda0 up" is working correctly. (Tested with kernel 4.11.0) I suppose the problem comes either from the MCS7780 driver (use the stack not "in the rules"?) Or from VMAP_STACK. Can you help me better understand the problem? Regards, Jerome.
Here is what I get in kern.log when I execute "ifconfig irda0 up": [ 928.346732] ------------[ cut here ]------------ [ 928.346752] WARNING: CPU: 4 PID: 2018 at drivers/usb/core/hcd.c:1587 usb_hcd_map_urb_for_dma+0x377/0x560 [usbcore] [ 928.346753] transfer buffer not dma capable [ 928.346754] Modules linked in: nft_meta nf_conntrack_ipv6 nf_defrag_ipv6 nf_conntrack_ipv4 nf_defrag_ipv4 nft_ct nf_conntrack libcrc32c nf_tables_inet nf_tables_ipv6 nf_tables_ipv4 nf_tables nfnetlink fuse snd_hda_codec_hdmi nvidia_drm(O) nvidia_modeset(PO) nvidia(PO) iTCO_wdt iTCO_vendor_support mxm_wmi drm_kms_helper intel_powerclamp snd_hda_codec_via syscopyarea evdev joydev snd_hda_codec_generic sysfillrect sysimgblt coretemp pcspkr m cs7780 sg fb_sys_fops snd_hda_intel drm snd_hda_codec blackmagic_io(PO) snd_hwdep snd_hda_core snd_pcm lpc_ich snd_timer snd i7core_edac soundcore shpchp i5500_temp edac_core wmi acpi_cpufreq tpm_tis tpm_tis_core tpm button parport_pc pa rport ip_tables x_tables autofs4 hid_logitech_hidpp hid_logitech_dj hid_generic sd_mod usbhid hid i2c_i801 ahci xhci_pci libahci [ 928.346799] ehci_pci uhci_hcd xhci_hcd e1000e ehci_hcd libata ptp pps_core usbcore usb_common scsi_mod [ 928.346808] CPU: 4 PID: 2018 Comm: ifconfig Tainted: P W IO 4.11.0---2017-05-01.12h15mn #2 [ 928.346809] Hardware name: System manufacturer System Product Name/Rampage III GENE, BIOS 1003 09/20/2011 [ 928.346810] Call Trace: [ 928.348660] ? dump_stack+0x46/0x5e [ 928.348669] ? __warn+0xb4/0xd0 [ 928.348670] ? warn_slowpath_fmt+0x55/0x80 [ 928.348674] ? __intel_map_single+0x180/0x180 [ 928.348688] ? usb_hcd_map_urb_for_dma+0x377/0x560 [usbcore] [ 928.348699] ? usb_hcd_submit_urb+0x306/0xa70 [usbcore] [ 928.348701] ? ___slab_alloc+0x22d/0x4e0 [ 928.348702] ? __slab_free+0xa4/0x330 [ 928.348704] ? __slab_free+0xa4/0x330 [ 928.348714] ? usb_alloc_urb+0x10/0x40 [usbcore] [ 928.348725] ? usb_start_wait_urb+0x60/0x160 [usbcore] [ 928.348726] ? __kmalloc+0x107/0x150 [ 928.348737] ? usb_control_msg+0xd2/0x120 [usbcore] [ 928.348740] ? mcs_get_reg+0x2d/0x40 [mcs7780] [ 928.348743] ? mcs_net_open+0xa6/0x5a0 [mcs7780] [ 928.348745] ? notifier_call_chain+0x40/0x60 [ 928.348748] ? __dev_open+0xbd/0x130 [ 928.348750] ? __dev_change_flags+0x91/0x150 [ 928.348752] ? dev_change_flags+0x1e/0x60 [ 928.348755] ? devinet_ioctl+0x5ec/0x6b0 [ 928.348757] ? do_wp_page+0x138/0x490 [ 928.348760] ? sock_do_ioctl+0x1b/0x40 [ 928.348762] ? sock_do_ioctl+0x1b/0x40 [ 928.348763] ? sock_ioctl+0x1e8/0x2b0 [ 928.348766] ? do_vfs_ioctl+0x9a/0x5e0 [ 928.348768] ? handle_mm_fault+0xc4/0x200 [ 928.348770] ? SyS_ioctl+0x36/0x70 [ 928.348772] ? entry_SYSCALL_64_fastpath+0x17/0x98 [ 928.348785] ---[ end trace 2396b535f9fdd528 ]--- [ 928.348792] Basic transceiver setup error
Created attachment 257639 [details] Patch to fix mcs7780 initialization Here's a patch to fix mcs7780 initialization on kernel 4.9+. Tested with transferring data from a Polar watch. The patch has also been sent upstream via email. It might change in the final version after the maintainer review, though there's not much in there that can go wrong.
The fix went upstream and is also part of -stable, f.e. in 4.12.6 Confirmed the fix is working on kernel 4.12.8 in Fedora 25. -> issue resolved :)