NV services: Difference between revisions
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= | 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) |