diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_cs.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_cs.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c index c830863bc98a..a579ed379f20 100644 --- a/drivers/gpu/drm/radeon/radeon_cs.c +++ b/drivers/gpu/drm/radeon/radeon_cs.c | |||
@@ -715,6 +715,7 @@ int radeon_cs_packet_parse(struct radeon_cs_parser *p, | |||
715 | struct radeon_cs_chunk *ib_chunk = p->chunk_ib; | 715 | struct radeon_cs_chunk *ib_chunk = p->chunk_ib; |
716 | struct radeon_device *rdev = p->rdev; | 716 | struct radeon_device *rdev = p->rdev; |
717 | uint32_t header; | 717 | uint32_t header; |
718 | int ret = 0, i; | ||
718 | 719 | ||
719 | if (idx >= ib_chunk->length_dw) { | 720 | if (idx >= ib_chunk->length_dw) { |
720 | DRM_ERROR("Can not parse packet at %d after CS end %d !\n", | 721 | DRM_ERROR("Can not parse packet at %d after CS end %d !\n", |
@@ -743,14 +744,25 @@ int radeon_cs_packet_parse(struct radeon_cs_parser *p, | |||
743 | break; | 744 | break; |
744 | default: | 745 | default: |
745 | DRM_ERROR("Unknown packet type %d at %d !\n", pkt->type, idx); | 746 | DRM_ERROR("Unknown packet type %d at %d !\n", pkt->type, idx); |
746 | return -EINVAL; | 747 | ret = -EINVAL; |
748 | goto dump_ib; | ||
747 | } | 749 | } |
748 | if ((pkt->count + 1 + pkt->idx) >= ib_chunk->length_dw) { | 750 | if ((pkt->count + 1 + pkt->idx) >= ib_chunk->length_dw) { |
749 | DRM_ERROR("Packet (%d:%d:%d) end after CS buffer (%d) !\n", | 751 | DRM_ERROR("Packet (%d:%d:%d) end after CS buffer (%d) !\n", |
750 | pkt->idx, pkt->type, pkt->count, ib_chunk->length_dw); | 752 | pkt->idx, pkt->type, pkt->count, ib_chunk->length_dw); |
751 | return -EINVAL; | 753 | ret = -EINVAL; |
754 | goto dump_ib; | ||
752 | } | 755 | } |
753 | return 0; | 756 | return 0; |
757 | |||
758 | dump_ib: | ||
759 | for (i = 0; i < ib_chunk->length_dw; i++) { | ||
760 | if (i == idx) | ||
761 | printk("\t0x%08x <---\n", radeon_get_ib_value(p, i)); | ||
762 | else | ||
763 | printk("\t0x%08x\n", radeon_get_ib_value(p, i)); | ||
764 | } | ||
765 | return ret; | ||
754 | } | 766 | } |
755 | 767 | ||
756 | /** | 768 | /** |