11 Mar, 2016

3 commits


01 Mar, 2016

1 commit


29 Feb, 2016

1 commit

  • T: Bus=01 Lev=01 Prnt=01 Port=04 Cnt=03 Dev#= 5 Spd=12 MxCh= 0
    D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
    P: Vendor=04ca ProdID=3014 Rev=00.02
    C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

    BugLink: https://bugs.launchpad.net/bugs/1546694

    Signed-off-by: Dmitry Tunin
    Signed-off-by: Marcel Holtmann
    Cc: stable@vger.kernel.org

    Dmitry Tunin
     

24 Feb, 2016

8 commits

  • This driver implements support for iBT2.1 Bluetooth controller embedded
    in the AG620 communication combo. The controller needs to be configured
    with bddata and can be patched with a binary patch file (pbn).
    These operations are performed in manufacturing mode.

    Signed-off-by: Loic Poulain
    Signed-off-by: Marcel Holtmann

    Loic Poulain
     
  • T: Bus=01 Lev=01 Prnt=01 Port=04 Cnt=02 Dev#= 3 Spd=12 MxCh= 0
    D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
    P: Vendor=0489 ProdID=e095 Rev=00.01
    C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

    This device requires ar3k/AthrBT_0x31010100.dfu and
    ar3k/ramps_0x31010100_40.dfu firmware files that are not in
    linux-firmware yet.

    BugLink: https://bugs.launchpad.net/bugs/1542944

    Signed-off-by: Dmitry Tunin
    Signed-off-by: Marcel Holtmann
    Cc: stable@vger.kernel.org

    Dmitry Tunin
     
  • If the call to request_firmware() fails in btbcm_setup_patchram(),
    the BCM chip will be operating with its default firmware.

    In this case, btbcm_setup_patchram() should not return immediately
    but instead should skip to btbcm_check_bdaddr() and quirk setup.

    Signed-off-by: Petri Gynther
    Signed-off-by: Marcel Holtmann

    Petri Gynther
     
  • Recent macbooks (early 2015) with BCM43241 use this ACPI ID. Add it to the
    list of supported devices.

    Reported-by: Leif Liddy
    Signed-off-by: Mika Westerberg
    Signed-off-by: Marcel Holtmann

    Mika Westerberg
     
  • This ACPI ID is used at least by HP for their Omni 10 5600eg tablet.

    Signed-off-by: J.J. Meijer
    Signed-off-by: Marcel Holtmann

    J.J. Meijer
     
  • T: Bus=03 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
    D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
    P: Vendor=13d3 ProdID=3395 Rev=00.01
    C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

    BugLink: https://bugs.launchpad.net/bugs/1542564

    Reported-and-tested-by: Christopher Simerly
    Signed-off-by: Dmitry Tunin
    Signed-off-by: Marcel Holtmann
    Cc: stable@vger.kernel.org

    Dmitry Tunin
     
  • A return value of the intel_wait_booting() function compared with
    a constant ETIMEDOUT instead of -ETIMEDOUT.

    Signed-off-by: Anton Protopopov
    Signed-off-by: Marcel Holtmann

    Anton Protopopov
     
  • Fixed a coding style issue. Added a blank link after declaration.

    Signed-off-by: Bhumika Goyal
    Signed-off-by: Marcel Holtmann

    Bhumika Goyal
     

06 Jan, 2016

2 commits

  • Usually when driver sends data to firmware it receives TX_DONE
    (DN_LD_HOST_INT_STATUS) interrupt from firmware right away.
    It's also observed that some times the fireware could delay
    sending DN_LD_HOST_INT_STATUS interrupt. If driver sends data to
    firmware during suspend processing and the TX_DONE interrupt is
    delayed, it may come back at wrong time when SDIO host driver is
    in the middle of suspending.

    Block any data from stack while suspending. Also skip sending
    data that are already in driver tx_queue.

    Don't purge the skb queue on suspend to avoid intermittent music
    after system resumes from S3.

    Signed-off-by: Chin-Ran Lo
    Signed-off-by: Amitkumar Karwar
    Signed-off-by: Marcel Holtmann

    Chin-Ran Lo
     
  • For gpio=0xff (wake up host through SDIO interface) case,
    gap=0xff means no delay (same as gap=0) for incoming data packet
    to be sent to host after host sleep is activated.
    Change it to the maximum delay to reduce the chance that RX
    interrupt could be delivered while host controller suspends.

    Signed-off-by: Chin-Ran Lo
    Signed-off-by: Amitkumar Karwar
    Signed-off-by: Marcel Holtmann

    Chin-Ran Lo
     

