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>
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>
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>
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>
Merge remote-tracking branch 'origin/3.40' into ipc-next
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>
- 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>
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>
- Update to previous patch
- Interrupt configuration for only K2G is changed
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
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>
- 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>
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>
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>
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>
- 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>
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>
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>
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>
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>
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:
https://source.android.com/source/build-numbers.html#platform-code-names-versions-api-levels-and-ndk-releases
Signed-off-by: Vishal Mahaveer <vishalm@ti.com>
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:
https://source.android.com/source/build-numbers.html#platform-code-names-versions-api-levels-and-ndk-releases
Signed-off-by: Vishal Mahaveer <vishalm@ti.com>
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>
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>
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>
- 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>
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>
-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>
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>
- 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>
Linux: Update autotools generated files
- Check in autoreconf-generated files for 66AK2G support.
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
- Check in autoreconf-generated files for 66AK2G support.
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
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
support.
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>
The C66AK2G device is an A15 + C66 DSP, similar in hardware
to the TCI663X family of devices. This commit adds Linux-side
support.
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>
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>
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>
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>
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>
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>
- 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>
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>
- 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>
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>
- 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>
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>
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>
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>
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>
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>
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>
Merge remote-tracking branch 'origin/ipc-3.40-next' into ipc-next
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
crash.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
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
crash.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
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>
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>
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.
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.
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.
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.
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.
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.
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>
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>
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.
Add new device name 66AK2G to top-level products.mak file. Add
device TCI66AK2G02 alias to ti.sdo.ipc.family.Settings.
SDOCM00115293 Linux transport interfaces need documentation
Add documentation to Linux transport interface header files.
Add documentation to Linux transport interface header files.
Remove transport network interface hack
Delete the INetworkTransportDummy interface. This file was
overlooked when removing the transport network hack.
Delete the INetworkTransportDummy interface. This file was
overlooked when removing the transport network hack.
Eliminate config warning raised by ti.sdo.ipcmgr
Replace xdc.loadPackage of ti.sdo.ipcmgr with xdc.useModule
of ti.sdo.ipcmgr.IpcMgr.
Replace xdc.loadPackage of ti.sdo.ipcmgr with xdc.useModule
of ti.sdo.ipcmgr.IpcMgr.
Remove references to package ti.sdo.ipc.family.f28m35x
Support has been removed for the f28 device. Remove old references.
Support has been removed for the f28 device. Remove old references.
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.
Document the fact that NameServer_get cannot be called from Hwi
or Swi context. This was the main point of the bug report.
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.
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.
c28: remove c28 support
Delete C28-related packages, and remove build-related support.
Signed-off-by: Chris Ring <cring@ti.com>
Delete C28-related packages, and remove build-related support.
Signed-off-by: Chris Ring <cring@ti.com>
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>
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>
SDOCM00118895 Missing access qualifier FAR in RPMessage module
Add missing __FAR__ access qualifier to extern symbol declarations.
Add missing __FAR__ access qualifier to extern symbol declarations.
SDOCM00118574 Remove interface hack from transport package
Remove the module TransportNetworkDummy from the transports package
and remove reference to the module in MessageQ.
Remove the module TransportNetworkDummy from the transports package
and remove reference to the module in MessageQ.
SDOCM00118895 Missing access qualifier FAR in RPMessage module
Add missing __FAR__ access qualifier to extern symbol declarations.
Add missing __FAR__ access qualifier to extern symbol declarations.
SDOCM00069628 GateMPSupportNull.getNumResources should return '0'
Fix metaonly module function to return zero instead of one.
Fix metaonly module function to return zero instead of one.
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.
Add a column to the queue view to indicate reserved status. Render
name as '<null>' for anonymous queues. Remove old debug messages.
8 years agoEnable PM in test_omx test executables on DRA7xx DSPs 3.40.00.05_eng 3.40.00.06 3.41.00.00_eng
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>
This commit enables power management on DRA7xx DSPs in test_omx test
executables for the LCPD SDK.
Signed-off-by: VW <vwan@ti.com>
Export source files of ti.pm package
Signed-off-by: VW <vwan@ti.com>
Signed-off-by: VW <vwan@ti.com>
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>
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>
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.
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.
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>
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>
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
enabled
- 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>
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
enabled
- 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>
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.
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.
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>
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>
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>
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>
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>
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>
Add Linux fault test to git-ignore list
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).
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).
Generated makefiles for IHeap support
These generated makefiles compliment the Makefile.am changes needed
to support the IHeap interface.
These generated makefiles compliment the Makefile.am changes needed
to support the IHeap interface.
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.
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.
Merge remote-tracking branch 'origin/3.36' into ipc-next
Add missing copyright header to file
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.
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.
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.
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.
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
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
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.
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.
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
SharedRegion_getCacheLineSize(obj->regionId)
evaluates to (returns) 0.
Fix this by prefacing that expresssion with
SharedRegion_getCacheLineSize(obj->regionId) == 0 || <expr>
Addresses SDOCM00117013
A few "assert" expressions were using
<var> % SharedRegion_getCacheLineSize(obj->regionId)
which will generate a "modulo-by-0" error if
SharedRegion_getCacheLineSize(obj->regionId)
evaluates to (returns) 0.
Fix this by prefacing that expresssion with
SharedRegion_getCacheLineSize(obj->regionId) == 0 || <expr>
Addresses SDOCM00117013
Change error-related printf()s to fprintf(stderr)
Addresses SDOCM00115404.
Addresses SDOCM00115404.
Add Power module to gatempapp.cfg
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
in.
This is a first step towards addressing CQ SDOCM00117446.
Signed-off-by: VW <vwan@ti.com>
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
in.
This is a first step towards addressing CQ SDOCM00117446.
Signed-off-by: VW <vwan@ti.com>
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.
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.
Merge branch '3.36' into ipc-next
8 years agoFix Linux GateMP bug by introducing new GateMP_attach(procId) API 3.36.01.10_eng 3.36.01.11
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
proceed.
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.
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
proceed.
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.
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.
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.
Fix compiler warning when asserts are disabled
Removed the use of a temporary variable which becomes set but
never used when asserts are disabled.
Removed the use of a temporary variable which becomes set but
never used when asserts are disabled.
Silence unused variable warning when asserts disabled
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>
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>
8 years agoUpdate help text in QNX IPC driver to show support for DSP2 3.36.01.08_eng 3.36.01.09_eng
Update help text in QNX IPC driver to show support for DSP2
Signed-off-by: VW <vwan@ti.com>
Signed-off-by: VW <vwan@ti.com>
Fix typo in error message
Signed-off-by: VW <vwan@ti.com>
Signed-off-by: VW <vwan@ti.com>
8 years agoWrap the ARM assembly statement in a check for GNU compiler and ARM architecture... 3.36.00.07
Wrap the ARM assembly statement in a check for GNU compiler and ARM architecture version 7.
Added recursive mutex initializer for Android
Don't build test package when building only libraries
Add data memory barrier to transport swi function
On ARM processor, observed stale data in cache when attempting
to deliver an inbound message. This resulted in undelivered
message. Adding the DMB instruction seems to help, but I'm
unable to explain the exact failure details.
On ARM processor, observed stale data in cache when attempting
to deliver an inbound message. This resulted in undelivered
message. Adding the DMB instruction seems to help, but I'm
unable to explain the exact failure details.
General cleanup in fault test
Add new command-line options to LAD to override static defaults
Add -n <nprocs> support for overriding the total number of processors
in the system (not to be confused with number of processors in cluster).
Add -r <nreserve> support for overriding the number of reserved
MessageQ queues.
Add -s <synctype> support for overriding the Ipc_ProcSync_* type (can
be -s ALL|PAIR|NONE).
Add -n <nprocs> support for overriding the total number of processors
in the system (not to be confused with number of processors in cluster).
Add -r <nreserve> support for overriding the number of reserved
MessageQ queues.
Add -s <synctype> support for overriding the Ipc_ProcSync_* type (can
be -s ALL|PAIR|NONE).
Throw error if configured device not found in Watchdog deviceTable
Previously Watchdog.xs would cryptically error out if an unsupported
device tried to use Deh. This change produces a clean error statement.
Previously Watchdog.xs would cryptically error out if an unsupported
device tried to use Deh. This change produces a clean error statement.
Create specialized gates to prevent deadlock on general gate
The MessageQ module was using a single gate for all critical sections.
Since MessageQ functions are called by TransportRpmsg's listener
thread while another thread is inside the general gate, it's necessary
to have finer-grained gating in MessageQ.
Create a seqNumGate to protect the module's seqNum modifications, so
that MessagQ_alloc can be called by the transport's thread.
Create a msgListGate to protect a MessageQ_Object's msgList, so that
MessageQ_put can be called by the transport's thread.
Change module's general gate to be recursive, so that _MessageQ_grow
can be called from within MessageQ_create's gated community.
The MessageQ module was using a single gate for all critical sections.
Since MessageQ functions are called by TransportRpmsg's listener
thread while another thread is inside the general gate, it's necessary
to have finer-grained gating in MessageQ.
Create a seqNumGate to protect the module's seqNum modifications, so
that MessagQ_alloc can be called by the transport's thread.
Create a msgListGate to protect a MessageQ_Object's msgList, so that
MessageQ_put can be called by the transport's thread.
Change module's general gate to be recursive, so that _MessageQ_grow
can be called from within MessageQ_create's gated community.
Export file ti_ipc.h for use with TiIpcFxns module in QNX
This commit adds ti_ipc.h to the list of files to be exported by 'make install'
in QNX.
Signed-off-by: VW <vwan@ti.com>
This commit adds ti_ipc.h to the list of files to be exported by 'make install'
in QNX.
Signed-off-by: VW <vwan@ti.com>
Linux/Tests: Fix freeing up of messages in MessageQApp
Fix the freeing up of message in MessageQApp sample when
MessageQ_get fails. This otherwise prints out a following
error trace from glibc
"*** glibc detected *** ./MessageQApp: double free or corruption"
This was found during testing of remoteproc error-recovery,
and also failed to execute the sample when launched again
as it doesn't perform a Ipc_detach.
Signed-off-by: Suman Anna <s-anna@ti.com>
Fix the freeing up of message in MessageQApp sample when
MessageQ_get fails. This otherwise prints out a following
error trace from glibc
"*** glibc detected *** ./MessageQApp: double free or corruption"
This was found during testing of remoteproc error-recovery,
and also failed to execute the sample when launched again
as it doesn't perform a Ipc_detach.
Signed-off-by: Suman Anna <s-anna@ti.com>
Linux/TransportRpmsg: Shutdown only on MessageQ_E_SHUTDOWN
The transportGet() function returns a specific error code
MessageQ_E_SHUTDOWN to denote that a remote processor has
crashed. Revise the logic in rpmsgThreadFxn to perform the
receive socket cleanup and passing on the message to MessageQ
clients _only_ on this error code. The MessageQ shutdown behavior
was introduced in commit 067ad27 ("Add fault tolerance for
TransportRpmsg socket failure"), and caused the shutdown to
be executed for all other error codes on transportGet() as
well.
Fixes: 067ad27 ("Add fault tolerance for TransportRpmsg socket failure")
Signed-off-by: Suman Anna <s-anna@ti.com>
The transportGet() function returns a specific error code
MessageQ_E_SHUTDOWN to denote that a remote processor has
crashed. Revise the logic in rpmsgThreadFxn to perform the
receive socket cleanup and passing on the message to MessageQ
clients _only_ on this error code. The MessageQ shutdown behavior
was introduced in commit 067ad27 ("Add fault tolerance for
TransportRpmsg socket failure"), and caused the shutdown to
be executed for all other error codes on transportGet() as
well.
Fixes: 067ad27 ("Add fault tolerance for TransportRpmsg socket failure")
Signed-off-by: Suman Anna <s-anna@ti.com>
Linux/TransportRpmsg: Change ESHUTDOWN to ENOLINK in transportGet
The ESHUTDOWN error code translates to the error string,
"Cannot send after transport endpoint shutdown", and this is
not really meaningful on a socket recvfrom() call. Instead,
use ENOLINK which translates as "Link has been severed". This
is to be matched with the corresponding change in the kernel
rpmsg-proto driver. This error code is specifically used to
detect a crashed remote processor, and to allow the MessageQ
transport to pass on the status to MessageQ client applications.
Signed-off-by: Suman Anna <s-anna@ti.com>
The ESHUTDOWN error code translates to the error string,
"Cannot send after transport endpoint shutdown", and this is
not really meaningful on a socket recvfrom() call. Instead,
use ENOLINK which translates as "Link has been severed". This
is to be matched with the corresponding change in the kernel
rpmsg-proto driver. This error code is specifically used to
detect a crashed remote processor, and to allow the MessageQ
transport to pass on the status to MessageQ client applications.
Signed-off-by: Suman Anna <s-anna@ti.com>
Bind message queue to new remote processor
The rpmsgproto driver requires a message queue to explicitly
bind to every remote processor. To work around this issue,
both MessageQ_create and Ipc_attach must invoke the bind method
at the appropriate time. This hack should be removed when the
rpmsgproto driver is fixed such that only one bind is required.
The rpmsgproto driver requires a message queue to explicitly
bind to every remote processor. To work around this issue,
both MessageQ_create and Ipc_attach must invoke the bind method
at the appropriate time. This hack should be removed when the
rpmsgproto driver is fixed such that only one bind is required.
MessageQ_put returns MessageQ_E_SHUTDOWN when transport fails
After calling the transport's "put" function, MessageQ_put() checks
errno for ESHUTDOWN, and if set MessageQ_put() returns MessageQ_E_SHUTDOWN.
After calling the transport's "put" function, MessageQ_put() checks
errno for ESHUTDOWN, and if set MessageQ_put() returns MessageQ_E_SHUTDOWN.
Incorrect reference count management in NameServer_detach
Decrement the reference count only once, it was being decremented
twice. Do this regardless of the success/failure status of the
function.
Decrement the reference count only once, it was being decremented
twice. Do this regardless of the success/failure status of the
function.
Add Deh & Watchdog config for Vayu DSP1 and IPU1 in tests config
Power: Add the suspend hooks properly for IPUs
The IpcPower logic is inherited from the sysbios-rpmsg tree, on
which the suspend/resume hooks were properly plugged in as the
only supported platforms were OMAP4 and OMAP5 (built in M3
compatible mode). The IpcPower suspend/resume callback functions
were not hooked into the SYS/BIOS Power module for IPUs on current
platforms, as the IPUs are built for v7M4 ISA, so fix the same
by properly checking for the ISA and the BIOS SMP-enabled mode,
while also retaining the check for the Platform name.
Signed-off-by: Suman Anna <s-anna@ti.com>
The IpcPower logic is inherited from the sysbios-rpmsg tree, on
which the suspend/resume hooks were properly plugged in as the
only supported platforms were OMAP4 and OMAP5 (built in M3
compatible mode). The IpcPower suspend/resume callback functions
were not hooked into the SYS/BIOS Power module for IPUs on current
platforms, as the IPUs are built for v7M4 ISA, so fix the same
by properly checking for the ISA and the BIOS SMP-enabled mode,
while also retaining the check for the Platform name.
Signed-off-by: Suman Anna <s-anna@ti.com>
Power: Fixup idleCount for IPU running SMP
The SMP-mode IPUs will have the PM Idle function running on each
core, with the Core1 in idle mode more often than not when there
is only one task running. A single debug counter is used at present
to track PM idle function executions on both cores, but this doesn't
track the counters per core. Make the IpcPower_idleCount an array,
and use different index elements for each core.
Signed-off-by: Suman Anna <s-anna@ti.com>
The SMP-mode IPUs will have the PM Idle function running on each
core, with the Core1 in idle mode more often than not when there
is only one task running. A single debug counter is used at present
to track PM idle function executions on both cores, but this doesn't
track the counters per core. Make the IpcPower_idleCount an array,
and use different index elements for each core.
Signed-off-by: Suman Anna <s-anna@ti.com>
Generated Makefile.in for previous commit
Add fault tolerance for TransportRpmsg socket failure
Modify TransportRpmsg to detect and handle underlying socket failures.
A socket failure will typically be caused by a crashed/reloaded remote
core executable. TransportRpmsg will now alert the MessageQ layer of
its failure, allowing MessageQ to return back to the user application
with a specific error code, allowing the user application to clean up
and re-establish IPC with the newly loaded remote core (without having
to exit the app and/or restart LAD).
Add a fault generation test based on MessageQApp.
Modify TransportRpmsg to detect and handle underlying socket failures.
A socket failure will typically be caused by a crashed/reloaded remote
core executable. TransportRpmsg will now alert the MessageQ layer of
its failure, allowing MessageQ to return back to the user application
with a specific error code, allowing the user application to clean up
and re-establish IPC with the newly loaded remote core (without having
to exit the app and/or restart LAD).
Add a fault generation test based on MessageQApp.
Add missing pthread_mutex_destroy() calls
pthread_mutex_destroy() is not called at various places in the code base where
pthread_mutex_init() is used to initialize a mutex. We are now adding the
necessary calls to pthread_mutex_destroy().
This addresses SDOCM00114783.
Signed-off-by: VW <vwan@ti.com>
pthread_mutex_destroy() is not called at various places in the code base where
pthread_mutex_init() is used to initialize a mutex. We are now adding the
necessary calls to pthread_mutex_destroy().
This addresses SDOCM00114783.
Signed-off-by: VW <vwan@ti.com>