drm/ttm: return ENOSPC from ttm_bo_mem_space v3
authorjsg <jsg@openbsd.org>
Mon, 15 Apr 2024 01:42:21 +0000 (01:42 +0000)
committerjsg <jsg@openbsd.org>
Mon, 15 Apr 2024 01:42:21 +0000 (01:42 +0000)
From Christian Koenig
852ad6a4f55c1e90123eff6d957119d4d5f27726 in linux-6.6.y/6.6.27
28e5126718c7b306b8c29d2ae8f48417e9303aa1 in mainline linux

sys/dev/pci/drm/ttm/ttm_bo.c

index ad9b8cf..16f91c2 100644 (file)
@@ -764,7 +764,7 @@ static int ttm_bo_mem_force_space(struct ttm_buffer_object *bo,
  * This function may sleep while waiting for space to become available.
  * Returns:
  * -EBUSY: No space available (only if no_wait == 1).
- * -ENOMEM: Could not allocate memory for the buffer object, either due to
+ * -ENOSPC: Could not allocate space for the buffer object, either due to
  * fragmentation or concurrent allocators.
  * -ERESTARTSYS: An interruptible sleep was interrupted by a signal.
  */
@@ -824,7 +824,7 @@ int ttm_bo_mem_space(struct ttm_buffer_object *bo,
                        goto error;
        }
 
-       ret = -ENOMEM;
+       ret = -ENOSPC;
        if (!type_found) {
                pr_err(TTM_PFX "No compatible memory type found\n");
                ret = -EINVAL;
@@ -910,6 +910,9 @@ int ttm_bo_validate(struct ttm_buffer_object *bo,
                return -EINVAL;
 
        ret = ttm_bo_move_buffer(bo, placement, ctx);
+       /* For backward compatibility with userspace */
+       if (ret == -ENOSPC)
+               return -ENOMEM;
        if (ret)
                return ret;