Thread (6 messages) 6 messages, 3 authors, 2011-09-15

[RFC 7/8] drivers: introduce rpmsg, a remote-processor messaging bus

From: Ohad Ben-Cohen <hidden>
Date: 2011-06-22 10:47:01
Also in: linux-omap, lkml

On Wed, Jun 22, 2011 at 5:42 AM, Rusty Russell [off-list ref] wrote:
On Tue, 21 Jun 2011 10:18:33 +0300, Ohad Ben-Cohen [off-list ref] wrote:
quoted
Add a virtio-based IPC bus, which enables kernel users to communicate
with remote processors over shared memory using a simple messaging
protocol.
Wow, sometimes one writes a standard and people use it. ?Thanks!
And we really liked it: virtio_rpmsg_bus.c, the virtio driver which
does most of the magic here ended up pretty small thanks to virtio.
and the performance numbers are really good, too.
quoted
+ ? ? /* Platform must supply pre-allocated uncached buffers for now */
+ ? ? vdev->config->get(vdev, VPROC_BUF_ADDR, &addr, sizeof(addr));
+ ? ? vdev->config->get(vdev, VPROC_BUF_NUM, &num_bufs, sizeof(num_bufs));
+ ? ? vdev->config->get(vdev, VPROC_BUF_SZ, &buf_size, sizeof(buf_size));
+ ? ? vdev->config->get(vdev, VPROC_BUF_PADDR, &vrp->phys_base,
+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? sizeof(vrp->phys_base));
The normal way is to think of the config space as a structure, and use
offsets rather than using an enum value to distinguish the fields.
Yes, I was (mis-)using the config space for now to talk with
platform-specific code (on the host), and not with the peer, so I
opted for simplicity.

But this is definitely one thing that is going away: I don't see any
reason why not just use dma_alloc_coherent (or even dma_pool_create)
directly from the driver here in order to get those buffers.
quoted
+#define RPMSG_NAME_SIZE ? ? ? ? ? ? ? ? ? ? ?32
+#define RPMSG_DEVICE_MODALIAS_FMT ? ?"rpmsg:%s"
+
+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))));
+};
This alignment directive seems overkill...
Yes, looks like I can remove this. thanks.
quoted
+#define VIRTIO_ID_RPMSG ? ? ? ? ? ? ?10 /* virtio remote processor messaging */
I think you want 6. ?Plan 9 jumped ahead to grab 9 :)
6 it is :)

Thanks,
Ohad.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help