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. > bty, > 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. /Thomas > 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 >> about. >> >> 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 >> function. >> >> /Thomas >> >> >> >>> Thanks >>> _______________________________________________ >>> dri-devel mailing list >>> dri-devel at lists.freedesktop.org >>> http://lists.freedesktop.org/mailman/listinfo/dri-devel >>> >>> >> >>