From: Rodrigo Siqueira <[email protected]>
When running the kms_writeback test, we can see the failure in the test
invalid-mode:
Starting subtest: invalid-mode
(kms_writeback:1101) CRITICAL: Test assertion failure function do_invalid_mode,
file ../tests/kms_writeback.c:469:
(kms_writeback:1101) CRITICAL: Failed assertion: ret != 0
(kms_writeback:1101) CRITICAL: error: 0 == 0
Subtest invalid-mode failed.
**** DEBUG ****
(kms_writeback:1101) DEBUG: Test requirement passed: !(data.dump_check ||
data.list_modes)
(kms_writeback:1101) igt_fb-DEBUG: igt_create_fb_with_bo_size(width=5120,
height=2880, format=XB24(0x34324258), modifier=0x0, size=0)
(kms_writeback:1101) igt_fb-DEBUG: igt_create_fb_with_bo_size(handle=6,
pitch=20480)
(kms_writeback:1101) ioctl_wrappers-DEBUG: Test requirement passed:
igt_has_fb_modifiers(fd)
(kms_writeback:1101) igt_kms-DEBUG: display: commit {
(kms_writeback:1101) igt_kms-DEBUG: Pipe A: Setting property "MODE_ID" to
0x1b8/440
(kms_writeback:1101) igt_kms-DEBUG: display: Writeback-1: preparing atomic,
pipe: A
(kms_writeback:1101) igt_kms-DEBUG: Writeback-1: Setting property "CRTC_ID" to
0x97/151
(kms_writeback:1101) igt_kms-DEBUG: Writeback-1: Setting property
"WRITEBACK_FB_ID" to 0x1b9/441
(kms_writeback:1101) igt_kms-DEBUG: Writeback-1: Setting property
"WRITEBACK_OUT_FENCE_PTR" to 0x7ffdb79337b4/140727683332020
(kms_writeback:1101) igt_kms-DEBUG: display: }
(kms_writeback:1101) CRITICAL: Test assertion failure function do_invalid_mode,
file ../tests/kms_writeback.c:469:
(kms_writeback:1101) CRITICAL: Failed assertion: ret != 0
(kms_writeback:1101) CRITICAL: error: 0 == 0
Notice that the test is trying to set up 5120x2880, which is outside the
Intel writeback mode. To address this issue, add writeback mode
validation to the writeback atomic check path.
Signed-off-by: Rodrigo Siqueira <[email protected]>
---
drivers/gpu/drm/i915/display/intel_writeback.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_writeback.c
b/drivers/gpu/drm/i915/display/intel_writeback.c
index 9808ee2092ef..2c641ec09287 100644
--- a/drivers/gpu/drm/i915/display/intel_writeback.c
+++ b/drivers/gpu/drm/i915/display/intel_writeback.c
@@ -226,6 +226,9 @@ static int intel_writeback_atomic_check(struct
drm_connector *connector,
fb->height != crtc_state->mode.vdisplay)
return -EINVAL;
+ if (intel_writeback_mode_valid(connector, &crtc_state->mode) != MODE_OK)
+ return -EINVAL;
+
ret = intel_writeback_check_format(fb->format->format);
if (ret) {
drm_dbg_kms(connector->dev,
--
2.43.0