05 Jan, 2016

3 commits

  • It's been observed that when bluetooth driver fails to
    activate the firmware, below hung task warning dump is
    displayed after 120 seconds.

    [ 36.461022] Bluetooth: vendor=0x2df, device=0x912e, class=255, fn=2
    [ 56.512128] Bluetooth: FW failed to be active in time!
    [ 56.517264] Bluetooth: Downloading firmware failed!
    [ 240.252176] INFO: task kworker/3:2:129 blocked for more than 120 seconds.
    [ 240.258931] Not tainted 3.18.0 #254
    [ 240.262972] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    [ 240.270751] kworker/3:2 D ffffffc000205760 0 129 2 0x00000000
    [ 240.277825] Workqueue: events request_firmware_work_func
    [ 240.283134] Call trace:
    [ 240.285581] [] __switch_to+0x80/0x8c
    [ 240.290693] [] __schedule+0x540/0x7b8
    [ 240.295921] [] schedule+0x78/0x84
    [ 240.300764] [] __mmc_claim_host+0xe8/0x1c8
    [ 240.306395] [] sdio_claim_host+0x74/0x84
    [ 240.311840] [] 0xffffffbffc163d08
    [ 240.316685] [] 0xffffffbffc165104
    [ 240.321524] [] mwifiex_dnld_fw+0x98/0x110 [mwifiex]
    [ 240.327918] [] mwifiex_remove_card+0x2c4/0x5fc [mwifiex]
    [ 240.334741] [] request_firmware_work_func+0x44/0x80
    [ 240.341127] [] process_one_work+0x2ec/0x50c
    [ 240.346831] [] worker_thread+0x350/0x470
    [ 240.352272] [] kthread+0xf0/0xfc
    [ 240.357019] 2 locks held by kworker/3:2/129:
    [ 240.361248] #0: ("events"){.+.+.+}, at: [] process_one_work+0x1f8/0x50c
    [ 240.369562] #1: ((&fw_work->work)){+.+.+.}, at: [] process_one_work+0x1f8/0x50c
    [ 240.378589] task PC stack pid father
    [ 240.384501] kworker/1:1 D ffffffc000205760 0 40 2 0x00000000
    [ 240.391524] Workqueue: events mtk_atomic_work
    [ 240.395884] Call trace:
    [ 240.398317] [] __switch_to+0x80/0x8c
    [ 240.403448] [] lock_acquire+0x128/0x164
    [ 240.408821] kworker/3:2 D ffffffc000205760 0 129 2 0x00000000
    [ 240.415867] Workqueue: events request_firmware_work_func
    [ 240.421138] Call trace:
    [ 240.423589] [] __switch_to+0x80/0x8c
    [ 240.428688] [] __schedule+0x540/0x7b8
    [ 240.433886] [] schedule+0x78/0x84
    [ 240.438732] [] __mmc_claim_host+0xe8/0x1c8
    [ 240.444361] [] sdio_claim_host+0x74/0x84
    [ 240.449801] [] 0xffffffbffc163d08
    [ 240.454649] [] 0xffffffbffc165104
    [ 240.459486] [] mwifiex_dnld_fw+0x98/0x110 [mwifiex]
    [ 240.465882] [] mwifiex_remove_card+0x2c4/0x5fc [mwifiex]
    [ 240.472705] [] request_firmware_work_func+0x44/0x80
    [ 240.479090] [] process_one_work+0x2ec/0x50c
    [ 240.484794] [] worker_thread+0x350/0x470
    [ 240.490231] [] kthread+0xf0/0xfc

    This patch adds missing sdio_release_host() call so that wlan driver
    thread can claim sdio host.

    Fixes: 4863e4cc31d647e1 ("Bluetooth: btmrvl: release sdio bus after firmware is up")
    Signed-off-by: Chin-Ran Lo
    Signed-off-by: Amitkumar Karwar
    Signed-off-by: Marcel Holtmann

    Chin-Ran Lo
     
  • These are used at least by Acer with BCM43241.

    Signed-off-by: Heikki Krogerus
    Signed-off-by: Marcel Holtmann

    Heikki Krogerus
     
  • The IDs should all be for Broadcom BCM43241 module, and
    hci_bcm is now the proper driver for them. This removes one
    of two different ways of handling PM with the module.

    Cc: Johannes Berg
    Signed-off-by: Heikki Krogerus
    Signed-off-by: Marcel Holtmann

    Heikki Krogerus
     

22 Dec, 2015

3 commits


20 Dec, 2015

