libhsakmt: include changes for upstream debugger API

Signed-off-by: Alex Sierra <alex.sierra@amd.com>
Change-Id: Id296e13dff431c7a151c5aae0b93412b1e116467


[ROCm/ROCR-Runtime commit: 728162c2c8]
This commit is contained in:
Alex Sierra
2023-01-23 13:38:07 -06:00
committed by Jonathan Kim
parent c11b1022f1
commit 6998fcee45
5 changed files with 559 additions and 249 deletions
+16 -44
View File
@@ -265,38 +265,13 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtDbgAddressWatch(HSAuint32 NodeId,
return HSAKMT_STATUS_SUCCESS;
}
/* Get the major and minor version of the kernel debugger support. */
HSAKMT_STATUS
HSAKMTAPI
hsaKmtGetKernelDebugTrapVersionInfo(
HSAuint32 *Major, //Out
HSAuint32 *Minor //Out
)
{
struct kfd_ioctl_dbg_trap_args args = {0};
memset(&args, 0x00, sizeof(args));
args.op = KFD_IOC_DBG_TRAP_GET_VERSION;
args.pid = getpid();
long err = kmtIoctl(kfd_fd, AMDKFD_IOC_DBG_TRAP, &args);
if (err)
return HSAKMT_STATUS_ERROR;
*Major = args.data1;
*Minor = args.data2;
return HSAKMT_STATUS_SUCCESS;
}
#define HSA_RUNTIME_ENABLE_MIN_MAJOR 10
#define HSA_RUNTIME_ENABLE_MAX_MAJOR 13
#define HSA_RUNTIME_ENABLE_MIN_MINOR 0
#define HSA_RUNTIME_ENABLE_MAX_MAJOR 1
#define HSA_RUNTIME_ENABLE_MIN_MINOR 13
static HSAKMT_STATUS checkRuntimeDebugSupport(void) {
HSAuint32 kMajor, kMinor;
HsaNodeProperties node = {0};
HsaSystemProperties props = {0};
HsaVersionInfo versionInfo = {0};
memset(&node, 0x00, sizeof(node));
memset(&props, 0x00, sizeof(props));
@@ -315,12 +290,13 @@ static HSAKMT_STATUS checkRuntimeDebugSupport(void) {
return HSAKMT_STATUS_NOT_SUPPORTED;
}
if (hsaKmtGetKernelDebugTrapVersionInfo(&kMajor, &kMinor))
if (hsaKmtGetVersion(&versionInfo))
return HSAKMT_STATUS_NOT_SUPPORTED;
if (kMajor < HSA_RUNTIME_ENABLE_MIN_MAJOR || kMajor > HSA_RUNTIME_ENABLE_MAX_MAJOR ||
(kMajor == HSA_RUNTIME_ENABLE_MIN_MAJOR &&
(int)kMinor < HSA_RUNTIME_ENABLE_MIN_MINOR))
if (versionInfo.KernelInterfaceMajorVersion < HSA_RUNTIME_ENABLE_MAX_MAJOR ||
(versionInfo.KernelInterfaceMajorVersion ==
HSA_RUNTIME_ENABLE_MAX_MAJOR &&
(int)versionInfo.KernelInterfaceMinorVersion < HSA_RUNTIME_ENABLE_MIN_MINOR))
return HSAKMT_STATUS_NOT_SUPPORTED;
return HSAKMT_STATUS_SUCCESS;
@@ -329,20 +305,18 @@ static HSAKMT_STATUS checkRuntimeDebugSupport(void) {
HSAKMT_STATUS HSAKMTAPI hsaKmtRuntimeEnable(void *rDebug,
bool setupTtmp)
{
struct kfd_ioctl_dbg_trap_args args = {0};
struct kfd_ioctl_runtime_enable_args args = {0};
HSAKMT_STATUS result = checkRuntimeDebugSupport();
if (result)
return result;
memset(&args, 0x00, sizeof(args));
args.op = KFD_IOC_DBG_TRAP_RUNTIME_ENABLE;
args.pid = getpid();
args.data1 = 1; //enable
args.data2 = setupTtmp;
args.ptr = (HSAuint64)rDebug;
args.mode_mask = KFD_RUNTIME_ENABLE_MODE_ENABLE_MASK |
((setupTtmp) ? KFD_RUNTIME_ENABLE_MODE_TTMP_SAVE_MASK : 0);
args.r_debug = (HSAuint64)rDebug;
long err = kmtIoctl(kfd_fd, AMDKFD_IOC_DBG_TRAP, &args);
long err = kmtIoctl(kfd_fd, AMDKFD_IOC_RUNTIME_ENABLE, &args);
if (err) {
if (errno == EBUSY)
@@ -356,18 +330,16 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtRuntimeEnable(void *rDebug,
HSAKMT_STATUS HSAKMTAPI hsaKmtRuntimeDisable(void)
{
struct kfd_ioctl_dbg_trap_args args = {0};
struct kfd_ioctl_runtime_enable_args args = {0};
HSAKMT_STATUS result = checkRuntimeDebugSupport();
if (result)
return result;
memset(&args, 0x00, sizeof(args));
args.op = KFD_IOC_DBG_TRAP_RUNTIME_ENABLE;
args.pid = getpid();
args.data1 = 0; //disable
args.mode_mask = 0; //Disable
if (kmtIoctl(kfd_fd, AMDKFD_IOC_DBG_TRAP, &args))
if (kmtIoctl(kfd_fd, AMDKFD_IOC_RUNTIME_ENABLE, &args))
return HSAKMT_STATUS_ERROR;
return HSAKMT_STATUS_SUCCESS;
-1
View File
@@ -59,7 +59,6 @@ hsaKmtQueryPointerInfo;
hsaKmtSetMemoryUserData;
hsaKmtGetQueueInfo;
hsaKmtAllocQueueGWS;
hsaKmtGetKernelDebugTrapVersionInfo;
hsaKmtRuntimeEnable;
hsaKmtRuntimeDisable;
hsaKmtSPMAcquire;