Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1566223 > unrolled thread
| Started by | Sarangdhar Joshi <spjoshi@codeaurora.org> |
|---|---|
| First post | 2017-01-25 00:20 +0100 |
| Last post | 2017-01-25 00:20 +0100 |
| Articles | 2 — 1 participant |
Back to article view | Back to linux.kernel
[RFC][PATCH 1/2] remoteproc: Reduce asynchronous request_firmware to auto-boot only Sarangdhar Joshi <spjoshi@codeaurora.org> - 2017-01-25 00:20 +0100
[PATCH 2/2] remoteproc: Modify the function names Sarangdhar Joshi <spjoshi@codeaurora.org> - 2017-01-25 00:20 +0100
| From | Sarangdhar Joshi <spjoshi@codeaurora.org> |
|---|---|
| Date | 2017-01-25 00:20 +0100 |
| Subject | [RFC][PATCH 1/2] remoteproc: Reduce asynchronous request_firmware to auto-boot only |
| Message-ID | <t3ixz-2kV-3@gated-at.bofh.it> |
The rproc_add_virtio_devices() requests firmware asynchronously and
triggers boot if the auto_boot flag is set. However, this
asynchronous call seems to be redundant for non auto-boot scenario
since the rproc_boot() would call request_firmware() anyways. Move
the auto_boot check to rproc_add() so that a redundant call to
_request_firmware can be avoided for non auto-boot case.
Signed-off-by: Sarangdhar Joshi <spjoshi@codeaurora.org>
---
I'm requesting RFC on this patch since I'm not aware of any scenario
where we might need asynchronous firmware loading for non auto-boot case.
drivers/remoteproc/remoteproc_core.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c
index f58e634..16242b0 100644
--- a/drivers/remoteproc/remoteproc_core.c
+++ b/drivers/remoteproc/remoteproc_core.c
@@ -970,9 +970,7 @@ static void rproc_fw_config_virtio(const struct firmware *fw, void *context)
{
struct rproc *rproc = context;
- /* if rproc is marked always-on, request it to boot */
- if (rproc->auto_boot)
- rproc_boot(rproc);
+ rproc_boot(rproc);
release_firmware(fw);
}
@@ -1286,9 +1284,13 @@ int rproc_add(struct rproc *rproc)
/* create debugfs entries */
rproc_create_debug_dir(rproc);
- ret = rproc_add_virtio_devices(rproc);
- if (ret < 0)
- return ret;
+
+ /* if rproc is marked always-on, request it to boot */
+ if (rproc->auto_boot) {
+ ret = rproc_add_virtio_devices(rproc);
+ if (ret < 0)
+ return ret;
+ }
/* expose to rproc_get_by_phandle users */
mutex_lock(&rproc_list_mutex);
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
[toc] | [next] | [standalone]
| From | Sarangdhar Joshi <spjoshi@codeaurora.org> |
|---|---|
| Date | 2017-01-25 00:20 +0100 |
| Subject | [PATCH 2/2] remoteproc: Modify the function names |
| Message-ID | <t3ixA-2kV-9@gated-at.bofh.it> |
| In reply to | #1566223 |
The functions rproc_add_virtio_devices() and
rproc_fw_config_virtio() are reduced to trigger auto-boot
only. Modify these function names and related comments to
reflect their current state.
This patch does not add any functional change.
Signed-off-by: Sarangdhar Joshi <spjoshi@codeaurora.org>
---
drivers/remoteproc/remoteproc_core.c | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c
index 16242b0..c6b1d4a 100644
--- a/drivers/remoteproc/remoteproc_core.c
+++ b/drivers/remoteproc/remoteproc_core.c
@@ -959,14 +959,14 @@ static int rproc_fw_boot(struct rproc *rproc, const struct firmware *fw)
}
/*
- * take a firmware and look for virtio devices to register.
+ * take a firmware and boot it up.
*
* Note: this function is called asynchronously upon registration of the
* remote processor (so we must wait until it completes before we try
* to unregister the device. one other option is just to use kref here,
* that might be cleaner).
*/
-static void rproc_fw_config_virtio(const struct firmware *fw, void *context)
+static void rproc_auto_boot_callback(const struct firmware *fw, void *context)
{
struct rproc *rproc = context;
@@ -975,21 +975,17 @@ static void rproc_fw_config_virtio(const struct firmware *fw, void *context)
release_firmware(fw);
}
-static int rproc_add_virtio_devices(struct rproc *rproc)
+static int rproc_trigger_auto_boot(struct rproc *rproc)
{
int ret;
/*
- * We must retrieve early virtio configuration info from
- * the firmware (e.g. whether to register a virtio device,
- * what virtio features does it support, ...).
- *
* We're initiating an asynchronous firmware loading, so we can
* be built-in kernel code, without hanging the boot process.
*/
ret = request_firmware_nowait(THIS_MODULE, FW_ACTION_HOTPLUG,
rproc->firmware, &rproc->dev, GFP_KERNEL,
- rproc, rproc_fw_config_virtio);
+ rproc, rproc_auto_boot_callback);
if (ret < 0)
dev_err(&rproc->dev, "request_firmware_nowait err: %d\n", ret);
@@ -1287,7 +1283,7 @@ int rproc_add(struct rproc *rproc)
/* if rproc is marked always-on, request it to boot */
if (rproc->auto_boot) {
- ret = rproc_add_virtio_devices(rproc);
+ ret = rproc_trigger_auto_boot(rproc);
if (ret < 0)
return ret;
}
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web