drm/amdgpu: change vm->task_info handling
[sfrench/cifs-2.6.git] / drivers / gpu / drm / amd / amdgpu / gmc_v10_0.c
index db89d13bd80db6dbe769b2d59fc736a4b51f63fb..d933e19e0cf55753704e1892f55cd504d7d25ecb 100644 (file)
@@ -105,7 +105,7 @@ static int gmc_v10_0_process_interrupt(struct amdgpu_device *adev,
        struct amdgpu_vmhub *hub = &adev->vmhub[vmhub_index];
        bool retry_fault = !!(entry->src_data[1] & 0x80);
        bool write_fault = !!(entry->src_data[1] & 0x20);
-       struct amdgpu_task_info task_info;
+       struct amdgpu_task_info *task_info;
        uint32_t status = 0;
        u64 addr;
 
@@ -157,18 +157,22 @@ static int gmc_v10_0_process_interrupt(struct amdgpu_device *adev,
        if (!printk_ratelimit())
                return 0;
 
-       memset(&task_info, 0, sizeof(struct amdgpu_task_info));
-       amdgpu_vm_get_task_info(adev, entry->pasid, &task_info);
-
        dev_err(adev->dev,
-               "[%s] page fault (src_id:%u ring:%u vmid:%u pasid:%u, for process %s pid %d thread %s pid %d)\n",
+               "[%s] page fault (src_id:%u ring:%u vmid:%u pasid:%u)\n",
                entry->vmid_src ? "mmhub" : "gfxhub",
-               entry->src_id, entry->ring_id, entry->vmid,
-               entry->pasid, task_info.process_name, task_info.tgid,
-               task_info.task_name, task_info.pid);
+               entry->src_id, entry->ring_id, entry->vmid, entry->pasid);
+       task_info = amdgpu_vm_get_task_info_pasid(adev, entry->pasid);
+       if (task_info) {
+               dev_err(adev->dev,
+                       " in process %s pid %d thread %s pid %d\n",
+                       task_info->process_name, task_info->tgid,
+                       task_info->task_name, task_info->pid);
+               amdgpu_vm_put_task_info(task_info);
+       }
+
        dev_err(adev->dev, "  in page starting at address 0x%016llx from client 0x%x (%s)\n",
-               addr, entry->client_id,
-               soc15_ih_clientid_name[entry->client_id]);
+                       addr, entry->client_id,
+                       soc15_ih_clientid_name[entry->client_id]);
 
        if (!amdgpu_sriov_vf(adev))
                hub->vmhub_funcs->print_l2_protection_fault_status(adev,