From: ohad@wizery.com (Ohad Ben-Cohen)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC 0/8] Introducing a generic AMP/IPC framework
Date: Sun, 26 Jun 2011 04:11:47 +0300 [thread overview]
Message-ID: <BANLkTi=sFtwam29i4TZdi=RO7BoytTTdrw@mail.gmail.com> (raw)
In-Reply-To: <4E04F0B0.4030408@codeaurora.org>
Hi Stephen,
On Fri, Jun 24, 2011 at 11:16 PM, Stephen Boyd <sboyd@codeaurora.org> wrote:
> This sounds a lot like SMD (shared memory driver) on MSM. The main
> difference I see is that SMD uses the platform bus instead of the virtio
> bus and it has its own protocol for channel allocation.
Yeah, virtio is a key factor in this work; it was suggested to us by
Arnd at the AMP plumbers discussions last year, where it was apparent
that many vendors have their own IPC drivers/buses/channels over
shared memory with some vendor-ish binary protocol. I must say we
really liked virtio: it considerably simplified the code (we're not
adding any new binary protocol), it's very nicely optimized and
flexible, and it comes with a set of virtio drivers (e.g. network,
console, block) so we don't have to write our own.
We also cared about adding this functionality as an IPC bus, so the
driver core will help matching drivers to channels - it simplified the
code (in both setup and tear down of channels) and kept it flexible.
It will also facilitate error recovery (on remote crash, we just
remove the virtio device, and then the driver core will in turn start
->remove()ing the rpmsg drivers) and power management (via runtime
PM).
About SMD: I'm not familiar with it too much, but Brian naturally is
(just for the sake of everyone who are not reading headers - Brian
Swetland wrote the Linux SMD driver, and is also an author of this
Google+TI joint work).
Btw, I'm sure SMD is conceptually not MSM-specific, and have wondered
whether you guys would like to use rpmsg/virtio (I know you have
several drivers like network/tty/etc over SMD, somewhat similarly to
virtio). Probably the biggest reason why not to is the pain in
changing the binary protocol with the modem/dsp side. If you ever do
think about it, I'd be happy to work with you to make it happen.
> This remote proc code is eerily similar to PIL (peripheral image loader,
> yes we love our acronyms) which I posted a few months back[1]. Was it
> inspiration for this patch series?
No, we weren't (or at least I wasn't) aware of PIL.
> In terms of API, s/pil/rproc/ and it would be 95% identical. There are
> some low-level differences though (see below).
Indeed, eerily similar :O
I just guess the API is so simple that probably most kernel hackers
would use refcounting get/put semantics here.
> This is an important difference between remote proc and PIL. In PIL, we
> do image authentication in addition to processor boot.
Yes, we have this too (secure code will need to authenticate the image
in some use cases) - but that's not ready yet for submission and we
decided to start off with the basics first and then evolve.
> Instead of devising a new firmware format, we decided
> to just stick with elf and parse the headers in the kernel because we
> needed them for authentication anyway. Is this reason enough to move to
> an ELF format instead?
I think that consolidation of code is enough reason to make an effort.
I know that our firmware format was chosen for simplicity, but I'm not
sure if we have the tools yet to build standard ELF files for the
remote processors (IIRC it's in the works though). I'll let Mark
comment this one.
> Another difference is inter-processor dependencies. For example, on
> msm8660 the modem can't boot until the dsp has been booted. I suppose we
> could hide this detail in the platform specific get() implementation by
> calling rproc_get() on the dependent processor (hopefully no locking
> issues arise). I'd rather have it built into the core though as it isn't
> really specific to the hardware.
No problems, I'm sure we can solve this one easily.
> If we can resolve these differences I think we can easily support remote
> processor boot on MSM via remoteproc.
That'd be very cool, I sure do hope we can work together.
Thanks for your comments !
Ohad.
next prev parent reply other threads:[~2011-06-26 1:11 UTC|newest]
Thread overview: 63+ 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
[not found] ` <BANLkTimn-THKipuQVHLA9i3QSoO5RTqMtA@mail.gmail.com>
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
[not found] ` <1308640714-17961-2-git-send-email-ohad@wizery.com>
2011-06-22 17:55 ` [RFC 1/8] drivers: add generic remoteproc framework Randy Dunlap
2011-06-22 19:11 ` Ohad Ben-Cohen
2011-06-27 20:49 ` Grant Likely
2011-06-27 21:52 ` Grosen, Mark
2011-06-27 22:24 ` Grant Likely
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-23 12:23 ` [RFC 0/8] Introducing a generic AMP/IPC framework Michael Williamson
2011-06-23 16:27 ` Grosen, Mark
2011-06-23 18:46 ` Arnd Bergmann
2011-06-24 4:32 ` Grosen, Mark
[not found] ` <1308640714-17961-6-git-send-email-ohad@wizery.com>
2011-06-23 15:27 ` [RFC 5/8] remoteproc: add davinci implementation Sergei Shtylyov
2011-06-24 4:25 ` Grosen, Mark
2011-06-24 15:13 ` Sergei Shtylyov
2011-06-24 15:43 ` Nori, Sekhar
2011-06-27 18:31 ` Grosen, Mark
2011-07-05 5:29 ` Nori, Sekhar
2011-07-05 16:54 ` Grosen, Mark
2011-07-05 5:34 ` Nori, Sekhar
2011-07-05 16:54 ` Grosen, Mark
2011-07-06 4:36 ` Nori, Sekhar
2011-06-27 18:20 ` Grosen, Mark
2011-06-28 9:36 ` Nori, Sekhar
2011-06-24 20:16 ` [RFC 0/8] Introducing a generic AMP/IPC framework Stephen Boyd
2011-06-26 1:11 ` Ohad Ben-Cohen [this message]
2011-06-26 1:17 ` Brian Swetland
2011-06-27 21:22 ` Grosen, Mark
2011-06-28 11:26 ` Ohad Ben-Cohen
2011-06-28 11:36 ` Brian Swetland
[not found] ` <1308640714-17961-3-git-send-email-ohad@wizery.com>
2011-06-22 10:05 ` [RFC 2/8] remoteproc: add omap implementation 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
[not found] ` <1308640714-17961-7-git-send-email-ohad@wizery.com>
2011-06-28 10:18 ` [RFC 6/8] davinci: da850: add remoteproc dsp device Sergei Shtylyov
[not found] ` <1308640714-17961-8-git-send-email-ohad@wizery.com>
2011-06-22 2:42 ` [RFC 7/8] drivers: introduce rpmsg, a remote-processor messaging bus 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
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-07-18 22:07 ` Pavel Machek
2011-07-19 5:38 ` Ohad Ben-Cohen
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='BANLkTi=sFtwam29i4TZdi=RO7BoytTTdrw@mail.gmail.com' \
--to=ohad@wizery.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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).