Преглед изворни кода

qcacmn: Remove freed DP structures from minidump

Remove entries previously added to minidump during
data-path detach.

Change-Id: Ib69803e8ea58e5b4e0f045d3037730a5b6700c8d
Karunakar Dasineni пре 5 година
родитељ
комит
a46da42b53
2 измењених фајлова са 29 додато и 16 уклоњено
  1. 27 15
      dp/wifi3.0/dp_main.c
  2. 2 1
      hal/wifi3.0/hal_srng.c

+ 27 - 15
dp/wifi3.0/dp_main.c

@@ -2091,8 +2091,11 @@ static int dp_hw_link_desc_pool_setup(struct dp_soc *soc)
 				FL("Link descriptor memory alloc failed"));
 			goto fail;
 		}
-		qdf_minidump_log((void *)(soc->link_desc_banks[i].base_vaddr),
-			soc->link_desc_banks[i].size, "link_desc_bank");
+		if (!dp_is_soc_reinit(soc)) {
+			qdf_minidump_log(soc->link_desc_banks[i].base_vaddr,
+					 soc->link_desc_banks[i].size,
+					 "link_desc_bank");
+		}
 	}
 
 	if (last_bank_size) {
@@ -2123,8 +2126,11 @@ static int dp_hw_link_desc_pool_setup(struct dp_soc *soc)
 			(unsigned long)(
 			soc->link_desc_banks[i].base_vaddr_unaligned));
 
-		qdf_minidump_log((void *)(soc->link_desc_banks[i].base_vaddr),
-			soc->link_desc_banks[i].size, "link_desc_bank");
+		if (!dp_is_soc_reinit(soc)) {
+			qdf_minidump_log(soc->link_desc_banks[i].base_vaddr,
+					 soc->link_desc_banks[i].size,
+					 "link_desc_bank");
+		}
 	}
 
 
@@ -2142,10 +2148,9 @@ static int dp_hw_link_desc_pool_setup(struct dp_soc *soc)
 			goto fail;
 		}
 
-		qdf_minidump_log(
-			(void *)(soc->wbm_idle_link_ring.base_vaddr_unaligned),
-			soc->wbm_idle_link_ring.alloc_size,
-			"wbm_idle_link_ring");
+		qdf_minidump_log(soc->wbm_idle_link_ring.base_vaddr_unaligned,
+				 soc->wbm_idle_link_ring.alloc_size,
+				 "wbm_idle_link_ring");
 
 		hal_srng_access_start_unlocked(soc->hal_soc,
 			soc->wbm_idle_link_ring.hal_srng);
@@ -2304,6 +2309,8 @@ static void dp_hw_link_desc_pool_cleanup(struct dp_soc *soc)
 	int i;
 
 	if (soc->wbm_idle_link_ring.hal_srng) {
+		qdf_minidump_remove(
+			soc->wbm_idle_link_ring.base_vaddr_unaligned);
 		dp_srng_cleanup(soc, &soc->wbm_idle_link_ring,
 			WBM_IDLE_LINK, 0);
 	}
