From: Loic Pallardy <loic.pallardy@st.com>
To: <bjorn.andersson@linaro.org>, <ohad@wizery.com>
Cc: <linux-remoteproc@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <arnaud.pouliquen@st.com>,
<benjamin.gaignard@linaro.org>,
Loic Pallardy <loic.pallardy@st.com>
Subject: [PATCH v2 10/16] remoteproc: add memory device registering in rproc_add_carveout
Date: Thu, 30 Nov 2017 17:46:45 +0100 [thread overview]
Message-ID: <1512060411-729-11-git-send-email-loic.pallardy@st.com> (raw)
In-Reply-To: <1512060411-729-1-git-send-email-loic.pallardy@st.com>
Add the possibility to associate a memory device to
carveout.
Due to some memory mapping constraints, remoteproc related memory
allocations should be done in a specific memory region.
Constraint is not coming from remoteproc firmware (with defined
device address), but from remoteproc platform driver itself.
In that case, platform driver has to register a carveout region with
memory device. Memory device will be used for carveout, vring or buffer
allocation accorfing to its name.
Signed-off-by: Loic Pallardy <loic.pallardy@st.com>
---
drivers/remoteproc/remoteproc_core.c | 14 +++++++++++++-
drivers/remoteproc/st_remoteproc.c | 2 +-
include/linux/remoteproc.h | 3 ++-
3 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c
index 76d54bf..2b7effb 100644
--- a/drivers/remoteproc/remoteproc_core.c
+++ b/drivers/remoteproc/remoteproc_core.c
@@ -964,17 +964,29 @@ static int rproc_handle_carveout(struct rproc *rproc,
* rproc_add_carveout() - register an allocated carveout region
* @rproc: rproc handle
* @mem: memory entry to register
+ * @memdev: true if carveout shoult be associated to a memory device
*
* This function registers specified memory entry in @rproc carveouts list.
* Specified carveout should have been allocated before registering.
*/
-int rproc_add_carveout(struct rproc *rproc, struct rproc_mem_entry *mem)
+int rproc_add_carveout(struct rproc *rproc, struct rproc_mem_entry *mem, bool memdev)
{
+ struct rproc_memdev *memd;
+
if (!rproc || !mem)
return -EINVAL;
mem->priv = (void *)CARVEOUT_EXTERNAL;
+ if (memdev) {
+ memd = rproc_memdev_add(rproc, mem);
+ if (IS_ERR(memd))
+ return -ENOMEM;
+ mem->memdev = memd;
+ } else {
+ mem->memdev = NULL;
+ }
+
list_add_tail(&mem->node, &rproc->carveouts);
return 0;
diff --git a/drivers/remoteproc/st_remoteproc.c b/drivers/remoteproc/st_remoteproc.c
index 1549ce8..da42ec9 100644
--- a/drivers/remoteproc/st_remoteproc.c
+++ b/drivers/remoteproc/st_remoteproc.c
@@ -286,7 +286,7 @@ static int st_rproc_parse_dt(struct platform_device *pdev)
return -EBUSY;
}
- rproc_add_carveout(rproc, mem);
+ rproc_add_carveout(rproc, mem, false);
}
err = clk_prepare(ddata->clk);
diff --git a/include/linux/remoteproc.h b/include/linux/remoteproc.h
index 66e6863..d7e7485 100644
--- a/include/linux/remoteproc.h
+++ b/include/linux/remoteproc.h
@@ -325,6 +325,7 @@ struct rproc_mem_entry {
u32 da;
int (*release)(struct rproc *rproc, struct rproc_mem_entry *mem);
void *priv;
+ struct rproc_memdev *memdev;
char name[32];
struct list_head node;
};
@@ -524,7 +525,7 @@ struct rproc *rproc_alloc(struct device *dev, const char *name,
int rproc_del(struct rproc *rproc);
void rproc_free(struct rproc *rproc);
-int rproc_add_carveout(struct rproc *rproc, struct rproc_mem_entry *mem);
+int rproc_add_carveout(struct rproc *rproc, struct rproc_mem_entry *mem, bool memdev);
int rproc_boot(struct rproc *rproc);
void rproc_shutdown(struct rproc *rproc);
--
1.9.1
next prev parent reply other threads:[~2017-11-30 16:49 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-30 16:46 [PATCH v2 00/16] remoteproc: add fixed memory region support Loic Pallardy
2017-11-30 16:46 ` [PATCH v2 01/16] remoteproc: add rproc_va_to_pa function Loic Pallardy
2017-12-14 0:30 ` Bjorn Andersson
2018-01-12 7:43 ` Loic PALLARDY
2017-11-30 16:46 ` [PATCH v2 02/16] remoteproc: add release ops in rproc_mem_entry struct Loic Pallardy
2017-12-14 0:34 ` Bjorn Andersson
2018-01-12 7:43 ` Loic PALLARDY
2017-11-30 16:46 ` [PATCH v2 03/16] remoteproc: introduce rproc_add_carveout function Loic Pallardy
2017-12-14 0:36 ` Bjorn Andersson
2018-01-12 7:45 ` Loic PALLARDY
2017-11-30 16:46 ` [PATCH v2 04/16] remoteproc: introduce rproc_find_carveout_by_da Loic Pallardy
2017-12-14 0:45 ` Bjorn Andersson
2018-01-12 7:48 ` Loic PALLARDY
2017-11-30 16:46 ` [PATCH v2 05/16] remoteproc: modify rproc_handle_carveout to support preallocated region Loic Pallardy
2017-12-14 0:59 ` Bjorn Andersson
2018-01-12 7:56 ` Loic PALLARDY
2018-10-23 17:40 ` Suman Anna
2018-10-23 19:09 ` Loic PALLARDY
2018-10-23 19:12 ` Suman Anna
2017-11-30 16:46 ` [PATCH v2 06/16] remoteproc: modify vring allocation " Loic Pallardy
2017-12-14 1:09 ` Bjorn Andersson
2018-01-12 8:13 ` Loic PALLARDY
2017-11-30 16:46 ` [PATCH v2 07/16] remoteproc: st: add reserved memory support Loic Pallardy
2017-12-14 1:15 ` Bjorn Andersson
2018-01-12 8:19 ` Loic PALLARDY
2017-11-30 16:46 ` [PATCH v2 08/16] remoteproc: add name in rproc_mem_entry struct Loic Pallardy
2017-12-14 1:21 ` Bjorn Andersson
2018-01-12 8:19 ` Loic PALLARDY
2017-11-30 16:46 ` [PATCH v2 09/16] remoteproc: add memory device management support Loic Pallardy
2017-11-30 16:46 ` Loic Pallardy [this message]
2017-12-14 1:29 ` [PATCH v2 10/16] remoteproc: add memory device registering in rproc_add_carveout Bjorn Andersson
2018-01-15 9:09 ` Loic PALLARDY
2017-11-30 16:46 ` [PATCH v2 11/16] remoteproc: introduce rproc_find_carveout_by_name function Loic Pallardy
2017-12-14 1:32 ` Bjorn Andersson
2018-01-15 9:10 ` Loic PALLARDY
2017-11-30 16:46 ` [PATCH v2 12/16] remoteproc: look-up memory-device for vring allocation Loic Pallardy
2017-12-14 1:44 ` Bjorn Andersson
2018-01-15 20:44 ` Loic PALLARDY
2017-11-30 16:46 ` [PATCH v2 13/16] remoteproc: look-up memory-device for virtio device allocation Loic Pallardy
2017-12-14 5:32 ` Bjorn Andersson
2018-01-15 20:57 ` Loic PALLARDY
2017-11-30 16:46 ` [PATCH v2 14/16] remoteproc: look-up pre-registered carveout by name for carveout allocation Loic Pallardy
2017-12-14 5:34 ` Bjorn Andersson
2018-01-15 20:59 ` Loic PALLARDY
2017-11-30 16:46 ` [PATCH v2 15/16] remoteproc: st: associate memory device to memory regions Loic Pallardy
2017-12-14 5:37 ` Bjorn Andersson
2018-01-15 21:04 ` Loic PALLARDY
2017-11-30 16:46 ` [PATCH v2 16/16] rpmsg: virtio: allocate buffer from parent Loic Pallardy
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=1512060411-729-11-git-send-email-loic.pallardy@st.com \
--to=loic.pallardy@st.com \
--cc=arnaud.pouliquen@st.com \
--cc=benjamin.gaignard@linaro.org \
--cc=bjorn.andersson@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-remoteproc@vger.kernel.org \
--cc=ohad@wizery.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).