Changes

2,585 bytes added ,  16:51, 3 June 2017
no edit summary
Line 368: Line 368:  
| 0xC0344704 || Inout || 52 || NVGPU_GPU_IOCTL_ZBC_QUERY_TABLE ||
 
| 0xC0344704 || Inout || 52 || NVGPU_GPU_IOCTL_ZBC_QUERY_TABLE ||
 
|-
 
|-
| 0xC0B04705 || Inout || 176 || NVGPU_GPU_IOCTL_GET_CHARACTERISTICS ||
+
| 0xC0B04705 || Inout || 176 || [[#NVGPU_GPU_IOCTL_GET_CHARACTERISTICS]] ||
 
|-
 
|-
 
| 0xC0184706 || Inout || 24 || NVGPU_GPU_IOCTL_GET_TPC_MASKS ||
 
| 0xC0184706 || Inout || 24 || NVGPU_GPU_IOCTL_GET_TPC_MASKS ||
Line 396: Line 396:  
| 0xC010471C || Inout || 16 || ||
 
| 0xC010471C || Inout || 16 || ||
 
|}
 
|}
 +
 +
=== NVGPU_GPU_IOCTL_GET_CHARACTERISTICS ===
 +
Returns the GPU characteristics. Modified to return inline data instead of using a pointer.
 +
 +
  struct __gpu_characteristics {
 +
    u32 __arch;                          // 0x120 (NVGPU_GPU_ARCH_GM200)
 +
    u32 __impl;                          // 0xB (NVGPU_GPU_IMPL_GM20B)
 +
    u32 __rev;                            // 0xA1 (Revision A1)
 +
    u32 __num_gpc;                        // 0x1
 +
    u64 __L2_cache_size;                  // 0x40000
 +
    u64 __on_board_video_memory_size;    // 0x0 (not used)
 +
    u32 __num_tpc_per_gpc;                // 0x2
 +
    u32 __bus_type;                      // 0x20 (NVGPU_GPU_BUS_TYPE_AXI)
 +
    u32 __big_page_size;                  // 0x20000
 +
    u32 __compression_page_size;          // 0x20000
 +
    u32 __pde_coverage_bit_count;        // 0x1B
 +
    u32 __available_big_page_sizes;      // 0x30000
 +
    u32 __gpc_mask;                      // 0x1
 +
    u32 __sm_arch_sm_version;            // 0x503 (Maxwell Generation 5.0.3?)
 +
    u32 __sm_arch_spa_version;            // 0x503 (Maxwell Generation 5.0.3?)
 +
    u32 __sm_arch_warp_count;            // 0x80
 +
    u32 __gpu_va_bit_count;              // 0x28
 +
    u32 __reserved;                      // NULL
 +
    u64 __flags;                          // 0x55
 +
    u32 __twod_class;                    // 0x902D (FERMI_TWOD_A)
 +
    u32 __threed_class;                  // 0xB197 (MAXWELL_B)
 +
    u32 __compute_class;                  // 0xB1C0 (MAXWELL_COMPUTE_B)
 +
    u32 __gpfifo_class;                  // 0xB06F (MAXWELL_CHANNEL_GPFIFO_A)
 +
    u32 __inline_to_memory_class;        // 0xA140 (KEPLER_INLINE_TO_MEMORY_B)
 +
    u32 __dma_copy_class;                // 0xB0B5 (MAXWELL_DMA_COPY_A)
 +
    u32 __max_fbps_count;                // 0x1
 +
    u32 __fbp_en_mask;                    // 0x0 (disabled)
 +
    u32 __max_ltc_per_fbp;                // 0x2
 +
    u32 __max_lts_per_ltc;                // 0x1
 +
    u32 __max_tex_per_tpc;                // 0x0 (not supported)
 +
    u32 __max_gpc_count;                  // 0x1
 +
    u32 __rop_l2_en_mask_0;              // 0x21D70 (fuse_status_opt_rop_l2_fbp_r)
 +
    u32 __rop_l2_en_mask_1;              // 0x0
 +
    u64 __chipname;                      // 0x6230326D67 ("gm20b")
 +
    u64 __gr_compbit_store_base_hw;      // 0x0 (not supported)
 +
  };
 +
 +
  struct {
 +
    u64 __gpu_characteristics_buf_size;  // in/out (must not be NULL, but gets overwritten with 0xA0=max_size)
 +
    u64 __gpu_characteristics_buf_addr;  // in (ignored, but must not be NULL)
 +
    struct __gpu_characteristics gc;      // out
 +
  };
    
== Channels ==
 
== Channels ==
Line 518: Line 565:     
   struct {
 
   struct {
     u32 __class_num;    // in (0xB197=2d, 0xB1C0=compute, 0xA140=kepler, 0xB0B5=DMA, 0xB06F=channel_gpfifo)
+
     u32 __class_num;    // in (0x902D=2d, 0xB197=3d, 0xB1C0=compute, 0xA140=kepler, 0xB0B5=DMA, 0xB06F=channel_gpfifo)
 
     u32 __flags;        // in
 
     u32 __flags;        // in
 
     u64 __obj_id;      // out (ignored; used for FREE_OBJ_CTX ioctl, which is not supported)
 
     u64 __obj_id;      // out (ignored; used for FREE_OBJ_CTX ioctl, which is not supported)