Commit 32be1a83 authored by Eran Harary's avatar Eran Harary Committed by Emmanuel Grumbach

iwlwifi: mvm: fix the dump_umac_error_log

1. the base_address limitation was wrong, address can be bigger than
0x80C000
2. the ucode data_struct changed.
Signed-off-by: default avatarEran Harary <eran.harary@intel.com>
Reviewed-by: default avatarLiad Kaufman <liad.kaufman@intel.com>
Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
parent a2d79c57
...@@ -387,15 +387,19 @@ struct iwl_error_event_table { ...@@ -387,15 +387,19 @@ struct iwl_error_event_table {
struct iwl_umac_error_event_table { struct iwl_umac_error_event_table {
u32 valid; /* (nonzero) valid, (0) log is empty */ u32 valid; /* (nonzero) valid, (0) log is empty */
u32 error_id; /* type of error */ u32 error_id; /* type of error */
u32 pc; /* program counter */
u32 blink1; /* branch link */ u32 blink1; /* branch link */
u32 blink2; /* branch link */ u32 blink2; /* branch link */
u32 ilink1; /* interrupt link */ u32 ilink1; /* interrupt link */
u32 ilink2; /* interrupt link */ u32 ilink2; /* interrupt link */
u32 data1; /* error-specific data */ u32 data1; /* error-specific data */
u32 data2; /* error-specific data */ u32 data2; /* error-specific data */
u32 line; /* source code line of error */ u32 data3; /* error-specific data */
u32 umac_ver; /* umac version */ u32 umac_fw_ver; /* UMAC version */
u32 umac_fw_api_ver; /* UMAC FW API ver */
u32 frame_pointer; /* core register 27*/
u32 stack_pointer; /* core register 28 */
u32 cmd_header; /* latest host cmd sent to UMAC */
u32 nic_isr_pref; /* ISR status register */
} __packed; } __packed;
#define ERROR_START_OFFSET (1 * sizeof(u32)) #define ERROR_START_OFFSET (1 * sizeof(u32))
...@@ -409,7 +413,7 @@ static void iwl_mvm_dump_umac_error_log(struct iwl_mvm *mvm) ...@@ -409,7 +413,7 @@ static void iwl_mvm_dump_umac_error_log(struct iwl_mvm *mvm)
base = mvm->umac_error_event_table; base = mvm->umac_error_event_table;
if (base < 0x800000 || base >= 0x80C000) { if (base < 0x800000) {
IWL_ERR(mvm, IWL_ERR(mvm,
"Not valid error log pointer 0x%08X for %s uCode\n", "Not valid error log pointer 0x%08X for %s uCode\n",
base, base,
...@@ -428,14 +432,19 @@ static void iwl_mvm_dump_umac_error_log(struct iwl_mvm *mvm) ...@@ -428,14 +432,19 @@ static void iwl_mvm_dump_umac_error_log(struct iwl_mvm *mvm)
IWL_ERR(mvm, "0x%08X | %-28s\n", table.error_id, IWL_ERR(mvm, "0x%08X | %-28s\n", table.error_id,
desc_lookup(table.error_id)); desc_lookup(table.error_id));
IWL_ERR(mvm, "0x%08X | umac uPc\n", table.pc);
IWL_ERR(mvm, "0x%08X | umac branchlink1\n", table.blink1); IWL_ERR(mvm, "0x%08X | umac branchlink1\n", table.blink1);
IWL_ERR(mvm, "0x%08X | umac branchlink2\n", table.blink2); IWL_ERR(mvm, "0x%08X | umac branchlink2\n", table.blink2);
IWL_ERR(mvm, "0x%08X | umac interruptlink1\n", table.ilink1); IWL_ERR(mvm, "0x%08X | umac interruptlink1\n", table.ilink1);
IWL_ERR(mvm, "0x%08X | umac interruptlink2\n", table.ilink2); IWL_ERR(mvm, "0x%08X | umac interruptlink2\n", table.ilink2);
IWL_ERR(mvm, "0x%08X | umac data1\n", table.data1); IWL_ERR(mvm, "0x%08X | umac data1\n", table.data1);
IWL_ERR(mvm, "0x%08X | umac data2\n", table.data2); IWL_ERR(mvm, "0x%08X | umac data2\n", table.data2);
IWL_ERR(mvm, "0x%08X | umac version\n", table.umac_ver); IWL_ERR(mvm, "0x%08X | umac data3\n", table.data3);
IWL_ERR(mvm, "0x%08X | umac version\n", table.umac_fw_ver);
IWL_ERR(mvm, "0x%08X | umac api version\n", table.umac_fw_api_ver);
IWL_ERR(mvm, "0x%08X | frame pointer\n", table.frame_pointer);
IWL_ERR(mvm, "0x%08X | stack pointer\n", table.stack_pointer);
IWL_ERR(mvm, "0x%08X | last host cmd\n", table.cmd_header);
IWL_ERR(mvm, "0x%08X | isr status reg\n", table.nic_isr_pref);
} }
void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm) void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment