freedreno: Add missing CP_INDIRECT_BUFFER

This was added on the kernel side in commit 9d78f0250322
("drm/msm/a6xx+: Don't let IB_SIZE overflow"), but didn't
end up in mesa.

Signed-off-by: Rob Clark <rob.clark@oss.qualcomm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35899>
This commit is contained in:
Rob Clark 2025-07-02 15:34:38 -07:00 committed by Marge Bot
parent 8bc8e37c36
commit 0be21c91f4
7 changed files with 571 additions and 0 deletions

View file

@ -395,6 +395,8 @@ cmdstream[0]: 207 dwords
HLSQ_UPDATE_CNTL: 0x1f00000
0000000500190270: 0000: 40e78a01 01f00000
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x50001b000 }
{ IB_SIZE = 0x4b }
ibaddr:000000050001b000
ibsize:0000004b
opcode: CP_PERFCOUNTER_ACTION (50) (4 dwords)
@ -556,6 +558,8 @@ cmdstream[0]: 207 dwords
opcode: CP_SET_VISIBILITY_OVERRIDE (64) (2 dwords)
0000000500190290: 0000: 70640001 00000001
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x500170000 }
{ IB_SIZE = 0x4f }
ibaddr:0000000500170000
ibsize:0000004f
write HLSQ_CONTROL_0_REG (e784)

View file

@ -1684,6 +1684,8 @@ got cmdszdw=31
event PC_CCU_INVALIDATE_COLOR
0000000000000000: 0000: 70460001 00000019
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x100000000 }
{ IB_SIZE = 0xc }
opcode: CP_SET_MARKER (65) (2 dwords)
{ MARKER_MODE = SET_RENDER_MODE | MODE = RM6_DIRECT_RENDER }
0000000100000000: 0000: 70e50001 00000001

View file

