From: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>
To: Matthew Auld <matthew.william.auld@gmail.com>,
"Koenig, Christian" <Christian.Koenig@amd.com>
Cc: "Christian König" <ckoenig.leichtzumerken@gmail.com>,
"ML dri-devel" <dri-devel@lists.freedesktop.org>
Subject: Re: i915 ttm_tt shmem backend
Date: Fri, 10 Sep 2021 10:08:16 +0200 [thread overview]
Message-ID: <ffab32dacece7fe3bb155f1ce2873d9e603f9f09.camel@linux.intel.com> (raw)
In-Reply-To: <CAM0jSHNkzR8bfcWET-d8BY1QrvPBFMfkDJLsfNUm4Ek6-2Cgzw@mail.gmail.com>
Perhaps some background and goal is worth mentioning here.
On Thu, 2021-09-09 at 17:56 +0100, Matthew Auld wrote:
> On Thu, 9 Sept 2021 at 17:43, Koenig, Christian
> <Christian.Koenig@amd.com> wrote:
> >
> > Hi Matthew,
> >
> > this doesn't work, I've already tried something similar.
> >
> > TTM uses the reverse lookup functionality when migrating BOs
> > between system and device memory. And that doesn't seem to work
> > with pages from a shmem file.
>
> Hmm, what do you mean by reverse lookup functionality? Could you
> please point out where that is in the TTM code?
I think this is in unmap_mapping_range() where, if we use VM_MIXEDMAP,
there is a reverse lookup on the PTEs that point to real pages. Now
that we move over to VM_PFNMAP, that problem should go away since core
vm never has a page to investigate. Probably this is why things works
on non-TTM i915 GEM.
@Christian: Some background here:
First I think that there might be things like the above that will pose
problems, and we may or may not be able to overcome those but more
importantly is that we agree with you that *if* we make it work, it is
something that you as a maintainer of TTM can accept from a design- and
maintainabiltiy point of view.
The approach would be similar to the buddy allocator, we adapt some
driver code to TTM in a way that it may be reused with other drivers,
and if other drivers are interested, we'd assist in moving to core TTM.
In essence it'd be a TTM shmem page pool with full shrinking ability
for cached pages only.
What we're really after here is the ability to shrink that doesn't
regress much w r t the elaborate shrinker that's in i915 today that is
power management aware and is also able to start shmem writebacks to
avoid shmem just caching the pages instead of giving them back to the
system (IIRC it was partly the lack of this that blocked earlier TTM
shrinking efforts).
And since it doesn't really matter whether the shrinker sits in core
TTM or in a driver, I think a future goal might be a set of TTM
shrinker helpers that makes sure we shrink the right TTM object, and
perhaps a simple implementation that is typically used by simple
drivers and other drivers can build on that for a more elaborate power-
management aware shrinker.
/Thomas
>
> >
> > Regards,
> > Christian.
> >
> > ________________________________
> > Von: Matthew Auld <matthew.william.auld@gmail.com>
> > Gesendet: Donnerstag, 9. September 2021 16:56
> > An: Christian König <ckoenig.leichtzumerken@gmail.com>; Koenig,
> > Christian <Christian.Koenig@amd.com>
> > Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>; ML dri-
> > devel <dri-devel@lists.freedesktop.org>
> > Betreff: i915 ttm_tt shmem backend
> >
> > Hi Christian,
> >
> > We are looking into using shmem as a ttm_tt backend in i915 for
> > cached
> > system memory objects. We would also like to make such objects
> > visible
> > to the i915-gem shrinker, so that they may be swapped out or
> > discarded
> > when under memory pressure.
> >
> > One idea for handling this is roughly something like:
> > - Add a new TTM_PAGE_FLAG_SHMEM flag, or similar.
> > - Skip the ttm_pages_allocated accounting on such objects, similar
> > to
> > how FLAG_SG is already handled.
> > - Skip all the page->mapping and page->index related bits, like in
> > tt_add_mapping, since it looks like these are set and used by
> > shmem.
> > Not sure what functionally this might break, but looks like it's
> > maybe
> > only driver specific?
> > - Skip calling into ttm_bo_swap_out/in and just have
> > ttm_populate/unpopulate handle this directly for such objects.
> > - Make such objects visible to the i915-gem shrinker.
> >
> > Does this approach look acceptable?
next prev parent reply other threads:[~2021-09-10 8:08 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-09 14:56 i915 ttm_tt shmem backend Matthew Auld
2021-09-09 16:43 ` AW: " Koenig, Christian
2021-09-09 16:56 ` Matthew Auld
2021-09-10 7:53 ` Christian König
2021-09-10 8:08 ` Thomas Hellström [this message]
2021-09-10 8:25 ` Christian König
2021-09-10 8:40 ` Thomas Hellström
2021-09-10 8:51 ` Christian König
2021-09-10 7:46 ` Thomas Hellström
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ffab32dacece7fe3bb155f1ce2873d9e603f9f09.camel@linux.intel.com \
--to=thomas.hellstrom@linux.intel.com \
--cc=Christian.Koenig@amd.com \
--cc=ckoenig.leichtzumerken@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=matthew.william.auld@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox