Skip to contentSkip to conversation

drm/radeon: Use hweight32

PATCH New Akinobu Mita 2 participants 4 messages Nov 9, 2012 – Nov 14, 2012

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 drm/radeon: Use hweight32

Use hweight32 instead of counting for each bit

---
 drivers/gpu/drm/radeon/r600.c    | 8 +-------
 drivers/gpu/drm/radeon/r600_cp.c | 7 +------
 2 files changed, 2 insertions(+), 13 deletions(-)
drivers/gpu/drm/radeon/r600.c +1 -7
index cda280d..169ecc9 100644
@@ -1424,13 +1424,7 @@ u32 r6xx_remap_render_backend(struct radeon_device *rdev,
 
 int r600_count_pipe_bits(uint32_t val)
 {
-	int i, ret = 0;
-
-	for (i = 0; i < 32; i++) {
-		ret += val & 1;
-		val >>= 1;
-	}
-	return ret;
+	return hweight32(val);
 }
 
 static void r600_gpu_init(struct radeon_device *rdev)
drivers/gpu/drm/radeon/r600_cp.c +1 -6
index 2514123..be85f75 100644
@@ -721,12 +721,7 @@ static u32 r600_get_tile_pipe_to_backend_map(u32 num_tile_pipes,
 
 static int r600_count_pipe_bits(uint32_t val)
 {
-	int i, ret = 0;
-	for (i = 0; i < 32; i++) {
-		ret += val & 1;
-		val >>= 1;
-	}
-	return ret;
+	return hweight32(val);
 }
 
 static void r600_gfx_init(struct drm_device *dev,
Signature · 1 line
1.7.11.7
#1 lore raw

PATCH 1/1 drm: use memchr_inv()

Use memchr_inv() to check the specified memory region is filled with zero.

---
 drivers/gpu/drm/drm_edid.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)
drivers/gpu/drm/drm_edid.c +2 -5
index fadcd44..59260bf 100644
@@ -307,12 +307,9 @@ drm_do_probe_ddc_edid(struct i2c_adapter *adapter, unsigned char *buf,
 
 static bool drm_edid_is_zero(u8 *in_edid, int length)
 {
-	int i;
-	u32 *raw_edid = (u32 *)in_edid;
+	if (memchr_inv(in_edid, 0, length))
+		return false;
 
-	for (i = 0; i < length / 4; i++)
-		if (*(raw_edid + i) != 0)
-			return false;
 	return true;
 }
 
Signature · 1 line
1.7.11.7
#2 lore raw

PATCH 1/1 drm/ttm: remove unneeded preempt_disable/enable

In reply to Akinobu Mita

It is unnecessary to disable preemption explicitly while calling copy_highpage(). Because copy_highpage() will do it again through kmap_atomic/kunmap_atomic.

---
 drivers/gpu/drm/ttm/ttm_tt.c | 4 ----
 1 file changed, 4 deletions(-)
drivers/gpu/drm/ttm/ttm_tt.c +0 -4
index bf82601..7d759a4 100644
@@ -308,9 +308,7 @@ int ttm_tt_swapin(struct ttm_tt *ttm)
 		if (unlikely(to_page == NULL))
 			goto out_err;
 
-		preempt_disable();
 		copy_highpage(to_page, from_page);
-		preempt_enable();
 		page_cache_release(from_page);
 	}
 
@@ -358,9 +356,7 @@ int ttm_tt_swapout(struct ttm_tt *ttm, struct file *persistent_swap_storage)
 			ret = PTR_ERR(to_page);
 			goto out_err;
 		}
-		preempt_disable();
 		copy_highpage(to_page, from_page);
-		preempt_enable();
 		set_page_dirty(to_page);
 		mark_page_accessed(to_page);
 		page_cache_release(to_page);
Signature · 1 line
1.7.11.7
Reviewed-by on v1 1/1
#3 lore raw

Re: [PATCH] drm/ttm: remove unneeded preempt_disable/enable

Quoted 26 lines · Akinobu Mita

It is unnecessary to disable preemption explicitly while calling copy_highpage(). Because copy_highpage() will do it again through kmap_atomic/kunmap_atomic.

---
  drivers/gpu/drm/ttm/ttm_tt.c | 4 ----
  1 file changed, 4 deletions(-)
drivers/gpu/drm/ttm/ttm_tt.c +0 -2
index bf82601..7d759a4 100644
@@ -308,9 +308,7 @@ int ttm_tt_swapin(struct ttm_tt *ttm)
  		if (unlikely(to_page == NULL))
  			goto out_err;
 
-		preempt_disable();
  		copy_highpage(to_page, from_page);
-		preempt_enable();
  		page_cache_release(from_page);
  	}
 

drivers/gpu/drm/ttm/ttm_tt.c int ttm_tt_swapout(struct ttm_tt *ttm, struct file *persistent_swap_storage) · line 362

Quoted 9 lines
drivers/gpu/drm/ttm/ttm_tt.c +0 -2
@@ -358,9 +356,7 @@ int ttm_tt_swapout(struct ttm_tt *ttm, struct file *persistent_swap_storage)
  			ret = PTR_ERR(to_page);
  			goto out_err;
  		}
-		preempt_disable();
  		copy_highpage(to_page, from_page);
-		preempt_enable();
  		set_page_dirty(to_page);
  		mark_page_accessed(to_page);
  		page_cache_release(to_page);