Message ID | 20230707111157.209432-1-arnd@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] drm/amdgpu: avoid integer overflow warning in amdgpu_device_resize_fb_bar() | expand |
Am 07.07.23 um 13:11 schrieb Arnd Bergmann: > From: Arnd Bergmann <arnd@arndb.de> > > On 32-bit architectures comparing a resource against a value larger than > U32_MAX can cause a warning: > > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:1344:18: error: result of comparison of constant 4294967296 with expression of type 'resource_size_t' (aka 'unsigned int') is always false [-Werror,-Wtautological-constant-out-of-range-compare] > res->start > 0x100000000ull) > ~~~~~~~~~~ ^ ~~~~~~~~~~~~~~ > > As gcc does not warn about this in dead code, add an IS_ENABLED() check at > the start of the function. This will always return success but not actually resize > the BAR on 32-bit architectures without high memory, which is exactly what > we want here, as the driver can fall back to bank switching the VRAM > access. > > Fixes: 31b8adab3247e ("drm/amdgpu: require a root bus window above 4GB for BAR resize") > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Christian König <christian.koenig@amd.com> > --- > v2: return early instead of shutting up the warning with a cast and > running into a failure > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > index 7f069e1731fee..fcf5f07c47751 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@ -1325,6 +1325,9 @@ int amdgpu_device_resize_fb_bar(struct amdgpu_device *adev) > u16 cmd; > int r; > > + if (!IS_ENABLED(CONFIG_PHYS_ADDR_T_64BIT)) > + return 0; > + > /* Bypass for VF */ > if (amdgpu_sriov_vf(adev)) > return 0;
Applied. thanks! On Fri, Jul 7, 2023 at 7:47 AM Christian König <christian.koenig@amd.com> wrote: > > Am 07.07.23 um 13:11 schrieb Arnd Bergmann: > > From: Arnd Bergmann <arnd@arndb.de> > > > > On 32-bit architectures comparing a resource against a value larger than > > U32_MAX can cause a warning: > > > > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:1344:18: error: result of comparison of constant 4294967296 with expression of type 'resource_size_t' (aka 'unsigned int') is always false [-Werror,-Wtautological-constant-out-of-range-compare] > > res->start > 0x100000000ull) > > ~~~~~~~~~~ ^ ~~~~~~~~~~~~~~ > > > > As gcc does not warn about this in dead code, add an IS_ENABLED() check at > > the start of the function. This will always return success but not actually resize > > the BAR on 32-bit architectures without high memory, which is exactly what > > we want here, as the driver can fall back to bank switching the VRAM > > access. > > > > Fixes: 31b8adab3247e ("drm/amdgpu: require a root bus window above 4GB for BAR resize") > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > > Reviewed-by: Christian König <christian.koenig@amd.com> > > > --- > > v2: return early instead of shutting up the warning with a cast and > > running into a failure > > --- > > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > > index 7f069e1731fee..fcf5f07c47751 100644 > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > > @@ -1325,6 +1325,9 @@ int amdgpu_device_resize_fb_bar(struct amdgpu_device *adev) > > u16 cmd; > > int r; > > > > + if (!IS_ENABLED(CONFIG_PHYS_ADDR_T_64BIT)) > > + return 0; > > + > > /* Bypass for VF */ > > if (amdgpu_sriov_vf(adev)) > > return 0; >
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index 7f069e1731fee..fcf5f07c47751 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -1325,6 +1325,9 @@ int amdgpu_device_resize_fb_bar(struct amdgpu_device *adev) u16 cmd; int r; + if (!IS_ENABLED(CONFIG_PHYS_ADDR_T_64BIT)) + return 0; + /* Bypass for VF */ if (amdgpu_sriov_vf(adev)) return 0;