wifi: iwlwifi: fw: print PC register value instead of address
authorMukesh Sisodiya <mukesh.sisodiya@intel.com>
Mon, 12 Jun 2023 15:51:11 +0000 (18:51 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 14 Jun 2023 10:32:18 +0000 (12:32 +0200)
The program counter address is read from the TLV and
PC address is printed in debug messages.
Read the value at PC address and print the value
instead of the register address.

Fixes: 5e31b3df86ec ("wifi: iwlwifi: dbg: print pc register data once fw dump occurred")
Signed-off-by: Mukesh Sisodiya <mukesh.sisodiya@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230612184434.e5a5f18f1b2c.Ib6117a4e7f66a075913241cc81477c0059953d5d@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/fw/dump.c

index 64e83f30f94761fe33f50d6563d05f525fb5f003..23388261e97fac35ddc8baee59c2c9519e5c889f 100644 (file)
@@ -507,11 +507,16 @@ void iwl_fwrt_dump_error_logs(struct iwl_fw_runtime *fwrt)
        iwl_fwrt_dump_fseq_regs(fwrt);
        if (fwrt->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_22000) {
                pc_data = fwrt->trans->dbg.pc_data;
+
+               if (!iwl_trans_grab_nic_access(fwrt->trans))
+                       return;
                for (count = 0; count < fwrt->trans->dbg.num_pc;
                     count++, pc_data++)
                        IWL_ERR(fwrt, "%s: 0x%x\n",
                                pc_data->pc_name,
-                               pc_data->pc_address);
+                               iwl_read_prph_no_grab(fwrt->trans,
+                                                     pc_data->pc_address));
+               iwl_trans_release_nic_access(fwrt->trans);
        }
 
        if (fwrt->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_BZ) {