6 years agoShared memory cache management
John Godbey [Wed, 27 Apr 2016 15:52:03 +0000 (11:52 -0400)]
Shared memory cache management

Additional cache invalidates are needed to ensure all data remains fresh.

Signed-off-by: John Godbey <j-godbey@ti.com>
6 years agoLinux: tests: Call MessageQ_unbind in Fault Test
Angela Stegmaier [Fri, 15 Apr 2016 15:01:51 +0000 (10:01 -0500)]
Linux: tests: Call MessageQ_unbind in Fault Test

Call MessageQ_unbind in the fault test to unbind the application
from remote cores that it doesn't care about. This is useful in
the case of remote core recovery, so that recovery of a remote
core doesn't trigger errors in MessageQ APIs if the application
doesn't care about the state of a particular core. In this way,
the MessageQ for the application is only bound to the core(s)
with which it is communicating.

Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
6 years agoLinux: Reattach to Proc In NameServer daemon In case of Error Recovery
Angela Stegmaier [Fri, 15 Apr 2016 15:01:50 +0000 (10:01 -0500)]
Linux: Reattach to Proc In NameServer daemon In case of Error Recovery

In the case of error recovery on one core while more than one
core is currently connected to the LAD daemon, the refcount for
the NameServer daemon will never reach zero unless all connected
applications call Ipc_stop. This will prevent the NameServer
daemon from reconnecting to the recovered remote core until all
applications call Ipc_stop. This is not desireable behavior because
this prevents an application opening a MessageQ on the recovered
core until all applications call Ipc_stop.

Instead, the patch makes changes to internally re-connect with the
recovered core within NameServer daemon itself in the case of
remote core error recovery. The NameServer daemon will continue
trying to reconnect to the recovered core until successful. In
this way, the other applications are not required to exit for a new
MessageQ_open to be successful with the recovered core.

Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
6 years agoLinux: Fix Error Handling in TransportRpmsg_delete
Angela Stegmaier [Thu, 14 Apr 2016 21:01:48 +0000 (16:01 -0500)]
Linux: Fix Error Handling in TransportRpmsg_delete

TransportRpmsg_delete was not checking for a NULL handle
before de-referencing it, resulting in an application crash
if it was called with a NULL handle. A NULL handle was
being passed to TransportRpmsg_delete in the case where
TransportRpmsg_create socket connect call failed. In this
case, TransportRpmsg_create called TransportRpmsg_delete
with a NULL handle.

This patch adds a check for a NULL handle before de-referencing
the pointer in TransportRpmsg_delete, and also takes care
to cleanup the socket in TransportRpmsg_create in the failure
case where it cannot be cleaned by TransportRpmsg_delete.

Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
6 years agoGateMP: Fix for hostSupport with GateMPSupportNull 3.42 ipc-3.42-next
Angela Stegmaier [Tue, 8 Mar 2016 22:45:32 +0000 (16:45 -0600)]
GateMP: Fix for hostSupport with GateMPSupportNull

The default configuration for GateMP remoteCustom2 is to use
GateMPSupportNull. In this case, the remoteCustom2InUse array
will be NULL. Due to this, the virtToPhys translation will
fail. If Asserts are enabled for the GateMP module, this
will result in a failure.

This patch fixes the issue by first checking if the pointer
is NULL before attempting the translation, since it is a valid
case for the pointer to be NULL.

Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
6 years agoLinux: GateMP: Baseaddr not Correctly Set when UIO is not Present
Angela Stegmaier [Wed, 24 Feb 2016 21:59:29 +0000 (15:59 -0600)]
Linux: GateMP: Baseaddr not Correctly Set when UIO is not Present

In the case where UIO is not present, the GateMP_get_sr0() function
should set the baseaddr to 0. However, the code was not correctly
de-referencing the baseaddr parameter when attempting to set it to
zero, resulting in an un-initialized value for baseaddr when the UIO
driver is not present. This can result in an incorrect address for
the inUse arrays with consequences such as failure to map or other
unexpected behavior.

This patch fixes it to properly set the baseaddr to 0 for the case
where UIO is not present.

Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
6 years agodeh: Watchdog: Timer structures declared as volatile
Stephen Molfetta [Tue, 16 Feb 2016 16:31:46 +0000 (10:31 -0600)]
deh: Watchdog: Timer structures declared as volatile

Watchdog implementation configures timers to operate in posted-write
mode, requiring SW to poll on TWPS register prior to subsequent write

Therefore, references to the Watchdog timer instance must be declared
as volatile.  Otherwise, the initial value read of the TWPS will be
used as the polling value indefinitely, causing a potential lockup
if the application is completely idle.

Signed-off-by: Stephen Molfetta <sjmolfetta@ti.com>
6 years agoipc: Remove warnings found with MISRA checkers
Sam Nelson [Wed, 17 Feb 2016 19:04:48 +0000 (14:04 -0500)]
ipc: Remove warnings found with MISRA checkers

- Removed following warning "In the definition of a function-like
macro each instance of a parameter shall be enclosed in parentheses
unless it is used as the operand of # or ##

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
6 years agoipc: Fix to handle remote GateMP not available
Sam Nelson [Mon, 15 Feb 2016 21:04:51 +0000 (16:04 -0500)]
ipc: Fix to handle remote GateMP not available

There is an issue when GateMP in the remote processor is not available,
resulting in error. This fix handles the case gracefully by
ignoring remote gateMP availability.

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
6 years agotests: gatempapp: update cmem and sr0 addresses to align with kernel
Angela Stegmaier [Thu, 11 Feb 2016 21:50:09 +0000 (15:50 -0600)]
tests: gatempapp: update cmem and sr0 addresses to align with kernel

