• O
    rpmsg: add virtio-based remote processor messaging bus · bcabbcca
    Ohad Ben-Cohen 提交于
    Add a virtio-based inter-processor communication bus, which enables
    kernel drivers to communicate with entities, running on remote
    processors, over shared memory using a simple messaging protocol.
    
    Every pair of AMP processors share two vrings, which are used to send
    and receive the messages over shared memory.
    
    The header of every message sent on the rpmsg bus contains src and dst
    addresses, which make it possible to multiplex several rpmsg channels on
    the same vring.
    
    Every rpmsg channel is a device on this bus. When a channel is added,
    and an appropriate rpmsg driver is found and probed, it is also assigned
    a local rpmsg address, which is then bound to the driver's callback.
    
    When inbound messages carry the local address of a bound driver,
    its callback is invoked by the bus.
    
    This patch provides a kernel interface only; user space interfaces
    will be later exposed by kernel users of this rpmsg bus.
    
    Designed with Brian Swetland <swetland@google.com>.
    Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
    Acked-by: Rusty Russell <rusty@rustcorp.com.au> (virtio_ids.h)
    Cc: Brian Swetland <swetland@google.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Grant Likely <grant.likely@secretlab.ca>
    Cc: Tony Lindgren <tony@atomide.com>
    Cc: Russell King <linux@arm.linux.org.uk>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Greg KH <greg@kroah.com>
    Cc: Stephen Boyd <sboyd@codeaurora.org>
    bcabbcca
virtio_rpmsg_bus.c 28.8 KB