Skip to content

Releases: OpenAMP/open-amp

OpenAMP Release 2024.10.0 - v1.7.0

04 Nov 17:00
Compare
Choose a tag to compare

This release

  • introduces the VQ_RX_EMPTY_NOTIFY build configuration, allowing to send virtqueue_kick only when RX queue is empty( instead of sending on each RX buffer treatment),
  • replace strncpy use by an internal safe_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: the final_features argument is now optional.

Deprecation

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

28 Jun 07:11
Compare
Choose a tag to compare

This release

  • fixes build warnings introduced by the use of VIRTIO_DRIVER_SUPPORT and VIRTIO_DEVICE_SUPPORT,
  • fixes rpmsg_create_ept() which overwrites the priv field in the rpmsg_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

31 May 07:23
Compare
Choose a tag to compare

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 and VIRTIO_DRIVER_ONLY that are replaced by VIRTIO_DEVICE_SUPPORT=0/1 and VIRTIO_DEVICE_SUPPORT=0/1.
    • Remove deprecated VIRTIO_MASTER_ONLY and VIRTIO_MASTER_ONLY configs.
  • virtio:

    • Deprecate virtio_create_virtqueues and virtio_delete_virtqueues that should only be used internally.
  • virtio rpmsg:

    • deprecate rpmsg_virtio_set_status and rpmsg_virtio_get_status, virtio API should be used instead.

New APIs:

  • rpmsg:

    • Add new rpmsg_ept_release_cb to inform application that a endpoint has been released.
  • virtio rpmsg:

    • rpmsg_virtio_get_rx_buffer_sizeand rpmsg_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

Full Changelog: v2023.10.0...v2024.05.0

OpenAMP Release 2023.10.0 - v1.5.0

31 Oct 17:06
Compare
Choose a tag to compare

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 option WITH_DCACHE.

updated APIs:

  • virtio:
    • virtio_dispatch structure ; update create_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

Full Changelog: v2023.04.0...v2023.10.0

OpenAMP Release 2023.04.0 - v1.4.0

28 Apr 04:18
Compare
Choose a tag to compare

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

Full Changelog: v2022.10.0...v2023.04.0

OpenAMP Release 2022.10.1 - v1.3.1

13 Dec 03:21
Compare
Choose a tag to compare

This release

API Updates:

No Update

What's Changed

Full Changelog: v2022.10.0...v2022.10.1

OpenAMP Release 2022.10 - v1.3.0

04 Nov 08:27
Compare
Choose a tag to compare

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

29 Apr 08:41
Compare
Choose a tag to compare

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

Full Changelog: v2021.10.0...v2022.04.0

OpenAMP Release 2021.10

01 Nov 01:12
Compare
Choose a tag to compare

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

30 Apr 20:55
Compare
Choose a tag to compare

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