make: Update to build interfaces first
This change is aimed to avoid parallel build issues, due to interfaces
not built.
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
This change is aimed to avoid parallel build issues, due to interfaces
not built.
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
autotools: Update of autogenerated files
Captures change with subdir-objects removed
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
Captures change with subdir-objects removed
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
autotools: Update to remove subdir-objects
automake has a bug handling subdir-objects.
Removing subdir-objects for now and live with warning to avoid build
issue.
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
automake has a bug handling subdir-objects.
Removing subdir-objects for now and live with warning to avoid build
issue.
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
autoreconf: Linux: Update autotools generated files
Check in autoreconf generated files after update to Makefile.am files
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
Check in autoreconf generated files after update to Makefile.am files
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
configure.ac: Update to avoid warnings with auroreconf
Without these fixes, the following warnings were seen and now fixed
configure.ac:54: warning: Unknown LT_INIT option `gcc'
linux/src/api/Makefile.am:61: warning: source file
'$(top_srcdir)/linux/src/heaps/HeapStd.c' is in a subdirectory,
linux/src/api/Makefile.am:61: but option 'subdir-objects' is disabled
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
Without these fixes, the following warnings were seen and now fixed
configure.ac:54: warning: Unknown LT_INIT option `gcc'
linux/src/api/Makefile.am:61: warning: source file
'$(top_srcdir)/linux/src/heaps/HeapStd.c' is in a subdirectory,
linux/src/api/Makefile.am:61: but option 'subdir-objects' is disabled
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
Makefile.am: Update to use -pthread
Based on gcc documentation and other discussions online, looks like
"-pthread" is required in compile options.
Needed to add -pthread with CFLAGS
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
Based on gcc documentation and other discussions online, looks like
"-pthread" is required in compile options.
Needed to add -pthread with CFLAGS
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
Linux: Add pthread dependency for transport
On Poky based builds, the ti-ipc compilation results in the below
error:
.libs/libtitransportrpmsg.so: undefined reference to `pthread_join'
~~~~~~~~~~~~~~~~~~~
Signed-off-by: Karthik Ramanan <a0393906@ti.com>
On Poky based builds, the ti-ipc compilation results in the below
error:
.libs/libtitransportrpmsg.so: undefined reference to `pthread_join'
~~~~~~~~~~~~~~~~~~~
Signed-off-by: Karthik Ramanan <a0393906@ti.com>
Build scripts: Add far model for ipc data
This helps to relocate and place data sections without any restrictions.
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
This helps to relocate and place data sections without any restrictions.
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
Build.xs: Add missing files for building A15 libraries in release
Without this fix the NonInstrumented example builds fail for K2
platforms with IPC configured for Build.LibType_NonInstrumented
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
Without this fix the NonInstrumented example builds fail for K2
platforms with IPC configured for Build.LibType_NonInstrumented
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
Linux/Android: Refactor MessageQ_create to Register Later with NameServer
In the current MessageQ_create implementation, the NameServer
registration is done early, before local creation in the user
library is done. It is therefore possible that a remote core
could open a MessageQ that is still being created and put a
message to that MessageQ. This can result in dropped messages
or in the worst case a crash.
This patch moves the NameServer registration to the end of
the creation sequence so that the MessageQ cannot be opened
before it is fully created.
A new LAD command called MESSAGEQ_ANNOUNCE is added that is specifically
for registering a previously created MessageQ with the NameServer.
Once all creation is completed and the MessageQ is ready to
receive messages, the MessageQ_create api makes the call to LAD
MESSAGEQ_ANNOUNCE to register with the NameServer.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
In the current MessageQ_create implementation, the NameServer
registration is done early, before local creation in the user
library is done. It is therefore possible that a remote core
could open a MessageQ that is still being created and put a
message to that MessageQ. This can result in dropped messages
or in the worst case a crash.
This patch moves the NameServer registration to the end of
the creation sequence so that the MessageQ cannot be opened
before it is fully created.
A new LAD command called MESSAGEQ_ANNOUNCE is added that is specifically
for registering a previously created MessageQ with the NameServer.
Once all creation is completed and the MessageQ is ready to
receive messages, the MessageQ_create api makes the call to LAD
MESSAGEQ_ANNOUNCE to register with the NameServer.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
QNX: NameServer: Fix Debug Trace in NameServer_add
Fix a trace in NameServer_add which was assuming a 32-bit aligned
pointer, but the pointer may not be aligned. So, print only the
first byte, as the size of the entry is varaible anyway.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
Fix a trace in NameServer_add which was assuming a 32-bit aligned
pointer, but the pointer may not be aligned. So, print only the
first byte, as the size of the entry is varaible anyway.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
Tests: Enable RPMSG_NS_2_0 for all Keystone 2 platforms
The rpmsg channel publishing requires RPMSG_NS_2_0 to be defined
for all Keystone 2 platforms, otherwise the channels are not
created properly on the Linux kernel side and the ping_tasks and
ping_rpmsg base images do not work with corresponding MPU-side
samples.
Signed-off-by: Suman Anna <s-anna@ti.com>
The rpmsg channel publishing requires RPMSG_NS_2_0 to be defined
for all Keystone 2 platforms, otherwise the channels are not
created properly on the Linux kernel side and the ping_tasks and
ping_rpmsg base images do not work with corresponding MPU-side
samples.
Signed-off-by: Suman Anna <s-anna@ti.com>
Linux: remove always true check
With latest Android N compiler, we get following error. Fixing it by
removing the always true check.
linux/src/api/NameServer.c:311:17: error: comparison of array 'rsp.get.buf'
not equal to a null pointer is always true [-Werror,-Wtautological-pointer-compare]
if (rsp.get.buf != NULL) {
~~~~~~~~^~~ ~~~~
linux/src/api/NameServer.c:453:17: error: comparison of array 'rsp.get.buf'
not equal to a null pointer is always true [-Werror,-Wtautological-pointer-compare]
if (rsp.get.buf != NULL) {
~~~~~~~~^~~ ~~~~
Signed-off-by: Vishal Mahaveer <vishalm@ti.com>
With latest Android N compiler, we get following error. Fixing it by
removing the always true check.
linux/src/api/NameServer.c:311:17: error: comparison of array 'rsp.get.buf'
not equal to a null pointer is always true [-Werror,-Wtautological-pointer-compare]
if (rsp.get.buf != NULL) {
~~~~~~~~^~~ ~~~~
linux/src/api/NameServer.c:453:17: error: comparison of array 'rsp.get.buf'
not equal to a null pointer is always true [-Werror,-Wtautological-pointer-compare]
if (rsp.get.buf != NULL) {
~~~~~~~~^~~ ~~~~
Signed-off-by: Vishal Mahaveer <vishalm@ti.com>
QNX: Change LOGn to GT traces for consistency
The QNX IPC code has a mix of LOGn and GT traces. This patch
modifies all the LOGn traces to be GT traces for consistency,
and to give better control to trace enabling.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
The QNX IPC code has a mix of LOGn and GT traces. This patch
modifies all the LOGn traces to be GT traces for consistency,
and to give better control to trace enabling.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
RcmServer: Replace System_printf with Log_print
System_printf in this function floods the IPU trace buffer and drowns out other
logs because this code is executed for every MmRpc_call made from the host.
Log_print provides better control to enable or disable logs on a per module
basis.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
System_printf in this function floods the IPU trace buffer and drowns out other
logs because this code is executed for every MmRpc_call made from the host.
Log_print provides better control to enable or disable logs on a per module
basis.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Linux: NameServer_daemon: Check All Remote Cores Even if One Core is in Bad State
The current implementation will cease checking of the remaining remote cores in
the cluster if NameServer_getRemote fails for any reason other than
NameServer_E_NOTFOUND or NameServer_E_RESOURCE. If one of the remote cores in
the cluster is in an unresponsive state, then either NameServer_E_TIMEOUT or
NameServer_E_FAIL could be returned. And when that error code is returned, no
more remote cores in the cluster will be checked by NameServer_get. So if one
core goes into a bad state, then communication becomes blocked for all remaining
cores in the cluster.
To improve error handling and allow other cores to continue communication with
the HOST even if one core has crashed, the remaining cores should continue to
be checked, regardless of an error being returned from one of the cores.
This patch modifies NameServer_get so that if NameServer_getRemote fails for
a particular core, it no longer breaks, but continues to try the remaining
cores. In this way a crashed core does not block communication with the other
cores.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
The current implementation will cease checking of the remaining remote cores in
the cluster if NameServer_getRemote fails for any reason other than
NameServer_E_NOTFOUND or NameServer_E_RESOURCE. If one of the remote cores in
the cluster is in an unresponsive state, then either NameServer_E_TIMEOUT or
NameServer_E_FAIL could be returned. And when that error code is returned, no
more remote cores in the cluster will be checked by NameServer_get. So if one
core goes into a bad state, then communication becomes blocked for all remaining
cores in the cluster.
To improve error handling and allow other cores to continue communication with
the HOST even if one core has crashed, the remaining cores should continue to
be checked, regardless of an error being returned from one of the cores.
This patch modifies NameServer_get so that if NameServer_getRemote fails for
a particular core, it no longer breaks, but continues to try the remaining
cores. In this way a crashed core does not block communication with the other
cores.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
Watchdog: DRA7XX: Fix Watchdog Timer13 BaseAddr
The baseaddr for watchdog timer 13 was being incorrectly set
for DRA7XX DSP. This patch fixes the value to be the correct
address.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
The baseaddr for watchdog timer 13 was being incorrectly set
for DRA7XX DSP. This patch fixes the value to be the correct
address.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
grcm: Only Assert on Received Message Checks if Shutdown is False
If RPMessage_recv returns due to shutdown, then no valid message
is received by the call, and it should not assert if the message
is invalid.
This patch fixes the code to only do the assert checks if shutdown
is false.
Also fixes a minor issue with a trace referencing a parameter
that no longer exists.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
If RPMessage_recv returns due to shutdown, then no valid message
is received by the call, and it should not assert if the message
is invalid.
This patch fixes the code to only do the assert checks if shutdown
is false.
Also fixes a minor issue with a trace referencing a parameter
that no longer exists.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
Linux: GateMP_daemon: Fix incorrect mapping of IGateProvider_NULL
In the case that IGateProvider_NULL is used for one of the remoteCustom
gates, the code will anyway attempt to map it and throw and error trace.
The code continues as this is the last part of the attach and the error
is essentially ignored as part of the design of GateMP support in order
to allow the LAD daemon to continue even if the setup fails. So the error
trace doesn't cause any functionality failure.
Fix up the code so that mappings are only done when there is a valid
size, so that the valid case of IGateProvider_NULL is properly handled.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
In the case that IGateProvider_NULL is used for one of the remoteCustom
gates, the code will anyway attempt to map it and throw and error trace.
The code continues as this is the last part of the attach and the error
is essentially ignored as part of the design of GateMP support in order
to allow the LAD daemon to continue even if the setup fails. So the error
trace doesn't cause any functionality failure.
Fix up the code so that mappings are only done when there is a valid
size, so that the valid case of IGateProvider_NULL is properly handled.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
tests: gatempapp: update sr0 addresses to align with kernel dts
Update the sr0 addresses to align with default values for
linux kernel jamr dts file.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
Update the sr0 addresses to align with default values for
linux kernel jamr dts file.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
ipc-bios.mak: Remove use of find command under windows
Avoid use of find command in windows:
Use of find in windows results in build issues, especially with
xdctools/bin in the path.
Also there is no examples modules under packages directory ( examples
are maintained outside packages directory) and so no need to filter
them.
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
Avoid use of find command in windows:
Use of find in windows results in build issues, especially with
xdctools/bin in the path.
Also there is no examples modules under packages directory ( examples
are maintained outside packages directory) and so no need to filter
them.
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
makefile: Update makefile template to create lib directory
Without this, build will fail, when building for A15 targets alone
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
Without this, build will fail, when building for A15 targets alone
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
linux/ipc: Replace error message with debug print for GateMP Start
Error print was misleading when this is expected in case the GateMP not
supported in the system. Replaced with Verbose print
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
Error print was misleading when this is expected in case the GateMP not
supported in the system. Replaced with Verbose print
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
Remove INTMEM Type to match Linux K4.x
Starting in Linux kernel 4.1, the INTMEM type is removed
in favor of the internal memory sections needed for loading
being handled entirely in the Linux kernel. As such, the
INTMEM type no longer is defined.
This patch updated the rsc_types header file to match the
Linux defined types, which no longer defines the INTMEM
type.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
Starting in Linux kernel 4.1, the INTMEM type is removed
in favor of the internal memory sections needed for loading
being handled entirely in the Linux kernel. As such, the
INTMEM type no longer is defined.
This patch updated the rsc_types header file to match the
Linux defined types, which no longer defines the INTMEM
type.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
Tests: Update Tests to Remove INTMEM type usage
Update the tests to remove usage of the INTMEM type
which is deprecated starting in Linux kernel 4.1.
Note that this is a compatibility break with k3.14
and the tests only support k4.1 and newer kernels
now.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
Update the tests to remove usage of the INTMEM type
which is deprecated starting in Linux kernel 4.1.
Note that this is a compatibility break with k3.14
and the tests only support k4.1 and newer kernels
now.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
QNX: IPC: Handle Internal Memory Loading outside of Resource Table
This patch essentially reverts the following commits:
1. "Add fw_rsc_intmem definition to support new TYPE_INTMEM entries in QNX"
(commit 4a5f6fd0864854a99d430c6e6e7c65fb962f00e4)
2. " Add INTMEM resource type support in QNX"
(commit eb3d6bcfd35b823746c6032a9f811fc414824704)
Support for TYPE_INTMEM is being removed. Instead the internal memory
regions will be available by default from the QNX resource manager, without
the remote core image needing to speicify a special resource table
entry. The changes are being made to align with coming BIOS-side changes
to remove the TYPE_INTMEM.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
This patch essentially reverts the following commits:
1. "Add fw_rsc_intmem definition to support new TYPE_INTMEM entries in QNX"
(commit 4a5f6fd0864854a99d430c6e6e7c65fb962f00e4)
2. " Add INTMEM resource type support in QNX"
(commit eb3d6bcfd35b823746c6032a9f811fc414824704)
Support for TYPE_INTMEM is being removed. Instead the internal memory
regions will be available by default from the QNX resource manager, without
the remote core image needing to speicify a special resource table
entry. The changes are being made to align with coming BIOS-side changes
to remove the TYPE_INTMEM.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
ipc-bios.bld: Add building of smp libraries for A15
Previously smp was supported for M4 targets only.
Adding A15 support now.
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
Previously smp was supported for M4 targets only.
Adding A15 support now.
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
Linux: GateMP: Check for Proper NameServer Value Length
After getting the NameServer value for _GateMP_TI_dGate, check
to make sure that the length is equal to the expected value.
This is to prevent using some uninitialized values to configure
the GateMP. Indirectly, this can help check if hostSupport
has been enabled on the remote processor or not, because
currently, only if hostSupport has been enabled are there 4
entries. Otherwise there are only 2 entries.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
After getting the NameServer value for _GateMP_TI_dGate, check
to make sure that the length is equal to the expected value.
This is to prevent using some uninitialized values to configure
the GateMP. Indirectly, this can help check if hostSupport
has been enabled on the remote processor or not, because
currently, only if hostSupport has been enabled are there 4
entries. Otherwise there are only 2 entries.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
Shared memory cache management
Additional cache invalidates are needed to ensure all data remains fresh.
Signed-off-by: John Godbey <j-godbey@ti.com>
Additional cache invalidates are needed to ensure all data remains fresh.
Signed-off-by: John Godbey <j-godbey@ti.com>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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
access.
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>
Watchdog implementation configures timers to operate in posted-write
mode, requiring SW to poll on TWPS register prior to subsequent write
access.
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>
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>
- 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>
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>
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>
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>
Update the cmem and sr0 addresses to align with default values for
linux kernel.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
ipc-bios.bld: Update default platform for C6678
- Also update print string for unknown platform
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
- Also update print string for unknown platform
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
GateMP: Correct exception string
- Correct typo in Exception string for RemoteCustom2
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
- Correct typo in Exception string for RemoteCustom2
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
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>
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>
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>
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>
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
daemon.
Signed-off-by: Misael Lopez Cruz <misael.lopez@ti.com>
Make sure only one instance of the LAD daemon is running
at a time. This implementation is based on syslink's
daemon.
Signed-off-by: Misael Lopez Cruz <misael.lopez@ti.com>
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
wpa_supplicant's.
Signed-off-by: Vishal Mahaveer <vishalm@ti.com>
Signed-off-by: Misael Lopez Cruz <misael.lopez@ti.com>
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
wpa_supplicant's.
Signed-off-by: Vishal Mahaveer <vishalm@ti.com>
Signed-off-by: Misael Lopez Cruz <misael.lopez@ti.com>
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>
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>
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>
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>
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.
7 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>