[PATCH 45/49] drm: Break long EDID reads with cond_resched()
Chris Wilson
chris at chris-wilson.co.uk
Fri Nov 11 20:40:14 UTC 2016
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
---
drivers/gpu/drm/drm_edid.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 6798c3ad9d53..8c6e9b263ad4 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -1319,13 +1319,17 @@ struct edid *drm_do_get_edid(struct drm_connector *connector,
for (i = 0; i < 4; i++) {
if (get_edid_block(data, edid, 0, EDID_LENGTH))
goto out;
+
if (drm_edid_block_valid(edid, 0, false,
&connector->edid_corrupt))
break;
+
if (i == 0 && drm_edid_is_zero(edid, EDID_LENGTH)) {
connector->null_edid_counter++;
goto carp;
}
+
+ cond_resched();
}
if (i == 4)
goto carp;
@@ -1344,8 +1348,11 @@ struct edid *drm_do_get_edid(struct drm_connector *connector,
u8 *block = edid + j * EDID_LENGTH;
for (i = 0; i < 4; i++) {
+ cond_resched();
+
if (get_edid_block(data, block, j, EDID_LENGTH))
goto out;
+
if (drm_edid_block_valid(block, j, false, NULL))
break;
}
--
2.10.2
More information about the Intel-gfx-trybot
mailing list