Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/amdkfd: allow debug subscription to lds violations on gfx 1250

GFX 1250 allows the debugger to subcribe to LDS out-of-range read/write
memory violations.
Bump IOCTL minor version and flag KFD capabilities for enablement
hint.

Signed-off-by: Jonathan Kim <jonathan.kim@amd.com>
Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Jonathan Kim and committed by
Alex Deucher
e83f63da bf2951e9

+16 -2
+7
drivers/gpu/drm/amd/amdkfd/kfd_debug.c
··· 519 519 struct kfd_topology_device *topo_dev = 520 520 kfd_topology_device_by_id(target->pdds[i]->dev->id); 521 521 uint32_t caps = topo_dev->node_props.capability; 522 + uint32_t caps2 = topo_dev->node_props.capability2; 522 523 523 524 if (!(caps & HSA_CAP_TRAP_DEBUG_PRECISE_MEMORY_OPERATIONS_SUPPORTED) && 524 525 (*flags & KFD_DBG_TRAP_FLAG_SINGLE_MEM_OP)) { ··· 529 528 530 529 if (!(caps & HSA_CAP_TRAP_DEBUG_PRECISE_ALU_OPERATIONS_SUPPORTED) && 531 530 (*flags & KFD_DBG_TRAP_FLAG_SINGLE_ALU_OP)) { 531 + *flags = prev_flags; 532 + return -EACCES; 533 + } 534 + 535 + if (!(caps2 & HSA_CAP2_TRAP_DEBUG_LDS_OUT_OF_ADDR_RANGE_SUPPORTED) && 536 + (*flags & KFD_DBG_TRAP_FLAG_LDS_OUT_OF_ADDR_RANGE)) { 532 537 *flags = prev_flags; 533 538 return -EACCES; 534 539 }
+4
drivers/gpu/drm/amd/amdkfd/kfd_topology.c
··· 2028 2028 if (KFD_GC_VERSION(dev->gpu) >= IP_VERSION(12, 0, 0)) 2029 2029 dev->node_props.capability |= 2030 2030 HSA_CAP_TRAP_DEBUG_PRECISE_ALU_OPERATIONS_SUPPORTED; 2031 + 2032 + if (KFD_GC_VERSION(dev->gpu) >= IP_VERSION(12, 1, 0)) 2033 + dev->node_props.capability2 |= 2034 + HSA_CAP2_TRAP_DEBUG_LDS_OUT_OF_ADDR_RANGE_SUPPORTED; 2031 2035 } 2032 2036 2033 2037 kfd_topology_set_dbg_firmware_support(dev);
+3 -1
include/uapi/linux/kfd_ioctl.h
··· 46 46 * - 1.18 - Rename pad in set_memory_policy_args to misc_process_flag 47 47 * - 1.19 - Add a new ioctl to craete secondary kfd processes 48 48 * - 1.20 - Trap handler support for expert scheduling mode available 49 + * - 1.21 - Debugger support to subscribe to LDS out-of-address exceptions 49 50 */ 50 51 #define KFD_IOCTL_MAJOR_VERSION 1 51 - #define KFD_IOCTL_MINOR_VERSION 20 52 + #define KFD_IOCTL_MINOR_VERSION 21 52 53 53 54 struct kfd_ioctl_get_version_args { 54 55 __u32 major_version; /* from KFD */ ··· 948 947 enum kfd_dbg_trap_flags { 949 948 KFD_DBG_TRAP_FLAG_SINGLE_MEM_OP = 1, 950 949 KFD_DBG_TRAP_FLAG_SINGLE_ALU_OP = 2, 950 + KFD_DBG_TRAP_FLAG_LDS_OUT_OF_ADDR_RANGE = 4 951 951 }; 952 952 953 953 /* Trap exceptions */
+2 -1
include/uapi/linux/kfd_sysfs.h
··· 64 64 #define HSA_CAP_RESERVED 0x000f8000 65 65 66 66 #define HSA_CAP2_PER_SDMA_QUEUE_RESET_SUPPORTED 0x00000001 67 - #define HSA_CAP2_RESERVED 0xfffffffe 67 + #define HSA_CAP2_TRAP_DEBUG_LDS_OUT_OF_ADDR_RANGE_SUPPORTED 0x00000002 68 + #define HSA_CAP2_RESERVED 0xfffffffc 68 69 69 70 /* debug_prop bits in node properties */ 70 71 #define HSA_DBG_WATCH_ADDR_MASK_LO_BIT_MASK 0x0000000f