Update the cmem and sr0 addresses to align with default values for
linux kernel.

Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
6 years agoipc-bios.bld: Update default platform for C6678
Sam Nelson [Thu, 11 Feb 2016 19:27:25 +0000 (14:27 -0500)]
ipc-bios.bld: Update default platform for C6678

- Also update print string for unknown platform

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
6 years agoGateMP: Correct exception string
Sam Nelson [Thu, 11 Feb 2016 19:19:59 +0000 (14:19 -0500)]
GateMP: Correct exception string

- Correct typo in Exception string for RemoteCustom2

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
6 years agoGateMP: Add check for zero resources case
Sam Nelson [Thu, 11 Feb 2016 19:19:58 +0000 (14:19 -0500)]
GateMP: Add check for zero resources case

When reserving SR0 regions for GateMp instances, in some cases,
(for example the NULL gate) has zero resources. This was
not handled properly and resulted in failure. Fix is to avoid doing
unnecessary operations in case of zero resources.

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
7 years agotests: Update messageq_multicore to use ti.ipc.remoteproc.Resource
Sam Nelson [Mon, 25 Jan 2016 21:35:28 +0000 (16:35 -0500)]
tests: Update messageq_multicore to use ti.ipc.remoteproc.Resource

Before this fix, the rsc table header file was included directly in C
code. And the table was getting optimized away due to no direct
reference to the resource table. This resulted in failure of test
downloaded through user space loader.

Instead added the configuration to include the resource table (without
vdev and vring) through configuration file, which is more cleaner.

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
7 years agolad: Allow only one instance of the daemon
Misael Lopez Cruz [Thu, 3 Dec 2015 00:29:11 +0000 (18:29 -0600)]
lad: Allow only one instance of the daemon

Make sure only one instance of the LAD daemon is running
at a time.  This implementation is based on syslink's

Signed-off-by: Misael Lopez Cruz <misael.lopez@ti.com>
7 years agolad: Clean-up old response FIFOs
Misael Lopez Cruz [Mon, 21 Dec 2015 17:39:30 +0000 (11:39 -0600)]
lad: Clean-up old response FIFOs

The LAD daemon was only deleting specific FIFOs for new clients
whose PIDs had a corresponding old FIFO left over.  This was not
effective as the client side checks if the FIFO doesn't exist
before sending the LAD_CONNECT command, so the old FIFO was
not deleted.

The cleanup is changed to delete any old FIFO left over from
previous LAD sessions.  The cleanup implementation is based on

Signed-off-by: Vishal Mahaveer <vishalm@ti.com>
Signed-off-by: Misael Lopez Cruz <misael.lopez@ti.com>
7 years agoMmRpc: MmServiceMgr: Use Any Address for Port
Angela Stegmaier [Fri, 18 Dec 2015 17:05:30 +0000 (11:05 -0600)]
MmRpc: MmServiceMgr: Use Any Address for Port

It is not required that the local endpoint be a certain value
when creating an OmapRpc instance. Since we are performing a
NameMap of the created endpoint to the host, the endpoint can
be any value. In fact, hard-coding the value prevents multiple
MmServiceMgr instances from being created on a processor.

This patch changes the port value from the hard-coded value
of 59 to be a value that is assigned by the RPMessage_create
call. In this way, multiple MmServiceMgr instances can
be created.

Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
7 years agoLinux: Add support for the hwspinlock_user driver
Misael Lopez Cruz [Fri, 18 Dec 2015 21:50:52 +0000 (15:50 -0600)]
Linux: Add support for the hwspinlock_user driver

The hwspinlock_user is a character driver that exposes ioctls to
lock and unlock a given hwspinlock instance.  The hwspinlock_user
creates the /dev/hwspinlock device file.

The hwspinlock_user driver is used as the first option when available,
otherwise the previous /dev/mem approach is used.

The hwspinlock_user.h uapi header file is kept locally as it may not
be present in all supported kernels.

Signed-off-by: Misael Lopez Cruz <misael.lopez@ti.com>
7 years agoLinux: Close spinlock device after gate is stopped
Misael Lopez Cruz [Fri, 18 Dec 2015 21:50:51 +0000 (15:50 -0600)]
Linux: Close spinlock device after gate is stopped

The spinlock device is opened in the GateHWSpinlock_start()
function, but it's never closed.  The device is now being
closed in GateHWSpinlock_stop().

Signed-off-by: Misael Lopez Cruz <misael.lopez@ti.com>
7 years agodaemon: Add support for UIO-based SR0
Misael Lopez Cruz [Fri, 18 Dec 2015 21:50:50 +0000 (15:50 -0600)]
daemon: Add support for UIO-based SR0

The GateMP daemon uses /dev/mem to access SR0, where the gate
usage arrays are kept.  /dev/mem may not be present in all
production systems due to the security risk that it implies.

A userspace I/O driver approach can be used as an alternative.
The Linux kernel needs to expose a UIO named 'sr0' in order
to access the shared region from userspace.  The daemon is now
capable of finding such UIO entry if exists, and otherwise
fall back to the previous /dev/mem based approach.

Signed-off-by: Misael Lopez Cruz <misael.lopez@ti.com>
7 years agoMerge remote-tracking branch 'origin/3.40' into ipc-next
Angela Stegmaier [Tue, 15 Dec 2015 20:02:04 +0000 (14:02 -0600)]
Merge remote-tracking branch 'origin/3.40' into ipc-next

7 years agoStd.h: Remove unused types in Std.h files 3.41 ipc-3.41-next
Sam Nelson [Wed, 9 Dec 2015 12:49:06 +0000 (07:49 -0500)]
Std.h: Remove unused types in Std.h files

- These types are no longer used in IPC
- Moving forward the idea is to move to using standard C99 types
  instead of defining types here in this local file.
