From: Ville Syrjälä <[email protected]>

Reject modes whose linetime exceeds 64 usec.

First reason being that WM_LINETIME is limited to (nearly) 64 usec.

Additionally knowing the linetime is bounded will help with
determining whether overflows may be a concern during various
calculations.

I decided to round up, and accept the linetime==64 case. We use
various rounding directions for this in other parts of the code,
so I feel this provides the most consistent result all around.

Reviewed-by: Uma Shankar <[email protected]>
Signed-off-by: Ville Syrjälä <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_display.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index d5b2612d4ec2..4395852e9641 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -7972,6 +7972,14 @@ enum drm_mode_status intel_mode_valid(struct drm_device 
*dev,
            mode->vtotal > vtotal_max)
                return MODE_V_ILLEGAL;
 
+       /*
+        * WM_LINETIME only goes up to (almost) 64 usec, and also
+        * knowing that the linetime is always bounded will ease the
+        * mind during various calculations.
+        */
+       if (DIV_ROUND_UP(mode->htotal * 1000, mode->clock) > 64)
+               return MODE_H_ILLEGAL;
+
        return MODE_OK;
 }
 
-- 
2.49.1

Reply via email to