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>
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>
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>
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>
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>
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>
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>
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>
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>
and remove somes libmetal and openamp patches that already merged
in the OpenAMP and Libmetal community.
Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
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>
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>
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>
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>
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>
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>