1 commit


11 Dec, 2015

1 commit


10 Dec, 2015

7 commits


20 Nov, 2015

3 commits


11 Nov, 2015

1 commit

  • Pull networking fixes from David Miller:

    1) Fix null deref in xt_TEE netfilter module, from Eric Dumazet.

    2) Several spots need to get to the original listner for SYN-ACK
    packets, most spots got this ok but some were not. Whilst covering
    the remaining cases, create a helper to do this. From Eric Dumazet.

    3) Missiing check of return value from alloc_netdev() in CAIF SPI code,
    from Rasmus Villemoes.

    4) Don't sleep while != TASK_RUNNING in macvtap, from Vlad Yasevich.

    5) Use after free in mvneta driver, from Justin Maggard.

    6) Fix race on dst->flags access in dst_release(), from Eric Dumazet.

    7) Add missing ZLIB_INFLATE dependency for new qed driver. From Arnd
    Bergmann.

    8) Fix multicast getsockopt deadlock, from WANG Cong.

    9) Fix deadlock in btusb, from Kuba Pawlak.

    10) Some ipv6_add_dev() failure paths were not cleaning up the SNMP6
    counter state. From Sabrina Dubroca.

    11) Fix packet_bind() race, which can cause lost notifications, from
    Francesco Ruggeri.

    12) Fix MAC restoration in qlcnic driver during bonding mode changes,
    from Jarod Wilson.

    13) Revert bridging forward delay change which broke libvirt and other
    userspace things, from Vlad Yasevich.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (65 commits)
    Revert "bridge: Allow forward delay to be cfgd when STP enabled"
    bpf_trace: Make dependent on PERF_EVENTS
    qed: select ZLIB_INFLATE
    net: fix a race in dst_release()
    net: mvneta: Fix memory use after free.
    net: Documentation: Fix default value tcp_limit_output_bytes
    macvtap: Resolve possible __might_sleep warning in macvtap_do_read()
    mvneta: add FIXED_PHY dependency
    net: caif: check return value of alloc_netdev
    net: hisilicon: NET_VENDOR_HISILICON should depend on HAS_DMA
    drivers: net: xgene: fix RGMII 10/100Mb mode
    netfilter: nft_meta: use skb_to_full_sk() helper
    net_sched: em_meta: use skb_to_full_sk() helper
    sched: cls_flow: use skb_to_full_sk() helper
    netfilter: xt_owner: use skb_to_full_sk() helper
    smack: use skb_to_full_sk() helper
    net: add skb_to_full_sk() helper and use it in selinux_netlbl_skbuff_setsid()
    bpf: doc: correct arch list for supported eBPF JIT
    dwc_eth_qos: Delete an unnecessary check before the function call "of_node_put"
    bonding: fix panic on non-ARPHRD_ETHER enslave failure
    ...

    Linus Torvalds
     

05 Nov, 2015

