iwlwifi: mvm: print secboot status registers on alive timeout
authorDor Shaish <dor.shaish@intel.com>
Wed, 15 Jul 2015 08:41:21 +0000 (11:41 +0300)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Tue, 4 Aug 2015 18:29:38 +0000 (21:29 +0300)
Print the CPU1 and CPU2 secured boot status registers from the NIC
to indicate a SYSASSERT during secured engine unlocking process
on init/protocol image.

Signed-off-by: Dor Shaish <dor.shaish@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
drivers/net/wireless/iwlwifi/iwl-prph.h
drivers/net/wireless/iwlwifi/mvm/fw.c

index cd98b9f45415b107cdbec91a3b09bd3449ca0a42..c4e7a713af0f940f7f58bd1d45df2e2445987461 100644 (file)
@@ -383,6 +383,8 @@ enum aux_misc_master1_en {
 #define AUX_MISC_MASTER1_SMPHR_STATUS  0xA20800
 #define RSA_ENABLE                     0xA24B08
 #define PREG_AUX_BUS_WPROT_0           0xA04CC0
+#define SB_CPU_1_STATUS                        0xA01E30
+#define SB_CPU_2_STATUS                        0xA01E34
 
 /* FW chicken bits */
 #define LMPM_CHICK                     0xA01FF8
index acb402b3e6eeb233107e55267948895d42fd9852..e65a65337792c6d81ff8e30cd4e9ce0671656ee0 100644 (file)
@@ -482,6 +482,11 @@ static int iwl_mvm_load_ucode_wait_alive(struct iwl_mvm *mvm,
        ret = iwl_wait_notification(&mvm->notif_wait, &alive_wait,
                                    MVM_UCODE_ALIVE_TIMEOUT);
        if (ret) {
+               if (mvm->trans->cfg->device_family == IWL_DEVICE_FAMILY_8000)
+                       IWL_ERR(mvm,
+                               "SecBoot CPU1 Status: 0x%x, CPU2 Status: 0x%x\n",
+                               iwl_read_prph(mvm->trans, SB_CPU_1_STATUS),
+                               iwl_read_prph(mvm->trans, SB_CPU_2_STATUS));
                mvm->cur_ucode = old_type;
                return ret;
        }