• Zhi Wang's avatar
    drm/i915: Introduce private PAT management · 4395890a
    Zhi Wang authored
    The private PAT management is to support PPAT entry manipulation. Two
    APIs are introduced for dynamically managing PPAT entries: intel_ppat_get
    and intel_ppat_put.
    
    intel_ppat_get will search for an existing PPAT entry which perfectly
    matches the required PPAT value. If not, it will try to allocate a new
    entry if there is any available PPAT indexs, or return a partially
    matched PPAT entry if there is no available PPAT indexes.
    
    intel_ppat_put will put back the PPAT entry which comes from
    intel_ppat_get. If it's dynamically allocated, the reference count will
    be decreased. If the reference count turns into zero, the PPAT index is
    freed again.
    
    Besides, another two callbacks are introduced to support the private PAT
    management framework. One is ppat->update_hw(), which writes the PPAT
    configurations in ppat->entries into HW. Another one is ppat->match, which
    will return a score to show how two PPAT values match with each other.
    
    v17:
    
    - Refine the comparision of score of BDW. (Joonas)
    
    v16:
    
    - Fix a bug in PPAT match function of BDW. (Joonas)
    
    v15:
    
    - Refine some code flow. (Joonas)
    
    v12:
    
    - Fix a problem "not returning the entry of best score". (Zhenyu)
    
    v7:
    
    - Keep all the register writes unchanged in this patch. (Joonas)
    
    v6:
    
    - Address all comments from Chris:
    http://www.spinics.net/lists/intel-gfx/msg136850.html
    
    - Address all comments from Joonas:
    http://www.spinics.net/lists/intel-gfx/msg136845.html
    
    v5:
    
    - Add check and warnnings for those platforms which don't have PPAT.
    
    v3:
    
    - Introduce dirty bitmap for PPAT registers. (Chris)
    - Change the name of the pointer "dev_priv" to "i915". (Chris)
    - intel_ppat_{get, put} returns/takes a const intel_ppat_entry *. (Chris)
    
    v2:
    
    - API re-design. (Chris)
    Signed-off-by: default avatarZhi Wang <zhi.a.wang@intel.com>
    Cc: Ben Widawsky <benjamin.widawsky@intel.com>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> #v7
    Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
    [Joonas: Use BIT() in the enum in bdw_private_pat_match]
    Signed-off-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/1505392783-4084-1-git-send-email-zhi.a.wang@intel.com
    4395890a
i915_gem_gtt.c 99.8 KB