gem5 v23.0.0.1
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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 uint32_t key0;
86 uint32_t key1;
87 uint32_t key2;
88 uint32_t key3;
89 uint32_t count0;
90 uint32_t count1;
91 uint32_t count2;
92 uint32_t count3;
94static_assert(sizeof(sdmaAESKey) == 32);
95
96typedef struct GEM5_PACKED
97{
98 uint32_t countData0;
99 uint32_t countData1;
100 uint32_t countData2;
101 uint32_t countData3;
103static_assert(sizeof(sdmaAESCounter) == 16);
104
105typedef struct GEM5_PACKED
106{
107 uint32_t countKey0;
108 uint32_t countKey1;
109 uint32_t countKey2;
110 uint32_t countKey3;
112static_assert(sizeof(sdmaAESLoad) == 16);
113
114typedef struct GEM5_PACKED
115{
116 uint32_t reserved : 6;
117 uint32_t offset : 26;
119static_assert(sizeof(sdmaAESOffset) == 4);
120
121typedef struct GEM5_PACKED
122{
123 uint64_t base;
124 uint32_t size : 20;
125 uint32_t reserved : 12;
126 uint64_t csaAddr;
128static_assert(sizeof(sdmaIndirectBuffer) == 20);
129
130typedef struct GEM5_PACKED
131{
132 uint32_t priv : 1;
133 uint32_t reserved1 : 11;
134 uint32_t vmid : 4;
135 uint32_t reserved2 : 16;
137static_assert(sizeof(sdmaIndirectBufferHeader) == 4);
138
139typedef struct GEM5_PACKED
140{
141 uint64_t dest;
142 uint32_t data;
144static_assert(sizeof(sdmaFence) == 12);
145
146typedef struct GEM5_PACKED
147{
148 union
149 {
150 struct
151 {
152 uint32_t contextId : 3;
153 uint32_t rbRptr: 13;
154 uint32_t ibOffset : 12;
155 uint32_t reserved : 4;
156 };
157 uint32_t intrContext;
158 };
160static_assert(sizeof(sdmaTrap) == 4);
161
162typedef struct GEM5_PACKED
163{
164 union
165 {
166 struct
167 {
168 uint32_t reserved : 3;
169 uint32_t addrLo : 29;
170 uint32_t addrHi;
171 };
172 Addr addr;
173 };
175static_assert(sizeof(sdmaSemaphore) == 8);
176
177typedef struct GEM5_PACKED
178{
179 union
180 {
181 struct
182 {
183 uint32_t reserved : 3;
184 uint32_t addrLo : 29;
185 uint32_t addrHi;
186 };
187 Addr addr;
188 };
190static_assert(sizeof(sdmaMemInc) == 8);
191
192typedef struct GEM5_PACKED
193{
194 uint32_t regAddr : 18;
195 uint32_t reserved : 2;
196 uint32_t apertureId : 12;
197 uint32_t data;
199static_assert(sizeof(sdmaSRBMWrite) == 8);
200
201typedef struct GEM5_PACKED
202{
203 uint32_t reserved : 28;
204 uint32_t byteEnable : 4;
206static_assert(sizeof(sdmaSRBMWriteHeader) == 4);
207
208typedef struct GEM5_PACKED
209{
210 uint64_t address;
211 uint32_t ref;
212 uint32_t mask;
213 uint32_t pollInt : 16;
214 uint32_t retryCount : 12;
215 uint32_t reserved1 : 4;
217static_assert(sizeof(sdmaPollRegMem) == 20);
218
219typedef struct GEM5_PACKED
220{
221 uint32_t reserved : 26;
222 uint32_t op : 2; // Operation
223 uint32_t func : 3; // Comparison function
224 uint32_t mode : 1; // Mode: register or memory polling
226static_assert(sizeof(sdmaPollRegMemHeader) == 4);
227
228typedef struct GEM5_PACKED
229{
230 union
231 {
232 struct
233 {
234 uint32_t addrLo;
235 uint32_t addrHi;
236 };
237 Addr addr;
238 };
239 uint32_t reference;
240 union
241 {
242 struct
243 {
244 uint32_t execCount : 14;
245 uint32_t unused : 18;
246 };
247 uint32_t ordinal;
248 };
250static_assert(sizeof(sdmaCondExec) == 16);
251
252typedef struct GEM5_PACKED
253{
254 union
255 {
256 struct
257 {
258 uint32_t addrLo;
259 uint32_t addrHi;
260 };
261 Addr addr;
262 };
263 union
264 {
265 struct
266 {
267 uint32_t srcDataLo;
268 uint32_t srdDataHi;
269 };
270 uint64_t srcData;
271 };
272 union
273 {
274 struct
275 {
276 uint32_t cmpDataLo;
277 uint32_t cmpDataHi;
278 };
279 uint64_t cmpData;
280 };
281 uint32_t loopInt : 13;
282 uint32_t reserved : 19;
284static_assert(sizeof(sdmaAtomic) == 28);
285
286typedef struct GEM5_PACKED
287{
288 int unused2 : 16;
289 int loop : 1;
290 int unused1 : 8;
291 int opcode : 7;
293static_assert(sizeof(sdmaAtomicHeader) == 4);
294
295constexpr unsigned int SDMA_ATOMIC_ADD64 = 47;
296
297typedef struct GEM5_PACKED
298{
299 uint64_t dest;
300 uint64_t mask;
301 uint64_t initValue;
302 uint64_t increment;
303 uint32_t count: 19;
304 uint32_t reserved : 13;
306static_assert(sizeof(sdmaPtePde) == 36);
307
308typedef struct GEM5_PACKED
309{
310 union
311 {
312 struct
313 {
314 uint32_t initDataLo;
315 uint32_t initDataHi;
316 };
317 uint64_t initData;
318 };
320static_assert(sizeof(sdmaTimestamp) == 8);
321
322typedef struct GEM5_PACKED
323{
324 uint32_t execCount : 14;
325 uint32_t reserved : 18;
327static_assert(sizeof(sdmaPredExec) == 4);
328
329typedef struct GEM5_PACKED
330{
331 uint32_t opcode : 8;
332 uint32_t subOpcode : 8;
333 uint32_t device : 8;
334 uint32_t unused : 8;
336static_assert(sizeof(sdmaPredExecHeader) == 4);
337
338typedef struct GEM5_PACKED
339{
340 uint32_t contextId : 3;
341 uint32_t rbRptr: 13;
342 uint32_t ibOffset : 12;
343 uint32_t reserved : 4;
345static_assert(sizeof(sdmaDummyTrap) == 4);
346
347typedef struct GEM5_PACKED
348{
349 uint32_t byteStride;
350 uint32_t dmaCount;
351 union
352 {
353 struct
354 {
355 uint32_t destLo;
356 uint32_t destHi;
357 };
358 uint64_t dest;
359 };
360 uint32_t byteCount : 26;
362static_assert(sizeof(sdmaDataFillMulti) == 20);
363
364typedef struct GEM5_PACKED
365{
366 uint16_t format : 8;
367 uint16_t barrier : 1;
368 uint16_t acqFenceScope : 2;
369 uint16_t relFenceScope : 2;
370 uint16_t reserved : 3;
372static_assert(sizeof(sdmaHeaderAgentDisp) == 2);
373
374typedef struct GEM5_PACKED
375{
377 uint16_t res0;
378 uint32_t res1;
379 union
380 {
381 struct
382 {
383 uint32_t retLo;
384 uint32_t retHi;
385 };
387 };
388 uint32_t count : 22;
389 uint32_t res2 : 10;
390 uint32_t res3 : 16;
391 uint32_t swDest : 2;
392 uint32_t res4 : 6;
393 uint32_t swSrc : 2;
394 uint32_t unused : 6;
395 union
396 {
397 struct
398 {
399 uint32_t srcLo;
400 uint32_t srcHi;
401 };
403 };
404 union
405 {
406 struct
407 {
408 uint32_t destLo;
409 uint32_t destHi;
410 };
412 };
413 uint64_t res5;
414 uint64_t res6;
415 union
416 {
417 struct
418 {
419 uint32_t compSignalLo;
420 uint32_t compSignalHi;
421 };
423 };
425static_assert(sizeof(sdmaAQLCopy) == 64);
426
427typedef struct GEM5_PACKED
428{
430 uint16_t res0;
431 uint32_t res1;
437 uint64_t res2;
438 union
439 {
440 struct
441 {
442 uint32_t compSignalLo;
443 uint32_t compSignalHi;
444 };
446 };
448static_assert(sizeof(sdmaAQLBarrierOr) == 64);
449
450} // namespace gem5
451
452#endif // __DEV_AMDGPU_SDMA_PACKETS_HH__
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
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 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.
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
PM4 packets.
sdmaHeaderAgentDisp header

Generated on Mon Jul 10 2023 15:32:02 for gem5 by doxygen 1.9.7