Difference between revisions of "NV services"

From Nintendo Switch Brew
Jump to navigation Jump to search
(cleaning up, removing speculation)
Line 9: Line 9:
 
| 0 || Open
 
| 0 || Open
 
|-
 
|-
| 1 || [[#Ioctl]]
+
| 1 || Ioctl
 
|-
 
|-
 
| 2 || Close
 
| 2 || Close
Line 28: Line 28:
 
|}
 
|}
  
== Ioctl ==
+
== Ioctls ==
Just like any standard build of the NVIDIA graphics' drivers, the nvdrv:a service operates mainly by processing requests and sending them to the kernel (not verified) through IOCtl commands.
+
The ioctl number is generated with the following primitive (see Linux kernel):
Note that these commands are generated with the following primitive (see Linux kernel):
 
  
 
  #define _IOC(inout, group, num, len) \
 
  #define _IOC(inout, group, num, len) \
 
     (inout | ((len & IOCPARM_MASK) << 16) | ((group) << 8) | (num))
 
     (inout | ((len & IOCPARM_MASK) << 16) | ((group) << 8) | (num))
  
The following table contains valid commands for group 0x00.
+
The following table contains known ioctls.
This group consists in commands for the "/dev/nvhost-ctrl" interface and a few global commands for every nvhost channel (e.g.: "/dev/nvhost-gpu").
+
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
! Value || Description || Notes
+
! Device || Value || Description || Notes
 
|-
 
|-
| 0xC0??0001 || NVHOST32_IOCTL_CHANNEL_SUBMIT || ?? == size is unknown
+
| /dev/nvhost-* || 0xC0??0001 || NVHOST32_IOCTL_CHANNEL_SUBMIT || ?? == size is unknown
 
|-
 
|-
| 0xC0080002 || NVHOST_IOCTL_CHANNEL_GET_SYNCPOINT ||
+
| /dev/nvhost-* || 0xC0080002 || NVHOST_IOCTL_CHANNEL_GET_SYNCPOINT ||
 
|-
 
|-
| 0xC0080003 || NVHOST_IOCTL_CHANNEL_GET_WAITBASE ||
+
| /dev/nvhost-* || 0xC0080003 || NVHOST_IOCTL_CHANNEL_GET_WAITBASE ||
 
|-
 
|-
| 0xC0080004 || NVHOST_IOCTL_CHANNEL_SET_TIMEOUT_EX ||
+
| /dev/nvhost-* || 0xC0080004 || NVHOST_IOCTL_CHANNEL_SET_TIMEOUT_EX ||
 
|-
 
|-
| 0xC01C0009 || NVHOST_IOCTL_CHANNEL_SUBMIT(?) ||
+
| /dev/nvhost-* || 0xC01C0009 || NVHOST_IOCTL_CHANNEL_SUBMIT(?) ||
 
|-
 
|-
| 0xC01C000A || NVHOST_IOCTL_CHANNEL_MODULE_REGRDWR(?) ||
+
| /dev/nvhost-* || 0xC01C000A || NVHOST_IOCTL_CHANNEL_MODULE_REGRDWR(?) ||
 
|-
 
|-
| 0xC0080014 || NVHOST_IOCTL_CTRL_SYNCPT_READ ||
+
| /dev/nvhost-* || 0xC0080014 || NVHOST_IOCTL_CTRL_SYNCPT_READ ||
 
|-
 
|-
| 0x40040015 || NVHOST_IOCTL_CTRL_SYNCPT_INCR ||
+
| /dev/nvhost-* || 0x40040015 || NVHOST_IOCTL_CTRL_SYNCPT_INCR ||
 
|-
 
|-
| 0xC00C0016 || NVHOST_IOCTL_CTRL_SYNCPT_WAIT ||
+
| /dev/nvhost-* || 0xC00C0016 || NVHOST_IOCTL_CTRL_SYNCPT_WAIT ||
 
|-
 
|-
| 0x40080017 || NVHOST_IOCTL_CTRL_MODULE_MUTEX ||
+
| /dev/nvhost-* || 0x40080017 || NVHOST_IOCTL_CTRL_MODULE_MUTEX ||
 
|-
 
|-
| 0xC0180018 || NVHOST32_IOCTL_CTRL_MODULE_REGRDWR ||
+
| /dev/nvhost-* || 0xC0180018 || NVHOST32_IOCTL_CTRL_MODULE_REGRDWR ||
 
|-
 
|-
| 0xC0100019 || NVHOST_IOCTL_CTRL_SYNCPT_WAITEX ||
+
| /dev/nvhost-* || 0xC0100019 || NVHOST_IOCTL_CTRL_SYNCPT_WAITEX ||
 
