diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/r100.c')
| -rw-r--r-- | drivers/gpu/drm/radeon/r100.c | 27 | 
1 files changed, 10 insertions, 17 deletions
diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c index e817a0bb5eb..e59422320bb 100644 --- a/drivers/gpu/drm/radeon/r100.c +++ b/drivers/gpu/drm/radeon/r100.c @@ -1030,6 +1030,7 @@ int r100_cp_init(struct radeon_device *rdev, unsigned ring_size)  		return r;  	}  	rdev->cp.ready = true; +	rdev->mc.active_vram_size = rdev->mc.real_vram_size;  	return 0;  } @@ -1047,6 +1048,7 @@ void r100_cp_fini(struct radeon_device *rdev)  void r100_cp_disable(struct radeon_device *rdev)  {  	/* Disable ring */ +	rdev->mc.active_vram_size = rdev->mc.visible_vram_size;  	rdev->cp.ready = false;  	WREG32(RADEON_CP_CSQ_MODE, 0);  	WREG32(RADEON_CP_CSQ_CNTL, 0); @@ -2020,18 +2022,7 @@ bool r100_gpu_cp_is_lockup(struct radeon_device *rdev, struct r100_gpu_lockup *l  		return false;  	}  	elapsed = jiffies_to_msecs(cjiffies - lockup->last_jiffies); -	if (elapsed >= 3000) { -		/* very likely the improbable case where current -		 * rptr is equal to last recorded, a while ago, rptr -		 * this is more likely a false positive update tracking -		 * information which should force us to be recall at -		 * latter point -		 */ -		lockup->last_cp_rptr = cp->rptr; -		lockup->last_jiffies = jiffies; -		return false; -	} -	if (elapsed >= 1000) { +	if (elapsed >= 10000) {  		dev_err(rdev->dev, "GPU lockup CP stall for more than %lumsec\n", elapsed);  		return true;  	} @@ -2306,6 +2297,7 @@ void r100_vram_init_sizes(struct radeon_device *rdev)  	/* FIXME we don't use the second aperture yet when we could use it */  	if (rdev->mc.visible_vram_size > rdev->mc.aper_size)  		rdev->mc.visible_vram_size = rdev->mc.aper_size; +	rdev->mc.active_vram_size = rdev->mc.visible_vram_size;  	config_aper_size = RREG32(RADEON_CONFIG_APER_SIZE);  	if (rdev->flags & RADEON_IS_IGP) {  		uint32_t tom; @@ -3308,13 +3300,14 @@ int r100_cs_track_check(struct radeon_device *rdev, struct r100_cs_track *track)  	unsigned long size;  	unsigned prim_walk;  	unsigned nverts; +	unsigned num_cb = track->num_cb; -	for (i = 0; i < track->num_cb; i++) { +	if (!track->zb_cb_clear && !track->color_channel_mask && +	    !track->blend_read_enable) +		num_cb = 0; + +	for (i = 0; i < num_cb; i++) {  		if (track->cb[i].robj == NULL) { -			if (!(track->zb_cb_clear || track->color_channel_mask || -			      track->blend_read_enable)) { -				continue; -			}  			DRM_ERROR("[drm] No buffer for color buffer %d !\n", i);  			return -EINVAL;  		}  |