Commit graph

23 commits

Author SHA1 Message Date
yaojiaqi
b17e4488d6 openamp: fix CMake dcache option
OpenAMP 2025.10.0 removed the deprecated WITH_DCACHE_VRINGS, WITH_DCACHE_BUFFERS and WITH_DCACHE_RSC_TABLE CMake options. The replacement is WITH_DCACHE, which enables VIRTIO_USE_DCACHE for vrings, buffers and resource table cache operations.

Use WITH_DCACHE for CONFIG_OPENAMP_CACHE in the CMake integration so the CMake build matches the Makefile path, which already defines VIRTIO_USE_DCACHE directly.

Signed-off-by: yaojiaqi <yaojiaqi@lixiang.com>
2026-05-10 15:03:24 +02:00
Bowen Wang
6b13940797 openamp: add patch for VIRTIO_RPMSG_F_BUFADDR buffer address support
Add open-amp patch 0019 to extend fw_rsc_config with h2r_buf_addr
and r2h_buf_addr fields, allowing the host and remote sides to
specify buffer physical addresses through the resource table.
This enables splitting the shared memory pool into separate regions.

Also update open-amp.defs and open-amp.cmake to apply the new patch
during the open-amp build process.

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2026-03-05 12:39:13 +08:00
Bowen Wang
5e2b3a114f lib/rpmsg: add priority support for rpmsg endpoint
Add priority field to rpmsg_endpoint structure to support
message prioritization. This allows different endpoints to
have different priority levels for scheduling purposes.

Changes:
- Define priority constants (MIN=0, DEFAULT=127, MAX=255)
- Add RPMSG_PRIO_RT alias for real-time priority
- Add priority field to struct rpmsg_endpoint
- Initialize priority to default value in rpmsg_register_endpoint()

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2026-01-30 07:50:11 -03:00
Bowen Wang
41e46333a8 openamp/virtqueue: change the virtqueue dump log level to emergency
To avoid the dump log can't be output.

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2026-01-30 07:50:11 -03:00
Bowen Wang
59259eb7f2 openamp/lib/rpmsg_virtio: release the name service messsage
early

To improve the share memory buffer utilization
1. Support release the rx buffer early, the ept->cb should return
   RPMSG_SUCCESS_BUFFER_RETURNED to tell the rpmsg virtio the
   rx buffer has been released;
2. Modifty name service callback to release the rx name service
   message early;

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2026-01-29 09:26:50 -03:00
Bowen Wang
1fa6a43a40 openamp: optimize virtqueue_notification() called condition
1. call virtqueue_notification() only when buffer exist to avoid unnecessary
calls to virtqueue callback.

2. call virtqueue_notification() only when vq != NULL, because
rproc_virtio_notified() may be called when the virtqueues is not created:
virtqueue created in the virtio/vhost driver but the virtio devices
has been added to the remoteproc virtio devices list after the remoteproc
transport layer create the virtio devices.

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2026-01-19 14:18:27 +08:00
Bowen Wang
3c0a4639ca openamp: rpmsg virtio use virtio_alloc_buf to alloc share memory
So rpmsg virtio can alloc share memory from the virtio transport
layer and can work with various transport layer.

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2026-01-19 14:18:27 +08:00
Bowen Wang
1d66a0bc4a openamp: support include the openamp headers in nuttx
copy all the openamp headers to nuttx, make nuttx code can include
all the openamp headers to fix the compile error

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2026-01-19 14:18:27 +08:00
Bowen Wang
4c06a2768d openamp: add mm_priv to struct virtio_device
now the virtio device can set it's own memory private data, and
can use this private data to store the memory manager handler

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2026-01-19 14:18:27 +08:00
Bowen Wang
0a26f09c6b openamp: make the remoteproc virtio fit more virtio devices
1. add cpuname config for the rpmsg virtio devices, so the rpmsg virtio
driver can get the local and remote cpuname from the virtio config
space, and we can distinguish the differnt channel when there are
two rpmsg virtio devices in the same resource table;
2. optimize the remoteproc virtio transport layer to make it can
work with all the virtio devices instead only work with rpmsg virtio
devices;

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2026-01-19 14:18:27 +08:00
Bowen Wang
dac8604f5e openamp: update openamp and libmetal to last release version
and remove somes libmetal and openamp patches that already merged
in the OpenAMP and Libmetal community.

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2025-12-31 02:36:29 +08:00
xuxin19
0285c0b901 cmake(bugfix):disable proxy and service source in open-amp
since we disable find_package(libmetal) so we need to set
open_amp target include dirs link to metal target