- This also fixes issues with Int8, where other components defining
  the same changed it to use int8_t which is defined a signed char

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
7 years agotci663x: Correct error in Interrupt configuration
Sam Nelson [Thu, 3 Dec 2015 18:43:08 +0000 (13:43 -0500)]
tci663x: Correct error in Interrupt configuration

- Update to previous patch
- Interrupt configuration for only K2G is changed

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
7 years agobios: Update to remove reference to old ti.bios
Sam Nelson [Wed, 2 Dec 2015 04:02:02 +0000 (23:02 -0500)]
bios: Update to remove reference to old ti.bios

- old references to ti.bios is getting deprecated in BIOS 6.45 and later
  releases.  Removing here to avoid build issues with new bios releases.

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
7 years agoAdded K2E and K2L ARM Alias to Settings.xs
John Godbey [Mon, 30 Nov 2015 17:10:25 +0000 (12:10 -0500)]
Added K2E and K2L ARM Alias to Settings.xs

The device name under the BIOS target configuration
is different for DSP and ARM.  Settings needs an alias
for the ARM core to build ARM-RTOS even on existing platforms

Signed-off-by: John Godbey <j-godbey@ti.com>
7 years agoInterrupt: tci663x: Update Interrupt numbers for 66AK2G
Sam Nelson [Tue, 24 Nov 2015 21:19:51 +0000 (16:19 -0500)]
Interrupt: tci663x: Update Interrupt numbers for 66AK2G

- The DSP interrupt number and host interrupt numbers are different for
K2G compared to other Keystone devices.
- Seperate entry need created to capture the K2G settings.

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
7 years agoStandardize #ifdef usage in the Interrupt Module
John Godbey [Mon, 23 Nov 2015 21:48:07 +0000 (16:48 -0500)]
Standardize #ifdef usage in the Interrupt Module

Changed the formatting of the #ifdef definitions to
#if defined(xdc_target__isaCompatible_xxxx)
to better follow the existing code.

Signed-off-by: John Godbey <j-godbey@ti.com>
7 years agoK2E and K2L RTOS support in IPC Settings
John Godbey [Fri, 20 Nov 2015 18:44:53 +0000 (13:44 -0500)]
K2E and K2L RTOS support in IPC Settings

Added the hooks for ARM_RTOS support on the K2E and K2L platforms in Settings.xs.

Signed-off-by: John Godbey <j-godbey@ti.com>
7 years agoAndroid: fix build issues with Android Marshmallow 3.40 ipc-3.40-next
Vishal Mahaveer [Fri, 20 Nov 2015 19:43:09 +0000 (13:43 -0600)]
Android: fix build issues with Android Marshmallow

pthread definitions are updated in Android M, update definitions
accordingly. Using PLATFORM_SDK_VERSION to determine versions < Android M

Android version numbers can be found here:

Signed-off-by: Vishal Mahaveer <vishalm@ti.com>
7 years agoMultiprocSetup ARM-RTOS check
John Godbey [Mon, 16 Nov 2015 18:01:01 +0000 (13:01 -0500)]
MultiprocSetup ARM-RTOS check

Added an ifdef to the file to let ARM-RTOS build cleanly without modifying
other files.

Signed-off-by: John Godbey <j-godbey@ti.com>
7 years agoSupport for Interrupts on ARM-RTOS in the K2 family.
John Godbey [Mon, 16 Nov 2015 18:30:57 +0000 (13:30 -0500)]
Support for Interrupts on ARM-RTOS in the K2 family.

- Added support for the Interrupt module running on ARM-RTOS.
- Updated Interrupt.c to handle the ARM side.
- Added an entry for hardware semaphore support in Settings.xs.

Signed-off-by:John Godbey <j-godbey@ti.com>

7 years agotests: Remove reference to tci6638.Interrupt module
Sam Nelson [Fri, 13 Nov 2015 23:33:22 +0000 (18:33 -0500)]
tests: Remove reference to tci6638.Interrupt module

-ti.ipc.family.tci6638.Interrupt is deprecated and any reference to
 this module need to removed from test/example code

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
7 years agoMultiproc: Remove internal API MultiProc_rprocSetId
Sam Nelson [Fri, 13 Nov 2015 23:32:44 +0000 (18:32 -0500)]
Multiproc: Remove internal API MultiProc_rprocSetId

- MultiProc_rprocSetId and LAD_RPROC_SETID are no longer needed
  as the out of order download issue is taken care in the
  Remoteproc/RPMSG kernel driver

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
7 years agoLinux: Update autotools generated files
Sam Nelson [Fri, 13 Nov 2015 00:01:35 +0000 (19:01 -0500)]
Linux: Update autotools generated files

- Check in autoreconf-generated files for 66AK2G support.

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
7 years ago66AK2G: Linux: Add support for K2G
Sam Nelson [Fri, 13 Nov 2015 20:36:55 +0000 (15:36 -0500)]
66AK2G: Linux: Add support for K2G

    The C66AK2G device is an A15 + C66 DSP, similar in hardware
    to the TCI663X family of devices.  This commit adds Linux-side

    Note that this commit doesn't update the autotools-generated
    files.  That will be done in a separate commit.

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
7 years agoRemoteproc: TCI66xx: Fix up resource tables
Suman Anna [Fri, 30 Oct 2015 16:37:13 +0000 (11:37 -0500)]
Remoteproc: TCI66xx: Fix up resource tables

The TCI6638/TCI6614 resource table structure definitions are
incorrect - the offset variable was defined to be an array
of 13, whereas the real valid entries are either 2 or 3,
thereby mis-representing the offsets of the resources in the
actual resource table when compared to the resource structure
definition. Fix this properly by adjusting the array length.

While at this, also remove the current TYPE_CARVEOUT entry as
well, Keystone family of SoCs do not have an MMU, so can not
really support dynamically allocated addresses for text or
data sections.

