From: Arun R Murthy <arun.r.murthy@intel.com>
To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>,
Simona Vetter <simona@ffwll.ch>,
Jani Nikula <jani.nikula@linux.intel.com>,
Rodrigo Vivi <rodrigo.vivi@intel.com>,
Joonas Lahtinen <joonas.lahtinen@linux.intel.com>,
Tvrtko Ursulin <tursulin@ursulin.net>,
xaver.hugl@kde.org, harry.wentland@amd.com,
uma.shankar@intel.com, louis.chauvet@bootlin.com,
naveen1.kumar@intel.com, ramya.krishna.yella@intel.com
Cc: "Imported from f20260210-atomic-v9-5-525c88fd2402"@intel.com,
dri-devel@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
Arun R Murthy <arun.r.murthy@intel.com>,
Suraj Kandpal <suraj.kandpal@intel.com>
Subject: [PATCH v10 2/7] drm/atomic: Add error_code element in atomic_state
Date: Mon, 23 Feb 2026 14:46:00 +0530 [thread overview]
Message-ID: <20260223-atomic-v10-2-f59c8def2e70@intel.com> (raw)
In-Reply-To: <20260223-atomic-v10-0-f59c8def2e70@intel.com>
Now that a proper error code will be returned to the user on any failure
in atomic_ioctl() via struct drm_mode_atomic, add a new element
error_code in the struct drm_atomic_state so as to hold the error code
during the atomic_check() and atomic_commit() phases.
New function added to print the error message and fill the struct
err_code with proper error message and error code.
v5: Add a function for printing the error message and filling err_code
struct
v6: Replace drm_err with drm_dbg_atomic print
v6: Add keyword "commit failed" in dbg msg (Suraj)
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
---
drivers/gpu/drm/drm_atomic.c | 31 +++++++++++++++++++++++++++++++
include/drm/drm_atomic.h | 10 ++++++++++
2 files changed, 41 insertions(+)
diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index 04925166df989bcb30b111739aa4ed5c84f3a5ae..5fd5cc4da99cea51c06da3e5f5603d9c018d4600 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -2122,6 +2122,37 @@ void drm_state_dump(struct drm_device *dev, struct drm_printer *p)
}
EXPORT_SYMBOL(drm_state_dump);
+/**
+ * drm_mode_atomic_add_error_msg - function to add error code and error string
+ *
+ * @err_code: pointer to struct drm_mode_atomic_err_code that stores the failure
+ * reason
+ * @failure_code: failure code in enum drm_mode_atomic_failure_codes
+ * @failure_string: failure reason string message
+ *
+ * Returns: void
+ */
+void drm_mode_atomic_add_error_msg(struct drm_mode_atomic_err_code *err_code,
+ __u64 failure_code, const char *format, ...)
+{
+ struct drm_atomic_state *state = container_of(err_code,
+ struct drm_atomic_state,
+ error_code);
+ va_list varg;
+ char *failure_string;
+
+ err_code->failure_code = failure_code;
+
+ va_start(varg, format);
+ failure_string = kvasprintf(GFP_ATOMIC, format, varg);
+
+ drm_dbg_atomic(state->dev, "Commit failed: %s\n", failure_string);
+ strscpy_pad(err_code->failure_string, failure_string,
+ sizeof(err_code->failure_string));
+ va_end(varg);
+}
+EXPORT_SYMBOL(drm_mode_atomic_add_error_msg);
+
#ifdef CONFIG_DEBUG_FS
static int drm_state_info(struct seq_file *m, void *data)
{
diff --git a/include/drm/drm_atomic.h b/include/drm/drm_atomic.h
index 0b1b32bcd2bda1b92299fd369ba7c23b1c2d3dfa..e26e68a955d33c2f7caa50b89ccb7d66c2c430d8 100644
--- a/include/drm/drm_atomic.h
+++ b/include/drm/drm_atomic.h
@@ -646,6 +646,13 @@ struct drm_atomic_state {
* commit without blocking.
*/
struct work_struct commit_work;
+
+ /* @error_code: pointer to struct holding failure reason and string
+ *
+ * struct to convey user readable error to the user.
+ * Error codes defined in enum drm_mode_atomic_failure_flags
+ */
+ struct drm_mode_atomic_err_code error_code;
};
void __drm_crtc_commit_free(struct kref *kref);
@@ -1373,5 +1380,8 @@ drm_atomic_get_old_bridge_state(const struct drm_atomic_state *state,
struct drm_bridge_state *
drm_atomic_get_new_bridge_state(const struct drm_atomic_state *state,
struct drm_bridge *bridge);
+__printf(3, 4)
+void drm_mode_atomic_add_error_msg(struct drm_mode_atomic_err_code *err_code,
+ __u64 failure_code, const char *format, ...);
#endif /* DRM_ATOMIC_H_ */
--
2.25.1
next prev parent reply other threads:[~2026-02-23 9:17 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-23 9:15 [PATCH v10 0/7] User readable error codes on atomic_ioctl failure Arun R Murthy
2026-02-23 9:15 ` [PATCH v10 1/7] drm: Define user readable error codes for atomic ioctl Arun R Murthy
2026-02-23 9:16 ` Arun R Murthy [this message]
2026-02-23 9:16 ` [PATCH v10 3/7] drm/atomic: Call complete_signaling only if prepare_signaling is done Arun R Murthy
2026-02-23 9:16 ` [PATCH v10 4/7] drm/atomic: Allocate atomic_state at the beginning of atomic_ioctl Arun R Murthy
2026-02-23 9:16 ` [PATCH v10 5/7] drm/atomic: Return user readable error in atomic_ioctl Arun R Murthy
2026-02-23 9:16 ` [PATCH v10 6/7] drm/i915/display: Error codes for async flip failures Arun R Murthy
2026-02-23 9:16 ` [PATCH v10 7/7] drm: Introduce DRM_CAP_ATOMIC_ERROR_REPORTING Arun R Murthy
2026-02-23 9:24 ` ✗ CI.checkpatch: warning for User readable error codes on atomic_ioctl failure (rev9) Patchwork
2026-02-23 9:25 ` ✓ CI.KUnit: success " Patchwork
2026-02-23 10:02 ` ✓ Xe.CI.BAT: " Patchwork
2026-02-23 10:07 ` [PATCH v10 0/7] User readable error codes on atomic_ioctl failure Murthy, Arun R
2026-02-24 7:07 ` Ville Syrjälä
2026-02-24 7:16 ` Murthy, Arun R
2026-02-24 8:46 ` Ville Syrjälä
2026-02-24 8:54 ` Murthy, Arun R
2026-02-24 9:03 ` Ville Syrjälä
2026-02-24 9:28 ` Jani Nikula
2026-02-24 9:31 ` Murthy, Arun R
2026-02-24 12:07 ` Jani Nikula
2026-03-18 15:26 ` Xaver Hugl
2026-04-20 6:09 ` B, Jeevan
2026-02-23 11:09 ` ✗ i915.CI.BAT: failure for User readable error codes on atomic_ioctl failure (rev9) Patchwork
2026-02-23 23:32 ` ✗ Xe.CI.FULL: " Patchwork
2026-03-18 15:05 ` [PATCH v10 0/7] User readable error codes on atomic_ioctl failure Xaver Hugl
2026-03-23 6:07 ` Murthy, Arun R
2026-03-23 21:19 ` Xaver Hugl
2026-03-24 4:46 ` Murthy, Arun R
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=20260223-atomic-v10-2-f59c8def2e70@intel.com \
--to=arun.r.murthy@intel.com \
--cc="Imported from f20260210-atomic-v9-5-525c88fd2402"@intel.com \
--cc=airlied@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=harry.wentland@amd.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=joonas.lahtinen@linux.intel.com \
--cc=louis.chauvet@bootlin.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=naveen1.kumar@intel.com \
--cc=ramya.krishna.yella@intel.com \
--cc=rodrigo.vivi@intel.com \
--cc=simona@ffwll.ch \
--cc=suraj.kandpal@intel.com \
--cc=tursulin@ursulin.net \
--cc=tzimmermann@suse.de \
--cc=uma.shankar@intel.com \
--cc=xaver.hugl@kde.org \
/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.