On 23/10/17 09:27 AM, Tom St Denis wrote: > Doing a suspend during playback results in the uvd not resuming when > waking up with drm-next as the kernel. Trying with cg_mask=pg_mask=0 It hangs on decode start. I've attached the readout of the ring which looks normal. Initially I thought maybe it's a PG related issue with suspend/resume but since I can't reliably playback with PG/CG disabled I can't test this theory. Tom -------------- next part -------------- carrizo.uvd.rptr == 32 carrizo.uvd.wptr == 64 carrizo.uvd.drv_wptr == 64 carrizo.uvd.ring[ 1] == 0x00000000 ... carrizo.uvd.ring[ 2] == 0x00003c67 ... carrizo.uvd.ring[ 3] == 0x005e6500 ... carrizo.uvd.ring[ 4] == 0x00003c66 ... carrizo.uvd.ring[ 5] == 0x00000000 ... carrizo.uvd.ring[ 6] == 0x00003da2 ... carrizo.uvd.ring[ 7] == 0x00000030 ... carrizo.uvd.ring[ 8] == 0x00003dbd ... carrizo.uvd.ring[ 9] == 0x0000000d ... carrizo.uvd.ring[ 10] == 0x00003bc4 ... carrizo.uvd.ring[ 11] == 0x00296560 ... carrizo.uvd.ring[ 12] == 0x00003bc5 ... carrizo.uvd.ring[ 13] == 0x000000f4 ... carrizo.uvd.ring[ 14] == 0x00003bc3 ... carrizo.uvd.ring[ 15] == 0x00000000 ... carrizo.uvd.ring[ 16] == 0x00003bc4 ... carrizo.uvd.ring[ 17] == 0x00000000 ... carrizo.uvd.ring[ 18] == 0x00003bc5 ... carrizo.uvd.ring[ 19] == 0x00000000 ... carrizo.uvd.ring[ 20] == 0x00003bc3 ... carrizo.uvd.ring[ 21] == 0x00000002 ... carrizo.uvd.ring[ 22] == 0x00003bff ... carrizo.uvd.ring[ 23] == 0x00003bff ... carrizo.uvd.ring[ 24] == 0x00003bff ... carrizo.uvd.ring[ 25] == 0x00003bff ... carrizo.uvd.ring[ 26] == 0x00003bff ... carrizo.uvd.ring[ 27] == 0x00003bff ... carrizo.uvd.ring[ 28] == 0x00003bff ... carrizo.uvd.ring[ 29] == 0x00003bff ... carrizo.uvd.ring[ 30] == 0x00003bff ... carrizo.uvd.ring[ 31] == 0x00003bff ... carrizo.uvd.ring[ 32] == 0x00003da1 r.. PKT0, COUNT:1, BASE_INDEX:0x3da1 carrizo.uvd.ring[ 33] == 0x00000000 ... word (0): uvd6.mmUVD_LMI_RBC_IB_VMID(0x3da1) <= 0x0 carrizo.uvd.ring[ 34] == 0x00003c67 ... PKT0, COUNT:1, BASE_INDEX:0x3c67 carrizo.uvd.ring[ 35] == 0x005e9800 ... word (0): uvd6.mmUVD_LMI_RBC_IB_64BIT_BAR_LOW(0x3c67) <= 0x5e9800 carrizo.uvd.ring[ 36] == 0x00003c66 ... PKT0, COUNT:1, BASE_INDEX:0x3c66 carrizo.uvd.ring[ 37] == 0x00000000 ... word (0): uvd6.mmUVD_LMI_RBC_IB_64BIT_BAR_HIGH(0x3c66) <= 0x0 carrizo.uvd.ring[ 38] == 0x00003da2 ... PKT0, COUNT:1, BASE_INDEX:0x3da2 carrizo.uvd.ring[ 39] == 0x00000030 ... word (0): uvd6.mmUVD_RBC_IB_SIZE(0x3da2) <= 0x30 carrizo.uvd.ring[ 40] == 0x00003dbd ... PKT0, COUNT:1, BASE_INDEX:0x3dbd carrizo.uvd.ring[ 41] == 0x0000000e ... word (0): uvd6.mmUVD_CONTEXT_ID(0x3dbd) <= 0xe carrizo.uvd.ring[ 42] == 0x00003bc4 ... PKT0, COUNT:1, BASE_INDEX:0x3bc4 carrizo.uvd.ring[ 43] == 0x00296560 ... word (0): uvd6.mmUVD_GPCOM_VCPU_DATA0(0x3bc4) <= 0x296560 carrizo.uvd.ring[ 44] == 0x00003bc5 ... PKT0, COUNT:1, BASE_INDEX:0x3bc5 carrizo.uvd.ring[ 45] == 0x000000f4 ... word (0): uvd6.mmUVD_GPCOM_VCPU_DATA1(0x3bc5) <= 0xf4 carrizo.uvd.ring[ 46] == 0x00003bc3 ... PKT0, COUNT:1, BASE_INDEX:0x3bc3 carrizo.uvd.ring[ 47] == 0x00000000 ... word (0): uvd6.mmUVD_GPCOM_VCPU_CMD(0x3bc3) <= 0x0 carrizo.uvd.ring[ 48] == 0x00003bc4 ... PKT0, COUNT:1, BASE_INDEX:0x3bc4 carrizo.uvd.ring[ 49] == 0x00000000 ... word (0): uvd6.mmUVD_GPCOM_VCPU_DATA0(0x3bc4) <= 0x0 carrizo.uvd.ring[ 50] == 0x00003bc5 ... PKT0, COUNT:1, BASE_INDEX:0x3bc5 carrizo.uvd.ring[ 51] == 0x00000000 ... word (0): uvd6.mmUVD_GPCOM_VCPU_DATA1(0x3bc5) <= 0x0 carrizo.uvd.ring[ 52] == 0x00003bc3 ... PKT0, COUNT:1, BASE_INDEX:0x3bc3 carrizo.uvd.ring[ 53] == 0x00000002 ... word (0): uvd6.mmUVD_GPCOM_VCPU_CMD(0x3bc3) <= 0x2 carrizo.uvd.ring[ 54] == 0x00003bff ... PKT0, COUNT:1, BASE_INDEX:0x3bff carrizo.uvd.ring[ 55] == 0x00003bff ... word (0): uvd6.mmUVD_NO_OP(0x3bff) <= 0x3bff carrizo.uvd.ring[ 56] == 0x00003bff ... PKT0, COUNT:1, BASE_INDEX:0x3bff carrizo.uvd.ring[ 57] == 0x00003bff ... word (0): uvd6.mmUVD_NO_OP(0x3bff) <= 0x3bff carrizo.uvd.ring[ 58] == 0x00003bff ... PKT0, COUNT:1, BASE_INDEX:0x3bff carrizo.uvd.ring[ 59] == 0x00003bff ... word (0): uvd6.mmUVD_NO_OP(0x3bff) <= 0x3bff carrizo.uvd.ring[ 60] == 0x00003bff ... PKT0, COUNT:1, BASE_INDEX:0x3bff carrizo.uvd.ring[ 61] == 0x00003bff ... word (0): uvd6.mmUVD_NO_OP(0x3bff) <= 0x3bff carrizo.uvd.ring[ 62] == 0x00003bff ... PKT0, COUNT:1, BASE_INDEX:0x3bff carrizo.uvd.ring[ 63] == 0x00003bff ... word (0): uvd6.mmUVD_NO_OP(0x3bff) <= 0x3bff carrizo.uvd.ring[ 64] == 0x00003da1 .wD PKT0, COUNT:1, BASE_INDEX:0x3da1 Dumping IB at (gfxhub) VMID:0 0x5e9800 of 48 words IB[ 0] = 0x00003bc4 ... PKT0, COUNT:1, BASE_INDEX:0x3bc4 IB[ 1] = 0x00eee000 ... word (0): uvd6.mmUVD_GPCOM_VCPU_DATA0(0x3bc4) <= 0xeee000 IB[ 2] = 0x00003bc5 ... PKT0, COUNT:1, BASE_INDEX:0x3bc5 IB[ 3] = 0x00000000 ... word (0): uvd6.mmUVD_GPCOM_VCPU_DATA1(0x3bc5) <= 0x0 IB[ 4] = 0x00003bc3 ... PKT0, COUNT:1, BASE_INDEX:0x3bc3 IB[ 5] = 0x00000000 ... word (0): uvd6.mmUVD_GPCOM_VCPU_CMD(0x3bc3) <= 0x0 IB[ 6] = 0x00003bc4 ... PKT0, COUNT:1, BASE_INDEX:0x3bc4 IB[ 7] = 0x11133000 ... word (0): uvd6.mmUVD_GPCOM_VCPU_DATA0(0x3bc4) <= 0x11133000 IB[ 8] = 0x00003bc5 ... PKT0, COUNT:1, BASE_INDEX:0x3bc5 IB[ 9] = 0x000000f4 ... word (0): uvd6.mmUVD_GPCOM_VCPU_DATA1(0x3bc5) <= 0xf4 IB[ 10] = 0x00003bc3 ... PKT0, COUNT:1, BASE_INDEX:0x3bc3 IB[ 11] = 0x00000002 ... word (0): uvd6.mmUVD_GPCOM_VCPU_CMD(0x3bc3) <= 0x2 IB[ 12] = 0x00003bc4 ... PKT0, COUNT:1, BASE_INDEX:0x3bc4 IB[ 13] = 0x10e3d000 ... word (0): uvd6.mmUVD_GPCOM_VCPU_DATA0(0x3bc4) <= 0x10e3d000 IB[ 14] = 0x00003bc5 ... PKT0, COUNT:1, BASE_INDEX:0x3bc5 IB[ 15] = 0x000000f4 ... word (0): uvd6.mmUVD_GPCOM_VCPU_DATA1(0x3bc5) <= 0xf4 IB[ 16] = 0x00003bc3 ... PKT0, COUNT:1, BASE_INDEX:0x3bc3 IB[ 17] = 0x0000040c ... word (0): uvd6.mmUVD_GPCOM_VCPU_CMD(0x3bc3) <= 0x40c IB[ 18] = 0x00003bc4 ... PKT0, COUNT:1, BASE_INDEX:0x3bc4 IB[ 19] = 0x00ef0000 ... word (0): uvd6.mmUVD_GPCOM_VCPU_DATA0(0x3bc4) <= 0xef0000 IB[ 20] = 0x00003bc5 ... PKT0, COUNT:1, BASE_INDEX:0x3bc5 IB[ 21] = 0x00000000 ... word (0): uvd6.mmUVD_GPCOM_VCPU_DATA1(0x3bc5) <= 0x0 IB[ 22] = 0x00003bc3 ... PKT0, COUNT:1, BASE_INDEX:0x3bc3 IB[ 23] = 0x00000200 ... word (0): uvd6.mmUVD_GPCOM_VCPU_CMD(0x3bc3) <= 0x200 IB[ 24] = 0x00003bc4 ... PKT0, COUNT:1, BASE_INDEX:0x3bc4 IB[ 25] = 0x0e400000 ... word (0): uvd6.mmUVD_GPCOM_VCPU_DATA0(0x3bc4) <= 0xe400000 IB[ 26] = 0x00003bc5 ... PKT0, COUNT:1, BASE_INDEX:0x3bc5 IB[ 27] = 0x000000f4 ... word (0): uvd6.mmUVD_GPCOM_VCPU_DATA1(0x3bc5) <= 0xf4 IB[ 28] = 0x00003bc3 ... PKT0, COUNT:1, BASE_INDEX:0x3bc3 IB[ 29] = 0x00000004 ... word (0): uvd6.mmUVD_GPCOM_VCPU_CMD(0x3bc3) <= 0x4 IB[ 30] = 0x00003bc4 ... PKT0, COUNT:1, BASE_INDEX:0x3bc4 IB[ 31] = 0x00eef000 ... word (0): uvd6.mmUVD_GPCOM_VCPU_DATA0(0x3bc4) <= 0xeef000 IB[ 32] = 0x00003bc5 ... PKT0, COUNT:1, BASE_INDEX:0x3bc5 IB[ 33] = 0x00000000 ... word (0): uvd6.mmUVD_GPCOM_VCPU_DATA1(0x3bc5) <= 0x0 IB[ 34] = 0x00003bc3 ... PKT0, COUNT:1, BASE_INDEX:0x3bc3 IB[ 35] = 0x00000006 ... word (0): uvd6.mmUVD_GPCOM_VCPU_CMD(0x3bc3) <= 0x6 IB[ 36] = 0x00003bc4 ... PKT0, COUNT:1, BASE_INDEX:0x3bc4 IB[ 37] = 0x00eef800 ... word (0): uvd6.mmUVD_GPCOM_VCPU_DATA0(0x3bc4) <= 0xeef800 IB[ 38] = 0x00003bc5 ... PKT0, COUNT:1, BASE_INDEX:0x3bc5 IB[ 39] = 0x00000000 ... word (0): uvd6.mmUVD_GPCOM_VCPU_DATA1(0x3bc5) <= 0x0 IB[ 40] = 0x00003bc3 ... PKT0, COUNT:1, BASE_INDEX:0x3bc3 IB[ 41] = 0x00000408 ... word (0): uvd6.mmUVD_GPCOM_VCPU_CMD(0x3bc3) <= 0x408 IB[ 42] = 0x00003bc6 ... PKT0, COUNT:1, BASE_INDEX:0x3bc6 IB[ 43] = 0x00000001 ... word (0): uvd6.mmUVD_ENGINE_CNTL(0x3bc6) <= 0x1 IB[ 44] = 0x80000000 ... PKT2 IB[ 45] = 0x80000000 ... PKT2 IB[ 46] = 0x80000000 ... PKT2 IB[ 47] = 0x80000000 ... PKT2