Signed-off-by: Suman Anna <s-anna@ti.com>
7 years agoQNX: GateMP: Check Number of Resources for Gates Before Mapping
Angela Stegmaier [Thu, 22 Oct 2015 22:00:05 +0000 (17:00 -0500)]
QNX: GateMP: Check Number of Resources for Gates Before Mapping

A recent change to the BIOS-side GateMPSupportNull exposed an issue in
the GateMP module in which it may attempt to map an address of 0x0.
Previously, when GateMPSupportNull was used, the number of resources
was set as 1 and a valid address was obtained. With the update,
the number of resources for GateMPSupportNull is now 0. In this case,
the GateMP code will attempt to map an address of 0x0, of size 0,
which will fail.

This patch fixes the code to first check that the number of resources
is not 0, and only then proceed with the mapping. If the number of
resources is 0, then we skip the mapping for that remote gate.

This patch also makes a minor update to the LOGs for the failure
cases for mapping remoteCustom1InUse and remoteCustom2InUse to
print the proper remote InUse array.

Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
7 years agoipc: transport: Add TCI6638 to use _rpmsg2 library
Sam Nelson [Wed, 16 Sep 2015 17:29:03 +0000 (13:29 -0400)]
ipc: transport: Add TCI6638 to use _rpmsg2 library

- RPMSG2 supports RPMSG_NS_2_0 which is default for
  remoteproc driver in kernel version 4.1

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
7 years agotci6638: rpmsg: Add define RPMSG_NS_2_0 for Keystone2 RPMSG
Sam Nelson [Sat, 1 Aug 2015 15:15:54 +0000 (11:15 -0400)]
tci6638: rpmsg: Add define RPMSG_NS_2_0 for Keystone2 RPMSG

- Note this will break backward compatiblity with keystone2 remoteproc driver
  based on kernel version 3.10.x
- RPMSG_NS_2_0 is default for keystone2 remoteproc driver
  based on kernel version 4.1

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
7 years agotci6638: VirtQueue: Remove per core patch of the vring address
Sam Nelson [Sat, 1 Aug 2015 15:14:58 +0000 (11:14 -0400)]
tci6638: VirtQueue: Remove per core patch of the vring address

- Update VirtQueue driver to remove the per core patching of Vring address
- This patch was required with the keystone 2 remoteproc driver
  based on kernel version 3.10.x
- No longer needed for kernel drivers added on the 4.1 2015 LTS kernel
  for keystone2
- Currently putting under #ifdef in case customer wants use it to use
  with older kernel

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
7 years agoEnable Examples Compilation with C++ Compiler
Angela Stegmaier [Wed, 23 Sep 2015 20:56:31 +0000 (15:56 -0500)]
Enable Examples Compilation with C++ Compiler

Attempting to compile the examples and tests in Linux with
the c++ compiler resulted in the following errors:

In file included from MessageQApp.c:46:0:
../../../packages/ti/ipc/Ipc.h:148:22: error: ‘<anonymous>’ has incomplete type
../../../packages/ti/ipc/Ipc.h:148:26: error: invalid use of ‘Void {aka void}’

In file included from ../../../linux/include/_lad.h:50:0,
                 from ../../../linux/include/ladclient.h:58,
                 from LAD_client.c:48:
../../../linux/include/_GateMP.h:78:3: error: conflicting declaration 'typedef struct GateMP_Object GateMP_Object'
In file included from ../../../linux/include/_lad.h:49:0,
                 from ../../../linux/include/ladclient.h:58,
                 from LAD_client.c:48:
../../../packages/ti/ipc/GateMP.h:222:16: error: 'struct GateMP_Object' has a previous declaration as 'struct GateMP_Object

This patch fixes these compilation issues so that the Linux examples can
be compiled with c++. Note that this patch does not have complete
changes to allow IPC to be compiled using the c++ compiler, but only
the examples.

Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
7 years agoDisable entry/exit trace in some List_* functions in QNX
vwan@ti.com [Mon, 24 Aug 2015 17:07:46 +0000 (10:07 -0700)]
Disable entry/exit trace in some List_* functions in QNX

Some functions in the List module are called with interrupts disabled. When
these functions write to the slog (IPC_DEBUG_SLOG_LEVEL=7), a hard hang
is occasionally observed. This patch disables the entry/exit trace in these
functions to prevent the system from entering the deadlock state.

Signed-off-by: VW <vwan@ti.com>
7 years agoImprove MessageQ recovery on DRA7xx QNX
vwan@ti.com [Mon, 24 Aug 2015 16:59:45 +0000 (09:59 -0700)]
Improve MessageQ recovery on DRA7xx QNX

Previously, after recovery, an application using MessageQ is expected to
terminate. We are now improving this by having MessageQ_get/put return
MessageQ_E_SHUTDOWN after recovery is performed, upon which the application
can cleanup, and call Ipc_stop and Ipc_start to "restart" IPC. After that the
application can use IPC again.

This commit also adds a Fault test to validate this behavior.

This is to address CQ SDOCM00116175.

Signed-off-by: VW <vwan@ti.com>
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
7 years agoMerge remote-tracking branch 'origin/ipc-3.40-next' into ipc-next
Angela Stegmaier [Mon, 5 Oct 2015 18:07:14 +0000 (13:07 -0500)]
Merge remote-tracking branch 'origin/ipc-3.40-next' into ipc-next

7 years agoTests: ping_rpmsg: Update Test with Proper Socket Usage
Angela Stegmaier [Fri, 4 Sep 2015 15:58:40 +0000 (10:58 -0500)]
Tests: ping_rpmsg: Update Test with Proper Socket Usage

This test was incorrectly using a socket that was connected
to a remote endpoint to receive messages on the HOST. The
remote core was using the source address to send the response
when communicating with an rpmsg-proto channel, which is not
a valid use of the rpmsg-proto channel. Only sockets which
have been bound to a local endpoint by the application should
be used to receive messages.

