drm/amdgpu/gfx: fix off by one in rb rework (v2)
authorAlex Deucher <alexander.deucher@amd.com>
Wed, 24 Feb 2016 15:06:06 +0000 (10:06 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 25 Feb 2016 22:44:57 +0000 (17:44 -0500)
When I reworked this code, I messed up num rb count.

v2: use hweight32

Reviewed-by: Ken Wang <Qingquing.Wang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c

index 250bcbce7fdc04dd52315b16f03ede53b6ba361b..bc5bdaf3d2bbc56ed12ada6f40e9489846d509cb 100644 (file)
@@ -1635,7 +1635,7 @@ static u32 gfx_v7_0_get_rb_active_bitmap(struct amdgpu_device *adev)
 static void gfx_v7_0_setup_rb(struct amdgpu_device *adev)
 {
        int i, j;
-       u32 data, tmp, num_rbs = 0;
+       u32 data;
        u32 active_rbs = 0;
 
        mutex_lock(&adev->grbm_idx_mutex);
@@ -1655,10 +1655,7 @@ static void gfx_v7_0_setup_rb(struct amdgpu_device *adev)
        mutex_unlock(&adev->grbm_idx_mutex);
 
        adev->gfx.config.backend_enable_mask = active_rbs;
-       tmp = active_rbs;
-       while (tmp >>= 1)
-               num_rbs++;
-       adev->gfx.config.num_rbs = num_rbs;
+       adev->gfx.config.num_rbs = hweight32(active_rbs);
 }
 
 /**
index 10c865087d0a785bda071dff9ba42cf03d89b837..71d536e595a2f8158914c95090eae9fe62c2ccf3 100644 (file)
@@ -2613,7 +2613,7 @@ static u32 gfx_v8_0_get_rb_active_bitmap(struct amdgpu_device *adev)
 static void gfx_v8_0_setup_rb(struct amdgpu_device *adev)
 {
        int i, j;
-       u32 data, tmp, num_rbs = 0;
+       u32 data;
        u32 active_rbs = 0;
 
        mutex_lock(&adev->grbm_idx_mutex);
@@ -2629,10 +2629,7 @@ static void gfx_v8_0_setup_rb(struct amdgpu_device *adev)
        mutex_unlock(&adev->grbm_idx_mutex);
 
        adev->gfx.config.backend_enable_mask = active_rbs;
-       tmp = active_rbs;
-       while (tmp >>= 1)
-               num_rbs++;
-       adev->gfx.config.num_rbs = num_rbs;
+       adev->gfx.config.num_rbs = hweight32(active_rbs);
 }
 
 /**