mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 12:44:03 +02:00
drm/amdkfd: Fix signal reset event
When a mode reset happens, driver needs to notify the process on that GPU a reset event is happening. The existing code assumes the process is using the GPU that is getting mode reset, which is not always true. For example, on a 8G system, the process may be only using GPU 0~4 but a mode 2 reset is resetting the all 8 GPUs connected by XGMI. Trying to find a process on GPU 5~7 will fail, which is fine and should skip the event signal. Signed-off-by: Amber Lin <amber.lin@amd.com> Reviewed-by: David Yat Sin <david.yatsin@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
5dafdd6492
commit
b38f9b6ffd
|
|
@ -1164,6 +1164,8 @@ void kfd_signal_reset_event(struct kfd_node *dev)
|
|||
struct kfd_event *ev;
|
||||
unsigned int temp;
|
||||
uint32_t id, idx;
|
||||
int user_gpu_id;
|
||||
struct kfd_process_device *pdd;
|
||||
int reset_cause = atomic_read(&dev->sram_ecc_flag) ?
|
||||
KFD_HW_EXCEPTION_ECC :
|
||||
KFD_HW_EXCEPTION_GPU_HANG;
|
||||
|
|
@ -1179,17 +1181,14 @@ void kfd_signal_reset_event(struct kfd_node *dev)
|
|||
|
||||
idx = srcu_read_lock(&kfd_processes_srcu);
|
||||
hash_for_each_rcu(kfd_processes_table, temp, p, kfd_processes) {
|
||||
int user_gpu_id = kfd_process_get_user_gpu_id(p, dev->id);
|
||||
struct kfd_process_device *pdd = kfd_get_process_device_data(dev, p);
|
||||
pdd = kfd_get_process_device_data(dev, p);
|
||||
if (!pdd)
|
||||
/* no process is using this device */
|
||||
continue;
|
||||
user_gpu_id = kfd_process_get_user_gpu_id(p, dev->id);
|
||||
|
||||
if (unlikely(user_gpu_id == -EINVAL)) {
|
||||
WARN_ONCE(1, "Could not get user_gpu_id from dev->id:%x\n", dev->id);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (unlikely(!pdd)) {
|
||||
WARN_ONCE(1, "Could not get device data from process pid:%d\n",
|
||||
p->lead_thread->pid);
|
||||
WARN_ONCE(1, "Could not get user_gpu_id from dev->id:%d\n", dev->id);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user