lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [day] [month] [year] [list]
Message-Id: <20250828092615.2114183-1-souradeep.chowdhury@oss.qualcomm.com>
Date: Thu, 28 Aug 2025 14:56:15 +0530
From: Souradeep Chowdhury <souradeep.chowdhury@....qualcomm.com>
To: Mathieu Poirier <mathieu.poirier@...aro.org>,
        Bjorn Andersson <andersson@...nel.org>,
        linux-remoteproc@...r.kernel.org, linux-kernel@...r.kernel.org
Cc: Souradeep Chowdhury <souradeep.chowdhury@....qualcomm.com>,
        Souradeep Chowdhury <quic_schowdhu@...cnc.com>,
        Mukesh Ojha <mukesh.ojha@....qualcomm.com>
Subject: [PATCH v7] remoteproc: Add device awake calls in rproc boot and shutdown path

If an user stops and starts rproc by using the sysfs interface, then on
pm suspension the firmware fails to load as the request_firmware call
under adsp_load relies on usermodehelper process via firmware_fallback_sysfs 
which gets frozen on pm suspension. Currently pm_awake calls are present 
in the recovery path, add the same in start and stop path of rproc for 
proper loading of the firmware in non-recovery path.  

Signed-off-by: Souradeep Chowdhury <quic_schowdhu@...cnc.com>
Signed-off-by: Souradeep Chowdhury <souradeep.chowdhury@....qualcomm.com>
Reviewed-by: Mukesh Ojha <mukesh.ojha@....qualcomm.com>
---
Changes in v7

*Justify this fix by adding more details in commit message

Changes in v6

*Add some correction to commit message

Changes in v5

*Added more details to commit description

Changes in v4

*Remove stability from mailing list
*Remove the extra tab in v3
*Change the commit description

 drivers/remoteproc/remoteproc_core.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c
index c2cf0d277729..5d6c4e694b4c 100644
--- a/drivers/remoteproc/remoteproc_core.c
+++ b/drivers/remoteproc/remoteproc_core.c
@@ -1917,6 +1917,7 @@ int rproc_boot(struct rproc *rproc)
 		return -EINVAL;
 	}
 
+	pm_stay_awake(rproc->dev.parent);
 	dev = &rproc->dev;
 
 	ret = mutex_lock_interruptible(&rproc->lock);
@@ -1961,6 +1962,7 @@ int rproc_boot(struct rproc *rproc)
 		atomic_dec(&rproc->power);
 unlock_mutex:
 	mutex_unlock(&rproc->lock);
+	pm_relax(rproc->dev.parent);
 	return ret;
 }
 EXPORT_SYMBOL(rproc_boot);
@@ -1991,6 +1993,7 @@ int rproc_shutdown(struct rproc *rproc)
 	struct device *dev = &rproc->dev;
 	int ret = 0;
 
+	pm_stay_awake(rproc->dev.parent);
 	ret = mutex_lock_interruptible(&rproc->lock);
 	if (ret) {
 		dev_err(dev, "can't lock rproc %s: %d\n", rproc->name, ret);
@@ -2027,6 +2030,7 @@ int rproc_shutdown(struct rproc *rproc)
 	rproc->table_ptr = NULL;
 out:
 	mutex_unlock(&rproc->lock);
+	pm_relax(rproc->dev.parent);
 	return ret;
 }
 EXPORT_SYMBOL(rproc_shutdown);
-- 
2.34.1


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