IPC 3.40.00.06 Release Notes
August 2015
This IPC Release is targeted to SYS/BIOS 6-based platforms.
Introduction ,
Documentation ,
What's New ,
Upgrade Info ,
Compatibility Information ,
Device Support ,
Validation Info ,
Known Issues ,
Examples ,
Version Information ,
Technical Support .
The IPC product provides software connectivity between multiple
processors. Each processor may run either an HLOS (e.g. Linux, QNX)
or an RTOS (e.g. SYS/BIOS).
The IPC product is comprised of the following
packages/ti.ipc : IPC interface definitions (e.g. MessageQ,
ListMP, HeapMemMP, Notify, etc.)
packages/ti.sdo.ipc : BIOS implementations of
higher-level IPC modules (e.g. MessageQ, Notify, heaps, etc.)
packages/ti.sdo.utils : BIOS implementations of IPC
utility modules (e.g. MultiProc, List, NameServer, etc.)
qnx : Contains QNX implementations of ti.ipc
linux : Contains Linux implementations of ti.ipc
These components are provided as source code and prebuilt libraries.
The following documentation is available:
In addition, users are encouraged to monitor (and contribute to!) the
TI Wiki .
Release notes from previous releases are also available in the relnotes_archive directory.
The following significant changes have been made since 1.25.00
3.40.00.06
The following defects were resolved:
ID
Headline
SDOCM00117013
SharedRegion-related asserts are incorrect
SDOCM00117958
LAD crashes w/ segfault when NameServer_create() is called after NameServer() delete
SDOCM00117156
Resource entries that are not aligned to 1MB boundary needs to be handled correctly
SDOCM00104833
MessageQMulti application does not support numThreads > 10
SDOCM00114069
IPC custom build does not include file from ti/ipc
SDOCM00118440
Remove DRA7XX references from example ex46_graph config.bld
SDOCM00118433
Examples use incorrect link command
The following enhancements were resolved:
ID
Headline
SDOCM00115404
IPC user-mode errors (Linux) should not go to STDOUT
SDOCM00116391
Increase default poll rate of the default gate in GateMP_setup in QNX
SDOCM00118017
RPMessage (Linux) has large data footprint, make it configurable
SDOCM00117361
Need to update BIOS version to support Power module for C66 on DRA7xx
SDOCM00115093
Multiple heap support for MessageQ (Linux)
SDOCM00117446
Power Management for DRA7xx DSP on Linux
3.36.00.07
The following defects were resolved:
ID
Headline
SDOCM00115129
DSP aborts when patched with large cluster base ID
SDOCM00115127
GateMP_open crashes on Keystone 2
SDOCM00114083
Upon failure from DLOAD_get_section_offset(), QNX IPC generates multiple assertions as opposed to exiting cleanly
SDOCM00114783
pthread_mutex_destroy is not called in IPC
SDOCM00115434
NameServer_delete in LAD daemon leaks memory
SDOCM00115067
Parallel build support in IPC examples
SDOCM00115428
Incorrect return status from NameServer_delete (Linux)
SDOCM00115143
Improper timeout handling in MessageQ_get (Linux)
SDOCM00115768
Incorrect check for invalid pointer in Ipc_detach
SDOCM00115958
'make install' for QNX is not exporting transport interface header files
SDOCM00114745
Ipc_transportConfig has race window where factory is overwritten
SDOCM00115098
New MultiProc cdoc links for "See Also" are garbled
SDOCM00115373
NameServer local get methods are missing on Linux
SDOCM00115294
NameServer_create and NameServer_add sometimes fail in QNX
The following enhancements were resolved:
ID
Headline
SDOCM00115106
Expose functions in TiIpcFxns.h as public API
SDOCM00114946
IPC Watchdog module should allow user-configurable timer assignments
SDOCM00115108
The default value ProcMgr_MAX_MEMORY_REGIONS should be increased in QNX
SDOCM00116094
Command Line Options for LAD to override config params
SDOCM00114951
Host-only IPC communication (Linux, no DSP support)
SDOCM00100361
Error Recovery: When slave crashes, apps using the slave should be able to recover
SDOCM00114663
Add DRA7XX DSP2 support to QNX
3.35.00.05
The following defects were resolved:
ID
Headline
SDOCM00103540
Incorrect number of hardware spin locks on DRA7XX
SDOCM00115028
"struct fw_rsc_intmem" mismatch between QNX and IPC 3.30
SDOCM00108142
QNX code in qnx/src/ipc3x_dev needs cleanup
SDOCM00115035
Watchdog module device validation & configuration should be in module$use method, not module$meta$init
SDOCM00115038
Notify mailbox driver is clearing wrong fifo during init phase
SDOCM00115050
Race condition in QNX when IPU2 is exchanging messages with host while DSP1 or IPU1 is doing the same
SDOCM00115024
IPC ping rpmsg unit-test hangs when run on K2L
SDOCM00115043
Recovery is not working in QNX on 'late-attached' cores
SDOCM00113501
Clean up QNX build output
SDOCM00114478
Incorrect thread safety in MessageQ_setup (Linux)
SDOCM00115026
ex13_notifypeer example needs ping message from DSP to EVE
SDOCM00115042
NotifyDriverMbx on Vayu should not use Ipc module
SDOCM00115034
"struct fw_rsc_intmem" mismatch between Linux 3.14 and IPC 3.30.0.9
SDOCM00114110
IPC custom build failure with XDCtools core product
SDOCM00114409
vring initialization in QNX is not clearing the correct area
SDOCM00115030
Ipc family Settings.xs needs to add F28377D
SDOCM00115031
libipc and libutils are not built for dynamic linking in QNX IPC
SDOCM00115036
MessageQMulti unit-test gets an out of heap memory error when run on K2E or K2L
SDOCM00115039
Ipc_attach() race on multiple cores corrupts Ipc_Reserved structs in SR0
SDOCM00114518
MessageQ_setMsgPri overwrites entire flags field
SDOCM00113915
GateMPApp's output should be made less verbose
SDOCM00115049
Incorrect Assert_isTrue in RPMessage_recv
SDOCM00115051
IPC custom build failure with XDCtools core product
SDOCM00106179
Remove/circumvent error messages from MessageQCopy_send at startup in QNX resource manager
SDOCM00114392
Interrupt module on tci6638 does not support clusters
SDOCM00114390
Incorrect procId in NameServer_get used by lad daemon
SDOCM00115053
LAD's GateMP fails to start when built for Android's Lollipop
SDOCM00115047
Optimization using VRING_USED_F_NO_NOTIFY is broken on QNX, and interrupts are not sent when race occurs
The following enhancements were resolved:
ID
Headline
SDOCM00113149
GateMP host-support should work when SharedRegion 0 has a physical address that is different from its virtual address
SDOCM00114393
ex44_compute, new example for Keystone II
SDOCM00114391
IPC cluster support is missing on Linux implementation
SDOCM00114908
Add reserved queue support to QNX
SDOCM00114354
IPC Manager needs a public header file
SDOCM00114730
Add support for reserved message queues on Linux/Keystone II
SDOCM00113638
Rename paths to ipc-trace to not require a priori knowledge of MultiProc ids in QNX
SDOCM00114696
Add method to return address of shared region entry
SDOCM00115022
Loading/unloading individual cores while keeping other cores running in QNX IPC
SDOCM00114964
Processor data array size should match cluster size
SDOCM00113609
Add version support for MessageQ_Params structure
SDOCM00114926
Modify examples on Linux to use installed IPC product
SDOCM00114985
MessageQ macro for extracting destination address from message header
SDOCM00108403
Enable pluggable MessageQ transports on Linux
SDOCM00108118
Need an IPC example to show how to send shmemallocator buffers using MessageQ
SDOCM00111686
NameServer max name length needs to be made more easily configurable
3.30.00.09
The following defects were resolved:
ID
Headline
SDOCM00107419
IPC build warning in RPMessage.c
SDOCM00112918
MessageQ_open() from multiple threads can get stuck
SDOCM00108130
IPC custom library build creates empty folder
SDOCM00112680
IPC for Concerto has incorrect NotifyDriverCirc_enable()/enableEvent()
The following enhancements were resolved:
3.23.00.01
The following defects were resolved:
ID
Headline
SDOCM00112106
Timed-out NameServer requests from host causes subsequent requests to receive out-of-sequence responses
SDOCM00108594
MultiProc_self() returns bogus value on QNX
SDOCM00108585
IpcPower has incorrect interrupts
SDOCM00112581
GateMP_create on Linux sets resourceId incorrectly
The following enhancements were resolved:
3.22.02.11
The following defects were resolved:
ID
Headline
SDOCM00112064
Reduce memory usage for K2E tests (including update to XDC 3.25.06.96)
The following enhancements were resolved:
ID
Headline
SDOCM00108138
Improved MmRpc/MmService error handling when app dies
3.22.01.08
The following defects were resolved:
ID
Headline
SDOCM00108167
Uninitialized variable in notify driver template file
SDOCM00108149
Incorrect mailbox index computation in NotifySetup for v7M and v7A
SDOCM00108114
Link error when building with DCE on IPU/Vayu
The following enhancements were resolved:
3.22.00.05
The following defects were resolved:
ID
Headline
SDOCM00106580
Fix KS2 tests to ensure Linux-owned memory (including vrings and vring buffers) are non-cached
SDOCM00107256
QNX: Need to update the help text in ipc_trace_daemon for -t option
SDOCM00107743
Build.getDefaultCustomCCOpts() does not remove optimization flags for debug builds
SDOCM00106156
Race conditions in QNX VirtQueue-based MessageQ
SDOCM00104834
MessageQ_create cannot create more than 52 MessageQ's
SDOCM00106949
IPC interrupt preempts itself on ARP32 (EVE)
SDOCM00106336
NameServerMessageQ copy of name is not copying null terminated character
The following enhancements were resolved:
ID
Headline
SDOCM00107470
Detect slave-side internal exceptions and restart slaves (OMAP5 IPU, DRA7XX IPU2)
SDOCM00106182
Introduce IPC_DEBUG env var to simplify enabling trace
SDOCM00107471
Add watchdog to detect slave crashes and restart (OMAP5 IPU, DRA7XX IPU2)
SDOCM00106428
Add notify mailbox driver support on DRA7xx (DSP, EVE)
SDOCM00106644
Move examples/archives/* to examples/*
SDOCM00107765
Need a way to disable recovery mechanism in QNX IPC resource manager
SDOCM00107904
Add option to set permissions on LAD's working directory
SDOCM00106584
Add notify mailbox driver support on DRA7xx (IPU, HOST)
SDOCM00093822
DRA7XX: Optimize Interrupt Handler for EVEs, DSPs and IPUs
SDOCM00107479
Introduce internal memory resource type
SDOCM00105667
Eliminate need to specify carveoutAddr, carveoutSize and mmuEnable in Syslink_Override_Params on QNX
3.21.00.07
The following defects were resolved:
ID
Headline
SDOCM00106267
OMAP5 and DRA7XX Linux examples should use TOOLCHAIN_PREFIX
SDOCM00106019
IPC makefile template does not honor Build.customCCOpts
SDOCM00105512
MessageQ_create() fails on Linux if unnamed
SDOCM00106318
LAD must remove existing PID response files before restarting
SDOCM00106117
ti_sdo_ipc_GateMP_getSharedAddr needs to be reverted to its original implementation
SDOCM00106278
QNX DRA7XX: prevent race condition when HOST cannot handle mailbox interrupts quickly enough
SDOCM00106271
CCS variable name for IPC (IPC_CG_ROOT) is broken
SDOCM00106643
Example makefile should use PLATFORM not DEVICE
SDOCM00106093
ex02_messageq slaves all create same named queue
SDOCM00106450
HeapMemMP_free fails to cache invalidate freed memory region containing stale data for old free list header
The following enhancements were resolved:
3.20.00.06
The following defects were resolved:
ID
Headline
SDOCM00104759
TransportCirc should allow Swi priority to be configurable
SDOCM00102085
IPC Examples would not build when extracted in the examples directory
SDOCM00104913
Linux tests issue compiler warning when DRM_PREFIX isn't set
SDOCM00103636
packages/ti/ipc/tests/package.bld doesn't -DRPMSG_NS_2_0 for OMAP5 which currently breaks only ping_rpmsg
SDOCM00104907
QNX loader fails to load code/data into slave's internal memory
SDOCM00102068
Crash recovery failing for QNX OMAP5 DSP
SDOCM00103679
Linux MessageQ_get() can discard msgs when a msg is available from more than one remote core
SDOCM00104304
Resolve Concerto IPC stress test failures
SDOCM00104725
Fix ti/ipc/rpmsg/virtio_ring.h compile warning
SDOCM00104761
VirtQueue notification on OMAP-L138 and TCI663X has a race condition
SDOCM00103727
QNX 'make install' is missing MessageQ and related headers/libs
SDOCM00103112
OMAP5 does not have a default Notify proxy delegate set in Settings.xs
SDOCM00104719
RPMessage crash after 64k messages
SDOCM00104300
Remove static allocation of IPU_MEM_IOBUFS memory in OMAP5 QNX
SDOCM00103794
Ducati trace thread steals early slave-side trace and terminates afterwards
SDOCM00102268
ipc resource manager process in QNX does not terminate correctly after MessageQ is used
SDOCM00104100
ROV for TransportCirc/NotifyDriverCirc does not work with different baseIdOfCluster
SDOCM00104726
Fix RcmServer.c compile warning
SDOCM00104049
MessageQ_open() returns not found when given queue actually exists
The following enhancements were resolved:
ID
Headline
SDOCM00099002
Make "LibType_Debug" build profile be similar to LibType_Custom but with no optimizations. Stop exporting package lib
SDOCM00103725
Enable builds without SMP libraries
SDOCM00103723
Introduce Android support for DRA7XX
SDOCM00103415
Align build variables/names across OS's in products.mak
SDOCM00104241
NameServer_create/delete needs to support reference counting
SDOCM00104525
Add support for Linux 3.9+ kernels which need newer AF_RPMSG definition
SDOCM00104716
Add ex11_ping example for C6678
3.10.00.08
The following defects were resolved:
ID
Headline
SDOCM00102067
QNX multiprocess MessageQ stress tests are failing
SDOCM00102137
QNX makefiles shouldn't 'install' when only building libs
SDOCM00102328
Setting KERNEL_INSTALL_DIR for Keystone fails during MmRpc build
SDOCM00102258
MultiProc names for TCI6636 should match TCI6638
SDOCM00102060
Remove unused procIds in vayu/NotifySetup module
SDOCM00102548
When only Mmrpc is used on the IPU and MessageQ is used on the DSP, MessageQ_open would not succeed
The following enhancements were resolved:
ID
Headline
SDOCM00099787
MessageQ_free needs a hook function
SDOCM00099785
MessageQ_create should allow a queueId to be specified instead of finding free slot
SDOCM00102317
Add support for TCI6636
SDOCM00103402
Introduce GateMP on QNX
SDOCM00102149
Update Linux toolchain to recent SDK-compatible Linaro versions
SDOCM00101419
Enable ipc-bios.mak to build a subset of platforms for a given target
SDOCM00103504
Introduce MmRpc_use()/release() enabling apps to declare when data buffers are in use across calls
SDOCM00100158
Introduce Linux support for OMAP5
SDOCM00102417
Remove unsupported example simVayu platforms
3.00.00.20
The following defects were resolved:
ID
Headline
SDOCM00098436
"ti_sdo_ipc_init" section needs to be padded to cacheline size
SDOCM00098440
ipc.mak is broken in Windows cmd shell
SDOCM00098522
The IPC mailbox drivers for M3 on TI81XX and C6A8149 does not work for SMP BIOS
The following enhancements were resolved:
ID
Headline
SDOCM00097544
Add support for polling for occurrence of interrupts on OMAPL138
SDOCM00097853
Remove ti.sdo.io* content (no longer supported)
SDOCM00097181
IPC should provide makefile-based examples
SDOCM00098543
Introduce Linux support for TCI6638
SDOCM00098458
Add rproc resource table accessor methods for vring addrs (BIOS-side)
The IPC packages are available in the "packages/"
subdirectory of the product. If you have a previous release of the
IPC product, you can install this release next to it, and
modify your build scripts/makefiles to use this newer release.
IPC 3.40.00.06 requires system integrators to update
the following dependencies:
XDC Tools 3.31.02.38.core (or compatible)
SYS/BIOS 6.42.02.29 (or compatible)
Note, if you're upgrading from a release earlier than IPC 3.00, be
sure to review the Upgrade section for each of the releases between
your current release and this one. Previous release notes are
available in the relnotes_archive directory.
This release supports the following devices (though examples are not provided for all):
TMS320C6472
TMS320C6474
TMS320C6670
TMS320C6678
OMAPL138
TCI6638K2K (Keystone II) - Linux on HOST, SYS/BIOS on C66 DSPs
TCI6636K2H (Keystone II) - Linux on HOST, SYS/BIOS on C66 DSPs
TCI6630K2L (Keystone II) - Linux on HOST, SYS/BIOS on C66 DSPs
66AK2E (Keystone II) - Linux on HOST, SYS/BIOS on C66 DSP
DRA7XX (Vayu)
SYS/BIOS on HOST, DSP(s), EVE(s), SMP-BIOS on IPU(s)
SYS/BIOS on HOST, DSP(s), EVE(s), IPU1-0, IPU1-1, SMP-BIOS on IPU2
QNX on HOST, SYS/BIOS on DSP1, SMP-BIOS on IPU(s)
Linux on HOST, SYS/BIOS on DSP1 and DSP2, SMP-BIOS on IPU1
and IPU2
OMAP-L138 - Linux on HOST, SYS/BIOS on DSP
This release was built and validated against using the following software
components. Please use the versions below, or compatible:
XDCtools 3.31.02.38.core
SYS/BIOS 6.42.02.29
Pre-built binaries were built with the following toolchains:
ti.targets.arm.elf.A8Fnv - 5.2.4
ti.targets.arm.elf.A8F - 5.2.4
ti.targets.arm.elf.M3 - 5.2.4
ti.targets.arm.elf.M4F - 5.2.4
ti.targets.arm.elf.M4 - 5.2.4
ti.targets.arp32.elf.ARP32_far - 1.0.0
ti.targets.arp32.elf.ARP32 - 1.0.0
ti.targets.elf.C66_big_endian - 7.4.4
ti.targets.elf.C66 - 7.4.4
ti.targets.elf.C674 - 7.2.0
Linux GCC toolchain - Linaro gnueabihf-4.7-2013.03-20130313
QNX 6.6.0 (with additional patches applied depending on the version of the QNX BSP. Refer to the BSP's documentation for more details.)
QNX BSP for DRA74x: M10
QNX BSP for DRA72x: M4
This release was validated using the following hardware platforms
(though others are supported):
TCI6638K2K (Keystone II) - Linux on HOST, SYS/BIOS on C66 DSPs
DRA7XX (Vayu)
SYS/BIOS on HOST, DSP(s), EVE(s), SMP-BIOS on IPU(s)
SYS/BIOS on HOST, DSP(s), EVE(s), IPU1-0, IPU1-1, SMP-BIOS on IPU2
QNX on HOST, SYS/BIOS on DSP1, SMP-BIOS on IPU(s)
Linux on HOST, SYS/BIOS on DSP1 and DSP2, SMP-BIOS on IPU1
and IPU2
Android on HOST, SYS/BIOS on DSP1 and DSP2, SMP-BIOS on IPU1
and IPU2
OMAP-L138 - Linux on HOST, SYS/BIOS on DSP
C6472 - SYS/BIOS on all cores
The following defect in IPC 3.30.01 is a known issue for IPU using
SYS/BIOS SMP-mode:
ID
Headline
SDOCM00113942
IPU logger is using null timestamp provider
If your application needs to
#include <ti/ipc/transports/TransportRpmsg.h>
then you must ensure that your compiler -I options are in the following
correct order:
-I <ipc>/linux/include -I <ipc>/packages
.
This is needed since the product erroneously contains a
ti/ipc/transports/TransportRpmsg.h
file in both locations, which will be fixed in an upcoming release.
Examples are not yet provided for many devices. If applicable,
please refer to the SDK redistributing IPC for examples appropriate
for your device.
The HLOS-allocated vrings (in rpmsg-based environments) must
currently be configured as non-cached from the slave side. This is
done in the typical, processor-specific way (e.g. MAR bits for C6x,
AMMU for IPUs, etc.). An enhancement is being considered to enable
these vrings to be cached from the slave side. That work is being
tracked as SDOCM00106580.
The MmRpc API on Linux currently requires out of mainline kernel
support. They are, therefore, not available for all devices. TI
will be working with the community to push these features
mainline. Until that is available, TI may provide kernels for
select devices with support for MmRpc.
The Linux MmRpc libraries are not pre-built (as they're not
supported on all kernels) - users of those APIs are required to
rebuild the IPC libraries as described in the IPC Install
Guide.
The IPC product build performs some industry-standard checks on
the integrity of the source code. Currently there are some issues
that are flagged by these checks which we believe are benign. We
will be addressing these issues in a future release so as to get a
clean "bill of health" from these source code checks.
This product's version follows a version format, M.mm.pp.bb ,
where M is a single digit Major number, mm is 2 digit
minor number, pp is a 2 digit patch number, and b is an
unrestricted set of digits used as an incrementing build counter.
To support multiple side-by-side installations of the product, the
product version is encoded in the top level directory,
ex. ipc_3_40_00_06 .
Subsequent releases of patch upgrades will be identified by the patch
number, e.g. IPC 3.22.01.XX with directory ipc_3_22_01_XX .
Typically, these patches only include critical bug fixes.
For technical support, use the community forum
TI E2E Community , or email
softwaresupport@ti.com.
Check the following web site for updates: https://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/index.html
Last updated: August 21, 2015