diff --git a/projects/rocprofiler-sdk/source/lib/rocprofiler-sdk/details/kfd_ioctl.h b/projects/rocprofiler-sdk/source/lib/rocprofiler-sdk/details/kfd_ioctl.h index 447a7c6f7a..6f8684c464 100644 --- a/projects/rocprofiler-sdk/source/lib/rocprofiler-sdk/details/kfd_ioctl.h +++ b/projects/rocprofiler-sdk/source/lib/rocprofiler-sdk/details/kfd_ioctl.h @@ -41,10 +41,11 @@ * - 1.13 - Add debugger API * - 1.14 - Update kfd_event_data * - 1.15 - Enable managing mappings in compute VMs with GEM_VA ioctl - * - 1.16 - Add PC Sampling ioctl + * - 1.16 - Add contiguous VRAM allocation flag + * - 1.17 - Add PC Sampling ioctl */ #define KFD_IOCTL_MAJOR_VERSION 1 -#define KFD_IOCTL_MINOR_VERSION 16 +#define KFD_IOCTL_MINOR_VERSION 17 struct kfd_ioctl_get_version_args { @@ -451,6 +452,7 @@ struct kfd_ioctl_acquire_vm_args #define KFD_IOC_ALLOC_MEM_FLAGS_COHERENT (1 << 26) #define KFD_IOC_ALLOC_MEM_FLAGS_UNCACHED (1 << 25) #define KFD_IOC_ALLOC_MEM_FLAGS_EXT_COHERENT (1 << 24) +#define KFD_IOC_ALLOC_MEM_FLAGS_CONTIGUOUS (1 << 23) /* Allocate memory for later SVM (shared virtual memory) mapping. * @@ -1037,6 +1039,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, }; /* Trap exceptions */ @@ -1094,11 +1097,25 @@ enum kfd_dbg_trap_exception_code KFD_EC_MASK(EC_DEVICE_NEW)) #define KFD_EC_MASK_PROCESS \ (KFD_EC_MASK(EC_PROCESS_RUNTIME) | KFD_EC_MASK(EC_PROCESS_DEVICE_REMOVE)) +#define KFD_EC_MASK_PACKET \ + (KFD_EC_MASK(EC_QUEUE_PACKET_DISPATCH_DIM_INVALID) | \ + KFD_EC_MASK(EC_QUEUE_PACKET_DISPATCH_GROUP_SEGMENT_SIZE_INVALID) | \ + KFD_EC_MASK(EC_QUEUE_PACKET_DISPATCH_CODE_INVALID) | KFD_EC_MASK(EC_QUEUE_PACKET_RESERVED) | \ + KFD_EC_MASK(EC_QUEUE_PACKET_UNSUPPORTED) | \ + KFD_EC_MASK(EC_QUEUE_PACKET_DISPATCH_WORK_GROUP_SIZE_INVALID) | \ + KFD_EC_MASK(EC_QUEUE_PACKET_DISPATCH_REGISTER_INVALID) | \ + KFD_EC_MASK(EC_QUEUE_PACKET_VENDOR_UNSUPPORTED)) /* Checks for exception code types for KFD search */ -#define KFD_DBG_EC_TYPE_IS_QUEUE(ecode) (!!(KFD_EC_MASK(ecode) & KFD_EC_MASK_QUEUE)) -#define KFD_DBG_EC_TYPE_IS_DEVICE(ecode) (!!(KFD_EC_MASK(ecode) & KFD_EC_MASK_DEVICE)) -#define KFD_DBG_EC_TYPE_IS_PROCESS(ecode) (!!(KFD_EC_MASK(ecode) & KFD_EC_MASK_PROCESS)) +#define KFD_DBG_EC_IS_VALID(ecode) (ecode > EC_NONE && ecode < EC_MAX) +#define KFD_DBG_EC_TYPE_IS_QUEUE(ecode) \ + (KFD_DBG_EC_IS_VALID(ecode) && !!(KFD_EC_MASK(ecode) & KFD_EC_MASK_QUEUE)) +#define KFD_DBG_EC_TYPE_IS_DEVICE(ecode) \ + (KFD_DBG_EC_IS_VALID(ecode) && !!(KFD_EC_MASK(ecode) & KFD_EC_MASK_DEVICE)) +#define KFD_DBG_EC_TYPE_IS_PROCESS(ecode) \ + (KFD_DBG_EC_IS_VALID(ecode) && !!(KFD_EC_MASK(ecode) & KFD_EC_MASK_PROCESS)) +#define KFD_DBG_EC_TYPE_IS_PACKET(ecode) \ + (KFD_DBG_EC_IS_VALID(ecode) && !!(KFD_EC_MASK(ecode) & KFD_EC_MASK_PACKET)) /* Runtime enable states */ enum kfd_dbg_runtime_state diff --git a/projects/rocprofiler-sdk/source/lib/rocprofiler-sdk/pc_sampling/ioctl/ioctl_adapter.cpp b/projects/rocprofiler-sdk/source/lib/rocprofiler-sdk/pc_sampling/ioctl/ioctl_adapter.cpp index e02adc59de..29ac12b3d1 100644 --- a/projects/rocprofiler-sdk/source/lib/rocprofiler-sdk/pc_sampling/ioctl/ioctl_adapter.cpp +++ b/projects/rocprofiler-sdk/source/lib/rocprofiler-sdk/pc_sampling/ioctl/ioctl_adapter.cpp @@ -46,12 +46,12 @@ namespace ioctl rocprofiler_ioctl_version_info_t& get_ioctl_version(); -// IOCTL 1.16 is the first one supporting PC sampling. +// IOCTL 1.17 is the first one supporting PC sampling. #define CHECK_IOCTL_VERSION \ do \ { \ auto ioctl_version = get_ioctl_version(); \ - if(ioctl_version.major_version < 1 || ioctl_version.minor_version < 16) \ + if(ioctl_version.major_version < 1 || ioctl_version.minor_version < 17) \ { \ LOG(ERROR) << "PC sampling unavailable\n"; \ return ROCPROFILER_STATUS_ERROR_INCOMPATIBLE_KERNEL; \