When the remote core sends a message to an endpoint that
is associated with a channel, there is a kernel crash because
the private data for that endpoint is not as expected.

Update the test case to properly use rpmsg-proto. With these
updates, the test case now passes and there is no kernel

Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
7 years agoQNX: Fix Trace Dump Core ID Bug
Angela Stegmaier [Tue, 29 Sep 2015 21:24:27 +0000 (16:24 -0500)]
QNX: Fix Trace Dump Core ID Bug

During error recovery, the IPC resource manager will dump
the current traces for each remote core to a log file, if
a log file was specified when launching the IPC. At the
beginning of each core's trace dump, a header is printed
to identify which core's traces were being printed. This
trace was incorrectly using "i" instead of "id" to index
the firmware array, resulting in an incorrect remote core
id being printed in the header. This could even index the
array beyond the valid range and cause a crash in IPC.

This patch fixes the index so that it uses the proper
variable ("id"), and also modifies the header to print
the more user-friendly remote proc name instead of the
remote proc ID.

Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
7 years agoMove Interrupt and NotifyCircSetup modules into tci663x
Ramsey Harris [Fri, 25 Sep 2015 23:19:51 +0000 (16:19 -0700)]
Move Interrupt and NotifyCircSetup modules into tci663x

Consolidate Interrupt and NotifyCircSetup modules from package
ti.ipc.family.tci6638 into package ti.sdo.ipc.family.tci663x.
This package is now able to support both Linux and non-Linux
configurations. Replace Interrupt binding in VirtQueue with a
proxy. Existing configurations will receive a warning when using
the deprecated modules. The Interrupt module snoops for VirtQueue
and NotifyCircSetup to avoid host conflict. Remove deprecated
modules from custom build flow.

7 years agoFix test dual_transports to comply with MessageQApp
Ramsey Harris [Fri, 25 Sep 2015 22:55:58 +0000 (15:55 -0700)]
Fix test dual_transports to comply with MessageQApp

The host program MessageQApp was modified to pass the message Id
in the payload instead of the message header. Update DSP program
with SyncMsg data type to access message Id in payload.

7 years agoSDOCM00115347 Keystone 2 Interrupt module doesn't validate HOST
Ramsey Harris [Tue, 15 Sep 2015 17:51:11 +0000 (10:51 -0700)]
SDOCM00115347 Keystone 2 Interrupt module doesn't validate HOST

Add config validate function to ensure host processor is first
in the MultiProc name list array. The Interrupt module makes
this assumption; it will fail otherwise.

7 years agoQNX: Fix in trace buffer dump during recovery
Buddy Liong [Tue, 19 May 2015 14:11:23 +0000 (09:11 -0500)]
QNX: Fix in trace buffer dump during recovery

During the recovery, in deinit_ipc(), the IPC resource manager will
try to dump the remote core trace information to a file. There is a
possibility that the trace buffer may have become corrupted as a result
of the crash on the remote core and that the write index, which resides
in the trace buffer, has become corrupted as well. In this situation,
there is a potential that the trace dump code will read beyond the mapped
buffer for the TRACE BUF memory, causing the system to crash and be
unable to recover. At this point a system restart is required to
recover the system.

There should be a check to make sure that the trace dump code is not
indexing beyond the end of the trace buffer.

Signed-off-by: Buddy Liong <buddy.budiono@ti.com>
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
7 years agoInitial Keystone 2 Galileo build support on DSP
Ramsey Harris [Mon, 14 Sep 2015 23:30:54 +0000 (16:30 -0700)]
Initial Keystone 2 Galileo build support on DSP

Add new device name 66AK2G to top-level products.mak file. Add
device TCI66AK2G02 alias to ti.sdo.ipc.family.Settings.

7 years agoSDOCM00115293 Linux transport interfaces need documentation
Ramsey Harris [Mon, 14 Sep 2015 17:34:22 +0000 (10:34 -0700)]
SDOCM00115293 Linux transport interfaces need documentation

Add documentation to Linux transport interface header files.

7 years agoRemove transport network interface hack
Ramsey Harris [Fri, 11 Sep 2015 22:45:41 +0000 (15:45 -0700)]
Remove transport network interface hack

Delete the INetworkTransportDummy interface. This file was
overlooked when removing the transport network hack.

7 years agoEliminate config warning raised by ti.sdo.ipcmgr
Ramsey Harris [Fri, 11 Sep 2015 21:14:04 +0000 (14:14 -0700)]
Eliminate config warning raised by ti.sdo.ipcmgr

Replace xdc.loadPackage of ti.sdo.ipcmgr with xdc.useModule
of ti.sdo.ipcmgr.IpcMgr.

7 years agoRemove references to package ti.sdo.ipc.family.f28m35x
Ramsey Harris [Fri, 11 Sep 2015 17:20:36 +0000 (10:20 -0700)]
Remove references to package ti.sdo.ipc.family.f28m35x

Support has been removed for the f28 device. Remove old references.

7 years agoSDOCM00077054 NameServer UG needs to document calling contexts
Ramsey Harris [Wed, 9 Sep 2015 22:47:09 +0000 (15:47 -0700)]
SDOCM00077054 NameServer UG needs to document calling contexts

Document the fact that NameServer_get cannot be called from Hwi
or Swi context. This was the main point of the bug report.

7 years agoFor custom builds, add missing package dependencies
Ramsey Harris [Tue, 8 Sep 2015 22:13:48 +0000 (15:13 -0700)]
For custom builds, add missing package dependencies

When using the custom IPC build option, the link order of
some packages is pseudo-random. This results in linker errors.
In ti.sdo.ipc.close(), add a package dependency to modules
participating in the custom build flow.

