Michel Dänzer
25eef4214a
drm/ttm: Initialize local lists in ttm_bo_bulk_move_helper
...
The first parameter of list_cut_position() must point to an initialized
list.
Noticed thanks to KASAN pointing out something's fishy here.
Fixes: "drm/ttm: add bulk move function on LRU"
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-08-29 12:35:59 -05:00
Huang Rui
7748e2dcda
drm/ttm: add bulk move function on LRU
...
This function allow us to bulk move a group of BOs to the tail of their LRU.
The positions of group of BOs are stored on the (first, last) bulk_move_pos
structure.
Signed-off-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Huang Rui <ray.huang@amd.com >
Tested-by: Mike Lothian <mike@fireburn.co.uk >
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de >
Acked-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-08-27 11:11:21 -05:00
Christian König
9a2779528e
drm/ttm: revise ttm_bo_move_to_lru_tail to support bulk moves
...
When move a BO to the end of LRU, it need remember the BO positions.
Make sure all moved bo in between "first" and "last". And they will be bulk
moving together.
Signed-off-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Huang Rui <ray.huang@amd.com >
Tested-by: Mike Lothian <mike@fireburn.co.uk >
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de >
Acked-by: Chunming Zhou <david1.zhou@amd.com >
Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-08-27 11:11:21 -05:00
Thomas Zimmermann
f44907593d
drm/ttm: Replace ttm_bo_unref() with ttm_bo_put()
...
A call to ttm_bo_unref() clears the supplied pointer to NULL, while
ttm_bo_put() does not. None of the converted call sites requires the
pointer to become NULL, so the respective assign operations has been
left out from the patch.
Signed-off-by: Thomas Zimmermann <contact@tzimmermann.org >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-07-10 14:18:28 -05:00
Thomas Zimmermann
89c815ef07
drm/ttm: Introduce ttm_bo_get() and ttm_bo_put() for ref counting
...
The TTM buffer-object interface provides ttm_bo_reference() and
ttm_bo_unref() for managing reference counts. Replacing them with
ttm_bo_get() and ttm_bo_put() aligns the API with conventions used
throughout the Linux kernel.
The implementation of ttm_bo_unref() clears the supplied pointer
to NULL. This leads to workarounds where the caller saves the
pointer's value before de-referencing the BO. ttm_bo_put() does
not clear the supplied pointer.
Signed-off-by: Thomas Zimmermann <contact@tzimmermann.org >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-07-10 14:18:15 -05:00
Gustavo A. R. Silva
31e1c59796
drm/ttm: use swap macro in ttm_bo_handle_move_mem
...
Make use of the swap macro and remove unnecessary variable *tmp_mem*.
This makes the code easier to read and maintain. Also, reduces the
stack usage.
This code was detected with the help of Coccinelle.
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-07-10 14:18:08 -05:00
Dirk Hohndel
1297bf2e91
Add SPDX idenitifier and clarify license
...
This is dual licensed under GPL-2.0 or MIT.
Signed-off-by: Dirk Hohndel (VMware) <dirk@hohndel.org >
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com >
Acked-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-05-15 13:44:27 -05:00
Junwei Zhang
967c650d49
drm/ttm: remove priority hard code when initializing ttm bo
...
Then priority could be set before initialization.
By default, it requires to kzalloc ttm bo. In fact, we always do so.
Signed-off-by: Junwei Zhang <Jerry.Zhang@amd.com >
Reviewed-by: David Zhou <david1.zhou@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-05-15 13:44:23 -05:00
Christian König
5d95109815
drm/ttm: add ttm_bo_pipeline_gutting
...
Allows us to gut a BO of it's backing store when the driver says that it
isn't needed any more.
Signed-off-by: Christian König <christian.koenig@amd.com >
Acked-by: Roger He <Hongbo.He@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-03-14 14:38:27 -05:00
Christian König
97b7e1b8b5
drm/ttm: move ttm_tt_create into ttm_tt.c v2
...
Rename ttm_bo_add_ttm to ttm_tt_create and move it into ttm_tt.c.
v2: separate the cleanup.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Roger He <Hongbo.He@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-02-26 23:09:46 -05:00
Christian König
724daa4fd6
drm/ttm: drop persistent_swap_storage from ttm_bo_init and co
...
Never used as parameter, the only driver actually using this is nouveau
and there it is initialized after the BO is initialized.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-02-26 23:09:45 -05:00
Christian König
231cdafc75
drm/ttm: drop ttm->dummy_read_page
...
Only used by the AGP backend and there it can be easily accessed using
ttm->bdev->glob.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-02-26 23:09:45 -05:00
Christian König
3839263362
drm/ttm: drop bo->glob
...
The pointer is available as bo->bdev->glob as well.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-02-26 23:09:44 -05:00
Roger He
40d5250dbb
drm/ttm: set TTM_OPT_FLAG_FORCE_ALLOC in ttm_bo_force_list_clean
...
Because ttm_bo_force_list_clean() is only called on two occasions:
1. By ttm_bo_evict_mm() during suspend.
2. By ttm_bo_clean_mm() when the driver unloads.
On both cases we absolutely don't want any memory allocation failure.
Signed-off-by: Roger He <Hongbo.He@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-02-26 23:09:34 -05:00
Roger He
d330fca115
drm/ttm: use bit flag to replace allow_reserved_eviction in ttm_operation_ctx
...
for saving memory and more bit flag can be used in future
Signed-off-by: Roger He <Hongbo.He@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-02-26 23:09:34 -05:00
Tom St Denis
420457acfb
drm/ttm: Add a default BO destructor to simplify code (v2)
...
(v2): Remove stray ; noticed by Felix
Signed-off-by: Tom St Denis <tom.stdenis@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-02-19 14:18:56 -05:00
Tom St Denis
43c7c41b25
drm/ttm: Fix coding style in ttm_bo.c
...
Correct indentation and {} brace style.
Signed-off-by: Tom St Denis <tom.stdenis@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-02-19 14:18:56 -05:00
Andrey Grodzovsky
cb5f1a52ca
drm/ttm: Allow page allocations w/o triggering OOM..
...
This to allow drivers to choose to avoid OOM invocation and handle
page allocation failures instead.
v2:
Remove extra new lines.
Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Roger He <Hongbo.He@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-02-19 14:17:58 -05:00
Roger He
a86170290c
drm/ttm: fix missing parameter change for ttm_bo_cleanup_refs
...
Missed in the patche:
dc94777 drm/ttm: enable swapout for reserved BOs during allocation.
don't unreserve the BO if it is not reserved by itself.
Signed-off-by: Roger He <Hongbo.He@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-01-29 22:53:12 -05:00
Felix Kuehling
ad76c65ec3
drm/ttm: Don't unreserve swapped BOs that were previously reserved
...
If ttm_bo_swapout doesn't own the lock, don't release it. Someone
else probably depends on it still being locked.
Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2018-01-18 16:14:32 -05:00
Felix Kuehling
fd5002d6a3
drm/ttm: Don't add swapped BOs to swap-LRU list
...
A BO that's already swapped would be added back to the swap-LRU list
for example if its validation failed under high memory pressure. This
could later lead to swapping it out again and leaking previous swap
storage.
This commit adds a condition to prevent that from happening.
v2: Check page_flags instead of swap_storage
Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Cc: stable@vger.kernel.org
2018-01-18 16:14:03 -05:00
Roger He
dc947770cf
drm/ttm: enable swapout for reserved BOs during allocation
...
if the bo shares same reservation object then not lock it again
at swapout time to make it possible to swap out.
v2: refine the commmit message
Reviewed-by: Thomas Hellström <thellstrom@vmware.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chuming Zhou <david1.zhou@amd.com >
Signed-off-by: Roger He <Hongbo.He@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-28 09:48:20 -05:00
Roger He
d5769ba315
drm/ttm: add new function to check if bo is allowable to evict or swapout
...
extract a function as ttm_bo_evict_swapout_allowable since eviction and
swapout can share same logic.
v2: modify commit message and add description in the code
Reviewed-by: Thomas Hellström <thellstrom@vmware.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chuming Zhou <david1.zhou@amd.com >
Signed-off-by: Roger He <Hongbo.He@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-28 09:48:20 -05:00
Roger He
993baf1556
drm/ttm: use an operation ctx for ttm_tt_bind
...
forward the operation context to ttm_tt_bind as well,
and the ultimate goal is swapout enablement for reserved BOs.
v2: use common term rather than amd specific
Reviewed-by: Thomas Hellström <thellstrom@vmware.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Chuming Zhou <david1.zhou@amd.com >
Signed-off-by: Roger He <Hongbo.He@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-28 09:48:20 -05:00
Roger He
279c01f6ef
drm/ttm: use an operation ctx for ttm_mem_global_alloc
...
forward the operation context to ttm_mem_global_alloc as well, and the
ultimate goal is swapout enablement for reserved BOs
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Roger He <Hongbo.He@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-27 11:38:54 -05:00
Roger He
a6c26af8a4
drm/ttm: call ttm_bo_swapout directly when ttm shrink
...
remove the extra indirection because we have only one implementation anyway
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Roger He <Hongbo.He@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-27 11:38:11 -05:00
Christian König
6a83a55303
drm/ttm: drop the spin in delayed delete if the trylock doesn't work
...
Thomas actually noticed that, but I didn't realized what he meant until
now.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Roger He <Hongbo.He@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-27 11:34:25 -05:00
Christian König
78f99c6d5c
drm/ttm: cleanup some old defines
...
Use pr_debug instead of TTM_DEBUG, fix the lockdep assert and remove the
unused constant.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Roger He <Hongbo.He@amd.com >
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-18 11:53:01 -05:00
Christian König
2b7e35fbf8
drm/ttm: cleanup some more resv->lock uses
...
Use the reservation wrapper for this.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Roger He <Hongbo.He@amd.com >
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-18 11:52:54 -05:00
Christian König
827ed2b06b
drm/ttm: use try_lock in ttm_bo_delayed_delete again
...
We only need to wait for the contended lock when the reservation object is
shared or when we want to remove everything. A trylock should be sufficient
in all other cases.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Roger He <Hongbo.He@amd.com >
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-18 11:52:47 -05:00
Roger He
3e98d829ad
drm/ttm: use an ttm operation ctx for ttm_bo_move_xxx
...
include ttm_bo_move_memcpy and ttm_bo_move_ttm
Signed-off-by: Roger He <Hongbo.He@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-15 17:14:25 -05:00
Roger He
4985c9fc5f
drm/ttm: enable eviction for Per-VM-BO
...
allow eviction of BOs reserved by the caller when they are
not part of the current working set.
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Roger He <Hongbo.He@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-15 17:13:01 -05:00
Roger He
5cc636846d
drm/ttm: init locked again to prevent incorrect unlock
...
Signed-off-by: Roger He <Hongbo.He@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-14 10:23:02 -05:00
Christian König
6cd2e71e89
drm/ttm: add number of bytes moved to the operation context
...
Add some statistics how many bytes we have moved.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de >
Tested-by: Michel Dänzer <michel.daenzer@amd.com >
Acked-by: Felix Kuehling <Felix.Kuehling@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-06 12:48:03 -05:00
Christian König
2823f4f019
drm/ttm: add context to driver move callback as well
...
Instead of passing the parameters manually.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de >
Tested-by: Michel Dänzer <michel.daenzer@amd.com >
Acked-by: Felix Kuehling <Felix.Kuehling@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-06 12:48:03 -05:00
Christian König
83876c1bed
drm/ttm: use the operation context inside TTM
...
Instead of passing down the parameters manually to every function.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de >
Tested-by: Michel Dänzer <michel.daenzer@amd.com >
Acked-by: Felix Kuehling <Felix.Kuehling@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-06 12:48:02 -05:00
Christian König
c13c55d611
drm/ttm: use an operation context for ttm_bo_mem_space v2
...
Instead of specifying interruptible and no_wait_gpu manually.
v2: rebase
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de >
Tested-by: Michel Dänzer <michel.daenzer@amd.com >
Acked-by: Felix Kuehling <Felix.Kuehling@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-06 12:48:02 -05:00
Christian König
6fead44a4c
drm/ttm: use an operation ctx for ttm_bo_init_reserved
...
Instead of specifying if sleeping should be interruptible.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de >
Tested-by: Michel Dänzer <michel.daenzer@amd.com >
Acked-by: Felix Kuehling <Felix.Kuehling@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-06 12:48:02 -05:00
Christian König
19be557010
drm/ttm: add operation ctx to ttm_bo_validate v2
...
Give moving a BO into place an operation context to work with.
v2: rebased
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Chunming Zhou <david1.zhou@amd.com >
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de >
Tested-by: Michel Dänzer <michel.daenzer@amd.com >
Acked-by: Felix Kuehling <Felix.Kuehling@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-06 12:48:01 -05:00
Christian König
01f83e0663
drm/ttm: remove cur_placement
...
Not used any more.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-06 12:47:55 -05:00
Christian König
c0c2c3bffc
drm/ttm: completely rework ttm_bo_delayed_delete
...
There is no guarantee that the next entry on the ddelete list stays on
the list when we drop the locks.
Completely rework this mess by moving processed entries on a temporary
list.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-and-Tested-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-06 12:47:54 -05:00
Christian König
0905286393
drm/ttm: fix ttm_mem_evict_first once more
...
The code path isn't hit at the moment, but we need to take the lock to
add the BO back to the LRU.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-and-Tested-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Roger He <Hongbo.He@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-06 12:47:53 -05:00
Christian König
6ba435812e
drm/ttm: optimize ttm_mem_evict_first v5
...
Deleted BOs with the same reservation object can be reaped even if they
can't be reserved.
v2: rebase and we still need to remove/add the BO from/to the LRU.
v3: fix remove/add one more time, cleanup the logic a bit
v4: we should still check if the eviction is valuable
v5: add comment suggested by Michel
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-and-Tested-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-06 12:47:48 -05:00
Christian König
6c41f30216
drm/ttm: make unlocking in ttm_bo_cleanup_refs optional v3
...
Needed for the next patch.
v2: actually predicate all unlocks
v3: add some cleanups suggested by Michel.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-and-Tested-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-06 12:47:45 -05:00
Christian König
842cde0584
drm/ttm: user reservation object wrappers v2
...
Consistently use the reservation object wrappers instead of accessing
the ww_mutex directly.
Additional to that use the reservation object wrappers directly instead of
calling __ttm_bo_reserve with fixed parameters.
v2: fix typo
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-and-Tested-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-06 12:47:19 -05:00
Christian König
36a0680aac
drm/ttm: consistently use reservation_object_unlock
...
Instead of having a confusing wrapper or call the underlying ww_mutex
function directly.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-and-Tested-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-06 12:47:19 -05:00
Christian König
a376b0cedb
drm/ttm: move unlocking out of ttm_bo_cleanup_memtype_use
...
Needed for the next patch and makes the code quite a bit easier to
understand.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-and-Tested-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-12-06 12:47:19 -05:00
Michel Dänzer
e1fc12c5d9
drm/ttm: Always and only destroy bo->ttm_resv in ttm_bo_release_list
...
Fixes a use-after-free due to a race condition in
ttm_bo_cleanup_refs_and_unlock, which allows one task to reserve a BO
and destroy its ttm_resv while another task is waiting for it to signal
in reservation_object_wait_timeout_rcu.
v2:
* Always initialize bo->ttm_resv in ttm_bo_init_reserved
(Christian König)
Fixes: 0d2bd2ae04 "drm/ttm: fix memory leak while individualizing BOs"
Reviewed-by: Chunming Zhou <david1.zhou@amd.com > # v1
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-11-04 09:48:01 -04:00
Monk Liu
bbb4d8d9ee
drm/ttm:fix memory leak due to individualize
...
after individualize we need manually call reservation_object_fini()
if all fences on resv signaled during test, otherwise kmemory leak
Signed-off-by: Monk Liu <Monk.Liu@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-10-31 18:24:58 -04:00
Christian König
0d2bd2ae04
drm/ttm: fix memory leak while individualizing BOs
...
We need to free the reservation object before we take the BO
from the delayed delete list.
Signed-off-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Monk Liu <monk.liu@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2017-09-13 12:10:14 -04:00