On Tue, Sep 23, 2008 at 12:21:26PM +0200, Thomas Hellström wrote:Well, the typical usage pattern is:
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?