7 years agoc28: remove c28 support
Chris Ring [Wed, 9 Sep 2015 18:25:49 +0000 (11:25 -0700)]
c28: remove c28 support

Delete C28-related packages, and remove build-related support.

Signed-off-by: Chris Ring <cring@ti.com>
7 years agoQNX: Modification for QNX 6.5 compilation
Buddy Liong [Fri, 7 Aug 2015 21:16:01 +0000 (16:16 -0500)]
QNX: Modification for QNX 6.5 compilation

This patch introduces the changes needed so that
the QNX IPC can be compiled against QNX SDP 6.5.0.

Where needed, a check is made to make one call
when compiling against QNX SDP 6.6 and another
call when compiling against QNX SDP 6.5 in order
to take advantage of the newer functionality of
QNX SDP 6.6.

Signed-off-by: Buddy Liong <a0270631@ti.com>
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
7 years agoSDOCM00118895 Missing access qualifier FAR in RPMessage module
Ramsey Harris [Fri, 4 Sep 2015 20:37:55 +0000 (13:37 -0700)]
SDOCM00118895 Missing access qualifier FAR in RPMessage module

Add missing __FAR__ access qualifier to extern symbol declarations.

7 years agoSDOCM00118574 Remove interface hack from transport package
Ramsey Harris [Fri, 4 Sep 2015 20:56:48 +0000 (13:56 -0700)]
SDOCM00118574 Remove interface hack from transport package

Remove the module TransportNetworkDummy from the transports package
and remove reference to the module in MessageQ.

7 years agoSDOCM00118895 Missing access qualifier FAR in RPMessage module
Ramsey Harris [Fri, 4 Sep 2015 20:37:55 +0000 (13:37 -0700)]
SDOCM00118895 Missing access qualifier FAR in RPMessage module

Add missing __FAR__ access qualifier to extern symbol declarations.

7 years agoSDOCM00069628 GateMPSupportNull.getNumResources should return '0'
Ramsey Harris [Wed, 2 Sep 2015 17:23:53 +0000 (10:23 -0700)]
SDOCM00069628 GateMPSupportNull.getNumResources should return '0'

Fix metaonly module function to return zero instead of one.

7 years agoSDOCM00114683 Display QueueId in ROV for reserved queues
Ramsey Harris [Wed, 26 Aug 2015 21:59:52 +0000 (14:59 -0700)]
SDOCM00114683 Display QueueId in ROV for reserved queues

Add a column to the queue view to indicate reserved status. Render
name as '<null>' for anonymous queues. Remove old debug messages.

7 years agoEnable PM in test_omx test executables on DRA7xx DSPs
vwan@ti.com [Wed, 19 Aug 2015 00:52:47 +0000 (17:52 -0700)]
Enable PM in test_omx test executables on DRA7xx DSPs

This commit enables power management on DRA7xx DSPs in test_omx test
executables for the LCPD SDK.

Signed-off-by: VW <vwan@ti.com>
7 years agoExport source files of ti.pm package
vwan@ti.com [Fri, 7 Aug 2015 17:53:26 +0000 (10:53 -0700)]
Export source files of ti.pm package

Signed-off-by: VW <vwan@ti.com>
7 years agoAdd power management support to DRA7xx DSP (part 3)
vwan@ti.com [Mon, 10 Aug 2015 23:02:28 +0000 (16:02 -0700)]
Add power management support to DRA7xx DSP (part 3)

Some additional changes that were inadvertently left out of the previous PM
patch are added back here:

- Change tests to turn off PM on DSPs by default for build to proceed without
requiring the workaround
- Minor cleanup (copyright, spacing, file name changes)

This is towards addressing CQ SDOCM00117446.

Signed-off-by: VW <vwan@ti.com>
7 years agoReset heapId after reading socket in TransportRpmsg
Ramsey Harris [Fri, 7 Aug 2015 21:26:26 +0000 (14:26 -0700)]
Reset heapId after reading socket in TransportRpmsg

TransportRpmsg is a copy based transport. All inbound messages are
allocated from HeapStd. After reading message header, must reset the
heapId to match the registered heapId for HeapStd.

7 years agoFix memory allocation for L2 translation tables in QNX for DRA7xx DSP
vwan@ti.com [Fri, 7 Aug 2015 17:14:17 +0000 (10:14 -0700)]
Fix memory allocation for L2 translation tables in QNX for DRA7xx DSP

This commit fixes the memory allocation for L2 translation tables so
that no memory corruption occur when multiple L2 table entries are
required for mapping the memory specified in a custom resource table.

This addresses CQ SDOCM00117156.

Signed-off-by: VW <vwan@ti.com>
7 years agoAdd power management support to DRA7xx DSP (part 2)
vwan@ti.com [Mon, 3 Aug 2015 21:40:27 +0000 (14:40 -0700)]
Add power management support to DRA7xx DSP (part 2)

This commit ties up a few loose ends that were introduced in a previous commit
to add PM support for the DSP:

- Add a workaround for a silicon bug in which the DSP would hang when the idle
instruction is invoked while it is placed in external memory and prefetch is
- Remove unnecessary Swi thread and call IpcPower_suspend in Task context
- Add support for DSP2
- Add a null implementation for IpcPower that is compiled in when BIOS Power
module is not used. This is simply to satisfy all existing call sites that
are calling into IpcPower regardless if PM is enabled. It also prevents the
BIOS Power module from being unnecessarily linked in when it is not needed.
A possible future enhancement would be to look into compiling out these
call sites when PM is not enabled.

This is towards addressing CQ SDOCM00117446.

Signed-off-by: VW <vwan@ti.com>
7 years agoSDOCM00114069 IPC custom build does not include files from ti/ipc
Ramsey Harris [Thu, 30 Jul 2015 00:02:50 +0000 (17:02 -0700)]
SDOCM00114069 IPC custom build does not include files from ti/ipc