@ -1885,6 +1885,8 @@ got cmdszdw=38
event PC_CCU_INVALIDATE_COLOR
0000000000000000: 0000: 70460001 00000019
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x1000e3000 }
{ IB_SIZE = 0x174 }
opcode: CP_EVENT_WRITE (46) (2 dwords)
{ EVENT = CACHE_INVALIDATE }
event CACHE_INVALIDATE
@ -2176,6 +2178,8 @@ got cmdszdw=38
00000001000e35cc: 0000: 70268000
0000000000000000: 0000: 70bf8003 000e3000 00000001 00000174
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x100223000 }
{ IB_SIZE = 0xdd }
opcode: CP_EVENT_WRITE (46) (2 dwords)
{ EVENT = CACHE_INVALIDATE }
event CACHE_INVALIDATE
@ -2221,6 +2225,8 @@ got cmdszdw=38
opcode: CP_SET_MODE (63) (2 dwords)
00000001002232a4: 0000: 70e30001 00000000
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x100227000 }
{ IB_SIZE = 0x8e }
opcode: CP_COND_REG_EXEC (47) (3 dwords)
{ MODE = RENDER_MODE | GMEM }
{ DWORDS = 54 }
@ -2359,6 +2365,8 @@ got cmdszdw=38
000000010022721c: 0000: 70438006 09220000 00000000 00000000 0a420000 00000000 00000000
00000001002232ac: 0000: 70bf8003 00227000 00000001 0000008e
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x100208000 }
{ IB_SIZE = 0x61 }
opcode: CP_SET_DRAW_STATE (43) (67 dwords)
{ COUNT = 26 | BINNING | GMEM | SYSMEM | GROUP_ID = 0 }
{ ADDR_LO = 0x1e7280 }
@ -2954,6 +2962,8 @@ got cmdszdw=38
0000000100208174: 0000: 70388003 00000d84 00000001 00000006
00000001002232bc: 0000: 70bf8003 00208000 00000001 00000061
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x100227238 }
{ IB_SIZE = 0xb5 }
opcode: CP_COND_REG_EXEC (47) (3 dwords)
{ MODE = RENDER_MODE | GMEM }
{ DWORDS = 23 }
@ -3073,6 +3083,8 @@ got cmdszdw=38
0000000100227508: 0000: 70268000
00000001002232cc: 0000: 70bf8003 00227238 00000001 000000b5
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x10020f000 }
{ IB_SIZE = 0x61 }
opcode: CP_SET_DRAW_STATE (43) (67 dwords)
{ COUNT = 26 | BINNING | GMEM | SYSMEM | GROUP_ID = 0 }
{ ADDR_LO = 0x1e8780 }
@ -3668,6 +3680,8 @@ got cmdszdw=38
000000010020f174: 0000: 70388003 00000d84 00000001 00000006
00000001002232dc: 0000: 70bf8003 0020f000 00000001 00000061
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x10022750c }
{ IB_SIZE = 0xbc }
opcode: CP_COND_REG_EXEC (47) (3 dwords)
{ MODE = RENDER_MODE | GMEM }
{ DWORDS = 23 }
@ -3798,6 +3812,8 @@ got cmdszdw=38
00000001002277f8: 0000: 70268000
00000001002232ec: 0000: 70bf8003 0022750c 00000001 000000bc
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x100216000 }
{ IB_SIZE = 0x61 }
opcode: CP_SET_DRAW_STATE (43) (67 dwords)
{ COUNT = 26 | BINNING | GMEM | SYSMEM | GROUP_ID = 0 }
{ ADDR_LO = 0x1e9c80 }
@ -4394,6 +4410,8 @@ ESTIMATED CRASH LOCATION!
0000000100216174: 0000: 70388003 00000d84 00000001 00000006
00000001002232fc: 0000: 70bf8003 00216000 00000001 00000061
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x1002277fc }
{ IB_SIZE = 0x6c }
opcode: CP_COND_REG_EXEC (47) (3 dwords)
{ MODE = RENDER_MODE | GMEM }
{ DWORDS = 3 }
@ -4445,6 +4463,8 @@ ESTIMATED CRASH LOCATION!
00000001002279a8: 0000: 70268000
000000010022330c: 0000: 70bf8003 002277fc 00000001 0000006c
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x10021d000 }
{ IB_SIZE = 0x61 }
opcode: CP_SET_DRAW_STATE (43) (67 dwords)
{ COUNT = 26 | BINNING | GMEM | SYSMEM | GROUP_ID = 0 }
{ ADDR_LO = 0x1eb180 }
@ -5070,6 +5090,8 @@ ESTIMATED CRASH LOCATION!
0000000100223360: 0000: 70460004 0000001c 00001000 00000001 00000000
0000000000000000: 0000: 70bf8003 00223000 00000001 000000dd
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x10022d000 }
{ IB_SIZE = 0xffe }
opcode: CP_EVENT_WRITE (46) (2 dwords)
{ EVENT = CACHE_INVALIDATE }
event CACHE_INVALIDATE
@ -9082,6 +9104,8 @@ ESTIMATED CRASH LOCATION!
0000000100230fd0: 0000: 702c0001 00000003
0000000000000000: 0000: 70bf8003 0022d000 00000001 00000ffe
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x100231000 }
{ IB_SIZE = 0xfb0 }
opcode: CP_BLIT (2c) (2 dwords)
{ OP = BLIT_OP_SCALE }
mode: RM6_DIRECT_RENDER

View file

@ -432,6 +432,8 @@ cmdstream[0]: 265 dwords
opcode: CP_SET_MODE (63) (2 dwords)
00000000010583b0: 0000: 70e30001 00000000
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x115e000 }
{ IB_SIZE = 0xf1 }
ibaddr:000000000115e000
ibsize:000000f1
opcode: CP_COND_REG_EXEC (47) (3 dwords)
@ -1507,6 +1509,8 @@ cmdstream[0]: 265 dwords
000000000115e3b4: 0020: 00000000 0116300c 00000000 00000028
00000000010583b8: 0000: 70bf8003 0115e000 00000000 000000f1
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x115c000 }
{ IB_SIZE = 0x1c }
ibaddr:000000000115c000
ibsize:0000001c
opcode: CP_SET_DRAW_STATE (43) (4 dwords)

View file