|-
 
|-
| 0xC008001A || NVHOST_IOCTL_CTRL_SYNCPT_READ_MAX ||
+
| /dev/nvhost-* || 0xC008001A || NVHOST_IOCTL_CTRL_SYNCPT_READ_MAX ||
 
|-
 
|-
| 0xC004001C || NVHOST_IOCTL_CTRL_GET_VERSION(?) ||
+
| /dev/nvhost-* || 0xC004001C || NVHOST_IOCTL_CTRL_GET_VERSION(?) ||
 
|-
 
|-
| 0xC010001D || Unknown || NvRmSyncWaitEvent (wait on event?
+
| /dev/nvhost-* || 0xC010001D || || NvRmSyncWaitEvent (wait on event?)
 
|-
 
|-
| 0xC010001E || Unknown || NvRmSyncWaitEvent (wait on event?)
+
| /dev/nvhost-* || 0xC010001E || || NvRmSyncWaitEvent (wait on event?)
 
|-
 
|-
| 0xC004001F || Unknown || NvRmSyncWaitEvent (signal event?)
+
| /dev/nvhost-* || 0xC004001F || || NvRmSyncWaitEvent (signal event?)
 
|-
 
|-
| 0xC0040020 || Unknown || NvRmSyncWaitEvent (signal event?)
+
| /dev/nvhost-* || 0xC0040020 || || NvRmSyncWaitEvent (signal event?)
 
|-
 
|-
| 0x40080021 || Unknown || Returns busy?
+
| /dev/nvhost-* || 0x40080021 || || Returns busy?
 
|-
 
|-
|}
+
| /dev/nvmap || 0xC0080101 || NVMAP_IOC_CREATE ||
 
 
 
 
The following table contains valid commands for group 0x01.
 
This group consists in commands for the "/dev/nvmap" interface.
 
{| class="wikitable" border="1"
 
! Value || Description || Notes
 
 
|-
 
|-
| 0xC0080101 || NVMAP_IOC_CREATE ||
+
| /dev/nvmap || 0xC0080103 || NVMAP_IOC_FROM_ID ||
 
|-
 
|-
| 0xC0080103 || NVMAP_IOC_FROM_ID ||
+
| /dev/nvmap || 0xC0200104 || NVMAP_IOC_ALLOC ||
 
|-
 
|-
| 0xC0200104 || NVMAP_IOC_ALLOC ||
+
| /dev/nvmap || 0xC0180105 || NVMAP_IOC_FREE ||
 
|-
 
|-
| 0xC0180105 || NVMAP_IOC_FREE ||
+
| /dev/nvmap || 0xC00C0109 || NVMAP_IOC_PARAM ||
 
|-
 
|-
| 0xC00C0109 || NVMAP_IOC_PARAM ||
+
| /dev/nvmap || 0xC008010E || NVMAP_IOC_GET_ID ||
 
|-
 
|-
| 0xC008010E || NVMAP_IOC_GET_ID ||
+
| /dev/nvhost-as-gpu || 0x40044101 || NVGPU_AS_IOCTL_BIND_CHANNEL ||
 
|-
 
|-
|}
+
| /dev/nvhost-as-gpu || 0xC0184102 || NVGPU32_AS_IOCTL_ALLOC_SPACE ||
 
 
 
 
The following table contains valid commands for group 0x41 ('A').
 
This group consists in commands for the "/dev/nvhost-as-gpu" interface.
 
