From 52aaef0622ac88e83ddec1ceea7d6afdbc5540d5 Mon Sep 17 00:00:00 2001 From: Manikandan Mohan Date: Tue, 24 Mar 2020 17:02:55 -0700 Subject: [PATCH] cnss2: Ignore ramdump init failure Ramdump feature is not supported in GKI build. Ignore this feature init failure. CRs-fixed: 2648907 Change-Id: I1d2116159700be3ea0cab4290902ce8f3daf6f05 Signed-off-by: Manikandan Mohan --- drivers/net/wireless/cnss2/main.c | 25 ++++++++++++++++++++++++- drivers/net/wireless/cnss2/pci.c | 11 ++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/cnss2/main.c b/drivers/net/wireless/cnss2/main.c index 6280a8f56780..cd0ebd40c2b4 100644 --- a/drivers/net/wireless/cnss2/main.c +++ b/drivers/net/wireless/cnss2/main.c @@ -1710,6 +1710,27 @@ static void cnss_unregister_ramdump_v1(struct cnss_plat_data *plat_priv) ramdump_info->ramdump_pa); } +/** + * cnss_ignore_dump_data_reg_fail - Ignore Ramdump table register failure + * @ret: Error returned by msm_dump_data_register_nominidump + * + * For Lahaina GKI boot, we dont have support for mem dump feature. So + * ignore failure. + * + * Return: Same given error code if mem dump feature enabled, 0 otherwise + */ +#ifdef CONFIG_QCOM_MEMORY_DUMP_V2 +static int cnss_ignore_dump_data_reg_fail(int ret) +{ + return ret; +} +#else +static int cnss_ignore_dump_data_reg_fail(int ret) +{ + return 0; +} +#endif + static int cnss_register_ramdump_v2(struct cnss_plat_data *plat_priv) { int ret = 0; @@ -1746,7 +1767,9 @@ static int cnss_register_ramdump_v2(struct cnss_plat_data *plat_priv) ret = msm_dump_data_register_nominidump(MSM_DUMP_TABLE_APPS, &dump_entry); if (ret) { - cnss_pr_err("Failed to setup dump table, err = %d\n", ret); + ret = cnss_ignore_dump_data_reg_fail(ret); + cnss_pr_err("Failed to setup dump table, %s (%d)\n", + ret ? "Error" : "Ignoring", ret); goto free_ramdump; } diff --git a/drivers/net/wireless/cnss2/pci.c b/drivers/net/wireless/cnss2/pci.c index 5a5ffce8d1c3..adacb1cfe523 100644 --- a/drivers/net/wireless/cnss2/pci.c +++ b/drivers/net/wireless/cnss2/pci.c @@ -1894,7 +1894,7 @@ static int cnss_qca6290_ramdump(struct cnss_pci_data *pci_priv) struct cnss_dump_meta_info meta_info = {0}; int i, ret = 0; - if (!info_v2->dump_data_valid || + if (!info_v2->dump_data_valid || !dump_seg || dump_data->nentries == 0) return 0; @@ -3818,6 +3818,11 @@ void cnss_pci_collect_dump_info(struct cnss_pci_data *pci_priv, bool in_panic) rddm_image = pci_priv->mhi_ctrl->rddm_image; dump_data->nentries = 0; + if (!dump_seg) { + cnss_pr_warn("FW image dump collection not setup"); + goto skip_dump; + } + cnss_pr_dbg("Collect FW image dump segment, nentries %d\n", fw_image->entries); @@ -3863,6 +3868,7 @@ void cnss_pci_collect_dump_info(struct cnss_pci_data *pci_priv, bool in_panic) if (dump_data->nentries > 0) plat_priv->ramdump_info_v2.dump_data_valid = true; +skip_dump: cnss_pci_set_mhi_state(pci_priv, CNSS_MHI_RDDM_DONE); complete(&plat_priv->rddm_complete); } @@ -3876,6 +3882,9 @@ void cnss_pci_clear_dump_info(struct cnss_pci_data *pci_priv) struct cnss_fw_mem *fw_mem = plat_priv->fw_mem; int i, j; + if (!dump_seg) + return; + fw_image = pci_priv->mhi_ctrl->fbc_image; rddm_image = pci_priv->mhi_ctrl->rddm_image;