Message ID | 5249276.tkZ1gbxakA@wuerfel (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Jan 01, 2016 at 02:07:41PM +0100, Arnd Bergmann wrote: > The newly added code for Fiji creates a correct compiler warning > about invalid use of the do_div macro: > > In file included from powerplay/hwmgr/ppatomctrl.c:31:0: > drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/ppevvmath.h: In function 'fDivide': > drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/ppevvmath.h:382:89: warning: comparison of distinct pointer types lacks a cast > do_div(longlongX, longlongY); /*Q(32,32) divided by Q(16,16) = Q(16,16) Back to original format */ > > do_div() divides an unsigned 64-bit number by an unsigned 32-bit number. > The code instead wants to divide two signed 64-bit numbers, which is done > using the div64_s64 function. > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > Fixes: 770911a3cfbb ("drm/amd/powerplay: add/update headers for Fiji SMU and DPM") > --- > Found on ARM allmodconfig on yesterday's linux-next Reviewed-by: Thierry Reding <treding@nvidia.com>
On 01.01.2016 14:07, Arnd Bergmann wrote: > The newly added code for Fiji creates a correct compiler warning > about invalid use of the do_div macro: > > In file included from powerplay/hwmgr/ppatomctrl.c:31:0: > drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/ppevvmath.h: In function 'fDivide': > drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/ppevvmath.h:382:89: warning: comparison of distinct pointer types lacks a cast > do_div(longlongX, longlongY); /*Q(32,32) divided by Q(16,16) = Q(16,16) Back to original format */ > > do_div() divides an unsigned 64-bit number by an unsigned 32-bit number. > The code instead wants to divide two signed 64-bit numbers, which is done > using the div64_s64 function. > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Christian König <christian.koenig@amd.com> > Fixes: 770911a3cfbb ("drm/amd/powerplay: add/update headers for Fiji SMU and DPM") > --- > Found on ARM allmodconfig on yesterday's linux-next > > diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h b/drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h > index 42f2423cddea..411cb0fcdf98 100644 > --- a/drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h > +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h > @@ -379,7 +379,7 @@ fInt fDivide (fInt X, fInt Y) > > longlongX = longlongX << 16; /*Q(16,16) -> Q(32,32) */ > > - do_div(longlongX, longlongY); /*Q(32,32) divided by Q(16,16) = Q(16,16) Back to original format */ > + div64_s64(longlongX, longlongY); /*Q(32,32) divided by Q(16,16) = Q(16,16) Back to original format */ > > fQuotient.full = (int)longlongX; > return fQuotient; >
On Fri, Jan 1, 2016 at 8:07 AM, Arnd Bergmann <arnd@arndb.de> wrote: > The newly added code for Fiji creates a correct compiler warning > about invalid use of the do_div macro: > > In file included from powerplay/hwmgr/ppatomctrl.c:31:0: > drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/ppevvmath.h: In function 'fDivide': > drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/ppevvmath.h:382:89: warning: comparison of distinct pointer types lacks a cast > do_div(longlongX, longlongY); /*Q(32,32) divided by Q(16,16) = Q(16,16) Back to original format */ > > do_div() divides an unsigned 64-bit number by an unsigned 32-bit number. > The code instead wants to divide two signed 64-bit numbers, which is done > using the div64_s64 function. > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > Fixes: 770911a3cfbb ("drm/amd/powerplay: add/update headers for Fiji SMU and DPM") Applied. thanks! Alex > --- > Found on ARM allmodconfig on yesterday's linux-next > > diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h b/drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h > index 42f2423cddea..411cb0fcdf98 100644 > --- a/drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h > +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h > @@ -379,7 +379,7 @@ fInt fDivide (fInt X, fInt Y) > > longlongX = longlongX << 16; /*Q(16,16) -> Q(32,32) */ > > - do_div(longlongX, longlongY); /*Q(32,32) divided by Q(16,16) = Q(16,16) Back to original format */ > + div64_s64(longlongX, longlongY); /*Q(32,32) divided by Q(16,16) = Q(16,16) Back to original format */ > > fQuotient.full = (int)longlongX; > return fQuotient; > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h b/drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h index 42f2423cddea..411cb0fcdf98 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h @@ -379,7 +379,7 @@ fInt fDivide (fInt X, fInt Y) longlongX = longlongX << 16; /*Q(16,16) -> Q(32,32) */ - do_div(longlongX, longlongY); /*Q(32,32) divided by Q(16,16) = Q(16,16) Back to original format */ + div64_s64(longlongX, longlongY); /*Q(32,32) divided by Q(16,16) = Q(16,16) Back to original format */ fQuotient.full = (int)longlongX; return fQuotient;
The newly added code for Fiji creates a correct compiler warning about invalid use of the do_div macro: In file included from powerplay/hwmgr/ppatomctrl.c:31:0: drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/ppevvmath.h: In function 'fDivide': drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/ppevvmath.h:382:89: warning: comparison of distinct pointer types lacks a cast do_div(longlongX, longlongY); /*Q(32,32) divided by Q(16,16) = Q(16,16) Back to original format */ do_div() divides an unsigned 64-bit number by an unsigned 32-bit number. The code instead wants to divide two signed 64-bit numbers, which is done using the div64_s64 function. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Fixes: 770911a3cfbb ("drm/amd/powerplay: add/update headers for Fiji SMU and DPM") --- Found on ARM allmodconfig on yesterday's linux-next