{| class="wikitable" border="1"
 
! Value || Description || Notes
 
 
|-
 
|-
| 0x40044101 || NVGPU_AS_IOCTL_BIND_CHANNEL ||
+
| /dev/nvhost-as-gpu || 0xC0104103 || NVGPU_AS_IOCTL_FREE_SPACE ||
 
|-
 
|-
| 0xC0184102 || NVGPU32_AS_IOCTL_ALLOC_SPACE ||
+
| /dev/nvhost-as-gpu || 0xC0184104 || NVGPU_AS_IOCTL_MAP_BUFFER ||
 
|-
 
|-
| 0xC0104103 || NVGPU_AS_IOCTL_FREE_SPACE ||
+
| /dev/nvhost-as-gpu || 0xC0084105 || NVGPU_AS_IOCTL_UNMAP_BUFFER ||
 
|-
 
|-
| 0xC0184104 || NVGPU_AS_IOCTL_MAP_BUFFER ||
+
| /dev/nvhost-as-gpu || 0xC0284106 || NVGPU_AS_IOCTL_ALLOC_SPACE ||
 
|-
 
|-
| 0xC0084105 || NVGPU_AS_IOCTL_UNMAP_BUFFER ||
+
| /dev/nvhost-as-gpu || 0x40104107 || ||
 
|-
 
|-
| 0xC0284106 || NVGPU_AS_IOCTL_ALLOC_SPACE ||
+
| /dev/nvhost-as-gpu || 0xC0404108 || ||
 
|-
 
|-
| 0x40104107 || Unknown ||
+
| /dev/nvhost-as-gpu || 0x40284109 || ||
 
|-
 
|-
| 0xC0404108 || Unknown ||
+
| /dev/nvhost-as-gpu || 0xC0144114 || ||
 
|-
 
|-
| 0x40284109 || Unknown ||
+
| /dev/nvhost-dbg-gpu || 0xC0??4402 || NVGPU_DBG_GPU_IOCTL_REG_OPS || ?? == size is unknown
 
|-
 
|-
| 0xC0144114 || Unknown ||
+
| /dev/nvhost-ctrl-gpu || 0x80044701 || NVGPU_GPU_IOCTL_ZCULL_GET_CTX_SIZE ||
 
|-
 
|-
|}
+
| /dev/nvhost-ctrl-gpu || 0x80284702 || NVGPU_GPU_IOCTL_ZCULL_GET_INFO ||
 
 
 
 
The following table contains valid commands for group 0x44 ('D').
 
This group consists in commands for the "/dev/nvhost-dbg-gpu" interface.
 
{| class="wikitable" border="1"
 
! Value || Description || Notes
 
 
|-
 
|-
| 0xC0??4402 || NVGPU_DBG_GPU_IOCTL_REG_OPS || ?? == size is unknown
+
| /dev/nvhost-ctrl-gpu || 0x402C4703 || NVGPU_GPU_IOCTL_ZBC_SET_TABLE ||
 
|-
 
|-
|}
+
| /dev/nvhost-ctrl-gpu || 0xC0344704 || NVGPU_GPU_IOCTL_ZBC_QUERY_TABLE ||
 
 
 
 
The following table contains valid commands for group 0x47 ('G').
 
This group consists in commands for the "/dev/nvhost-ctrl-gpu" interface.
 
{| class="wikitable" border="1"
 
! Value || Description || Notes
 
 
|-
 
|-
| 0x80044701 || NVGPU_GPU_IOCTL_ZCULL_GET_CTX_SIZE ||
+
| /dev/nvhost-ctrl-gpu || 0xC0B04705 || NVGPU_GPU_IOCTL_GET_CHARACTERISTICS ||
 
|-
 
|-
| 0x80284702 || NVGPU_GPU_IOCTL_ZCULL_GET_INFO ||
+
| /dev/nvhost-ctrl-gpu || 0xC0184706 || NVGPU_AS_IOCTL_ALLOC_SPACE ||
 
|-
 
|-
| 0x402C4703 || NVGPU_GPU_IOCTL_ZBC_SET_TABLE ||
+
| /dev/nvhost-ctrl-gpu || 0x40084707 || ||
 
|-
 
|-
| 0xC0344704 || NVGPU_GPU_IOCTL_ZBC_QUERY_TABLE ||
+
| /dev/nvhost-ctrl-gpu || 0x4008470E || ||
 
|-
 
|-
| 0xC0B04705 || NVGPU_GPU_IOCTL_GET_CHARACTERISTICS ||
+
| /dev/nvhost-ctrl-gpu || 0x4010470F || ||
 
|-
 
|-
| 0xC0184706 || NVGPU_AS_IOCTL_ALLOC_SPACE ||
+
| /dev/nvhost-ctrl-gpu || 0xC0084710 || ||
 
|-
 
|-
| 0x40084707 || Unknown ||
+
| /dev/nvhost-ctrl-gpu || 0x80084711 || ||
 
|-
 
|-
| 0x4008470E || Unknown ||
+
| /dev/nvhost-ctrl-gpu || 0x80084714 || ||
 
|-
 
|-
| 0x4010470F || Unknown ||
+
| /dev/nvhost-ctrl-gpu || 0xC008471B || ||
|-
 
| 0xC0084710 || Unknown ||
 
|-
 
| 0x80084711 || Unknown ||
 
|-
 
| 0x80084714 || Unknown ||
 
|-
 
| 0xC008471B || Unknown ||
 
|-
 
| 0xC010471C || Unknown ||
 
|-
 
|}
 
 
 
 
 
The following table contains valid commands for group 0x48 ('H').
 
