258,11 → 258,13 |
u32 ring = RADEON_CS_RING_GFX; |
s32 priority = 0; |
|
INIT_LIST_HEAD(&p->validated); |
|
if (!cs->num_chunks) { |
return 0; |
} |
|
/* get chunks */ |
INIT_LIST_HEAD(&p->validated); |
p->idx = 0; |
p->ib.sa_bo = NULL; |
p->const_ib.sa_bo = NULL; |
710,6 → 712,7 |
struct radeon_cs_chunk *ib_chunk = p->chunk_ib; |
struct radeon_device *rdev = p->rdev; |
uint32_t header; |
int ret = 0, i; |
|
if (idx >= ib_chunk->length_dw) { |
DRM_ERROR("Can not parse packet at %d after CS end %d !\n", |
738,15 → 741,26 |
break; |
default: |
DRM_ERROR("Unknown packet type %d at %d !\n", pkt->type, idx); |
return -EINVAL; |
ret = -EINVAL; |
goto dump_ib; |
} |
if ((pkt->count + 1 + pkt->idx) >= ib_chunk->length_dw) { |
DRM_ERROR("Packet (%d:%d:%d) end after CS buffer (%d) !\n", |
pkt->idx, pkt->type, pkt->count, ib_chunk->length_dw); |
return -EINVAL; |
ret = -EINVAL; |
goto dump_ib; |
} |
return 0; |
|
dump_ib: |
for (i = 0; i < ib_chunk->length_dw; i++) { |
if (i == idx) |
printk("\t0x%08x <---\n", radeon_get_ib_value(p, i)); |
else |
printk("\t0x%08x\n", radeon_get_ib_value(p, i)); |
} |
return ret; |
} |
|
/** |
* radeon_cs_packet_next_is_pkt3_nop() - test if the next packet is P3 NOP |