Remote Processor Messaging (RPMsg) framework is used to communicate
with remote processor. RPMsg is a virtio-based messaging bus that
allows U-Boot drivers to communicate with remote processors available
on the system. This patch also introduces new virtio transport layer
driver.
To keep things minimal for now hard-coded endpoint is used in U-Boot
to communicate with remote processor using RPMsg protocol. This will
be modified to use multiple endpoints in future.
U-Boot can't receive interrupts from remote processor as per design.
Hence, user has to know when the data will be available from remote
processor and call rpmsg_recv accordingly. Mostly it will be called
to receive response of query done using rpmsg_send.
Some code is already available to allocate memory for RPMsg however,
that framework is mostly TI platform specific and isn't used by any
other platforms. This series makes sure it does not break
previous code for other platforms. If platforms wants to use this new
framework it is expected to set "support_rpmsg_virtio" flag in
relative remoteproc device's platform data.
Also the framework introduced by this series is ported from the Linux
kernel so other platforms which already support RPMsg in the Linux
kernel can easily use this framework in U-Boot as well.
---
Tanmay Shah (10):
remoteproc: move resource table definition
firmware: zynqmp: move zynqmp_pm_request_node API
remoteproc: add remoteproc virtio transport driver
drivers: add RPMsg framework
rpmsg: add sample client driver
cmd: add rpmsg framework commands
remoteproc: add attach/detach commands
remoteproc: add zynqmp driver
configs: zynqmp: enable remoteproc and rpmsg
configs: sandbox: enable rpmsg
MAINTAINERS | 15 +
arch/sandbox/dts/test.dts | 8 +
cmd/Kconfig | 6 +
cmd/Makefile | 1 +
cmd/remoteproc.c | 14 +-
cmd/rpmsg.c | 61 +++
configs/sandbox_defconfig | 4 +
configs/xilinx_zynqmp_virt_defconfig | 6 +
drivers/Kconfig | 2 +
drivers/Makefile | 1 +
drivers/firmware/firmware-zynqmp.c | 27 ++
drivers/power/domain/zynqmp-power-domain.c | 7 -
drivers/remoteproc/Kconfig | 20 +
drivers/remoteproc/Makefile | 2 +
drivers/remoteproc/rproc-elf-loader.c | 33 --
drivers/remoteproc/rproc-uclass.c | 125 +++++-
drivers/remoteproc/rproc_virtio.c | 422 +++++++++++++++++++++
drivers/remoteproc/xlnx_rproc.c | 411 ++++++++++++++++++++
drivers/rpmsg/Kconfig | 39 ++
drivers/rpmsg/Makefile | 13 +
drivers/rpmsg/rpmsg-uclass.c | 156 ++++++++
drivers/rpmsg/rpmsg_internal.h | 52 +++
drivers/rpmsg/rpmsg_sample_client.c | 63 +++
drivers/rpmsg/sandbox_test_rpmsg.c | 88 +++++
drivers/rpmsg/virtio_rpmsg_bus.c | 384 +++++++++++++++++++
drivers/virtio/virtio-uclass.c | 1 +
drivers/virtio/virtio_ring.c | 16 +
include/dm/uclass-id.h | 1 +
include/remoteproc.h | 130 ++++++-
include/rpmsg.h | 145 +++++++
include/rproc_virtio.h | 33 ++
include/virtio.h | 7 +-
include/virtio_ring.h | 32 ++
include/zynqmp_firmware.h | 30 +-
test/dm/Makefile | 1 +
test/dm/rpmsg.c | 41 ++
36 files changed, 2321 insertions(+), 76 deletions(-)
create mode 100644 cmd/rpmsg.c
create mode 100644 drivers/remoteproc/rproc_virtio.c
create mode 100644 drivers/remoteproc/xlnx_rproc.c
create mode 100644 drivers/rpmsg/Kconfig
create mode 100644 drivers/rpmsg/Makefile
create mode 100644 drivers/rpmsg/rpmsg-uclass.c
create mode 100644 drivers/rpmsg/rpmsg_internal.h
create mode 100644 drivers/rpmsg/rpmsg_sample_client.c
create mode 100644 drivers/rpmsg/sandbox_test_rpmsg.c
create mode 100644 drivers/rpmsg/virtio_rpmsg_bus.c
create mode 100644 include/rpmsg.h
create mode 100644 include/rproc_virtio.h
create mode 100644 test/dm/rpmsg.c
base-commit: 94e7cb181ad6bd25d36a11c58e0df64e9f815888
--
2.25.1
Branch: refs/heads/main
Home: https://github.com/OpenAMP/openamp-system-reference
Commit: 56b3456aca4f0da33df426e191ff6b0723e0033d
https://github.com/OpenAMP/openamp-system-reference/commit/56b3456aca4f0da3…
Author: Andrew Davis <afd(a)ti.com>
Date: 2023-07-21 (Fri, 21 Jul 2023)
Changed paths:
A examples/linux/common/common.c
A examples/linux/common/common.h
M examples/linux/rpmsg-echo-test/Makefile
M examples/linux/rpmsg-echo-test/echo_test.c
M examples/linux/rpmsg-mat-mul/Makefile
M examples/linux/rpmsg-mat-mul/mat_mul_demo.c
M examples/linux/rpmsg-proxy-app/Makefile
M examples/linux/rpmsg-proxy-app/proxy_app.c
Log Message:
-----------
examples: linux: Factor out app_rpmsg_create_ept into common file
Signed-off-by: Andrew Davis <afd(a)ti.com>
Commit: 811b152988d06352e9fa37667d2d8c1ec8bb7b6a
https://github.com/OpenAMP/openamp-system-reference/commit/811b152988d06352…
Author: Andrew Davis <afd(a)ti.com>
Date: 2023-07-21 (Fri, 21 Jul 2023)
Changed paths:
M examples/linux/common/common.c
M examples/linux/common/common.h
M examples/linux/rpmsg-echo-test/echo_test.c
M examples/linux/rpmsg-mat-mul/mat_mul_demo.c
M examples/linux/rpmsg-proxy-app/proxy_app.c
Log Message:
-----------
examples: linux: Factor out get_rpmsg_ept_dev_name into common file
Signed-off-by: Andrew Davis <afd(a)ti.com>
Commit: 03733bd4a3effe811397c891dc8709c4d3988c6e
https://github.com/OpenAMP/openamp-system-reference/commit/03733bd4a3effe81…
Author: Andrew Davis <afd(a)ti.com>
Date: 2023-07-21 (Fri, 21 Jul 2023)
Changed paths:
M examples/linux/common/common.c
M examples/linux/common/common.h
M examples/linux/rpmsg-echo-test/echo_test.c
M examples/linux/rpmsg-mat-mul/mat_mul_demo.c
M examples/linux/rpmsg-proxy-app/proxy_app.c
Log Message:
-----------
examples: linux: Factor out bind_rpmsg_chrdev into common file
Signed-off-by: Andrew Davis <afd(a)ti.com>
Commit: e801fa0607ca7989f29226b3da7382bc19369801
https://github.com/OpenAMP/openamp-system-reference/commit/e801fa0607ca7989…
Author: Andrew Davis <afd(a)ti.com>
Date: 2023-07-21 (Fri, 21 Jul 2023)
Changed paths:
M examples/linux/common/common.c
M examples/linux/common/common.h
M examples/linux/rpmsg-echo-test/echo_test.c
M examples/linux/rpmsg-mat-mul/mat_mul_demo.c
M examples/linux/rpmsg-proxy-app/proxy_app.c
Log Message:
-----------
examples: linux: Factor out get_rpmsg_chrdev_fd into common file
Signed-off-by: Andrew Davis <afd(a)ti.com>
Commit: 0ec83bfd5b3008b2713ce5a7b2f33fab26c6b5c8
https://github.com/OpenAMP/openamp-system-reference/commit/0ec83bfd5b3008b2…
Author: Andrew Davis <afd(a)ti.com>
Date: 2023-07-21 (Fri, 21 Jul 2023)
Changed paths:
M examples/linux/common/common.c
M examples/linux/common/common.h
M examples/linux/rpmsg-echo-test/echo_test.c
M examples/linux/rpmsg-mat-mul/mat_mul_demo.c
M examples/linux/rpmsg-proxy-app/proxy_app.c
Log Message:
-----------
examples: linux: Factor out lookup_channel into common file
Signed-off-by: Andrew Davis <afd(a)ti.com>
Commit: 3b2a0ebf7ef6598cb193b01f3d5c585f454fe4af
https://github.com/OpenAMP/openamp-system-reference/commit/3b2a0ebf7ef6598c…
Author: Andrew Davis <afd(a)ti.com>
Date: 2023-07-21 (Fri, 21 Jul 2023)
Changed paths:
M examples/linux/rpmsg-mat-mul/mat_mul_demo.c
Log Message:
-----------
examples: rpmsg-mat-mul: Cleanup matrix printout
Make matrix_print() into a common function and use it for both printing
the input and output matrices. Also add 3 wide padding so the output
looks more like a table when the numbers are not all the same length.
Signed-off-by: Andrew Davis <afd(a)ti.com>
Commit: 7615f43e710cbdb3bbc6acf25aaed35f3328629b
https://github.com/OpenAMP/openamp-system-reference/commit/7615f43e710cbdb3…
Author: Andrew Davis <afd(a)ti.com>
Date: 2023-07-21 (Fri, 21 Jul 2023)
Changed paths:
M examples/linux/rpmsg-echo-test/echo_test.c
M examples/linux/rpmsg-mat-mul/mat_mul_demo.c
M examples/linux/rpmsg-proxy-app/proxy_app.c
Log Message:
-----------
examples: linux: Remove uses of global variables
Usually considered bad practice and the code is more readable without.
Signed-off-by: Andrew Davis <afd(a)ti.com>
Commit: 2dadb557f9b1db6b9bd4b4fe97fef0d57a0e6734
https://github.com/OpenAMP/openamp-system-reference/commit/2dadb557f9b1db6b…
Author: Andrew Davis <afd(a)ti.com>
Date: 2023-07-21 (Fri, 21 Jul 2023)
Changed paths:
M examples/linux/rpmsg-mat-mul/mat_mul_demo.c
Log Message:
-----------
examples: rpmsg-mat-mul: Only send 32bit shutdown message
Signed-off-by: Andrew Davis <afd(a)ti.com>
Commit: 2c5d2064e45faf7e3a542d1232593beec40ff940
https://github.com/OpenAMP/openamp-system-reference/commit/2c5d2064e45faf7e…
Author: Andrew Davis <afd(a)ti.com>
Date: 2023-07-21 (Fri, 21 Jul 2023)
Changed paths:
M examples/linux/rpmsg-mat-mul/mat_mul_demo.c
Log Message:
-----------
examples: rpmsg-mat-mul: Cleanup printouts and remove debug statements
Signed-off-by: Andrew Davis <afd(a)ti.com>
Commit: db1f74a00c63d25b676d2874d28457c464408b9b
https://github.com/OpenAMP/openamp-system-reference/commit/db1f74a00c63d25b…
Author: Andrew Davis <afd(a)ti.com>
Date: 2023-07-21 (Fri, 21 Jul 2023)
Changed paths:
M examples/linux/common/common.c
Log Message:
-----------
examples: linux: Close file on error in bind_rpmsg_chrdev
The file should be closed when returning from this function in the error
path. Fix this here.
Signed-off-by: Andrew Davis <afd(a)ti.com>
Compare: https://github.com/OpenAMP/openamp-system-reference/compare/7f1fb3b84edc...…
Branch: refs/heads/main
Home: https://github.com/OpenAMP/open-amp
Commit: a2456e61ee5b7c55eb3901bdcdd836b7e0f83bbc
https://github.com/OpenAMP/open-amp/commit/a2456e61ee5b7c55eb3901bdcdd836b7…
Author: Iuliana Prodan <iuliana.prodan(a)nxp.com>
Date: 2023-07-17 (Mon, 17 Jul 2023)
Changed paths:
M cmake/options.cmake
M lib/include/openamp/remoteproc_virtio.h
M lib/remoteproc/remoteproc_virtio.c
Log Message:
-----------
remoteproc: do cache invalidation before reading rsc_table info
Do a cache invalidation before reading the resource table's info
since this ca be in a cacheable region.
Make this optional, based on VIRTIO_CACHED_RSC_TABLE.
Signed-off-by: Iuliana Prodan <iuliana.prodan(a)nxp.com>
Commit: 5891cb4b2e813d1c9d10def998952b062304e43f
https://github.com/OpenAMP/open-amp/commit/5891cb4b2e813d1c9d10def998952b06…
Author: Iuliana Prodan <iuliana.prodan(a)nxp.com>
Date: 2023-07-17 (Mon, 17 Jul 2023)
Changed paths:
M README.md
Log Message:
-----------
README: add new cache option for resource table
Add info for WITH_DCACHE_RSC_TABLE option.
Signed-off-by: Iuliana Prodan <iuliana.prodan(a)nxp.com>
Compare: https://github.com/OpenAMP/open-amp/compare/7f906105a9ff...5891cb4b2e81
Branch: refs/heads/main
Home: https://github.com/OpenAMP/open-amp
Commit: 7f906105a9ffef8e59287f0fca68fc8f8df7725c
https://github.com/OpenAMP/open-amp/commit/7f906105a9ffef8e59287f0fca68fc8f…
Author: Bowen Wang <wangbowen6(a)xiaomi.com>
Date: 2023-07-12 (Wed, 12 Jul 2023)
Changed paths:
M lib/include/openamp/virtio.h
M lib/virtio/virtio.c
Log Message:
-----------
virtio: add create_virtqueues and delete_virtqueues in virtio_dispatch
This is the first step to decoupling the virtio device and transport
layer.
Signed-off-by: Bowen Wang <wangbowen6(a)xiaomi.com>
Hello,
I am new to this mailing list. I have done some work recently to get the RPMSG sample running on a dual core STM32H device from ST and it works. In this case both Host and Remote runs Zephyr. My goal is to replace the Remote with a bare-metal and did some research and found open-amp can be used for the same. However, I don't see any libmetal port on STM32 under lib/system/generic. My understanding is that with this, I would be able to modify an existing example in open-amp (under https://github.com/OpenAMP/open-amp/tree/main/apps/examples/rpmsg_sample_ech...) to work with the Zephyr rpmsg example at https://github.com/zephyrproject-rtos/zephyr/tree/main/samples/subsys/ipc/rp...)
Has anyone attempted anything like this that I can leverage on? Other than the libmetal port, what else would be needed to get this inter-work with Zephyr RPMSG sample or should I attempt a different sample from Zephyr to work with open-amp sample? Any help to get me in the right direction would be appreciated.
Thanks.
Murali Karicheri
Branch: refs/heads/main
Home: https://github.com/OpenAMP/libmetal
Commit: 4976e580d4aeb8c88952ba0c00e750b300cc18bf
https://github.com/OpenAMP/libmetal/commit/4976e580d4aeb8c88952ba0c00e750b3…
Author: Arnaud Pouliquen <arnaud.pouliquen(a)foss.st.com>
Date: 2023-07-10 (Mon, 10 Jul 2023)
Changed paths:
M .github/workflows/compliance.yml
M scripts/ci/check_compliance.py
Log Message:
-----------
CI: Fix checkpatch
The CI does not consider "check" reported by checkpatch.
This commit fixes it by:
- rebasing check_compliance.py compliance.yml to integrate Zephyr updates,
- add detection of the "check" in the report.
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen(a)foss.st.com>
Branch: refs/heads/main
Home: https://github.com/OpenAMP/open-amp
Commit: dcc21e665704b4eab5b5a77910ab39b188d62f31
https://github.com/OpenAMP/open-amp/commit/dcc21e665704b4eab5b5a77910ab39b1…
Author: Arnaud Pouliquen <arnaud.pouliquen(a)foss.st.com>
Date: 2023-07-10 (Mon, 10 Jul 2023)
Changed paths:
M .github/workflows/compliance.yml
M scripts/ci/check_compliance.py
Log Message:
-----------
CI: Fix checkpatch
The CI does not consider "check" reported by checkpatch.
This commit fixes it by:
- rebasing check_compliance.py compliance.yml to integrate Zephyr updates,
- add detection of the "check" in the report.
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen(a)foss.st.com>