[PATCH 1/4] drm/radeon: fix and simplify pot argument checks
Michel Dänzer
michel at daenzer.net
Tue Oct 23 05:44:01 PDT 2012
On Die, 2012-10-23 at 14:23 +0200, Christian König wrote:
> GART and VRAM size limits need to be a power of two.
> Fix values greater than 1GB and simplify those checks a bit.
>
> Signed-off-by: Christian König <deathsimple at vodafone.de>
> ---
> drivers/gpu/drm/radeon/radeon_device.c | 55 ++++++++++++--------------------
> 1 file changed, 21 insertions(+), 34 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
> index bd13ca0..3277aa1 100644
> --- a/drivers/gpu/drm/radeon/radeon_device.c
> +++ b/drivers/gpu/drm/radeon/radeon_device.c
> @@ -835,6 +835,19 @@ static unsigned int radeon_vga_set_decode(void *cookie, bool state)
> }
>
> /**
> + * radeon_check_pot_argument - check that argument is a power of two
> + *
> + * @arg: value to check
> + *
> + * Validates that a certain argument is a power of two (all asics).
> + * Returns true if argument is valid.
> + */
> +static bool radeon_ckeck_pot_argument(int arg)
> +{
> + return (arg & ((1 << __fls(arg)) - 1)) == 0;
> +}
This could be simplified as
return (arg & (arg - 1)) == 0;
> - radeon_vram_limit = radeon_vram_limit << 20;
> + radeon_vram_limit = (uint64_t)radeon_vram_limit << 20;
Does this cast have any effect without also changing the type of
radeon_vram_limit to something other than int? If the point is to allow
the shift to set the sign bit, I think casting to unsigned int or
uint32_t would be slightly less confusing, but a comment is probably
warranted anyway to prevent this from getting broken accidentally.
The commit message of patch 2 has a typo (vzmalloc instead of vzalloc),
other than that patches 2-4 are
Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Debian, X and DRI developer
More information about the dri-devel
mailing list