ICBMSG as IPC Backend as Logging backend fails to bind
Describe the bug
Tested on an STM32H747XI using ICBMSG for ipc backend/logging backend from the m4 core to the m7 core. Issue experienced on current main branch. Functionality works as expected with no changes to code on current V4.4-branch.
Likely related to the major ICBMSG overhaul recently introduced.
Regression
- This is a regression.
Steps to reproduce
Using an STM32H747 board.
m4 core: CONFIG_LOG=y CONFIG_LOG_BACKEND_UART=n CONFIG_UART_CONSOLE=n CONFIG_LOG_BACKEND_IPC_SERVICE=y CONFIG_IPC_SERVICE_BACKEND_ICBMSG=y CONFIG_STM32_ENABLE_DEBUG_SLEEP_STOP=y CONFIG_MBOX=y CONFIG_IPC_SERVICE=y
m7 core: CONFIG_MBOX=y CONFIG_IPC_SERVICE=y CONFIG_LOG_MULTIDOMAIN=y CONFIG_LOG_LINK_IPC_SERVICE=y CONFIG_IPC_SERVICE_BACKEND_ICBMSG=y CONFIG_IPC_SERVICE_LOG_LEVEL_DBG=y CONFIG_IPC_SERVICE_BACKEND_ICBMSG_LOG_LEVEL_DBG=y
Relevant log output
From M7 core:
[00:00:04.000,000] <dbg> ipc_icbmsg.open: Shm_q TX prod: 0x38000000, cons: 0x38000018
[00:00:04.000,000] <dbg> ipc_icbmsg.open: Shm_q RX prod: 0x38008000, cons: 0x38008018
[00:00:04.000,000] <dbg> ipc_icbmsg.open: TX 16 blocks of 2044 bytes at 0x38000040, max allocable 32700 bytes
[00:00:04.000,000] <dbg> ipc_icbmsg.open: RX 16 blocks of 2044 bytes at 0x38008040, max allocable 32700 bytes
[00:00:04.000,000] <dbg> ipc_icbmsg.send_packet: send packet: 0x38000040 [idx:0, ept:255 prio:1 size:16(16)]
[00:00:04.000,000] <dbg> ipc_icbmsg.msg_q_produce: addr:0x38000008 Produce index: 0, block_index: 128, active_count: 0
[00:00:04.000,000] <dbg> ipc_service.ipc_service_register_endpoint: Register endpoint logging
[00:00:04.000,000] <dbg> ipc_icbmsg.register_ept: Register EP (pending), local:0
[00:00:04.000,000] <dbg> ipc_icbmsg.send_packet: send packet: 0x3800083c [idx:1, ept:255 prio:1 size:6(6)]
[00:00:04.000,000] <dbg> ipc_icbmsg.msg_q_produce: addr:0x38000009 Produce index: 1, block_index: 129, active_count: 1No further ipc_icbmsg logs received. Reference logs received on v4.4-branch
[00:00:04.000,000] <dbg> ipc_icbmsg: open: RX 16 blocks of 2028 bytes at 0x38008140, max allocable 32444 bytes
[00:00:04.000,000] <dbg> ipc_service: ipc_service_register_endpoint: Register endpoint logging
[00:00:05.000,000] <inf> m4_core: TestImpact
Functional Limitation – Some features not working as expected, but system usable.
Environment
OS Linux Zephyr SDK 1.0.1
Additional Context
This also introduces some odd behavior with the log system, which constantly reports: " log: 1 unordered messages since last report" After every batch of logs. the number of unordered messages is always 1, irrespective of how many logs are pushed in that batch.
Source: zephyrproject-rtos/zephyr