• Michel Thierry's avatar
    drm/i915/gen8: Make pdp allocation more dynamic · 6ac18502
    Michel Thierry authored
    This transitional patch doesn't do much for the existing code. However,
    it should make upcoming patches to use the full 48b address space a bit
    easier.
    
    32-bit ppgtt uses just 4 PDPs, while 48-bit ppgtt will have up-to 512;
    this patch prepares the existing functions to query the right number of pdps
    at run-time. This also means that used_pdpes should also be allocated during
    ppgtt_init, as the bitmap size will depend on the ppgtt address range
    selected.
    
    v2: Renamed  pdp_free to be similar to  pd/pt (unmap_and_free_pdp).
    v3: To facilitate testing, 48b mode will be available on Broadwell and
    GEN9+, when i915.enable_ppgtt = 3.
    v4: Rebase after s/page_tables/page_table/, added extra information
    about 4-level page table formats and use IS_ENABLED macro.
    v5: Check CONFIG_X86_64 instead of CONFIG_64BIT.
    v6: Rebase after Mika's ppgtt cleanup / scratch merge patch series, and
    follow
    his nomenclature in pdp functions (there is no alloc_pdp yet).
    v7: Rebase after merged version of Mika's ppgtt cleanup patch series.
    v8: Rebase after final merged version of Mika's ppgtt/scratch patches.
    v9: Introduce PML4 (and 48-bit checks) until next patch (Akash).
    v10: Also use test_bit to detect when pd/pt are already allocated (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>
    [danvet: Amend commit message as suggested by Michel.]
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    6ac18502
i915_gem_gtt.c 78.1 KB