ecd32842283c64b14243be9b20b60f351aea1b5d |
|
08-Jul-2015 |
Vinil Cheeramvelil <vinil.cheeramvelil@intel.com> |
ion: Handle the memory mapping correctly on x86 This patch modifies the ion page pool code to address limitation in x86 PAT. When one physical page is mapped to multiple virtual pages, the same cache policy should be used. Add set_memory_wc/uc call to avoid aliases. If not, all mappings will be cached(write back). Change-Id: I98ee8902df0c80135dddfa998c4ca4c2bb44e40e Signed-off-by: Zhebin Jin <zhebin.jin@intel.com> Signed-off-by: Vinil Cheeramvelil <vinil.cheeramvelil@intel.com>
|
9089e98641f55e06fd28e7956214a41ba12bf6fb |
|
01-Nov-2014 |
Rhyland Klein <rklein@nvidia.com> |
UPSTREAM: Staging: android: ion: fix typos in comments s/comming/coming/ in drivers/staging/android/ion/ion.c s/specfic/specific/ in drivers/staging/android/ion/ion.h s/peformance/performance/ in drivers/staging/android/ion/ion_priv.h Signed-off-by: Tristan Lelong <tristan@lelong.xyz> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> (cherry picked from commit bc47e7d97666ad32993abe0ea924ffa81a8356e7) Change-Id: If2cb57073cec9311b93a0138a39a222ec9ccec30 Signed-off-by: Rhyland Klein <rklein@nvidia.com>
|
792407484a09b455064722c5190b45e1e1f2cecd |
|
28-May-2014 |
Heesub Shin <heesub.shin@samsung.com> |
staging: ion: tidy up a bit For aesthetics and readability, rename goto labels, remove useless code lines, and clarify function return type. Signed-off-by: Heesub Shin <heesub.shin@samsung.com> Reviewed-by: Mitchel Humpherys <mitchelh@codeaurora.org> Tested-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
10f62861b4a2f22cbd6412b3c42c76f0bdfbd648 |
|
30-Apr-2014 |
Seunghun Lee <waydi1@gmail.com> |
staging: android: fix missing a blank line after declarations This patch fixes "Missing a blank line after declarations" warnings. Signed-off-by: Seunghun Lee <waydi1@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
53a91c68fa7b5f3ca45d2f1c88bf36a988b74e81 |
|
17-Feb-2014 |
Mitchel Humpherys <mitchelh@codeaurora.org> |
staging: ion: Add private buffer flag to skip page pooling on free Currently, when we free a buffer it might actually just go back into a heap-specific page pool rather than going back to the system. This poses a problem because sometimes (like when we're running a shrinker in low memory conditions) we need to force the memory associated with the buffer to truly be relinquished to the system rather than just going back into a page pool. There isn't a use case for this flag by Ion clients, so make it a private flag. The main use case right now is to provide a mechanism for the deferred free code to force stale buffers to bypass page pooling. Cc: Colin Cross <ccross@android.com> Cc: Android Kernel Team <kernel-team@android.com> Signed-off-by: Mitchel Humpherys <mitchelh@codeaurora.org> [jstultz: Minor commit subject tweak] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
b9daf0b60b8a6a5151fca0e8cbb2dab763a3e92a |
|
17-Feb-2014 |
Colin Cross <ccross@android.com> |
staging: ion: Move shrinker out of heaps Every heap that uses deferred frees is going to need a shrinker to shrink the freelist under memory pressure. Rather than requiring each heap to implement a shrinker, automatically register a shrinker if the deferred free flag is set. The system heap also needs to shrink its page pools, so add a shrink function to the heap ops that will be called after shrinking the freelists. Cc: Colin Cross <ccross@android.com> Cc: Android Kernel Team <kernel-team@android.com> Signed-off-by: Colin Cross <ccross@android.com> [jstultz: Resolved big conflicts with the shrinker api change. Also minor commit subject tweak.] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
51108985272c6e1d087bde0822d65921e625f268 |
|
10-Feb-2014 |
Daeseok Youn <daeseok.youn@gmail.com> |
staging : ion : Fix some checkpatch warnings and an error Warning: - Unnecessary space after function pointer name - quoted string split across lines - fix alignment issues Error: - return is not a function, parentheses are not required Signed-off-by: Daeseok Youn <daeseok.youn@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
a33b2fc5a9a131eb0a82846f55d7775b28cb2fcb |
|
05-Feb-2014 |
John Stultz <john.stultz@linaro.org> |
staging: ion: Fix build warning Add #include <linux/device.h> to fix the following warning seen with gcc 4.7.3: In file included from drivers/staging/android/ion/ion_heap.c:26:0: drivers/staging/android/ion/ion_priv.h:358:21: warning: ‘struct device’ declared inside parameter list [enabled by default] drivers/staging/android/ion/ion_priv.h:358:21: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default] Cc: Colin Cross <ccross@android.com> Cc: Android Kernel Team <kernel-team@android.com> Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
6a72a700f44b2fa1b1d6f3529e5d492a4f71de49 |
|
18-Dec-2013 |
John Stultz <john.stultz@linaro.org> |
staging: ion: Avoid using rt_mutexes directly RT_MUTEXES can be configured out of the kernel, causing compile problems with ION. To quote Colin: "rt_mutexes were added with the deferred freeing feature. Heaps need to return zeroed memory to userspace, but zeroing the memory on every allocation was causing performance issues. We added a SCHED_IDLE thread to zero memory in the background after freeing, but locking the heap from the SCHED_IDLE thread might block a high priority allocation thread for a long time. The lock is only used to protect the heap's free_list and free_list_size members, and is not held for any long or sleeping operations. Converting to a spinlock should prevent priority inversion without using the rt_mutex. I'd also rename it to free_lock to so it doesn't get used as a general heap lock." Thus this patch converts the rt_mutex usage to a spinlock and renames the lock free_lock to be more clear as to its use. I also had to change a bit of logic in ion_heap_freelist_drain() to safely avoid list corruption. Acked-by: Colin Cross <ccross@android.com> Cc: Android Kernel Team <kernel-team@android.com> Reported-by: Jim Davis <jim.epost@gmail.com> Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
e1d855b02f5ac4c3a6cbeaa253958b2708826b9f |
|
14-Dec-2013 |
John Stultz <john.stultz@linaro.org> |
ion: Cleanup whitespace issues and other checkpatch problems Just some simple cleanups to address whitespace issues and other issues found w/ checkpatch. Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
df6cf5c8af54e3e89643511272f6f5f5cfb71a7d |
|
14-Dec-2013 |
Colin Cross <ccross@android.com> |
ion: add helper to zero contiguous region of pages Add ion_heap_pages_zero for ion heaps to use to zero pages during initialization or allocation, when a struct ion_buffer may not be available. Use it from the chunk heap and carveout heaps. Signed-off-by: Colin Cross <ccross@android.com> Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
a3056906bfb98d10618122bc2ba7d142a61fcaf1 |
|
14-Dec-2013 |
Colin Cross <ccross@android.com> |
ion: remove ion_heap_alloc_pages Now that ion_vm_fault doesn't need a struct page with a nonzero refcount, there is no need allocate heap memory for cached pages using split_page. Remove the ion_heap_alloc_pages and ion_heap_free_pages helpers in favor of direct calls to alloc_pages and __free_pages, and remove the special handling in the system heap. Signed-off-by: Colin Cross <ccross@android.com> Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
e946b209c2ed15b1f7917def8fe6602747c3f771 |
|
13-Dec-2013 |
Colin Cross <ccross@android.com> |
ion: fix dma APIs __dma_page_cpu_to_dev is a private ARM api that is not available on 3.10 and was never available on other architectures. We can get the same behavior by calling dma_sync_sg_for_device with a scatterlist containing a single page. It's still not quite a kosher use of the dma apis, we still conflate physical addresses with bus addresses, but it should at least compile on all platforms, and work on any platform that doesn't have a physical to bus address translation. Signed-off-by: Colin Cross <ccross@android.com> Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
9e907654d3c0ff58fb27b51d94128a9749c7e85c |
|
13-Dec-2013 |
Colin Cross <ccross@android.com> |
ion: remove IS_ERR_OR_NULL IS_ERR_OR_NULL is often part of a bad pattern that can accidentally return 0 on error: if (IS_ERR_OR_NULL(ptr)) return PTR_ERR(ptr); It also usually means that the errors of a function are not well defined. Replace all uses in ion.c by ensure that the return type of any function in ion is an ERR_PTR. Specify that the expected return value from map_kernel or map_dma heap ops is ERR_PTR, and warn if a heap returns NULL. Signed-off-by: Colin Cross <ccross@android.com> [jstultz: modified patch to apply to staging directory] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
c13bd1c4eb714c08214e897fcbe51b13e0e0f279 |
|
13-Dec-2013 |
Rebecca Schultz Zavin <rebecca@android.com> |
gpu: ion: Fix performance issue in faulting code Previously the code to fault ion buffers in one page at a time had a performance problem caused by the requirement to traverse the sg list looking for the right page to load in (a result of the fact that the items in the list may not be of uniform size). To fix the problem, for buffers that will be faulted in, also keep a flat array of all the pages in the buffer to use from the fault handler. To recover some of the additional memory footprint this creates per buffer, dirty bits used to indicate which pages have been faulted in to the cpu are now stored in the low bit of each page struct pointer in the page array. Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com> [jstultz: modified patch to apply to staging directory] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
349c9e13855109df99c5205a4e8d53d9fa169490 |
|
13-Dec-2013 |
Benjamin Gaignard <benjamin.gaignard@linaro.org> |
gpu: ion: add CMA heap New heap type ION_HEAP_TYPE_DMA where allocation is done with dma_alloc_coherent API. device coherent_dma_mask must be set to DMA_BIT_MASK(32). ion_platform_heap private field is used to retrieve the device linked to CMA, if NULL the default CMA area is used. ion_cma_get_sgtable is a copy of dma_common_get_sgtable function which should be in kernel 3.5 Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org> [jstultz: modified patch to apply to staging directory] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
ea313b5f88ed7119f79ad3f6b85e9620971b9875 |
|
13-Dec-2013 |
Rebecca Schultz Zavin <rebecca@android.com> |
gpu: ion: Also shrink memory cached in the deferred free list When the system is low on memory, we want to shrink any cached system memory ion is holding. Previously we were shrinking memory in the page pools, but not in the deferred free list. This patch makes it possible to shrink both. It also moves the shrinker code into the heaps so they can correctly manage any caches they might contain. Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com> [jstultz: modified patch to apply to staging directory] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
fe2faea7003516dd615812f663b6a9b141b842ce |
|
13-Dec-2013 |
Rebecca Schultz Zavin <rebecca@android.com> |
gpu: ion: Make ion_free asynchronous Add the ability for a heap to free buffers asynchrounously. Freed buffers are placed on a free list and freed from a low priority background thread. If allocations from a particular heap fail, the free list is drained. This patch also enable asynchronous frees from the chunk heap. Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com> [jstultz: modified patch to apply to staging directory] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
0b6b2cde0928707a618ce8c07970219f21d066e5 |
|
13-Dec-2013 |
Rebecca Schultz Zavin <rebecca@android.com> |
gpu: ion: Refactor the code to zero buffers Refactor the code in the system heap used to map and zero the buffers into a seperate utility so it can be called from other heaps. Use it from the chunk heap. Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com> [jstultz: modified patch to apply to staging directory] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
e3c2eb7cd9f291bf17ee056e388d0089cf378345 |
|
13-Dec-2013 |
Rebecca Schultz Zavin <rebecca@android.com> |
gpu: ion: Add chunk heap This patch adds support for a chunk heap that allows for buffers that are made up of a list of fixed size chunks taken from a carveout. Chunk sizes are configured when the heaps are created by passing the chunk size in the priv field of the heap platform data. Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com> [jstultz: modified patch to apply to staging directory] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
8898227ed555b477e2989a2a9b984fa37e7a9b42 |
|
13-Dec-2013 |
Rebecca Schultz Zavin <rebecca@android.com> |
gpu: ion: Refactor common mapping functions out of system heap The system heap contained several general purpose functions to map buffers to the kernel and userspace. This patch refactors those into ion_heap.c so they can be used by other heaps. Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com> [jstultz: modified patch to apply to staging directory] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
cd69488c7be3abb0767b49f313b12b8591abe5dc |
|
13-Dec-2013 |
Rebecca Schultz Zavin <rebecca@android.com> |
gpu: ion: Switch heap rbtree to a prio list Switches the rbtree tree of heaps for a plist. This significantly simplifies the code and the list is small and is modified only at first boot so the rbtree is unnecessary. This also switches the traversal of the heap list to traverse from highest to lowest id's. This allows allocations to pass a heap mask that falls back on the system heap -- typically id 0, which is the common case. Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com> [jstultz: modified patch to apply to staging directory] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
797a95c48c48d5b83bf1a7893602161d2e2a4654 |
|
13-Dec-2013 |
Rebecca Schultz Zavin <rebecca@android.com> |
gpu: ion: Switch to using a single shrink function The single shrink function will free lower order pages first. This enables compaction to work properly. [jstultz: modified patch to apply to staging directory] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
0fb9b815fe2010e9f8ff4b18bfd2a0ed9cf4eb8d |
|
13-Dec-2013 |
Rebecca Schultz Zavin <rebecca@android.com> |
gpu: ion: Fix several issues with page pool Split out low and high mem pages so they are correctly reported when the shrinker is called. Fix potential deadlock caused by holding the page pool lock while allocationg and also needing that lock from the shrink function Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com> [jstultz: modified patch to apply to staging directory] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
45b17a809fda352086b63518e32d272cc3442ed5 |
|
13-Dec-2013 |
Rebecca Schultz Zavin <rebecca@android.com> |
gpu: ion: Use the ion_page_pool from the system heap With this change the system heap will use pagepools to avoid having to invalidate memory when it is allocated, a significant performance improvement on some systems. Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com> [jstultz: modified patch to apply to staging directory] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
0214c7f20bf4d5d2e204afaf43789f2f4782d9ae |
|
13-Dec-2013 |
Rebecca Schultz Zavin <rebecca@android.com> |
gpu: ion: Add ion_page_pool. This patch adds a new utility heaps can use to manage memory. In the past we have found it can be very expensive to manage the caches when allocating memory, but it is imposible to know whether a previous user of a given memory allocation had a cached mapping. This patch adds the ability to store a pool of pages that were previously used uncached so that cache maintenance only need be done when growing this pool. The pool also contains a shrinker so memory from the pool can be recovered in low memory conditions. Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com> [jstultz: modified patch to apply to staging directory] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
13ba7805f9bf710016ffde5e24437fd6e5a798dc |
|
13-Dec-2013 |
Rebecca Schultz Zavin <rebecca@android.com> |
gpu: ion: optimize system heap for non fault buffers If a buffer's user mappings are not going to be faulted in it need not be allocated page wise. We can optimize this common case by allocating an sglist of larger chunks rather than creating an entry for each page in the allocation. Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com> [jstultz: modified patch to apply to staging directory] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
5ad7bc3addbc3886df05ebced942964307c243c8 |
|
13-Dec-2013 |
Rebecca Schultz Zavin <rebecca@android.com> |
gpu: ion: Add debug information for orphaned handles It is possible for a buffer to exist only as a dma_buf file descriptor without it being held in any handles. When this occurs it is impossible to track where the buffer is in the system (without traversing every process in the system and inspecting its file table). When buffers are orphaned like this, copy the task comm and pid of the last client to hold them into the buffer so we have a debugging hint as to where this buffer came from. In practice this will probalby be the process that allocated the buffer. Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com> [jstultz: modified patch to apply to staging directory] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
56a7c1851341a2fa9bd115746c1310411a6537a1 |
|
13-Dec-2013 |
Rebecca Schultz Zavin <rebecca@android.com> |
gpu: ion: Add cache maintenance to ion. This patch adds cache maintenance operations to ion. As per mailing list discussions regarding dma_buf, cache operations are done implicitly. At buffer allocaiton time the user can select whether he'd like mappings (both kernel and user) to be cached. When cached mappings are selected, no mappings will be created for a buffer at mmap time. Instead pages will be faulted in one at a time so we can track which pages require flushing before dma. When the buffers are mapped for dma (via the dma_buf apis) any pages which were touched will be synced for device. Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com> [jstultz: modified patch to apply to staging directory] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
4d5ca3299fb7b27ceb6c33a62bc10ce4d408dc0b |
|
13-Dec-2013 |
Rebecca Schultz Zavin <rebecca@android.com> |
ion: Switch map/unmap dma api to sg_tables Switch these api's from scatterlists to sg_tables Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com> [jstultz: modified patch to apply to staging directory] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
c30707be128e952ca2ba77417cb5509e254a4aac |
|
14-Dec-2013 |
Rebecca Schultz Zavin <rebecca@android.com> |
gpu: ion: Add ION Memory Manager Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com> [jstultz: Squished in Colin Cross' move to staging change, also disables ION from the build, as it won't compile till the end of the patchset] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|