Linux Utils 3.23.00.01 Release Notes
May 2012
This Linux Utils Release is targetted for the various DaVinci- and OMAP-based
platforms running Linux, but is generally usable for any Linux-based system.
Introduction,
CMEM,
SDMA,
Documentation,
What's New,
Upgrade Info,
Compatibility Information,
Device Support,
Validation Info,
Known Issues,
Examples,
Version Information,
Technical Support.
The Linux Utils utility package provides the ability for user-mode
applications to access the CMEM and SDMA utility libraries.
The CMEM (Contiguous Memory) utility library provides the ability for
user-mode applications to allocate and free blocks of physically contiguous
memory. This is typically done to manage multimedia data buffers which
will be worked on by multimedia algorithms, but the memory provided by this
library can be used for any purpose.
The reason multimedia algorithms often require physically contiguous
memory is that sometimes they're on another processor which may not
contain an MMU (e.g. the C64P processor on a DM644x device), and/or
Linux-based algorithms utilize hardware accelerators (e.g. DMA, image
co-processors, etc) which don't access memory through an MMU.
The CMEM module consists of the following packages:
- ti.sdo.linuxutils.cmem - The CMEM user-mode library and
kernel mode driver.
The CMEM module supports the following devices:
- all supported platforms for this release
SDMA refers to the "System DMA" incorporated on the OMAP35x family of devices.
The SDMA utility library provides the ability for user-mode
applications to request SDMA channels and operate on a channel using direct,
memory-mapped access to the channel's DMA registers (Framework Components
contains a layer named SCPY to manage this direct access). It also provides
"blocking" support for waiting for the completion of a transfer on a
particular channel.
Performing direct DMA register access helps to alleviate the overhead of
initiating, and checking completion of, DMA transfers, since the usual method
involves calling down into the Linux kernel somehow. Transfer completion
checking is achieved by first querying an application status flag, and only
when it is known that the transfer is NOT complete will a blocking kernel
module call be made.
The SDMA module consists of the following packages:
- ti.sdo.linuxutils.sdma - The SDMA user-mode library and
kernel mode driver.
The SDMA module supports the following devices:
The following documentation is available:
-
Linux Utils Application Programming Interface (API) Reference
Guide (HTML |
CHM)
- A description of all the packages
in this product.
Release notes from previous releases are also available in the relnotes_archive directory.
The following significant changes have been made since Linux Utils 2.00
3.23.00.01
- The following defects were resolved:
ID |
Headline |
SDOCM00087603 |
Linux Utils CMEM package doesn't automatically build cmemk.ko kernel module
|
- The following enhancements were resolved:
ID |
Headline |
SDOCM00092595 |
Remove Android support
|
3.22.00.02
- The following defects were resolved:
ID |
Headline |
SDOCM00087225 |
CMEM kernel module build has undefined symbol "arm926_dma_map_area" for OMAP-L138 & DM365 builds
|
- The following enhancements were resolved:
ID |
Headline |
SDOCM00087322 |
Create separate glibc and uclibc build goals for CMEM
|
SDOCM00087321 |
Android support needed for Linux Utils CMEM
|
3.21.00.04
- The following defects were resolved:
ID |
Headline |
SDOCM00081998 |
CMEMK bug causes kernel Oops during insmod for "debug" build
|
SDOCM00082132 |
Linux Utils CMEM_getBlockAttrs() API doesn't return error when blockId is out-of-bouds
|
SDOCM00082129 |
non-LSP 2.10 code in Linux Utils edmak.c should be qualified with #ifndef LSP_210
|
- The following enhancements were resolved:
ID |
Headline |
SDOCM00082136 |
Need to update Linux Utils sdmak module to conform to newer unlocked_ioctl interface and remove old, deprecated mutex
|
3.00.00.00
- The following defects were resolved:
ID |
Headline |
SDOCM00068571 |
CMEM kernel module doesn't handle CMEM_cacheInv()/CMEM_cacheWb()/CMEM_cacheWbInv() properly
|
SDOCM00066798 |
CMEM needs to cache-invalidate heap block during "free" operation for cached allocations
|
- The following enhancements were resolved:
ID |
Headline |
SDOCM00072211 |
CMEM should allow config for fallback to a heap allocation if a pool-based allocation can't be achieved
|
2.26.03.06
- The following defects were resolved:
ID |
Headline |
SDOCM00087222 |
CMEM kernel module build has undefined symbol "arm926_dma_map_area" for OMAP-L138 & DM365 builds
|
- The following enhancements were resolved:
2.26.02.05
- The following defects were resolved:
ID |
Headline |
SDOCM00066507 |
Linux Utils CMEM_getBlockAttrs() API doesn't return error when blockId is out-of-bouds
|
SDOCM00073843 |
non-LSP 2.10 code in Linux Utils edmak.c should be qualified with #ifndef LSP_210
|
SDOCM00079115 |
CMEMK bug causes kernel Oops during insmod for "debug" build
|
- The following enhancements were resolved:
ID |
Headline |
SDOCM00081489 |
Need to update Linux Utils sdmak module to conform to newer unlocked_ioctl interface and remove old, deprecated mutex
|
2.26.01.02
- The following defects were resolved:
ID |
Headline |
SDOCM00076769 |
Linux Utils kernel modules need modifications to conform to Linux kernel v2.6.37
|
- The following enhancements were resolved:
2.26.00.01
- The following defects were resolved:
ID |
Headline |
SDOCM00075810 |
Linux Utils kernel modules need to use 'unlocked_ioctl' member of file_operations struct (instead of 'ioctl' member)
|
- The following enhancements were resolved:
2.25.05.11
- The following defects were resolved:
ID |
Headline |
SDOCM00072689 |
CMEM's kernel module "heap fallback" feature (useHeapIfPoolUnavailable=1) has a few bugs
|
- The following enhancements were resolved:
2.25.04.10
- The following defects were resolved:
ID |
Headline |
SDOCM00071596 |
CMEM still has one more place where it uses older pre-2.6.34 Linux kernel cache calls
|
- The following enhancements were resolved:
2.25.03.09
- The following defects were resolved:
ID |
Headline |
SDOCM00071493 |
Linux kernel APIs called by CMEM cache flush/clean/invalidate APIs no longer available in Linux versions 2.6.34+
|
- The following enhancements were resolved:
ID |
Headline |
SDOCM00071207 |
CMEM should allow config for fallback to a heap allocation if a pool-based allocation can't be achieved
|
2.25.02.08
- The following defects were resolved:
ID |
Headline |
SDOCM00065084 |
LinuxUtils kernel modules CMEMK and IRQK need to set file_operations struct .owner field for correct reference counting
|
SDOCM00067560 |
CMEM kernel module doesn't handle CMEM_cacheInv()/CMEM_cacheWb()/CMEM_cacheWbInv() properly
|
SDOCM00066794 |
CMEM needs to cache-invalidate heap block during "free" operation for cached allocations
|
- The following enhancements were resolved:
ID |
Headline |
SDOCM00065628 |
Update LinuxUtils EDMA module to handle newly coded return value from edma_alloc_channel()
|
2.25.01.06
- The following defects were resolved:
ID |
Headline |
SDOCM00064125 |
LinuxUtils SDMAK kernel driver needs to base channel ownership on file struct instead of task struct
|
- The following enhancements were resolved:
2.25
- New features
- Device validation on OMAP-L138 and DM6467T
- General
-
While this release fixes a few bugs (see immediately below), the
biggest change is with the ioctl() command IDs - they have changed
to incorporate a module-specific "magic" code so as to not conflict
with other device driver ioctl() command IDs. This fact means that
it is critical that the user update the sub-module user libraries
in conjunction with their associated kernel modules, although a
mismatch between kernel module and user library will be reported
during the module's "init" function (and the "init" will fail).
- The following defects were resolved:
ID |
Headline |
SDOCM00062638 |
CMEM_registerAlloc() API bug with pool-based allocations
|
SDOCM00062704 |
LinuxUtils EDMA kernel module does not correctly auto-release resources in a multi-threaded application
|
- The following enhancements were resolved:
ID |
Headline |
SDOCM00061526 |
Need to remove "init_mm" reference from CMEM kernel module source code (cmemk.c)
|
2.24.03
- General
-
Added sharing capability to VICP/IRQK resources. This allows separate
processes to access the same resource simultaneously. For a given
process, or threads within a process, sharing is accomplished by
allowing mutliple "register" w/o any intervening "unregister".
- The following defects were resolved:
- The following enhancements were resolved:
ID |
Headline |
SDOCM00060312 |
Allow sharing of Linux Utils VICP resources
|
2.24.02
- General
-
Fixed problem in EDMA (see Headline immediately below in defects).
- The following defects were resolved:
ID |
Headline |
SDOCM00058845 |
EDMA module in Linux Utils should not allow partial freeing of a multi-PaRAM EDMA_getResource() allocation
|
- The following enhancements were resolved:
2.24.01
- General
-
CMEMK now tracks buffer ownership through the calling process' file
descriptor instead of the calling process' "task" descriptor.
- The following defects were resolved:
- The following enhancements were resolved:
ID |
Headline |
SDOCM00058042 |
CMEM should track buffer ownership through the file descriptor instead of the process descriptor
|
2.24
- General
- CMEMK can now be insmod'ed w/o any memory blocks
- The following defects were resolved:
ID |
Headline |
SDOCM00057541 |
Linux Utils IRQK module can crash kernel if an operation is requested on a resource that's already been released
|
SDOCM00057542 |
Linux Utils EDMAK module does not have mutex locks around registration list manipulation
|
- The following enhancements were resolved:
ID |
Headline |
SDOCM00056992 |
CMEM should allow no memory block to be specified, so it can be used just for cache operations and virt-to-phys translations
|
2.23.01
- General
- Added "banner" display to all kernel modules
- CMEM now registers its memory blocks with Linux kernel
- All kernel modules now support varied Linux 2.6.x versions
- Enhanced resource ownership for multiple owners (EDMAK and CMEMK>
- Added "close on exec" flag for all kernel modules' open() calls
- The following defects were resolved:
ID |
Headline |
SDOCM00056304 |
Linux Utils IRQK kernel module returns wrong value from irq handler function irqHandler()
|
- The following enhancements were resolved:
2.23
- General
- Fixed problem with never-ending "make clean" when issued in
ti/sdo/linuxutils/edma/apps
- Added OMAPL137 flavor of ti/sdo/linuxutils/cmem/apps/insmod_rmmod
shell script "insmod_rmmod_omapL137.sh"
- Validated on Linux 2.6.29 kernel
- Added "resource tracking" to CMEM and EDMA kernel modules, so that
unreleased resources get automatically released upon close() and
'rmmod'
- The following defects were resolved:
ID |
Headline |
SDOCM00054009 |
Linux Utils 2.22.01 does not "export" insmod_rmmod_omapL137.sh
|
- The following enhancements were resolved:
ID |
Headline |
SDOCM00045995 |
Validate Linux Utils on 2.6.27 kernel
|
SDOCM00046045 |
CMEM should track owner process of buffers and force-free owned buffers when process closes device file
|
SDOCM00055139 |
LinuxUtils edmak should release all resources if processes that have requested resources are no longer running
|
2.22
- General
- Modified IRQ module to conform to definitions in LSP 2.10
- Added "glibc" and "uclibc" goals in interface makefiles to better
facilitate building for individual toolchains
- The following enhancements were resolved:
ID |
Headline |
SDOCM00050455 |
Create a makefile variable called RULES_MAKE to point to Rules.make |
2.21
- General
- Added VICP module
- Added IRQ module
2.20
- General
- Added SDMA module
- Added EDMA module
- Added 2nd memory block support to CMEM
- The following defects were resolved:
ID |
Headline |
SDSCM00019164 |
Failure to insmod cmem results in misleading Codec Engine error
messages |
2.10
- General
- Added allowOverlap insmod command line argument
- Added CMEM_getBlock() for retrieving CMEM memory block bounds
- The following defects were resolved:
ID |
Headline |
SDSCM00019818 |
cat /proc/cmem needs more than one page of memory to avoid buffer
overflow
|
- The following enhancements were resolved:
ID |
Headline |
SDSCM00023295 |
CMEM needs insmod config parameter to support allowing kernel memory
& CMEM memory to overlap
|
2.00
- General
- Added cached buffer support
- Added heap-based allocation in addition to pool based allocation
- Added overlap detection for kernel memory and CMEM memory, as well
as an 'insmod' parameter for allowing this overlap
- Added support for building for DM355
- Modified licensing. The CMEM kernel driver is now licensed under
the GPL 2 license. The CMEM user-mode library is now licensed under
the LGPL 2 license.
- The following defects were resolved:
ID |
Headline |
SDSCM00019947 |
CMEM causes Linux kernel Oops when insufficient memory exists for
specified pools
|
- The following enhancements were resolved:
ID |
Headline |
SDSCM00018886 |
CMEM should allow an option not to partition its area into pools but
to use it for allocation of arbitrarily-sized buffers |
The Linux Utils packages are available in the "packages/"
subdirectory of the product. If you have a previous release of the
Linux Utils (or CMEM) product, you can install this release next to it, and
modify your application and/or server builds to use this newer release.
If you're using the DVEVM, this can be done by setting the
CMEM_INSTALL_DIR variable in the Rules.make file at the
top of the DVEVM distribution directory.
Compatibility Breaks!
None
Note, if you're upgrading from a release earlier than Linux Utils 3.00.00.00,
be sure to review the Upgrade section for each of the releases between
your current release and this one. Previous release notes are
available in the relnotes_archive directory.
The details provided below describe each package's compatibility with the
previous release.
Note, the Configuration Reference Guide contains
further details about each package.
-
ti.sdo.linuxutils.cmem - This package is compatible
with the previous release.
(Compatibility key: 2,2,0 -> 2,2,0)
-
ti.sdo.linuxutils.sdma - This package is compatible
with the previous release.
(Compatibility key: 1,0,0 -> 1,0,0)
If migrating from a release prior to Linux Utils 3.00.00.00, consult previous
releases available in the relnotes_archive directory.
Compatibility Key Definitions
Compatibility keys are intentionally independent of Marketing product
numbers and are intended to:
- Enable tooling to identify incompatibilities between components,
and
- Convey a level of compatibility between different releases to
set end user expectations.
Compatibility keys are composed of 3 comma-delimited numbers - M,S,R
- where:
- M = Major. A difference in M indicates a break in
compatibility.
- S = Source. A difference in S indicates source
compability. That is, the user's source doesn't require change, but
does require rebuilding.
- R = Radix. A difference in R indicates an introduction
of new features, but compatibility with previous interfaces has not
broken. If libraries are provided by the package, an application
must re-link with the new libraries, but not rebuild from source.
This release supports the following devices:
- OMAP-L138:
- running ARM9 Linux 2.6.37 from DaVinci-PSP-SDK-03.21.00.04 (earlier Linux also supported)
- TI814X EVM:
- running ARM9 Linux 2.6.37 from TI814X-LINUX-PSP-04.01.00.03 (earlier Linux also supported)
- TI816X EVM:
- running ARM9 Linux 2.6.37 from TI816X-LINUX-PSP-04.00.00.10 (earlier Linux also supported)
This release was validated against using the following components:
- XDC Tools 3.23.00.32
- Linux release 2.6.37
This release was validated in the following configurations:
- OMAP-L138:
- dual-processor configuration, running ARM9 Linux 2.6.37 from DaVinci-PSP-SDK-03.21.00.04
- TI814X EVM:
- dual-processor configuration, running ARM9 Linux 2.6.37 from TI814X-LINUX-PSP-04.01.00.03
- TI816X EVM:
- dual-processor configuration, running ARM9 Linux 2.6.37 from TI816X-LINUX-PSP-04.00.00.10
Linux Utils example apps and tests are provided in the
ti/sdo/linuxutils/*/apps directory.
This product's version follows a version format, M.mm.pp.bb,
where M is a single digit Major number, mm is 2 digit
minor number, pp is a 2 digit patch number, and b is an
unrestricted set of digits used as an incrementing build counter.
To support multiple side-by-side installations of the product, the
product version is encoded in the top level directory,
ex. linuxutils_3_23_00_01.
For technical support, contact softwaresupport@ti.com
Check the following web site for updates: https://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/linuxutils/index.html
Last updated: May 30, 2012