diff --git a/include/linux/kfd_ioctl.h b/include/linux/kfd_ioctl.h index 09a22cc681..3316967170 100644 --- a/include/linux/kfd_ioctl.h +++ b/include/linux/kfd_ioctl.h @@ -169,6 +169,8 @@ struct kfd_ioctl_dbg_wave_control_args { #define KFD_IOC_WAIT_RESULT_TIMEOUT 1 #define KFD_IOC_WAIT_RESULT_FAIL 2 +#define KFD_SIGNAL_EVENT_LIMIT 4096 + struct kfd_ioctl_create_event_args { uint64_t event_page_offset; /* from KFD */ uint32_t event_trigger_data; /* from KFD - signal events only */ diff --git a/src/events.c b/src/events.c index 8b057b0fc7..d64f601ebd 100644 --- a/src/events.c +++ b/src/events.c @@ -77,7 +77,7 @@ hsaKmtCreateEvent( } if (events_page == NULL && args.event_page_offset > 0) { - events_page = mmap(NULL, 4096, PROT_WRITE | PROT_READ, + events_page = mmap(NULL, KFD_SIGNAL_EVENT_LIMIT * 8, PROT_WRITE | PROT_READ, MAP_SHARED, kfd_fd, args.event_page_offset); if (events_page == NULL) { hsaKmtDestroyEvent(e); @@ -85,7 +85,7 @@ hsaKmtCreateEvent( } } - if (args.event_page_offset > 0 && args.event_slot_index < 256) + if (args.event_page_offset > 0 && args.event_slot_index < KFD_SIGNAL_EVENT_LIMIT) e->EventData.HWData2 = (HSAuint64)&events_page[args.event_slot_index]; e->EventId = args.event_id;