Difference between revisions of "NV services"
Jump to navigation
Jump to search
Line 10: | Line 10: | ||
| 0 || [[#Open]] | | 0 || [[#Open]] | ||
|- | |- | ||
− | | 1 || Ioctl | + | | 1 || [[#Ioctl]] |
|- | |- | ||
| 2 || Close | | 2 || Close | ||
Line 38: | Line 38: | ||
| 1 || 0x00000008 | | 1 || 0x00000008 | ||
|- | |- | ||
− | | 2-4 || | + | | 2-4 || Type 5 descriptor: Device path |
|- style="border-top: double" | |- style="border-top: double" | ||
| 0 || "SFCI" | | 0 || "SFCI" | ||
|- | |- | ||
− | | 1 || | + | | 1 || 0x00000000 |
+ | |} | ||
+ | |||
+ | == Ioctl == | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Word || Value | ||
+ | |- | ||
+ | | 0 || 0x11100004 | ||
+ | |- | ||
+ | | 1 || 0x00000C0B | ||
+ | |- | ||
+ | | 2-5 || Type 0x21 descriptor: Input buffer | ||
+ | |- | ||
+ | | 9-6 || Type 0x22 descriptor: Output buffer | ||
+ | |- | ||
+ | |- style="border-top: double" | ||
+ | | 0 || "SFCI" | ||
+ | |- | ||
+ | | 1 || 0x00000001 | ||
|- | |- | ||
| 2 || Always 0. | | 2 || Always 0. | ||
|- | |- | ||
− | | 3 || | + | | 3 || Device fd |
+ | |- | ||
+ | | 4 || Ioctl Cmd | ||
|} | |} | ||
Revision as of 16:23, 20 May 2017
The Switch makes use of a customized NVIDIA driver.
nvdrv:a
Main NVIDIA driver service.
Cmd | Name |
---|---|
0 | #Open |
1 | #Ioctl |
2 | Close |
3 | Initialize |
4 | QueryEvent |
5 | MapSharedMem |
6 | ? |
7 | ? |
8 | BindDisplayService |
9 | ? |
Open
Word | Value |
---|---|
0 | 0x00100004 |
1 | 0x00000008 |
2-4 | Type 5 descriptor: Device path |
0 | "SFCI" |
1 | 0x00000000 |
Ioctl
Word | Value |
---|---|
0 | 0x11100004 |
1 | 0x00000C0B |
2-5 | Type 0x21 descriptor: Input buffer |
9-6 | Type 0x22 descriptor: Output buffer |
0 | "SFCI" |
1 | 0x00000001 |
2 | Always 0. |
3 | Device fd |
4 | Ioctl Cmd |
Ioctls
The ioctl number is generated with the following primitive (see Linux kernel):
#define _IOC(inout, group, num, len) \ (inout | ((len & IOCPARM_MASK) << 16) | ((group) << 8) | (num))
The following table contains known ioctls.
Device | Value | Description | Notes |
---|---|---|---|
/dev/nvhost-* | 0xC0??0001 | NVHOST_IOCTL_CHANNEL_SUBMIT | ?? == size is variable |
/dev/nvhost-* | 0xC0080002 | NVHOST_IOCTL_CHANNEL_GET_SYNCPOINT | |
/dev/nvhost-* | 0xC0080003 | NVHOST_IOCTL_CHANNEL_GET_WAITBASE | |
/dev/nvhost-* | 0xC0080004 | NVHOST_IOCTL_CHANNEL_SET_TIMEOUT_EX | |
/dev/nvhost-* | 0x40040007 | ||
/dev/nvhost-* | 0xC0??0009 | NVHOST_IOCTL_CHANNEL_MAP_BUFFER | ?? == size is variable |
/dev/nvhost-* | 0xC0??000A | NVHOST_IOCTL_CHANNEL_UNMAP_BUFFER | ?? == size is variable |
/dev/nvhost-* | 0x00000013 | ||
/dev/nvhost-ctrl | 0xC0080014 | NVHOST_IOCTL_CTRL_SYNCPT_READ | |
/dev/nvhost-ctrl | 0x40040015 | NVHOST_IOCTL_CTRL_SYNCPT_INCR | |
/dev/nvhost-ctrl | 0xC00C0016 | NVHOST_IOCTL_CTRL_SYNCPT_WAIT | |
/dev/nvhost-ctrl | 0x40080017 | NVHOST_IOCTL_CTRL_MODULE_MUTEX | |
/dev/nvhost-ctrl | 0xC0180018 | NVHOST32_IOCTL_CTRL_MODULE_REGRDWR | |
/dev/nvhost-ctrl | 0xC0100019 | NVHOST_IOCTL_CTRL_SYNCPT_WAITEX | |
/dev/nvhost-ctrl | 0xC008001A | NVHOST_IOCTL_CTRL_SYNCPT_READ_MAX | |
/dev/nvhost-ctrl | 0xC004001C | ||
/dev/nvhost-ctrl | 0xC010001D | NvRmSyncWaitEvent (wait on event?) | |
/dev/nvhost-ctrl | 0xC010001E | NvRmSyncWaitEvent (wait on event?) | |
/dev/nvhost-ctrl | 0xC004001F | NvRmSyncWaitEvent (signal event?) | |
/dev/nvhost-ctrl | 0xC0040020 | NvRmSyncWaitEvent (signal event?) | |
/dev/nvhost-ctrl | 0x40080021 | cancel_wait_event | Cancels all events |
/dev/nvmap | 0xC0080101 | NVMAP_IOC_CREATE | |
/dev/nvmap | 0x00000102 | Returns NVERROR 0x02 (not supported) | |
/dev/nvmap | 0xC0080103 | NVMAP_IOC_FROM_ID | |
/dev/nvmap | 0xC0200104 | NVMAP_IOC_ALLOC | |
/dev/nvmap | 0xC0180105 | NVMAP_IOC_FREE | |
/dev/nvmap | 0xC0280106 | NVMAP_IOC_MMAP? | Returns NVERROR 0x02 (not supported) |
/dev/nvmap | 0xC0280107 | NVMAP_IOC_WRITE? | Returns NVERROR 0x02 (not supported) |
/dev/nvmap | 0xC0280108 | NVMAP_IOC_READ? | Returns NVERROR 0x02 (not supported) |
/dev/nvmap | 0xC00C0109 | NVMAP_IOC_PARAM | |
/dev/nvmap | 0xC010010A | NVMAP_IOC_PIN_MULT? | Returns NVERROR 0x02 (not supported) |
/dev/nvmap | 0xC010010B | NVMAP_IOC_UNPIN_MULT? | Returns NVERROR 0x02 (not supported) |
/dev/nvmap | 0xC008010C | NVMAP_IOC_CACHE? | Returns NVERROR 0x02 (not supported) |
/dev/nvmap | 0xC004010D | Returns NVERROR 0x02 (not supported) | |
/dev/nvmap | 0xC008010E | NVMAP_IOC_GET_ID | |
/dev/nvmap | 0xC004010F | Returns NVERROR 0x02 (not supported) | |
/dev/nvmap | 0x40040110 | Returns NVERROR 0x02 (not supported) | |
/dev/nvmap | 0x00000111 | Returns NVERROR 0x02 (not supported) | |
/dev/nvhost-as-gpu | 0x40044101 | NVGPU_AS_IOCTL_BIND_CHANNEL | |
/dev/nvhost-as-gpu | 0xC0184102 | NVGPU_AS_IOCTL_ALLOC_SPACE | |
/dev/nvhost-as-gpu | 0xC0104103 | NVGPU_AS_IOCTL_FREE_SPACE | |
/dev/nvhost-as-gpu | 0xC0184104 | NVGPU_AS_IOCTL_MAP_BUFFER | |
/dev/nvhost-as-gpu | 0xC0084105 | NVGPU_AS_IOCTL_UNMAP_BUFFER | |
/dev/nvhost-as-gpu | 0xC0284106 | NVGPU_AS_IOCTL_MAP_BUFFER_EX | |
/dev/nvhost-as-gpu | 0x40104107 | init_as_gpu | Initializes the as-gpu node |
/dev/nvhost-as-gpu | 0xC0404108 | NVGPU_AS_IOCTL_GET_VA_REGIONS? | |
/dev/nvhost-as-gpu | 0x40284109 | init_as_gpu_ex | Initializes the as-gpu node (with more params) |
/dev/nvhost-as-gpu | 0xC0144114 | ||
/dev/nvhost-dbg-gpu | 0x40084401 | NVGPU_DBG_GPU_IOCTL_BIND_CHANNEL | |
/dev/nvhost-dbg-gpu | 0xC0??4402 | NVGPU_DBG_GPU_IOCTL_REG_OPS | ?? == size is unknown |
/dev/nvhost-dbg-gpu | 0x40084403 | NVGPU_DBG_GPU_IOCTL_EVENTS_CTRL | |
/dev/nvhost-dbg-gpu | 0x40044404 | NVGPU_DBG_GPU_IOCTL_POWERGATE | |
/dev/nvhost-dbg-gpu | 0x40044405 | NVGPU_DBG_GPU_IOCTL_SMPC_CTXSW_MODE | |
/dev/nvhost-dbg-gpu | 0xC0184407 | NVGPU_DBG_GPU_IOCTL_PERFBUF_MAP | |
/dev/nvhost-dbg-gpu | 0x40084408 | NVGPU_DBG_GPU_IOCTL_PERFBUF_UNMAP | |
/dev/nvhost-dbg-gpu | 0x40084409 | NVGPU_DBG_GPU_IOCTL_PC_SAMPLING | |
/dev/nvhost-ctrl-gpu | 0x80044701 | NVGPU_GPU_IOCTL_ZCULL_GET_CTX_SIZE | |
/dev/nvhost-ctrl-gpu | 0x80284702 | NVGPU_GPU_IOCTL_ZCULL_GET_INFO | |
/dev/nvhost-ctrl-gpu | 0x402C4703 | NVGPU_GPU_IOCTL_ZBC_SET_TABLE | |
/dev/nvhost-ctrl-gpu | 0xC0344704 | NVGPU_GPU_IOCTL_ZBC_QUERY_TABLE | |
/dev/nvhost-ctrl-gpu | 0xC0B04705 | NVGPU_GPU_IOCTL_GET_CHARACTERISTICS | |
/dev/nvhost-ctrl-gpu | 0xC0184706 | NVGPU_GPU_IOCTL_GET_TPC_MASKS | |
/dev/nvhost-ctrl-gpu | 0x40084707 | NVGPU_GPU_IOCTL_OPEN_CHANNEL | |
/dev/nvhost-ctrl-gpu | 0x4008470E | ||
/dev/nvhost-ctrl-gpu | 0x4010470F | ||
/dev/nvhost-ctrl-gpu | 0xC0084710 | ||
/dev/nvhost-ctrl-gpu | 0x80084711 | ||
/dev/nvhost-ctrl-gpu | 0x80084712 | ||
/dev/nvhost-ctrl-gpu | 0xC0044713 | ||
/dev/nvhost-ctrl-gpu | 0x80084714 | ||
/dev/nvhost-ctrl-gpu | 0x80044715 | ||
/dev/nvhost-ctrl-gpu | 0x8018471A | ||
/dev/nvhost-ctrl-gpu | 0xC008471B | ||
/dev/nvhost-ctrl-gpu | 0xC010471C | ||
/dev/nvhost-* | 0x40044801 | NVGPU_IOCTL_CHANNEL_SET_NVMAP_FD | |
/dev/nvhost-* | 0x40044803 | NVGPU_IOCTL_CHANNEL_SET_PRIORITY | |
/dev/nvhost-* | 0x40084805 | NVGPU_IOCTL_CHANNEL_ALLOC_GPFIFO | |
/dev/nvhost-* | 0xC0044807 | NVGPU_IOCTL_CHANNEL_CYCLE_STATS | |
/dev/nvhost-* | 0xC0184808 | NVGPU_IOCTL_CHANNEL_SUBMIT_GPFIFO | |
/dev/nvhost-* | 0xC0104809 | NVGPU_IOCTL_CHANNEL_ALLOC_OBJ_CTX | |
/dev/nvhost-* | 0x4008480A | NVGPU_IOCTL_CHANNEL_FREE_OBJ_CTX | |
/dev/nvhost-* | 0xC010480B | NVGPU_IOCTL_CHANNEL_ZCULL_BIND | |
/dev/nvhost-* | 0xC018480C | NVGPU_IOCTL_CHANNEL_SET_ERROR_NOTIFIER | |
/dev/nvhost-* | 0x4004480D | NVGPU_IOCTL_CHANNEL_OPEN | |
/dev/nvhost-* | 0x0000480E | NVGPU_IOCTL_CHANNEL_ENABLE | |
/dev/nvhost-* | 0x0000480F | NVGPU_IOCTL_CHANNEL_DISABLE | |
/dev/nvhost-* | 0x00004810 | NVGPU_IOCTL_CHANNEL_PREEMPT | |
/dev/nvhost-* | 0x00004811 | NVGPU_IOCTL_CHANNEL_FORCE_RESET | |
/dev/nvhost-* | 0x40084812 | NVGPU_IOCTL_CHANNEL_EVENTS_CTRL | |
/dev/nvhost-* | 0xC0104813 | NVGPU_IOCTL_CHANNEL_CYCLE_STATS_SNAPSHOT | |
/dev/nvhost-* | 0x40084714 | set_user_address | Group ID is wrong (0x47 should be 0x48) |
/dev/nvhost-* | 0x80084715 | get_user_address | Group ID is wrong (0x47 should be 0x48) |
/dev/nvhost-* | 0x80804816 | ||
/dev/nvhost-* | 0xC0104817 | ||
/dev/nvhost-* | 0x40204818 | NVGPU_IOCTL_CHANNEL_ALLOC_GPFIFO_EX | |
/dev/nvhost-* | 0xC0484819 | ||
/dev/nvhost-* | 0xC020481A | NVGPU_IOCTL_CHANNEL_ALLOC_GPFIFO_EX2 |
nvmemp
NVIDIA memory profiler (this service is not available on retail units).
mm:u
NVIDIA multimedia (NvMM) platform service.
Cmd | Name |
---|---|
0 | ? |
1 | ? |
2 | ? |
3 | ? |
4 | module_init_clk |
5 | module_deinit_clk |
6 | module_set_clk_rate |
7 | module_get_clk_rate |