Adding support for mmap events page from Thunk
Signed-off-by: Ben Goz <ben.goz@amd.com>
[ROCm/ROCR-Runtime commit: b27de08442]
此提交包含在:
@@ -170,13 +170,13 @@ struct kfd_ioctl_dbg_wave_control_args {
|
||||
#define KFD_IOC_WAIT_RESULT_FAIL 2
|
||||
|
||||
struct kfd_ioctl_create_event_args {
|
||||
uint64_t event_trigger_address; /* from KFD - signal events only */
|
||||
uint64_t event_page_offset; /* from KFD */
|
||||
uint32_t event_trigger_data; /* from KFD - signal events only */
|
||||
uint32_t event_type; /* to KFD */
|
||||
uint32_t auto_reset; /* to KFD */
|
||||
uint32_t node_id; /* to KFD - only valid for certain event types */
|
||||
uint32_t event_id; /* from KFD */
|
||||
uint32_t pad;
|
||||
uint32_t event_slot_index; /* from KFD */
|
||||
};
|
||||
|
||||
struct kfd_ioctl_destroy_event_args {
|
||||
|
||||
@@ -29,8 +29,11 @@
|
||||
#include <time.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/mman.h>
|
||||
#include "linux/kfd_ioctl.h"
|
||||
|
||||
static HSAuint64 *events_page = NULL;
|
||||
|
||||
static bool IsSystemEventType(HSA_EVENTTYPE type)
|
||||
{
|
||||
// Debug events behave as signal events.
|
||||
@@ -73,10 +76,22 @@ hsaKmtCreateEvent(
|
||||
return HSAKMT_STATUS_ERROR;
|
||||
}
|
||||
|
||||
if (events_page == NULL && args.event_page_offset > 0) {
|
||||
events_page = mmap(NULL, 4096, PROT_WRITE | PROT_READ,
|
||||
MAP_SHARED, kfd_fd, args.event_page_offset);
|
||||
if (events_page == NULL) {
|
||||
hsaKmtDestroyEvent(e);
|
||||
return HSAKMT_STATUS_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
if (args.event_page_offset > 0 && args.event_slot_index < 256)
|
||||
e->EventData.HWData2 = (HSAuint64)&events_page[args.event_slot_index];
|
||||
|
||||
e->EventId = args.event_id;
|
||||
e->EventData.EventType = EventDesc->EventType;
|
||||
e->EventData.HWData1 = args.event_id;
|
||||
e->EventData.HWData2 = args.event_trigger_address;
|
||||
|
||||
e->EventData.HWData3 = args.event_trigger_data;
|
||||
|
||||
if (IsSignaled && !IsSystemEventType(e->EventData.EventType)) {
|
||||
|
||||
新增問題並參考
封鎖使用者