[lvc-project] [PATCH v2] drm/mgag200: Apply upper limit for clock variable
Jocelyn Falempe
jfalempe at redhat.com
Thu Nov 14 18:16:58 UTC 2024
On 14/11/2024 19:05, Fedor Pchelkin wrote:
> On Thu, 14. Nov 17:47, Jocelyn Falempe wrote:
>> On 11/11/2024 17:33, Murad Masimov wrote:
>>> If the value of the clock variable is higher than 800000, the value of the
>>> variable m, which is used as a divisor, will remain zero, because
>>> (clock * testp) will be higher than vcomax in every loop iteration, which
>>> leads to skipping every iteration and leaving variable m unmodified.
>>>
>>> Clamp value of the clock variable between the lower and the upper limits.
>>> It should be correct, since there is already a similar lower limit check.
>>
>> I don't think it is correct.
>>
>> If the clock asked is > 800000, then delta > premitteddelta, and it will
>> return -EINVAL.
>
> In many cases when clock is > 800000, the check won't be reached as the
> division by "m" variable containing a zero value will have occured just
> before.
>
>> With your patch it will instead configure the clock to 800000 which is too
>> low for the mode asked and will result in corrupted output.
>
> Worth moving the check just after the loop or e.g. explicitly denying
> clocks > 800000 at the beginning of the function?
>
I think it's better to check just after the for loop, if m is still 0,
just return -EINVAL.
More information about the dri-devel
mailing list