• Michel Thierry's avatar
    drm/i915/gen8: Dynamic page table allocations · d7b2633d
    Michel Thierry authored
    This finishes off the dynamic page tables allocations, in the legacy 3
    level style that already exists. Most everything has already been setup
    to this point, the patch finishes off the enabling by setting the
    appropriate function pointers.
    
    In LRC mode, contexts need to know the PDPs when they are populated. With
    dynamic page table allocations, these PDPs may not exist yet. Check if
    PDPs have been allocated and use the scratch page if they do not exist yet.
    
    Before submission, update the PDPs in the logic ring context as PDPs
    have been allocated.
    
    v2: Update aliasing/true ppgtt allocate/teardown/clear functions for
    gen 6 & 7.
    
    v3: Rebase.
    
    v4: Remove BUG() from ppgtt_unbind_vma, but keep checking that either
    teardown_va_range or clear_range functions exist (Daniel).
    
    v5: Similar to gen6, in init, gen8_ppgtt_clear_range call is only needed
    for aliasing ppgtt. Zombie tracking was originally added for teardown
    function and is no longer required.
    
    v6: Update err_out case in gen8_alloc_va_range (missed from lastest
    rebase).
    
    v7: Rebase after s/page_tables/page_table/.
    
    v8: Updated scratch_pt check after scratch flag was removed in previous
    patch.
    
    v9: Note that lrc mode needs to be updated to support init state without
    any PDP.
    
    v10: Unmap correct page_table in gen8_alloc_va_range's error case,  clean-up
    gen8_aliasing_ppgtt_init (remove duplicated map), and initialize PTs
    during page table allocation.
    
    v11: Squashed LRC enabling commit, otherwise LRC mode would be left broken
    until it was updated to handle the init case without any PDP.
    
    v12: Do not overallocate new_pts bitmap, make alloc_gen8_temp_bitmaps
    static and don't abuse of inline functions. (Mika)
    
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Signed-off-by: default avatarBen Widawsky <ben@bwidawsk.net>
    Signed-off-by: Michel Thierry <michel.thierry@intel.com> (v2+)
    Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    d7b2633d
intel_lrc.c 58.6 KB