diff mbox

[1/2] drm/i915: Process page flags once rather than per pwrite/pread

Message ID 1394181037-30480-1-git-send-email-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Chris Wilson March 7, 2014, 8:30 a.m. UTC
We used to lock individual pages inside the buffer object and so needed
to update the page flags every time. However, we now pin the pages into
the object for the duration of the pwrite/pread (and hopefully much
longer) and so we can forgo the flag updates until we release all the
pages.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/i915_gem.c | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

Comments

bradley.d.volkin@intel.com March 7, 2014, 6:14 p.m. UTC | #1
Reviewed-by: Brad Volkin <bradley.d.volkin@intel.com>

On Fri, Mar 07, 2014 at 12:30:36AM -0800, Chris Wilson wrote:
> We used to lock individual pages inside the buffer object and so needed
> to update the page flags every time. However, we now pin the pages into
> the object for the duration of the pwrite/pread (and hopefully much
> longer) and so we can forgo the flag updates until we release all the
> pages.
> 
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> ---
>  drivers/gpu/drm/i915/i915_gem.c | 9 ++-------
>  1 file changed, 2 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index ba7dc4868066..877afb2c576d 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -627,12 +627,10 @@ i915_gem_shmem_pread(struct drm_device *dev,
>  
>  		mutex_lock(&dev->struct_mutex);
>  
> -next_page:
> -		mark_page_accessed(page);
> -
>  		if (ret)
>  			goto out;
>  
> +next_page:
>  		remain -= page_length;
>  		user_data += page_length;
>  		offset += page_length;
> @@ -950,13 +948,10 @@ i915_gem_shmem_pwrite(struct drm_device *dev,
>  
>  		mutex_lock(&dev->struct_mutex);
>  
> -next_page:
> -		set_page_dirty(page);
> -		mark_page_accessed(page);
> -
>  		if (ret)
>  			goto out;
>  
> +next_page:
>  		remain -= page_length;
>  		user_data += page_length;
>  		offset += page_length;
> -- 
> 1.9.0
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index ba7dc4868066..877afb2c576d 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -627,12 +627,10 @@  i915_gem_shmem_pread(struct drm_device *dev,
 
 		mutex_lock(&dev->struct_mutex);
 
-next_page:
-		mark_page_accessed(page);
-
 		if (ret)
 			goto out;
 
+next_page:
 		remain -= page_length;
 		user_data += page_length;
 		offset += page_length;
@@ -950,13 +948,10 @@  i915_gem_shmem_pwrite(struct drm_device *dev,
 
 		mutex_lock(&dev->struct_mutex);
 
-next_page:
-		set_page_dirty(page);
-		mark_page_accessed(page);
-
 		if (ret)
 			goto out;
 
+next_page:
 		remain -= page_length;
 		user_data += page_length;
 		offset += page_length;