• Michel Thierry's avatar
    drm/i915/gen8: implement alloc/free for 4lvl · 762d9936
    Michel Thierry authored
    PML4 has no special attributes, and there will always be a PML4.
    So simply initialize it at creation, and destroy it at the end.
    
    The code for 4lvl is able to call into the existing 3lvl page table code
    to handle all of the lower levels.
    
    v2: Return something at the end of gen8_alloc_va_range_4lvl to keep the
    compiler happy. And define ret only in one place.
    Updated gen8_ppgtt_unmap_pages and gen8_ppgtt_free to handle 4lvl.
    v3: Use i915_dma_unmap_single instead of pci API. Fix a
    couple of incorrect checks when unmapping pdp and pd pages (Akash).
    v4: Call __pdp_fini also for 32b PPGTT. Clean up alloc_pdp param list.
    v5: Prevent (harmless) out of range access in gen8_for_each_pml4e.
    v6: Simplify alloc_vma_range_4lvl and gen8_ppgtt_init_common error
    paths. (Akash)
    v7: Rebase, s/gen8_ppgtt_free_*/gen8_ppgtt_cleanup_*/.
    v8: Change location of pml4_init/fini. It will make next patches
    cleaner.
    v9: Rebase after Mika's ppgtt cleanup / scratch merge patch series, while
    trying to reuse as much as possible for pdp alloc. pml4_init/fini
    replaced by setup/cleanup_px macros.
    v10: Rebase after Mika's merged ppgtt cleanup patch series.
    v11: Rebase after final merged version of Mika's ppgtt/scratch
    patches.
    v12: Fix pdpe start value in trace (Akash)
    v13: Define all 4lvl functions in this patch directly, instead of
    previous patches, add i915_page_directory_pointer_entry_alloc here,
    use test_bit to detect when pdp is already allocated (Akash).
    v14: Move pdp allocation into a new gen8_ppgtt_alloc_page_dirpointers
    funtion, as we do for pds and pts; move pd and pdp setup functions to
    this patch (Akash).
    v15: Added kfree(pdp) from previous patch to this (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 avatarAkash Goel <akash.goel@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    762d9936
i915_gem_gtt.h 17.6 KB