From: Wendy Liang <wendy.liang@xilinx.com>
To: <bjorn.andersson@linaro.org>
Cc: <linux-remoteproc@vger.kernel.org>,
<linux-kernel@vger.kernel.org>,
"Wendy Liang" <wendy.liang@xilinx.com>,
Wendy Liang <jliang@xilinx.com>,
Michal Simek <michal.simek@xilinx.com>
Subject: [RFC LINUX PATCH 11/19] remoteproc: Add rproc_idr_alloc/remove wrapper
Date: Fri, 24 Mar 2017 12:22:27 -0700 [thread overview]
Message-ID: <1490383355-23176-12-git-send-email-jliang@xilinx.com> (raw)
In-Reply-To: <1490383355-23176-1-git-send-email-jliang@xilinx.com>
From: Wendy Liang <wendy.liang@xilinx.com>
Add rproc_idr_alloc()/rproc_idr_remove() wrapper for
id allocation/removal.
Signed-off-by: Wendy Liang <jliang@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
---
drivers/remoteproc/remoteproc_core.c | 46 ++++++++++++++++++++++++++++++++
drivers/remoteproc/remoteproc_internal.h | 6 +++++
2 files changed, 52 insertions(+)
diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c
index e4fb289..d711345 100644
--- a/drivers/remoteproc/remoteproc_core.c
+++ b/drivers/remoteproc/remoteproc_core.c
@@ -140,6 +140,52 @@ static void rproc_disable_iommu(struct rproc *rproc)
}
/**
+ * rproc_idr_alloc() - allocate id with idr_alloc()
+ * @rproc: handle of a remote processor
+ * @ptr: pointer to the resource to allocate id for
+ * @rsc_type: type of the resource for which to allocate id
+ * @start: start id
+ * @end: end id
+ *
+ * This function returns an ID from idr_alloc() or negative number
+ * if it fails.
+ */
+int rproc_idr_alloc(struct rproc *rproc, void *ptr, unsigned int rsc_type,
+ int start, int end)
+{
+ struct rproc_id_rsc *rsc;
+ int ret;
+
+ rsc = kzalloc(sizeof(*rsc), GFP_KERNEL);
+ if (!rsc)
+ return -ENOMEM;
+
+ rsc->rsc_ptr = ptr;
+ rsc->rsc_type = rsc_type;
+
+ ret = idr_alloc(&rproc->notifyids, rsc, start, end, GFP_KERNEL);
+ if (ret < 0)
+ kfree(rsc);
+ return ret;
+}
+
+/**
+ * rproc_idr_remove() - remove id with idr_remove()
+ * @rproc: handle of a remote processor
+ * @id: id to remove
+ */
+void rproc_idr_remove(struct rproc *rproc, int id)
+{
+ struct rproc_id_rsc *rsc;
+
+ rsc = idr_find(&rproc->notifyids, id);
+ if (!rsc)
+ return;
+ idr_remove(&rproc->notifyids, id);
+ kfree(rsc);
+}
+
+/**
* rproc_da_to_va() - lookup the kernel virtual address for a remoteproc address
* @rproc: handle of a remote processor
* @da: remoteproc device address to translate
diff --git a/drivers/remoteproc/remoteproc_internal.h b/drivers/remoteproc/remoteproc_internal.h
index 7e25621..865bd1c 100644
--- a/drivers/remoteproc/remoteproc_internal.h
+++ b/drivers/remoteproc/remoteproc_internal.h
@@ -94,6 +94,12 @@ struct dentry *rproc_create_trace_file(const char *name, struct rproc *rproc,
int rproc_init_sysfs(void);
void rproc_exit_sysfs(void);
+/* rproc idr_alloc wrapper */
+int rproc_idr_alloc(struct rproc *rproc, void *ptr, unsigned int rsc_type,
+ int start, int end);
+/* rproc idr_remove wrapper */
+void rproc_idr_remove(struct rproc *rproc, int id);
+
void rproc_free_vring(struct rproc_vring *rvring);
int rproc_alloc_vring(struct rproc_vdev *rvdev, int i);
--
1.9.1
next prev parent reply other threads:[~2017-03-24 19:31 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-24 19:22 [RFC LINUX PATCH 00/19] Allow master to restart without restarting slave Wendy Liang
2017-03-24 19:22 ` [RFC LINUX PATCH 01/19] remoteproc: Add is_runinng to remoteproc ops Wendy Liang
2017-03-24 19:22 ` [RFC LINUX PATCH 02/19] remtoeproc: Add an operation to check if remote is running Wendy Liang
2017-03-24 19:22 ` [RFC LINUX PATCH 03/19] remoteproc: Add a running independent state Wendy Liang
2017-03-24 19:22 ` [RFC LINUX PATCH 04/19] remoteproc: sysfs: Add " Wendy Liang
2017-03-24 19:22 ` [RFC LINUX PATCH 05/19] remoteproc: check if remote is running the fw before reload fw Wendy Liang
2017-03-24 19:22 ` [RFC LINUX PATCH 06/19] remoteproc: elf loader: Add get checksum firmware implementation Wendy Liang
2017-03-24 19:22 ` [RFC LINUX PATCH 07/19] remoteproc: Add firmware checksum resource entry Wendy Liang
2017-03-24 19:22 ` [RFC LINUX PATCH 08/19] remoteproc: add a function to set fw checksum rsc Wendy Liang
2017-03-24 19:22 ` [RFC LINUX PATCH 09/19] remoteproc: check firmware checksum in rproc_is_running_fw() Wendy Liang
2017-03-24 19:22 ` [RFC LINUX PATCH 10/19] remoteproc: Add rproc resource with id struct Wendy Liang
2017-03-24 19:22 ` Wendy Liang [this message]
2017-03-24 19:22 ` [RFC LINUX PATCH 12/19] remoteproc: use rproc_id_rsc for data got from idr_find() Wendy Liang
2017-03-24 19:22 ` [RFC LINUX PATCH 13/19] remoteproc: add config_wait_complete to rproc_vdev Wendy Liang
2017-03-24 19:22 ` [RFC LINUX PATCH 14/19] remoteproc virtio: handle rproc vdev notification Wendy Liang
2017-03-24 19:22 ` [RFC LINUX PATCH 15/19] remoteproc: virtio: rename rproc_virtio_notify to rproc_vq_notify Wendy Liang
2017-03-24 19:22 ` [RFC LINUX PATCH 16/19] remoteproc: virtio: use rproc_virtio_notify() to notify vdev changes Wendy Liang
2017-03-24 19:22 ` [RFC LINUX PATCH 17/19] remoteproc: virtio: kick in reset virtio Wendy Liang
2017-03-24 19:22 ` [RFC LINUX PATCH 18/19] remoteproc: shutdown: set state to OFFLINE after stopping remote Wendy Liang
2017-03-24 19:22 ` [RFC LINUX PATCH 19/19] remoteproc: virtio: idr_alloc for rvdev Wendy Liang
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=1490383355-23176-12-git-send-email-jliang@xilinx.com \
--to=wendy.liang@xilinx.com \
--cc=bjorn.andersson@linaro.org \
--cc=jliang@xilinx.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-remoteproc@vger.kernel.org \
--cc=michal.simek@xilinx.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
all inboxes | Powered by JetHome®