On GitHub, this check is tagged as "Required."
However, if a PR only affects the following folders:.github, docs,
scripts, or cmake, the check is not executed (to avoid false positives),
resulting in the status "execution pending" + "required" on GitHub.
This commit forces the execution of the check but bypasses the
compliance.xml test when the PR only affects the listed folders.
If at least one update affects other folders, the compliance check
runs as usual.
In addition, the cmake folder is removed from the list, as there is
no reason to skip compliance tests on it.
Signed-off-by: Arnaud Pouliquen arnaud.pouliquen@foss.st.com
- bump to Zephyr 4.3
- use west packages pip --install
- use "west sdk install" command to install the expected sdk version.
- only install arm-zephyr-eabi compiler as build tested only on
arm targets
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
The code contains redundant checks with both metal_assert(vdev) and if
(!vdev).
Moreover, if the assert is disabled, it may lead to dereferencing a null
pointer.
We should not rely on asserts for API validation. Instead, replace the
assert with an error message.
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
Remove the following CMake options and associated definitions that have
been deprecated for over two years:
- WITH_DCACHE_VRINGS
- WITH_DCACHE_BUFFERS
- WITH_DCACHE_RSC_TABLE
- VIRTIO_CACHED_RSC_TABLE
- VIRTIO_CACHED_BUFFERS
- VIRTIO_CACHED_VRINGS
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
The function rproc_virtio_wait_remote_ready does not return a value.
Remove the related @return field from the documentation.
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
- removes CACHE_FLUSH macro clashing with internal QNX definition
- also removes CACHE_INVALIDATE macro for consistency
Signed-off-by: Deep Chordia <dchordia@blackberry.com>
review requested to use a table rather than a code snippet to define
the memory layout, so convert proposed struct to a table with
definition, size and description and explanation of padding between
available and used structures.
Signed-off-by: Sipke Vriend <sipke@direktembedded.com>
In virtio device side, we always need to get the next avaiable
buffer based on current buffer index. So add these two APIs for
convinience use.
For example, virtio blk driver origanize the buffer:
+----------+
| Reqeust | (Flags: Read | Next)
+----------+
| Buffer | (Flags: Read/Write | Next)
+----------+
| Response | (Flags: Write)
+----------+
For the virtio blk device size, we need get the Buffer and Response buffer
based on the Request buffer index.
So add api virtqueue_get_next_avail_buffer() to get the next available
buffer based on the first buffer index.
And rename the virtqueue_get_available_buffer() to
virtqueue_get_first_avail_buffer()
Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
Signed-off-by: Yongrong Wang <wangyongrong@xiaomi.com>
These design documents and images are being moved to openamp-docs
Decided with Bill and Arnaud to move all the design documentation from the
https://github.com/OpenAMP/open-amp repository doc folder to the
https://github.com/OpenAMP/openamp-docs repository docs folder
The main reason being that the breathe and doxylink integration is already
in openamp-docs, so can be used for the design doc.
Signed-off-by: Sipke Vriend <sipke@direktembedded.com>
in order to use the sphinx breathe plugin in the OpenAMP/openamp-docs
repository we need to enable xml generation
Signed-off-by: Sipke Vriend <sipke@direktembedded.com>
To allow for external links to doxygen generated content, tell doxygen
to build tags, so the tag file can be used for cross referencing
doxygen generated data.
Signed-off-by: Sipke Vriend <sipke@direktembedded.com>
metal_cpu_yield can either result in an unimplemented function or a yield
function. The yield function however only yields execution to another
thread of the same or higher priority. Thus starving any lower priority
threads.
wait_remote_ready can be blocked for a long time i.e. seconds waiting on
the remote core to start communication.
Instead use metal_sleep_usec, allowing lower priority tasks to be
executed. While waiting on the remote core.
Signed-off-by: Peter van der Perk <peter.vanderperk@nxp.com>
The applications are now available in the system-reference repository.
Remove the apps folder as it is no longer maintained.
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
The application folder is deprecated and should no more be used.
Remove associated cmake options.
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
We currently support an old version of CMake (3.0.2) that was released
in 2018.
This requires adding specific policies to support the evolution to the
latest versions of Zephyr.
Update the minimum version to 3.16, aligned with the libmetal.
By updating to CMake 3.16 as the minimum version, we can also clean up
the following policy add-ons:
- CMP0048 added in CMake v3.0
- CMP0077 added in CMake v3.13
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
Upstream Read The Docs has tightened up the schema checking and this broke
what we were doing for PRs.
A good number of things were tried but the best compromise is to:
* supply a dummy sphinx config file in this repo
* override the default build command to use the openamp-docs dir
Also:
* add more documentation about what is going on
* lock to html only format. PRs only do html anyway but make sure
Signed-off-by: Bill Mills <bill.mills@linaro.org>
virtio_has_feature() can be easily used to check if the virtio device
support a specific feature.
And assgin feature to vdev->feature for virtio device role when get
features, so the virtio device side can use virtio_has_featrue() to
check weather the virtio device support a feature.
Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
Follow the virtio spec, this feature bit indicates that the device
accepts arbitrary descriptor layouts.
Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
Add parentheses around the "vdev" parameter to avoid side effects.
This fixes a build error when using the macro in the following way:
if (VIRTIO_ROLE_IS_DEVICE(&my_context->vdev))
The error encountered:
openamp/open-amp/lib/include/openamp/virtio.h:89:49: error: invalid type argument of ‘->’ (have ‘struct virtio_device’)
89 | (VIRTIO_ENABLED(VIRTIO_DRIVER_SUPPORT) && (vdev->role) == VIRTIO_DEV_DRIVER)
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
The name of the board has been updated since the Zephyr commit:
d8cfa6fb2916 ("boards: nxp: convert lpcxpresso54114 to hwmv2")
Fix the build command according to the new name.
The update is compatible with the Zephyr v3.7.
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
Buffer management is different for different transport layer:
For MMIO transport layer, the buffer can directly allocated from
the geust OS heap beacase the hypervisor can access all the memory own
by guest OS.
For remoteproc transport layer, the buffer should be allocated from
the share memory region to make sure the remote core can access this
buffer too.
So add memory ops in virtio device to make different transport/device can
implement their own share memory management.
Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
Fix the size of the source string passed in argument of safe_strcpy().
In rpmsg_register_endpoint we can not trust the size of the name
string provided, so we limit the max size to RPROC_MAX_NAME_LEN.
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
Fix the size of the source string passed in argument of safe_strcpy().
In rpmsg_create_ept we can not trust the size of the name
string provided, so we limit the max size to RPMSG_NAME_SIZE.
Update the rpmsg_create_ept documentation to clarify the limit
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
The applications are now in the openamp-system-reference repository.
The "apps" folder is now deprecated and should be removed in coming
releases.
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
If rpmsg_virtio_notify_wait() returns RPMSG_SUCCESS, we should not
directly return NULL, but call rpmsg_virtio_get_tx_buffer to get
the tx buffer again.
Signed-off-by: Yongrong Wang <wangyongrong@xiaomi.com>
Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
The CPU yield is not supported by all OSes/processors. If not supported,
this causes a busy loop that monopolizes the CPU. Replace it with the
new metal_yield, it would be managed at the OS level and dispatched to
metal_cpu_yield, metal_sleep_usec, or others.
Signed-off-by: Yongrong Wang <wangyongrong@xiaomi.com>
Allow Zephyr testing to either use locked known good values
or the very latest versions.
This brings open-amp to parity with libmetal. Open-amp did not have the
SDK URL discovery code so that was added here as part of this.
The known good versions are best for PR checking as if the build fails
it is almost always the PR itself that broke it.
The latest version is good for periodically checking compatibility with
the very latest Zephyr changes.
For now we run both on pushes and PRs.
We also run main against the latest zephyr check weekly as a look ahead.
Signed-off-by: Bill Mills <bill.mills@linaro.org>
Reduce the console output for the Zephyr sdk install.
This now matches the intent of libmetal but uses the documented wget
option.
Signed-off-by: Bill Mills <bill.mills@linaro.org>
The strncpy function does not ensure that the destination string is
null-terminated. To address this issue, replace strncpy with the
internal safe_strcpy() function, which guarantees null-termination of the
destination string but also access only in buffer memory ranges.
Note: (void)safe_strcpy(...) indicates that the return value is
intentionally ignored.
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
The strncpy function does not ensure that the destination string is
null-terminated. To address this issue, replace strncpy with the
internal safe_strcpy() function, which guarantees null-termination of the
destination string but also access only in buffer memory ranges.
Note: (void)safe_strcpy(...) indicates that the return value is
intentionally ignored.
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
The strlcpy() function has only recently become available in glibc.
While this function prevents destination buffer overflow, it seems
that it cannot guarantee read access only within the source buffer.
this is for instance the case if the source string is not terminated by
a'\0' character.
Implement a safe_strcpy to ensure that no access is done out of the
source and destination buffer ranges.
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
To have a coherent directory hierarchy, move the open-amp git from root
to the "./open-amp" directory.
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
Add VQ_RX_EMPTY_NOTIFY config to define the behavior. If
VQ_RX_EMPTY_NOTIFY is disabled, notify the other side each
time a buffer is released. If VQ_RX_EMPTY_NOTIFY is enabled,
only send one notification when the RX queue is empty to
improve performance.
Signed-off-by: Yongrong Wang <wangyongrong@xiaomi.com>
Remove openamp support for Zynq-7000 SoC, following changes are done
1) remove folder apps/machine/zynq7
2) remove folder apps/system/generic/machine/zynq7
3) remove file cmake/platforms/zynq7_generic.cmake
4) remove file cmake/platforms/zynq7_linux.cmake
5) Modify README.md files
Reasons to remove:
1) Support for Zynq-7000 has ended
2) Removing redundant or unmaintained code
3) Reduce technical debt carried by OpenAMP team
4) very few customer using openamp on Zynq-7000 SoC
For using Zynq-7000 SoC support
last working and tested version is (v2023.10)
https://github.com/OpenAMP/open-amp/tree/v2023.10
Signed-off-by: Rajiv Mohan <rajiv.mohan@amd.com>