aboutsummaryrefslogtreecommitdiffstats
path: root/nvdebug.h
diff options
context:
space:
mode:
Diffstat (limited to 'nvdebug.h')
-rw-r--r--nvdebug.h52
1 files changed, 28 insertions, 24 deletions
diff --git a/nvdebug.h b/nvdebug.h
index be718dd..39e07b4 100644
--- a/nvdebug.h
+++ b/nvdebug.h
@@ -457,7 +457,7 @@ enum ENGINE_TYPES {
457 ENGINE_COPY2 = 3, // [raw/physical] COPY #2 457 ENGINE_COPY2 = 3, // [raw/physical] COPY #2
458 458
459 ENGINE_MSPDEC = 8, // Picture DECoder 459 ENGINE_MSPDEC = 8, // Picture DECoder
460 ENGINE_MSPPP = 9, // [Video] Post Processing 460 ENGINE_MSPPP = 9, // [Video] Picture Post Processor
461 ENGINE_MSVLD = 10, // [Video] Variable Length Decoder 461 ENGINE_MSVLD = 10, // [Video] Variable Length Decoder
462 ENGINE_MSENC = 11, // [Video] ENCoding 462 ENGINE_MSENC = 11, // [Video] ENCoding
463 ENGINE_VIC = 12, // Video Image Compositor 463 ENGINE_VIC = 12, // Video Image Compositor
@@ -468,10 +468,12 @@ enum ENGINE_TYPES {
468 468
469 ENGINE_IOCTRL = 18, // I/O ConTRoLler [of NVLINK at least] 469 ENGINE_IOCTRL = 18, // I/O ConTRoLler [of NVLINK at least]
470 ENGINE_LCE = 19, // Logical Copy Engine 470 ENGINE_LCE = 19, // Logical Copy Engine
471 ENGINE_GSP = 20, // Gpu System Processor 471 ENGINE_GSP = 20, // Gpu System Processor (Volta+)
472 ENGINE_NVJPG = 21, // NVidia JPeG [Decoder] (Ampere+) 472 ENGINE_NVJPG = 21, // NVidia JPeG [Decoder] (Turing+)
473 ENGINE_OFA = 22, // Optical Flow Accelerator (Turing+)
474 ENGINE_FLA = 23, // [NVLink] Fabric Logical Addressing [?]
473}; 475};
474#define ENGINE_TYPES_LEN 22 476#define ENGINE_TYPES_LEN 24
475static const char* const ENGINE_TYPES_NAMES[ENGINE_TYPES_LEN] = { 477static const char* const ENGINE_TYPES_NAMES[ENGINE_TYPES_LEN] = {
476 "Graphics/Compute", 478 "Graphics/Compute",
477 "COPY0", 479 "COPY0",
@@ -495,9 +497,11 @@ static const char* const ENGINE_TYPES_NAMES[ENGINE_TYPES_LEN] = {
495 "LCE: Logical Copy Engine", 497 "LCE: Logical Copy Engine",
496 "GSP: GPU System Processor", 498 "GSP: GPU System Processor",
497 "NVJPG: NVIDIA JPEG Decoder", 499 "NVJPG: NVIDIA JPEG Decoder",
500 "OFA: Optical Flow Accelerator",
501 "FLA: Fabric Logical Addressing",
498}; 502};
499 503
500/* GPU engine information and control register offsets 504/* GPU engine information and control register offsets (GPU TOPology)
501 Each engine is described by one or more entries (terminated by an entry with 505 Each engine is described by one or more entries (terminated by an entry with
502 the `has_next_entry` flag unset) in the fixed-size PTOP_DEVICE_INFO table. A 506 the `has_next_entry` flag unset) in the fixed-size PTOP_DEVICE_INFO table. A
503 typical device, such as the graphics/compute engine and any copy engines, are 507 typical device, such as the graphics/compute engine and any copy engines, are
@@ -559,34 +563,34 @@ static const char* const ENGINE_TYPES_NAMES[ENGINE_TYPES_LEN] = {
559 See dev_top.ref.txt of NVIDIA's open-gpu-doc for more info. 563 See dev_top.ref.txt of NVIDIA's open-gpu-doc for more info.
560*/ 564*/
561 565
562#define NV_PTOP_DEVICE_INFO_AMPERE(i) (0x00022800+(i)*4) 566#define NV_PTOP_DEVICE_INFO_GA100(i) (0x00022800+(i)*4)
563#define NV_PTOP_DEVICE_INFO_PREVIOUS(i) (0x00022700+(i)*4) 567#define NV_PTOP_DEVICE_INFO_GK104(i) (0x00022700+(i)*4)
564#define NV_PTOP_DEVICE_INFO__SIZE_1_AMPERE(g) (nvdebug_readl(g, 0x0224fc) >> 20) 568#define NV_PTOP_DEVICE_INFO__SIZE_1_GA100(g) (nvdebug_readl(g, 0x0224fc) >> 20)
565#define NV_PTOP_DEVICE_INFO__SIZE_1_PREVIOUS 64 569#define NV_PTOP_DEVICE_INFO__SIZE_1_GK104 64
566#define NV_PTOP_DEVICE_INFO_TYPE_COUNT 3 570#define NV_PTOP_DEVICE_INFO_TYPE_COUNT 3
567typedef union { 571typedef union {
568 struct { 572 struct {
569 uint32_t fault_id:7; 573 uint32_t fault_id:11;
570 uint32_t padding0:9; 574 uint32_t padding0:5;
571 uint32_t inst_id:4; 575 uint32_t inst_id:8;
572 uint32_t padding1:4; 576 enum ENGINE_TYPES engine_type:7; // "type_enum"
573 enum ENGINE_TYPES engine_type:7;
574 bool has_next_entry:1; 577 bool has_next_entry:1;
575 } __attribute__((packed)); 578 } __attribute__((packed));
576 struct { 579 struct {
577 uint32_t reset_enum:5; 580 uint32_t reset_enum:8; // "reset_id"
578 uint32_t padding2:7; 581 uint32_t pri_base:18; // "device_pri_base"
579 uint32_t pri_base:12; 582 uint32_t padding1:4;
580 uint32_t padding3:8; 583 uint32_t is_engine:1;
584 uint32_t padding2:1;
581 } __attribute__((packed)); 585 } __attribute__((packed));
582 struct { 586 struct {
583 uint32_t engine_enum:2; 587 uint32_t engine_enum:2; // "rleng_id"
584 uint32_t padding4:8; 588 uint32_t padding3:8;
585 uint32_t runlist_enum:14; 589 uint32_t runlist_enum:16; // "runlist_pri_base"
586 uint32_t padding5:8; 590 uint32_t padding4:6;
587 } __attribute__((packed)); 591 } __attribute__((packed));
588 uint32_t raw; 592 uint32_t raw;
589} ptop_device_info_ampere_t; 593} ptop_device_info_ga100_t;
590 594
591typedef union { 595typedef union {
592 // DATA type fields 596 // DATA type fields
@@ -625,7 +629,7 @@ typedef union {
625 uint32_t padding9:1; 629 uint32_t padding9:1;
626 } __attribute__((packed)); 630 } __attribute__((packed));
627 uint32_t raw; 631 uint32_t raw;
628} ptop_device_info_previous_t; 632} ptop_device_info_gk104_t;
629 633
630#define NV_PTOP_SCAL_NUM_GPCS 0x00022430 634#define NV_PTOP_SCAL_NUM_GPCS 0x00022430
631#define NV_PTOP_SCAL_NUM_TPC_PER_GPC 0x00022434 635#define NV_PTOP_SCAL_NUM_TPC_PER_GPC 0x00022434