• Chris Wilson's avatar
    drm/i915: Make the physical object coherent with GTT · 6a2c4232
    Chris Wilson authored
    Currently objects for which the hardware needs a contiguous physical
    address are allocated a shadow backing storage to satisfy the contraint.
    This shadow buffer is not wired into the normal obj->pages and so the
    physical object is incoherent with accesses via the GPU, GTT and CPU. By
    setting up the appropriate scatter-gather table, we can allow userspace
    to access the physical object via either a GTT mmaping of or by rendering
    into the GEM bo. However, keeping the CPU mmap of the shmemfs backing
    storage coherent with the contiguous shadow is not yet possible.
    Fortuituously, CPU mmaps of objects requiring physical addresses are not
    expected to be coherent anyway.
    
    This allows the physical constraint of the GEM object to be transparent
    to userspace and allow it to efficiently render into or update them via
    the GTT and GPU.
    
    v2: Fix leak of pci handle spotted by Ville
    v3: Remove the now duplicate call to detach_phys_object during free.
    v4: Wait for rendering before pwrite. As this patch makes it possible to
    render into the phys object, we should make it correct as well!
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    6a2c4232
i915_dma.c 55.6 KB