From f398d6d20408c3d23974b66b89db719a03ba152c Mon Sep 17 00:00:00 2001 From: Jonathan Kim Date: Thu, 16 Jul 2020 15:28:38 -0400 Subject: [PATCH] libhsakmt: add host trap send Adding host trap send command. Signed-off-by: Jonathan Kim Change-Id: I291c13f5905e00bc6685a980284a6abd0c98da78 --- include/hsakmt.h | 10 ++++++++++ include/linux/kfd_ioctl.h | 9 +++++++++ src/debug.c | 21 +++++++++++++++++++++ src/libhsakmt.ver | 1 + 4 files changed, 41 insertions(+) diff --git a/include/hsakmt.h b/include/hsakmt.h index 237f80bbc7..dd59962bca 100644 --- a/include/hsakmt.h +++ b/include/hsakmt.h @@ -844,6 +844,16 @@ hsaKmtGetQueueSnapshot( HSAuint32 *QssEntries // IN/OUT ); +/** + Send the host trap +*/ +HSAKMT_STATUS +HSAKMTAPI +hsaKmtSendHostTrap( + HSAuint32 NodeId, //IN + HSAuint32 Pid //IN + ); + /** Set the trap override mask. When debug trap is enabled by hsaKmtEnableDebugTrap() each wave launched has its initial diff --git a/include/linux/kfd_ioctl.h b/include/linux/kfd_ioctl.h index aa00e919dd..e2c4467cbd 100644 --- a/include/linux/kfd_ioctl.h +++ b/include/linux/kfd_ioctl.h @@ -224,6 +224,7 @@ struct kfd_ioctl_dbg_wave_control_args { #define KFD_DBG_EV_STATUS_VMFAULT 2 #define KFD_DBG_EV_STATUS_SUSPENDED 4 #define KFD_DBG_EV_STATUS_NEW_QUEUE 8 +#define KFD_DBG_EV_STATUS_HOST_TRAP_TIMEDOUT 16 #define KFD_DBG_EV_FLAG_CLEAR_STATUS 1 #define KFD_INVALID_QUEUEID 0xffffffff @@ -309,6 +310,14 @@ struct kfd_ioctl_dbg_wave_control_args { */ #define KFD_IOC_DBG_TRAP_SET_ADDRESS_WATCH 9 +/* KFD_IOC_DBG_SEND_HOST_TRAP: + * ptr: unused + * data1: unused + * data2: unused + * data3: unused + */ +#define KFD_IOC_DBG_TRAP_SEND_HOST_TRAP 10 + struct kfd_ioctl_dbg_trap_args { __u64 ptr; /* to KFD -- used for pointer arguments: queue arrays */ __u32 pid; /* to KFD */ diff --git a/src/debug.c b/src/debug.c index caddc79a8e..5ed6631932 100644 --- a/src/debug.c +++ b/src/debug.c @@ -731,3 +731,24 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtClearAddressWatch( NULL); return result; } + +HSAKMT_STATUS +HSAKMTAPI +hsaKmtSendHostTrap( + HSAuint32 NodeId, //IN + HSAuint32 Pid //IN + ) +{ + int result; + + result = debug_trap(NodeId, + KFD_IOC_DBG_TRAP_SEND_HOST_TRAP, + 0, + 0, + 0, + Pid, + 0, + NULL); + + return result; +} diff --git a/src/libhsakmt.ver b/src/libhsakmt.ver index d47f68d2d0..a3203e58c3 100644 --- a/src/libhsakmt.ver +++ b/src/libhsakmt.ver @@ -61,6 +61,7 @@ hsaKmtEnableDebugTrap; hsaKmtEnableDebugTrapWithPollFd; hsaKmtDisableDebugTrap; hsaKmtQueryDebugEvent; +hsaKmtSendHostTrap; hsaKmtGetQueueSnapshot; hsaKmtSetWaveLaunchTrapOverride; hsaKmtSetWaveLaunchMode;