Make MessageQCopy_send less noisy in QNX
This patch downgrades a common error message from MessageQCopy_send to an
info message of GT_2CLASS. The message was appearing even during normal
operation when a slave is not attached.
This addresses SDOCM00106179.
Signed-off-by: VW <vwan@ti.com>
This patch downgrades a common error message from MessageQCopy_send to an
info message of GT_2CLASS. The message was appearing even during normal
operation when a slave is not attached.
This addresses SDOCM00106179.
Signed-off-by: VW <vwan@ti.com>
Removed unused implementation of MessageQ_Params_init
The implementation of MessageQ_Params_init is now a static inline
in the header file. Need to remove this unused implementation in
MessageQ_daemon.c (fixed multiple definition compiler error).
The implementation of MessageQ_Params_init is now a static inline
in the header file. Need to remove this unused implementation in
MessageQ_daemon.c (fixed multiple definition compiler error).
SDOCM00113609 Add version support for MessageQ_Params structure
Added a version field to the params structure; used internally
to track the structure definition changes. MessageQ_Params_init
is now a static inline function which embeds the current version
in the call site. Added new MessageQ_Params_init__S function to
initialize the given params structure. Updated MessageQ_create
to be version aware. Fixed uninitialized params structure in
the MessageQ instance object.
Added a version field to the params structure; used internally
to track the structure definition changes. MessageQ_Params_init
is now a static inline function which embeds the current version
in the call site. Added new MessageQ_Params_init__S function to
initialize the given params structure. Updated MessageQ_create
to be version aware. Fixed uninitialized params structure in
the MessageQ instance object.
Added function hook for the MessageQ_put method
New feature where you can register a function hook to be called
near the beginning of the MessageQ_put method. New type definition
for the hook function. Runtime API to register the hook function.
Also added a configuration parameter so you can register your hook
function in the application configuration script.
New feature where you can register a function hook to be called
near the beginning of the MessageQ_put method. New type definition
for the hook function. Runtime API to register the hook function.
Also added a configuration parameter so you can register your hook
function in the application configuration script.
SDOCM00114110 IPC custom build failure, part 2
Updates from code review comments. Build include path based
on package path, not from explicit repository names. This will
ensure correct include path as new repositories are added to
the package path.
Updates from code review comments. Build include path based
on package path, not from explicit repository names. This will
ensure correct include path as new repositories are added to
the package path.
Add MessageQ interface header files to QNX include area
Even though QNX doesn't implement the new MessageQTransport interface,
it is including a common header (packages/ti/ipc/MessageQ.h) that does
reference the new interfaces.
Even though QNX doesn't implement the new MessageQTransport interface,
it is including a common header (packages/ti/ipc/MessageQ.h) that does
reference the new interfaces.
Initial MessageQ transport implementation
Multiple transport interface support for ti.sdo.ipc.MessageQ
Added new ITransport base class interface. New INetworkTransport
interface. MessageQ is now able to register multiple transport
instances. Dummy network transport to work around RTSC bug.
Added new ITransport base class interface. New INetworkTransport
interface. MessageQ is now able to register multiple transport
instances. Dummy network transport to work around RTSC bug.
SDOCM00114110 IPC custom build failure with XDCtools core product
When building with the XDCtools core product, the IPC custom build
was not finding the target header files. Fixed the makefile templates
to discover the repository for the targets and to add this to the
include path.
When building with the XDCtools core product, the IPC custom build
was not finding the target header files. Fixed the makefile templates
to discover the repository for the targets and to add this to the
include path.
Cleanup, removed unused local array: sharedCreateId
This array was allocated and initialized at config time but never
used. Furthermore, the array size was always zero.
This array was allocated and initialized at config time but never
used. Furthermore, the array size was always zero.
Move cluster processor list from config to module state
The list of processors in the cluster used to be defined at
configuration time. This prevents reusing a single executable
image on multiple processors (i.e. one image for all DSPs).
I moved this list into the MultiProc module state, so that it
could be defined in a reset hook when reusing a single image.
The list of processors in the cluster used to be defined at
configuration time. This prevents reusing a single executable
image on multiple processors (i.e. one image for all DSPs).
I moved this list into the MultiProc module state, so that it
could be defined in a reset hook when reusing a single image.
Added transportId bit-field to flags element in MessageQ header
In the MessageQ header, added a transportId field to the flags
element. This field is 3-bits wide. Added macros to MessageQ.h
to set and get the transportId. The transportId is part of a
new feature for supporting multiple transports in MessageQ.
In the MessageQ header, added a transportId field to the flags
element. This field is 3-bits wide. Added macros to MessageQ.h
to set and get the transportId. The transportId is part of a
new feature for supporting multiple transports in MessageQ.
Simplify output from GateMPApp
This commit addresses SDOCM00113915.
Signed-off-by: VW <vwan@ti.com>
This commit addresses SDOCM00113915.
Signed-off-by: VW <vwan@ti.com>
MmRpc: update rpmsg header path for Android on K3.14
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
Change TMS320F2837.* to F2837.* in family Settings.xs
SDOCM00113753 Notify mailbox driver is clearing wrong fifo
Fixed the notify mailbox driver to clear the inbound fifo, not the
outbound fifo. In addition, write the End-Of-Interrupt (EOI) register
after clearing the fifo; this was not being done. Finally, after
fetching inbound messages (in the notify ISR), the EOI register was
not written correctly; now it writes the corresponding interrupt index.
Fixed the notify mailbox driver to clear the inbound fifo, not the
outbound fifo. In addition, write the End-Of-Interrupt (EOI) register
after clearing the fifo; this was not being done. Finally, after
fetching inbound messages (in the notify ISR), the EOI register was
not written correctly; now it writes the corresponding interrupt index.
Added TDA3XX to top-level product file.
Updated the platform comment to include TDA3XX. Improved comments
for MessageQ header; fixed typo in MessageQ flags bit description.
Updated the platform comment to include TDA3XX. Improved comments
for MessageQ header; fixed typo in MessageQ flags bit description.
SDOCM00113709 NotifyDriverMbx on Vayu should not use Ipc module
Removed all references to ti.sdo.ipc.Ipc module in NotifyDriverMbx.
The Ipc and many other modules (13 in all) are no longer brought into
the executable when building an IPC Notify only system.
Removed all references to ti.sdo.ipc.Ipc module in NotifyDriverMbx.
The Ipc and many other modules (13 in all) are no longer brought into
the executable when building an IPC Notify only system.
Add fw_rsc_intmem definition to support new TYPE_INTMEM entries in QNX
Previously, TYPE_INTMEM resource entries were represented as fw_rsc_carveout
structures internally in QNX. Given the update of the fw_rsc_intmem
structure in BIOS (SDOCM00113567), we now need to match them up by creating
a new fw_rsc_intmem structure.
This addresses SDOCM00113568.
Signed-off-by: VW <vwan@ti.com>
Previously, TYPE_INTMEM resource entries were represented as fw_rsc_carveout
structures internally in QNX. Given the update of the fw_rsc_intmem
structure in BIOS (SDOCM00113567), we now need to match them up by creating
a new fw_rsc_intmem structure.
This addresses SDOCM00113568.
Signed-off-by: VW <vwan@ti.com>
Linux/MessageQ: Close the socket upon failure
The socket created in transportCreateEndpoint is not freed up
immediately if the SocketBindAddr fails, and is not freed up
by the application in the corresponding MessageQ_delete as well.
These unbound sockets only get freed up as part of the process
cleanup of any open file descriptors by the Linux kernel. Close
these sockets proactively, so that there are no stale sockets
present during the execution of a process.
Signed-off-by: Suman Anna <s-anna@ti.com>
The socket created in transportCreateEndpoint is not freed up
immediately if the SocketBindAddr fails, and is not freed up
by the application in the corresponding MessageQ_delete as well.
These unbound sockets only get freed up as part of the process
cleanup of any open file descriptors by the Linux kernel. Close
these sockets proactively, so that there are no stale sockets
present during the execution of a process.
Signed-off-by: Suman Anna <s-anna@ti.com>
8 years agoMove Hwi.excHandlerFunc assignment into ti.deh.Deh:module$use() 3.30.01.10_eng 3.30.01.11_eng
Move Hwi.excHandlerFunc assignment into ti.deh.Deh:module$use()
A previous change moved this assignment from module$static$init() to
module$meta$init(), but this no longer works since ti.ipc.ipcmgr:getLibs()
now references ti.deh.Deh:
var deh = xdc.module("ti.deh.Deh");
and if a module has not otherwise been "used" up until this point then
the xdc.module() reference will run module$meta$init(), and since this
is getLibs() you can't "useModule" at this point (which Deh's
module$meta$init() does).
Also, some other change is causing ti.deh's getLibs() to be called even
when nothing does a useModule() on any module within the ti.deh package.
For a device which ti.deh doesn't support, such as Keystone, it would
previously throw an error and fail the whole app build. Now, ti.deh's
getLibs() is changed to contribute nothing if none of its modules are
used for an unsupported device.
A previous change moved this assignment from module$static$init() to
module$meta$init(), but this no longer works since ti.ipc.ipcmgr:getLibs()
now references ti.deh.Deh:
var deh = xdc.module("ti.deh.Deh");
and if a module has not otherwise been "used" up until this point then
the xdc.module() reference will run module$meta$init(), and since this
is getLibs() you can't "useModule" at this point (which Deh's
module$meta$init() does).
Also, some other change is causing ti.deh's getLibs() to be called even
when nothing does a useModule() on any module within the ti.deh package.
For a device which ti.deh doesn't support, such as Keystone, it would
previously throw an error and fail the whole app build. Now, ti.deh's
getLibs() is changed to contribute nothing if none of its modules are
used for an unsupported device.
Change fw_rsc_intmem to match Linux 3.14
This struct was changed for Linux 3.14, so we need to match that new
one because Ipc 3.30 uses Linux 3.14.
Later we should introduce a construct that will allow the user to specify
the older struct usage.
This struct was changed for Linux 3.14, so we need to match that new
one because Ipc 3.30 uses Linux 3.14.
Later we should introduce a construct that will allow the user to specify
the older struct usage.
Merge remote-tracking branch 'origin/ipc-3.23-next' into ipc-next
Build libipc and libutils in QNX for dynamic linking
This addresses SDOCM00113498.
Signed-off-by: VW <vwan@ti.com>
This addresses SDOCM00113498.
Signed-off-by: VW <vwan@ti.com>
Properly free previously allocated file path string and other minor cleanup
Signed-off-by: VW <vwan@ti.com>
Signed-off-by: VW <vwan@ti.com>
Add carriage return to strings returned by /dev/ipc-file/* and /dev/ipc-state/*
Signed-off-by: VW <vwan@ti.com>
Signed-off-by: VW <vwan@ti.com>
Allow QNX IPC resource manager to be launched without starting any core
This commit allows the resource manager to be launched without specifying
any core in its core list. This is useful now that cores can be started
at a subsequent time.
Signed-off-by: VW <vwan@ti.com>
This commit allows the resource manager to be launched without specifying
any core in its core list. This is useful now that cores can be started
at a subsequent time.
Signed-off-by: VW <vwan@ti.com>
Reject all operations on DSP2 in QNX
Since DSP2 is not supported on QNX, we need to reject all attempts at
interacting with DSP2 using the new start/stop feature.
Signed-off-by: VW <vwan@ti.com>
Since DSP2 is not supported on QNX, we need to reject all attempts at
interacting with DSP2 using the new start/stop feature.
Signed-off-by: VW <vwan@ti.com>
Prevent SR0 owner from being stopped if host process is still using GateMP
Signed-off-by: VW <vwan@ti.com>
Signed-off-by: VW <vwan@ti.com>
Fix an issue where disabling mailbox interrupts on DSP1 disables IPU interrupts
Signed-off-by: VW <vwan@ti.com>
Signed-off-by: VW <vwan@ti.com>
Add initial support to start/stop cores after launching QNX IPC resource manager
This commit adds the ability to start and stop slave cores after the QNX
IPC resource manager has been previously launched, with at least a few known
caveats that would be fixed subsequently.
It addresses SDOCM00113295.
Signed-off-by: VW <vwan@ti.com>
This commit adds the ability to start and stop slave cores after the QNX
IPC resource manager has been previously launched, with at least a few known
caveats that would be fixed subsequently.
It addresses SDOCM00113295.
Signed-off-by: VW <vwan@ti.com>
Fix "@link @setConfig", should be "@link #setConfig"
SDOCM00113338 fix: reduce number of Tasks for messageq_multi.c
Also reduce the maximum number of threads supported in MessageQMulti.c
The need for this fix arose when the BIOS heap size was reduced in
some .cfg files in packages/ti/ipc/tests. The new, smaller heap was
not sufficient for allocating 55 Tasks (it failed at about the 30th
Task).
Also reduce the maximum number of threads supported in MessageQMulti.c
The need for this fix arose when the BIOS heap size was reduced in
some .cfg files in packages/ti/ipc/tests. The new, smaller heap was
not sufficient for allocating 55 Tasks (it failed at about the 30th
Task).
SDOCM00113339 fix: change TMS320TCI6630 to TMS320TCI6630K2L
SDOCM00113341 fix: restrict writing Ipc_Reserved struct to core's own area
In Ipc_attach(), when a 'memReq' size is 0, a core can write to another
core's Ipc_Reserved struct in SR0 when it isn't supposed to *ever* write
another core's area. The incorrect assignment needs to be done only when
MultiProc_self() < remoteProcId, similarly to how it is done in other places,
which ensures that a core is writing to only its own IpcReserved area.
In Ipc_attach(), when a 'memReq' size is 0, a core can write to another
core's Ipc_Reserved struct in SR0 when it isn't supposed to *ever* write
another core's area. The incorrect assignment needs to be done only when
MultiProc_self() < remoteProcId, similarly to how it is done in other places,
which ensures that a core is writing to only its own IpcReserved area.
SDOCM00113171 fix: release NameServerRemoteRpmsg gate on timeout
The NameServerRemoteRpmsg_get() function has a timeout-based Semaphore_pend
that can return failure when the timeout expires. The function returns
without releasing the gate when the timeout failure happens. This causes
any other thread to block when calling MessageQ_open(), while subsequent
MessageQ_open() calls on the same thread can succeed.
The NameServerRemoteRpmsg_get() function has a timeout-based Semaphore_pend
that can return failure when the timeout expires. The function returns
without releasing the gate when the timeout failure happens. This causes
any other thread to block when calling MessageQ_open(), while subsequent
MessageQ_open() calls on the same thread can succeed.
9 years agoSDOCM00108130 IPC custom library build creates empty folder 3.30.00.07_eng 3.30.00.08_eng 3.30.00.09
SDOCM00108130 IPC custom library build creates empty folder
When not building product libraries, remove directive in makefile
which was creating output folder. The directive resulted in empty
folder named 'undefined'.
When not building product libraries, remove directive in makefile
which was creating output folder. The directive resulted in empty
folder named 'undefined'.
SDOCM00112918 fix: release NameServerRemoteRpmsg gate on timeout
The NameServerRemoteRpmsg_get() function has a timeout-based Semaphore_pend
that can return failure when the timeout expires. The function returns
without releasing the gate when the timeout failure happens. This causes
any other thread to block when calling MessageQ_open(), while subsequent
MessageQ_open() calls on the same thread can succeed.
The NameServerRemoteRpmsg_get() function has a timeout-based Semaphore_pend
that can return failure when the timeout expires. The function returns
without releasing the gate when the timeout failure happens. This causes
any other thread to block when calling MessageQ_open(), while subsequent
MessageQ_open() calls on the same thread can succeed.
SDOCM00107419 fix: add cast for OMAPL138 & Keystone devices
Since VirtQueue_Params is XDC-generated for OMAPL138 & Keystone devices
we need to add a (xdc_Fxn) cast for the 'callback' element assignment.
Other devices (OMAP5 & VAYU) already have the correct type for the
'callback' element in the manually-generated VirtQueue.h file.
Since VirtQueue_Params is XDC-generated for OMAPL138 & Keystone devices
we need to add a (xdc_Fxn) cast for the 'callback' element assignment.
Other devices (OMAP5 & VAYU) already have the correct type for the
'callback' element in the manually-generated VirtQueue.h file.
Move Watchdog module configuration assignments to module$use()
When the ti.deh package is loaded the Watchdog module$meta$init() method
is run. If the package is loaded by an architecture/device that is not
supported by Watchdog then module$meta$init() fails and the whole
configuration fails. This happens even when the Watchdog module is *not*
used, such as when the ti.deh package gets loaded as a result of an
xdc.module() reference.
When the ti.deh package is loaded the Watchdog module$meta$init() method
is run. If the package is loaded by an architecture/device that is not
supported by Watchdog then module$meta$init() fails and the whole
configuration fails. This happens even when the Watchdog module is *not*
used, such as when the ti.deh package gets loaded as a result of an
xdc.module() reference.
Fix recovery mechanism for late-attach use-case in QNX
This patch adds support for recovery from MMU faults, exceptions,
and watchdog timeouts when 'late-attached' to a slave core (SDOCM00112666).
Signed-off-by: VW <vwan@ti.com>
This patch adds support for recovery from MMU faults, exceptions,
and watchdog timeouts when 'late-attached' to a slave core (SDOCM00112666).
Signed-off-by: VW <vwan@ti.com>
Use different #include path for 3.14 Linux
Linux 3.14 has split header files into kernel and user ones, which means
MmRpc.c needs to include rpmsg_rpc.h from user location.
Linux 3.14 has split header files into kernel and user ones, which means
MmRpc.c needs to include rpmsg_rpc.h from user location.
Add Ipc.c to default source file list
Fixes to support minimal configuration of IPC
Validate processor ID in Notify_attach, which is the public API.
No need to re-validate in NotifyDriverMbx_Instance_init(). This
removes the Ipc dependency (needed for the assert object).
Validate processor ID in Notify_attach, which is the public API.
No need to re-validate in NotifyDriverMbx_Instance_init(). This
removes the Ipc dependency (needed for the assert object).
Fixes to support minimal configuration of IPC
When generating file list for a custom build, don't include Ipc.c
unless the application actually used the module. Added --output_file
option to makefile template; other minor cleanup.
When generating file list for a custom build, don't include Ipc.c
unless the application actually used the module. Added --output_file
option to makefile template; other minor cleanup.
IPC makefile template improvements
For custom builds, the makefile template was computing the list
of source files twice. Now it caches the list in a local array.
For custom builds, the makefile template was computing the list
of source files twice. Now it caches the list in a local array.
vayu: add new rprocList[] setting for Linux v3.14
The rproc order for vayu remote cores has changed in Linux kernel v3.14,
as part of the conversion to completely DT-based configuration.
The rproc order for vayu remote cores has changed in Linux kernel v3.14,
as part of the conversion to completely DT-based configuration.
Merge branch 'ipc-3.23-next' into ipc-next
SDOCM00112254 - Add IPC support for Soprano
SDOCM00112680 - IPC for Concerto has incorrect implemetations of NotifyDriverCirc_enable() and NotifyDriverCirc_enableEvent()
Applied bug fixes found by Vision SDK team.
On EVE1, fixed mailbox index computed when enabling interrupt
from DSP2. Fixed mailbox table entry for IPU1-1 to DSP1 mapping.
On EVE1, fixed mailbox index computed when enabling interrupt
from DSP2. Fixed mailbox table entry for IPU1-1 to DSP1 mapping.
Use core-specific WUGEN masks for suspend on OMAP
The WUGEN event masks for each core are set to values appropriate
for the architecture and core.
A new API is added that allows the application to control the WUGEN
event mask (IpcPower_{get,set}WugenEvtMask()).
Addresses CQ SDOCM00108585.
The WUGEN event masks for each core are set to values appropriate
for the architecture and core.
A new API is added that allows the application to control the WUGEN
event mask (IpcPower_{get,set}WugenEvtMask()).
Addresses CQ SDOCM00108585.
Update QNX Makefile to setup environment for QNX 6.6.0
Signed-off-by: VW <vwan@ti.com>
Signed-off-by: VW <vwan@ti.com>
Linux: GameMP inUse arrays had invalid address mappings
The GameMP address for the inUse arrays were being assigned incorrectly.
A page alignment was originally needed to properly map the arrays in
user space. After mapping, the alignment difference wasn't being taken
into consideration.
The GameMP address for the inUse arrays were being assigned incorrectly.
A page alignment was originally needed to properly map the arrays in
user space. After mapping, the alignment difference wasn't being taken
into consideration.
Add late-attach support for IPUs in QNX
This commit addresses CQ SDOCM00108582.
Signed-off-by: VW <vwan@ti.com>
This commit addresses CQ SDOCM00108582.
Signed-off-by: VW <vwan@ti.com>
Fixed bad array reference in IPU ducati interrupt handler.
The ducati ISR was still using the vayu virtual processor IDs
instead of the new tda3xx ones.
The ducati ISR was still using the vayu virtual processor IDs
instead of the new tda3xx ones.
Fixed incorrect mailbox table entry for tda3xx
For TDA3xx, the IPU1-0 to EVE1 entry in the mailbox table was
incorrect. User should be 0 instead of 4.
For TDA3xx, the IPU1-0 to EVE1 entry in the mailbox table was
incorrect. User should be 0 instead of 4.
Added TDA3XX device support.
Added new family package for tda3xx device. Shared memory notify
driver is working but mailbox driver is not. Minimal testing with
ex11_ping example.
Added new family package for tda3xx device. Shared memory notify
driver is working but mailbox driver is not. Minimal testing with
ex11_ping example.
Added TDA3X device to ipc delegate table.
Added new TDA3xx platform.
9 years agoPrevent responses to timed-out NameServer requests from disrupting later reqs 3.23.00.00_eng
Prevent responses to timed-out NameServer requests from disrupting later reqs
This commit fixes the issue in SDOCM00112106 in QNX and BIOS. It adds a
sequence number to each NameServer message, so that when responses come
back this number can be used to identify the relevant response and ignore
the stale ones.
Signed-off-by: VW <vwan@ti.com>
This commit fixes the issue in SDOCM00112106 in QNX and BIOS. It adds a
sequence number to each NameServer message, so that when responses come
back this number can be used to identify the relevant response and ignore
the stale ones.
Signed-off-by: VW <vwan@ti.com>
Linux: Addresses timed-out NameServer requests in LAD
This commit fixes the issue in SDOCM00112106 on the Linux side. It
adds a sequence number to NameServer message so that responses can
be properly identified.
This commit fixes the issue in SDOCM00112106 on the Linux side. It
adds a sequence number to NameServer message so that responses can
be properly identified.
Fix MultiProc_self() in QNX to return the correct value
This commit fixes MultiProc_getConfig, so that its returned data structure
does not get corrupted. This in turn fixes MultiProc_self(), which
was returning the corrupted id.
This addresses CQ SDOCM00108594.
Signed-off-by: VW <vwan@ti.com>
This commit fixes MultiProc_getConfig, so that its returned data structure
does not get corrupted. This in turn fixes MultiProc_self(), which
was returning the corrupted id.
This addresses CQ SDOCM00108594.
Signed-off-by: VW <vwan@ti.com>
Add option to provide a valid path to crash dump file in QNX
This commit fixes an error that occurs during the recovery process when
an invalid path is used to store the contents of the remote core logs.
The -c flag can now be passed to the resource manager to specify a valid
path for the file.
This also changes a few instances where error messages were referring to
"syslink".
It addresses SDOCM00108056.
Signed-off-by: VW <vwan@ti.com>
This commit fixes an error that occurs during the recovery process when
an invalid path is used to store the contents of the remote core logs.
The -c flag can now be passed to the resource manager to specify a valid
path for the file.
This also changes a few instances where error messages were referring to
"syslink".
It addresses SDOCM00108056.
Signed-off-by: VW <vwan@ti.com>
Merge tag '3.22.02.11' into ipc-next
3.22.02.11
3.22.02.11
9 years agoAdd MmServiceMgr_getId() to allow retrieval of service instance id 3.22 ipc-3.22-next 3.22.02.10_eng 3.22.02.11
Add MmServiceMgr_getId() to allow retrieval of service instance id
This commit adds MmServiceMgr_getId() to allow skeleton functions and service
deletion functions to retrieve the instance id it is acting upon. It also
reverts previous support for MmRpc_getId() and MmServiceMgr_register2.
Signed-off-by: VW <vwan@ti.com>
This commit adds MmServiceMgr_getId() to allow skeleton functions and service
deletion functions to retrieve the instance id it is acting upon. It also
reverts previous support for MmRpc_getId() and MmServiceMgr_register2.
Signed-off-by: VW <vwan@ti.com>
Merge remote-tracking branch 'origin/3.22' into ipc-next
Reduce sizes of data footprint heavy hitters for benefit of K2E
Since K2E has "only" 512 KB of L2SRAM (other Keystone devices have
1024 KB or more), and since Keystone is modeled to put everything in
L2SRAM, reduce the size of BIOS heap, SysMin buffer, and MessageQ heap.
Also remove NameServerApp from K2E's tests since it is still blowing
its memory budget (will fix later).
Since K2E has "only" 512 KB of L2SRAM (other Keystone devices have
1024 KB or more), and since Keystone is modeled to put everything in
L2SRAM, reduce the size of BIOS heap, SysMin buffer, and MessageQ heap.
Also remove NameServerApp from K2E's tests since it is still blowing
its memory budget (will fix later).
Update help text of rpmsg-rpc-stress test for new options
Signed-off-by: VW <vwan@ti.com>
Signed-off-by: VW <vwan@ti.com>
Support in QNX MmRpc/MmServiceMgr to identify deleted instance during cleanup
This commit adds the MmRpc_getId API on host to return a unique id for
each MmRpc instance of a service. This id is passed to the cleanup function
registered in the newly introduced MmServiceMgr_register2() so that it can
clean up after a given MmRpc instance.
This commit addresses SDOCM00108138
Signed-off-by: VW <vwan@ti.com>
This commit adds the MmRpc_getId API on host to return a unique id for
each MmRpc instance of a service. This id is passed to the cleanup function
registered in the newly introduced MmServiceMgr_register2() so that it can
clean up after a given MmRpc instance.
This commit addresses SDOCM00108138
Signed-off-by: VW <vwan@ti.com>
Set Hwi.excHandlerFunc earlier, before it's sealed
One of the newly-used SYS/BIOS or XDC releases introduced a change
that caused the setting of Hwi.excHandlerFunc in module$static$init()
to fail, due to it being "sealed" at that time. Moving it to an
earlier-invoked module method solves this issue, albeit with a caveat
that is mentioned above where the Hwi delegate is retrieved.
This issue was seen when moving from
xdctools_3_25_05_94 -> xdctools_3_30_01_25
bios_6_37_02_27 -> bios_6_40_01_15
One of the newly-used SYS/BIOS or XDC releases introduced a change
that caused the setting of Hwi.excHandlerFunc in module$static$init()
to fail, due to it being "sealed" at that time. Moving it to an
earlier-invoked module method solves this issue, albeit with a caveat
that is mentioned above where the Hwi delegate is retrieved.
This issue was seen when moving from
xdctools_3_25_05_94 -> xdctools_3_30_01_25
bios_6_37_02_27 -> bios_6_40_01_15
Fix QNX build issue in Windows when QNX_CFLAGS is empty
This commit fixes the error where recurse.mk is not found on Windows if
QNX_CFLAGS is left empty in products.mak
Signed-off-by: VW <vwan@ti.com>
This commit fixes the error where recurse.mk is not found on Windows if
QNX_CFLAGS is left empty in products.mak
Signed-off-by: VW <vwan@ti.com>
SDOCM00108167 Uninitialized variable in notify driver template file
When building for a single processor (i.e. MultiProc has only one
processor), the generated function NotifySetup_sharedMemReq did
not initialize memReq. This is a special use-case for Vision SDK.
When building for a single processor (i.e. MultiProc has only one
processor), the generated function NotifySetup_sharedMemReq did
not initialize memReq. This is a special use-case for Vision SDK.
SDOCM00108149 Incorrect index computation in NotifySetup for v7M and v7A
When computing the mailbox table index in NotifySetup_plugHwi, the local
MultiProcID was used. It should have been using the local virtual ID. The
same bug was in NotifySetup_unplugHwi.
When computing the mailbox table index in NotifySetup_plugHwi, the local
MultiProcID was used. It should have been using the local virtual ID. The
same bug was in NotifySetup_unplugHwi.
9 years agoAdd option IPC_DISABLE_WATCHDOG to prevent plug of watchdog interrupt handlers 3.22.01.06_eng
Add option IPC_DISABLE_WATCHDOG to prevent plug of watchdog interrupt handlers
This commit adds a compile option, IPC_DISABLE_WATCHDOG, that allows non-deh
users in need of GP timers to prevent watchdog interrupt handlers to be
plugged on the host in QNX. This option can be specified via the variable
QNX_CFLAGS in products.mak.
Signed-off-by: VW <vwan@ti.com>
This commit adds a compile option, IPC_DISABLE_WATCHDOG, that allows non-deh
users in need of GP timers to prevent watchdog interrupt handlers to be
plugged on the host in QNX. This option can be specified via the variable
QNX_CFLAGS in products.mak.
Signed-off-by: VW <vwan@ti.com>
SDOCM00108114 Link error when building with DCE on IPU/Vayu
The notify setup module for vayu was unconditionally pulling in the
notify shared memory driver which, in turn, pulled in the ti.sdo.ipc
package. This caused undefined references when building an executable
for DCE because it was not supposed to use any IPC modules. The notify
driver now has a check to see if it should pull in IPC modules or not.
The notify setup module for vayu was unconditionally pulling in the
notify shared memory driver which, in turn, pulled in the ti.sdo.ipc
package. This caused undefined references when building an executable
for DCE because it was not supposed to use any IPC modules. The notify
driver now has a check to see if it should pull in IPC modules or not.
9 years agoFix error from calling MultiProc_getId with non-SMP IPU core name on OMAP5 QNX 3.22.00.05 3.30.00.00_eng
Fix error from calling MultiProc_getId with non-SMP IPU core name on OMAP5 QNX
Code in ipu_pm.c that was not previously exercised is now giving an error
when a watchdog timer interrupt is caught. This commit provides a fix.
Signed-off-by: VW <vwan@ti.com>
Code in ipu_pm.c that was not previously exercised is now giving an error
when a watchdog timer interrupt is caught. This commit provides a fix.
Signed-off-by: VW <vwan@ti.com>
Stop watchdog timers when shutting down VAYU IPU
This commit stops the timers when shutting down the IPU, and ensures
clean-up is performed properly when the resource manager is terminated.
Signed-off-by: VW <vwan@ti.com>
This commit stops the timers when shutting down the IPU, and ensures
clean-up is performed properly when the resource manager is terminated.
Signed-off-by: VW <vwan@ti.com>
Fix wrong OMAP5 #define
This commit corrects a typo to use SYSLINK_QNX_OMAP5430
instead of SYSLINK_QNX_OMAP5, which caused watchdog interrupts to
not be caught on the host OMAP5.
Signed-off-by: VW <vwan@ti.com>
This commit corrects a typo to use SYSLINK_QNX_OMAP5430
instead of SYSLINK_QNX_OMAP5, which caused watchdog interrupts to
not be caught on the host OMAP5.
Signed-off-by: VW <vwan@ti.com>
Missing dependency on NotifySetup module.
The InterruptIpu and InterruptHost modules call into the NotifySetup
module but failed to declare a dependency on it during configuration.
Cleaned up use of local variables, removed unused variables.
The InterruptIpu and InterruptHost modules call into the NotifySetup
module but failed to declare a dependency on it during configuration.
Cleaned up use of local variables, removed unused variables.
Add support for watchdog timer interrupts on DRA7xx IPU
This commit adds QNX support for watchdog timer interrupts. The resource
manager schedules recovery whenever an interrupt from GPTimer 4 or 9
is received.
Only one of IPU1 or IPU2 can use watchdog timers.
Signed-off-by: VW <vwan@ti.com>
This commit adds QNX support for watchdog timer interrupts. The resource
manager schedules recovery whenever an interrupt from GPTimer 4 or 9
is received.
Only one of IPU1 or IPU2 can use watchdog timers.
Signed-off-by: VW <vwan@ti.com>
SDOCM00107743 Optimization flags not removed for debug builds
This was an GNU template bug. The template incorrectly referenced the
BIOS build module instead of the IPC build module.
This was an GNU template bug. The template incorrectly referenced the
BIOS build module instead of the IPC build module.
SDOCM00106584 Notify mailbox driver support on DRA7xx (IPU, HOST) - Part 3
Added documentation to NotifySetup module explaining how to use and
configure the notify drivers. Used nodoc tag to hide functions which are
only to be used by other driver modules. Final commit for this feature.
Added documentation to NotifySetup module explaining how to use and
configure the notify drivers. Used nodoc tag to hide functions which are
only to be used by other driver modules. Final commit for this feature.
SDOCM00106584 Notify mailbox driver support on DRA7xx (IPU, HOST) - Part 2
Added notify mailbox driver support for HOST. This implementation is
very similar to the IPU version. Removed startup function. Interrupt
ISR re-write to match InterruptIpu module. Moved HOST MMU setup from
InterruptHost to NotifySetup.
Code cleanup in NotifyDriverMbx module. All processors now use the
same implementation. Fixed include files. Removed dead code from
InterruptArp32 and InterruptIpu modules. Code cleanup in InterruptDsp
and NotifySetup modules.
Added NotifyDriverMbx to Build.xs file list for A15g.
Added notify mailbox driver support for HOST. This implementation is
very similar to the IPU version. Removed startup function. Interrupt
ISR re-write to match InterruptIpu module. Moved HOST MMU setup from
InterruptHost to NotifySetup.
Code cleanup in NotifyDriverMbx module. All processors now use the
same implementation. Fixed include files. Removed dead code from
InterruptArp32 and InterruptIpu modules. Code cleanup in InterruptDsp
and NotifySetup modules.
Added NotifyDriverMbx to Build.xs file list for A15g.
SDOCM00106584 Notify mailbox driver support on DRA7xx (IPU, HOST) - Part 1
Added notify mailbox driver support for IPU. The InterruptIpu module
uses the NotifySetup module to dispatch interrupt to the correct notify
driver. The InterruptIpu ISR no longer checks all mailboxes for new
messages because the NotifySetup dispatch ISR already did this. Added
IPU support to the NotifySetup module.
The NotifyDriverMbx module now supports IPU. The code is the same as for
DSP and EVE. Added the module to product library builds for M3 and M4.
Added two new sub-mailboxes to the mailbox table. These are needed for
IPU1-0 to IPU1-1 communication when using the mailbox driver. For shared
memory driver, they did not use a mailbox for interrupt. They used
internal IPU interrupt.
Removed module startup method from InterruptDsp and InterruptIpu modules.
Consolidated startup code in NotifySetup. The NotifyDriverMbx startup
method was also consolidated (but not yet removed).
Removed interruptTable from InterruptDsp, InterruptIpu and NotifyDriverMbx
modules. Consolidated in NotifySetup. Added access method to NotifySetup
to fetch interrupt number from table.
Added new mailboxes to TableInit.xs: generateTable() method.
Added notify mailbox driver support for IPU. The InterruptIpu module
uses the NotifySetup module to dispatch interrupt to the correct notify
driver. The InterruptIpu ISR no longer checks all mailboxes for new
messages because the NotifySetup dispatch ISR already did this. Added
IPU support to the NotifySetup module.
The NotifyDriverMbx module now supports IPU. The code is the same as for
DSP and EVE. Added the module to product library builds for M3 and M4.
Added two new sub-mailboxes to the mailbox table. These are needed for
IPU1-0 to IPU1-1 communication when using the mailbox driver. For shared
memory driver, they did not use a mailbox for interrupt. They used
internal IPU interrupt.
Removed module startup method from InterruptDsp and InterruptIpu modules.
Consolidated startup code in NotifySetup. The NotifyDriverMbx startup
method was also consolidated (but not yet removed).
Removed interruptTable from InterruptDsp, InterruptIpu and NotifyDriverMbx
modules. Consolidated in NotifySetup. Added access method to NotifySetup
to fetch interrupt number from table.
Added new mailboxes to TableInit.xs: generateTable() method.
Add new flag to resource manager to disable recovery
This commit adds a new flag to disable the recovery mechanism in the QNX
resource manager. This is useful for debugging the slave processors and
prevents their state from being wiped in the event of a crash. (SDOCM00107765)
Signed-off-by: VW <vwan@ti.com>
This commit adds a new flag to disable the recovery mechanism in the QNX
resource manager. This is useful for debugging the slave processors and
prevents their state from being wiped in the event of a crash. (SDOCM00107765)
Signed-off-by: VW <vwan@ti.com>
Modify rpmsg-rpc-stress test to generate exceptions and watchdog timeouts
Fix Deh/Watchdog packaging issues, move StackDbg to ti/deh
Fixes various packaging problems, including moving StackDbg from
ti/trace to ti/deh.
Fix IpuSmp.cfg to use correct Timer index for GPTimer3 (for OMAP5 IPU).
Cleaned up test configs wrt/ using Deh. Config files for slaves that
have Deh/Watchdog but are not officially supported have commented-out
Deh/Watchdog config (OMAP5 IPU & DRA7XX IPU2 are the only slaves that
are officially supported).
Fixes various packaging problems, including moving StackDbg from
ti/trace to ti/deh.
Fix IpuSmp.cfg to use correct Timer index for GPTimer3 (for OMAP5 IPU).
Cleaned up test configs wrt/ using Deh. Config files for slaves that
have Deh/Watchdog but are not officially supported have commented-out
Deh/Watchdog config (OMAP5 IPU & DRA7XX IPU2 are the only slaves that
are officially supported).
Code cleanup to remove unused VirtQueue functions on QNX
Signed-off-by: VW <vwan@ti.com>
Signed-off-by: VW <vwan@ti.com>
Update MessageQMulti test to support up to 55 threads
Signed-off-by: VW <vwan@ti.com>
Signed-off-by: VW <vwan@ti.com>
Add INTMEM resource type support in QNX
This commit adds support for the new INTMEM resource type (SDOCM00107479).
For this resource type, we map the entry only for the loader on the host,
without mapping it to the slave MMU.
This commit also removes support of the hard-coded static entries defined
in the address translation table, which was originally there to ensure
slave internal memories are always mapped. To match up with the Linux
implementation we'll now rely on the INTMEM resource type instead.
Note that this does break compatibility with slave executables that were
previously built without the INTMEM resource entries but were relying
on the hard-coded internal memory definitions in the ipc resource manager.
Signed-off-by: VW <vwan@ti.com>
This commit adds support for the new INTMEM resource type (SDOCM00107479).
For this resource type, we map the entry only for the loader on the host,
without mapping it to the slave MMU.
This commit also removes support of the hard-coded static entries defined
in the address translation table, which was originally there to ensure
slave internal memories are always mapped. To match up with the Linux
implementation we'll now rely on the INTMEM resource type instead.
Note that this does break compatibility with slave executables that were
previously built without the INTMEM resource entries but were relying
on the hard-coded internal memory definitions in the ipc resource manager.
Signed-off-by: VW <vwan@ti.com>
Add subtest into rpmsg-rpc-stress test to trigger program-access MMU fault
This commit enhances the rpmsg-rpc-stress test to allow it to trigger MMU
fault via instruction fetch.
Signed-off-by: VW <vwan@ti.com>
This commit enhances the rpmsg-rpc-stress test to allow it to trigger MMU
fault via instruction fetch.
Signed-off-by: VW <vwan@ti.com>
Linux/Android: Option to set LAD working dir permissions
Added an optional flag (-p) to LAD, to allow users to set the permissions
of LAD's working directory at launch.
This is critical, if applications using IPC stack (MessageQ) are executed
in user-space while LAD is started as root. Without proper directory
permissions the user application will be unable to talk to the LAD daemon.
Added an optional flag (-p) to LAD, to allow users to set the permissions
of LAD's working directory at launch.
This is critical, if applications using IPC stack (MessageQ) are executed
in user-space while LAD is started as root. Without proper directory
permissions the user application will be unable to talk to the LAD daemon.
Add Deh/Watchdog support for OMAP5 & DRA7XX remote cores
The ti/deh package supports DSPs and IPUs, although the DSP support
needs some further work (Exception "dump" from SYS/BIOS when watchdog
fires is not valid, all zeroes for now).
The ti/ipc/tests have Deh/Watchdog enabled for IPU on OMAP5 and IPU2
on DRA7XX.
The new content contained herein originally came from:
http://git.omapzoom.org/?p=repo/sysbios-rpmsg.git;a=summary
The repo HEAD at the time of copying was:
commit 18c2b758f0674ee0baf95603248c6303afd9c854
This repo supported Deh/Watchdog for OMAP4/5.
The ti/deh package supports DSPs and IPUs, although the DSP support
needs some further work (Exception "dump" from SYS/BIOS when watchdog
fires is not valid, all zeroes for now).
The ti/ipc/tests have Deh/Watchdog enabled for IPU on OMAP5 and IPU2
on DRA7XX.
The new content contained herein originally came from:
http://git.omapzoom.org/?p=repo/sysbios-rpmsg.git;a=summary
The repo HEAD at the time of copying was:
commit 18c2b758f0674ee0baf95603248c6303afd9c854
This repo supported Deh/Watchdog for OMAP4/5.
NotifySetup_plugHwi() - initialize restore ier mask
On ARP32, when plugging a Hwi, specify the restore ier mask. This is
needed because we use a custom bit mask for the disable ier mask.
On ARP32, when plugging a Hwi, specify the restore ier mask. This is
needed because we use a custom bit mask for the disable ier mask.
Fixed minor typo in comment.
Fix MessageQ to support more than 52 instances in QNX
This fix changes MessageQ to obtain a port number assignment from MessageQCopy
and use it as local queue id as opposed to having MessageQ manage the ids
itself. This ensures the port number to be above 1024, so that it does not
collide with any reserved port such as the one for the Name Service.
This addresses CQ SDOCM00104834.
Signed-off-by: VW <vwan@ti.com>
This fix changes MessageQ to obtain a port number assignment from MessageQCopy
and use it as local queue id as opposed to having MessageQ manage the ids
itself. This ensures the port number to be above 1024, so that it does not
collide with any reserved port such as the one for the Name Service.
This addresses CQ SDOCM00104834.
Signed-off-by: VW <vwan@ti.com>
DRA7XX: Remove hard-coded vring addrs
Replace hard-coded vring addrs with runtime addrs read from
the resource table. This reduces the number of things to change
if the memory map moves around.
Replace hard-coded vring addrs with runtime addrs read from
the resource table. This reduces the number of things to change
if the memory map moves around.
BIOS: Remove dead DRA7XX VirtQueue code
Because BIOS-side virtqueue-based processors never run as the 'host',
half of the protocol is unused. This commit removes that dead code
for the BIOS-side DRA7XX VirtQueue driver.
Because BIOS-side virtqueue-based processors never run as the 'host',
half of the protocol is unused. This commit removes that dead code
for the BIOS-side DRA7XX VirtQueue driver.
OMAP5: Remove hard-coded vring addrs
Replace hard-coded vring addrs with runtime addrs read from
the resource table. This reduces the number of things to change
if the memory map moves around.
Replace hard-coded vring addrs with runtime addrs read from
the resource table. This reduces the number of things to change
if the memory map moves around.