libhsakmt: add debug trap thunk call for testing

Add generic thunk call for debug testing that assumes
caller populations trap arguments correctly.

Signed-off-by: Jonathan Kim <jonathan.kim@amd.com>
Change-Id: I33a0bc66ca77e29f5b663d4bfe73f8684df8bfb6
Этот коммит содержится в:
Jonathan Kim
2022-03-21 12:46:01 -04:00
родитель 98c6784cc1
Коммит aaab019960
3 изменённых файлов: 44 добавлений и 1 удалений
+8 -1
Просмотреть файл
@@ -774,6 +774,14 @@ hsaKmtDbgGetQueueData(
bool suspend_queues //In
);
/**
Debug ops call primarily used for KFD testing
*/
HSAKMT_STATUS HSAKMTAPI hsaKmtDebugTrapIoctl(
struct kfd_ioctl_dbg_trap_args *arg,
HSA_QUEUEID *Queues
);
/**
Gets GPU and CPU clock counters for particular Node
*/
@@ -1031,4 +1039,3 @@ hsaKmtReturnAsanHeaderPage(
#endif
#endif //_HSAKMT_H_
+35
Просмотреть файл
@@ -512,3 +512,38 @@ free_data:
return HSAKMT_STATUS_ERROR;
}
HSAKMT_STATUS HSAKMTAPI hsaKmtDebugTrapIoctl(struct kfd_ioctl_dbg_trap_args *args,
HSA_QUEUEID *Queues)
{
HSAKMT_STATUS result;
CHECK_KFD_OPEN();
if (Queues) {
int num_queues = args->op == KFD_IOC_DBG_TRAP_SUSPEND_QUEUES ?
args->suspend_queues.num_queues :
args->resume_queues.num_queues;
void *queue_ptr = args->op == KFD_IOC_DBG_TRAP_SUSPEND_QUEUES ?
(void *)args->suspend_queues.queue_array_ptr :
(void *)args->resume_queues.queue_array_ptr;
memcpy(queue_ptr, convert_queue_ids(num_queues, Queues),
num_queues * sizeof(uint32_t));
}
long err = kmtIoctl(kfd_fd, AMDKFD_IOC_DBG_TRAP, args);
if (args->op == KFD_IOC_DBG_TRAP_SUSPEND_QUEUES &&
err >= 0 && err <= args->suspend_queues.num_queues)
result = HSAKMT_STATUS_SUCCESS;
else if (args->op == KFD_IOC_DBG_TRAP_RESUME_QUEUES &&
err >= 0 && err <= args->resume_queues.num_queues)
result = HSAKMT_STATUS_SUCCESS;
else if (err == 0)
result = HSAKMT_STATUS_SUCCESS;
else
result = HSAKMT_STATUS_ERROR;
return result;
}
+1
Просмотреть файл
@@ -66,6 +66,7 @@ hsaKmtAllocQueueGWS;
hsaKmtRuntimeEnable;
hsaKmtRuntimeDisable;
hsaKmtGetRuntimeCapabilities;
hsaKmtDebugTrapIoctl;
hsaKmtSPMAcquire;
hsaKmtSPMRelease;
hsaKmtSPMSetDestBuffer;