Browse Source

ipa: Fix the collection of packets context on crash

Change the offsets for the collection of the packets
context so when crash occur the dump will have the proper
information in the packet context structures.

Signed-off-by: Dor Deri <[email protected]>
Dor Deri 3 years ago
parent
commit
d7a614c2a6

+ 5 - 4
drivers/platform/msm/ipa/ipa_v3/dump/ipa4.5/ipa_reg_dump.c

@@ -1309,10 +1309,11 @@ void ipa_save_registers(void)
 		 * IPA_CTX_ID register space
 		 */
 		if (io->read == act_read) {
-			memcpy((void *)ipa_reg_save.pkt_ctntx,
-				   (const void *)
-				   (ipa3_ctx->reg_collection_base + ofst),
-				   sizeof(ipa_reg_save.pkt_ctntx));
+			for (i = 0; i < IPA_HW_PKT_CTNTX_MAX; i++) {
+				memcpy((void *)(&(ipa_reg_save.pkt_ctntx[i])),
+					(void*)(ipa3_ctx->reg_collection_base + HWIO_IPA_CTX_ID_m_CTX_NUM_n_ADDR(i, 0)),
+					sizeof(ipa_reg_save.pkt_ctntx[0]));
+			}
 
 			for_cfg.value =
 				IPA_READ_SCALER_REG(IPA_RSRC_MNGR_DB_CFG);

+ 3 - 1
drivers/platform/msm/ipa/ipa_v3/dump/ipa5.0/ipa_pkt_cntxt.h

@@ -248,7 +248,9 @@ struct ipa_pkt_ctntx_s {
 	u64	ulso_mss                         : 16; /* Word 16 Bits 48-63 */
 	u64	maci_calculated_lsbs             : 64; /* Word 17 Bits 0-63 */
 	u64	maci_calculated_msbs             : 64; /* Word 18 Bits 0-63 */
-	u64	padding_bytes_cnt                : 16; /* Word 19 Bits 0-16 */
+	u64     padding_bytes_cnt                : 16; /* Word 19 Bits 0-15 */
+	u64     not_used8                        : 48; /* Word 19 Bits 16-63 */
+
 } __packed;
 
 #endif /* #if !defined(_IPA_PKT_CNTXT_H_) */

+ 5 - 4
drivers/platform/msm/ipa/ipa_v3/dump/ipa5.0/ipa_reg_dump.c

@@ -1309,10 +1309,11 @@ void ipa_save_registers(void)
 		 * IPA_CTX_ID register space
 		 */
 		if (io->read == act_read) {
-			memcpy((void *)ipa_reg_save.pkt_ctntx,
-				   (const void *)
-				   (ipa3_ctx->reg_collection_base + ofst),
-				   sizeof(ipa_reg_save.pkt_ctntx));
+			for (i = 0; i < IPA_HW_PKT_CTNTX_MAX; i++) {
+				memcpy((void *)(&(ipa_reg_save.pkt_ctntx[i])),
+					(void*)(ipa3_ctx->reg_collection_base + HWIO_IPA_CTX_ID_m_CTX_NUM_n_ADDR(i, 0)),
+					sizeof(ipa_reg_save.pkt_ctntx[0]));
+			}
 
 			for_cfg.value =
 				IPA_READ_SCALER_REG(IPA_RSRC_MNGR_DB_CFG);

+ 5 - 4
drivers/platform/msm/ipa/ipa_v3/dump/ipa5.5/ipa_reg_dump.c

@@ -1206,10 +1206,11 @@ void ipa_save_registers(void)
 		 * IPA_CTX_ID register space
 		 */
 		if (io->read == act_read) {
-			memcpy((void *)ipa_reg_save.pkt_ctntx,
-				   (const void *)
-				   (ipa3_ctx->reg_collection_base + ofst),
-				   sizeof(ipa_reg_save.pkt_ctntx));
+			for (i = 0; i < IPA_HW_PKT_CTNTX_MAX; i++) {
+				memcpy((void *)(&(ipa_reg_save.pkt_ctntx[i])),
+					(void*)(ipa3_ctx->reg_collection_base + HWIO_IPA_CTX_ID_m_CTX_NUM_n_ADDR(i, 0)),
+					sizeof(ipa_reg_save.pkt_ctntx[0]));
+			}
 
 			for_cfg.value =
 				IPA_READ_SCALER_REG(IPA_RSRC_MNGR_DB_CFG);