[PATCH 4.14 051/143] iwlwifi: dbg: allow wrt collection before ALIVE

2018-11-02 Thread Greg Kroah-Hartman
4.14-stable review patch.  If anyone has any objections, please let me know.

--

[ Upstream commit dfd4b08cf44f27587e2053e006e43a1603328006 ]

Even if no ALIVE was received, the WRT data can still
be collected. Add this.

Signed-off-by: Liad Kaufman 
Signed-off-by: Luca Coelho 
Signed-off-by: Sasha Levin 
---
 drivers/net/wireless/intel/iwlwifi/fw/dbg.c | 15 ++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c 
b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
index 2fa7ec466275..839010417241 100644
--- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
+++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
@@ -950,7 +950,20 @@ int iwl_fw_dbg_collect_desc(struct iwl_fw_runtime *fwrt,
if (trigger)
delay = msecs_to_jiffies(le32_to_cpu(trigger->stop_delay));
 
-   if (WARN(fwrt->trans->state == IWL_TRANS_NO_FW,
+   /*
+* If the loading of the FW completed successfully, the next step is to
+* get the SMEM config data. Thus, if fwrt->smem_cfg.num_lmacs is non
+* zero, the FW was already loaded successully. If the state is "NO_FW"
+* in such a case - WARN and exit, since FW may be dead. Otherwise, we
+* can try to collect the data, since FW might just not be fully
+* loaded (no "ALIVE" yet), and the debug data is accessible.
+*
+* Corner case: got the FW alive but crashed before getting the SMEM
+*  config. In such a case, due to HW access problems, we might
+*  collect garbage.
+*/
+   if (WARN((fwrt->trans->state == IWL_TRANS_NO_FW) &&
+fwrt->smem_cfg.num_lmacs,
 "Can't collect dbg data when FW isn't alive\n"))
return -EIO;
 
-- 
2.17.1





[PATCH 4.14 051/143] iwlwifi: dbg: allow wrt collection before ALIVE

2018-11-02 Thread Greg Kroah-Hartman
4.14-stable review patch.  If anyone has any objections, please let me know.

--

[ Upstream commit dfd4b08cf44f27587e2053e006e43a1603328006 ]

Even if no ALIVE was received, the WRT data can still
be collected. Add this.

Signed-off-by: Liad Kaufman 
Signed-off-by: Luca Coelho 
Signed-off-by: Sasha Levin 
---
 drivers/net/wireless/intel/iwlwifi/fw/dbg.c | 15 ++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c 
b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
index 2fa7ec466275..839010417241 100644
--- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
+++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
@@ -950,7 +950,20 @@ int iwl_fw_dbg_collect_desc(struct iwl_fw_runtime *fwrt,
if (trigger)
delay = msecs_to_jiffies(le32_to_cpu(trigger->stop_delay));
 
-   if (WARN(fwrt->trans->state == IWL_TRANS_NO_FW,
+   /*
+* If the loading of the FW completed successfully, the next step is to
+* get the SMEM config data. Thus, if fwrt->smem_cfg.num_lmacs is non
+* zero, the FW was already loaded successully. If the state is "NO_FW"
+* in such a case - WARN and exit, since FW may be dead. Otherwise, we
+* can try to collect the data, since FW might just not be fully
+* loaded (no "ALIVE" yet), and the debug data is accessible.
+*
+* Corner case: got the FW alive but crashed before getting the SMEM
+*  config. In such a case, due to HW access problems, we might
+*  collect garbage.
+*/
+   if (WARN((fwrt->trans->state == IWL_TRANS_NO_FW) &&
+fwrt->smem_cfg.num_lmacs,
 "Can't collect dbg data when FW isn't alive\n"))
return -EIO;
 
-- 
2.17.1