Update packages in ti.ipc to either contribute to IPC product libraries
or build package product libraries. Participate in custom build flow.
Make ti.sdo.ipc.Build aware of ti.ipc packages. Use full package name
for all source files.

7 years agoLinux: tests - Clear Fault Request After Processing
Angela Stegmaier [Thu, 30 Jul 2015 21:05:31 +0000 (16:05 -0500)]
Linux: tests - Clear Fault Request After Processing

Once the requested fault has been processed, the fault
id should be cleared so that the next time the loop runs,
further input is not required from the user to continue
the test.

Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
7 years agoAndroid: tests - Add the Fault Test App to Android Makefile
Angela Stegmaier [Thu, 30 Jul 2015 17:53:36 +0000 (12:53 -0500)]
Android: tests - Add the Fault Test App to Android Makefile

Add the Fault test app to the Android makefile so that
it can be built for testing on Android.

Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
7 years agoAndroid: Build: Add HeapStd to Android Build
Angela Stegmaier [Thu, 30 Jul 2015 22:01:15 +0000 (17:01 -0500)]
Android: Build: Add HeapStd to Android Build

Since HeapStd is now referenced from the Ipc module,
the HeapStd source file needs to be added to the Android
build also.

Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
7 years agoAdd Linux fault test to git-ignore list
Ramsey Harris [Thu, 30 Jul 2015 16:37:55 +0000 (09:37 -0700)]
Add Linux fault test to git-ignore list

7 years agoRemove NameServer instance from module list in NameServer_delete()
Robert Tivy [Tue, 21 Jul 2015 23:56:43 +0000 (16:56 -0700)]
Remove NameServer instance from module list in NameServer_delete()

NameServer_delete() frees the memory for the NameServer instance
(NameServer_Handle), and if the instance is not removed from the
module objList then a subsequent NameServer_getHandle() call will
crash LAD due to a corrupt list (since one of the elements in the
list was free()d).

7 years agoGenerated makefiles for IHeap support
Ramsey Harris [Thu, 23 Jul 2015 21:44:37 +0000 (14:44 -0700)]
Generated makefiles for IHeap support

These generated makefiles compliment the Makefile.am changes needed
to support the IHeap interface.

7 years agoSDOCM00115093 Multiple heap support for MessageQ
Ramsey Harris [Wed, 22 Jul 2015 21:19:07 +0000 (14:19 -0700)]
SDOCM00115093 Multiple heap support for MessageQ

Add IHeap interface to support heap abstraction within IPC.
MessageQ uses interface handle to invoke heap alloc and free
methods. Add HeapStd implementation as default heap instance
on Linux. New idHeapStd config param in Ipc module to specify
heapId when registering default heap with MessageQ. Not
supported on QNX.

7 years agoMerge remote-tracking branch 'origin/3.36' into ipc-next
Robert Tivy [Fri, 24 Jul 2015 20:48:41 +0000 (13:48 -0700)]
Merge remote-tracking branch 'origin/3.36' into ipc-next

7 years agoAdd missing copyright header to file
Ramsey Harris [Wed, 22 Jul 2015 23:12:56 +0000 (16:12 -0700)]
Add missing copyright header to file

7 years agoAdd log events to NameServer and NameMap
Ramsey Harris [Mon, 20 Jul 2015 22:54:22 +0000 (15:54 -0700)]
Add log events to NameServer and NameMap

Add attach and detach log events to NameServer (look in LAD log).
NameMap runs on slave processor. Add log event for name announcement
message sent to host processor.

7 years agoInclude RPMessage in the configuration model 3.36 ipc-3.36-next
Ramsey Harris [Thu, 9 Jul 2015 17:06:55 +0000 (10:06 -0700)]
Include RPMessage in the configuration model

The real fix is to have the user config script pull in the
IpcMgr module and to set the tansportCombo config param.
Then the IpcMgr would bring in RPMessage if needed.

7 years agoAdd support for device TMS320C66AK2H12
Robert Tivy [Wed, 8 Jul 2015 22:37:43 +0000 (15:37 -0700)]
Add support for device TMS320C66AK2H12

Equate TMS320C66AK2H12 with TMS320TCI6634

Since there is no platform yet that contains this device, a top-level
tree build won't build any tests in <ipc>/packages/ti/ipc/tests when
using a custom platform that contains the TMS320C66AK2H12 device.

Addresses SDOCM00117546

7 years agoSDOCM00115097 RPMessage (Linux) has large data footprint
Ramsey Harris [Wed, 8 Jul 2015 21:40:50 +0000 (14:40 -0700)]
SDOCM00115097 RPMessage (Linux) has large data footprint

Replace dynamic creation of message pool with static creation
using config params. This allows for the configuration of the
pool size from the application config script. Make RPMessage
into a meta-only module. Add module template file to generate
a C symbol for the config param.

7 years agoPrevent %-by-0 in Assert_isTrue() expressions
Robert Tivy [Sat, 27 Jun 2015 00:29:48 +0000 (17:29 -0700)]
Prevent %-by-0 in Assert_isTrue() expressions

A few "assert" expressions were using
    <var> % SharedRegion_getCacheLineSize(obj->regionId)
which will generate a "modulo-by-0" error if
evaluates to (returns) 0.

Fix this by prefacing that expresssion with
    SharedRegion_getCacheLineSize(obj->regionId) == 0 || <expr>

Addresses SDOCM00117013

7 years agoChange error-related printf()s to fprintf(stderr)
Robert Tivy [Fri, 26 Jun 2015 22:45:51 +0000 (15:45 -0700)]
Change error-related printf()s to fprintf(stderr)

Addresses SDOCM00115404.

