aboutsummaryrefslogtreecommitdiffstats
path: root/README
diff options
context:
space:
mode:
authorThierry Reding2014-12-09 23:25:22 -0600
committerTom Warren2014-12-18 14:19:21 -0600
commit1dfdd9ba4e699562a3b282f4fb5efe4c80e6e8c7 (patch)
tree515aa28f47556e989774e9f4caa6d2a2ccdb61f6 /README
parent6e2fca94ff4f754024e46e7d986221a75be611f3 (diff)
downloadu-boot-1dfdd9ba4e699562a3b282f4fb5efe4c80e6e8c7.tar.gz
u-boot-1dfdd9ba4e699562a3b282f4fb5efe4c80e6e8c7.tar.xz
u-boot-1dfdd9ba4e699562a3b282f4fb5efe4c80e6e8c7.zip
ARM: Implement non-cached memory support
Implement an API that can be used by drivers to allocate memory from a pool that is mapped uncached. This is useful if drivers would otherwise need to do extensive cache maintenance (or explicitly maintaining the cache isn't safe). The API is protected using the new CONFIG_SYS_NONCACHED_MEMORY setting. Boards can set this to the size to be used for the non-cached area. The area will typically be right below the malloc() area, but architectures should take care of aligning the beginning and end of the area to honor any mapping restrictions. Architectures must also ensure that mappings established for this area do not overlap with the malloc() area (which should remain cached for improved performance). While the API is currently only implemented for ARM v7, it should be generic enough to allow other architectures to implement it as well. Signed-off-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Simon Glass <sjg@chromium.org> Signed-off-by: Tom Warren <twarren@nvidia.com>
Diffstat (limited to 'README')
-rw-r--r--README19
1 files changed, 19 insertions, 0 deletions
diff --git a/README b/README
index 4ca04d0489..5af345b086 100644
--- a/README
+++ b/README
@@ -4007,6 +4007,25 @@ Configuration Settings:
4007 boards which do not use the full malloc in SPL (which is 4007 boards which do not use the full malloc in SPL (which is
4008 enabled with CONFIG_SYS_SPL_MALLOC_START). 4008 enabled with CONFIG_SYS_SPL_MALLOC_START).
4009 4009
4010- CONFIG_SYS_NONCACHED_MEMORY:
4011 Size of non-cached memory area. This area of memory will be
4012 typically located right below the malloc() area and mapped
4013 uncached in the MMU. This is useful for drivers that would
4014 otherwise require a lot of explicit cache maintenance. For
4015 some drivers it's also impossible to properly maintain the
4016 cache. For example if the regions that need to be flushed
4017 are not a multiple of the cache-line size, *and* padding
4018 cannot be allocated between the regions to align them (i.e.
4019 if the HW requires a contiguous array of regions, and the
4020 size of each region is not cache-aligned), then a flush of
4021 one region may result in overwriting data that hardware has
4022 written to another region in the same cache-line. This can
4023 happen for example in network drivers where descriptors for
4024 buffers are typically smaller than the CPU cache-line (e.g.
4025 16 bytes vs. 32 or 64 bytes).
4026
4027 Non-cached memory is only supported on 32-bit ARM at present.
4028
4010- CONFIG_SYS_BOOTM_LEN: 4029- CONFIG_SYS_BOOTM_LEN:
4011 Normally compressed uImages are limited to an 4030 Normally compressed uImages are limited to an
4012 uncompressed size of 8 MBytes. If this is not enough, 4031 uncompressed size of 8 MBytes. If this is not enough,