summaryrefslogtreecommitdiff
path: root/shared-core
diff options
context:
space:
mode:
authorJerome Glisse <glisse@freedesktop.org>2008-03-31 21:50:02 +0200
committerJohn Doe <glisse@freedesktop.org>2008-03-31 21:50:02 +0200
commit960042345866ff4ab7d76b56e4af60e800c60a36 (patch)
treede9d4efce97fabba848c443bb64b6a477a91897f /shared-core
parent09e637848a6afa54a091c4c70fdfbfbdce7ac805 (diff)
radeon_ms: small fix & cleanup to command checking
Diffstat (limited to 'shared-core')
-rw-r--r--shared-core/radeon_ms_exec.c29
1 files changed, 3 insertions, 26 deletions
diff --git a/shared-core/radeon_ms_exec.c b/shared-core/radeon_ms_exec.c
index 574e5a06..32b55eaf 100644
--- a/shared-core/radeon_ms_exec.c
+++ b/shared-core/radeon_ms_exec.c
@@ -220,47 +220,40 @@ static int amd_cbuffer_packet3_check(struct drm_device *dev,
break;
case PACKET3_OPCODE_BITBLT:
case PACKET3_OPCODE_BITBLT_MULTI:
- DRM_INFO("[radeon_ms] exec step - [05][P3]00.00\n");
/* we only alow simple blit */
if (count != 5) {
return -EINVAL;
}
- DRM_INFO("[radeon_ms] exec step - [05][P3]01.00\n");
s_mask = 0xf;
s_auth = 0x3;
if ((cbuffer->cbuffer[dw_id + 1] & s_mask) != s_auth) {
return -EINVAL;
}
- DRM_INFO("[radeon_ms] exec step - [05][P3]02.00\n");
arg = amd_cbuffer_arg_from_dw_id(&cbuffer->arg_unused, dw_id+2);
if (arg == NULL) {
return -EINVAL;
}
- DRM_INFO("[radeon_ms] exec step - [05][P3]03.00\n");
ret = radeon_ms_bo_get_gpu_addr(dev, &arg->buffer->mem,
&gpu_addr);
if (ret) {
return ret;
}
- DRM_INFO("[radeon_ms] exec step - [05][P3]04.00\n");
gpu_addr = (gpu_addr >> 10) & 0x003FFFFF;
cbuffer->cbuffer[dw_id + 2] &= 0xFFC00000;
cbuffer->cbuffer[dw_id + 2] |= gpu_addr;
+
arg = amd_cbuffer_arg_from_dw_id(&cbuffer->arg_unused, dw_id+3);
if (arg == NULL) {
return -EINVAL;
}
- DRM_INFO("[radeon_ms] exec step - [05][P3]05.00\n");
ret = radeon_ms_bo_get_gpu_addr(dev, &arg->buffer->mem,
&gpu_addr);
if (ret) {
return ret;
}
- DRM_INFO("[radeon_ms] exec step - [05][P3]06.00\n");
gpu_addr = (gpu_addr >> 10) & 0x003FFFFF;
cbuffer->cbuffer[dw_id + 3] &= 0xFFC00000;
cbuffer->cbuffer[dw_id + 3] |= gpu_addr;
- DRM_INFO("[radeon_ms] exec step - [05][P3]07.00\n");
/* FIXME: check that source & destination are big enough
* for requested blit */
break;
@@ -279,14 +272,12 @@ static int amd_cbuffer_check(struct drm_device *dev,
int ret;
for (i = 0; i < cbuffer->cbuffer_dw_count;) {
- DRM_INFO("[radeon_ms] exec step - [05]00.00 %d 0x%08X\n",
- i, cbuffer->cbuffer[i]);
switch (PACKET_HEADER_GET(cbuffer->cbuffer[i])) {
case 0:
ret = amd_cbuffer_packet0_check(dev, file_priv,
cbuffer, i,
_r3xx_register_right);
- if (ret) {
+ if (ret <= 0) {
return ret;
}
/* advance to next packet */
@@ -302,7 +293,7 @@ static int amd_cbuffer_check(struct drm_device *dev,
case 3:
ret = amd_cbuffer_packet3_check(dev, file_priv,
cbuffer, i);
- if (ret) {
+ if (ret <= 0) {
return ret;
}
/* advance to next packet */
@@ -331,13 +322,11 @@ int radeon_ms_execbuffer(struct drm_device *dev, void *data,
/* FIXME: Lock buffer manager, is this really needed ?
*/
- DRM_INFO("[radeon_ms] exec step - 00.00\n");
ret = drm_bo_read_lock(&dev->bm.bm_lock);
if (ret) {
return ret;
}
- DRM_INFO("[radeon_ms] exec step - 01.00\n");
cbuffer.args = drm_calloc(execbuffer->args_count,
sizeof(struct amd_cbuffer_arg),
DRM_MEM_DRIVER);
@@ -350,7 +339,6 @@ int radeon_ms_execbuffer(struct drm_device *dev, void *data,
INIT_LIST_HEAD(&cbuffer.arg_used.list);
/* process arguments */
- DRM_INFO("[radeon_ms] exec step - 02.00\n");
ret = radeon_ms_execbuffer_args(dev, file_priv, execbuffer, &cbuffer);
if (ret) {
DRM_ERROR("[radeon_ms] execbuffer wrong arguments\n");
@@ -358,14 +346,12 @@ int radeon_ms_execbuffer(struct drm_device *dev, void *data,
}
/* map command buffer */
- DRM_INFO("[radeon_ms] exec step - 03.00\n");
cbuffer.cbuffer_dw_count = (cbuffer.args[0].buffer->mem.num_pages *
PAGE_SIZE) >> 2;
if (execbuffer->cmd_size > cbuffer.cbuffer_dw_count) {
ret = -EINVAL;
goto out_free_release;
}
- DRM_INFO("[radeon_ms] exec step - 04.00\n");
cbuffer.cbuffer_dw_count = execbuffer->cmd_size;
memset(&cmd_kmap, 0, sizeof(struct drm_bo_kmap_obj));
ret = drm_bo_kmap(cbuffer.args[0].buffer, 0,
@@ -374,13 +360,9 @@ int radeon_ms_execbuffer(struct drm_device *dev, void *data,
DRM_ERROR("[radeon_ms] error mapping ring buffer: %d\n", ret);
goto out_free_release;
}
- DRM_INFO("[radeon_ms] exec step - 05.00\n");
cbuffer.cbuffer = drm_bmo_virtual(&cmd_kmap, &cmd_is_iomem);
- DRM_INFO("[radeon_ms] exec step - 05.01\n");
list_del(&cbuffer.args[0].list);
- DRM_INFO("[radeon_ms] exec step - 05.02\n");
list_add_tail(&cbuffer.args[0].list , &cbuffer.arg_used.list);
- DRM_INFO("[radeon_ms] exec step - 05.03\n");
/* do cmd checking & relocations */
ret = amd_cbuffer_check(dev, file_priv, &cbuffer);
@@ -388,7 +370,6 @@ int radeon_ms_execbuffer(struct drm_device *dev, void *data,
drm_putback_buffer_objects(dev);
goto out_free_release;
}
- DRM_INFO("[radeon_ms] exec step - 06.00\n");
ret = radeon_ms_ring_emit(dev, cbuffer.cbuffer,
cbuffer.cbuffer_dw_count);
@@ -396,7 +377,6 @@ int radeon_ms_execbuffer(struct drm_device *dev, void *data,
drm_putback_buffer_objects(dev);
goto out_free_release;
}
- DRM_INFO("[radeon_ms] exec step - 07.00\n");
/* fence */
ret = drm_fence_buffer_objects(dev, NULL, 0, NULL, &fence);
@@ -418,16 +398,13 @@ int radeon_ms_execbuffer(struct drm_device *dev, void *data,
}
}
drm_fence_usage_deref_unlocked(&fence);
- DRM_INFO("[radeon_ms] exec step - 08.00\n");
out_free_release:
drm_bo_kunmap(&cmd_kmap);
radeon_ms_execbuffer_args_clean(dev, &cbuffer, execbuffer->args_count);
- DRM_INFO("[radeon_ms] exec step - 09.00\n");
out_free:
drm_free(cbuffer.args,
(execbuffer->args_count * sizeof(struct amd_cbuffer_arg)),
DRM_MEM_DRIVER);
drm_bo_read_unlock(&dev->bm.bm_lock);
- DRM_INFO("[radeon_ms] exec step - 10.00\n");
return ret;
}