1. 02 8月, 2018 3 次提交
  2. 26 7月, 2018 7 次提交
  3. 26 4月, 2018 1 次提交
    • L
      iwlwifi: pcie: remove non-responsive device · 49564a80
      Luca Coelho 提交于
      If we fail to to grab NIC access because the device is not responding
      (i.e. CSR_GP_CNTRL returns 0xFFFFFFFF), remove the device from the PCI
      bus, to avoid any further damage, and to let the user space rescan.
      
      In order to inform the userspace that a rescan is needed, we send a
      kobject uevent with "INACCESSIBLE".
      
      This functionality is disabled by default, but can be enabled via a
      new module parameter called "remove_when_gone".  In the future we may
      change this module parameter to include 3 modes instead: do nothing;
      auto-rescan or; send uevent.
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      Signed-off-by: NRajat Jain <rajatja@google.com>
      49564a80
  4. 20 4月, 2018 2 次提交
  5. 05 1月, 2018 1 次提交
  6. 21 12月, 2017 1 次提交
  7. 06 10月, 2017 2 次提交
    • R
      iwlwifi: pcie: dump registers when HW becomes inaccessible · a6d24fad
      Rajat Jain 提交于
      We conclude the HW became inaccessible when we timeout waiting for
      a bit to be set in a memory mapped register (CSR_GP_CNTRL). This
      conclusion may not be true because the bit may not get set due to:
      - a firmware issue
      - a driver issue
      - a PCI bus issue
      - a platform issue
      There are a lot of such reports with really no good debug information
      beyond this message to help us.
      
      Add some debug information and attempt to dump the different register
      spaces at such a failure:
      
      * Dump some configuration space of device - this will tell us if
      something very basic is broken in the PCIe bus (so that configuration
      accesses are failing). If this works, the PCIe bus seems OK. If this
      does not work, it is definitely an PCIe issue.
      
      * Dump some memory mapped registers - if we're reading some sane'ish
      values, this will tell us that the PCIe bus is OK, but may be a firmware
      / driver issue. If this does not work, it may be a PCI configuration
      issue or a driver/firmware issue.
      
      * Dump parent and device's AER registers, will give us some straws to
      chew on.
      
      This is the sample output:
      [   13.082651] ------------[ cut here ]------------
      [   13.086791] iwlwifi 0000:01:00.0: iwlwifi transaction failed, dumping registers
      [   13.086793] iwlwifi 0000:01:00.0: iwlwifi device config registers:
      [   13.086893] iwlwifi 0000:01:00.0: 00000000: 095a8086 00100406 02800059 00000000 00000004 00000000 00000000 00000000
      [   13.086895] iwlwifi 0000:01:00.0: 00000020: 00000000 00000000 00000000 50108086 00000000 000000c8 00000000 00000100
      [   13.086901] iwlwifi 0000:01:00.0: iwlwifi device memory mapped registers:
      [   13.086989] iwlwifi 0000:01:00.0: 00000000: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
      [   13.086991] iwlwifi 0000:01:00.0: 00000020: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
      [   13.086999] iwlwifi 0000:01:00.0: iwlwifi device AER capability structure:
      [   13.087033] iwlwifi 0000:01:00.0: 00000000: 14010001 00100000 00000000 00462031 00002000 00002000 00000014 40000001
      [   13.087034] iwlwifi 0000:01:00.0: 00000020: 0000000f d140000c 00000000
      [   13.087036] iwlwifi 0000:01:00.0: iwlwifi parent port (0000:00:1c.0) config registers:
      [   13.087074] iwlwifi 0000:00:1c.0: 00000000: 9d108086 00100506 060400f1 00810010 00000000 00000000 00010100 200000f0
      [   13.087075] iwlwifi 0000:00:1c.0: 00000020: d140d140 0001fff1 00000000 00000000 00000000 00000040 00000000 0006010b
      [   13.087087] ------------[ cut here ]------------
      [   13.087095] WARNING: CPU: 0 PID: 1759 at drivers/net/wireless/iwl7000/iwlwifi/pcie/trans.c:2082 iwl_trans_pcie_reclaim+0x1ee4/0x2b9a [iwlwifi]()
      [   13.087096] Timeout waiting for hardware access (CSR_GP_CNTRL 0xffffffff)
      Signed-off-by: NRajat Jain <rajatja@google.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      a6d24fad
    • S
      iwlwifi: pcie: dynamic Tx command queue size · dd05f9aa
      Shahar S Matityahu 提交于
      Devices in the A000 family can use a different size for the command queue.
      To allow this, make the command queue size configurable and set the size
      for A000 devices to 32.
      Signed-off-by: NShahar S Matityahu <shahar.s.matityahu@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      dd05f9aa
  8. 24 8月, 2017 1 次提交
    • L
      iwlwifi: pcie: move rx workqueue initialization to iwl_trans_pcie_alloc() · 10a54d81
      Luca Coelho 提交于
      Work queues cannot be allocated when a mutex is held because the mutex
      may be in use and that would make it sleep.  Doing so generates the
      following splat with 4.13+:
      
      [   19.513298] ======================================================
      [   19.513429] WARNING: possible circular locking dependency detected
      [   19.513557] 4.13.0-rc5+ #6 Not tainted
      [   19.513638] ------------------------------------------------------
      [   19.513767] cpuhp/0/12 is trying to acquire lock:
      [   19.513867]  (&tz->lock){+.+.+.}, at: [<ffffffff924afebb>] thermal_zone_get_temp+0x5b/0xb0
      [   19.514047]
      [   19.514047] but task is already holding lock:
      [   19.514166]  (cpuhp_state){+.+.+.}, at: [<ffffffff91cc4baa>] cpuhp_thread_fun+0x3a/0x210
      [   19.514338]
      [   19.514338] which lock already depends on the new lock.
      
      This lock dependency already existed with previous kernel versions,
      but it was not detected until commit 49dfe2a6 ("cpuhotplug: Link
      lock stacks for hotplug callbacks") was introduced.
      Reported-by: NDavid Weinehall <david.weinehall@intel.com>
      Reported-by: NJiri Kosina <jikos@kernel.org>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      10a54d81
  9. 18 8月, 2017 1 次提交
  10. 10 8月, 2017 1 次提交
  11. 01 8月, 2017 1 次提交
  12. 30 6月, 2017 1 次提交
  13. 29 6月, 2017 1 次提交
  14. 23 6月, 2017 4 次提交
  15. 06 6月, 2017 1 次提交
  16. 26 4月, 2017 2 次提交
  17. 20 4月, 2017 9 次提交
  18. 11 4月, 2017 1 次提交
    • S
      iwlwifi: pcie: add context information support · eda50cde
      Sara Sharon 提交于
      Context information structure is going to be used in a000
      devices for firmware self init.
      
      The self init includes firmware self loading from DRAM by
      ROM.
      This means the TFH relevant firmware loading can be cleaned up.
      
      The firmware loading includes the paging memory as well, so op
      mode can stop initializing the paging and sending the DRAM_BLOCK_CMD.
      
      Firmware is doing RFH, TFH and SCD configuration, while driver
      only fills the required configurations and addresses in the
      context information structure.
      
      The only remaining access to RFH is the write pointer, which
      is updated upon alive interrupt after FW configured the RFH.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      eda50cde