From: Bjorn Andersson <bjorn.andersson@linaro.org>
To: Paul Cercueil <paul@crapouillou.net>
Cc: Ohad Ben-Cohen <ohad@wizery.com>,
Arnaud Pouliquen <arnaud.pouliquen@st.com>,
od@zcrc.me, linux-remoteproc@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 3/5] remoteproc: Add support for runtime PM
Date: Sun, 19 Apr 2020 23:49:53 -0700 [thread overview]
Message-ID: <20200420064950.GC1868936@builder.lan> (raw)
In-Reply-To: <20200417170040.174319-3-paul@crapouillou.net>
On Fri 17 Apr 10:00 PDT 2020, Paul Cercueil wrote:
> Call pm_runtime_get_sync() before the firmware is loaded, and
> pm_runtime_put() after the remote processor has been stopped.
>
> Even though the remoteproc device has no PM callbacks, this allows the
> parent device's PM callbacks to be properly called.
>
> Signed-off-by: Paul Cercueil <paul@crapouillou.net>
>
> Notes:
> v2-v4: No change
> v5: Move calls to prepare/unprepare to rproc_fw_boot/rproc_shutdown
> v6: Instead of prepare/unprepare callbacks, use PM runtime callbacks
>
> drivers/remoteproc/remoteproc_core.c | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c
> index a7f96bc98406..d391b054efd8 100644
> --- a/drivers/remoteproc/remoteproc_core.c
> +++ b/drivers/remoteproc/remoteproc_core.c
> @@ -29,6 +29,7 @@
> #include <linux/devcoredump.h>
> #include <linux/rculist.h>
> #include <linux/remoteproc.h>
> +#include <linux/pm_runtime.h>
> #include <linux/iommu.h>
> #include <linux/idr.h>
> #include <linux/elf.h>
> @@ -1384,6 +1385,8 @@ static int rproc_fw_boot(struct rproc *rproc, const struct firmware *fw)
>
> dev_info(dev, "Booting fw image %s, size %zd\n", name, fw->size);
>
> + pm_runtime_get_sync(dev);
This can return an error, should we ignore this?
Apart from that this looks good.
Regards,
Bjorn
> +
> /*
> * if enabling an IOMMU isn't relevant for this rproc, this is
> * just a nop
> @@ -1391,7 +1394,7 @@ static int rproc_fw_boot(struct rproc *rproc, const struct firmware *fw)
> ret = rproc_enable_iommu(rproc);
> if (ret) {
> dev_err(dev, "can't enable iommu: %d\n", ret);
> - return ret;
> + goto put_pm_runtime;
> }
>
> rproc->bootaddr = rproc_get_boot_addr(rproc, fw);
> @@ -1435,6 +1438,8 @@ static int rproc_fw_boot(struct rproc *rproc, const struct firmware *fw)
> rproc->table_ptr = NULL;
> disable_iommu:
> rproc_disable_iommu(rproc);
> +put_pm_runtime:
> + pm_runtime_put(dev);
> return ret;
> }
>
> @@ -1840,6 +1845,8 @@ void rproc_shutdown(struct rproc *rproc)
>
> rproc_disable_iommu(rproc);
>
> + pm_runtime_put(dev);
> +
> /* Free the copy of the resource table */
> kfree(rproc->cached_table);
> rproc->cached_table = NULL;
> @@ -2118,6 +2125,9 @@ struct rproc *rproc_alloc(struct device *dev, const char *name,
>
> rproc->state = RPROC_OFFLINE;
>
> + pm_runtime_no_callbacks(&rproc->dev);
> + pm_runtime_enable(&rproc->dev);
> +
> return rproc;
> }
> EXPORT_SYMBOL(rproc_alloc);
> @@ -2133,6 +2143,7 @@ EXPORT_SYMBOL(rproc_alloc);
> */
> void rproc_free(struct rproc *rproc)
> {
> + pm_runtime_disable(&rproc->dev);
> put_device(&rproc->dev);
> }
> EXPORT_SYMBOL(rproc_free);
> --
> 2.25.1
>
WARNING: multiple messages have this Message-ID (diff)
From: Bjorn Andersson <bjorn.andersson@linaro.org>
To: Paul Cercueil <paul@crapouillou.net>
Cc: Ohad Ben-Cohen <ohad@wizery.com>,
Arnaud Pouliquen <arnaud.pouliquen@st.com>,
od@zcrc.me, linux-remoteproc@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 3/5] remoteproc: Add support for runtime PM
Date: Sun, 19 Apr 2020 23:49:50 -0700 [thread overview]
Message-ID: <20200420064950.GC1868936@builder.lan> (raw)
Message-ID: <20200420064950.8NIK7nXn-daGcSrDFTnuSxziXcpZXk5yxgZzKeWwg9s@z> (raw)
In-Reply-To: <20200417170040.174319-3-paul@crapouillou.net>
On Fri 17 Apr 10:00 PDT 2020, Paul Cercueil wrote:
> Call pm_runtime_get_sync() before the firmware is loaded, and
> pm_runtime_put() after the remote processor has been stopped.
>
> Even though the remoteproc device has no PM callbacks, this allows the
> parent device's PM callbacks to be properly called.
>
> Signed-off-by: Paul Cercueil <paul@crapouillou.net>
>
> Notes:
> v2-v4: No change
> v5: Move calls to prepare/unprepare to rproc_fw_boot/rproc_shutdown
> v6: Instead of prepare/unprepare callbacks, use PM runtime callbacks
>
> drivers/remoteproc/remoteproc_core.c | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c
> index a7f96bc98406..d391b054efd8 100644
> --- a/drivers/remoteproc/remoteproc_core.c
> +++ b/drivers/remoteproc/remoteproc_core.c
> @@ -29,6 +29,7 @@
> #include <linux/devcoredump.h>
> #include <linux/rculist.h>
> #include <linux/remoteproc.h>
> +#include <linux/pm_runtime.h>
> #include <linux/iommu.h>
> #include <linux/idr.h>
> #include <linux/elf.h>
> @@ -1384,6 +1385,8 @@ static int rproc_fw_boot(struct rproc *rproc, const struct firmware *fw)
>
> dev_info(dev, "Booting fw image %s, size %zd\n", name, fw->size);
>
> + pm_runtime_get_sync(dev);
This can return an error, should we ignore this?
Apart from that this looks good.
Regards,
Bjorn
> +
> /*
> * if enabling an IOMMU isn't relevant for this rproc, this is
> * just a nop
> @@ -1391,7 +1394,7 @@ static int rproc_fw_boot(struct rproc *rproc, const struct firmware *fw)
> ret = rproc_enable_iommu(rproc);
> if (ret) {
> dev_err(dev, "can't enable iommu: %d\n", ret);
> - return ret;
> + goto put_pm_runtime;
> }
>
> rproc->bootaddr = rproc_get_boot_addr(rproc, fw);
> @@ -1435,6 +1438,8 @@ static int rproc_fw_boot(struct rproc *rproc, const struct firmware *fw)
> rproc->table_ptr = NULL;
> disable_iommu:
> rproc_disable_iommu(rproc);
> +put_pm_runtime:
> + pm_runtime_put(dev);
> return ret;
> }
>
> @@ -1840,6 +1845,8 @@ void rproc_shutdown(struct rproc *rproc)
>
> rproc_disable_iommu(rproc);
>
> + pm_runtime_put(dev);
> +
> /* Free the copy of the resource table */
> kfree(rproc->cached_table);
> rproc->cached_table = NULL;
> @@ -2118,6 +2125,9 @@ struct rproc *rproc_alloc(struct device *dev, const char *name,
>
> rproc->state = RPROC_OFFLINE;
>
> + pm_runtime_no_callbacks(&rproc->dev);
> + pm_runtime_enable(&rproc->dev);
> +
> return rproc;
> }
> EXPORT_SYMBOL(rproc_alloc);
> @@ -2133,6 +2143,7 @@ EXPORT_SYMBOL(rproc_alloc);
> */
> void rproc_free(struct rproc *rproc)
> {
> + pm_runtime_disable(&rproc->dev);
> put_device(&rproc->dev);
> }
> EXPORT_SYMBOL(rproc_free);
> --
> 2.25.1
>
next prev parent reply other threads:[~2020-04-20 6:49 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-17 17:00 [PATCH v6 1/5] dt-bindings: Document JZ47xx VPU auxiliary processor Paul Cercueil
2020-04-17 17:00 ` [PATCH v6 2/5] remoteproc: Add device-managed variants of rproc_alloc/rproc_add Paul Cercueil
2020-04-20 6:46 ` Bjorn Andersson
2020-04-20 6:46 ` Bjorn Andersson
2020-04-20 6:46 ` Bjorn Andersson
2020-04-17 17:00 ` [PATCH v6 3/5] remoteproc: Add support for runtime PM Paul Cercueil
2020-04-20 6:49 ` Bjorn Andersson [this message]
2020-04-20 6:49 ` Bjorn Andersson
2020-04-20 6:49 ` Bjorn Andersson
2020-04-17 17:00 ` [PATCH v6 4/5] remoteproc: ingenic: Added remoteproc driver Paul Cercueil
2020-04-20 6:37 ` Bjorn Andersson
2020-04-20 6:37 ` Bjorn Andersson
2020-04-20 6:37 ` Bjorn Andersson
2020-04-21 15:43 ` Paul Cercueil
2020-05-12 0:10 ` Bjorn Andersson
2020-04-17 17:00 ` [PATCH v6 5/5] MAINTAINERS: Add myself as reviewer for Ingenic rproc driver Paul Cercueil
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200420064950.GC1868936@builder.lan \
--to=bjorn.andersson@linaro.org \
--cc=arnaud.pouliquen@st.com \
--cc=devicetree@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-remoteproc@vger.kernel.org \
--cc=od@zcrc.me \
--cc=ohad@wizery.com \
--cc=paul@crapouillou.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.