From 59f90787847cdcf9689b6724ba88dac25bd2226e Mon Sep 17 00:00:00 2001 From: Sarannya S Date: Wed, 13 Jul 2022 17:45:06 +0530 Subject: [PATCH 1/4] net: qrtr: smd: kfree svc_arr after use If svc_arr is not freed once it is allocated, it can cause memory leak issue. kfree svc_arr to avoid memory leak. Change-Id: Idfd963443673ffe303aed545503ce8e17f0d5d7b Signed-off-by: Sarannya S --- net/qrtr/smd.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/qrtr/smd.c b/net/qrtr/smd.c index 45626f99dad6..705e6523e1b2 100644 --- a/net/qrtr/smd.c +++ b/net/qrtr/smd.c @@ -93,6 +93,7 @@ static int qcom_smd_qrtr_probe(struct rpmsg_device *rpdev) svc_arr, size); } rc = qrtr_endpoint_register(&qdev->ep, net_id, rt, svc_arr); + kfree(svc_arr); if (rc) return rc; From 52c3eb6f125b8da62b3eb8256eaa5ef83f619b5c Mon Sep 17 00:00:00 2001 From: Mukesh Ojha Date: Mon, 11 Dec 2023 15:09:42 +0530 Subject: [PATCH 2/4] qcom-dload-mode: Convert reboot notifier to restart notifier There could be chance of edl download mode written by qcom-dload-mode driver overwritten by Scm device shutdown call as the reboot notifiers gets called prior to device_shutdown in reboot path. To fix this convert the reboot notifiers to restart notifiers and keep its priority higher than scm restart handler so that warm reboot_mode set here should be seen by SCM restart handler (priority 130). Change-Id: I2daa41d04788e525f274323e9c815bf10cb79ed2 Signed-off-by: Mukesh Ojha Signed-off-by: Rohit Agarwal --- drivers/firmware/qcom_scm.c | 1 + drivers/power/reset/qcom-dload-mode.c | 36 +++++++++++---------------- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/drivers/firmware/qcom_scm.c b/drivers/firmware/qcom_scm.c index ea41ae1d5bf5..5b6543836b50 100644 --- a/drivers/firmware/qcom_scm.c +++ b/drivers/firmware/qcom_scm.c @@ -1229,6 +1229,7 @@ static void qcom_scm_shutdown(struct platform_device *pdev) { qcom_scm_disable_sdi(); qcom_scm_halt_spmi_pmic_arbiter(); + /* Clean shutdown, disable download mode to allow normal restart */ qcom_scm_set_download_mode(QCOM_DOWNLOAD_NODUMP, 0); } diff --git a/drivers/power/reset/qcom-dload-mode.c b/drivers/power/reset/qcom-dload-mode.c index 113db59c2aab..ec181d36f373 100644 --- a/drivers/power/reset/qcom-dload-mode.c +++ b/drivers/power/reset/qcom-dload-mode.c @@ -24,7 +24,7 @@ enum qcom_download_dest { struct qcom_dload { struct notifier_block panic_nb; - struct notifier_block reboot_nb; + struct notifier_block restart_nb; struct kobject kobj; bool in_panic; @@ -251,28 +251,15 @@ static int qcom_dload_panic(struct notifier_block *this, unsigned long event, return NOTIFY_OK; } -static int qcom_dload_reboot(struct notifier_block *this, unsigned long event, +static int qcom_dload_restart(struct notifier_block *this, unsigned long event, void *ptr) { char *cmd = ptr; - struct qcom_dload *poweroff = container_of(this, struct qcom_dload, - reboot_nb); - /* Clean shutdown, disable dump mode to allow normal restart */ - if (!poweroff->in_panic) - set_download_mode(QCOM_DOWNLOAD_NODUMP); - - if (cmd) { - if (!strcmp(cmd, "edl")) { - early_pcie_init_enable ? set_download_mode(QCOM_EDLOAD_PCI_MODE) - : set_download_mode(QCOM_DOWNLOAD_EDL); - } - else if (!strcmp(cmd, "qcom_dload")) - msm_enable_dump_mode(true); - } - - if (current_download_mode != QCOM_DOWNLOAD_NODUMP) + if (cmd && !strcmp(cmd, "edl")) { + set_download_mode(QCOM_DOWNLOAD_EDL); reboot_mode = REBOOT_WARM; + } return NOTIFY_OK; } @@ -381,9 +368,14 @@ static int qcom_dload_probe(struct platform_device *pdev) atomic_notifier_chain_register(&panic_notifier_list, &poweroff->panic_nb); - poweroff->reboot_nb.notifier_call = qcom_dload_reboot; - poweroff->reboot_nb.priority = 255; - register_reboot_notifier(&poweroff->reboot_nb); + poweroff->restart_nb.notifier_call = qcom_dload_restart; + /* Here, Restart handler priority should be higher than + * of restart handler present in scm driver so that + * reboot_mode set by this handler seen by SCM's one + * for EDL mode. + */ + poweroff->restart_nb.priority = 131; + register_restart_handler(&poweroff->restart_nb); platform_set_drvdata(pdev, poweroff); @@ -396,7 +388,7 @@ static int qcom_dload_remove(struct platform_device *pdev) atomic_notifier_chain_unregister(&panic_notifier_list, &poweroff->panic_nb); - unregister_reboot_notifier(&poweroff->reboot_nb); + unregister_restart_handler(&poweroff->restart_nb); if (poweroff->dload_dest_addr) iounmap(poweroff->dload_dest_addr); From 40d06eb6f1f4462665f848e8c94830f5cff5e3a7 Mon Sep 17 00:00:00 2001 From: Swetha Chikkaboraiah Date: Mon, 8 Jan 2024 19:52:01 +0530 Subject: [PATCH 3/4] soc: qcom: socinfo: Add soc information for BLAIR LTE Add SOC ID to support socinfo for BLAIR LTE platform. Change-Id: I5223272ef20eac2396e52fa910628ec8236eb1ed Signed-off-by: Swetha Chikkaboraiah --- drivers/soc/qcom/socinfo.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/soc/qcom/socinfo.c b/drivers/soc/qcom/socinfo.c index acd296faa0c4..7767793072f1 100644 --- a/drivers/soc/qcom/socinfo.c +++ b/drivers/soc/qcom/socinfo.c @@ -783,6 +783,7 @@ static const struct soc_id soc_id[] = { { 507, "BLAIR" }, { 565, "BLAIRP" }, { 628, "BLAIRP-XR" }, + { 647, "BLAIRP-LTE" }, { 486, "MONACO" }, { 458, "SDXLEMUR" }, { 483, "SDXLEMUR-SD"}, From c7fecf048114b69aca984a1068139e164da10792 Mon Sep 17 00:00:00 2001 From: Saranya R Date: Wed, 10 Jan 2024 17:28:00 +0530 Subject: [PATCH 4/4] soc: qcom: Add BLAIR-LITE SoC information to socinfo Add BLAIR-LITE SoC information to socinfo. Change-Id: I334a80508434ea3aaa972ecb0e2b72586e81dfca Signed-off-by: Saranya R --- drivers/soc/qcom/socinfo.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/soc/qcom/socinfo.c b/drivers/soc/qcom/socinfo.c index 7767793072f1..9db6b91b5d7b 100644 --- a/drivers/soc/qcom/socinfo.c +++ b/drivers/soc/qcom/socinfo.c @@ -781,6 +781,7 @@ static const struct soc_id soc_id[] = { { 450, "SHIMA" }, { 454, "HOLI" }, { 507, "BLAIR" }, + { 578, "BLAIR-LITE" }, { 565, "BLAIRP" }, { 628, "BLAIRP-XR" }, { 647, "BLAIRP-LTE" },