2 commits

  • Pull driver core updates from Greg KH:
    "Here's the "big" driver core updates for 4.4-rc1. Primarily a bunch
    of debugfs updates, with a smattering of minor driver core fixes and
    updates as well.

    All have been in linux-next for a long time"

    * tag 'driver-core-4.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
    debugfs: Add debugfs_create_ulong()
    of: to support binding numa node to specified device in devicetree
    debugfs: Add read-only/write-only bool file ops
    debugfs: Add read-only/write-only size_t file ops
    debugfs: Add read-only/write-only x64 file ops
    debugfs: Consolidate file mode checks in debugfs_create_*()
    Revert "mm: Check if section present during memory block (un)registering"
    driver-core: platform: Provide helpers for multi-driver modules
    mm: Check if section present during memory block (un)registering
    devres: fix a for loop bounds check
    CMA: fix CONFIG_CMA_SIZE_MBYTES overflow in 64bit
    base/platform: assert that dev_pm_domain callbacks are called unconditionally
    sysfs: correctly handle short reads on PREALLOC attrs.
    base: soc: siplify ida usage
    kobject: move EXPORT_SYMBOL() macros next to corresponding definitions
    kobject: explain what kobject's sd field is
    debugfs: document that debugfs_remove*() accepts NULL and error values
    debugfs: Pass bool pointer to debugfs_create_bool()
    ACPI / EC: Fix broken 64bit big-endian users of 'global_lock'

    Linus Torvalds
     
  • commit 8f9d02f470f48416444ac3a1eacecdd0f743f1a7 introduced spinlocks
    in btusb_work. This is run in a context of a worqueue and can be interrupted
    by hardware irq. If it happens while spinlock is held, we have a deadlock.
    Solution is to use _irqsave/_resore version of locking

    [ 466.460560] =================================
    [ 466.460565] [ INFO: inconsistent lock state ]
    [ 466.460572] 4.3.0-rc6+ #1 Tainted: G W
    [ 466.460576] ---------------------------------
    [ 466.460582] inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage.
    [ 466.460589] kworker/0:2/94 [HC0[0]:SC0[0]:HE1:SE1] takes:
    [ 466.460595] (&(&data->rxlock)->rlock){?.-...}, at: [] btusb_work+0xa3/0x3fd [btusb]
    [ 466.460621] {IN-HARDIRQ-W} state was registered at:
    [ 466.460625] [] __lock_acquire+0xc45/0x1e80
    [ 466.460638] [] lock_acquire+0xe5/0x1f0
    [ 466.460646] [] _raw_spin_lock+0x38/0x50
    [ 466.460657] [] btusb_recv_intr+0x38/0x170 [btusb]
    [ 466.460668] [] btusb_intr_complete+0xa6/0x130 [btusb]
    [ 466.460679] [] __usb_hcd_giveback_urb+0x8e/0x160
    [ 466.460690] [] usb_hcd_giveback_urb+0x3f/0x120
    [ 466.460698] [] uhci_giveback_urb+0xad/0x280
    [ 466.460706] [] uhci_scan_schedule.part.33+0x6b4/0xbe0
    [ 466.460714] [] uhci_irq+0xd0/0x180
    [ 466.460722] [] usb_hcd_irq+0x26/0x40
    [ 466.460729] [] handle_irq_event_percpu+0x40/0x300
    [ 466.460739] [] handle_irq_event+0x40/0x60
    [ 466.460746] [] handle_fasteoi_irq+0x89/0x150
    [ 466.460754] [] handle_irq+0x73/0x120
    [ 466.460763] [] do_IRQ+0x61/0x120
    [ 466.460772] [] ret_from_intr+0x0/0x31
    [ 466.460780] [] cpuidle_enter+0x17/0x20
    [ 466.460790] [] call_cpuidle+0x32/0x60
    [ 466.460800] [] cpu_startup_entry+0x2b8/0x3f0
    [ 466.460807] [] rest_init+0x13a/0x140
    [ 466.460817] [] start_kernel+0x4a3/0x4c4
    [ 466.460827] [] x86_64_start_reservations+0x2a/0x2c
    [ 466.460837] [] x86_64_start_kernel+0x14a/0x16d
    [ 466.460846] irq event stamp: 754913
    [ 466.460851] hardirqs last enabled at (754913): [] _raw_spin_unlock_irq+0x2c/0x40
    [ 466.460861] hardirqs last disabled at (754912): [] _raw_spin_lock_irq+0x1d/0x60
    [ 466.460869] softirqs last enabled at (753024): [] __do_softirq+0x380/0x490
    [ 466.460880] softirqs last disabled at (753009): [] irq_exit+0x10f/0x120
    [ 466.460888]
    other info that might help us debug this:
    [ 466.460894] Possible unsafe locking scenario:

    [ 466.460899] CPU0
    [ 466.460903] ----
    [ 466.460907] lock(&(&data->rxlock)->rlock);
    [ 466.460915]
    [ 466.460918] lock(&(&data->rxlock)->rlock);
    [ 466.460926]
    *** DEADLOCK ***

    [ 466.460935] 2 locks held by kworker/0:2/94:
    [ 466.460939] #0: ("events"){.+.+.+}, at: [] process_one_work+0x16b/0x660
    [ 466.460958] #1: ((&data->work)){+.+...}, at: [] process_one_work+0x16b/0x660
    [ 466.460974]

    Signed-off-by: Kuba Pawlak
    Signed-off-by: Marcel Holtmann

    Kuba Pawlak
     

26 Oct, 2015

1 commit

  • for_each_compatible_node performs an of_node_get on each iteration, so
    a break out of the loop requires an of_node_put.

    A simplified version of the semantic patch that fixes this problem is as
    follows (http://coccinelle.lip6.fr):

    //
    @@
    expression e;
    local idexpression n;
    @@

    for_each_compatible_node(n, ...) {
    ... when != of_node_put(n)
    when != e = n
    (
    return n;
    |
    + of_node_put(n);
    ? return ...;
    )
    ...
    }
    //

    Signed-off-by: Julia Lawall
    Signed-off-by: Marcel Holtmann

    Julia Lawall
     

22 Oct, 2015

1 commit


21 Oct, 2015

2 commits