This group consists in commands common to all nvhost channels (depending if they implement them or not), but they are only listed here in relation to the interface "/dev/nvhost-gpu" for convenience.
 
{| class="wikitable" border="1"
 
! Value || Description || Notes
 
 
|-
 
|-
| 0x40044801 || NVGPU_IOCTL_CHANNEL_SET_NVMAP_FD ||
+
| /dev/nvhost-ctrl-gpu || 0xC010471C || ||
 
|-
 
|-
| 0x40044803 || NVGPU_IOCTL_CHANNEL_SET_TIMEOUT(?) ||
+
| /dev/nvhost-* || 0x40044801 || NVGPU_IOCTL_CHANNEL_SET_NVMAP_FD ||
 
|-
 
|-
| 0x40084805 || NVGPU_IOCTL_CHANNEL_SET_TIMEOUT_EX(?) ||
+
| /dev/nvhost-* || 0x40044803 || NVGPU_IOCTL_CHANNEL_SET_TIMEOUT(?) ||
 
|-
 
|-
| 0xC0044807 || NVGPU_IOCTL_CHANNEL_CYCLE_STATS ||
+
| /dev/nvhost-* || 0x40084805 || NVGPU_IOCTL_CHANNEL_SET_TIMEOUT_EX(?) ||
 
|-
 
|-
| 0xC0184808 || NVGPU_IOCTL_CHANNEL_SUBMIT_GPFIFO ||
+
| /dev/nvhost-* || 0xC0044807 || NVGPU_IOCTL_CHANNEL_CYCLE_STATS ||
 
|-
 
|-
| 0xC0104809 || NVGPU_IOCTL_CHANNEL_ALLOC_OBJ_CTX ||
+
| /dev/nvhost-* || 0xC0184808 || NVGPU_IOCTL_CHANNEL_SUBMIT_GPFIFO ||
 
|-
 
|-
| 0x4008480A || NVGPU_IOCTL_CHANNEL_FREE_OBJ_CTX ||
+
| /dev/nvhost-* || 0xC0104809 || NVGPU_IOCTL_CHANNEL_ALLOC_OBJ_CTX ||
 
|-
 
|-
| 0xC010480B || NVGPU_IOCTL_CHANNEL_ZCULL_BIND ||
+
| /dev/nvhost-* || 0x4008480A || NVGPU_IOCTL_CHANNEL_FREE_OBJ_CTX ||
 
|-
 
|-
| 0xC018480C || NVGPU_IOCTL_CHANNEL_SET_ERROR_NOTIFIER ||
+
| /dev/nvhost-* || 0xC010480B || NVGPU_IOCTL_CHANNEL_ZCULL_BIND ||
 
|-
 
|-
| 0x4004480D || NVGPU_IOCTL_CHANNEL_OPEN ||
+
| /dev/nvhost-* || 0xC018480C || NVGPU_IOCTL_CHANNEL_SET_ERROR_NOTIFIER ||
 
|-
 
|-
| 0x0000480E || NVGPU_IOCTL_CHANNEL_ENABLE ||
+
| /dev/nvhost-* || 0x4004480D || NVGPU_IOCTL_CHANNEL_OPEN ||
 
|-
 
|-
| 0x0000480F || NVGPU_IOCTL_CHANNEL_DISABLE ||
+
| /dev/nvhost-* || 0x0000480E || NVGPU_IOCTL_CHANNEL_ENABLE ||
 
|-
 
|-
| 0x00004810 || NVGPU_IOCTL_CHANNEL_PREEMPT ||
+
| /dev/nvhost-* || 0x0000480F || NVGPU_IOCTL_CHANNEL_DISABLE ||
 
|-
 
|-
| 0x00004811 || NVGPU_IOCTL_CHANNEL_FORCE_RESET ||
+
| /dev/nvhost-* || 0x00004810 || NVGPU_IOCTL_CHANNEL_PREEMPT ||
 
|-
 
|-
| 0x40084812 || NVGPU_IOCTL_CHANNEL_EVENTS_CTRL ||
+
| /dev/nvhost-* || 0x00004811 || NVGPU_IOCTL_CHANNEL_FORCE_RESET ||
 
|-
 
|-
| 0xC0104813 || NVGPU_IOCTL_CHANNEL_CYCLE_STATS_SNAPSHOT ||
+
| /dev/nvhost-* || 0x40084812 || NVGPU_IOCTL_CHANNEL_EVENTS_CTRL ||
 
|-
 
|-
| 0x80804816 || Unknown ||
+
| /dev/nvhost-* || 0xC0104813 || NVGPU_IOCTL_CHANNEL_CYCLE_STATS_SNAPSHOT ||
 
|-
 
|-
| 0xC0104817 || Unknown ||
+
| /dev/nvhost-* || 0x80804816 || ||
 
|-
 
|-
| 0x40204818 || Unknown ||
+
| /dev/nvhost-* || 0xC0104817 || ||
 
|-
 
|-
| 0xC0184819 || Unknown ||
+
| /dev/nvhost-* || 0x40204818 || ||
 
|-
 
|-
| 0xC020481A || Unknown ||
+
| /dev/nvhost-* || 0xC0184819 || ||
 
|-
 
|-
 +
| /dev/nvhost-* || 0xC020481A || ||
 
|}
 
