Skip to content

Commit 973fdde

Browse files
jameszhu-amdalexdeucher
authored andcommitted
drm/amdkfd: update user space last_event_age
Update user space last_event_age when event age is enabled. It is only for KFD_EVENT_TYPE_SIGNAL which is checked by user space. 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 96cdb53 commit 973fdde

1 file changed

Lines changed: 15 additions & 8 deletions

File tree

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

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -865,22 +865,29 @@ static int copy_signaled_event_data(uint32_t num_events,
865865
struct kfd_event_waiter *event_waiters,
866866
struct kfd_event_data __user *data)
867867
{
868-
struct kfd_hsa_memory_exception_data *src;
869-
struct kfd_hsa_memory_exception_data __user *dst;
868+
void *src;
869+
void __user *dst;
870870
struct kfd_event_waiter *waiter;
871871
struct kfd_event *event;
872-
uint32_t i;
872+
uint32_t i, size = 0;
873873

874874
for (i = 0; i < num_events; i++) {
875875
waiter = &event_waiters[i];
876876
event = waiter->event;
877877
if (!event)
878878
return -EINVAL; /* event was destroyed */
879-
if (waiter->activated && event->type == KFD_EVENT_TYPE_MEMORY) {
880-
dst = &data[i].memory_exception_data;
881-
src = &event->memory_exception_data;
882-
if (copy_to_user(dst, src,
883-
sizeof(struct kfd_hsa_memory_exception_data)))
879+
if (waiter->activated) {
880+
if (event->type == KFD_EVENT_TYPE_MEMORY) {
881+
dst = &data[i].memory_exception_data;
882+
src = &event->memory_exception_data;
883+
size = sizeof(struct kfd_hsa_memory_exception_data);
884+
} else if (event->type == KFD_EVENT_TYPE_SIGNAL &&
885+
waiter->event_age_enabled) {
886+
dst = &data[i].signal_event_data.last_event_age;
887+
src = &event->event_age;
888+
size = sizeof(u64);
889+
}
890+
if (size && copy_to_user(dst, src, size))
884891
return -EFAULT;
885892
}
886893
}

0 commit comments

Comments
 (0)