Jerome Glisse skrev:
> Hi Thomas,
>
> I think ttm is doing somethings wrong when we validate a bo for the
> same mem type but with different cache flags. Here is my understanding :
>
> (Use case i am refering too is object validate with
> current state GTT | CACHED validate to GTT | WC)
>
> if (!ttm_bo_mem_compat(bo->proposed_placement, &bo->mem)
> Is evaluate as true because cache flags are differents, For instance
> is it goes from UNCACHED to WC or CACHED.
>
> So ttm_bo_move_buffer get call, which call ttm_bo_handle_move_memin there 
> caching change will only happen if there is no ttm allocated
> which might not be the case if for instance we are dealing with
> GTT memory (so i think cache transitioning of the object is wrong
> and we should move ttm_tt_set_placement_caching outside the if
> in ttm_bo_handle_move_mem).
>   
In this particular case, ttm_bo_handle_move_mem will first call 
ttm_bo_unmap_virtual(), then go ahead and call ttm_bo_move_ttm(). This 
routine will unbind from GTT, change caching and the rebind to GTT.

> ttm_bo_handle_move_mem will end up calling driver callback move
> routine 
No, it will use ttm_bo_move_ttm().

> which will call in radeon case the ttm_bo_move_accel_cleanup
> and which will create a ghost object holding the ttm memory in order
> to delete it at latter point (which is wrong as this memory is still
> needed).
>
> So shouldn't the ttm_bo_move_buffer catch this and not call device
> move callback but simply transition cache setup of the object ?
> Or do i misunderstand somethings ?
>
>   
It should call ttm_bo_move_ttm() and hopefully it does. However, it is a 
bit wasteful of GTT space since I think it actually allocates a new GTT 
slot before freeing the old one. Ideally I think it should reuse the old 
slot. There's some optimization to be done there.

So why does it bother unbinding from GTT in the first place? This is 
because translation tables that support both snooped and unsnooped 
bindings usually need to rewrite the page tables to reflect this change.

> Cheers,
> Jerome
>
>   
/Thomas


/Thomas


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to