Hello All,
RPMsg in U-Boot is under development. First proof of concept patch v1 was sent to upstream mailing list as RFC patch here: http://patchwork.ozlabs.org/project/uboot/list/?series=365
Here is the video of demo of RPMsg framework introduced in above patch series:
https://www.youtube.com/watch?v=PxGNR_FYGt8
This document explains patch series and motivation to introduce RPMsg in U-Boot and future work that needs to be done: https://drive.google.com/file/d/1Bjtzj58klMPVuWEtRK89oyem7_Hdajn8/view?usp=…
This patch series is very basic implementation of virtio based RPMsg framework referenced from the Linux kernel. For now, U-Boot is communicating with remote processor over fix hard-coded endpoint. More advance features such as name-service, multiple endpoint support etc.. will be added in coming revisions of this patch series. Meanwhile, please feel free to review existing work and provide review comments and any other suggestions.
Thanks,
Tanmay
Hello All,
RPMsg in U-Boot is under development. First proof of concept patch v1
was sent to upstream mailing list as RFC patch here:
[1]http://patchwork.ozlabs.org/project/uboot/list/?series=365
Here is the video of demo of RPMsg framework introduced in above patch
series:
[2]https://www.youtube.com/watch?v=PxGNR_FYGt8
This document explains patch series and motivation to introduce RPMsg
in U-Boot and future work that needs to be done:
[3]https://drive.google.com/file/d/1Bjtzj58klMPVuWEtRK89oyem7_Hdajn8/vi
ew?usp=sharing
This patch series is very basic implementation of virtio based RPMsg
framework referenced from the Linux kernel. For now, U-Boot is
communicating with remote processor over fix hard-coded endpoint. More
advance features such as name-service, multiple endpoint support etc..
will be added in coming revisions of this patch series. Meanwhile,
please feel free to review existing work and provide review comments
and any other suggestions.
Thanks,
Tanmay
References
1. http://patchwork.ozlabs.org/project/uboot/list/?series=365
2. https://www.youtube.com/watch?v=PxGNR_FYGt8
3. https://drive.google.com/file/d/1Bjtzj58klMPVuWEtRK89oyem7_Hdajn8/view?usp=…
Branch: refs/heads/main
Home: https://github.com/OpenAMP/libmetal
Commit: 548f6428557acaa1ac218ab74b1e04b16f183f1c
https://github.com/OpenAMP/libmetal/commit/548f6428557acaa1ac218ab74b1e04b1…
Author: Sergei Korneichuk <sergei.korneichuk(a)amd.com>
Date: 2023-08-21 (Mon, 21 Aug 2023)
Changed paths:
M lib/atomic.h
Log Message:
-----------
Export each of the memory_order enumerators
The lib/atomic.h exports memory_order enum into the global namespace,
but none of its enumerators. According to Section 7.3.3 "The using
declaration" of the C++ standard: "specifying an enumeration name
in a using-declaration does not declare its enumerators in
the using-declaration's declarative region." See also:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0943r1.html
Signed-off-by: Sergei Korneichuk <sergei.korneichuk(a)amd.com>
Branch: refs/heads/main
Home: https://github.com/OpenAMP/openamp-system-reference
Commit: c2c89575efbfa3428fa825dc0e06957fc7cce409
https://github.com/OpenAMP/openamp-system-reference/commit/c2c89575efbfa342…
Author: Felipe Neves <felipe.neves(a)linaro.org>
Date: 2023-08-17 (Thu, 17 Aug 2023)
Changed paths:
M examples/zephyr/README.md
A examples/zephyr/dual_qemu_ivshmem/.gitignore
A examples/zephyr/dual_qemu_ivshmem/README.rst
A examples/zephyr/dual_qemu_ivshmem/host/CMakeLists.txt
A examples/zephyr/dual_qemu_ivshmem/host/app.overlay
A examples/zephyr/dual_qemu_ivshmem/host/boards/pcie_ivshmem.dtsi
A examples/zephyr/dual_qemu_ivshmem/host/boards/qemu_cortex_a53.conf
A examples/zephyr/dual_qemu_ivshmem/host/prj.conf
A examples/zephyr/dual_qemu_ivshmem/host/src/main.c
A examples/zephyr/dual_qemu_ivshmem/remote/CMakeLists.txt
A examples/zephyr/dual_qemu_ivshmem/remote/app.overlay
A examples/zephyr/dual_qemu_ivshmem/remote/boards/pcie_ivshmem.dtsi
A examples/zephyr/dual_qemu_ivshmem/remote/boards/qemu_cortex_a53.conf
A examples/zephyr/dual_qemu_ivshmem/remote/prj.conf
A examples/zephyr/dual_qemu_ivshmem/remote/src/main.c
A examples/zephyr/dual_qemu_ivshmem/rpmsg_ivshmem_backend/rpmsg_ivshmem_backend.c
A examples/zephyr/dual_qemu_ivshmem/rpmsg_ivshmem_backend/rpmsg_ivshmem_backend.h
Log Message:
-----------
examples: dual_qemu_ivshmem: add RPMsg over IVSHMEM sample code.
The additions include a backend to glue the Zephyr IVSHMEM
device driver into the openAMP code making it usable to send
data between two QEMU instances using the RPMsg protocol.
Also a custom shell command in the host side application
is provided to send string messages for a number of times.
Signed-off-by: Felipe Neves <felipe.neves(a)linaro.org>
Commit: 9c752508112513cf44892a45fdfc2007d37ad591
https://github.com/OpenAMP/openamp-system-reference/commit/9c752508112513cf…
Author: Felipe Neves <felipe.neves(a)linaro.org>
Date: 2023-08-17 (Thu, 17 Aug 2023)
Changed paths:
M west.yml
Log Message:
-----------
west: update zephyr revsion to v3.4-branch
This revision contains the IVSHMEM infrastructure
needed to make the RPMsg over it to work.
Signed-off-by: Felipe Neves <felipe.neves(a)linaro.org>
Compare: https://github.com/OpenAMP/openamp-system-reference/compare/6a612fae306c...…
Branch: refs/heads/main
Home: https://github.com/OpenAMP/open-amp
Commit: e63d07d10577b06c5b3fc8e1c20ede74779d3132
https://github.com/OpenAMP/open-amp/commit/e63d07d10577b06c5b3fc8e1c20ede74…
Author: Dan Milea <dan.milea(a)windriver.com>
Date: 2023-08-17 (Thu, 17 Aug 2023)
Changed paths:
M cmake/options.cmake
M lib/CMakeLists.txt
M lib/include/openamp/rpmsg_virtio.h
M lib/include/openamp/virtio.h
A lib/include/openamp/virtio_mmio.h
M lib/include/openamp/virtqueue.h
M lib/virtio/virtio.c
A lib/virtio_mmio/CMakeLists.txt
A lib/virtio_mmio/virtio_mmio_drv.c
Log Message:
-----------
virtio: virtio-mmio framework
VIRTIO MMIO transport for OpenAMP.
Signed-off-by: Dan Milea <dan.milea(a)windriver.com>
Branch: refs/heads/main
Home: https://github.com/OpenAMP/libmetal
Commit: f2144b12ae6394712288e0c4a89da381b9830766
https://github.com/OpenAMP/libmetal/commit/f2144b12ae6394712288e0c4a89da381…
Author: Andrew Davis <afd(a)ti.com>
Date: 2023-08-16 (Wed, 16 Aug 2023)
Changed paths:
M lib/alloc.h
M lib/system/freertos/alloc.h
M lib/system/generic/alloc.h
M lib/system/linux/alloc.h
M lib/system/nuttx/alloc.h
M lib/system/zephyr/alloc.h
Log Message:
-----------
lib: refactor alloc.h to not need forward declaration
This should have no functional change, but makes this header consistent
with how the other headers are organized.
Signed-off-by: Andrew Davis <afd(a)ti.com>
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