Linux Utils 4.10.01.02 Release Notes
May 2015
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,
Documentation,
What's New,
Upgrade Info,
Compatibility Information,
Device Support,
Validation Info,
Known Issues,
Examples,
Version Information,
Technical Support.
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 C674 processor on a OMAP-L138 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 following documentation is available:
-
Linux Utils Application Programming Interface (API) Reference
Guide (HTML)
In addition, users are encouraged to monitor (and contribute to!) the
TI Wiki.
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
4.10.01.02
- The following defects were resolved:
- The following enhancements were resolved:
4.10.00.01
- The following defects were resolved:
ID |
Headline |
SDOCM00114691 |
CMEM needs to use mmap64 for Android Lollipop
|
SDOCM00114627 |
cmemk.c's mmap() method should use WRITEALLOC instead of WRITETHROUGH
|
SDOCM00114462 |
Fix CMEM's cache handling code
|
SDOCM00114626 |
Fix cmemk.c's treatment of get_phys() return value
|
- The following enhancements were resolved:
ID |
Headline |
SDOCM00114461 |
Add CMEM API that performs a full cache writeback/invalidate
|
SDOCM00114380 |
CMEM should support physical memory and pools being specified in the Linux Device Tree (DT)
|
4.00.03.14
- The following defects were resolved:
- The following enhancements were resolved:
4.00.02.11
- The following defects were resolved:
ID |
Headline |
SDOCM00105476 |
CMEM user library has debug hard-enabled
|
- The following enhancements were resolved:
ID |
Headline |
SDOCM00105598 |
CMEM: Support pool buffers larger than 2GB
|
SDOCM00105600 |
CMEM: Support 4 memory blocks (rather than 2) by default
|
4.00.01.08
- The following defects were resolved:
- The following enhancements were resolved:
ID |
Headline |
SDOCM00104237 |
CMEM: Enhance with ability to map and unmap allocated memory
|
4.00.00.06
- The following defects were resolved:
- The following enhancements were resolved:
ID |
Headline |
SDOCM00102189 |
Linux Utils product should be converted to utilize "autotools" to support release/install
|
SDOCM00102184 |
CMEM needs to be able to support physical addresses > 32 bits (for LPAE model)
|
SDOCM00102186 |
CMEM should allow a buffer to be allocated from the global CMA area
|
SDOCM00102187 |
CMEM should allow a buffer to be allocated from a CMEM-specificied CMA area
|
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 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 an SDK, this is often done by setting the
CMEM_INSTALL_DIR variable in a top-level makefile (e.g.
some SDK's include a Rules.make file ).
Note, if you're upgrading from a release earlier than Linux Utils 3.23.00.01,
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 CMEM APIs in this release are mostly compatible with previous
releases, though there are some new features (e.g. allocation from
CMA).
Note that some APIs previously provided in Linux Utils 3.x have been removed.
If migrating from a release prior to Linux Utils 3.23.00.01, consult previous
releases available in the relnotes_archive directory.
This release officially supports the following devices, though others
with similar Linux kernel support will likely work as well:
This release was validated on the following devices:
None.
Linux Utils example apps and tests are provided in the
*/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_4_10_01_02.
Subsequent releases of patch upgrades will be identified by the patch
number, e.g. Linux Utils 4.00.01.XX with directory linuxutils_4_00_01_XX.
Typically, these patches only include critical bug fixes.
For technical support, use the community forum
TI E2E Community.
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 21, 2015