Adding support for mmap events page from Thunk

Signed-off-by: Ben Goz <ben.goz@amd.com>


[ROCm/ROCR-Runtime commit: b27de08442]
This commit is contained in:
Ben Goz
2015-03-18 15:33:43 +02:00
parent 21f01aaf02
commit d8a1df836d
2 changed files with 18 additions and 3 deletions
+16 -1
View File
@@ -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)) {