瀏覽代碼

qcacmn: Release SMMU IPA mappings after pipes are disabled

Currenlty RX buffer mappings to IPA domain are released when
REO2IPA ring are disabled but before IPA pipes are disabled.
There will be chances that IPA still accessing buffers with
mappings released, which could lead to SMMU fault.

Fix is to release SMMU mappings to IPA domain until IPA pipes
are disabled.

Change-Id: I62ac99e6a9b83cfd1e70a17ffacdea3ca3720a5c
CRs-Fixed: 2436812
jiad 6 年之前
父節點
當前提交
3f43a6924b
共有 1 個文件被更改,包括 6 次插入6 次删除
  1. 6 6
      dp/wifi3.0/dp_ipa.c

+ 6 - 6
dp/wifi3.0/dp_ipa.c

@@ -748,8 +748,6 @@ QDF_STATUS dp_ipa_disable_autonomy(struct cdp_pdev *ppdev)
 	soc->reo_remapped = false;
 	qdf_spin_unlock_bh(&soc->remap_lock);
 
-	dp_ipa_handle_rx_buf_pool_smmu_mapping(soc, pdev, false);
-
 	return QDF_STATUS_SUCCESS;
 }
 
@@ -1508,17 +1506,19 @@ QDF_STATUS dp_ipa_enable_pipes(struct cdp_pdev *ppdev)
  */
 QDF_STATUS dp_ipa_disable_pipes(struct cdp_pdev *ppdev)
 {
+	struct dp_pdev *pdev = (struct dp_pdev *)ppdev;
+	struct dp_soc *soc = pdev->soc;
 	QDF_STATUS result;
 
 	result = qdf_ipa_wdi_disable_pipes();
-	if (result) {
+	if (result)
 		QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
 			  "%s: Disable WDI PIPE fail, code %d",
 			  __func__, result);
-		return QDF_STATUS_E_FAILURE;
-	}
 
-	return QDF_STATUS_SUCCESS;
+	dp_ipa_handle_rx_buf_pool_smmu_mapping(soc, pdev, false);
+
+	return result ? QDF_STATUS_E_FAILURE : QDF_STATUS_SUCCESS;
 }
 
 /**