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>master
parent
bf2951e967
commit
e83f63da2a
|
|
@ -519,6 +519,7 @@ int kfd_dbg_trap_set_flags(struct kfd_process *target, uint32_t *flags)
|
|||
struct kfd_topology_device *topo_dev =
|
||||
kfd_topology_device_by_id(target->pdds[i]->dev->id);
|
||||
uint32_t caps = topo_dev->node_props.capability;
|
||||
uint32_t caps2 = topo_dev->node_props.capability2;
|
||||
|
||||
if (!(caps & HSA_CAP_TRAP_DEBUG_PRECISE_MEMORY_OPERATIONS_SUPPORTED) &&
|
||||
(*flags & KFD_DBG_TRAP_FLAG_SINGLE_MEM_OP)) {
|
||||
|
|
@ -531,6 +532,12 @@ int kfd_dbg_trap_set_flags(struct kfd_process *target, uint32_t *flags)
|
|||
*flags = prev_flags;
|
||||
return -EACCES;
|
||||
}
|
||||
|
||||
if (!(caps2 & HSA_CAP2_TRAP_DEBUG_LDS_OUT_OF_ADDR_RANGE_SUPPORTED) &&
|
||||
(*flags & KFD_DBG_TRAP_FLAG_LDS_OUT_OF_ADDR_RANGE)) {
|
||||
*flags = prev_flags;
|
||||
return -EACCES;
|
||||
}
|
||||
}
|
||||
|
||||
target->dbg_flags = *flags;
|
||||
|
|
|
|||
|
|
@ -2028,6 +2028,10 @@ static void kfd_topology_set_capabilities(struct kfd_topology_device *dev)
|
|||
if (KFD_GC_VERSION(dev->gpu) >= IP_VERSION(12, 0, 0))
|
||||
dev->node_props.capability |=
|
||||
HSA_CAP_TRAP_DEBUG_PRECISE_ALU_OPERATIONS_SUPPORTED;
|
||||
|
||||
if (KFD_GC_VERSION(dev->gpu) >= IP_VERSION(12, 1, 0))
|
||||
dev->node_props.capability2 |=
|
||||
HSA_CAP2_TRAP_DEBUG_LDS_OUT_OF_ADDR_RANGE_SUPPORTED;
|
||||
}
|
||||
|
||||
kfd_topology_set_dbg_firmware_support(dev);
|
||||
|
|
|
|||
|
|
@ -46,9 +46,10 @@
|
|||
* - 1.18 - Rename pad in set_memory_policy_args to misc_process_flag
|
||||
* - 1.19 - Add a new ioctl to craete secondary kfd processes
|
||||
* - 1.20 - Trap handler support for expert scheduling mode available
|
||||
* - 1.21 - Debugger support to subscribe to LDS out-of-address exceptions
|
||||
*/
|
||||
#define KFD_IOCTL_MAJOR_VERSION 1
|
||||
#define KFD_IOCTL_MINOR_VERSION 20
|
||||
#define KFD_IOCTL_MINOR_VERSION 21
|
||||
|
||||
struct kfd_ioctl_get_version_args {
|
||||
__u32 major_version; /* from KFD */
|
||||
|
|
@ -947,6 +948,7 @@ enum kfd_dbg_trap_address_watch_mode {
|
|||
enum kfd_dbg_trap_flags {
|
||||
KFD_DBG_TRAP_FLAG_SINGLE_MEM_OP = 1,
|
||||
KFD_DBG_TRAP_FLAG_SINGLE_ALU_OP = 2,
|
||||
KFD_DBG_TRAP_FLAG_LDS_OUT_OF_ADDR_RANGE = 4
|
||||
};
|
||||
|
||||
/* Trap exceptions */
|
||||
|
|
|
|||
|
|
@ -64,7 +64,8 @@
|
|||
#define HSA_CAP_RESERVED 0x000f8000
|
||||
|
||||
#define HSA_CAP2_PER_SDMA_QUEUE_RESET_SUPPORTED 0x00000001
|
||||
#define HSA_CAP2_RESERVED 0xfffffffe
|
||||
#define HSA_CAP2_TRAP_DEBUG_LDS_OUT_OF_ADDR_RANGE_SUPPORTED 0x00000002
|
||||
#define HSA_CAP2_RESERVED 0xfffffffc
|
||||
|
||||
/* debug_prop bits in node properties */
|
||||
#define HSA_DBG_WATCH_ADDR_MASK_LO_BIT_MASK 0x0000000f
|
||||
|
|
|
|||
Loading…
Reference in New Issue