drm/radeon/si: print full CS when we hit a packet 0
authorAlex Deucher <alexander.deucher@amd.com>
Tue, 30 Sep 2014 13:25:32 +0000 (09:25 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 1 Oct 2014 13:00:09 +0000 (09:00 -0400)
We should never have a packet 0 in the command stream.
Dump the full command stream to help debug.

bug:
https://bugs.freedesktop.org/show_bug.cgi?id=84500

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/radeon/si.c

index 6bce408..423a8cd 100644 (file)
@@ -4684,7 +4684,7 @@ static int si_vm_packet3_compute_check(struct radeon_device *rdev,
 int si_ib_parse(struct radeon_device *rdev, struct radeon_ib *ib)
 {
        int ret = 0;
-       u32 idx = 0;
+       u32 idx = 0, i;
        struct radeon_cs_packet pkt;
 
        do {
@@ -4695,6 +4695,12 @@ int si_ib_parse(struct radeon_device *rdev, struct radeon_ib *ib)
                switch (pkt.type) {
                case RADEON_PACKET_TYPE0:
                        dev_err(rdev->dev, "Packet0 not allowed!\n");
+                       for (i = 0; i < ib->length_dw; i++) {
+                               if (i == idx)
+                                       printk("\t0x%08x <---\n", ib->ptr[i]);
+                               else
+                                       printk("\t0x%08x\n", ib->ptr[i]);
+                       }
                        ret = -EINVAL;
                        break;
                case RADEON_PACKET_TYPE2: