Message ID | 5624E21E02000078000AC48B@prv-mh.provo.novell.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
>>> On 20.10.15 at 16:47, <mathieu.larouche@matrox.com> wrote: > On 19/10/2015 6:29 AM, Jan Beulich wrote: >> --- 4.3-rc6/drivers/gpu/drm/mgag200/mgag200_mode.c >> +++ 4.3-rc6-mgag200-uninit/drivers/gpu/drm/mgag200/mgag200_mode.c >> @@ -194,7 +194,7 @@ static int mga_g200se_set_plls(struct mg >> } >> } >> >> - fvv = pllreffreq * testn / testm; >> + fvv = pllreffreq * n / m; >> fvv = (fvv - 800000) / 50000; >> >> if (fvv > 15) >> > If you are using n/m instead of testn/testm, you need to > add 1 to the variables to keep consistency. However, you > have the same issue where m/n could be used without being > initialized. So, I propose to keep testm, testn & testp > and initialized them with the default value. That makes them initialized, but since testn and testm are used as loop variables I don't see how initializing them to default values helps overcome the other half of the problem described (them having a constant, pre-determined value at the end of the loops: testn=257, testm=33). As to testp - it is always initialized anyway (so long as P_ARRAY_SIZE is not zero). And in the if() branch initialization isn't needed either, since the variables aren't being used after the loops. Jan
On 20/10/2015 11:00 AM, Jan Beulich wrote: >>>> On 20.10.15 at 16:47, <mathieu.larouche@matrox.com> wrote: >> On 19/10/2015 6:29 AM, Jan Beulich wrote: >>> --- 4.3-rc6/drivers/gpu/drm/mgag200/mgag200_mode.c >>> +++ 4.3-rc6-mgag200-uninit/drivers/gpu/drm/mgag200/mgag200_mode.c >>> @@ -194,7 +194,7 @@ static int mga_g200se_set_plls(struct mg >>> } >>> } >>> >>> - fvv = pllreffreq * testn / testm; >>> + fvv = pllreffreq * n / m; >>> fvv = (fvv - 800000) / 50000; >>> >>> if (fvv > 15) >>> >> If you are using n/m instead of testn/testm, you need to >> add 1 to the variables to keep consistency. However, you >> have the same issue where m/n could be used without being >> initialized. So, I propose to keep testm, testn & testp >> and initialized them with the default value. > That makes them initialized, but since testn and testm are used > as loop variables I don't see how initializing them to default > values helps overcome the other half of the problem described > (them having a constant, pre-determined value at the end of > the loops: testn=257, testm=33). As to testp - it is always > initialized anyway (so long as P_ARRAY_SIZE is not zero). And > in the if() branch initialization isn't needed either, since the > variables aren't being used after the loops. > > Jan > > Sorry, I missed that part in your initial comment and you are right, there's an issue there. So, your proposed patch totally make sense, you only need to add 1 to m/n.
--- 4.3-rc6/drivers/gpu/drm/mgag200/mgag200_mode.c +++ 4.3-rc6-mgag200-uninit/drivers/gpu/drm/mgag200/mgag200_mode.c @@ -194,7 +194,7 @@ static int mga_g200se_set_plls(struct mg } } - fvv = pllreffreq * testn / testm; + fvv = pllreffreq * n / m; fvv = (fvv - 800000) / 50000; if (fvv > 15)
I can only guess that instead of testm/testn (which are either uninitialized or have pre-determined values at the end of the preceding loops) n and m were meant to be used by commit e829d7ef9f ("drm/mgag200: Add support for a new rev of G200e"). In any event the compiler is right in warning that testm/testn are possibly uninitalized at this point, i.e. some change is needed no matter what. Signed-off-by: Jan Beulich <jbeulich@suse.com> Cc: Mathieu Larouche <mathieu.larouche@matrox.com> --- drivers/gpu/drm/mgag200/mgag200_mode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)