NV services: Difference between revisions

Line 1,730: Line 1,730:
     u32 sm_arch_warp_count;        // 0x80
     u32 sm_arch_warp_count;        // 0x80
     u32 gpu_va_bit_count;          // 0x28
     u32 gpu_va_bit_count;          // 0x28
     u32 reserved;                  // NULL
     u32 reserved;                  // 0x0
     u64 flags;                      // 0x55 (HAS_SYNCPOINTS | SUPPORT_SPARSE_ALLOCS | SUPPORT_CYCLE_STATS | SUPPORT_CYCLE_STATS_SNAPSHOT)
     u64 flags;                      // 0x55 (HAS_SYNCPOINTS | SUPPORT_SPARSE_ALLOCS | SUPPORT_CYCLE_STATS | SUPPORT_CYCLE_STATS_SNAPSHOT)
     u32 twod_class;                // 0x902D (FERMI_TWOD_A)
     u32 twod_class;                // 0x902D (FERMI_TWOD_A)
Line 1,754: Line 1,754:
     __in    u64 gpu_characteristics_buf_addr;  // ignored, but must not be NULL
     __in    u64 gpu_characteristics_buf_addr;  // ignored, but must not be NULL
     __out struct gpu_characteristics gc;
     __out struct gpu_characteristics gc;
  };
[S2] Uses [[#Ioctl3|Ioctl3]].
  struct gpu_characteristics {
    u32 arch;                      // 0x170
    u32 impl;                      // 0xE
    u32 rev;                        // 0xA1 (Revision A1)
    u32 num_gpc;                    // 0x1
    u64 l2_cache_size;              // 0x100000
    u64 on_board_video_memory_size; // 0x0 (not used)
    u32 num_tpc_per_gpc;            // 0x6
    u32 bus_type;                  // 0x20 (NVGPU_GPU_BUS_TYPE_AXI)
    u32 big_page_size;              // 0x0
    u32 compression_page_size;      // 0x10000
    u32 pde_coverage_bit_count;    // 0x15
    u32 available_big_page_sizes;  // 0x0
    u32 gpc_mask;                  // 0x1
    u32 sm_arch_sm_version;        // 0x808
    u32 sm_arch_spa_version;        // 0x806
    u32 sm_arch_warp_count;        // 0x60
    u32 gpu_va_bit_count;          // 0x28
    u32 reserved;                  // 0x0
    u64 flags;                      // 0x935FAF1EDC0155
    u32 twod_class;                // 0x902D (FERMI_TWOD_A)
    u32 threed_class;              // 0xC797 (AMPERE_B)
    u32 compute_class;              // 0xC7C0 (AMPERE_COMPUTE_B)
    u32 gpfifo_class;              // 0xC76F (AMPERE_CHANNEL_GPFIFO_B)
    u32 inline_to_memory_class;    // 0xA140 (KEPLER_INLINE_TO_MEMORY_B)
    u32 dma_copy_class;            // 0xC7B5 (AMPERE_DMA_COPY_B)
    u32 unk0;                      // 0xF001F
    u32 unk1;                      // 0x21002B
    u32 unk2;                      // 0xFFFF000D
    u32 unk3;                      // 0xFFFFFFFF
    u32 unk4;                      // 0x0
    u32 unk5;                      // 0x1
    u32 unk6;                      // 0x1
    u32 unk7;                      // 0x1
    u32 unk8;                      // 0x4
    u32 unk9;                      // 0x0
    u32 unk10;                      // 0x1
    u32 unk11;                      // 0x0
    u32 unk12;                      // 0x0
    u64 chipname;                  // 0x6761313066 ("ga10f")
    u32 unk13;                      // 0x0
    u32 unk14;                      // 0x2
    u32 unk15;                      // 0x40
    u32 unk16;                      // 0x3
    u32 unk17;                      // 0x7
    u32 unk18;                      // 0x1
    u32 unk19;                      // 0x1
    u32 unk20;                      // 0x0
    u32 unk21;                      // 0x0
  };
 
  struct in_buf {
    __in    u64 gpu_characteristics_buf_size;  // must not be NULL, but gets overwritten with 0xD0=max_size
    __in    u8 reserved[0xD8];
  };
 
  struct out_buf {
    __out  u8 reserved[0xE0];
  };
 
  struct out_buf2 {
    __out struct gpu_characteristics gc;
   };
   };