• Imre Deak's avatar
    drm/i915/gem: Add a helper to read data from a GEM object page · 5fbc2c2b
    Imre Deak authored
    Add a simple helper to read data with the CPU from the page of a GEM
    object. Do the read either via a kmap if the object has struct pages
    or an iomap otherwise. This is needed by the next patch, reading a u64
    value from the object (w/o requiring the obj to be mapped to the GPU).
    
    Suggested by Chris.
    
    v2 (Chris):
    - Sanitize the type and order of func params.
    - Avoid consts requiring too many casts.
    - Use BUG_ON instead of WARN_ON, simplify the conditions.
    - Fix __iomem sparse errors.
    - Leave locking/syncing/pinning up to the caller, require only that the
      caller has pinned the object pages.
    - Check for iomem backing store before reading via an iomap.
    v3:
    - Fix offset passed to io_mapping_map_wc() missing a mem.region.start
      delta. (Chris, Matthew)
    
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Matthew Auld <matthew.william.auld@gmail.com>
    Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
    Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210120213834.1435710-1-imre.deak@intel.com
    5fbc2c2b
i915_gem_object.c 13.6 KB