gem5 [DEVELOP-FOR-25.0]
Loading...
Searching...
No Matches
sdma_packets.hh
Go to the documentation of this file.
1/*
2 * Copyright (c) 2021 Advanced Micro Devices, Inc.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright notice,
12 * this list of conditions and the following disclaimer in the documentation
13 * and/or other materials provided with the distribution.
14 *
15 * 3. Neither the name of the copyright holder nor the names of its
16 * contributors may be used to endorse or promote products derived from this
17 * software without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
30 *
31 */
32
33#ifndef __DEV_AMDGPU_SDMA_PACKETS_HH__
34#define __DEV_AMDGPU_SDMA_PACKETS_HH__
35
36namespace gem5
37{
38
42typedef struct GEM5_PACKED
43{
44 uint32_t count : 30;
45 uint32_t res0 : 2;
46 uint32_t res1 : 16;
47 uint32_t sdw: 2;
48 uint32_t res2 : 6;
49 uint32_t ddw: 2;
50 uint32_t res3 : 6;
51 uint64_t source;
52 uint64_t dest;
54static_assert(sizeof(sdmaCopy) == 24);
55
56typedef struct GEM5_PACKED
57{
58 uint64_t dest;
59 uint32_t count : 20;
60 uint32_t reserved0 : 4;
61 uint32_t sw : 2;
62 uint32_t reserved1 : 6;
64static_assert(sizeof(sdmaWrite) == 12);
65
66typedef struct GEM5_PACKED
67{
68 union
69 {
70 struct
71 {
72 uint32_t addrLo;
73 uint32_t addrHi;
74 };
76 };
77 uint32_t srcData;
78 uint32_t unused : 10;
79 uint32_t count : 22;
81static_assert(sizeof(sdmaConstFill) == 16);
82
83typedef struct GEM5_PACKED
84{
85 union
86 {
87 struct
88 {
89 uint32_t op : 8;
90 uint32_t sub_op : 8;
91 uint32_t sw : 2;
92 uint32_t res0 : 12;
93 uint32_t fillsize : 2;
94 };
95 uint32_t ordinal;
96 };
98static_assert(sizeof(sdmaConstFillHeader) == 4);
99
100typedef struct GEM5_PACKED
101{
102 uint32_t key0;
103 uint32_t key1;
104 uint32_t key2;
105 uint32_t key3;
106 uint32_t count0;
107 uint32_t count1;
108 uint32_t count2;
109 uint32_t count3;
111static_assert(sizeof(sdmaAESKey) == 32);
112
113typedef struct GEM5_PACKED
114{
115 uint32_t countData0;
116 uint32_t countData1;
117 uint32_t countData2;
118 uint32_t countData3;
120static_assert(sizeof(sdmaAESCounter) == 16);
121
122typedef struct GEM5_PACKED
123{
124 uint32_t countKey0;
125 uint32_t countKey1;
126 uint32_t countKey2;
127 uint32_t countKey3;
129static_assert(sizeof(sdmaAESLoad) == 16);
130
131typedef struct GEM5_PACKED
132{
133 uint32_t reserved : 6;
134 uint32_t offset : 26;
136static_assert(sizeof(sdmaAESOffset) == 4);
137
138typedef struct GEM5_PACKED
139{
140 uint64_t base;
141 uint32_t size : 20;
142 uint32_t reserved : 12;
143 uint64_t csaAddr;
145static_assert(sizeof(sdmaIndirectBuffer) == 20);
146
147typedef struct GEM5_PACKED
148{
149 uint32_t priv : 1;
150 uint32_t reserved1 : 11;
151 uint32_t vmid : 4;
152 uint32_t reserved2 : 16;
154static_assert(sizeof(sdmaIndirectBufferHeader) == 4);
155
156typedef struct GEM5_PACKED
157{
158 uint64_t dest;
159 uint32_t data;
161static_assert(sizeof(sdmaFence) == 12);
162
163typedef struct GEM5_PACKED
164{
165 union
166 {
167 struct
168 {
169 uint32_t contextId : 3;
170 uint32_t rbRptr: 13;
171 uint32_t ibOffset : 12;
172 uint32_t reserved : 4;
173 };
174 uint32_t intrContext;
175 };
177static_assert(sizeof(sdmaTrap) == 4);
178
179typedef struct GEM5_PACKED
180{
181 union
182 {
183 struct
184 {
185 uint32_t reserved : 3;
186 uint32_t addrLo : 29;
187 uint32_t addrHi;
188 };
189 Addr addr;
190 };
192static_assert(sizeof(sdmaSemaphore) == 8);
193
194typedef struct GEM5_PACKED
195{
196 union
197 {
198 struct
199 {
200 uint32_t reserved : 3;
201 uint32_t addrLo : 29;
202 uint32_t addrHi;
203 };
204 Addr addr;
205 };
207static_assert(sizeof(sdmaMemInc) == 8);
208
209typedef struct GEM5_PACKED
210{
211 uint32_t regAddr : 18;
212 uint32_t reserved : 2;
213 uint32_t apertureId : 12;
214 uint32_t data;
216static_assert(sizeof(sdmaSRBMWrite) == 8);
217
218typedef struct GEM5_PACKED
219{
220 union
221 {
222 struct
223 {
224 uint32_t reserved : 28;
225 uint32_t byteEnable : 4;
226 };
227 uint32_t ordinal;
228 };
230static_assert(sizeof(sdmaSRBMWriteHeader) == 4);
231
232typedef struct GEM5_PACKED
233{
234 uint64_t address;
235 uint32_t ref;
236 uint32_t mask;
237 uint32_t pollInt : 16;
238 uint32_t retryCount : 12;
239 uint32_t reserved1 : 4;
241static_assert(sizeof(sdmaPollRegMem) == 20);
242
243typedef struct GEM5_PACKED
244{
245 union
246 {
247 struct
248 {
249 uint32_t reserved : 26;
250 uint32_t op : 2; // Operation
251 uint32_t func : 3; // Comparison function
252 uint32_t mode : 1; // Mode: register or memory polling
253 };
254 uint32_t ordinal;
255 };
257static_assert(sizeof(sdmaPollRegMemHeader) == 4);
258
259typedef struct GEM5_PACKED
260{
261 union
262 {
263 struct
264 {
265 uint32_t addrLo;
266 uint32_t addrHi;
267 };
268 Addr addr;
269 };
270 uint32_t reference;
271 union
272 {
273 struct
274 {
275 uint32_t execCount : 14;
276 uint32_t unused : 18;
277 };
278 uint32_t ordinal;
279 };
281static_assert(sizeof(sdmaCondExec) == 16);
282
283typedef struct GEM5_PACKED
284{
285 union
286 {
287 struct
288 {
289 uint32_t addrLo;
290 uint32_t addrHi;
291 };
292 Addr addr;
293 };
294 union
295 {
296 struct
297 {
298 uint32_t srcDataLo;
299 uint32_t srdDataHi;
300 };
301 uint64_t srcData;
302 };
303 union
304 {
305 struct
306 {
307 uint32_t cmpDataLo;
308 uint32_t cmpDataHi;
309 };
310 uint64_t cmpData;
311 };
312 uint32_t loopInt : 13;
313 uint32_t reserved : 19;
315static_assert(sizeof(sdmaAtomic) == 28);
316
317typedef struct GEM5_PACKED
318{
319 union
320 {
321 struct
322 {
323 int unused2 : 16;
324 int loop : 1;
325 int unused1 : 8;
326 int opcode : 7;
327 };
328 uint32_t ordinal;
329 };
331static_assert(sizeof(sdmaAtomicHeader) == 4);
332
333constexpr unsigned int SDMA_ATOMIC_ADD64 = 47;
334
335typedef struct GEM5_PACKED
336{
337 uint64_t dest;
338 uint64_t mask;
339 uint64_t initValue;
340 uint64_t increment;
341 uint32_t count: 19;
342 uint32_t reserved : 13;
344static_assert(sizeof(sdmaPtePde) == 36);
345
346typedef struct GEM5_PACKED
347{
348 union
349 {
350 struct
351 {
352 uint32_t initDataLo;
353 uint32_t initDataHi;
354 };
355 uint64_t initData;
356 };
358static_assert(sizeof(sdmaTimestamp) == 8);
359
360typedef struct GEM5_PACKED
361{
362 uint32_t execCount : 14;
363 uint32_t reserved : 18;
365static_assert(sizeof(sdmaPredExec) == 4);
366
367typedef struct GEM5_PACKED
368{
369 uint32_t opcode : 8;
370 uint32_t subOpcode : 8;
371 uint32_t device : 8;
372 uint32_t unused : 8;
374static_assert(sizeof(sdmaPredExecHeader) == 4);
375
376typedef struct GEM5_PACKED
377{
378 uint32_t contextId : 3;
379 uint32_t rbRptr: 13;
380 uint32_t ibOffset : 12;
381 uint32_t reserved : 4;
383static_assert(sizeof(sdmaDummyTrap) == 4);
384
385typedef struct GEM5_PACKED
386{
387 uint32_t byteStride;
388 uint32_t dmaCount;
389 union
390 {
391 struct
392 {
393 uint32_t destLo;
394 uint32_t destHi;
395 };
396 uint64_t dest;
397 };
398 uint32_t byteCount : 26;
400static_assert(sizeof(sdmaDataFillMulti) == 20);
401
402typedef struct GEM5_PACKED
403{
404 uint16_t format : 8;
405 uint16_t barrier : 1;
406 uint16_t acqFenceScope : 2;
407 uint16_t relFenceScope : 2;
408 uint16_t reserved : 3;
410static_assert(sizeof(sdmaHeaderAgentDisp) == 2);
411
412typedef struct GEM5_PACKED
413{
415 uint16_t res0;
416 uint32_t res1;
417 union
418 {
419 struct
420 {
421 uint32_t retLo;
422 uint32_t retHi;
423 };
425 };
426 uint32_t count : 22;
427 uint32_t res2 : 10;
428 uint32_t res3 : 16;
429 uint32_t swDest : 2;
430 uint32_t res4 : 6;
431 uint32_t swSrc : 2;
432 uint32_t unused : 6;
433 union
434 {
435 struct
436 {
437 uint32_t srcLo;
438 uint32_t srcHi;
439 };
441 };
442 union
443 {
444 struct
445 {
446 uint32_t destLo;
447 uint32_t destHi;
448 };
450 };
451 uint64_t res5;
452 uint64_t res6;
453 union
454 {
455 struct
456 {
457 uint32_t compSignalLo;
458 uint32_t compSignalHi;
459 };
461 };
463static_assert(sizeof(sdmaAQLCopy) == 64);
464
465typedef struct GEM5_PACKED
466{
468 uint16_t res0;
469 uint32_t res1;
475 uint64_t res2;
476 union
477 {
478 struct
479 {
480 uint32_t compSignalLo;
481 uint32_t compSignalHi;
482 };
484 };
486static_assert(sizeof(sdmaAQLBarrierOr) == 64);
487
488} // namespace gem5
489
490#endif // __DEV_AMDGPU_SDMA_PACKETS_HH__
const char data[]
Copyright (c) 2024 Arm Limited All rights reserved.
Definition binary32.hh:36
struct gem5::GEM5_PACKED sdmaFence
struct gem5::GEM5_PACKED sdmaDataFillMulti
struct gem5::GEM5_PACKED sdmaConstFill
struct gem5::GEM5_PACKED sdmaIndirectBufferHeader
struct gem5::GEM5_PACKED sdmaTimestamp
struct gem5::GEM5_PACKED sdmaConstFillHeader
struct gem5::GEM5_PACKED sdmaAESCounter
struct gem5::GEM5_PACKED sdmaAtomic
struct gem5::GEM5_PACKED sdmaPredExecHeader
struct gem5::GEM5_PACKED sdmaAQLBarrierOr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition types.hh:147
struct gem5::GEM5_PACKED sdmaPtePde
struct gem5::GEM5_PACKED sdmaPollRegMem
struct gem5::GEM5_PACKED sdmaMemInc
struct gem5::GEM5_PACKED sdmaPollRegMemHeader
struct gem5::GEM5_PACKED sdmaPredExec
struct gem5::GEM5_PACKED sdmaAESKey
constexpr unsigned int SDMA_ATOMIC_ADD64
struct gem5::GEM5_PACKED sdmaWrite
struct gem5::GEM5_PACKED sdmaAtomicHeader
struct gem5::GEM5_PACKED sdmaCopy
SDMA packets - see src/core/inc/sdma_registers.h in ROCR-Runtime.
struct gem5::GEM5_PACKED sdmaIndirectBuffer
struct gem5::GEM5_PACKED sdmaTrap
struct gem5::GEM5_PACKED sdmaSRBMWrite
struct gem5::GEM5_PACKED sdmaAQLCopy
struct gem5::GEM5_PACKED sdmaAESOffset
struct gem5::GEM5_PACKED sdmaHeaderAgentDisp
struct gem5::GEM5_PACKED sdmaAESLoad
struct gem5::GEM5_PACKED sdmaSRBMWriteHeader
struct gem5::GEM5_PACKED sdmaDummyTrap
struct gem5::GEM5_PACKED sdmaSemaphore
struct gem5::GEM5_PACKED sdmaCondExec
output header
Definition nop.cc:36
reserved
Definition pcireg.h:58
PM4 packets.
sdmaHeaderAgentDisp header

Generated on Mon May 26 2025 09:19:09 for gem5 by doxygen 1.13.2