• Michel Thierry's avatar
    drm/i915/gen8: Abstract PDP usage · d4ec9da0
    Michel Thierry authored
    Up until now, ppgtt->pdp has always been the root of our page tables.
    Legacy 32b addresses acted like it had 1 PDP with 4 PDPEs.
    
    In preparation for 4 level page tables, we need to stop using ppgtt->pdp
    directly unless we know it's what we want. The future structure will use
    ppgtt->pml4 for the top level, and the pdp is just one of the entries
    being pointed to by a pml4e. The temporal pdp local variable will be
    removed once the rest of the 4-level code lands.
    
    Also, start passing the vm pointer to the alloc functions, instead of
    ppgtt.
    
    v2: Updated after dynamic page allocation changes.
    v3: Rebase after s/page_tables/page_table/.
    v4: Rebase after changes in "Dynamic page table allocations" patch.
    v5: Rebase after Mika's ppgtt cleanup / scratch merge patch series.
    v6: Rebase after final merged version of Mika's ppgtt/scratch patches.
    v7: Keep pagetable map in-line (and avoid unnecessary for_each_pde
    loops), remove redundant ppgtt pointer in _alloc_pagetabs (Akash)
    v8: Fix text indentation in _alloc_pagetabs/page_directories (Chris)
    v9: Defer gen8_alloc_va_range_4lvl definition until 4lvl is implemented,
    clean-up gen8_ppgtt_cleanup [pun intended] (Akash).
    v10: Clean-up commit message (Akash).
    
    Cc: Akash Goel <akash.goel@intel.com>
    Signed-off-by: default avatarBen Widawsky <ben@bwidawsk.net>
    Signed-off-by: Michel Thierry <michel.thierry@intel.com> (v2+)
    Reviewed-by: default avatar"Akash Goel" <akash.goel@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    d4ec9da0
i915_gem_gtt.c 78.2 KB