• Michel Thierry's avatar
    drm/i915/gen8: Add 4 level switching infrastructure and lrc support · 2dba3239
    Michel Thierry authored
    In 64b (48bit canonical) PPGTT addressing, the PDP0 register contains
    the base address to PML4, while the other PDP registers are ignored.
    
    In LRC, the addressing mode must be specified in every context
    descriptor, and the base address to PML4 is stored in the reg state.
    
    v2: PML4 update in legacy context switch is left for historic reasons,
    the preferred mode of operation is with lrc context based submission.
    v3: s/gen8_map_page_directory/gen8_setup_page_directory and
    s/gen8_map_page_directory_pointer/gen8_setup_page_directory_pointer.
    Also, clflush will be needed for bxt. (Akash)
    v4: Squashed lrc-specific code and use a macro to set PML4 register.
    v5: Rebase after Mika's ppgtt cleanup / scratch merge patch series.
    PDP update in bb_start is only for legacy 32b mode.
    v6: Rebase after final merged version of Mika's ppgtt/scratch
    patches.
    v7: There is no need to update the pml4 register value in
    execlists_update_context. (Akash)
    v8: Move pd and pdp setup functions to a previous patch, they do not
    belong here. (Akash)
    v9: Check USES_FULL_48BIT_PPGTT instead of GEN8_CTX_ADDRESSING_MODE in
    gen8_emit_bb_start to check if emit pdps is needed. (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>
    2dba3239
i915_gem_gtt.c 84.9 KB