diff options
| author | Chris Wilson <chris@chris-wilson.co.uk> | 2010-12-09 12:56:37 +0000 | 
|---|---|---|
| committer | Chris Wilson <chris@chris-wilson.co.uk> | 2010-12-09 12:53:19 +0000 | 
| commit | 8c0a6bfef165ccdbf5d73afb9dd660107b0c98d5 (patch) | |
| tree | 09455156e4e46ac5137ddab9ec3aed65bc6a8c59 /drivers/gpu/drm/i915/intel_ringbuffer.h | |
| parent | 8316f33766a82907c694267ff911e45e256f09f9 (diff) | |
| download | olio-linux-3.10-8c0a6bfef165ccdbf5d73afb9dd660107b0c98d5.tar.xz olio-linux-3.10-8c0a6bfef165ccdbf5d73afb9dd660107b0c98d5.zip  | |
drm/i915/ringbuffer: Handle wrapping of the autoreported HEAD
If the tail advances beyond the autoreport HEAD value, then we need to
fallback to an uncached read of the HEAD register in order to ascertain
the correct amount of remaining space in the ringbuffer.
Reported-by: Fang, Xun <xunx.fang@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=32259
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_ringbuffer.h')
| -rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.h | 5 | 
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h index 3126c268198..d2cd0f1efee 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.h +++ b/drivers/gpu/drm/i915/intel_ringbuffer.h @@ -30,8 +30,9 @@ struct  intel_ring_buffer {  	struct		drm_device *dev;  	struct		drm_gem_object *gem_object; -	unsigned int	head; -	unsigned int	tail; +	u32		actual_head; +	u32		head; +	u32		tail;  	int		space;  	struct intel_hw_status_page status_page;  |