diff options
Diffstat (limited to 'Documentation/nommu-mmap.txt')
-rw-r--r-- | Documentation/nommu-mmap.txt | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/Documentation/nommu-mmap.txt b/Documentation/nommu-mmap.txt index 7714f57caad5..b565e8279d13 100644 --- a/Documentation/nommu-mmap.txt +++ b/Documentation/nommu-mmap.txt | |||
@@ -109,12 +109,18 @@ and it's also much more restricted in the latter case: | |||
109 | FURTHER NOTES ON NO-MMU MMAP | 109 | FURTHER NOTES ON NO-MMU MMAP |
110 | ============================ | 110 | ============================ |
111 | 111 | ||
112 | (*) A request for a private mapping of less than a page in size may not return | 112 | (*) A request for a private mapping of a file may return a buffer that is not |
113 | a page-aligned buffer. This is because the kernel calls kmalloc() to | 113 | page-aligned. This is because XIP may take place, and the data may not be |
114 | allocate the buffer, not get_free_page(). | 114 | paged aligned in the backing store. |
115 | 115 | ||
116 | (*) A list of all the mappings on the system is visible through /proc/maps in | 116 | (*) A request for an anonymous mapping will always be page aligned. If |
117 | no-MMU mode. | 117 | possible the size of the request should be a power of two otherwise some |
118 | of the space may be wasted as the kernel must allocate a power-of-2 | ||
119 | granule but will only discard the excess if appropriately configured as | ||
120 | this has an effect on fragmentation. | ||
121 | |||
122 | (*) A list of all the private copy and anonymous mappings on the system is | ||
123 | visible through /proc/maps in no-MMU mode. | ||
118 | 124 | ||
119 | (*) A list of all the mappings in use by a process is visible through | 125 | (*) A list of all the mappings in use by a process is visible through |
120 | /proc/<pid>/maps in no-MMU mode. | 126 | /proc/<pid>/maps in no-MMU mode. |
@@ -242,3 +248,18 @@ PROVIDING SHAREABLE BLOCK DEVICE SUPPORT | |||
242 | Provision of shared mappings on block device files is exactly the same as for | 248 | Provision of shared mappings on block device files is exactly the same as for |
243 | character devices. If there isn't a real device underneath, then the driver | 249 | character devices. If there isn't a real device underneath, then the driver |
244 | should allocate sufficient contiguous memory to honour any supported mapping. | 250 | should allocate sufficient contiguous memory to honour any supported mapping. |
251 | |||
252 | |||
253 | ================================= | ||
254 | ADJUSTING PAGE TRIMMING BEHAVIOUR | ||
255 | ================================= | ||
256 | |||
257 | NOMMU mmap automatically rounds up to the nearest power-of-2 number of pages | ||
258 | when performing an allocation. This can have adverse effects on memory | ||
259 | fragmentation, and as such, is left configurable. The default behaviour is to | ||
260 | aggressively trim allocations and discard any excess pages back in to the page | ||
261 | allocator. In order to retain finer-grained control over fragmentation, this | ||
262 | behaviour can either be disabled completely, or bumped up to a higher page | ||
263 | watermark where trimming begins. | ||
264 | |||
265 | Page trimming behaviour is configurable via the sysctl `vm.nr_trim_pages'. | ||