drm/amdgpu: change vm->task_info handling
[linux-2.6-microblaze.git] / drivers / gpu / drm / amd / amdgpu / gmc_v9_0.c
index 1439e62..47b63a4 100644 (file)
@@ -549,7 +549,7 @@ static int gmc_v9_0_process_interrupt(struct amdgpu_device *adev,
        bool retry_fault = !!(entry->src_data[1] & 0x80);
        bool write_fault = !!(entry->src_data[1] & 0x20);
        uint32_t status = 0, cid = 0, rw = 0;
-       struct amdgpu_task_info task_info;
+       struct amdgpu_task_info *task_info;
        struct amdgpu_vmhub *hub;
        const char *mmhub_cid;
        const char *hub_name;
@@ -626,15 +626,20 @@ static int gmc_v9_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] %s page fault (src_id:%u ring:%u vmid:%u pasid:%u, for process %s pid %d thread %s pid %d)\n",
-               hub_name, retry_fault ? "retry" : "no-retry",
-               entry->src_id, entry->ring_id, entry->vmid,
-               entry->pasid, task_info.process_name, task_info.tgid,
-               task_info.task_name, task_info.pid);
+               "[%s] %s page fault (src_id:%u ring:%u vmid:%u pasid:%u)\n", hub_name,
+               retry_fault ? "retry" : "no-retry",
+               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,
+                       " for 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 IH client 0x%x (%s)\n",
                addr, entry->client_id,
                soc15_ih_clientid_name[entry->client_id]);