Re: [PATCH v1] remoteproc: Add device awake calls in rproc boot and shutdown path

2025-03-16 Thread Souradeep Chowdhury




On 3/13/2025 3:33 PM, Greg KH wrote:

On Thu, Mar 13, 2025 at 02:42:10PM +0530, Souradeep Chowdhury wrote:

Gentle Reminder.


On 3/3/2025 2:38 PM, Souradeep Chowdhury wrote:

Add device awake calls in case of rproc boot and rproc shutdown path.
Currently, device awake call is only present in the recovery path
of remoteproc. If a user stops and starts rproc by using the sysfs
interface, then on pm suspension the firmware loading fails. Keep the
device awake in such a case just like it is done for the recovery path.

Signed-off-by: Souradeep Chowdhury 
---
   drivers/remoteproc/remoteproc_core.c | 6 +-
   1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/remoteproc/remoteproc_core.c 
b/drivers/remoteproc/remoteproc_core.c
index c2cf0d277729..908a7b8f6c7e 100644
--- a/drivers/remoteproc/remoteproc_core.c
+++ b/drivers/remoteproc/remoteproc_core.c
@@ -1916,7 +1916,8 @@ int rproc_boot(struct rproc *rproc)
pr_err("invalid rproc handle\n");
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);





This is not the correct way to submit patches for inclusion in the
stable kernel tree.  Please read:
 https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
for how to do this properly.



Thanks for the instructions, corrected in the next version.




Re: [PATCH v1] remoteproc: Add device awake calls in rproc boot and shutdown path

2025-03-13 Thread Souradeep Chowdhury

Gentle Reminder.


On 3/3/2025 2:38 PM, Souradeep Chowdhury wrote:

Add device awake calls in case of rproc boot and rproc shutdown path.
Currently, device awake call is only present in the recovery path
of remoteproc. If a user stops and starts rproc by using the sysfs
interface, then on pm suspension the firmware loading fails. Keep the
device awake in such a case just like it is done for the recovery path.

Signed-off-by: Souradeep Chowdhury 
---
  drivers/remoteproc/remoteproc_core.c | 6 +-
  1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/remoteproc/remoteproc_core.c 
b/drivers/remoteproc/remoteproc_core.c
index c2cf0d277729..908a7b8f6c7e 100644
--- a/drivers/remoteproc/remoteproc_core.c
+++ b/drivers/remoteproc/remoteproc_core.c
@@ -1916,7 +1916,8 @@ int rproc_boot(struct rproc *rproc)
pr_err("invalid rproc handle\n");
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);





Re: [PATCH v1] remoteproc: Add device awake calls in rproc boot and shutdown path

2025-03-13 Thread Greg KH
On Thu, Mar 13, 2025 at 02:42:10PM +0530, Souradeep Chowdhury wrote:
> Gentle Reminder.
> 
> 
> On 3/3/2025 2:38 PM, Souradeep Chowdhury wrote:
> > Add device awake calls in case of rproc boot and rproc shutdown path.
> > Currently, device awake call is only present in the recovery path
> > of remoteproc. If a user stops and starts rproc by using the sysfs
> > interface, then on pm suspension the firmware loading fails. Keep the
> > device awake in such a case just like it is done for the recovery path.
> > 
> > Signed-off-by: Souradeep Chowdhury 
> > ---
> >   drivers/remoteproc/remoteproc_core.c | 6 +-
> >   1 file changed, 5 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/remoteproc/remoteproc_core.c 
> > b/drivers/remoteproc/remoteproc_core.c
> > index c2cf0d277729..908a7b8f6c7e 100644
> > --- a/drivers/remoteproc/remoteproc_core.c
> > +++ b/drivers/remoteproc/remoteproc_core.c
> > @@ -1916,7 +1916,8 @@ int rproc_boot(struct rproc *rproc)
> > pr_err("invalid rproc handle\n");
> > 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);
> 
> 



This is not the correct way to submit patches for inclusion in the
stable kernel tree.  Please read:
https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
for how to do this properly.





[PATCH v1] remoteproc: Add device awake calls in rproc boot and shutdown path

2025-03-03 Thread Souradeep Chowdhury
Add device awake calls in case of rproc boot and rproc shutdown path.
Currently, device awake call is only present in the recovery path
of remoteproc. If a user stops and starts rproc by using the sysfs
interface, then on pm suspension the firmware loading fails. Keep the
device awake in such a case just like it is done for the recovery path.

Signed-off-by: Souradeep Chowdhury 
---
 drivers/remoteproc/remoteproc_core.c | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/remoteproc/remoteproc_core.c 
b/drivers/remoteproc/remoteproc_core.c
index c2cf0d277729..908a7b8f6c7e 100644
--- a/drivers/remoteproc/remoteproc_core.c
+++ b/drivers/remoteproc/remoteproc_core.c
@@ -1916,7 +1916,8 @@ int rproc_boot(struct rproc *rproc)
pr_err("invalid rproc handle\n");
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