seems ttm_bo_handle_move_mem not flush cache, if BO move SYS->VRAM?
thomas at shipmail.org
Wed Dec 1 23:35:28 PST 2010
On 12/02/2010 03:49 AM, april wrote:
> thanks Thomas
> I want to flush CPU cache, before use DMA from system memory to VRAM.
> Seems I should do this in driver move function itself.
Yes. That's the right way.
> when BO changes from cached to write-combined, CPU cache will be
> flushed, and all the pages in this BO will do this.
> but, may be only a small part of page's cache flush is really
> needed(CPU just write to a few pages in BO).
> Is there any ways to solve this?
Unfortunately not at the moment. It would require tracking of dirty
pages in TTM and that is on my to-do list, but that also requries
changes to the linux kernel VM system. At the moment I'm not completely
sure how costly a clflush is for a cache line that's not in the CPU cache.
For BOs that are almost only written to, you should try to keep also
system pages write-combined. In that case they are allocated
write-combined from the TTM memory pool and the cache changing doesn't
need to occur.
> or there's no need to do this? (clflush those pages that not in cpu
> cache not cost too much?)
> Thank you
> 2010/12/2 Thomas Hellstrom<thomas at shipmail.org>:
>> On 12/01/2010 04:58 AM, april wrote:
>>> hi all:
>>> I have a question:
>>> If a BO in VRAM (WC) evict to SYS memory(may be cached), and user
>>> process still can access it event it is in SYS memory (may be cached)
>>> when this BO volidate to VRAM, It seems "ttm_bo_handle_move_mem" not
>>> flush cache (If evict to SYS memory with cached).
>>> But flush cache is needed, If driver use DMA to handle BO
>>> move(SYS->VRAM), should "ttm_bo_handle_move_mem" handle this? or
>>> driver do it in "driver->move_notify" before "driver->move" called?
>> April, in order to understand your proble, Can you be a bit more specific
>> 1) Which cache should be flushed? Cpu cache or GPU cache.
>> 2) Why should it be flushed? For CPU caches, TTM only flushes when
>> transitioning the same page from cached to write-combined. If you use DMA
>> from system memory to VRAM, and need to flush the system pages before
>> performing the DMA operation, that should be done in the driver move
>>> dri-devel mailing list
>>> dri-devel at lists.freedesktop.org
More information about the dri-devel