Signed-off-by: xuxin19 <xuxin19@xiaomi.com>
2024-10-15 15:25:20 +08:00
wangyongrong
ef67a866f3 openamp: replace VIRTIO_DRIVER/DEVICE_ONLY to VIRTIO_DRIVER/DEVICE_SUPPORT
New OpenAMP change the VIRTIO_DRIVER/DEVICE_ONLY to the
VIRTIO_DRIVER_DEVCE_SUPPORT, so upgrade the NuttX OpenAMP config too

Signed-off-by: wangyongrong <wangyongrong@xiaomi.com>
2024-10-09 23:32:58 +08:00
Bowen Wang
8b4376683a openamp: sync the openamp and libmetal to the last commit
Upgrade the openamp is a troublesome thing, so diretly sync the
open-amp and libmetal the newest commit.

We can update the commit and remove the patch when this patch has
been merged in the OpenAMP repo.

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2024-10-09 23:32:58 +08:00
Yongrong Wang
f93688cbd5 openamp/Kconfig: add CONFIG_OPENAMP_ENABLE_VIRTIO_ONLY to enable virtio only
OPENAMP_VIRTIO_DEVICE_ONLY and OPENAMP_VIRTIO_DRIVER_ONLY can be used to
comment some unused code in OpenAMP library to save code size.

Signed-off-by: Yongrong Wang <wangyongrong@xiaomi.com>
Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2024-10-08 23:34:50 +08:00
Xiang Xiao
815c9c464a openamp: Refine elf_load to remoteproc_elf_loader
to avoid the name conflict with binfmt elf loader

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2024-10-08 23:34:50 +08:00
Xiang Xiao
6b0c22c775 openamp: Merge OPENAMP_RPMSG_DEBUG and OPENAMP_VQUEUE_DEBUG into OPENAMP_DEBUG
to simplify the configuration

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2024-10-08 23:34:50 +08:00
Alin Jerpelea
c13254d7c5 openamp: migrate to SPDX identifier
Most tools used for compliance and SBOM generation use SPDX identifiers
This change brings us a step closer to an easy SBOM generation.

Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
2024-09-10 22:54:05 +08:00
xuxin19
0e8aecfe64 cmake:reuse OpenAMP own CMake script for CMake build
Check whether 64-bit atomic is supported

Co-authored-by: xuxin19 <xuxin19@xiaomi.com>
Co-authored-by: Bowen Wang <wangbowen6@xiaomi.com>
2024-06-26 00:22:03 +08:00
liqinhui
681b84b15d openamp: Add the virtio_negotiate_features interface for virtio-net.
Signed-off-by: liqinhui <liqinhui@xiaomi.com>
2023-12-13 05:00:59 -08:00
xuxin19
48d95b8d82 cmake:replace custom_patch_target with PATCH_COMMAND
Signed-off-by: xuxin19 <xuxin19@xiaomi.com>
2023-08-24 17:46:43 +02:00
chao an
f10b54a081 cmake: fix CMake build break
Signed-off-by: chao an <anchao@xiaomi.com>
2023-07-15 23:32:36 +08:00
chao an
6ee9ec7656 build: add initial cmake build system
1. Update all CMakeLists.txt to adapt to new layout
2. Fix cmake build break
3. Update all new file license
4. Fully compatible with current compilation environment(use configure.sh or cmake as you choose)

------------------

How to test

From within nuttx/. Configure:

cmake -B build -DBOARD_CONFIG=sim/nsh -GNinja
cmake -B build -DBOARD_CONFIG=sim:nsh -GNinja
cmake -B build -DBOARD_CONFIG=sabre-6quad/smp -GNinja
cmake -B build -DBOARD_CONFIG=lm3s6965-ek/qemu-flat -GNinja

(or full path in custom board) :
cmake -B build -DBOARD_CONFIG=$PWD/boards/sim/sim/sim/configs/nsh -GNinja

This uses ninja generator (install with sudo apt install ninja-build). To build:

$ cmake --build build

menuconfig:

$ cmake --build build -t menuconfig

--------------------------

2. cmake/build: reformat the cmake style by cmake-format

https://github.com/cheshirekow/cmake_format

$ pip install cmakelang

$ for i in `find -name CMakeLists.txt`;do cmake-format $i -o $i;done
$ for i in `find -name *\.cmake`;do cmake-format $i -o $i;done

Co-authored-by: Matias N <matias@protobits.dev>
Signed-off-by: chao an <anchao@xiaomi.com>
2023-07-08 13:50:48 +08:00