diff options
| author | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-12-05 23:20:17 +0000 | 
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-12-05 23:20:17 +0000 | 
| commit | 742eaa6a6e356a16788ce6530271de89bc4f8fb5 (patch) | |
| tree | 12fc040daab06ac796c61c1d92bfad9bb054d1c1 /drivers/gpu/drm/radeon/radeon_cs.c | |
| parent | ba8bb18a03f8c7508565c385576a5431a4ad804a (diff) | |
| parent | ae72fd588a2b302222769b44775912b83f0785eb (diff) | |
| download | olio-linux-3.10-742eaa6a6e356a16788ce6530271de89bc4f8fb5.tar.xz olio-linux-3.10-742eaa6a6e356a16788ce6530271de89bc4f8fb5.zip  | |
Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux into devel-stable
Conflicts:
	arch/arm/common/gic.c
	arch/arm/plat-omap/include/plat/common.h
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_cs.c')
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_cs.c | 11 | 
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c index ccaa243c144..29afd71e084 100644 --- a/drivers/gpu/drm/radeon/radeon_cs.c +++ b/drivers/gpu/drm/radeon/radeon_cs.c @@ -93,7 +93,7 @@ int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data)  {  	struct drm_radeon_cs *cs = data;  	uint64_t *chunk_array_ptr; -	unsigned size, i; +	unsigned size, i, flags = 0;  	if (!cs->num_chunks) {  		return 0; @@ -140,6 +140,10 @@ int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data)  			if (p->chunks[i].length_dw == 0)  				return -EINVAL;  		} +		if (p->chunks[i].chunk_id == RADEON_CHUNK_ID_FLAGS && +		    !p->chunks[i].length_dw) { +			return -EINVAL; +		}  		p->chunks[i].length_dw = user_chunk.length_dw;  		p->chunks[i].user_ptr = (void __user *)(unsigned long)user_chunk.chunk_data; @@ -155,6 +159,9 @@ int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data)  					       p->chunks[i].user_ptr, size)) {  				return -EFAULT;  			} +			if (p->chunks[i].chunk_id == RADEON_CHUNK_ID_FLAGS) { +				flags = p->chunks[i].kdata[0]; +			}  		} else {  			p->chunks[i].kpage[0] = kmalloc(PAGE_SIZE, GFP_KERNEL);  			p->chunks[i].kpage[1] = kmalloc(PAGE_SIZE, GFP_KERNEL); @@ -174,6 +181,8 @@ int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data)  			  p->chunks[p->chunk_ib_idx].length_dw);  		return -EINVAL;  	} + +	p->keep_tiling_flags = (flags & RADEON_CS_KEEP_TILING_FLAGS) != 0;  	return 0;  }  |