libhsakmt: add open SMI event handle
System Management Interface event is read from anonymous file handle, this helper wrap the ioctl interface to get anonymous file handle for GPU nodeid. Define SMI event IDs, event triggers, copy the same value from kfd_ioctl.h to avoid translation. Change-Id: I5c8ba5301473bb3b80bb4e2aa33a9f675bedb001 Signed-off-by: Philip Yang <Philip.Yang@amd.com>
This commit is contained in:
@@ -877,6 +877,22 @@ hsaKmtGetXNACKMode(
|
||||
HSAint32 * enable // OUT: returns XNACK value.
|
||||
);
|
||||
|
||||
/**
|
||||
Open anonymous file handle to enable events and read SMI events.
|
||||
|
||||
To enable events, write 64bit events mask to fd, event enums as bit index.
|
||||
for example, event mask (HSA_SMI_EVENT_MASK_FROM_INDEX(HSA_SMI_EVENT_INDEX_MAX) - 1) to enable all events
|
||||
|
||||
Read event from fd is not blocking, use poll with timeout value to check if event is available.
|
||||
Event is dropped if kernel event fifo is full.
|
||||
*/
|
||||
HSAKMT_STATUS
|
||||
HSAKMTAPI
|
||||
hsaKmtOpenSMI(
|
||||
HSAuint32 NodeId, // IN: GPU node_id to receive the SMI event from
|
||||
int *fd // OUT: anonymous file handle
|
||||
);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} //extern "C"
|
||||
#endif
|
||||
|
||||
@@ -1354,6 +1354,55 @@ typedef struct _HSA_SVM_ATTRIBUTE {
|
||||
HSAuint32 value; // attribute value
|
||||
} HSA_SVM_ATTRIBUTE;
|
||||
|
||||
typedef enum _HSA_SMI_EVENT {
|
||||
HSA_SMI_EVENT_NONE = 0, /* not used */
|
||||
HSA_SMI_EVENT_VMFAULT = 1, /* event start counting at 1 */
|
||||
HSA_SMI_EVENT_THERMAL_THROTTLE = 2,
|
||||
HSA_SMI_EVENT_GPU_PRE_RESET = 3,
|
||||
HSA_SMI_EVENT_GPU_POST_RESET = 4,
|
||||
HSA_SMI_EVENT_MIGRATE_START = 5,
|
||||
HSA_SMI_EVENT_MIGRATE_END = 6,
|
||||
HSA_SMI_EVENT_PAGE_FAULT_START = 7,
|
||||
HSA_SMI_EVENT_PAGE_FAULT_END = 8,
|
||||
HSA_SMI_EVENT_QUEUE_EVICTION = 9,
|
||||
HSA_SMI_EVENT_QUEUE_RESTORE = 10,
|
||||
HSA_SMI_EVENT_UNMAP_FROM_GPU = 11,
|
||||
HSA_SMI_EVENT_INDEX_MAX = 12,
|
||||
|
||||
/*
|
||||
* max event number, as a flag bit to get events from all processes,
|
||||
* this requires super user permission, otherwise will not be able to
|
||||
* receive event from any process. Without this flag to receive events
|
||||
* from same process.
|
||||
*/
|
||||
HSA_SMI_EVENT_ALL_PROCESS = 64
|
||||
} HSA_EVENT_TYPE;
|
||||
|
||||
typedef enum _HSA_MIGRATE_TRIGGERS {
|
||||
HSA_MIGRATE_TRIGGER_PREFETCH,
|
||||
HSA_MIGRATE_TRIGGER_PAGEFAULT_GPU,
|
||||
HSA_MIGRATE_TRIGGER_PAGEFAULT_CPU,
|
||||
HSA_MIGRATE_TRIGGER_TTM_EVICTION
|
||||
} HSA_MIGRATE_TRIGGERS;
|
||||
|
||||
typedef enum _HSA_QUEUE_EVICTION_TRIGGERS {
|
||||
HSA_QUEUE_EVICTION_TRIGGER_SVM,
|
||||
HSA_QUEUE_EVICTION_TRIGGER_USERPTR,
|
||||
HSA_QUEUE_EVICTION_TRIGGER_TTM,
|
||||
HSA_QUEUE_EVICTION_TRIGGER_SUSPEND,
|
||||
HSA_QUEUE_EVICTION_CRIU_CHECKPOINT,
|
||||
HSA_QUEUE_EVICTION_CRIU_RESTORE
|
||||
} HSA_QUEUE_EVICTION_TRIGGERS;
|
||||
|
||||
typedef enum _HSA_SVM_UNMAP_TRIGGERS {
|
||||
HSA_SVM_UNMAP_TRIGGER_MMU_NOTIFY,
|
||||
HSA_SVM_UNMAP_TRIGGER_MMU_NOTIFY_MIGRATE,
|
||||
HSA_SVM_UNMAP_TRIGGER_UNMAP_FROM_CPU
|
||||
} HSA_SVM_UNMAP_TRIGGERS;
|
||||
|
||||
#define HSA_SMI_EVENT_MASK_FROM_INDEX(i) (1ULL << ((i) - 1))
|
||||
#define HSA_SMI_EVENT_MSG_SIZE 96
|
||||
|
||||
#pragma pack(pop, hsakmttypes_h)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user