Author: dumbbell Date: Sat Mar 12 11:54:58 2016 New Revision: 296720 URL: https://svnweb.freebsd.org/changeset/base/296720
Log: drm/i915: Fix page fault handler failure ... when __wait_seqno() is interrupted by a signal. In this case, __wait_seqno() returns -ERESTARTSYS. Like we already do in drm_ioctl(), we need to convert this error to a common code such as -EINTR, so the page fault handler is restarted. Reported by: Frederic Chardon <chardon.frede...@gmail.com> Tested by: Frederic Chardon <chardon.frede...@gmail.com> Modified: head/sys/dev/drm2/i915/i915_gem.c Modified: head/sys/dev/drm2/i915/i915_gem.c ============================================================================== --- head/sys/dev/drm2/i915/i915_gem.c Sat Mar 12 09:44:23 2016 (r296719) +++ head/sys/dev/drm2/i915/i915_gem.c Sat Mar 12 11:54:58 2016 (r296720) @@ -1619,6 +1619,13 @@ out: KASSERT(ret != 0, ("i915_gem_pager_fault: wrong return")); CTR4(KTR_DRM, "fault_fail %p %jx %x err %d", gem_obj, offset, prot, -ret); + if (ret == -ERESTARTSYS) { + /* + * NOTE Linux<->FreeBSD: Convert Linux' -ERESTARTSYS to + * the more common -EINTR, so the page fault is retried. + */ + ret = -EINTR; + } if (ret == -EAGAIN || ret == -EIO || ret == -EINTR) { kern_yield(PRI_USER); goto retry; _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"