@@ -2320,6 +2327,7 @@ static void dp_hw_link_desc_pool_cleanup(struct dp_soc *soc)
 
 	for (i = 0; i < MAX_LINK_DESC_BANKS; i++) {
 		if (soc->link_desc_banks[i].base_vaddr_unaligned) {
+			qdf_minidump_remove(soc->link_desc_banks[i].base_vaddr);
 			qdf_mem_free_consistent(soc->osdev, soc->osdev->dev,
 				soc->link_desc_banks[i].size,
 				soc->link_desc_banks[i].base_vaddr_unaligned,
@@ -2756,9 +2764,9 @@ static int dp_soc_cmn_setup(struct dp_soc *soc)
 		goto fail1;
 	}
 
-	qdf_minidump_log(
-		(void *)(soc->wbm_desc_rel_ring.base_vaddr_unaligned),
-		soc->wbm_desc_rel_ring.alloc_size, "wbm_desc_rel_ring");
+	qdf_minidump_log(soc->wbm_desc_rel_ring.base_vaddr_unaligned,
+			 soc->wbm_desc_rel_ring.alloc_size,
+			 "wbm_desc_rel_ring");
 
 	soc->num_tcl_data_rings = 0;
 	/* Tx data rings */
@@ -3379,17 +3387,18 @@ static struct cdp_pdev *dp_pdev_attach_wifi3(struct cdp_soc_t *txrx_soc,
 	struct dp_soc *soc = (struct dp_soc *)txrx_soc;
 	struct dp_pdev *pdev = NULL;
 
-	if (dp_is_soc_reinit(soc))
+	if (dp_is_soc_reinit(soc)) {
 		pdev = soc->pdev_list[pdev_id];
-	else
+	} else {
 		pdev = qdf_mem_malloc(sizeof(*pdev));
+		qdf_minidump_log(pdev, sizeof(*pdev), "dp_pdev");
+	}
 
 	if (!pdev) {
 		QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
 			FL("DP PDEV memory allocation failed"));
 		goto fail0;
 	}
-	qdf_minidump_log((void *)pdev, sizeof(*pdev), "dp_pdev");
 
 	/*
 	 * Variable to prevent double pdev deinitialization during
@@ -3940,6 +3949,7 @@ static void dp_pdev_detach(struct cdp_pdev *txrx_pdev, int force)
 	}
 
 	soc->pdev_list[pdev->pdev_id] = NULL;
+	qdf_minidump_remove(pdev);
 	qdf_mem_free(pdev);
 }
 
@@ -4135,6 +4145,7 @@ static void dp_soc_detach(void *txrx_soc)
 
 	/* Free the ring memories */
 	/* Common rings */
+	qdf_minidump_remove(soc->wbm_desc_rel_ring.base_vaddr_unaligned);
 	dp_srng_cleanup(soc, &soc->wbm_desc_rel_ring, SW2WBM_RELEASE, 0);
 
 	dp_tx_soc_detach(soc);
@@ -4188,6 +4199,7 @@ static void dp_soc_detach(void *txrx_soc)
 
 	wlan_cfg_soc_detach(soc->wlan_cfg_ctx);
 
+	qdf_minidump_remove(soc);
 	qdf_mem_free(soc);
 }
 
@@ -4543,7 +4555,7 @@ dp_soc_attach_target_wifi3(struct cdp_soc_t *cdp_soc)
 	/* initialize work queue for stats processing */
 	qdf_create_work(0, &soc->htt_stats.work, htt_t2h_stats_handler, soc);
 
-	qdf_minidump_log((void *)soc, sizeof(*soc), "dp_soc");
+	qdf_minidump_log(soc, sizeof(*soc), "dp_soc");
 
 	return QDF_STATUS_SUCCESS;
 }

+ 2 - 1
hal/wifi3.0/hal_srng.c

@@ -300,7 +300,7 @@ void *hal_attach(void *hif_handle, qdf_device_t qdf_dev)
 			"%s: hal_soc allocation failed", __func__);
 		goto fail0;
 	}
-	qdf_minidump_log((void *)hal, sizeof(*hal), "hal_soc");
+	qdf_minidump_log(hal, sizeof(*hal), "hal_soc");
 	hal->hif_handle = hif_handle;
 	hal->dev_base_addr = hif_get_dev_ba(hif_handle);
 	hal->qdf_dev = qdf_dev;
@@ -393,6 +393,7 @@ extern void hal_detach(void *hal_soc)
 	qdf_mem_free_consistent(hal->qdf_dev, hal->qdf_dev->dev,
 		sizeof(*(hal->shadow_wrptr_mem_vaddr)) * HAL_MAX_LMAC_RINGS,
 		hal->shadow_wrptr_mem_vaddr, hal->shadow_wrptr_mem_paddr, 0);
+	qdf_minidump_remove(hal);
 	qdf_mem_free(hal);
 
 	return;