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.frederic@gmail.com> Tested by: Frederic Chardon <chardon.frederic@gmail.com>
This commit is contained in:
parent
85a60a7756
commit
538cf7be5e
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user