Changes

Jump to navigation Jump to search
2,729 bytes added ,  18:09, 30 October 2020
Line 34: Line 34:  
| 6 || [[#GetStatus]]
 
| 6 || [[#GetStatus]]
 
|-
 
|-
| 7 || [[#SetAruidForTest]]
+
| 7 || [[#SetAruidWithoutCheck]]
 
|-
 
|-
 
| 8 || [[#SetAruid]]
 
| 8 || [[#SetAruid]]
 
|-
 
|-
| 9 || [[#DumpGraphicsMemoryInfo]]
+
| 9 || [[#DumpStatus]]
 
|-
 
|-
 
| 10 || [3.0.0+] [[#InitializeDevtools]]
 
| 10 || [3.0.0+] [[#InitializeDevtools]]
Line 88: Line 88:  
Takes no input. Returns 0x10-bytes and an output u32 ('''error_code''').
 
Takes no input. Returns 0x10-bytes and an output u32 ('''error_code''').
   −
== SetAruidForTest ==
+
== SetAruidWithoutCheck ==
 
Takes an input u64 which must [[IPC_Marshalling|match]] the user-process PID ([[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]]). Returns an output u32 ('''error_code''').
 
Takes an input u64 which must [[IPC_Marshalling|match]] the user-process PID ([[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]]). Returns an output u32 ('''error_code''').
   Line 94: Line 94:  
Takes a PID-descriptor and an u64 which must [[IPC_Marshalling|match]] the user-process PID ([[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]]). Returns an output u32 ('''error_code''').
 
Takes a PID-descriptor and an u64 which must [[IPC_Marshalling|match]] the user-process PID ([[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]]). Returns an output u32 ('''error_code''').
   −
== DumpGraphicsMemoryInfo ==
+
== DumpStatus ==
No input or output. Does nothing.
+
No input or output.
    
== InitializeDevtools ==
 
== InitializeDevtools ==
Takes a copy-handle and an input u32. Returns an output u32 ('''error_code''').
+
Takes a copy-handle ('''transfer_memory''') and an input u32 ('''transfer_memory_size'''). Returns an output u32 ('''error_code''').
    
== Ioctl2 ==
 
== Ioctl2 ==
Line 119: Line 119:  
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
!  Bits
 
!  Bits
 +
!  Name
 
!  Description
 
!  Description
 
|-
 
|-
 
| 0
 
| 0
| Can access [[#/dev/nvhost-gpu|/dev/nvhost-gpu]], [[#/dev/nvhost-ctrl-gpu|/dev/nvhost-ctrl-gpu]] and [[#/dev/nvhost-as-gpu|/dev/nvhost-as-gpu]].
+
| NvDrvPermission_Gpu
 +
| Can access [[#Channels|/dev/nvhost-gpu]], [[#/dev/nvhost-ctrl-gpu|/dev/nvhost-ctrl-gpu]] and [[#/dev/nvhost-as-gpu|/dev/nvhost-as-gpu]].
 
|-
 
|-
 
| 1
 
| 1
 +
| NvDrvPermission_GpuDebug
 
| Can access [[#/dev/nvhost-dbg-gpu|/dev/nvhost-dbg-gpu]] and [[#/dev/nvhost-prof-gpu|/dev/nvhost-prof-gpu]].
 
| Can access [[#/dev/nvhost-dbg-gpu|/dev/nvhost-dbg-gpu]] and [[#/dev/nvhost-prof-gpu|/dev/nvhost-prof-gpu]].
 
|-
 
|-
 
| 2
 
| 2
 +
| NvDrvPermission_GpuSchedule
 
| Can access [[#/dev/nvsched-ctrl|/dev/nvsched-ctrl]].
 
| Can access [[#/dev/nvsched-ctrl|/dev/nvsched-ctrl]].
 
|-
 
|-
 
| 3
 
| 3
 +
| NvDrvPermission_VIC
 
| Can access [[#Channels|/dev/nvhost-vic]].
 
| Can access [[#Channels|/dev/nvhost-vic]].
 
|-
 
|-
 
| 4
 
| 4
 +
| NvDrvPermission_VideoEncoder
 
| Can access [[#Channels|/dev/nvhost-msenc]].
 
| Can access [[#Channels|/dev/nvhost-msenc]].
 
|-
 
|-
 
| 5
 
| 5
 +
| NvDrvPermission_VideoDecoder
 
| Can access [[#Channels|/dev/nvhost-nvdec]].
 
| Can access [[#Channels|/dev/nvhost-nvdec]].
 
|-
 
|-
 
| 6
 
| 6
|  
+
| NvDrvPermission_TSEC
 +
| Can access [[#Channels|/dev/nvhost-tsec]].
 
|-
 
|-
 
| 7
 
| 7
 +
| NvDrvPermission_JPEG
 
| Can access [[#Channels|/dev/nvhost-nvjpg]].
 
| Can access [[#Channels|/dev/nvhost-nvjpg]].
 
|-
 
|-
 
| 8
 
| 8
 +
| NvDrvPermission_Display
 
| Can access [[#Channels|/dev/nvhost-display]], [[#/dev/nvcec-ctrl|/dev/nvcec-ctrl]], [[#/dev/nvhdcp_up-ctrl|/dev/nvhdcp_up-ctrl]], [[#/dev/nvdisp-ctrl|/dev/nvdisp-ctrl]], [[#/dev/nvdisp-disp0, /dev/nvdisp-disp1|/dev/nvdisp-disp0]], [[#/dev/nvdisp-disp0, /dev/nvdisp-disp1|/dev/nvdisp-disp1]], [[#/dev/nvdcutil-disp0, /dev/nvdcutil-disp1|/dev/nvdcutil-disp0]] and [[#/dev/nvdcutil-disp0, /dev/nvdcutil-disp1|/dev/nvdcutil-disp1]].
 
| Can access [[#Channels|/dev/nvhost-display]], [[#/dev/nvcec-ctrl|/dev/nvcec-ctrl]], [[#/dev/nvhdcp_up-ctrl|/dev/nvhdcp_up-ctrl]], [[#/dev/nvdisp-ctrl|/dev/nvdisp-ctrl]], [[#/dev/nvdisp-disp0, /dev/nvdisp-disp1|/dev/nvdisp-disp0]], [[#/dev/nvdisp-disp0, /dev/nvdisp-disp1|/dev/nvdisp-disp1]], [[#/dev/nvdcutil-disp0, /dev/nvdcutil-disp1|/dev/nvdcutil-disp0]] and [[#/dev/nvdcutil-disp0, /dev/nvdcutil-disp1|/dev/nvdcutil-disp1]].
 
|-
 
|-
 
| 9
 
| 9
|  
+
| NvDrvPermission_ImportMemory
 +
| Can duplicate [[#/dev/nvmap|nvmap]] handles from other processes with [[#NVMAP_IOC_FROM_ID|NVMAP_IOC_FROM_ID]].
 
|-
 
|-
 
| 10
 
| 10
| Can use [[#SetAruidForTest|SetAruidForTest]].
+
| NvDrvPermission_NoCheckedAruid
 +
| Can use [[#SetAruidWithoutCheck|SetAruidWithoutCheck]].
 
|-
 
|-
 
| 11
 
| 11
 +
|
 
| Can use [[#SetGraphicsFirmwareMemoryMarginEnabled|SetGraphicsFirmwareMemoryMarginEnabled]].  
 
| Can use [[#SetGraphicsFirmwareMemoryMarginEnabled|SetGraphicsFirmwareMemoryMarginEnabled]].  
 
|-
 
|-
 
| 12
 
| 12
|  
+
|
 +
| Can duplicate exported [[#/dev/nvmap|nvmap]] handles from other processes with [[#NVMAP_IOC_FROM_ID|NVMAP_IOC_FROM_ID]].
 
|-
 
|-
 
| 13
 
| 13
 +
|
 
|  
 
|  
 
|-
 
|-
 
| 14
 
| 14
|  
+
|
 +
| Can use [[#NVMAP_IOC_EXPORT_FOR_ARUID|NVMAP_IOC_EXPORT_FOR_ARUID]] and [[#NVMAP_IOC_REMOVE_EXPORT_FOR_ARUID|NVMAP_IOC_REMOVE_EXPORT_FOR_ARUID]].
 
|-
 
|-
 
| 15
 
| 15
 +
|
 
|  
 
|  
|-
  −
| 16-31
  −
| Unused.
   
|}
 
|}
   Line 203: Line 217:  
| 0xC183001B || Inout || 387 || [[#NVHOST_IOCTL_CTRL_GET_CONFIG]]
 
| 0xC183001B || Inout || 387 || [[#NVHOST_IOCTL_CTRL_GET_CONFIG]]
 
|-
 
|-
| 0xC004001C || Inout || 4 || [[#NVHOST_IOCTL_CTRL_EVENT_SIGNAL]]
+
| 0xC004001C || Inout || 4 || [[#NVHOST_IOCTL_CTRL_SYNCPT_CLEAR_EVENT_WAIT]]
 
|-
 
|-
| 0xC010001D || Inout || 16 || [[#NVHOST_IOCTL_CTRL_EVENT_WAIT]]
+
| 0xC010001D || Inout || 16 || [[#NVHOST_IOCTL_CTRL_SYNCPT_EVENT_WAIT]]
 
|-
 
|-
| 0xC010001E || Inout || 16 || [[#NVHOST_IOCTL_CTRL_EVENT_WAIT_ASYNC]]
+
| 0xC010001E || Inout || 16 || [[#NVHOST_IOCTL_CTRL_SYNCPT_EVENT_WAIT_ASYNC]]
 
|-
 
|-
| 0xC004001F || Inout || 4 || [[#NVHOST_IOCTL_CTRL_EVENT_REGISTER]]
+
| 0xC004001F || Inout || 4 || [[#NVHOST_IOCTL_CTRL_SYNCPT_REGISTER_EVENT]]
 
|-
 
|-
| 0xC0040020 || Inout || 4 || [[#NVHOST_IOCTL_CTRL_EVENT_UNREGISTER]]
+
| 0xC0040020 || Inout || 4 || [[#NVHOST_IOCTL_CTRL_SYNCPT_UNREGISTER_EVENT]]
 
|-
 
|-
| 0x40080021 || In || 8 || [[#NVHOST_IOCTL_CTRL_EVENT_KILL]]
+
| 0x40080021 || In || 8 || [[#NVHOST_IOCTL_CTRL_SYNCPT_FREE_EVENTS]]
 
|-
 
|-
 
| 0xC0040022 || Inout || 4 || [[#NVHOST_IOCTL_CTRL_GET_MAX_EVENT_FIFO_CHANNEL]]
 
| 0xC0040022 || Inout || 4 || [[#NVHOST_IOCTL_CTRL_GET_MAX_EVENT_FIFO_CHANNEL]]
Line 289: Line 303:  
   };
 
   };
   −
=== NVHOST_IOCTL_CTRL_EVENT_SIGNAL ===
+
=== NVHOST_IOCTL_CTRL_SYNCPT_CLEAR_EVENT_WAIT ===
Signals an user event. Exclusive to the Switch.
+
Clears the wait signal of an event. Exclusive to the Switch.
    
   struct {
 
   struct {
     __in u32 user_event_id;     // ranges from 0x00 to 0x3F
+
     __in u32 event_slot;         // ranges from 0x00 to 0x3F
 
   };
 
   };
   −
=== NVHOST_IOCTL_CTRL_EVENT_WAIT ===
+
=== NVHOST_IOCTL_CTRL_SYNCPT_EVENT_WAIT ===
 
Waits on an event. If waiting fails, returns error code 0x05 (Timeout) and sets '''value''' to (('''syncpt_id''' << 0x10) | 0x10000000).
 
Waits on an event. If waiting fails, returns error code 0x05 (Timeout) and sets '''value''' to (('''syncpt_id''' << 0x10) | 0x10000000).
   −
Depending on '''threshold''', an '''user_event_id''' may be returned for using with other event ioctls.
+
Depending on '''threshold''', an '''event_slot''' may be returned for using with other event ioctls.
    
   struct {
 
   struct {
Line 305: Line 319:  
     __in    u32 threshold;
 
     __in    u32 threshold;
 
     __in    s32 timeout;
 
     __in    s32 timeout;
     __inout u32 value;          // in=user_event_id (ignored); out=syncpt_value or user_event_id
+
     __inout u32 value;          // in=event_slot (ignored); out=syncpt_value or event_slot
 
   };
 
   };
   −
=== NVHOST_IOCTL_CTRL_EVENT_WAIT_ASYNC ===
+
=== NVHOST_IOCTL_CTRL_SYNCPT_EVENT_WAIT_ASYNC ===
 
Waits on an event (async version). If waiting fails, returns error code 0x0B (BadValue).
 
Waits on an event (async version). If waiting fails, returns error code 0x0B (BadValue).
   −
Depending on '''threshold''', an '''user_event_id''' may be returned for using with other event ioctls.
+
Depending on '''threshold''', an '''event_slot''' may be returned for using with other event ioctls.
    
   struct {
 
   struct {
Line 317: Line 331:  
     __in    u32 threshold;
 
     __in    u32 threshold;
 
     __in    u32 timeout;
 
     __in    u32 timeout;
     __inout u32 value;          // in=user_event_id (ignored); out=syncpt_value or user_event_id
+
     __inout u32 value;          // in=event_slot (ignored); out=syncpt_value or event_slot
 
   };
 
   };
   −
=== NVHOST_IOCTL_CTRL_EVENT_REGISTER ===
+
=== NVHOST_IOCTL_CTRL_SYNCPT_REGISTER_EVENT ===
Registers an user event. Exclusive to the Switch.  
+
Registers an event. Exclusive to the Switch.  
    
   struct {
 
   struct {
     __in u32 user_event_id;     // ranges from 0x00 to 0x3F
+
     __in u32 event_slot;         // ranges from 0x00 to 0x3F
 
   };
 
   };
   −
=== NVHOST_IOCTL_CTRL_EVENT_UNREGISTER ===
+
=== NVHOST_IOCTL_CTRL_SYNCPT_UNREGISTER_EVENT ===
Unregisters an user event. Exclusive to the Switch.  
+
Unregisters an event. Exclusive to the Switch.  
    
   struct {
 
   struct {
     __in u32 user_event_id;     // ranges from 0x00 to 0x3F
+
     __in u32 event_slot;         // ranges from 0x00 to 0x3F
 
   };
 
   };
   −
=== NVHOST_IOCTL_CTRL_EVENT_KILL ===
+
=== NVHOST_IOCTL_CTRL_SYNCPT_FREE_EVENTS ===
Kills user events. Exclusive to the Switch.  
+
Frees events. Exclusive to the Switch.  
    
   struct {
 
   struct {
     __in u64 user_events;       // 64-bit bitfield where each bit represents one event
+
     __in u64 events;             // 64-bit bitfield where each bit represents one event
 
   };
 
   };
   Line 345: Line 359:     
   struct {
 
   struct {
     __out u32 max_channel;     // 0x00 (FIFO disabled) or 0x60 (FIFO enabled)
+
     __out u32 max_channel;       // 0x00 (FIFO disabled) or 0x60 (FIFO enabled)
 
   };
 
   };
   Line 514: Line 528:  
! Value || Direction || Size || Description
 
! Value || Direction || Size || Description
 
|-
 
|-
| 0x80040212 || Out || 4 || NVDISP_CTRL_GET_NUM_OUTPUTS
+
| 0x80040212 || Out || 4 || NVDISP_CTRL_NUM_OUTPUTS
 
|-
 
|-
| 0xC0140213 || Inout || 20 || NVDISP_CTRL_GET_OUTPUT_PROPERTIES
+
| 0xC0140213 || Inout || 20 || NVDISP_CTRL_GET_DISPLAY_PROPERTIES
 
|-
 
|-
| 0xC1100214 || Inout || 272 || NVDISP_CTRL_GET_OUTPUT_EDID
+
| 0xC1100214 || Inout || 272 || NVDISP_CTRL_QUERY_EDID
 
|-
 
|-
 
| 0xC0080216</br>([1.0.0-3.0.0] 0xC0040216) || Inout || 8</br>([1.0.0-3.0.0] 4) || NVDISP_CTRL_GET_EXT_HPD_IN_OUT_EVENTS</br>([1.0.0-3.0.0] NVDISP_CTRL_GET_EXT_HPD_IN_EVENT)
 
| 0xC0080216</br>([1.0.0-3.0.0] 0xC0040216) || Inout || 8</br>([1.0.0-3.0.0] 4) || NVDISP_CTRL_GET_EXT_HPD_IN_OUT_EVENTS</br>([1.0.0-3.0.0] NVDISP_CTRL_GET_EXT_HPD_IN_EVENT)
Line 528: Line 542:  
| 0xC0100219 || Inout || 16 || NVDISP_CTRL_GET_VBLANK_HEAD1_EVENT
 
| 0xC0100219 || Inout || 16 || NVDISP_CTRL_GET_VBLANK_HEAD1_EVENT
 
|-
 
|-
| 0xC0040220 || Inout || 4 || NVDISP_CTRL_GET_HPD_IRQ
+
| 0xC0040220 || Inout || 4 || NVDISP_CTRL_SUSPEND
 
|}
 
|}
   Line 547: Line 561:  
| 0x430C0206 || In || 780 || NVDISP_SET_LUT
 
| 0x430C0206 || In || 780 || NVDISP_SET_LUT
 
|-
 
|-
| 0x40010207 || In || 1 || NVDISP_ENABLE_DISABLE_CRC
+
| 0x40010207 || In || 1 || NVDISP_CONFIG_CRC
 
|-
 
|-
 
| 0x80040208 || Out || 4 || NVDISP_GET_CRC
 
| 0x80040208 || Out || 4 || NVDISP_GET_CRC
Line 582: Line 596:  
|-
 
|-
 
| 0xC004021F || Inout || 4 || NVDISP_GET_WINMASK
 
| 0xC004021F || Inout || 4 || NVDISP_GET_WINMASK
 +
|-
 +
| 0x80080221 || Out || 8 || [10.0.0+] NVDISP_GET_BACKLIGHT_RANGE
 +
|-
 +
| 0x40040222 || In || 4 || [10.0.0+] NVDISP_SET_BACKLIGHT
 
|}
 
|}
   Line 607: Line 625:  
! Value || Direction || Size || Description
 
! Value || Direction || Size || Description
 
|-
 
|-
| 0xC4880401 || Inout || 1160 || NVHDCP_READ_M
+
| 0xC4880401 || Inout || 1160 || NVHDCP_READ_STATUS
 
|-
 
|-
| 0xC4880402 || Inout || 1160 || NVHDCP_READ_S
+
| 0xC4880402 || Inout || 1160 || NVHDCP_READ_M
 
|-
 
|-
| 0x40010403 || In || 1 || NVHDCP_ON_OFF
+
| 0x40010403 || In || 1 || NVHDCP_USER_ENABLE
 
|-
 
|-
 
| 0xC0080404 || Inout || 8 || NVHDCP_READ_EVENT
 
| 0xC0080404 || Inout || 8 || NVHDCP_READ_EVENT
 
|-
 
|-
| 0xC0010405 || Inout || 1 || NVHDCP_EVENTS_ON_OFF
+
| 0xC0010405 || Inout || 1 || NVHDCP_EVENTS_ENABLE
 
|}
 
|}
   Line 622: Line 640:  
! Value || Direction || Size || Description
 
! Value || Direction || Size || Description
 
|-
 
|-
| 0x40010501 || In || 1 || NVDCUTIL_SW_HOTPLUG_IN_OUT
+
| 0x40010501 || In || 1 || NVDCUTIL_SW_HOTPLUG
 
|-
 
|-
| 0x40010502 || In || 1 || NVDCUTIL_VIRTUAL_EDID_ON_OFF
+
| 0x40010502 || In || 1 || NVDCUTIL_VIRTUAL_EDID_ENABLE
 
|-
 
|-
 
| 0x42040503 || In || 1056 || NVDCUTIL_VIRTUAL_EDID_SET_DATA
 
| 0x42040503 || In || 1056 || NVDCUTIL_VIRTUAL_EDID_SET_DATA
Line 630: Line 648:  
| 0x803C0504 || Out || 60 || NVDCUTIL_GET_MODE
 
| 0x803C0504 || Out || 60 || NVDCUTIL_GET_MODE
 
|-
 
|-
| 0x40010505 || In || 1 || NVDCUTIL_TELEMETRY_TEST_ON_OFF
+
| 0x40010505 || In || 1 || NVDCUTIL_TELEMETRY_TEST_ENABLE
 
|-
 
|-
 
| 0x400C0506 || In || 12 || NVDCUTIL_DSI_PACKET_SHORT_WRITE
 
| 0x400C0506 || In || 12 || NVDCUTIL_DSI_PACKET_SHORT_WRITE
Line 637: Line 655:  
|-
 
|-
 
| 0xC0F40508 || Inout || 244 || NVDCUTIL_DSI_PACKET_READ
 
| 0xC0F40508 || Inout || 244 || NVDCUTIL_DSI_PACKET_READ
 +
|-
 +
| 0x40010509 || In || 1 || [10.0.0+] NVDCUTIL_DP_ELEC_TEST_MODE_ENABLE
 +
|-
 +
| 0xC020050A || Inout || 32 || [10.0.0+] NVDCUTIL_DP_ELEC_TEST_SETTINGS
 
|}
 
|}
   Line 677: Line 699:  
| 0x4008060F || In || 8 || [[#NVSCHED_CTRL_DETACH_APPLICATION]]
 
| 0x4008060F || In || 8 || [[#NVSCHED_CTRL_DETACH_APPLICATION]]
 
|-
 
|-
| 0x40100610 || In || 16 || NVSCHED_CTRL_LINK_RUNLIST_EX
+
| 0x40100610 || In || 16 || NVSCHED_CTRL_SET_APPLICATION_MAX_DEBT
 
|-
 
|-
| 0x40100611 || In || 16 || NVSCHED_CTRL_UNLINK_RUNLIST_EX
+
| 0x40100611 || In || 16 || NVSCHED_CTRL_SET_RUNLIST_MAX_DEBT
 
|-
 
|-
| 0x40010612 || In || 1 || NVSCHED_CTRL_OVERRUN_EVENTS_ON_OFF
+
| 0x40010612 || In || 1 || NVSCHED_CTRL_OVERRUN_EVENTS_ENABLE
 
|}
 
|}
   Line 877: Line 899:  
| 0xC0084105 || Inout || 8 || [[#NVGPU_AS_IOCTL_UNMAP_BUFFER]]
 
| 0xC0084105 || Inout || 8 || [[#NVGPU_AS_IOCTL_UNMAP_BUFFER]]
 
|-
 
|-
| 0xC0284106 || Inout || 40 || [[#NVGPU_AS_IOCTL_MODIFY]]
+
| 0xC0284106 || Inout || 40 || [[#NVGPU_AS_IOCTL_MAP_BUFFER_EX]]
 
|-
 
|-
| 0x40104107 || In || 16 || [[#NVGPU_AS_IOCTL_INITIALIZE]]
+
| 0x40104107 || In || 16 || [[#NVGPU_AS_IOCTL_ALLOC_AS]]
 
|-
 
|-
 
| 0xC0404108 || Inout || 64 || [[#NVGPU_AS_IOCTL_GET_VA_REGIONS]]
 
| 0xC0404108 || Inout || 64 || [[#NVGPU_AS_IOCTL_GET_VA_REGIONS]]
 
|-
 
|-
| 0x40284109 || In || 40 || [[#NVGPU_AS_IOCTL_INITIALIZE_EX]]
+
| 0x40284109 || In || 40 || [[#NVGPU_AS_IOCTL_ALLOC_AS_EX]]
 
|-
 
|-
| 0xC038410A || Inout || 56 || [[#NVGPU_AS_IOCTL_MAP_BUFFER_EX]]
+
| 0xC038410A || Inout || 56 || [[#NVGPU_AS_IOCTL_MODIFY]]
 
|-
 
|-
 
| 0xC0??4114 || Inout || Variable || [[#NVGPU_AS_IOCTL_REMAP]]
 
| 0xC0??4114 || Inout || Variable || [[#NVGPU_AS_IOCTL_REMAP]]
Line 894: Line 916:     
   struct {
 
   struct {
     __in u32 fd;
+
     __in u32 channel_fd;
 
   };
 
   };
   Line 904: Line 926:  
     __in u32 page_size;
 
     __in u32 page_size;
 
     __in u32 flags;
 
     __in u32 flags;
     u32      pad;
+
     u32      padding;
 
     union {
 
     union {
 
       __out u64 offset;
 
       __out u64 offset;
Line 927: Line 949:  
   struct {
 
   struct {
 
     __in    u32 flags;        // bit0: fixed_offset, bit2: cacheable
 
     __in    u32 flags;        // bit0: fixed_offset, bit2: cacheable
     u32        pad;
+
     u32        reserved;
     __in    u32 nvmap_handle;
+
     __in    u32 dmabuf_fd;   // nvmap handle
 
     __inout u32 page_size;    // 0 means don't care
 
     __inout u32 page_size;    // 0 means don't care
 
     union {
 
     union {
Line 936: Line 958:  
   };
 
   };
   −
=== NVGPU_AS_IOCTL_MODIFY ===
+
=== NVGPU_AS_IOCTL_MAP_BUFFER_EX ===
Modifies a memory region in the device address space.
+
Maps a memory region in the device address space with extra params.
    
Unaligned size will cause a [[#Panic]].
 
Unaligned size will cause a [[#Panic]].
Line 946: Line 968:  
     __in      u32 flags;          // bit0: fixed_offset, bit2: cacheable
 
     __in      u32 flags;          // bit0: fixed_offset, bit2: cacheable
 
     __in      u32 kind;          // -1 is default
 
     __in      u32 kind;          // -1 is default
     __in      u32 nvmap_handle;
+
     __in      u32 dmabuf_fd;     // nvmap handle
 
     __inout  u32 page_size;      // 0 means don't care
 
     __inout  u32 page_size;      // 0 means don't care
 
     __in      u64 buffer_offset;
 
     __in      u64 buffer_offset;
Line 960: Line 982:  
   };
 
   };
   −
=== NVGPU_AS_IOCTL_INITIALIZE ===
+
=== NVGPU_AS_IOCTL_ALLOC_AS ===
Nintendo's custom implementation of NVGPU_GPU_IOCTL_ALLOC_AS (unavailable).
+
Nintendo's custom implementation for allocating an address space.
    
   struct {
 
   struct {
 
     __in u32 big_page_size;  // depends on GPU's available_big_page_sizes; 0=default
 
     __in u32 big_page_size;  // depends on GPU's available_big_page_sizes; 0=default
 
     __in s32 as_fd;          // ignored; passes 0
 
     __in s32 as_fd;          // ignored; passes 0
     __in u32 flags;          // ignored; passes 0
+
     __in u64 reserved;        // ignored; passes 0
    __in u32 reserved;        // ignored; passes 0
   
   };
 
   };
   Line 976: Line 997:  
     u64 offset;
 
     u64 offset;
 
     u32 page_size;
 
     u32 page_size;
     u32 pad;
+
     u32 reserved;
 
     u64 pages;
 
     u64 pages;
 
   };
 
   };
 
    
 
    
 
   struct {
 
   struct {
     u64          not_used;   // (contained output user ptr on linux, ignored)
+
     u64          buf_addr;   // (contained output user ptr on linux, ignored)
     __inout u32  bufsize;    // forced to 2*sizeof(struct va_region)
+
     __inout u32  buf_size;    // forced to 2*sizeof(struct va_region)
     u32          pad;
+
     u32          reserved;
 
     __out struct  va_region regions[2];
 
     __out struct  va_region regions[2];
 
   };
 
   };
   −
=== NVGPU_AS_IOCTL_INITIALIZE_EX ===
+
=== NVGPU_AS_IOCTL_ALLOC_AS_EX ===
Nintendo's custom implementation of NVGPU_GPU_IOCTL_ALLOC_AS (unavailable) with extra params.
+
Nintendo's custom implementation for allocating an address space with extra params.
    
   struct {
 
   struct {
Line 1,000: Line 1,021:  
   };
 
   };
   −
=== NVGPU_AS_IOCTL_MAP_BUFFER_EX ===
+
=== NVGPU_AS_IOCTL_MODIFY ===
Maps a memory region in the device address space with extra params.
+
Modifies a memory region in the device address space.
    
     struct {
 
     struct {
 
     __in      u32 flags;          // bit0: fixed_offset, bit2: cacheable
 
     __in      u32 flags;          // bit0: fixed_offset, bit2: cacheable
 
     __in      u32 kind;          // -1 is default
 
     __in      u32 kind;          // -1 is default
     __in      u32 nvmap_handle;
+
     __in      u32 dmabuf_fd;     // nvmap handle
 
     __inout  u32 page_size;      // 0 means don't care
 
     __inout  u32 page_size;      // 0 means don't care
 
     __in      u64 buffer_offset;
 
     __in      u64 buffer_offset;
Line 1,013: Line 1,034:  
     __in      u64 unk0;
 
     __in      u64 unk0;
 
     __in      u32 unk1;
 
     __in      u32 unk1;
     u32           pad;
+
     u32           reserved;
 
   };
 
   };
   Line 1,019: Line 1,040:  
Nintendo's custom implementation of address space remapping.
 
Nintendo's custom implementation of address space remapping.
   −
   struct remap_entry {
+
   struct remap_op {
     __in u16 flags;           // 0 or 4
+
     __in u16 flags;                   // 0 or 4
 
     __in u16 kind;           
 
     __in u16 kind;           
     __in u32 nvmap_handle;
+
     __in u32 mem_handle;
     __in u32 map_offset;
+
     __in u32 mem_offset_in_pages;
     __in u32 gpu_offset;       // (alloc_space_offset >> 0x10)
+
     __in u32 virt_offset_in_pages;   // (alloc_space_offset >> 0x10)
     __in u32 pages;           // alloc_space_pages
+
     __in u32 num_pages;               // alloc_space_pages
 
   };
 
   };
 
   
 
   
 
  struct {
 
  struct {
     __in struct remap_entry entries[];
+
     __in struct remap_op entries[];
 
  };
 
  };
   Line 1,871: Line 1,892:     
= nvmemp =
 
= nvmemp =
NVIDIA memory profiler (this service is not available on retail units).  
+
This is "nv::MemoryProfiler::IMemoryProfiler".
 +
 
 
/dev/nvhost-ctrl sends the ioctl NVHOST_IOCTL_CTRL_GET_CONFIG to check the config "nv!NV_MEMORY_PROFILER". If config_str returns "1", the application attempts to use nvmemp.
 
/dev/nvhost-ctrl sends the ioctl NVHOST_IOCTL_CTRL_GET_CONFIG to check the config "nv!NV_MEMORY_PROFILER". If config_str returns "1", the application attempts to use nvmemp.
   Line 1,880: Line 1,902:  
| 0 || Open
 
| 0 || Open
 
|-
 
|-
| 1 || GetAruid
+
| 1 || GetPid
 
|}
 
|}
   Line 1,919: Line 1,941:  
| 0 || Initialize
 
| 0 || Initialize
 
|-
 
|-
| 1 || GetGemEvent
+
| 1 || GetEventHandle
 
|-
 
|-
| 2 ||  
+
| 2 || ControlNotification
 
|-
 
|-
| 3 || RegisterUnregisterAppIdLocked
+
| 3 || SetNotificationPerm
 
|-
 
|-
| 4 ||
+
| 4 || SetCoreDumpPerm
 
|-
 
|-
| [1.0.0-4.1.0] 5 || GetAruid
+
| 5 || [1.0.0-4.1.0] GetAruid
 
|-
 
|-
| 6 || HandleDeferredErrors
+
| 6 || Reset
 
|-
 
|-
 
| 7 || [3.0.0+]
 
| 7 || [3.0.0+]
Line 1,945: Line 1,967:  
| 1 || GetAruid
 
| 1 || GetAruid
 
|-
 
|-
| [1.0.0-8.1.0] 2 || ReadNextCdBlock
+
| 2 || [1.0.0-8.1.0] ReadNextBlock
 
|-
 
|-
 
| 3 || [8.0.0+]
 
| 3 || [8.0.0+]
Line 1,951: Line 1,973:  
| 4 || [8.0.0+]
 
| 4 || [8.0.0+]
 
|}
 
|}
 +
 +
= nvdbg:d =
 +
This is "nns::nvdrv::INvDrvDebugSvcServices". This was added with [10.0.0+].
 +
 +
This service has no commands.
    
= Errors =
 
= Errors =
Line 1,957: Line 1,984:  
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name
+
! Value || Name
 +
|-
 +
| 0x0 || NvError_Success
 +
|-
 +
| 0x1 || NvError_NotImplemented
 +
|-
 +
| 0x2 || NvError_NotSupported
 +
|-
 +
| 0x3 || NvError_NotInitialized
 +
|-
 +
| 0x4 || NvError_BadParameter
 +
|-
 +
| 0x5 || NvError_Timeout
 +
|-
 +
| 0x6 || NvError_InsufficientMemory
 +
|-
 +
| 0x7 || NvError_ReadOnlyAttribute
 +
|-
 +
| 0x8 || NvError_InvalidState
 +
|-
 +
| 0x9 || NvError_InvalidAddress
 +
|-
 +
| 0xA || NvError_InvalidSize
 +
|-
 +
| 0xB || NvError_BadValue
 +
|-
 +
| 0xD || NvError_AlreadyAllocated
 +
|-
 +
| 0xE || NvError_Busy
 +
|-
 +
| 0xF || NvError_ResourceError
 +
|-
 +
| 0x10 || NvError_CountMismatch
 +
|-
 +
| 0x11 || NvError_OverFlow
 +
|-
 +
| 0x1000 || NvError_InsufficientTransferMemory
 +
|-
 +
| 0x10000 || NvError_InsufficientVideoMemory
 +
|-
 +
| 0x10001 || NvError_BadSurfaceColorScheme
 +
|-
 +
| 0x10002 || NvError_InvalidSurface
 +
|-
 +
| 0x10003 || NvError_SurfaceNotSupported
 +
|-
 +
| 0x20000 || NvError_DispInitFailed
 +
|-
 +
| 0x20001 || NvError_DispAlreadyAttached
 +
|-
 +
| 0x20002 || NvError_DispTooManyDisplays
 +
|-
 +
| 0x20003 || NvError_DispNoDisplaysAttached
 +
|-
 +
| 0x20004 || NvError_DispModeNotSupported
 +
|-
 +
| 0x20005 || NvError_DispNotFound
 +
|-
 +
| 0x20006 || NvError_DispAttachDissallowed
 +
|-
 +
| 0x20007 || NvError_DispTypeNotSupported
 +
|-
 +
| 0x20008 || NvError_DispAuthenticationFailed
 
|-
 
|-
| 0 || Success
+
| 0x20009 || NvError_DispNotAttached
 
|-
 
|-
| 1 || NotImplemented
+
| 0x2000A || NvError_DispSamePwrState
 
|-
 
|-
| 2 || NotSupported
+
| 0x2000B || NvError_DispEdidFailure
 
|-
 
|-
| 3 || NotInitialized
+
| 0x2000C || NvError_DispDsiReadAckError
 
|-
 
|-
| 4 || BadParameter
+
| 0x2000D || NvError_DispDsiReadInvalidResp
 
|-
 
|-
| 5 || Timeout
+
| 0x30000 || NvError_FileWriteFailed
 
|-
 
|-
| 6 || InsufficientMemory
+
| 0x30001 || NvError_FileReadFailed
 
|-
 
|-
| 7 || ReadOnlyAttribute
+
| 0x30002 || NvError_EndOfFile
 
|-
 
|-
| 8 || InvalidState
+
| 0x30003 || NvError_FileOperationFailed
 
|-
 
|-
| 9 || InvalidAddress
+
| 0x30004 || NvError_DirOperationFailed
 
|-
 
|-
| 0xA || InvalidSize
+
| 0x30005 || NvError_EndOfDirList
 
|-
 
|-
| 0xB || BadValue
+
| 0x30006 || NvError_ConfigVarNotFound
 
|-
 
|-
| 0xD || AlreadyAllocated
+
| 0x30007 || NvError_InvalidConfigVar
 
|-
 
|-
| 0xE || Busy
+
| 0x30008 || NvError_LibraryNotFound
 
|-
 
|-
| 0xF || ResourceError
+
| 0x30009 || NvError_SymbolNotFound
 
|-
 
|-
| 0x10 || CountMismatch
+
| 0x3000A || NvError_MemoryMapFailed
 
|-
 
|-
| 0x1000 || SharedMemoryTooSmall
+
| 0x3000F || NvError_IoctlFailed                       
 
|-
 
|-
| 0x30003 || FileOperationFailed
+
| 0x30010 || NvError_AccessDenied
 
|-
 
|-
| 0x30004 || DirOperationFailed
+
| 0x30011 || NvError_DeviceNotFound
 
|-
 
|-
| 0x3000F || IoctlFailed                       
+
| 0x30012 || NvError_KernelDriverNotFound
 
|-
 
|-
| 0x30010 || AccessDenied
+
| 0x30013 || NvError_FileNotFound
 
|-
 
|-
| 0x30013 || FileNotFound
+
| 0x30014 || NvError_PathAlreadyExists
 
|-
 
|-
| 0xA000E || ModuleNotPresent
+
| 0xA000E || NvError_ModuleNotPresent
 
|}
 
|}
  

Navigation menu