[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