Releases: OpenAMP/open-amp
OpenAMP Release 2024.10.0 - v1.7.0
This release
- introduces the
VQ_RX_EMPTY_NOTIFY
build configuration, allowing to sendvirtqueue_kick
only when RX queue is empty( instead of sending on each RX buffer treatment), - replace
strncpy
use by an internalsafe_strcpy
implementation to avoid buffer overflow, - use of new libmetal API
metal_cpu_yield
, - fixes and optimizes miscellaneous source code in the library,
- is compatible with the libmetal v2024.05.0.
API Updates:
- virtio.h
virtio_negotiate_features
: thefinal_features
argument is now optional.
Deprecation
- The application examples are nove available in https://github.com/OpenAMP/openamp-system-reference/tree/main/examples/legacy_apps. The apps foder will be removed in comings releases
- the Zynq-7000 SoC is no more supported since this release
What's Changed
- virtio_mmio: Remove unneeded use of libmetal device by @glneo in #598
- Documentation: fix license.md and readme.md formating by @arnopo in #597
- remoteproc: Do not update the rproc state if rproc->ops fails by @mengtanhzc in #600
- rpmsg: Replace rvdev->vdev with vdev in rpmsg_init_vdev_with_config by @xiaoxiang781216 in #621
- openamp/virtio.h: update vdev->features and make final_features optional by @wyr-7 in #610
- zynq: Remove support for Zynq-7000 SoC by @rajimoha in #604
- rpmsg: Allow to send virtqueue_kick only when RX queue is empty by @wyr-7 in #615
- Update CI by @arnopo in #619
- implement internal safe_strcpy to replace the strncpy by @arnopo in #620
- CI: Zephyr, test against known working version and also the very latest on main by @wmamills in #623
- rpmsg_virtio.c: replace metal_cpu_yield to metal_yield by @wyr-7 in #613
- rpmsg_virtio: fix rpmsg_virtio_get_tx_payload_buffer() error by @CV-Bowen in #624
- options: make WITH_APPS cmake option deprecated by @arnopo in #627
- Fix safe_strcpy calls by @arnopo in #626
- release: open-amp 2024.10.0 by @arnopo in #629
New Contributors
Full Changelog: v2024.05.1...v2024.10.0
OpenAMP Release 2024.05.1 - v1.6.1
This release
- fixes build warnings introduced by the use of
VIRTIO_DRIVER_SUPPORT
andVIRTIO_DEVICE_SUPPORT
, - fixes
rpmsg_create_ept()
which overwrites thepriv
field in therpmsg_endpoint
structure, - is compatible with the libmetal v2024.05.0.
API Updates:
No Update
What's Changed
Full Changelog: v2024.05.0...v2024.05.1
OpenAMP Release 2024.05.0 - v1.6.0
This release
- Fix the remoteproc lelf loader,
- add API release callback for the endpoint management to ensure that endpoint is released before freeing associate resources,
- add API wait callback to avoid looping in tx buffer get,
- add API for retrieving message buffer sizes,
- various code improvement in the library and application,
- fixes various bugs.
API Updates:
Deprecated APIs:
-
cmake:
- Deprecate
VIRTIO_DEVICE_ONLY
andVIRTIO_DRIVER_ONLY
that are replaced byVIRTIO_DEVICE_SUPPORT=0/1
andVIRTIO_DEVICE_SUPPORT=0/1
. - Remove deprecated
VIRTIO_MASTER_ONLY
andVIRTIO_MASTER_ONLY
configs.
- Deprecate
-
virtio:
- Deprecate
virtio_create_virtqueues
andvirtio_delete_virtqueues
that should only be used internally.
- Deprecate
-
virtio rpmsg:
- deprecate
rpmsg_virtio_set_status
andrpmsg_virtio_get_status
, virtio API should be used instead.
- deprecate
New APIs:
-
rpmsg:
- Add new
rpmsg_ept_release_cb
to inform application that a endpoint has been released.
- Add new
-
virtio rpmsg:
rpmsg_virtio_get_rx_buffer_size
andrpmsg_get_rx_buffer_size
: get the RPMsg buffer payload size.
-
virtio:
wait_notified
ops to implement specific action in virtio transport layer waiting new TX free buffer.
What's Changed
- rpmsg: set ept address to incease num when alloc from the bitmap by @GUIDINGLI in #514
- openamp: add new API rpmsg_virtio_get_rx_buffer_size() by @CV-Bowen in #521
- apps: Add use of rpmsg_virtio_get_tx/rx_buffer_size API by @arnopo in #535
- Fix #455 by @danmilea in #533
- rpmsg: let rpmsg_virtio_get_tx_buffer() always return idx in host side by @CV-Bowen in #520
- rpmsg: add release cb and refcnt in endpoint to fix ept used-after-free by @yintao707 in #508
- openamp: add new ops wait_notified() to avoid looping in tx buffer get by @CV-Bowen in #518
- remoteproc: clear bitmap when stop/shutdown by @CV-Bowen in #522
- rpmsg_virtio: add RPMSG_ASSERT to check the virtqueue add error by @CV-Bowen in #526
- Add missing include with EINVAL definition by @zaporozhets in #544
- lib: add include directory to open_amp-static target by @zaporozhets in #545
- remoteproc_virtio: initialize the virtio device id when create vdev by @CV-Bowen in #540
- openamp: change rx buffer hold flag to count by @CV-Bowen in #524
- remoteproc_virtio: fix vrings_info structure init by @arnopo in #554
- Fixes #550: OpenAMP elf loader loads ELF sections to their load addresses by @UmairKhanUET in #551
- load_fw: The firmware loading loop terminates prematurely by @UmairKhanUET in #556
- remoteproc_virtio: optimize the remoteproc virtio transport layer by @CV-Bowen in #489
- remoteproc: fix management of non loadable segments by @UmairKhanUET in #553
- openamp: decouple rpmsg virtio and remoteproc by @wyr8899 in #549
- Cleanup rsc_table_parser code and API by @glneo in #562
- Remove layer breaking functions from rpmsg_virtio by @glneo in #561
- remoteproc: Fix the NULL vs RPROC_IS_ERR() bug for remoteproc_get_rsc_table() by @mengtanhzc in #571
- apps: system: linux: Use metal_io_finish() for closing io by @glneo in #573
- apps: linux: generic: Use accessor functions for struct remoteproc_mem by @glneo in #563
- Add RPMsg API to get buffer size by @glneo in #565
- virtio: Use virtqueue_get_buffer() helpers by @glneo in #568
- remoteproc: Un-inline remoteproc_init_mem() and remoteproc_add_mem() by @glneo in #572
- apps: linux_rpc_demo: Do not access members of rpmsg_endpoint by @glneo in #566
- virtqueue: Fix comment on shm_io and fix type by @glneo in #570
- Fix #549 by @arnopo in #579
- apps: Move common function declaration to common header by @glneo in #564
- Use new VIRTIO_{DRIVER,DEVICE}_SUPPORT compiler define to improve code readability by @glneo in #560
- virtio: Remove unneeded forward declaration of virtio_feature_name() by @glneo in #583
- lib: remove deprecated MASTER/SLAVE configuration by @arnopo in #588
- lib: rpmsg_rpc: fix compilation warning and bad API by @arnopo in #587
- Fix broken CI by @arnopo in #586
- apps: remove remaining master terminology by @arnopo in #589
- virtio: Remove never used virtio_feature_name() by @glneo in #584
- fix Doxygen warnings by @arnopo in #590
- rpmsg_virtio: Move get RX buffer into receive loop and returned buffer kick to common location by @glneo in #585
- remoteproc: Assign ops and priv to rproc struct in init by default by @glneo in #582
- Finish converting rpmsg_virtio to use VIRTIO_ROLE_IS_{DRIVER,DEVICE}() by @glneo in #581
- [FIX FOR V2024.05] lib: fix build error using legacy VIRTIO_DEVICE/DRIVER_ONLY by @arnopo in #594
- release: open-amp 2024.05.0 by @arnopo in #593
New Contributors
- @yintao707 made their first contribution in #508
- @zaporozhets made their first contribution in #544
- @UmairKhanUET made their first contribution in #551
- @wyr8899 made their first contribution in #549
- @mengtanhzc made their first contribution in #571
Full Changelog: v2023.10.0...v2024.05.0
OpenAMP Release 2023.10.0 - v1.5.0
This release
- improves independence of the VIRTIO and remoteproc VIRTIO transport layer,
- introduces the VIRTIO MMIO native transport layer support, this is a first step to support VIRTIO protocol in the open-amp library,
- updates the cache management,
- improves the documentation with Doxygen,
- fixes various bugs.
API Updates:
Deprecated APIs:
virtio_describe()
function,WITH_DCACHE_VRINGS
,WITH_DCACHE_BUFFERS
,WITH_DCACHE_RSC_TABLE
cmake options replaced by an unique optionWITH_DCACHE
.
updated APIs:
- virtio:
virtio_dispatch
structure ; updatecreate_virtqueues
() ops parameter
New APIs:
-
virtio:
-
virtio_get_devid
(): get the virtio device type, -
virtio_delete_virtqueues()
: Delete the virtio device virtqueue, -
virtio_get_status()
: Set device status, -
virtio_set_status()
: Set device status, -
virtio_read_config()
: Retrieve configuration data from the device -
virtio_write_config()
: Write configuration data to the device -
virtio_set_features()
: set features supported by the VIRTIO driver, -
virtio_get_features()
: get features supported by the VIRTIO driver, -
virtio_negotiate_features()
: negotiate features between virtio device and driver, -
virtio_reset_device()
: reset the virtio device. -
virtio_dispatch
structure:create_virtqueues
: new ops to create a virtqueues,delete_virtqueues
: new ops to delete virtqueues.
-
-
virtio-mmio:
virtio_mmio_register_device()
: register a VIRTIO device,virtio_mmio_setup_virtqueue()
: setup a virtqueue structure,virtio_mmio_device_init()
: VIRTIO MMIO device initialization.
-
virtqueue:
virtqueue_empty()
: test if virtqueue is empty,virtqueue_full()
: test if virtqueue is full.
What's Changed
- apps: zynqmp: Add Versal_net IPI values. by @bentheredonethat in #490
- CI: update checkout action to V3 by @arnopo in #492
- virtio: follow virtio 1.2 spec, add more virtio status and device id by @CV-Bowen in #493
- CI: Fix checkpatch by @arnopo in #497
- virtio: add create_virtqueues and delete_virtqueues in virtio_dispatch by @CV-Bowen in #495
- remoteproc: do cache invalidation before reading rsc_table status by @iuliana-prodan in #500
- Virtio native support for lib openamp by @danmilea in #494
- CI: Fix Zephyr build by updating Zephyr SDK version to 0.16.1 by @arnopo in #504
- Updates and clean-up cache management by @iuliana-prodan in #502
- Doxygen updates for data structures by @tammyleino in #507
- Refactor VRING macros for AMP VIRTIO by @danmilea in #505
- Docs: enable readthedocs rendering (for PRs) by @wmamills in #511
- Doxygen update for virtio structures by @arnopo in #510
- github action: add stales action by @arnopo in #512
- Docs: style doxygen when built as part of OpenAMP docs by @wmamills in #516
- virtio: make unused function virtio_describe() deprecated by @arnopo in #509
- virtio: Fix delete_virtqueues function by @arnopo in #527
- github action: Fix stales action to not close PR/issue after 7 days by @arnopo in #528
- Readme improvement for v2023.10 release by @arnopo in #530
- release: open-amp 2023.10.0 by @arnopo in #531
New Contributors
- @CV-Bowen made their first contribution in #493
- @iuliana-prodan made their first contribution in #500
- @wmamills made their first contribution in #511
Full Changelog: v2023.04.0...v2023.10.0
OpenAMP Release 2023.04.0 - v1.4.0
This release
- introduce API documentation generation using Doxygen (only functions documentation has been reworked as a first step),
- fixes various bugs.
API Updates:
No Update
What's Changed
- Fix warn: declaration of 'vring_rsc' shadows a previous local by @xiaoxiang781216 in #439
- CI: fix Zephyr build issue resulting from the introduction of sysbuild by @arnopo in #451
- Fix shadow warnings in application code and renforce CI build by @arnopo in #440
- Added build for Doxygen docs by @tammyleino in #459
- readme: Fix broken openamp-rp mailing list link by @hiagofranco in #460
- openamp: fix remoteproc_load_noblock hasn't update rsc_io by @bentheredonethat in #464
- BUGFIX: rpmsg: do cache_invalidate() when real data returned by @GUIDINGLI in #466
- BUGFIX: change unsuitable atomic_int to atomic_flag by @mzyx-hnu in #472
- zynq7, microblaze resource table: virtio notifyid by @kernelchuk in #467
- BUG FIX: rpmsg: add cache flush when hold rx buffer by @GUIDINGLI in #465
- checkpatch: fix TYPO_SPELLING check for words with apostrophe by @arnopo in #484
- version: use generated version_def.h by @kernelchuk in #469
- Function header description consistency by @tammyleino in #478
- release: open-amp 2023.04.0 by @arnopo in #485
New Contributors
- @hiagofranco made their first contribution in #460
- @mzyx-hnu made their first contribution in #472
Full Changelog: v2022.10.0...v2023.04.0
OpenAMP Release 2022.10.1 - v1.3.1
This release
- fix a build warning
- is compatible with the libmetal v2022.10.0
API Updates:
No Update
What's Changed
- Fix warn: declaration of 'vring_rsc' shadows a previous local by @xiaoxiang781216 in #439
Full Changelog: v2022.10.0...v2022.10.1
OpenAMP Release 2022.10 - v1.3.0
This release
- adds the capability to split the shared memory in a TX and a RX shared memories for low power and memory access right optimizations,
- removes API that has been deprecated for 2 years,
- provides capability to release an unused buffer when the no copy API is used,
- fixes miscellaneous bugs, typos and improve CI tests.
API Updates:
- remove deprecated rpmsg_init_ept,
- add ns_unbind_cb callback handler for name service destroyed announcement,
- add rpmsg_release_tx_buffer API to release an unused TX buffer reserved by the rpmsg_get_tx_payload_buffer API.
What's Changed
- rpmsg: remove rpmsg_init_ept by @xiaoxiang781216 in #332
- apps: Remove leading space in CMake linker directive variables. by @edmooring in #383
- openamp: add ns_unbind_cb to rpmsg_device by @xiaoxiang781216 in #376
- Fix CMake Deprecation Warnings by @edmooring in #389
- lib: Remove warnings from -Wcast-align by @edmooring in #388
- apps: machines: clean-up the virtio device features definition by @arnopo in #391
- doc: clean-up data structures by @arnopo in #392
- README fix some links by @arnopo in #395
- Terminology: Replace potentially offensive terms in documentation by @arnopo in #396
- Add missing macros for driver/device-only compilation by @tammyleino in #409
- virtqueue_add_consumed_buffer input parameter fix by @tammyleino in #411
- openamp: add available_idx to dump by @GUIDINGLI in #412
- CI: Fix Zephyr build by updating Zephyr SDK version to 0.15.0 by @arnopo in #417
- Additional input parameter checks for APIs by @tammyleino in #408
- linux_rpc_demo: do not include rsc_table.h by @kernelchuk in #416
- Vring descriptor count must be limited to 65k per device by @tammyleino in #407
- handle_vdev_rsc must return error if notifyid cannot be assigned by @tammyleino in #404
- remoteproc_allocate_id not treating notifyid as 32-bits by @tammyleino in #403
- openamp: divide shram to TX shram & RX shram by @Donny9 in #375
- app: rpc_demod: fix buffer overflow in handle_read by @kernelchuk in #425
- README: Remove deprecated method to build open-amp lib for zephyr by @arnopo in #431
- Update rpc_demo description by @TanmayShah-xilinx in #429
- Introduce rpmsg_release_tx_buffer API by @arnopo in #401
- remoteproc: Fix build warning in rproc_virtio_create_vdev function by @arnopo in #435
- zynqmp_r5 resource table: Change notifyid for the virtio device by @edmooring in #438
New Contributors
- @Donny9 made their first contribution in #375
- @TanmayShah-xilinx made their first contribution in #429
Note
The change to the notifyid for the virtio device in #438 is due to a quirk of the Linux remoteproc implementation. When a file is loaded onto the remote processor, the Linux kernel replaces the contents of the notifyid field in the vring structure with values it allocates. This led to a duplicate notifyid which was detected by the improved error checking in #404
Full Changelog: v2022.04.0...v2022.10.0
OpenAMP Release 2022.04 - v1.2.0
This release
- adds the capability for the host to set sizes of TX and RX buffers independently,
- fixes miscellaneous bugs, typos and improve CI tests.
API Update:
Following API updates can have impact on the application
- remoteproc_init function:
The struct remoteproc *remoteproc_init paramter is now a const. This
can generate some warning (or error) during compilation. - rpmsg_virtio_get_buffer_size function:
Can return a negative value on error instead of 0. - Replacement of potentially objectionable terms:
Can generate deprecation warning or build error if not replaced in application code and build environment.- VIRTIO_DEV_SLAVE define has been replaced by VIRTIO_DEV_DEVICE,
- VIRTIO_DEV_MASTER define has been replaced by VIRTIO_DEV_DRIVER,
- VIRTIO_SLAVE_ONLY compilation option has been replaced by VIRTIO_DEVICE_ONLY,
- VIRTIO_MASTER_ONLY compilation option has been replaced by VIRTIO_DRIVER_ONLY,
- WITH_VIRTIO_MASTER cmake option has been replaced by WITH_VIRTIO_DRIVER
- WITH_VIRTIO_SLAVE cmake option has been replaced by WITH_VIRTIO_DEVICE
What's Changed
- CI: Update branch from "master" to "main". by @edmooring in #321
- remoteproc: fix notifyid assignment in handle_vdev_rsc by @lozdznil in #316
- Remove vim modeline comments by @supergaute in #311
- rpmsg_virtio: configuration option to set buffer sizes per instance by @hubertmis in #328
- rpmsg_virtio: move RPMSG_VIRTIO_DEFAULT_CONFIG to private location by @xiaoxiang781216 in #330
- rpmsg: merge rpmsg_initialize_ept into rpmsg_register_endpoint by @xiaoxiang781216 in #331
- fix remoteproc get wrong memory when memory region are continuous and Invalidate the ring region but use non initialize ring index. by @joshualin-petaio in #339
- remoteproc: fix memory issue if load resource table failed by @anchao in #362
- Removed unused code from rpmsg_get_endpoint by @tammyleino in #364
- CI: enable codespell check by @arnopo in #367
- Fix various typo with codespell by @arnopo in #366
- Enable OpenAMP Demo configuration via CMake by @bentheredonethat in #365
- virtqueue_add_buffer must check that there is room for multiple buffers by @tammyleino in #368
- remoteproc_virtio_notify could use null notify operation by @tammyleino in #371
- Document buf argument in get_mem for remoteproc_ops structure by @tammyleino in #372
- remoteproc_get_mem could wrongly match on wrong name by @tammyleino in #374
- checkpatch: Increase the default limit to 100 characters by @arnopo in #378
- openamp: add const for remoteproc_ops, image_store_ops and loader_ops by @xiaoxiang781216 in #336
- _rpmsg_virtio_get_buffer_size should return error on failure by @tammyleino in #369
- release: open-amp 2022.04.0 by @arnopo in #382
New Contributors
- @lozdznil made their first contribution in #316
- @hubertmis made their first contribution in #328
- @joshualin-petaio made their first contribution in #339
- @anchao made their first contribution in #362
- @tammyleino made their first contribution in #364
Full Changelog: v2021.10.0...v2022.04.0
OpenAMP Release 2021.10
This release:
- Adds support for manually-managed cached memory
- Adds a generic rpc service and associated example
Arnaud Pouliquen (6):
CI: Zephyr test: copy whole libmetal directory for test
CI: Fix Zephyr build by updating Zephyr SDK version
CI: Fix Zephyr build by updating Zephyr SDK version to 13.0
CI: Fix Zephyr build error due to cmake version
CI: Fix Zephyr build by updating Zephyr SDK version to 0.13.1
release: open-amp 2021.10
Carlo Caione (2):
openamp: Introduce cache helpers
Introduce CMake options to enable cache operations
Ed Mooring (1):
MAINTAINERS: Update maintainer email address.
ViswaHarsha C (2):
lib: added generic rpmsg services
apps: add linux applications for linux rpc communication
OpenAMP v2021.04 Release
This release:
- Adds semantic versioning to the OpenAMP library and API (see http://semver.org/).
- Reintroduces zero-copy transmit and receive for RPMsg.
- Adds a new callback to remoteproc_ops to allow client software to more easily manage memory.
- Fixes various bugs and issues.
Arnaud Pouliquen (16):
apps: add missing license information
lib: add missing license information for rpmsg_retarget
apps: rpc_demo: fix compilation warning
apps: move nocopy ping test to example
apps: add responder part of the no copy example
apps: update nocopy ping to use nocopy API for reception.
Readme: add description for zero copy demo
CI: compliance: fail on errors
CI: compliance: fix check_compliance workflow
rpmsg: fix variable overflow
README: Add version chapter
Rework the version management
lib: add new API to get the library version
apps: add libraries version information in echo example
CI: Copy the VERSION file in zephyr openamp module
version: add generated define for version
Ben Levinsky (3):
apps: update memory management
apps: machine: update cleanup of rpmsg and virtio devices
apps: demos: update to hand rproc for cleanup
Chao An (1):
rpmsg: bring back zero copy transfer
GFWisshit (1):
Fix compilation error.Add missing semicolon.
Guiding Li (2):
openamp: fix ns_unbind_cb error when meet RPMSG_NS_DESTROY
openamp: replace while(1) to metal_assert in RPMSG_ASSERT
Michael Bullis (1):
rpc_demo: fix spelling and grammar in code comment
Sergei Korneichuk (1):
apps: machine: Fix MicroBlaze compilation error
Xiang Xiao (4):
rename size parameter to len for rpmsg_send_offchannel_raw
rpmsg: virito: limit the buffer allocate from shared memory pool
apps: add msg-test-rpmsg-nocopy-ping test
remoteproc: add get_mem callback to remoteproc_ops