@ -435,6 +435,8 @@ cmdstream[0]: 1023 dwords
:0,0,11,10
0000000001d914c4: 0000: 48088901 0000000b
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x1d8f000 }
{ IB_SIZE = 0x53 }
ibaddr:0000000001d8f000
ibsize:00000053
write VFD_INDEX_OFFSET (a00e)
@ -1615,6 +1617,8 @@ cmdstream[0]: 1023 dwords
:0,1,15,14
0000000001d91a7c: 0000: 48088901 0000000f
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x11160d0 }
{ IB_SIZE = 0x18 }
ibaddr:00000000011160d0
ibsize:00000018
write RB_RESOLVE_CNTL_1 (88d1)
@ -1714,6 +1718,8 @@ cmdstream[0]: 1023 dwords
{ DWORDS = 4 }
0000000001d91ab4: 0000: 70c70002 10000000 00000004
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x1d8f000 }
{ IB_SIZE = 0x53 }
ibaddr:0000000001d8f000
ibsize:00000053
write VFD_INDEX_OFFSET (a00e)
@ -6787,6 +6793,8 @@ cmdstream[0]: 1023 dwords
:0,1,21,20
0000000001d91b34: 0000: 48088901 00000015
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x1116130 }
{ IB_SIZE = 0x15 }
ibaddr:0000000001116130
ibsize:00000015
write RB_RESOLVE_CNTL_1 (88d1)
@ -6932,6 +6940,8 @@ cmdstream[0]: 1023 dwords
:0,1,25,24
0000000001d91c48: 0000: 48088901 00000019
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x11160d0 }
{ IB_SIZE = 0x18 }
ibaddr:00000000011160d0
ibsize:00000018
0000000001d91c50: 0000: 70bf8003 011160d0 00000000 00000018
@ -6955,6 +6965,8 @@ cmdstream[0]: 1023 dwords
{ DWORDS = 4 }
0000000001d91c80: 0000: 70c70002 10000000 00000004
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x1d8f000 }
{ IB_SIZE = 0x53 }
ibaddr:0000000001d8f000
ibsize:00000053
0000000001d91c8c: 0000: 70bf8003 01d8f000 00000000 00000053
@ -7003,6 +7015,8 @@ cmdstream[0]: 1023 dwords
:0,1,31,30
0000000001d91d00: 0000: 48088901 0000001f
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x1116130 }
{ IB_SIZE = 0x15 }
ibaddr:0000000001116130
ibsize:00000015
0000000001d91d08: 0000: 70bf8003 01116130 00000000 00000015
@ -7101,6 +7115,8 @@ cmdstream[0]: 1023 dwords
:0,1,35,34
0000000001d91e14: 0000: 48088901 00000023
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x11160d0 }
{ IB_SIZE = 0x18 }
ibaddr:00000000011160d0
ibsize:00000018
0000000001d91e1c: 0000: 70bf8003 011160d0 00000000 00000018
@ -7124,6 +7140,8 @@ cmdstream[0]: 1023 dwords
{ DWORDS = 4 }
0000000001d91e4c: 0000: 70c70002 10000000 00000004
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x1d8f000 }
{ IB_SIZE = 0x53 }
ibaddr:0000000001d8f000
ibsize:00000053
0000000001d91e58: 0000: 70bf8003 01d8f000 00000000 00000053
@ -7172,6 +7190,8 @@ cmdstream[0]: 1023 dwords
:0,1,41,40
0000000001d91ecc: 0000: 48088901 00000029
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x1116130 }
{ IB_SIZE = 0x15 }
ibaddr:0000000001116130
ibsize:00000015
0000000001d91ed4: 0000: 70bf8003 01116130 00000000 00000015
@ -7270,6 +7290,8 @@ cmdstream[0]: 1023 dwords
:0,1,45,44
0000000001d91fe0: 0000: 48088901 0000002d
opcode: CP_INDIRECT_BUFFER (3f) (4 dwords)
{ IB_BASE = 0x11160d0 }
{ IB_SIZE = 0x18 }
ibaddr:00000000011160d0
ibsize:00000018
0000000001d91fe8: 0000: 70bf8003 011160d0 00000000 00000018

File diff suppressed because it is too large Load diff

View file

@ -2384,5 +2384,12 @@ opcode: CP_LOAD_STATE4 (30) (4 dwords)
</reg32>
</domain>
<domain name="CP_INDIRECT_BUFFER" width="32" varset="chip" prefix="chip" variants="A5XX-">
<reg64 offset="0" name="IB_BASE" type="address"/>
<reg32 offset="2" name="2">
<bitfield name="IB_SIZE" low="0" high="19"/>
</reg32>
</domain>
</database>