linux/drivers/net/wireless/iwlwifi
Emmanuel Grumbach d090f878b0 iwlwifi: pcie: disable BHs in iwl_pcie_txq_check_wrptrs
This fixes:

=================================
[ INFO: inconsistent lock state ]
3.14.3+ #5 Tainted: G           O
---------------------------------
inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage.
swapper/3/0 [HC0[0]:SC1[3]:HE1:SE0] takes:
 (&(&txq->lock)->rlock){+.?...}, at: [<ffffffffa059803c>] iwl_pcie_enqueue_hcmd+0x12c/0x1000 [iwlwifi]
{SOFTIRQ-ON-W} state was registered at:
  [<ffffffff810d9071>] __lock_acquire+0x5f1/0x13b0
  [<ffffffff810d9ee0>] lock_acquire+0xb0/0x1f0
  [<ffffffff817ef80e>] _raw_spin_lock+0x3e/0x80
  [<ffffffffa0598f7a>] iwl_pcie_txq_check_wrptrs+0x6a/0xb0 [iwlwifi]
  [<ffffffffa0594b5a>] iwl_pcie_irq_handler+0xdba/0x2670 [iwlwifi]
  [<ffffffff810ef1e0>] irq_thread_fn+0x20/0x50
  [<ffffffff810ef77f>] irq_thread+0x11f/0x150
  [<ffffffff810a04f0>] kthread+0xf0/0x110
  [<ffffffff817fa4bc>] ret_from_fork+0x7c/0xb0
irq event stamp: 1142192
hardirqs last  enabled at (1142192): [<ffffffff817efb6c>] _raw_spin_unlock_irq+0x2c/0x40
hardirqs last disabled at (1142191): [<ffffffff817ef9ef>] _raw_spin_lock_irq+0x1f/0x80
softirqs last  enabled at (1142188): [<ffffffff81079082>] _local_bh_enable+0x22/0x50
softirqs last disabled at (1142189): [<ffffffff8107ad35>] irq_exit+0xe5/0xf0

other info that might help us debug this:
 Possible unsafe locking scenario:

       CPU0
       ----
  lock(&(&txq->lock)->rlock);
  <Interrupt>
    lock(&(&txq->lock)->rlock);

Fixes: ea68f46070 ("iwlwifi: pcie: clarify TX queue need_update handling")
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-05-13 13:53:53 +03:00
..
dvm iwlwifi: remove CMD_SYNC 2014-05-13 13:52:19 +03:00
mvm iwlwifi: remove CMD_SYNC 2014-05-13 13:52:19 +03:00
pcie iwlwifi: pcie: disable BHs in iwl_pcie_txq_check_wrptrs 2014-05-13 13:53:53 +03:00
iwl-1000.c iwlwifi: don't disable SCD chain extension on newer devices 2014-04-13 22:23:20 +03:00
iwl-2000.c iwlwifi: don't disable SCD chain extension on newer devices 2014-04-13 22:23:20 +03:00
iwl-5000.c iwlwifi: don't disable SCD chain extension on newer devices 2014-04-13 22:23:20 +03:00
iwl-6000.c iwlwifi: don't disable SCD chain extension on newer devices 2014-04-13 22:23:20 +03:00
iwl-7000.c iwlwifi: mvm: fix bug with OTP memory size 2014-05-06 20:40:01 +03:00
iwl-8000.c iwlwifi: 8000: add default NVM file name in family 8000 2014-05-11 13:06:50 +03:00
iwl-agn-hw.h iwlwifi: mvm: fix bug with OTP memory size 2014-05-06 20:40:01 +03:00
iwl-config.h iwlwifi: 8000: add default NVM file name in family 8000 2014-05-11 13:06:50 +03:00
iwl-csr.h iwlwifi: pcie: enable LP XTAL to reduce power consumption 2014-03-09 19:16:39 +02:00
iwl-debug.c iwlwifi: use dev_printk instead of dev_dbg for debug logs 2014-05-13 13:52:22 +03:00
iwl-debug.h iwlwifi: cause build error on missing newline 2014-05-11 13:12:31 +03:00
iwl-devtrace.c iwlwifi: Update Copyright to 2014 2013-12-31 19:03:53 +02:00
iwl-devtrace.h iwlwifi: Update Copyright to 2014 2013-12-31 19:03:53 +02:00
iwl-drv.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2014-03-04 13:05:12 -05:00
iwl-drv.h iwlwifi: mvm: new NVM format in family 8000 2014-02-13 13:49:37 +02:00
iwl-eeprom-parse.c iwlwifi: Update Copyright to 2014 2013-12-31 19:03:53 +02:00
iwl-eeprom-parse.h iwlwifi: mvm: new NVM format in family 8000 2014-02-13 13:49:37 +02:00
iwl-eeprom-read.c iwlwifi: Update Copyright to 2014 2013-12-31 19:03:53 +02:00
iwl-eeprom-read.h iwlwifi: Update Copyright to 2014 2013-12-31 19:03:53 +02:00
iwl-fh.h iwlwifi: Update Copyright to 2014 2013-12-31 19:03:53 +02:00
iwl-fw-error-dump.h iwlwifi: mvm/pcie: capture last commands on firmware error 2014-05-06 23:32:44 +03:00
iwl-fw-file.h iwlwifi: mvm: prepare infrastructure for more TLV flags 2014-02-23 21:32:22 +02:00
iwl-fw.h iwlwifi:mvm: Add AP/GO channel switch support 2014-05-06 23:32:46 +03:00
iwl-io.c iwlwifi: pcie: enable LP XTAL to reduce power consumption 2014-03-09 19:16:39 +02:00
iwl-io.h iwlwifi: pcie: enable LP XTAL to reduce power consumption 2014-03-09 19:16:39 +02:00
iwl-modparams.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2014-03-04 13:05:12 -05:00
iwl-notif-wait.c iwlwifi: Update Copyright to 2014 2013-12-31 19:03:53 +02:00
iwl-notif-wait.h iwlwifi: Update Copyright to 2014 2013-12-31 19:03:53 +02:00
iwl-nvm-parse.c iwlwifi: mvm: add channel 14 to the low band list 2014-05-11 13:07:33 +03:00
iwl-nvm-parse.h iwlwifi: mvm: new NVM format in family 8000 2014-02-13 13:49:37 +02:00
iwl-op-mode.h iwlwifi: pcie: implement GRO without NAPI 2014-04-13 09:35:47 +03:00
iwl-phy-db.c iwlwifi: remove CMD_SYNC 2014-05-13 13:52:19 +03:00
iwl-phy-db.h iwlwifi: Update Copyright to 2014 2013-12-31 19:03:53 +02:00
iwl-prph.h iwlwifi: mvm: dump Rx FIFO when the firmware asserts 2014-04-13 09:35:59 +03:00
iwl-trans.h iwlwifi: remove CMD_SYNC 2014-05-13 13:52:19 +03:00
Kconfig iwlwifi: remove spurious newline in Kconfig 2014-05-11 16:50:00 +03:00
Makefile iwlwifi: Add 8000 HW family support 2014-02-03 22:23:31 +02:00