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>
This commit is contained in:
parent
6f582513ad
commit
4057e6ce33
@ -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);
|
||||
|
@ -53,6 +53,7 @@ struct signal_page;
|
||||
|
||||
struct kfd_event {
|
||||
u32 event_id;
|
||||
u64 event_age;
|
||||
|
||||
bool signaled;
|
||||
bool auto_reset;
|
||||
|
Loading…
x
Reference in New Issue
Block a user