DRA7XX: Consolidate DSP1/2 config scripts
Lots of duplication between DRA7XX's ti/ipc/tests/Dsp(1|2).cfg
scripts. This commit merges the two into Dsp_vayu.cfg, which
encapsulates the single "real" difference, which was the
MultiProc config name. It also adjusts users of these Dsp .cfg
scripts to now use the common Dsp_vayu.cfg script.
Lots of duplication between DRA7XX's ti/ipc/tests/Dsp(1|2).cfg
scripts. This commit merges the two into Dsp_vayu.cfg, which
encapsulates the single "real" difference, which was the
MultiProc config name. It also adjusts users of these Dsp .cfg
scripts to now use the common Dsp_vayu.cfg script.
OMAP5: Adjust IPU carveout size and linker map
The sizes for the IPU data section has been reduced, in line
with the changes on the host OS side. There is no change in
the starting addresses of either the DSP or IPU. The linker
memory map file used for building OMAP5 samples has also been
adjusted accordingly.
Signed-off-by: Suman Anna <s-anna@ti.com>
The sizes for the IPU data section has been reduced, in line
with the changes on the host OS side. There is no change in
the starting addresses of either the DSP or IPU. The linker
memory map file used for building OMAP5 samples has also been
adjusted accordingly.
Signed-off-by: Suman Anna <s-anna@ti.com>
DRA7xx: Adjust carveout sizes and addresses
The starting addresses for the resource table carveouts have
been adjusted in line with the changes on the host OS side.
The IPU2 size has been decreased, and the starting addresses
of the vrings have been reshuffled.
The linker memory map has also been adjusted for IPU2. No memory
map changes were made to IPU1 and DSP1 processors even though
the host-side can support a little bit more larger footprint
images - the current memory maps for these processors is a
minimal memory map.
Signed-off-by: Suman Anna <s-anna@ti.com>
The starting addresses for the resource table carveouts have
been adjusted in line with the changes on the host OS side.
The IPU2 size has been decreased, and the starting addresses
of the vrings have been reshuffled.
The linker memory map has also been adjusted for IPU2. No memory
map changes were made to IPU1 and DSP1 processors even though
the host-side can support a little bit more larger footprint
images - the current memory maps for these processors is a
minimal memory map.
Signed-off-by: Suman Anna <s-anna@ti.com>
Vayu: Minor comment wordsmithing
Fix typo, 80 char alignment.
Fix typo, 80 char alignment.
Tests: Remove MPU mapping from gatempapp sample's resource table
The L4_PER mapping entry is split into three individual L4_PERx
entries. This is done to remove any mappings for the MPU-relevant
address spaces into the slave processor MMUs.
This change incorporates the same changes to the gatempapp resource
table as in commit,
e4b6067 "Remoteproc: DRA7xx: Remove MPU mapping from resource table".
Signed-off-by: Suman Anna <s-anna@ti.com>
The L4_PER mapping entry is split into three individual L4_PERx
entries. This is done to remove any mappings for the MPU-relevant
address spaces into the slave processor MMUs.
This change incorporates the same changes to the gatempapp resource
table as in commit,
e4b6067 "Remoteproc: DRA7xx: Remove MPU mapping from resource table".
Signed-off-by: Suman Anna <s-anna@ti.com>
Android: Adds GateMP build support
The necessary build files have been updated to add GateMP for
Android. The functionality has been verified manually using
breakpoints to ensure GateMP APIs are behaving as expected.
The necessary build files have been updated to add GateMP for
Android. The functionality has been verified manually using
breakpoints to ensure GateMP APIs are behaving as expected.
Linux: LAD requires -l option for logging
With the addition of GateMP support, the LAD daemon now processes
arguments differently. An 'l' option is now required to enable
logging. The 'g' option enables GateMP support. A usage output has
been added with an 'h' option.
Examples:
lad_<platform> -h
lad_<platform> -l log.txt
lad_<platform> -g -l log.txt
With the addition of GateMP support, the LAD daemon now processes
arguments differently. An 'l' option is now required to enable
logging. The 'g' option enables GateMP support. A usage output has
been added with an 'h' option.
Examples:
lad_<platform> -h
lad_<platform> -l log.txt
lad_<platform> -g -l log.txt
OMAP5: Minor test cfg cleanup
Minor config refactoring. The GateThreadSupport module is only
needed by grcm users, but was brought in through Dsp.cfg which
is used by non-grcm-using tests. Also, took the opportunity to
fixup some syntax buglets and remove some dead comments.
Minor config refactoring. The GateThreadSupport module is only
needed by grcm users, but was brought in through Dsp.cfg which
is used by non-grcm-using tests. Also, took the opportunity to
fixup some syntax buglets and remove some dead comments.
Linux: Improve MessageQApp cmdline error handling
In the MessageQApp, if an errant 2nd arg is passed on the command
line (e.g. "DSP" instead of "2"), the calculated procId is 0
(which is the host), and HOST<->HOST messaging is attempted. This
isn't supported.
This commit catches that errant cmdline and emits an error.
In the MessageQApp, if an errant 2nd arg is passed on the command
line (e.g. "DSP" instead of "2"), the calculated procId is 0
(which is the host), and HOST<->HOST messaging is attempted. This
isn't supported.
This commit catches that errant cmdline and emits an error.
OMAP5: Remove unnecessary rpmsg-related code
The original OMAP5 code import included support for running the
IPU in non-SMP BIOS. This was untested in the context of IPC 3.x,
and is not supported. The unsupported/dead stuff was obfuscating
the live stuff, so this commit removes it.
There is no intentional change in behavior, other than slight
performance improvement due to small bits of code removal.
The original OMAP5 code import included support for running the
IPU in non-SMP BIOS. This was untested in the context of IPC 3.x,
and is not supported. The unsupported/dead stuff was obfuscating
the live stuff, so this commit removes it.
There is no intentional change in behavior, other than slight
performance improvement due to small bits of code removal.
BIOS: Enable xdc__strict and fix issues
XDC provides a xdc__strict feature. Defining that pre-processor
variable prior to #including <xdc/std.h> will disable deprecated
data types (e.g. Uint32 - note the lowercase 'i') and change
NULL from '0' to '(void *)0'.
This commit throws that xdc__strict definition when building the
BIOS-side code, and fixes issues that were found enabling it.
Interestingly, there were a few bugs that turned up during this
exercise (rare in the wild, but still good cleanup).
XDC provides a xdc__strict feature. Defining that pre-processor
variable prior to #including <xdc/std.h> will disable deprecated
data types (e.g. Uint32 - note the lowercase 'i') and change
NULL from '0' to '(void *)0'.
This commit throws that xdc__strict definition when building the
BIOS-side code, and fixes issues that were found enabling it.
Interestingly, there were a few bugs that turned up during this
exercise (rare in the wild, but still good cleanup).
GateMP: Revert ti_sdo_ipc_GateMP_getSharedAddr
This function was inadvertently modified in a previous commit,
and needs to be reverted back to its original state.
(SDOCM00106117)
Signed-off-by: VW <vwan@ti.com>
This function was inadvertently modified in a previous commit,
and needs to be reverted back to its original state.
(SDOCM00106117)
Signed-off-by: VW <vwan@ti.com>
Linux: Update autotools-generated files
Linux: Fix gateMPApp unconditional build
The tests directory Makefile needs to ensure CMEM_INSTALL_DIR
variable is set before attempting to build the gateMPApp for DRA7XX.
The tests directory Makefile needs to ensure CMEM_INSTALL_DIR
variable is set before attempting to build the gateMPApp for DRA7XX.
Docs: Update MmRpc doxygen documentation
Linux: Update to autotools files for GateMP addition
Linux: Added GateMP support for DRA7XX devices
GateMP support has been added using the device's spinlocks.
To enable GateMP on the host, throw -g option when launching the
LAD daemon as follows:
./lad_dra7xx log.txt -g
To enable GateMP on the slave core, the core must be configured as
the owner of SR0 and GateMP.hostSupport config param must be set
to 'true' as follows:
var GateMP = xdc.useModule('ti.sdo.ipc.GateMP');
GateMP.hostSupport = true;
The slave core with GateMP enabled must the loaded (remoteproc)
prior to the execution of LAD on the host. This adds a restriction
on LAD that wasn't previously there.
Note: Initial validation has only been performed on DRA7XX DSP1.
GateMP support has been added using the device's spinlocks.
To enable GateMP on the host, throw -g option when launching the
LAD daemon as follows:
./lad_dra7xx log.txt -g
To enable GateMP on the slave core, the core must be configured as
the owner of SR0 and GateMP.hostSupport config param must be set
to 'true' as follows:
var GateMP = xdc.useModule('ti.sdo.ipc.GateMP');
GateMP.hostSupport = true;
The slave core with GateMP enabled must the loaded (remoteproc)
prior to the execution of LAD on the host. This adds a restriction
on LAD that wasn't previously there.
Note: Initial validation has only been performed on DRA7XX DSP1.
Linux: Update autotools generated files
Check in autoreconf-generated files for C66AK2E support.
Check in autoreconf-generated files for C66AK2E support.
C66AK2E: Linux: Introduce support for C66AK2E
The C66AK2E 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.
The C66AK2E 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.
C66AK2E: BIOS: Introduce support for C66AK2E
The C66AK2E device is an A15 + C66 DSP, similar in hardware
to the TCI663X family of devices. This commit adds BIOS-side
support.
The C66AK2E device is an A15 + C66 DSP, similar in hardware
to the TCI663X family of devices. This commit adds BIOS-side
support.
Linux: Update autotools generated files
Check in autoreconf-generated files.
Check in autoreconf-generated files.
TCI6630: Linux: Introduce support for TCI6630K2L
The TCI6630K2L device is an A15 + 4 C66 DSPs, very similar
to TCH6638K2K (A15 + 8 C66 DSPs). This commit adds
Linux support.
Note that this commit doesn't update the autotools-generated
files. That will be done in a separate commit.
The TCI6630K2L device is an A15 + 4 C66 DSPs, very similar
to TCH6638K2K (A15 + 8 C66 DSPs). This commit adds
Linux support.
Note that this commit doesn't update the autotools-generated
files. That will be done in a separate commit.
TCI6630: BIOS: Introduce support for TCI6630K2L
The TCI6630K2L device is an A15 + 4 C66 DSPs, very similar
to TCI6638K2K (A15 + 8 C66 DSPs). This commit adds
BIOS-side support.
The TCI6630K2L device is an A15 + 4 C66 DSPs, very similar
to TCI6638K2K (A15 + 8 C66 DSPs). This commit adds
BIOS-side support.
Increase the max name length for GateMP's NameServer on QNX to 32
This is to match up with the BIOS side default configuration in GateMP, and to
accommodate for the name of the default gate, which is 17-byte long.
Signed-off-by: VW <vwan@ti.com>
This is to match up with the BIOS side default configuration in GateMP, and to
accommodate for the name of the default gate, which is 17-byte long.
Signed-off-by: VW <vwan@ti.com>
Linux: Update autotools generated files
The autotools generated files have been update to reflect the addition
of a pkgconfig file for the mmrpc library.
Including the generated files in the development branch eliminates the
need for users to have autotools (autoconf, autoamke, and libtool) to
build ipc Linux sources.
The autotools generated files have been update to reflect the addition
of a pkgconfig file for the mmrpc library.
Including the generated files in the development branch eliminates the
need for users to have autotools (autoconf, autoamke, and libtool) to
build ipc Linux sources.
Linux: Add package config information to mmrpc
This patch adds the libmmrpc.pc to package config.
This aides in identifying the correct CFLAGS for any user or mmrpc
as below.
pkg-config --cflags libmmrpc
Using the above command, the applications using libmmrpc can
find the cflags automatically using pkg-config thus avoiding to
explicitly set the path to MmRpc.h
This patch adds the libmmrpc.pc to package config.
This aides in identifying the correct CFLAGS for any user or mmrpc
as below.
pkg-config --cflags libmmrpc
Using the above command, the applications using libmmrpc can
find the cflags automatically using pkg-config thus avoiding to
explicitly set the path to MmRpc.h
SDOCM00106019 IPC makefile template does not honor Build.customCCOpts
The makefile template had an incorrect reference to the BIOS module.
This caused the wrong customCCOpts to be used in the makefile.
The makefile template had an incorrect reference to the BIOS module.
This caused the wrong customCCOpts to be used in the makefile.
LAD: Dead code removal
Removed some dead code.
Removed some dead code.
Remoteproc: DRA7xx: Cleanup references to OMAP5
OMAP5 has it own resource table files, so clean up any references
to OMAP5 from the DRA7xx resource table files.
Signed-off-by: Suman Anna <s-anna@ti.com>
OMAP5 has it own resource table files, so clean up any references
to OMAP5 from the DRA7xx resource table files.
Signed-off-by: Suman Anna <s-anna@ti.com>
IpcMgr: Fix comment typo
No functional change - just fixed a typo.
No functional change - just fixed a typo.
DRA7XX: Improve SMP detection and error messages
Specifically for the ti.ipc.family.vayu package, which is limited
to use on HLOS-based systems, only SMP BIOS is supported on the
IPUs. This commit improves the package's SMP detection (in
getLibs()) and error reporting (in validate()).
Specifically for the ti.ipc.family.vayu package, which is limited
to use on HLOS-based systems, only SMP BIOS is supported on the
IPUs. This commit improves the package's SMP detection (in
getLibs()) and error reporting (in validate()).
Ignore 'remote get' timeouts in NameServer_get when procId array is supplied in QNX.
This patch fixes an oversight in commit 2427c7d168fb42a3e277f7d4c7827e7cdc955ac2,
where 'remote get' timeouts were ignored when procId array is NULL, but not
for the case when the procId array is supplied.
This patch fixes an oversight in commit 2427c7d168fb42a3e277f7d4c7827e7cdc955ac2,
where 'remote get' timeouts were ignored when procId array is NULL, but not
for the case when the procId array is supplied.
Change NameServer_get to ignore 'remote get' timeouts in BIOS
This patch allows NameServer requests to succeed even when some of the other
remote cores are not yet ready to handle NameServer requests.
This patch allows NameServer requests to succeed even when some of the other
remote cores are not yet ready to handle NameServer requests.
Fix wrong assertion in packages/ti/sdo/ipc/family/vayu/InterruptDsp.c
Merge remote-tracking branch 'origin/ipc-3.20-next' into ipc-next
Merge remote-tracking branch 'origin/ipc-3.10-next' into ipc-3.20-next
Merge remote-tracking branch 'origin/3.00' into ipc-3.10-next
Conflicts:
linux/src/tests/Makefile.am
linux/src/tests/Makefile.in
Conflicts:
linux/src/tests/Makefile.am
linux/src/tests/Makefile.in
SDOCM00105512: Support unnamed Linux MessageQs
The MessageQ API supports unnamed MessageQs; update Linux's
LAD-based MessageQ creation command to handle this.
Previously a segment fault would occur due to strncpy() being
passed a NULL src string array.
The MessageQ API supports unnamed MessageQs; update Linux's
LAD-based MessageQ creation command to handle this.
Previously a segment fault would occur due to strncpy() being
passed a NULL src string array.
Removes all references to OMAP4 and TI81xx devices in QNX codebase
This is to address SDOCM00101830.
Signed-off-by: VW <vwan@ti.com>
This is to address SDOCM00101830.
Signed-off-by: VW <vwan@ti.com>
Linux: Update autotools to require KERNEL path
The IPC Linx-side build now requires KERNEL path to be set to
build all libraries and test applications redardless of platform.
This change is needed since rpmsg has been made Linux kernel version
aware.
(cherry picked from commit ffd46a7143ff4e25ea14085b44ff5105c9912769)
Conflicts:
linux/src/tests/Makefile.am
linux/src/tests/Makefile.in
products.mak
The IPC Linx-side build now requires KERNEL path to be set to
build all libraries and test applications redardless of platform.
This change is needed since rpmsg has been made Linux kernel version
aware.
(cherry picked from commit ffd46a7143ff4e25ea14085b44ff5105c9912769)
Conflicts:
linux/src/tests/Makefile.am
linux/src/tests/Makefile.in
products.mak
Linux: Update user AF_RPMSG define for 3.9 kernel
IPC's Linux user space support contains a copy of a few
kernel-defined structs and definitions. This is necessary
because the kernel headers are not include-able by user space.
One of these values is the socket address family used for
rpmsg-based sockets - AF_RPMSG. This definition is always
'one more' than the last address family defined by the kernel's
socket.h.
Prior to Linux 3.9, this was aways 40. In Linux 3.9, a new
address family was introduced (AF_VSOCK), and as a result we
needed to set AF_RPMSG to 41. To enable this, the user space
header reflects on the kernel version and appropriately assigns
the value of AF_RPMSG.
Note that in addition to adding 3.9+ support, this commit also
cleans up some dead code.
IPC's Linux user space support contains a copy of a few
kernel-defined structs and definitions. This is necessary
because the kernel headers are not include-able by user space.
One of these values is the socket address family used for
rpmsg-based sockets - AF_RPMSG. This definition is always
'one more' than the last address family defined by the kernel's
socket.h.
Prior to Linux 3.9, this was aways 40. In Linux 3.9, a new
address family was introduced (AF_VSOCK), and as a result we
needed to set AF_RPMSG to 41. To enable this, the user space
header reflects on the kernel version and appropriately assigns
the value of AF_RPMSG.
Note that in addition to adding 3.9+ support, this commit also
cleans up some dead code.
Release the OMAP5 DSP MMU from reset after loading the core
This patch reverts the behavior from a previous patch that moved the MMU release
to be done prior to the load. It was causing the IPC resource manager to crash when
reloading the Tesla multiple times.
Signed-off-by: VW <vwan@ti.com>
This patch reverts the behavior from a previous patch that moved the MMU release
to be done prior to the load. It was causing the IPC resource manager to crash when
reloading the Tesla multiple times.
Signed-off-by: VW <vwan@ti.com>
List supported core ids for QNX IPC manager in help/use text.
Signed-off-by: VW <vwan@ti.com>
Signed-off-by: VW <vwan@ti.com>
SDOCM00104726 Fix RcmServer.c compile warning
The C28 is a 16-bit processor. I added a cast to promote the key
to a 32-bit value to give sufficient room for the shift operation.
This promotion was happening implicitly on 32-bit processors.
The C28 is a 16-bit processor. I added a cast to promote the key
to a 32-bit value to give sufficient room for the shift operation.
This promotion was happening implicitly on 32-bit processors.
Add support for loading to IPU internal memory on QNX OMAP5
Add static memory entry to inform loader of internal memory area on IPU.
Also remove some code that was overriding the static entries.
This addresses SDOCM00104907.
Signed-off-by: VW <vwan@ti.com>
Add static memory entry to inform loader of internal memory area on IPU.
Also remove some code that was overriding the static entries.
This addresses SDOCM00104907.
Signed-off-by: VW <vwan@ti.com>
Add support for loading to slaves' internal memory on QNX Vayu
Add static memory entry to inform loader of internal memory areas on DSP1 and IPU2.
This addresses SDOCM00104907.
Signed-off-by: VW <vwan@ti.com>
Add static memory entry to inform loader of internal memory areas on DSP1 and IPU2.
This addresses SDOCM00104907.
Signed-off-by: VW <vwan@ti.com>
SDOCM00099002 Make LibType_Debug build profile same as custom.
Merged updates in ti.sysbios.Build module into ti.ipc.sdo.Build.
Turn off package library builds when building IPC for product
release. Added ti.sdo.ipc.Build.libType config param. Added source
files to Pkg.otherFiles for source only release. Added package
debug library build support. Removed package ti.sdo.utils from
ti.sdo.ipc.Build file list, it builds separately now.
Merged updates in ti.sysbios.Build module into ti.ipc.sdo.Build.
Turn off package library builds when building IPC for product
release. Added ti.sdo.ipc.Build.libType config param. Added source
files to Pkg.otherFiles for source only release. Added package
debug library build support. Removed package ti.sdo.utils from
ti.sdo.ipc.Build file list, it builds separately now.
SDOCM00104913: Warnings when DRM_PREFIX not set
When DRM_PREFIX isn't set, the Linux test examples issue warnings of
unsafe cross-compilation. This is due to the Makefile setting include
paths based on a non-existent DRM_PREFIX path. The Makefile now
conditionally sets include paths when autotools config variables are
set.
When DRM_PREFIX isn't set, the Linux test examples issue warnings of
unsafe cross-compilation. This is due to the Makefile setting include
paths based on a non-existent DRM_PREFIX path. The Makefile now
conditionally sets include paths when autotools config variables are
set.
Linux: Autoconf script requires updating
The Linux Autoconf script had not been updated after previous changes
to the configure.ac file had been made.
The Linux Autoconf script had not been updated after previous changes
to the configure.ac file had been made.
Use size_t cast instead of fixed-length integer cast
When using fixed-length integer-based cast (unsigned int or unsigned long)
to or from a pointer type, errors/warnings are thrown from one compiler
or another, depending on the integer size vs. the pointer size. The
size_t type adjusts based on pointer size, so it allows a clean compile.
Also had to add a cast after existing cast, creating an ugly double-cast.
Signed-off-by: Robert Tivy <rtivy@ti.com>
When using fixed-length integer-based cast (unsigned int or unsigned long)
to or from a pointer type, errors/warnings are thrown from one compiler
or another, depending on the integer size vs. the pointer size. The
size_t type adjusts based on pointer size, so it allows a clean compile.
Also had to add a cast after existing cast, creating an ugly double-cast.
Signed-off-by: Robert Tivy <rtivy@ti.com>
Remove ducati trace thread in QNX
The ducati trace thread was deemed redundant wrt. the IPC trace daemon,
and was stealing early trace when the -g option is thrown due to a longer
delay between the time when the slave is started and when the thread is
created. Hence it has been removed. This patch also adjusts the trace buffer size
in GateMPApp to match up with its resource entry. This addresses SDOCM00103794.
Signed-off-by: VW <vwan@ti.com>
The ducati trace thread was deemed redundant wrt. the IPC trace daemon,
and was stealing early trace when the -g option is thrown due to a longer
delay between the time when the slave is started and when the thread is
created. Hence it has been removed. This patch also adjusts the trace buffer size
in GateMPApp to match up with its resource entry. This addresses SDOCM00103794.
Signed-off-by: VW <vwan@ti.com>
SDOCM00104689 Remove MultiProc_setBaseIdOfCluster API
This API never worked and the intended behavior is not supported.
This API never worked and the intended behavior is not supported.
Merge 3.10.02.13 into ipc-next
Modify MessageQApp and MessageQBench in QNX to match slave-side changes
The tests would fail due to previous changes in the messageq_single
server in how the Message Id was being assigned and used. Updated the
QNX-side test example to reflect these changes.
Signed-off-by: VW <vwan@ti.com>
The tests would fail due to previous changes in the messageq_single
server in how the Message Id was being assigned and used. Updated the
QNX-side test example to reflect these changes.
Signed-off-by: VW <vwan@ti.com>
Update message protocol between host and server.
The message protocol changed on the server side. Updated host
application to use the new protocol.
The message protocol changed on the server side. Updated host
application to use the new protocol.
Test: Modified MessageQBench due to server changes
The test would fail due to previous changes in the messageq_single
server in how the Message Id was being assigned and used. Updated the
Linux-side test example to reflect these changes. Performed some code
clean-up in the process.
The test would fail due to previous changes in the messageq_single
server in how the Message Id was being assigned and used. Updated the
Linux-side test example to reflect these changes. Performed some code
clean-up in the process.
Prevent MMU registers from becoming unreadable
This commit changes the DSP domain power state transition register
CM_DSP_CLKSTCTRL from forcing a wake-up transition on the domain (SW_WKUP),
to using automatic transitions (HW_AUTO). This prevents the MMU registers from
becoming unreadable after repeatedly pulling the MMU out of reset and putting
it back into reset.
Signed-off-by: VW <vwan@ti.com>
This commit changes the DSP domain power state transition register
CM_DSP_CLKSTCTRL from forcing a wake-up transition on the domain (SW_WKUP),
to using automatic transitions (HW_AUTO). This prevents the MMU registers from
becoming unreadable after repeatedly pulling the MMU out of reset and putting
it back into reset.
Signed-off-by: VW <vwan@ti.com>
QNX IPC: OMAP5 - Enable DSP-MMU Fault Recovery
Add the DSP MMU interrupt to listen for DSP-MMU faults.
Also fix a bug where the shm_phys_addr_dsp was not being
properly reset to 0, resulting in recovery failing to
happen properly.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
Signed-off-by: VW <vwan@ti.com>
Add the DSP MMU interrupt to listen for DSP-MMU faults.
Also fix a bug where the shm_phys_addr_dsp was not being
properly reset to 0, resulting in recovery failing to
happen properly.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
Signed-off-by: VW <vwan@ti.com>
change 'swiPriority' to module config param
Setting 'swiPriority' had no effect because it was an instance parameter
and the swi is created internally by IpcMgr. Change 'swiPriority' to be
a module config parameter. This allows users to change the priority of
the swi thread which created in their configuration script.
Setting 'swiPriority' had no effect because it was an instance parameter
and the swi is created internally by IpcMgr. Change 'swiPriority' to be
a module config parameter. This allows users to change the priority of
the swi thread which created in their configuration script.
SDOCM00104757 Fixed VirtQueue notification race condition
Enable notification before checking message pool. This might
result in an unnecessary notification but this is benign. Disable
notification as before (when new message has been acquired).
Enable notification before checking message pool. This might
result in an unnecessary notification but this is benign. Disable
notification as before (when new message has been acquired).
SDOCM00103636: ping_rpmsg OMAP5 test broken
The OMAP5 and DRA7XX Linux kernels require slave-side code to
use RPMSG_NS_2_0-compatible calls to NameMap_register(). When
moving to the XDC-provided ti.platforms.sdp5430 platform, the
check for which platforms need to throw -DRPMSG_NS_2_0 broke.
As a result, the ping_rpmsg test, specifically for OMAP5, was
building incorrectly.
The OMAP5 and DRA7XX Linux kernels require slave-side code to
use RPMSG_NS_2_0-compatible calls to NameMap_register(). When
moving to the XDC-provided ti.platforms.sdp5430 platform, the
check for which platforms need to throw -DRPMSG_NS_2_0 broke.
As a result, the ping_rpmsg test, specifically for OMAP5, was
building incorrectly.
Examples: Added ping_tasks to talk w/ Linux app
A slave-side ping_tasks example was added that interfaces with the
Linux kernel's rpmsg_client_sample. This example demonstrates how to
leverage the Linux kernel's rpmsg driver to communicate directly to
the slave-side BIOS RPMessage interface.
A slave-side ping_tasks example was added that interfaces with the
Linux kernel's rpmsg_client_sample. This example demonstrates how to
leverage the Linux kernel's rpmsg driver to communicate directly to
the slave-side BIOS RPMessage interface.
Examples: Modify BIOS ping_rpmsg with dynamic Tasks
The ping_rpmsg test example has be modified to create it's Task
dynamically. This is in anticipation of upcoming examples that will
reuse the ping_rpmsg configuration on the BIOS-side(slaves).
The ping_rpmsg test example has be modified to create it's Task
dynamically. This is in anticipation of upcoming examples that will
reuse the ping_rpmsg configuration on the BIOS-side(slaves).
Fix TCI6636 platform typo in comment
Minor comment change to fix TCI6636 platform variable name.
Minor comment change to fix TCI6636 platform variable name.
OMAP5: Fix test build of nameserverapp
When moving scripts from ti/configs/omap5 into ti/ipc/tests,
some scripts were renamed (to avoid conflicts with ti/configs/vayu
scripts of the same name). One of the renames was missed in
nameserverapp.cfg.
Ideally this would have been included in
3cb709f6d6ebbf62b5d2ac25c9fb9f84ab2a8a1a. Oh, well.
When moving scripts from ti/configs/omap5 into ti/ipc/tests,
some scripts were renamed (to avoid conflicts with ti/configs/vayu
scripts of the same name). One of the renames was missed in
nameserverapp.cfg.
Ideally this would have been included in
3cb709f6d6ebbf62b5d2ac25c9fb9f84ab2a8a1a. Oh, well.
Merge tag '3.10.02.12_eng' into ipc-next
Mask off signals before creating thread pool in QNX resource manager
This commit ensures that SIGTERM is caught by the main thread by masking off signal
handling in the other threads of the thread pool. This allows the IPC resource
manager to terminate correctly after MessageQ is used (SDOCM00102268).
Signed-off-by: VW <vwan@ti.com>
This commit ensures that SIGTERM is caught by the main thread by masking off signal
handling in the other threads of the thread pool. This allows the IPC resource
manager to terminate correctly after MessageQ is used (SDOCM00102268).
Signed-off-by: VW <vwan@ti.com>
Modified MessageQApp and messageq_single to support > 65K messages.
The test would fail when sending more then 65K messages because the
message id was only 16 bits wide. Moved message id from header into
message payload and made it 32 bits wide. Cleaned up loop to be one
based (instead of 0-based). Turned off slave side prints.
The test would fail when sending more then 65K messages because the
message id was only 16 bits wide. Moved message id from header into
message payload and made it 32 bits wide. Cleaned up loop to be one
based (instead of 0-based). Turned off slave side prints.
SDOCM00104583 RPMessage crash after 65k messages
The semaphore was posted for every message added to the pool.
Added VRING_USED_F_NO_NOTIFY flag to only post semaphore when
needed. Moved clearing of flag to avoid race condition with
remote processor. Also changed the semaphore from counting
mode to binary mode.
The semaphore was posted for every message added to the pool.
Added VRING_USED_F_NO_NOTIFY flag to only post semaphore when
needed. Moved clearing of flag to avoid race condition with
remote processor. Also changed the semaphore from counting
mode to binary mode.
Examples: Move ti.configs.vayu into tests
ti.configs.vayu was a convenience package for reusable config
snippets for IPC tests. To reinforce this, and discourage outside
use of these snippets, this commit moves the content into the test
package and deletes the ti.configs.vayu package.
ti.configs.vayu was a convenience package for reusable config
snippets for IPC tests. To reinforce this, and discourage outside
use of these snippets, this commit moves the content into the test
package and deletes the ti.configs.vayu package.
Examples: Move ti.configs.omap54xx into tests
ti.configs.omap54xx was a convenience package for reusable config
snippets for IPC tests. To reinforce this, and discourage outside
use of these snippets, this commit moves the content into the test
package and deletes the ti.configs.omap54xx package.
ti.configs.omap54xx was a convenience package for reusable config
snippets for IPC tests. To reinforce this, and discourage outside
use of these snippets, this commit moves the content into the test
package and deletes the ti.configs.omap54xx package.
SDOCM00104194 Missing vayu package dependencies
In close() function, bring in ISA specific module using the
program's target ISA chain. Look for oldest ISA which is
supported by device processor.
In close() function, bring in ISA specific module using the
program's target ISA chain. Look for oldest ISA which is
supported by device processor.
Create a separate BIOS configuration file for NameServerApp
This commit decouples the configuration of NameServerApp from the MessageQ
tests. This is done because NameServerApp does not use MessageQ, and can
use a simpler configuration.
Signed-off-by: VW <vwan@ti.com>
This commit decouples the configuration of NameServerApp from the MessageQ
tests. This is done because NameServerApp does not use MessageQ, and can
use a simpler configuration.
Signed-off-by: VW <vwan@ti.com>
Linux: Update autotools to require KERNEL path
The IPC Linx-side build now requires KERNEL path to be set to
build all libraries and test applications redardless of platform.
This change is needed since rpmsg has been made Linux kernel version
aware.
The IPC Linx-side build now requires KERNEL path to be set to
build all libraries and test applications redardless of platform.
This change is needed since rpmsg has been made Linux kernel version
aware.
Linux: Update user AF_RPMSG define for 3.9 kernel
IPC's Linux user space support contains a copy of a few
kernel-defined structs and definitions. This is necessary
because the kernel headers are not include-able by user space.
One of these values is the socket address family used for
rpmsg-based sockets - AF_RPMSG. This definition is always
'one more' than the last address family defined by the kernel's
socket.h.
Prior to Linux 3.9, this was aways 40. In Linux 3.9, a new
address family was introduced (AF_VSOCK), and as a result we
needed to set AF_RPMSG to 41. To enable this, the user space
header reflects on the kernel version and appropriately assigns
the value of AF_RPMSG.
Note that in addition to adding 3.9+ support, this commit also
cleans up some dead code.
IPC's Linux user space support contains a copy of a few
kernel-defined structs and definitions. This is necessary
because the kernel headers are not include-able by user space.
One of these values is the socket address family used for
rpmsg-based sockets - AF_RPMSG. This definition is always
'one more' than the last address family defined by the kernel's
socket.h.
Prior to Linux 3.9, this was aways 40. In Linux 3.9, a new
address family was introduced (AF_VSOCK), and as a result we
needed to set AF_RPMSG to 41. To enable this, the user space
header reflects on the kernel version and appropriately assigns
the value of AF_RPMSG.
Note that in addition to adding 3.9+ support, this commit also
cleans up some dead code.
Build: Align products.mak variables across OS's
The make variable to indicate a platform is now consistent
between BIOS, QNX and Linux, and only needs to be set once.
Note that this is a compatibility break for consumers (e.g. SDKs)
which automate the consumption/build of IPC. This is consciously
being introduced in a new Major.minor release (3.20) to keep
from breaking 3.00 and 3.10 users.
This resolves SDOCM00103415.
The make variable to indicate a platform is now consistent
between BIOS, QNX and Linux, and only needs to be set once.
Note that this is a compatibility break for consumers (e.g. SDKs)
which automate the consumption/build of IPC. This is consciously
being introduced in a new Major.minor release (3.20) to keep
from breaking 3.00 and 3.10 users.
This resolves SDOCM00103415.
Remove BIOS-side rpmsg trace for NameServerApp and MessageQ tests
Signed-off-by: VW <vwan@ti.com>
Signed-off-by: VW <vwan@ti.com>
Remove static allocation of IPU_MEM_IOBUFS memory in OMAP5 QNX
This commit removes unnecessary static memory allocation for
IPU_MEM_IOBUFS in the IPC resource manager on OMAP5 (SDOCM00104300)
Signed-off-by: VW <vwan@ti.com>
This commit removes unnecessary static memory allocation for
IPU_MEM_IOBUFS in the IPC resource manager on OMAP5 (SDOCM00104300)
Signed-off-by: VW <vwan@ti.com>
GateMP: typo fixes
Resolve a few typos in the GateMP.xdc file. One notable
change is that an Assert message was corrected. While this
should be merely a cosmetic change, end users experiencing the
assert will see a change in the message.
Resolve a few typos in the GateMP.xdc file. One notable
change is that an Assert message was corrected. While this
should be merely a cosmetic change, end users experiencing the
assert will see a change in the message.
OMAP5: Provide default Notify delegate
The default Notify delegate for OMAP5 is NotifySetupNull. This
satisfies the most common use case of the A15 running an HLOS,
and the slave cores not communicating with each other.
This addresses SDOCM00103112.
The default Notify delegate for OMAP5 is NotifySetupNull. This
satisfies the most common use case of the A15 running an HLOS,
and the slave cores not communicating with each other.
This addresses SDOCM00103112.
Removed unnecessary cast in parameter assignment.
QNX IPC: RscTable - Use MAP_NOINIT Flag to Allocate Mem
The QNX IPC dynamically allocates memory for the remote
core sections based on the resource table. These sections
are allocated using an mmap call and can be quite large.
There is a performance improvement if the allocated
memory is not zero-initialized during allocation with
mmap. It may be desireable to trade off zero-initialization
of the memory for the performance improvement, so to
enable the memory to not be zero-initialized, the MAP_NOINIT
flag is added to the flags in the mmap call.
It is important to note that the MAP_NOINIT flag will only
relax the zero-init requirement if the memory being mapped
was previously freed using UNMAP_INIT_OPTIONAL. This is
considered set for any memory that hasn't been allocated before,
so can help with boot-up time. Also, The default behavior of munmap
is to not have this flag set. However, if the "-m~i" option is
used on the procnto command line, the default behavior of
munmap is changed to act like UNMAP_INIT_OPTIONAL is set.
So, this change will only gurantee the zero-init to be relaxed if the
additional change is made to use the "-m~i" option.
To be safe, this patch also explicitly zero-initializes the
vring memory after allocation, so that even if the zero-init
requirement is relaxed, the vring memory will be zero-ed.
Also, a flag named "ZEROINIT_CHUNKS" is added in the file, and
set to 0 by default. If it is desired to restore the behavior of
zero-initialization of the chunks, this can be set to 1, and
the QNX IPC rebuilt.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
The QNX IPC dynamically allocates memory for the remote
core sections based on the resource table. These sections
are allocated using an mmap call and can be quite large.
There is a performance improvement if the allocated
memory is not zero-initialized during allocation with
mmap. It may be desireable to trade off zero-initialization
of the memory for the performance improvement, so to
enable the memory to not be zero-initialized, the MAP_NOINIT
flag is added to the flags in the mmap call.
It is important to note that the MAP_NOINIT flag will only
relax the zero-init requirement if the memory being mapped
was previously freed using UNMAP_INIT_OPTIONAL. This is
considered set for any memory that hasn't been allocated before,
so can help with boot-up time. Also, The default behavior of munmap
is to not have this flag set. However, if the "-m~i" option is
used on the procnto command line, the default behavior of
munmap is changed to act like UNMAP_INIT_OPTIONAL is set.
So, this change will only gurantee the zero-init to be relaxed if the
additional change is made to use the "-m~i" option.
To be safe, this patch also explicitly zero-initializes the
vring memory after allocation, so that even if the zero-init
requirement is relaxed, the vring memory will be zero-ed.
Also, a flag named "ZEROINIT_CHUNKS" is added in the file, and
set to 0 by default. If it is desired to restore the behavior of
zero-initialization of the chunks, this can be set to 1, and
the QNX IPC rebuilt.
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
OMAP5: resource table dead code cleanup
Removed dead "#ifdef OMAP5" code chunks from two omap5-specific
files. These files are already OMAP5-specific, they don't support
any other devices.
Removed dead "#ifdef OMAP5" code chunks from two omap5-specific
files. These files are already OMAP5-specific, they don't support
any other devices.
Android: Added build support for ping_rpmsg app
Add headers and libs to QNX 'make install' (part 2)
Export MessageQ-related headers and libs for QNX. Also clean
up exported files in general to remove headers that are not needed.
This commit adds an additional file to a previous commit that
addressed SDOCM00102141.
Export MessageQ-related headers and libs for QNX. Also clean
up exported files in general to remove headers that are not needed.
This commit adds an additional file to a previous commit that
addressed SDOCM00102141.
Merge recent 3.00 changes into 3.10
SDOCM00104043 MessageQ_open() returns not found
Concurrency issues in NameServerRemoteNotify caused message corruption
which resulted in keys not being found. Fixed by moving state variables
from message to object state and by splitting existing swi into two
separate ones, one for request and one for response. Updated ROV.
Concurrency issues in NameServerRemoteNotify caused message corruption
which resulted in keys not being found. Fixed by moving state variables
from message to object state and by splitting existing swi into two
separate ones, one for request and one for response. Updated ROV.
Fix wrong usage description of resource manager (SDOCM00103947)
This patch updates the description that appears when calling 'use ipc'.
It also removes the command line options -f and -d that are obsolete,
and updates the error messages that comes up when wrong arguments
are passed, to guide people towards correct usage.
Signed-off-by: VW <vwan@ti.com>
This patch updates the description that appears when calling 'use ipc'.
It also removes the command line options -f and -d that are obsolete,
and updates the error messages that comes up when wrong arguments
are passed, to guide people towards correct usage.
Signed-off-by: VW <vwan@ti.com>
Add defaultErrFxn and an err fxn to module state
Update TransportCirc_setErrFxn to set the module errFxn at runtime.
Create a default Error Fxn which does nothing for TransportCirc.
If an error fxn is not specified it will be set to the default.
Update TransportCirc_setErrFxn to set the module errFxn at runtime.
Create a default Error Fxn which does nothing for TransportCirc.
If an error fxn is not specified it will be set to the default.
SDOCM00103043:Resolve Concerto IPC stress test failures
SDOCM00103935:Update to work with different cluster base id
SDOCM00103934:allow Swi priority to be configurable
Android: Added support for MessageQ
Support for MessageQ and related application(LAD) was added for Android.
Android specific build files have been created/modified to build all
user-side libraries (libmmrpc, libtiipc, libtiutils) and applications
from within the Android filesystem. This include test apps (MesssageQ*).
A few changes were also needed by the common source files that
are shared across Linux and Android builds.
Support for MessageQ and related application(LAD) was added for Android.
Android specific build files have been created/modified to build all
user-side libraries (libmmrpc, libtiipc, libtiutils) and applications
from within the Android filesystem. This include test apps (MesssageQ*).
A few changes were also needed by the common source files that
are shared across Linux and Android builds.
Linux: Removed circular dependencies from ipc libs
The circular dependencies between libtiipc and libtiipcutils has
been removed by moving the assignment of the user side application's
MultiProc config structure to the libtiipcutils library via a new
function (_MultiProc_initCfg).
This also forces the creation of a LAD specific libtiipcutils library
(libtiipcutils_lad), which the daemon needs to link against.
The circular dependencies between libtiipc and libtiipcutils has
been removed by moving the assignment of the user side application's
MultiProc config structure to the libtiipcutils library via a new
function (_MultiProc_initCfg).
This also forces the creation of a LAD specific libtiipcutils library
(libtiipcutils_lad), which the daemon needs to link against.
Test: Add autotools-generated Makefile.in
This is the second half of the Makefile.am changes in
47557586d086d61d2c361796388a61598563b413. That commit changed
Makefile.am, this commit is the associated, generated Makefile.am.
This is the second half of the Makefile.am changes in
47557586d086d61d2c361796388a61598563b413. That commit changed
Makefile.am, this commit is the associated, generated Makefile.am.
Implement reference counting in NameServer_create/delete (SDOCM00103730)
Add headers and libs to QNX 'make install'
Export MessageQ-related headers and libs for QNX. Also clean
up exported files in general to remove headers that are not needed.
This addresses SDOCM00102141.
Export MessageQ-related headers and libs for QNX. Also clean
up exported files in general to remove headers that are not needed.
This addresses SDOCM00102141.
New unit test for MessageQ delivery.
This test validates SDOCM00103664 MessageQ_get() can discard
msgs when a msg is available from more than one remote core.
This test validates SDOCM00103664 MessageQ_get() can discard
msgs when a msg is available from more than one remote core.
Android.mk: remove HEAPTRACK library dependency
BUILD_HEAPTRACKED_SHARED_LIBRARY is a local define
in hardware/ti/omap4xxx. using this build macro inside
ipc component, unnecessarily creates build dependency with
omap4xx path. And this heaptrack feature is not required
for ipc. Hence removed the HEAPTRACK option.
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
BUILD_HEAPTRACKED_SHARED_LIBRARY is a local define
in hardware/ti/omap4xxx. using this build macro inside
ipc component, unnecessarily creates build dependency with
omap4xx path. And this heaptrack feature is not required
for ipc. Hence removed the HEAPTRACK option.
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
Build: Enable builds without SMP support
Some customers (including the TI RTOS SDK) do not use SMP
BIOS and therefore don't require the libraries. To improve
build times and reduce the disk size for these users, a
new variable, BIOS_SMPENABLED, was created in products.mak.
Its default value is 1 (enabled), which maintains the
behavior of previous releases. Setting it to 0 disables
the build of SMP-enabled libraries.
Note that some platforms require SMP libraries to be built,
otherwise their test executables may fail to build.
This resolves SDOCM00103413.
Some customers (including the TI RTOS SDK) do not use SMP
BIOS and therefore don't require the libraries. To improve
build times and reduce the disk size for these users, a
new variable, BIOS_SMPENABLED, was created in products.mak.
Its default value is 1 (enabled), which maintains the
behavior of previous releases. Setting it to 0 disables
the build of SMP-enabled libraries.
Note that some platforms require SMP libraries to be built,
otherwise their test executables may fail to build.
This resolves SDOCM00103413.