From: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>
To: intel-xe@lists.freedesktop.org
Cc: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>,
"Christian König" <christian.koenig@amd.com>,
"Matthew Brost" <matthew.brost@intel.com>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
amd-gfx@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
nouveau@lists.freedesktop.org, spice-devel@lists.freedesktop.org,
dri-devel@lists.freedesktop.org,
"Zack Rusin" <zack.rusin@broadcom.com>,
bcm-kernel-feedback-list@broadcom.com,
"Sui Jingfeng" <suijingfeng@loongson.cn>
Subject: [PATCH v2 2/2] drm/ttm: Add a device flag to propagate -ENOSPC on OOM
Date: Wed, 2 Oct 2024 14:24:22 +0200 [thread overview]
Message-ID: <20241002122422.287276-3-thomas.hellstrom@linux.intel.com> (raw)
In-Reply-To: <20241002122422.287276-1-thomas.hellstrom@linux.intel.com>
Some graphics APIs differentiate between out-of-graphics-memory and
out-of-host-memory (system memory). Add a device init flag to
have -ENOSPC propagated from the resource managers instead of being
converted to -ENOMEM, to aid driver stacks in determining what
error code to return or whether corrective action can be taken at
the driver level.
Cc: Christian König <christian.koenig@amd.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
---
drivers/gpu/drm/ttm/ttm_bo.c | 2 +-
drivers/gpu/drm/ttm/ttm_device.c | 1 +
include/drm/ttm/ttm_device.h | 13 +++++++++++++
3 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
index 320592435252..c4bec2ad301b 100644
--- a/drivers/gpu/drm/ttm/ttm_bo.c
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
@@ -835,7 +835,7 @@ int ttm_bo_validate(struct ttm_buffer_object *bo,
/* For backward compatibility with userspace */
if (ret == -ENOSPC)
- return -ENOMEM;
+ return bo->bdev->propagate_enospc ? ret : -ENOMEM;
/*
* We might need to add a TTM.
diff --git a/drivers/gpu/drm/ttm/ttm_device.c b/drivers/gpu/drm/ttm/ttm_device.c
index 0c85d10e5e0b..aee9d52d745b 100644
--- a/drivers/gpu/drm/ttm/ttm_device.c
+++ b/drivers/gpu/drm/ttm/ttm_device.c
@@ -203,6 +203,7 @@ int ttm_device_init(struct ttm_device *bdev, const struct ttm_device_funcs *func
}
bdev->funcs = funcs;
+ bdev->propagate_enospc = flags.propagate_enospc;
ttm_sys_man_init(bdev);
diff --git a/include/drm/ttm/ttm_device.h b/include/drm/ttm/ttm_device.h
index 1534bd946c78..f9da78bbd925 100644
--- a/include/drm/ttm/ttm_device.h
+++ b/include/drm/ttm/ttm_device.h
@@ -266,6 +266,13 @@ struct ttm_device {
* @wq: Work queue structure for the delayed delete workqueue.
*/
struct workqueue_struct *wq;
+
+ /**
+ * @propagate_enospc: Whether -ENOSPC should be propagated to the caller after
+ * graphics memory allocation failure. If false, this will be converted to
+ * -ENOMEM, which is the default behaviour.
+ */
+ bool propagate_enospc;
};
int ttm_global_swapout(struct ttm_operation_ctx *ctx, gfp_t gfp_flags);
@@ -295,6 +302,12 @@ struct ttm_device_init_flags {
u32 use_dma_alloc : 1;
/** @use_dma32: If we should use GFP_DMA32 for device memory allocations. */
u32 use_dma32 : 1;
+ /**
+ * @propagate_enospc: Whether -ENOSPC should be propagated to the caller after
+ * graphics memory allocation failure. If false, this will be converted to
+ * -ENOMEM, which is the default behaviour.
+ */
+ u32 propagate_enospc : 1;
};
int ttm_device_init(struct ttm_device *bdev, const struct ttm_device_funcs *funcs,
--
2.46.0
next prev parent reply other threads:[~2024-10-02 13:34 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-02 12:24 [PATCH v2 0/2] drm/ttm: Add an option to report graphics memory OOM Thomas Hellström
2024-10-02 12:24 ` [PATCH v2 1/2] drm/ttm: Change ttm_device_init to use a struct instead of multiple bools Thomas Hellström
2024-10-02 12:45 ` Christian König
2024-10-02 12:54 ` Thomas Hellström
2024-10-04 14:28 ` Thomas Hellström
2024-10-05 4:14 ` Matthew Brost
2024-10-09 5:56 ` Thomas Hellström
2024-10-02 12:56 ` Jani Nikula
2024-10-03 4:28 ` Zack Rusin
2024-10-04 14:22 ` Thomas Hellström
2024-10-02 12:24 ` Thomas Hellström [this message]
2024-10-02 13:46 ` [PATCH v2 2/2] drm/ttm: Add a device flag to propagate -ENOSPC on OOM Christian König
2024-10-02 14:04 ` ✓ Fi.CI.BAT: success for drm/ttm: Add an option to report graphics memory OOM (rev2) Patchwork
2024-10-03 4:51 ` ✓ CI.Patch_applied: " Patchwork
2024-10-03 4:52 ` ✓ CI.checkpatch: " Patchwork
2024-10-03 4:53 ` ✓ CI.KUnit: " Patchwork
2024-10-03 5:04 ` ✓ CI.Build: " Patchwork
2024-10-03 5:07 ` ✓ CI.Hooks: " Patchwork
2024-10-03 5:08 ` ✗ CI.checksparse: warning " Patchwork
2024-10-03 5:29 ` ✓ CI.BAT: success " Patchwork
2024-10-03 6:47 ` ✗ CI.FULL: failure " Patchwork
2024-10-03 13:09 ` ✗ Fi.CI.IGT: " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241002122422.287276-3-thomas.hellstrom@linux.intel.com \
--to=thomas.hellstrom@linux.intel.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=christian.koenig@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=matthew.brost@intel.com \
--cc=nouveau@lists.freedesktop.org \
--cc=spice-devel@lists.freedesktop.org \
--cc=suijingfeng@loongson.cn \
--cc=tzimmermann@suse.de \
--cc=zack.rusin@broadcom.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.