7 years agoAdd Power module to gatempapp.cfg
Robert Tivy [Fri, 26 Jun 2015 01:19:39 +0000 (18:19 -0700)]
Add Power module to gatempapp.cfg

7 years agoAdd power management support to DRA7xx DSP
vwan@ti.com [Thu, 25 Jun 2015 05:13:55 +0000 (22:13 -0700)]
Add power management support to DRA7xx DSP

This commit adds support for power management in IPC, by adding an IpcPower
module for the DRA7xx DSP. It also modifies the tests to build with
the BIOS Power module. However, the IpcPower_idle function is not plugged in by
default, so auto-suspend will not take place.

Currently only DSP1 is supported, with the caveat that CCS needs to be used
to first connect to the DSP and 'kick' the device out of idle before
auto-suspend would work. Also the DSP may go into a 'hung state' after
a large number of messages has been exchanged when IpcPower_idle is plugged

This is a first step towards addressing CQ SDOCM00117446.

Signed-off-by: VW <vwan@ti.com>
7 years agoAdd FD_CLOEXEC flag for sockets, /dev/mem and LAD pipes
Robert Tivy [Thu, 18 Jun 2015 22:28:56 +0000 (15:28 -0700)]
Add FD_CLOEXEC flag for sockets, /dev/mem and LAD pipes

If a user application calls system() to launch another Ipc application
then that launched application will inherit open file descriptors from
its parent application, which is not desired (except maybe for stdin/
stdout/stderr).  This happens because of the underlying fork() & exec()
calls performed by the system() API.

7 years agoMerge branch '3.36' into ipc-next
Robert Tivy [Fri, 19 Jun 2015 18:11:05 +0000 (11:11 -0700)]
Merge branch '3.36' into ipc-next

7 years agoFix Linux GateMP bug by introducing new GateMP_attach(procId) API
Robert Tivy [Wed, 20 May 2015 01:17:21 +0000 (18:17 -0700)]
Fix Linux GateMP bug by introducing new GateMP_attach(procId) API

Previous to the introduction of Linux Ipc_attach() and NameServer_attach(),
LAD would effectively "attach" to GateMP via NameServer_setup() and
GateMP_setup(), all before opening the command FIFO and accepting commands
from clients.  This worked because NameServer_setup() had internal code
that would perform the "attach" functionality, allowing GateMP_setup() to

Now that NameServer_attach() has been introduced, NameServer_setup() no
longer performs the "attach" functionality.  But Ipc_start() now needs to
call Ipc_attach() which, in turn, calls NameServer_attach(), but before
doing so Ipc_start must connect and communicate with LAD.  However, LAD
gets stuck in the pre-FIFO GateMP_setup() since NameServer has not yet
attached, which caused Ipc_start() to hang waiting to connect to LAD
(since there was no command FIFO yet).  In a nutshell, a deadlock.

This is fixed by introducing GateMP_attach(procId), which is called by
Ipc_attach().  GateMP_attach() performs the functionality that was
getting stuck in GateMP_setup() (and GateMP_setup() is pared down to not
need to "attach").

GateMP_detach(procId) is also introduced and called by Ipc_detach().
While these APIs can be called by the advanced user, they are considered
to be "internal" APIs.

7 years agoSDOCM00116544 Cache management for ARM speculative execution
Ramsey Harris [Wed, 20 May 2015 15:08:24 +0000 (08:08 -0700)]
SDOCM00116544 Cache management for ARM speculative execution

The ARM Cortex-A15 processor performs speculative execution on
the instruction stream. This might pull unwanted data into the
cache. The ListMP module expects shared data to be absent from
the cache. However, when running on ARM, we cannot count on the
data to be absent from the cache. A cache invalidate operation
is required.

7 years agoFix compiler warning when asserts are disabled
Ramsey Harris [Sat, 16 May 2015 00:28:24 +0000 (17:28 -0700)]
Fix compiler warning when asserts are disabled

Removed the use of a temporary variable which becomes set but
never used when asserts are disabled.

7 years agoSilence unused variable warning when asserts disabled
Ramsey Harris [Mon, 18 May 2015 15:29:16 +0000 (08:29 -0700)]
Silence unused variable warning when asserts disabled

7 years agoChange default polling interval for default gate in QNX to 10 ms
vwan@ti.com [Thu, 14 May 2015 18:56:13 +0000 (11:56 -0700)]
Change default polling interval for default gate in QNX to 10 ms

This commit decreases the default polling interval for the default gate during
GateMP_setup to 10 ms. This is so that slave executables that may take a bit
longer to boot up and create the default gate do not cause the IPC driver to
wait for a full second before retrying the poll, reducing the driver
startup time in such cases.

Signed-off-by: VW <vwan@ti.com>
7 years agoUpdate help text in QNX IPC driver to show support for DSP2
vwan@ti.com [Thu, 14 May 2015 17:21:29 +0000 (10:21 -0700)]
Update help text in QNX IPC driver to show support for DSP2

Signed-off-by: VW <vwan@ti.com>
7 years agoFix typo in error message
vwan@ti.com [Mon, 11 May 2015 22:13:53 +0000 (15:13 -0700)]
Fix typo in error message

Signed-off-by: VW <vwan@ti.com>
7 years agoWrap the ARM assembly statement in a check for GNU compiler and ARM architecture...
Ramsey Harris [Fri, 8 May 2015 16:16:45 +0000 (09:16 -0700)]
Wrap the ARM assembly statement in a check for GNU compiler and ARM architecture version 7.

7 years agoAdded recursive mutex initializer for Android
Robert Tivy [Fri, 8 May 2015 03:20:18 +0000 (20:20 -0700)]
Added recursive mutex initializer for Android

7 years agoDon't build test package when building only libraries
Ramsey Harris [Fri, 8 May 2015 00:30:44 +0000 (17:30 -0700)]
Don't build test package when building only libraries