[Nouveau] [PATCH envytools] Fix range end to the last value of timing table.
Christian Costa
titan.costa at gmail.com
Thu Aug 28 19:25:04 PDT 2014
Le 28/08/2014 10:27, Martin Peres a écrit :
> On 25/08/2014 21:00, Christian Costa wrote:
>> ---
>> nva/set_timings.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/nva/set_timings.c b/nva/set_timings.c
>> index 7376486..985a707 100644
>> --- a/nva/set_timings.c
>> +++ b/nva/set_timings.c
>> @@ -506,7 +506,7 @@ shallow_dump(struct nvamemtiming_conf *conf)
>> if (conf->range.start == (unsigned char) -1)
>> conf->range.start = 0;
>> if (conf->range.end == (unsigned char) -1)
>> - conf->range.end = conf->vbios.timing_entry_length;
>> + conf->range.end = conf->vbios.timing_entry_length-1;
>> fprintf(stderr, "Shallow mode: Will iterate between %i and
>> %i\n", conf->range.start, conf->range.end);
> Hey
>
> I don't like this patch because it would create an output difference
> between the deep and the shallow test.
> Please check and propose another patch.
Hi Martin,
Yes. You're right. I didn't pay attention to deep_dump.
>
>
> What are you trying to fix by the way? You don't like that range.end
> is not included?
>
I got confused with the message and tought there was an out of the bound
access.
Looking more closely at the code says indeed that range.end is actually
not included.
It doesn't seem straitforward. At least to me. I would change the code
to make range.end included to avoid confusion. What do you think?
By the way, in deep_mode, crange.start and crange.end are calculated but
not used at all. The loop iterates the whole entry:
for (i = 0; i < conf->vbios.timing_entry_length; i++)
Is it normal ?
While I am at it, I tried to understand what deep_mode does. Contrary to
shallow_mode which tests the table value + 1, deep_mode tests
all values between values of 2 entries. The code is as follows:
for (v = initial+1; v <= target; v++) {
conf->vbios.data[conf->vbios.timing_entry_offset + index] = v;
launch(conf, outf, index + 1 , COLOR);
}
It works fine when initial value is lower than the target but does
nothing in the other case. Looks like a bug, no?
Thanks
Christian
More information about the Nouveau
mailing list