diff options
author | Johannes Berg <johannes.berg@intel.com> | 2019-11-14 09:26:20 +0100 |
---|---|---|
committer | Luca Coelho <luciano.coelho@intel.com> | 2019-12-23 11:33:04 +0200 |
commit | c5a4e8eb683c6a80c6907c12acf7b66665ef4b0b (patch) | |
tree | e15398c83b598e0b3d8388a7bd5a7478ce1e0f3f /drivers/net/wireless | |
parent | c4a786b32621850775dedd1a329de0c060f9c904 (diff) | |
download | blackbird-op-linux-c5a4e8eb683c6a80c6907c12acf7b66665ef4b0b.tar.gz blackbird-op-linux-c5a4e8eb683c6a80c6907c12acf7b66665ef4b0b.zip |
iwlwifi: pcie: detect the DMA bug and warn if it happens
Warn if the DMA bug is going to happen. We don't have a good
way of actually aborting in this case and we have workarounds
in place for the cases where it happens, but in order to not
be surprised add a safety-check and warn.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c b/drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c index 8abadfbc793a..a2dc380ac17c 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c @@ -231,6 +231,17 @@ static int iwl_pcie_gen2_set_tb(struct iwl_trans *trans, int idx = iwl_pcie_gen2_get_num_tbs(trans, tfd); struct iwl_tfh_tb *tb; + /* + * Only WARN here so we know about the issue, but we mess up our + * unmap path because not every place currently checks for errors + * returned from this function - it can only return an error if + * there's no more space, and so when we know there is enough we + * don't always check ... + */ + WARN(crosses_4g_boundary(addr, len), + "possible DMA problem with iova:0x%llx, len:%d\n", + (unsigned long long)addr, len); + if (WARN_ON(idx >= IWL_TFH_NUM_TBS)) return -EINVAL; tb = &tfd->tbs[idx]; |