Releases: nxp-mcuxpresso/rpmsg-lite
Releases · nxp-mcuxpresso/rpmsg-lite
Release v5.3.0
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_COUNTthis 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 booleanand in its place use standard C99booltype 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
Added
- Doc added RPMSG-Lite VirtIO Overview
- Doc added RPSMG-Lite Design Considerations
- 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
Added
- Add MCXL20 porting layer and unit testing
- New utility macro
RL_CALCULATE_BUFFER_COUNT_DOWN_SAFEto safely determine maximum buffer count within shared memory while preventing integer underflow. - RT700 platform add support for MCMGR in DSPs
Changed
- Change
rpmsg_platform.cto 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_upfunction 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_IDremains 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_OVERHEADandshmem_length - 2U * shmem_config.vring_sizeexpressions. - Fixed CERT INT31-C violation in
platform_interrupt_disable()and similar functions by replacing unsafe cast fromuint32_ttoint32_twith a return of0constant. - 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.cwheresizeparameter was cast fromuint32_ttouint16_twithout proper validation.- Applied consistent masking approach to both
sizeandflagsparameters:(uint16_t)(value & 0xFFFFU). - This fix prevents potential data loss when size values exceed 65535.
- Applied consistent masking approach to both
- Fixed CERT INT31-C violation in
env_memsetfunctions by explicitly convertingint32_tvalues 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.cwherememcmp()return value (signed int) was compared with unsigned constant without proper type handling. - Fixed CERT INT31-C violation in
rpmsg_platform.cwhere 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
imx943platform. - 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_tfor each operand.
Release v5.1.4
Added
- Add KW43B43 porting layer
Changed
- Doxygen bump to version 1.9.6
v5.1.3 Release
- 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
- Zephyr-related changes.
- Minor Misra corrections.
v5.1.1 Release
- Minor changes in platform and env. layers, minor test code updates
- Test suite provided
- Zephyr support added
v5.1.0 Release
- 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
- 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
- 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