Commit 4057e6ce authored by James Zhu's avatar James Zhu Committed by Alex Deucher
Browse files

drm/amdkfd: add event_age tracking when receiving interrupt



Add event_age tracking when receiving interrupt.

Signed-off-by: default avatarJames Zhu <James.Zhu@amd.com>
Reviewed-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 6f582513
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -431,6 +431,7 @@ int kfd_event_create(struct file *devkfd, struct kfd_process *p,
	if (!ret) {
		*event_id = ev->event_id;
		*event_trigger_data = ev->event_id;
		ev->event_age = 1;
	} else {
		kfree(ev);
	}
@@ -629,6 +630,11 @@ static void set_event(struct kfd_event *ev)
	 * updating the wait queues in kfd_wait_on_events.
	 */
	ev->signaled = !ev->auto_reset || !waitqueue_active(&ev->wq);
	if (!(++ev->event_age)) {
		/* Never wrap back to reserved/default event age 0/1 */
		ev->event_age = 2;
		WARN_ONCE(1, "event_age wrap back!");
	}

	list_for_each_entry(waiter, &ev->wq.head, wait.entry)
		WRITE_ONCE(waiter->activated, true);
+1 −0
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ struct signal_page;

struct kfd_event {
	u32 event_id;
	u64 event_age;

	bool signaled;
	bool auto_reset;