summaryrefslogtreecommitdiffstats
path: root/sys/dev/drm2/i915/i915_gem.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/drm2/i915/i915_gem.c')
-rw-r--r--sys/dev/drm2/i915/i915_gem.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/dev/drm2/i915/i915_gem.c b/sys/dev/drm2/i915/i915_gem.c
index bece6b2..7789e36 100644
--- a/sys/dev/drm2/i915/i915_gem.c
+++ b/sys/dev/drm2/i915/i915_gem.c
@@ -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;
@@ -3263,7 +3270,7 @@ i915_gem_object_bind_to_gtt(struct drm_i915_gem_object *obj,
i915_gem_object_pin_pages(obj);
- node = malloc(sizeof(*node), DRM_I915_GEM, M_NOWAIT | M_ZERO);
+ node = malloc(sizeof(*node), DRM_MEM_MM, M_NOWAIT | M_ZERO);
if (node == NULL) {
i915_gem_object_unpin_pages(obj);
return -ENOMEM;
@@ -3286,7 +3293,7 @@ i915_gem_object_bind_to_gtt(struct drm_i915_gem_object *obj,
goto search_free;
i915_gem_object_unpin_pages(obj);
- free(node, DRM_I915_GEM);
+ free(node, DRM_MEM_MM);
return ret;
}
if (WARN_ON(!i915_gem_valid_gtt_space(dev, node, obj->cache_level))) {
OpenPOWER on IntegriCloud