Skip to content

Releases: nxp-mcuxpresso/rpmsg-lite

Release v5.3.0

19 Dec 09:35

Choose a tag to compare

Added

  • RT700 porting layer added support to send rpmsg messages between CM33_0 <-> Hifi1 and CM33_1 <-> Hifi4 cores.
  • Add new platform macro RL_PLATFORM_MAX_ISR_COUNT this will set number of IRQ count per platform. This macro is then used in environment layers to set isr_table size where irq handles are registered. It size should match the bit length of VQ_ID so all combinations can fit into table.
  • Unit tests updated to improve code coverage, new unit tests added covering static allocations in rtos environment layers.

Fixed

  • virtio.h removed typedef uint8_t boolean and in its place use standard C99 bool type to avoid potential type conflicts.
  • env_acquire_sync_lock() and env_release_sync_lock() synchronization primitives removed
  • Kconfig consolidation, when RL_ALLOW_CUSTOM_SHMEM_CONFIG enabled the platform_get_custom_shmem_config() function needs to be implemented in platform layer to provide custom shared memory configuration for RPMsg-Lite instance.

Release v5.2.1

22 Sep 12:46

Choose a tag to compare

Added

  • Doc added RPMSG-Lite VirtIO Overview
  • Doc added RPSMG-Lite Design Consi​derations
  • Added frdmimxrt1186 unit testing

Fixed

  • Fixed CERT-C INT31-C violation in platform_notify function in rpmsg_platform.c for imxrt700_m33, imxrt700_hifi4, imxrt700_hifi1 platforms

Release v5.2.0

26 Jun 06:44

Choose a tag to compare

Added

  • Add MCXL20 porting layer and unit testing
  • New utility macro RL_CALCULATE_BUFFER_COUNT_DOWN_SAFE to safely determine maximum buffer count within shared memory while preventing integer underflow.
  • RT700 platform add support for MCMGR in DSPs

Changed

  • Change rpmsg_platform.c to support new MCMGR API
  • Improved input validation in initialization functions to properly handle insufficient memory size conditions.
  • Refactored repeated buffer count calculation pattern for better code maintainability.
  • To make sure that remote has already registered IRQ there is required App level IPC mechanism to notify master about it

Fixed

  • Fixed env_wait_for_link_up function to handle timeout in link state checks for baremetal and qnx environment, RL_BLOCK mode can be used to wait indefinitely.
  • Fixed CERT-C INT31-C violation by adding compile-time check to ensure RL_PLATFORM_HIGHEST_LINK_ID remains within safe range for 16-bit casting in virtqueue ID creation.
  • Fixed CERT-C INT30-C violations by adding protection against unsigned integer underflow in shared memory calculations, specifically in shmem_length - (uint32_t)RL_VRING_OVERHEAD and shmem_length - 2U * shmem_config.vring_size expressions.
  • Fixed CERT INT31-C violation in platform_interrupt_disable() and similar functions by replacing unsafe cast from uint32_t to int32_t with a return of 0 constant.
  • Fixed unsigned integer underflow in rpmsg_lite_alloc_tx_buffer() where subtracting header size from buffer size could wrap around if buffer was too small, potentially leading to incorrect buffer sizing.
  • Fixed CERT-C INT31-C violation in rpmsg_lite.c where size parameter was cast from uint32_t to uint16_t without proper validation.
    • Applied consistent masking approach to both size and flags parameters: (uint16_t)(value & 0xFFFFU).
    • This fix prevents potential data loss when size values exceed 65535.
  • Fixed CERT INT31-C violation in env_memset functions by explicitly converting int32_t values to unsigned char using bit masking. This prevents potential data loss or misinterpretation when passing values outside the unsigned char range (0-255) to the standard memset() function.
  • Fixed CERT-C INT31-C violations in RPMsg-Lite environment porting: Added validation checks for signed-to-unsigned integer conversions to prevent data loss and misinterpretation.
    • rpmsg_env_freertos.c: Added validation before converting int32_t to UBaseType_t.
    • rpmsg_env_qnx.c: Fixed format string and added validation before assigning to mqstat fields.
    • rpmsg_env_threadx.c: Added validation to prevent integer overflow and negative values.
    • rpmsg_env_xos.c: Added range checking before casting to uint16_t.
    • rpmsg_env_zephyr.c: Added validation before passing values to k_msgq_init.
  • Fixed a CERT INT31-C compliance issue in env_get_current_queue_size() function where an unsigned queue count was cast to a signed int32_t without proper validation, which could lead to lost or misinterpreted data if queue size exceeded INT32_MAX.
  • Fixed CERT INT31-C violation in rpmsg_platform.c where memcmp() return value (signed int) was compared with unsigned constant without proper type handling.
  • Fixed CERT INT31-C violation in rpmsg_platform.c where casting from uint32_t to uint16_t could potentially result in data loss. Changed length variable type from uint16_t to uint32_t to properly handle memory address differences without truncation.
  • Fixed potential integer overflow in env_sleep_msec() function in ThreadX environment implementation by rearranging calculation order in the sleep duration formula.
  • Fixed CERT-C INT31-C violation in RPMsg-Lite where bitwise NOT operations on integer constants were performed in signed integer context before being cast to unsigned. This could potentially lead to misinterpreted data on imx943 platform.
  • Added RL_MAX_BUFFER_COUNT (32768U) and RL_MAX_VRING_ALIGN (65536U) limit to ensure alignment values cannot contribute to integer overflow
  • Fixed CERT INT31-C violation in vring_need_event(), added cast to uint16_t for each operand.

Release v5.1.4

01 Apr 07:32

Choose a tag to compare

Added

  • Add KW43B43 porting layer

Changed

  • Doxygen bump to version 1.9.6

v5.1.3 Release

16 Jan 12:48

Choose a tag to compare

  • Memory cache management of shared memory. Enable with #define RL_USE_DCACHE (1) in rpmsg_config.h in case of data cache is used.
  • Cmake/Kconfig support added.
  • Porting layers for imx95, imxrt700, mcmxw71x, mcmxw72x, kw47b42 added.

v5.1.2 Release

08 Jul 13:49

Choose a tag to compare

  • Zephyr-related changes.
  • Minor Misra corrections.

v5.1.1 Release

19 Jan 08:39

Choose a tag to compare

  • Minor changes in platform and env. layers, minor test code updates
  • Test suite provided
  • Zephyr support added

v5.1.0 Release

02 Aug 09:18

Choose a tag to compare

  • Resolved issues in ThreadX env. layer implementation.
  • RPMsg-Lite: Added aarch64 support.
  • RPMsg-Lite: Increased the queue size to (2 * RL_BUFFER_COUNT) to cover zero copy cases.
  • Code formatting using LLVM16

v5.0.0 Release

19 Jan 12:46

Choose a tag to compare

  • Improved debug check buffers implementation - instead of checking the pointer fits into shared memory check the presence in the VirtIO ring descriptors list
  • Timeout parameter added to rpmsg_lite_wait_for_link_up API function
  • VRING_SIZE is set based on number of used buffers now (as calculated in vring_init) - updated for all platforms that are not communicating to Linux rpmsg counterpart
  • Fixed wrong RL_VRING_OVERHEAD macro comment in platform.h files
  • Misra corrections

v4.0.0 Release

20 Jul 06:59

Choose a tag to compare

  • Adjusted rpmsg_lite_is_link_up() to return RL_TRUE/RL_FALSE
  • Added support for custom shared memory arrangement per the RPMsg_Lite instance
  • Introduced new rpmsg_lite_wait_for_link_up() API function - this allows to avoid using busy loops in rtos environments, GitHub PR #21