From: Ohad Ben-Cohen <ohad@wizery.com>
To: Grant Likely <grant.likely@secretlab.ca>
Cc: linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, akpm@linux-foundation.org,
Brian Swetland <swetland@google.com>,
Arnd Bergmann <arnd@arndb.de>,
davinci-linux-open-source
<davinci-linux-open-source@linux.davincidsp.com>,
Rusty Russell <rusty@rustcorp.com.au>
Subject: Re: [RFC 7/8] drivers: introduce rpmsg, a remote-processor messaging bus
Date: Wed, 29 Jun 2011 01:46:44 +0300 [thread overview]
Message-ID: <BANLkTikt08CDJiKNxGF2mKmOhyxHfv21_g@mail.gmail.com> (raw)
In-Reply-To: <20110627222121.GD20865@ponder.secretlab.ca>
Hi Grant,
On Tue, Jun 28, 2011 at 1:21 AM, Grant Likely <grant.likely@secretlab.ca> wrote:
> Nice patch. I'm quite thrilled to see this implemented. Some
> comments below, but otherwise I think it looks pretty good.
Thanks !
>> +source "drivers/virtio/Kconfig"
>
> What happens when kvm and rpmsg both get enabled on the same kernel.
Sounds to me that eventually we'll have to source virtio's Kconfig in
drivers/Kconfig, and remove all the other locations it is sourced at
(currently it is directly sourced by several arch Kconfigs when
VIRTUALIZATION is selected).
>> + if (strncmp(id->name, rpdev->id.name, RPMSG_NAME_SIZE))
>> + return 0;
>> +
>> + return 1;
>> +}
>
> or simply: 'return strncmp(id->name, rpdev->id.name, RPMSG_NAME_SIZE) == 0;'
>
> :-)
that works too ;)
>> + spin_lock(&vrp->endpoints_lock);
>
> Is a spin_lock the right choice for endpoints, or should it be a
> mutex (do the endpoints operations need to be atomic)?
Today it can be a mutex: it protects idr operations invoked either by
users (creating new endpoints, definitely not requiring atomicity) or
by platform code indicating that a new message has arrived (today it's
omap's mailbox driver, which calls from a process context).
I can change that, and if someone requires atomic operations later on,
move to spinlocks again.
But it probably won't matter too much as there's no contention on that
lock today (notifications coming from omap's mailbox are serialized,
and users creating new endpoints show up very infrequently).
> At put_device time, it is conceivable that the dev pointer is no
> longer valid. You'll need to get do the to_rpmsg_channel() before
> putting the dev.
sure.
>> +static void rpmsg_upref_sleepers(struct virtproc_info *vrp)
>> +{
>> + /* support multiple concurrent senders */
>> + spin_lock(&vrp->tx_lock);
>> +
>> + /* are we the first sleeping context waiting for tx buffers ? */
>> + if (!vrp->sleepers++)
>
> Maybe use a kref?
I can change it to an atomic variable, but I don't think kref's memory
barriers are needed here: we already have memory barriers induced by
the spinlock.
>> +static int rpmsg_remove_device(struct device *dev, void *data)
>> +{
>> + struct rpmsg_channel *rpdev = to_rpmsg_channel(dev);
>> +
>> + device_unregister(dev);
>> +
>> + kfree(rpdev);
>
> put_device() I think.
Don't think so, we get the device handle from device_for_each_child
here, which doesn't call get_device (unlike device_find_child).
>> +static int __init init(void)
>
> Even for static functions, it's a really good idea to prefix all
> function names and file scoped symbol with a common prefix like
> "rpmsg_". Doing so avoids even the outside chance of a namespace
> conflict.
Sure thing.
>> + ret = bus_register(&rpmsg_bus);
>> + if (ret) {
>> + pr_err("failed to register rpmsg bus: %d\n", ret);
>> + return ret;
>> + }
>> +
>> + return register_virtio_driver(&virtio_ipc_driver);
>
> And if register_virtio_driver fails?
I'll handle that, thanks.
>> +struct rpmsg_device_id {
>> + char name[RPMSG_NAME_SIZE];
>> + kernel_ulong_t driver_data /* Data private to the driver */
>> + __attribute__((aligned(sizeof(kernel_ulong_t))));
>> +};
>
> Should this be co-located with vio_device_id?
Sure, can't hurt (I assume you meant virtio_device_id here).
> It makes it easier to dereference in kernel code if you do:
>
> #ifdef __KERNEL__
> void *data;
> #else
> kernel_ulong_t data;
> #endif
Sure thing.
Thanks!
Ohad.
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2011-06-28 22:47 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-21 7:18 [RFC 0/8] Introducing a generic AMP/IPC framework Ohad Ben-Cohen
2011-06-21 7:18 ` [RFC 1/8] drivers: add generic remoteproc framework Ohad Ben-Cohen
2011-06-22 17:55 ` Randy Dunlap
2011-06-22 19:11 ` Ohad Ben-Cohen
[not found] ` <1308640714-17961-2-git-send-email-ohad-Ix1uc/W3ht7QT0dZR+AlfA@public.gmane.org>
2011-06-27 20:49 ` Grant Likely
[not found] ` <20110627204958.GB20865-e0URQFbLeQY2iJbIjFUEsiwD8/FfD2ys@public.gmane.org>
2011-06-27 21:52 ` Grosen, Mark
2011-06-27 22:24 ` Grant Likely
[not found] ` <20110627222401.GE20865-e0URQFbLeQY2iJbIjFUEsiwD8/FfD2ys@public.gmane.org>
2011-06-27 23:54 ` Grosen, Mark
2011-06-27 23:29 ` Russell King - ARM Linux
2011-06-27 23:35 ` Grant Likely
2011-06-28 21:55 ` Ohad Ben-Cohen
2011-06-28 21:41 ` Ohad Ben-Cohen
2011-06-21 7:18 ` [RFC 2/8] remoteproc: add omap implementation Ohad Ben-Cohen
2011-06-22 10:05 ` Will Newton
2011-06-22 10:50 ` Ohad Ben-Cohen
2011-06-27 21:00 ` Grant Likely
2011-06-29 15:04 ` Ohad Ben-Cohen
2011-06-29 15:31 ` Grant Likely
2011-06-21 7:18 ` [RFC 3/8] omap: add carveout memory support for remoteproc Ohad Ben-Cohen
2011-06-21 7:18 ` [RFC 4/8] omap: add remoteproc devices Ohad Ben-Cohen
2011-06-21 7:18 ` [RFC 5/8] remoteproc: add davinci implementation Ohad Ben-Cohen
2011-06-23 15:27 ` Sergei Shtylyov
[not found] ` <4E035B78.3080200-Igf4POYTYCDQT0dZR+AlfA@public.gmane.org>
2011-06-24 4:25 ` Grosen, Mark
2011-06-24 15:13 ` Sergei Shtylyov
2011-06-24 15:43 ` Nori, Sekhar
[not found] ` <B85A65D85D7EB246BE421B3FB0FBB593024D6C2F29-/tLxBxkBPtCIQmiDNMet8wC/G2K4zDHf@public.gmane.org>
2011-06-27 18:31 ` Grosen, Mark
[not found] ` <FFF198FBBF957F4393BA834040FEFFA202EC99-Jq/I0xf/SMGIQmiDNMet8wC/G2K4zDHf@public.gmane.org>
2011-07-05 5:29 ` Nori, Sekhar
[not found] ` <B85A65D85D7EB246BE421B3FB0FBB593024D91A2BE-/tLxBxkBPtCIQmiDNMet8wC/G2K4zDHf@public.gmane.org>
2011-07-05 16:54 ` Grosen, Mark
2011-07-05 5:34 ` Nori, Sekhar
[not found] ` <B85A65D85D7EB246BE421B3FB0FBB593024D91A2CC-/tLxBxkBPtCIQmiDNMet8wC/G2K4zDHf@public.gmane.org>
2011-07-05 16:54 ` Grosen, Mark
[not found] ` <FFF198FBBF957F4393BA834040FEFFA2032F6F-Jq/I0xf/SMGIQmiDNMet8wC/G2K4zDHf@public.gmane.org>
2011-07-06 4:36 ` Nori, Sekhar
[not found] ` <4E04A9AE.3030801-Igf4POYTYCDQT0dZR+AlfA@public.gmane.org>
2011-06-27 18:20 ` Grosen, Mark
[not found] ` <FFF198FBBF957F4393BA834040FEFFA202EC68-Jq/I0xf/SMGIQmiDNMet8wC/G2K4zDHf@public.gmane.org>
2011-06-28 9:36 ` Nori, Sekhar
2011-06-21 7:18 ` [RFC 6/8] davinci: da850: add remoteproc dsp device Ohad Ben-Cohen
[not found] ` <1308640714-17961-7-git-send-email-ohad-Ix1uc/W3ht7QT0dZR+AlfA@public.gmane.org>
2011-06-28 10:18 ` Sergei Shtylyov
2011-06-21 7:18 ` [RFC 7/8] drivers: introduce rpmsg, a remote-processor messaging bus Ohad Ben-Cohen
2011-06-09 17:12 ` Pavel Machek
2011-07-19 5:38 ` Ohad Ben-Cohen
2011-06-22 2:42 ` Rusty Russell
2011-06-22 3:11 ` Sasha Levin
2011-06-22 10:46 ` Ohad Ben-Cohen
2011-09-14 18:38 ` Ohad Ben-Cohen
2011-09-15 0:12 ` Rusty Russell
2011-09-15 14:56 ` Ohad Ben-Cohen
2011-06-27 22:21 ` Grant Likely
2011-06-28 22:46 ` Ohad Ben-Cohen [this message]
2011-06-28 22:51 ` Grant Likely
2011-06-28 23:00 ` Ohad Ben-Cohen
2011-06-29 15:43 ` Grant Likely
2011-07-01 15:13 ` Ohad Ben-Cohen
2011-06-28 23:44 ` Randy Dunlap
2011-06-29 6:30 ` Ohad Ben-Cohen
2011-06-29 11:59 ` Arnd Bergmann
2011-06-29 12:29 ` Ohad Ben-Cohen
2011-06-21 7:18 ` [RFC 8/8] rpmsg: add omap host backend Ohad Ben-Cohen
2011-06-21 7:50 ` [RFC 0/8] Introducing a generic AMP/IPC framework Ohad Ben-Cohen
2011-06-21 9:30 ` Ohad Ben-Cohen
2011-06-21 14:20 ` Arnd Bergmann
2011-06-21 15:54 ` Grant Likely
2011-06-22 11:41 ` Ohad Ben-Cohen
2011-06-22 13:05 ` Arnd Bergmann
2011-06-22 13:09 ` Ohad Ben-Cohen
2011-06-23 12:23 ` Michael Williamson
[not found] ` <4E033041.9090606-wZX4cNJlHJ2sVWG7oymsAA@public.gmane.org>
2011-06-23 16:27 ` Grosen, Mark
2011-06-23 18:46 ` Arnd Bergmann
2011-06-24 4:32 ` Grosen, Mark
2011-06-24 20:16 ` Stephen Boyd
2011-06-26 1:11 ` Ohad Ben-Cohen
2011-06-26 1:17 ` Brian Swetland
[not found] ` <BANLkTi=sFtwam29i4TZdi=RO7BoytTTdrw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-06-27 21:22 ` Grosen, Mark
2011-06-28 11:26 ` Ohad Ben-Cohen
2011-06-28 11:36 ` Brian Swetland
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=BANLkTikt08CDJiKNxGF2mKmOhyxHfv21_g@mail.gmail.com \
--to=ohad@wizery.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=davinci-linux-open-source@linux.davincidsp.com \
--cc=grant.likely@secretlab.ca \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=rusty@rustcorp.com.au \
--cc=swetland@google.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).