forked from Minki/linux
aef11009c4
This patch adds four new IOCTLs to amdkfd. These IOCTLs expose a H/W debugger functionality to the userspace. The IOCTLs are: - AMDKFD_IOC_DBG_REGISTER: The purpose of this IOCTL is to notify amdkfd that a process wants to use GPU debugging facilities on itself only. It is expected that this IOCTL would be called before any other H/W debugger requests are sent to amdkfd and for each GPU where the H/W debugging needs to be enabled. The use of this IOCTL ensures that only one instance of a debugger is active in the system. - AMDKFD_IOC_DBG_UNREGISTER: This IOCTL detaches the debugger/debugged process from the H/W Debug which was established by the AMDKFD_IOC_DBG_REGISTER IOCTL. - AMDKFD_IOC_DBG_ADDRESS_WATCH: This IOCTL allows to set different watchpoints with various conditions as indicated by the IOCTL's arguments. The available number of watchpoints is retrieved from topology. This operation is confined to the current debugged process, which was registered through AMDKFD_IOC_DBG_REGISTER. - AMDKFD_IOC_DBG_WAVE_CONTROL: This IOCTL allows to control a wavefront as indicated by the IOCTL's arguments. For example, you can halt/resume or kill either a single wavefront or a set of wavefronts. This operation is confined to the current debugged process, which was registered through AMDKFD_IOC_DBG_REGISTER. Because the arguments for the address watch IOCTL and wave control IOCTL are dynamic, meaning that they could vary in size, the userspace passes a pointer to a structure (in userspace) that contains the value of the arguments. The kernel driver is responsible to parse this structure and validate its contents. v2: change void* to uint64_t inside ioctl arguments Signed-off-by: Yair Shachar <yair.shachar@amd.com> Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com> |
||
---|---|---|
.. | ||
cik_event_interrupt.c | ||
cik_int.h | ||
cik_regs.h | ||
Kconfig | ||
kfd_chardev.c | ||
kfd_crat.h | ||
kfd_device_queue_manager_cik.c | ||
kfd_device_queue_manager_vi.c | ||
kfd_device_queue_manager.c | ||
kfd_device_queue_manager.h | ||
kfd_device.c | ||
kfd_doorbell.c | ||
kfd_events.c | ||
kfd_events.h | ||
kfd_flat_memory.c | ||
kfd_interrupt.c | ||
kfd_kernel_queue_cik.c | ||
kfd_kernel_queue_vi.c | ||
kfd_kernel_queue.c | ||
kfd_kernel_queue.h | ||
kfd_module.c | ||
kfd_mqd_manager_cik.c | ||
kfd_mqd_manager_vi.c | ||
kfd_mqd_manager.c | ||
kfd_mqd_manager.h | ||
kfd_packet_manager.c | ||
kfd_pasid.c | ||
kfd_pm4_headers.h | ||
kfd_pm4_opcodes.h | ||
kfd_priv.h | ||
kfd_process_queue_manager.c | ||
kfd_process.c | ||
kfd_queue.c | ||
kfd_topology.c | ||
kfd_topology.h | ||
Makefile |