From: Michel Thierry <michel.thierry@intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [RFC 00/38] PPGTT dynamic page allocations
Date: Tue, 04 Nov 2014 16:29:23 +0000 [thread overview]
Message-ID: <5458FEE3.6090703@intel.com> (raw)
In-Reply-To: <20141104125458.GN26941@phenom.ffwll.local>
[-- Attachment #1.1: Type: text/plain, Size: 5233 bytes --]
On 11/4/2014 12:54 PM, Daniel Vetter wrote:
> On Tue, Oct 07, 2014 at 06:10:56PM +0100, Michel Thierry wrote:
>> This is based on the first 55 patches of Ben's 48b addressing work, taking
>> into consideration the latest changes in (mainly aliasing) ppgtt rules.
>>
>> Because of these changes in the tree, the first 17 patches of the original
>> series are no longer needed, and some patches required more rework than others.
>>
>> For GEN8, it has also been extended to work in logical ring submission (lrc)
>> mode, as it looks like it will be the preferred mode of operation.
>> I also tried to update the lrc code at the same time the ppgtt refactoring
>> occurred, leaving only one patch that is exclusively for lrc.
>>
>> I'm asking for comments, as this is the foundation for 48b virtual addressing
>> in Broadwell.
>>
>> This list can be seen in 3 parts:
>> [01-24] Include code rework for PPGTT (all GENs).
>> [25-28] Adds page table allocation for GEN6/GEN7
>> [29-38] Enables dynamic allocation in GEN8. It is enabled for both legacy
>> and execlist submission modes.
>>
>> Ben Widawsky (37):
>> drm/i915: Add some extra guards in evict_vm
>> drm/i915/trace: Fix offsets for 64b
>> drm/i915: Wrap VMA binding
>> drm/i915: Make pin global flags explicit
>> drm/i915: Split out aliasing binds
>> drm/i915: fix gtt_total_entries()
>> drm/i915: Rename to GEN8_LEGACY_PDPES
>> drm/i915: Split out verbose PPGTT dumping
>> drm/i915: s/pd/pdpe, s/pt/pde
>> drm/i915: rename map/unmap to dma_map/unmap
>> drm/i915: Setup less PPGTT on failed pagedir
>> drm/i915: Un-hardcode number of page directories
>> drm/i915: Make gen6_write_pdes gen6_map_page_tables
>> drm/i915: Range clearing is PPGTT agnostic
>> drm/i915: Page table helpers, and define renames
>> drm/i915: construct page table abstractions
>> drm/i915: Complete page table structures
>> drm/i915: Create page table allocators
>> drm/i915: Generalize GEN6 mapping
>> drm/i915: Clean up pagetable DMA map & unmap
>> drm/i915: Always dma map page table allocations
>> drm/i915: Consolidate dma mappings
>> drm/i915: Always dma map page directory allocations
>> drm/i915: Track GEN6 page table usage
>> drm/i915: Extract context switch skip logic
>> drm/i915: Track page table reload need
>> drm/i915: Initialize all contexts
>> drm/i915: Finish gen6/7 dynamic page table allocation
>> drm/i915/bdw: Use dynamic allocation idioms on free
>> drm/i915/bdw: pagedirs rework allocation
>> drm/i915/bdw: pagetable allocation rework
>> drm/i915/bdw: Make the pdp switch a bit less hacky
>> drm/i915: num_pd_pages/num_pd_entries isn't useful
>> drm/i915: Extract PPGTT param from pagedir alloc
>> drm/i915/bdw: Split out mappings
>> drm/i915/bdw: begin bitmap tracking
>> drm/i915/bdw: Dynamic page table allocations
>>
>> Michel Thierry (1):
>> drm/i915/bdw: Dynamic page table allocations in lrc mode
> Ok, high level review:
>
> - The first part of this series seems to shuffle the code around in the
> vma binding code. If we actually want to fix this I think we need a
> REBIND flag and push the logic for rewriting ptes into the vma_bind
> hooks. There's no other way really to fix this, and the breakage for
> aliasing ppgtt this current code produces is what's blocking the cmd
> parser atm.
>
> - Imo mergin the vma_bind/insert_entries hooks isn't useful, they imo
> provide good abstraction. Ofc we should move the vma_bind/unbind
> funcstion into the vm functions, since the vfunc dictionary varies by vm
> and not by vma. And they only really provide good abstraction if we
> first fix up the binding mess.
>
> - The code massively shuffles around the pte and page table handling code,
> promising a lot better future. But I simply don't get it - to me this
> all looks like massive amounts of churn for no clear gain.
>
> - Imo the really critical part of dynamic pagetable alloc is where exactly
> we add this new memory allocation point and how we handle failures. But
> since there's so much churn that I somehow can't see through I can't
> have a solid opinion on the proposed design.
>
> So overall I think we should untangle this series first and throw out as
> much churn as possible. E.g. the binding rework is very much separate imo.
> Or someone needs to explain to my why we need all this code reflow.
>
> With that out of the way reviewing the changes due to dynamic page table
> alloc should be fairly simple. My expectation would have been that we'd
> add a new interface to allocate vm ranges and essentially leave all the
> current vma binding unchanged. Having the separate vm range extension is
> somewhat important since the drm_mm allocator has a bit the tendency to
> just walk up the address space, wasting piles of free space lower down.
>
> Or like I've said maybe I just don't see the real issues and have way too
> naive opinion here.
>
> Cheers, Daniel
Thanks for the comments Daniel,
I'll prepare another version, trying to just focus in the dynamic alloc
part.
-Michel
[-- Attachment #1.2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 5510 bytes --]
[-- Attachment #2: Type: text/plain, Size: 159 bytes --]
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
prev parent reply other threads:[~2014-11-04 16:30 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-07 17:10 [RFC 00/38] PPGTT dynamic page allocations Michel Thierry
2014-10-07 17:10 ` [RFC 01/38] drm/i915: Add some extra guards in evict_vm Michel Thierry
2014-10-08 13:36 ` Daniel Vetter
2014-10-07 17:10 ` [RFC 02/38] drm/i915/trace: Fix offsets for 64b Michel Thierry
2014-10-07 17:10 ` [RFC 03/38] drm/i915: Wrap VMA binding Michel Thierry
2014-10-07 17:11 ` [RFC 04/38] drm/i915: Make pin global flags explicit Michel Thierry
2014-10-08 13:36 ` Daniel Vetter
2014-10-07 17:11 ` [RFC 05/38] drm/i915: Split out aliasing binds Michel Thierry
2014-10-08 13:41 ` Daniel Vetter
2014-10-07 17:11 ` [RFC 06/38] drm/i915: fix gtt_total_entries() Michel Thierry
2014-10-08 13:52 ` Daniel Vetter
2014-10-07 17:11 ` [RFC 07/38] drm/i915: Rename to GEN8_LEGACY_PDPES Michel Thierry
2014-10-07 17:11 ` [RFC 08/38] drm/i915: Split out verbose PPGTT dumping Michel Thierry
2014-10-07 17:11 ` [RFC 09/38] drm/i915: s/pd/pdpe, s/pt/pde Michel Thierry
2014-10-08 13:55 ` Daniel Vetter
2014-10-07 17:11 ` [RFC 10/38] drm/i915: rename map/unmap to dma_map/unmap Michel Thierry
2014-10-07 17:11 ` [RFC 11/38] drm/i915: Setup less PPGTT on failed pagedir Michel Thierry
2014-10-07 17:11 ` [RFC 12/38] drm/i915: Un-hardcode number of page directories Michel Thierry
2014-10-07 17:11 ` [RFC 13/38] drm/i915: Make gen6_write_pdes gen6_map_page_tables Michel Thierry
2014-10-08 14:04 ` Daniel Vetter
2014-10-07 17:11 ` [RFC 14/38] drm/i915: Range clearing is PPGTT agnostic Michel Thierry
2014-10-07 17:11 ` [RFC 15/38] drm/i915: Page table helpers, and define renames Michel Thierry
2014-10-07 17:11 ` [RFC 16/38] drm/i915: construct page table abstractions Michel Thierry
2014-10-07 17:11 ` [RFC 17/38] drm/i915: Complete page table structures Michel Thierry
2014-10-07 17:11 ` [RFC 18/38] drm/i915: Create page table allocators Michel Thierry
2014-10-07 17:11 ` [RFC 19/38] drm/i915: Generalize GEN6 mapping Michel Thierry
2014-10-07 17:11 ` [RFC 20/38] drm/i915: Clean up pagetable DMA map & unmap Michel Thierry
2014-10-07 17:11 ` [RFC 21/38] drm/i915: Always dma map page table allocations Michel Thierry
2014-10-07 17:11 ` [RFC 22/38] drm/i915: Consolidate dma mappings Michel Thierry
2014-10-07 17:11 ` [RFC 23/38] drm/i915: Always dma map page directory allocations Michel Thierry
2014-10-07 17:11 ` [RFC 24/38] drm/i915: Track GEN6 page table usage Michel Thierry
2014-10-07 17:11 ` [RFC 25/38] drm/i915: Extract context switch skip logic Michel Thierry
2014-10-07 17:11 ` [RFC 26/38] drm/i915: Track page table reload need Michel Thierry
2014-10-07 17:11 ` [RFC 27/38] drm/i915: Initialize all contexts Michel Thierry
2014-10-07 17:11 ` [RFC 28/38] drm/i915: Finish gen6/7 dynamic page table allocation Michel Thierry
2014-10-07 17:11 ` [RFC 29/38] drm/i915/bdw: Use dynamic allocation idioms on free Michel Thierry
2014-10-07 17:11 ` [RFC 30/38] drm/i915/bdw: pagedirs rework allocation Michel Thierry
2014-10-07 17:11 ` [RFC 31/38] drm/i915/bdw: pagetable allocation rework Michel Thierry
2014-10-07 17:11 ` [RFC 32/38] drm/i915/bdw: Make the pdp switch a bit less hacky Michel Thierry
2014-10-07 17:11 ` [RFC 33/38] drm/i915: num_pd_pages/num_pd_entries isn't useful Michel Thierry
2014-10-07 17:11 ` [RFC 34/38] drm/i915: Extract PPGTT param from pagedir alloc Michel Thierry
2014-10-07 17:11 ` [RFC 35/38] drm/i915/bdw: Split out mappings Michel Thierry
2014-10-07 17:11 ` [RFC 36/38] drm/i915/bdw: begin bitmap tracking Michel Thierry
2014-10-07 17:11 ` [RFC 37/38] drm/i915/bdw: Dynamic page table allocations Michel Thierry
2014-10-07 17:11 ` [RFC 38/38] drm/i915/bdw: Dynamic page table allocations in lrc mode Michel Thierry
2014-10-08 7:13 ` [RFC 00/38] PPGTT dynamic page allocations Chris Wilson
2014-11-04 12:44 ` Daniel Vetter
2014-11-04 13:01 ` Chris Wilson
2014-11-05 9:19 ` Daniel Vetter
2014-11-05 9:50 ` Chris Wilson
2014-11-05 9:58 ` Chris Wilson
2014-11-04 12:54 ` Daniel Vetter
2014-11-04 16:29 ` Michel Thierry [this message]
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=5458FEE3.6090703@intel.com \
--to=michel.thierry@intel.com \
--cc=daniel@ffwll.ch \
--cc=intel-gfx@lists.freedesktop.org \
/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