|}

Revision as of 21:12, 15 April 2017

The Switch makes use of a customized NVIDIA driver that is exposed through multiple services. Communication with these services goes through IPC, as usual.

nvdrv:a

Cmd Name
0 Open
1 Ioctl
2 Close
3 Initialize
4 QueryEvent
5 MapSharedMem
6
7
8 Audio render related init?
9 ?

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 NVHOST32_IOCTL_CHANNEL_SUBMIT ?? == size is unknown
/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-* 0xC01C0009 NVHOST_IOCTL_CHANNEL_SUBMIT(?)
/dev/nvhost-* 0xC01C000A NVHOST_IOCTL_CHANNEL_MODULE_REGRDWR(?)
/dev/nvhost-* 0xC0080014 NVHOST_IOCTL_CTRL_SYNCPT_READ
/dev/nvhost-* 0x40040015 NVHOST_IOCTL_CTRL_SYNCPT_INCR
/dev/nvhost-* 0xC00C0016 NVHOST_IOCTL_CTRL_SYNCPT_WAIT
/dev/nvhost-* 0x40080017 NVHOST_IOCTL_CTRL_MODULE_MUTEX
/dev/nvhost-* 0xC0180018 NVHOST32_IOCTL_CTRL_MODULE_REGRDWR
/dev/nvhost-* 0xC0100019 NVHOST_IOCTL_CTRL_SYNCPT_WAITEX
/dev/nvhost-* 0xC008001A NVHOST_IOCTL_CTRL_SYNCPT_READ_MAX
/dev/nvhost-* 0xC004001C NVHOST_IOCTL_CTRL_GET_VERSION(?)
/dev/nvhost-* 0xC010001D NvRmSyncWaitEvent (wait on event?)
/dev/nvhost-* 0xC010001E NvRmSyncWaitEvent (wait on event?)
/dev/nvhost-* 0xC004001F NvRmSyncWaitEvent (signal event?)
/dev/nvhost-* 0xC0040020 NvRmSyncWaitEvent (signal event?)
/dev/nvhost-* 0x40080021 Returns busy?
/dev/nvmap 0xC0080101 NVMAP_IOC_CREATE
/dev/nvmap 0xC0080103 NVMAP_IOC_FROM_ID
/dev/nvmap 0xC0200104 NVMAP_IOC_ALLOC
/dev/nvmap 0xC0180105 NVMAP_IOC_FREE
/dev/nvmap 0xC00C0109 NVMAP_IOC_PARAM
/dev/nvmap 0xC008010E NVMAP_IOC_GET_ID
/dev/nvhost-as-gpu 0x40044101 NVGPU_AS_IOCTL_BIND_CHANNEL
/dev/nvhost-as-gpu 0xC0184102 NVGPU32_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_ALLOC_SPACE
/dev/nvhost-as-gpu 0x40104107
/dev/nvhost-as-gpu 0xC0404108
/dev/nvhost-as-gpu 0x40284109
/dev/nvhost-as-gpu 0xC0144114
/dev/nvhost-dbg-gpu 0xC0??4402 NVGPU_DBG_GPU_IOCTL_REG_OPS ?? == size is unknown
/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_AS_IOCTL_ALLOC_SPACE
/dev/nvhost-ctrl-gpu 0x40084707
/dev/nvhost-ctrl-gpu 0x4008470E
/dev/nvhost-ctrl-gpu 0x4010470F
/dev/nvhost-ctrl-gpu 0xC0084710
/dev/nvhost-ctrl-gpu 0x80084711
/dev/nvhost-ctrl-gpu 0x80084714
/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_TIMEOUT(?)
/dev/nvhost-* 0x40084805 NVGPU_IOCTL_CHANNEL_SET_TIMEOUT_EX(?)
/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-* 0x80804816
/dev/nvhost-* 0xC0104817
/dev/nvhost-* 0x40204818
/dev/nvhost-* 0xC0184819
/dev/nvhost-* 0xC020481A