Bug 195217 - VMAP_STACK - siocsifflags - irda break (MCS7780)
Summary: VMAP_STACK - siocsifflags - irda break (MCS7780)
Status: NEW
Alias: None
Product: Drivers
Classification: Unclassified
Component: USB (show other bugs)
Hardware: All Linux
: P1 high
Assignee: Stephen Hemminger
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-04-01 22:02 UTC by Jerome
Modified: 2017-08-29 20:15 UTC (History)
1 user (show)

See Also:
Kernel Version: 4.9.0 --> 4.11.0
Subsystem:
Regression: No
Bisected commit-id:


Attachments
Patch to fix mcs7780 initialization (2.64 KB, patch)
2017-07-22 15:25 UTC, Thomas Jarosch
Details | Diff

Description Jerome 2017-04-01 22:02:08 UTC
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
Comment 1 Jerome 2017-04-02 10:57:00 UTC
________________________________________________
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]
Comment 2 Jerome 2017-05-04 12:16:15 UTC
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.
Comment 3 Jerome 2017-05-04 14:58:24 UTC
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
Comment 4 Thomas Jarosch 2017-07-22 15:25:00 UTC
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.
Comment 5 Thomas Jarosch 2017-08-29 20:15:46 UTC
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 :)

Note You need to log in before you can comment on or make changes to this bug.