[PATCH v2 09/15] drm/ttm, drm/amdgpu: Allow the driver some control over swapping

Thomas Hellström thomas.hellstrom at linux.intel.com
Tue May 18 15:20:58 UTC 2021


On 5/18/21 5:18 PM, Christian König wrote:
>
>
> Am 18.05.21 um 17:15 schrieb Thomas Hellström:
>>
>> On 5/18/21 10:26 AM, Thomas Hellström wrote:
>>> We are calling the eviction_valuable driver callback at eviction 
>>> time to
>>> determine whether we actually can evict a buffer object.
>>> The upcoming i915 TTM backend needs the same functionality for swapout,
>>> and that might actually be beneficial to other drivers as well.
>>>
>>> Add an eviction_valuable call also in the swapout path. Try to keep the
>>> current behaviour for all drivers by returning true if the buffer 
>>> object
>>> is already in the TTM_PL_SYSTEM placement. We change behaviour for the
>>> case where a buffer object is in a TT backed placement when swapped 
>>> out,
>>> in which case the drivers normal eviction_valuable path is run.
>>>
>>> Finally export ttm_tt_unpopulate() and don't swap out bos
>>> that are not populated. This allows a driver to purge a bo at
>>> swapout time if its content is no longer valuable rather than to
>>> have TTM swap the contents out.
>>>
>>> Cc: Christian König <christian.koenig at amd.com>
>>> Signed-off-by: Thomas Hellström <thomas.hellstrom at linux.intel.com>
>>
>> Christian,
>>
>> Here we have a ttm_tt_unpopulate() export as well at the end. I 
>> figure you will push back on that one. What we really need is a 
>> functionality to just drop the bo contents and end up in system 
>> memory unpopulated. Should I perhaps add a utility function to do 
>> that instead? like ttm_bo_purge()?
>
> We already have that. Just call ttm_bo_validate() without any place to 
> put the buffer.
>
> See how ttm_bo_pipeline_gutting() is used.
>
> Christian.

OK, so is that reentrant from the move() or swap_notify() callback.

/Thomas



>
>>
>> Thanks,
>>
>> Thomas
>>
>>
>


More information about the dri-devel mailing list