On 03/18/2016 05:02 PM, Chris Wilson wrote: > Drivers, especially i915.ko, can fail during the initial migration of a > dma-buf for CPU access. However, the error code from the driver was not > being propagated back to ioctl and so userspace was blissfully ignorant > of the failure. Rendering corruption ensues. > > Whilst fixing the ioctl to return the error code from > dma_buf_start_cpu_access(), also do the same for > dma_buf_end_cpu_access(). For most drivers, dma_buf_end_cpu_access() > cannot fail. i915.ko however, as most drivers would, wants to avoid being > uninterruptible (as would be required to guarrantee no failure when > flushing the buffer to the device). As userspace already has to handle > errors from the SYNC_IOCTL, take advantage of this to be able to restart > the syscall across signals. > > This fixes a coherency issue for i915.ko as well as reducing the > uninterruptible hold upon its BKL, the struct_mutex. > > Fixes commit c11e391da2a8fe973c3c2398452000bed505851e > Author: Daniel Vetter <daniel.vetter at ffwll.ch> > Date: Thu Feb 11 20:04:51 2016 -0200 > > dma-buf: Add ioctls to allow userspace to flush > > Testcase: igt/gem_concurrent_blit/*dmabuf*interruptible > Testcase: igt/prime_mmap_coherency/ioctl-errors > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk> > Cc: Tiago Vignatti <tiago.vignatti at intel.com> > Cc: Stéphane Marchesin <marcheu at chromium.org> > Cc: David Herrmann <dh.herrmann at gmail.com> > Cc: Sumit Semwal <sumit.semwal at linaro.org> > Cc: Daniel Vetter <daniel.vetter at intel.com> > CC: linux-media at vger.kernel.org > Cc: dri-devel at lists.freedesktop.org > Cc: linaro-mm-sig at lists.linaro.org > Cc: intel-gfx at lists.freedesktop.org > Cc: devel at driverdev.osuosl.org
Reviewed-by: Tiago Vignatti <tiago.vignatti at intel.com> Best regards, Tiago