NV services: Difference between revisions
No edit summary |
|||
Line 492: | Line 492: | ||
== /dev/nvsched-ctrl == | == /dev/nvsched-ctrl == | ||
This is a customized scheduler device. | |||
The way this device is exposed and configured is exclusive to the Switch, since other sources don't have an actual interface for the scheduler. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Value || Direction || Size || Description || Notes | ! Value || Direction || Size || Description || Notes | ||
|- | |- | ||
| 0x00000601 || - || 0 || NVSCHED_CTRL_ENABLE || | | 0x00000601 || - || 0 || [[#NVSCHED_CTRL_ENABLE]] || | ||
|- | |- | ||
| 0x00000602 || - || 0 || NVSCHED_CTRL_DISABLE || | | 0x00000602 || - || 0 || [[#NVSCHED_CTRL_DISABLE]] || | ||
|- | |- | ||
| 0x40180603 || In || 24 || NVSCHED_CTRL_ADD_APPLICATION || | | 0x40180603 || In || 24 || [[#NVSCHED_CTRL_ADD_APPLICATION]] || | ||
|- | |- | ||
| 0x40180604 || In || 24 || NVSCHED_CTRL_UPDATE_APPLICATION || | | 0x40180604 || In || 24 || [[#NVSCHED_CTRL_UPDATE_APPLICATION]] || | ||
|- | |- | ||
| 0x40080605 || In || 8 || NVSCHED_CTRL_REMOVE_APPLICATION || | | 0x40080605 || In || 8 || [[#NVSCHED_CTRL_REMOVE_APPLICATION]] || | ||
|- | |- | ||
| 0x80080606 || Out || 8 || NVSCHED_CTRL_GET_ID || | | 0x80080606 || Out || 8 || [[#NVSCHED_CTRL_GET_ID]] || | ||
|- | |- | ||
| 0x80080607 || Out || 8 || NVSCHED_CTRL_ADD_RUNLIST || | | 0x80080607 || Out || 8 || [[#NVSCHED_CTRL_ADD_RUNLIST]] || | ||
|- | |- | ||
| 0x40180608 || In || 24 || NVSCHED_CTRL_UPDATE_RUNLIST || | | 0x40180608 || In || 24 || [[#NVSCHED_CTRL_UPDATE_RUNLIST]] || | ||
|- | |- | ||
| 0x40100609 || In || 16 || NVSCHED_CTRL_LINK_RUNLIST || | | 0x40100609 || In || 16 || [[#NVSCHED_CTRL_LINK_RUNLIST]] || | ||
|- | |- | ||
| 0x4010060A || In || 16 || NVSCHED_CTRL_UNLINK_RUNLIST || | | 0x4010060A || In || 16 || [[#NVSCHED_CTRL_UNLINK_RUNLIST]] || | ||
|- | |- | ||
| 0x4008060B || In || 8 || NVSCHED_CTRL_REMOVE_RUNLIST || | | 0x4008060B || In || 8 || [[#NVSCHED_CTRL_REMOVE_RUNLIST]] || | ||
|- | |- | ||
| 0x8001060C || Out || 1 || NVSCHED_CTRL_HAS_OVERRUN_EVENT || | | 0x8001060C || Out || 1 || [[#NVSCHED_CTRL_HAS_OVERRUN_EVENT]] || | ||
|- | |- | ||
| 0x8010060D || Out || 16 || NVSCHED_CTRL_GET_NEXT_OVERRUN_EVENT || | | 0x8010060D || Out || 16 || [[#NVSCHED_CTRL_GET_NEXT_OVERRUN_EVENT]] || | ||
|- | |- | ||
| 0x400C060E || In || 12 || NVSCHED_CTRL_PUT_CONDUCTOR_FLIP_FENCE || | | 0x400C060E || In || 12 || [[#NVSCHED_CTRL_PUT_CONDUCTOR_FLIP_FENCE]] || | ||
|- | |- | ||
| 0x4008060F || In || 8 || NVSCHED_CTRL_DETACH_APPLICATION || | | 0x4008060F || In || 8 || [[#NVSCHED_CTRL_DETACH_APPLICATION]] || | ||
|- | |- | ||
| 0x40100610 || In || 16 || || | | 0x40100610 || In || 16 || || | ||
Line 530: | Line 534: | ||
|- | |- | ||
|} | |} | ||
=== NVSCHED_CTRL_ENABLE === | |||
Enables the scheduler. | |||
=== NVSCHED_CTRL_DISABLE === | |||
Disables the scheduler. | |||
=== NVSCHED_CTRL_ADD_APPLICATION === | |||
Adds a new application to the scheduler. | |||
struct { | |||
__in u64 application_id; | |||
__in u64 priority; | |||
__in u64 timeslice; | |||
}; | |||
=== NVSCHED_CTRL_UPDATE_APPLICATION === | |||
Updates the application parameters in the scheduler. | |||
struct { | |||
__in u64 application_id; | |||
__in u64 priority; | |||
__in u64 timeslice; | |||
}; | |||
=== NVSCHED_CTRL_REMOVE_APPLICATION === | |||
Removes the application from the scheduler. | |||
struct { | |||
__in u64 application_id; | |||
}; | |||
=== NVSCHED_CTRL_GET_ID === | |||
Returns the ID of the last scheduled object. | |||
struct { | |||
__out u64 id; | |||
}; | |||
=== NVSCHED_CTRL_ADD_RUNLIST === | |||
Creates a new runlist and returns it's ID. | |||
struct { | |||
__out u64 runlist_id; | |||
}; | |||
=== NVSCHED_CTRL_UPDATE_RUNLIST === | |||
Updates the runlist parameters in the scheduler. | |||
struct { | |||
__in u64 runlist_id; | |||
__in u64 priority; | |||
__in u64 timeslice; | |||
}; | |||
=== NVSCHED_CTRL_LINK_RUNLIST === | |||
Links a runlist to a given application in the scheduler. | |||
struct { | |||
__in u64 runlist_id; | |||
__in u64 application_id; | |||
}; | |||
=== NVSCHED_CTRL_UNLINK_RUNLIST === | |||
Unlinks a runlist from a given application in the scheduler. | |||
struct { | |||
__in u64 runlist_id; | |||
__in u64 application_id; | |||
}; | |||
=== NVSCHED_CTRL_REMOVE_RUNLIST === | |||
Removes the runlist from the scheduler. | |||
struct { | |||
__in u64 runlist_id; | |||
}; | |||
=== NVSCHED_CTRL_HAS_OVERRUN_EVENT === | |||
Returns a boolean to tell if the scheduler has an overrun event or not. | |||
struct { | |||
__out u8 has_overrun; | |||
}; | |||
=== NVSCHED_CTRL_GET_NEXT_OVERRUN_EVENT === | |||
Returns the overrun event's data from the scheduler. | |||
struct { | |||
__out u64 runlist_id; | |||
__out u64 debt; | |||
}; | |||
=== NVSCHED_CTRL_PUT_CONDUCTOR_FLIP_FENCE === | |||
Installs a fence swap event? | |||
struct { | |||
__in u32 fence_id; | |||
__in u32 fence_value; | |||
__in u32 swap_interval; | |||
}; | |||
=== NVSCHED_CTRL_DETACH_APPLICATION === | |||
Places the given application in detached state. | |||
struct { | |||
__in u64 application_id; | |||
}; | |||
== /dev/nverpt-ctrl == | == /dev/nverpt-ctrl == | ||
Line 594: | Line 706: | ||
=== NVGPU_AS_IOCTL_FREE_SPACE === | === NVGPU_AS_IOCTL_FREE_SPACE === | ||
This one frees pages from the device address space. | |||
struct { | struct { | ||
__in u64 offset; | __in u64 offset; | ||
Line 733: | Line 847: | ||
Returns [[#Errors|NotSupported]] on Open unless nn::settings::detail::GetDebugModeFlag is set. | Returns [[#Errors|NotSupported]] on Open unless nn::settings::detail::GetDebugModeFlag is set. | ||
This device is identical to [[#/dev/nvhost-dbg-gpu|/dev/nvhost-dbg-gpu]]. | |||
== /dev/nvhost-ctrl-gpu == | == /dev/nvhost-ctrl-gpu == |