Skip to content

Commit 4057e6c

Browse files
jameszhu-amdalexdeucher
authored andcommitted
drm/amdkfd: add event_age tracking when receiving interrupt
Add event_age tracking when receiving interrupt. Signed-off-by: James Zhu <James.Zhu@amd.com> Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
1 parent 6f58251 commit 4057e6c

2 files changed

Lines changed: 7 additions & 0 deletions

File tree

drivers/gpu/drm/amd/amdkfd/kfd_events.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,7 @@ int kfd_event_create(struct file *devkfd, struct kfd_process *p,
431431
if (!ret) {
432432
*event_id = ev->event_id;
433433
*event_trigger_data = ev->event_id;
434+
ev->event_age = 1;
434435
} else {
435436
kfree(ev);
436437
}
@@ -629,6 +630,11 @@ static void set_event(struct kfd_event *ev)
629630
* updating the wait queues in kfd_wait_on_events.
630631
*/
631632
ev->signaled = !ev->auto_reset || !waitqueue_active(&ev->wq);
633+
if (!(++ev->event_age)) {
634+
/* Never wrap back to reserved/default event age 0/1 */
635+
ev->event_age = 2;
636+
WARN_ONCE(1, "event_age wrap back!");
637+
}
632638

633639
list_for_each_entry(waiter, &ev->wq.head, wait.entry)
634640
WRITE_ONCE(waiter->activated, true);

drivers/gpu/drm/amd/amdkfd/kfd_events.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ struct signal_page;
5353

5454
struct kfd_event {
5555
u32 event_id;
56+
u64 event_age;
5657

5758
bool signaled;
5859
bool auto_reset;

0 commit comments

Comments
 (0)