• Chris Wilson's avatar
    drm/i915: Use a non-blocking wait for set-to-domain ioctl · 3236f57a
    Chris Wilson authored
    
    
    The principal use for set-to-domain is for userspace to serialise
    operations with a particular buffer, for example to maintain coherency
    with a CPU map or to ratelimit its rendering by waiting on all previous
    operations before continuing. As such we tend to hold the struct_mutex
    for long periods during the synchronisation and so cause contention
    issues with other users of the graphics device, even for independent
    operations as memory management. An example is the contention between
    compiz and X which causes jitter in the display and a drop in peak
    throughput.
    
    The ultimate solution would be a set of fine grained locks and lockless
    operations, but an intermediate step is to first attempt the
    synchronisation for set-to-domain without holding the mutex. This
    introduces a number of race conditions, so we limit it use to the ioctl
    periphery where we have no dependent state and can safely complete with
    a locked synchronisation afterwards.
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    3236f57a
i915_gem.c 109 KB