From: Nick P. <np...@su...> - 2008-09-25 00:19:07
|
On Tue, Sep 23, 2008 at 12:21:26PM +0200, Thomas Hellström wrote: > Nick, > From my point of view, this is exactly what's needed, although there > might be some different opinions among the > DRM developers. A question: > > Sometimes it's desirable to indicate that a page / object is "cleaned", > which would mean data has moved and is backed by device memory. In that > case one could either free the object or indicate to it that it can > release it's pages. Is freeing / recreating such an object an expensive > operation? Would it, in that case, be possible to add an object / page > "cleaned" function? Ah, interesting... freeing/recreating isn't _too_ expensive, but it is going to have to allocate a lot of pages (for a big object) and copy a lot of memory. It's strange to say "cleaned", in a sense, because the allocator itself doesn't know it is being used as a writeback cache ;) (and it might get confusing with the shmem implementation because your cleaned != shmem cleaned!). I understand the operation you need, but it's tricky to make it work in the existing shmem / vm infrastructure I think. Let's call it "dontneed", and I'll add a hook in there we can play with later to see if it helps? What I could imagine is to have a second backing store (not shmem), which "dontneed" pages go onto, and they simply get discarded rather than swapped out (eg. via the ->shrinker() memory pressure indicator). You could then also register a callback to recreate these parts of memory if they have been discarded then become used again. It wouldn't be terribly difficult come to think of it... would that be useful? |