]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blobdiff - drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
drm/amdgpu: unmap register bar on device init failure
[mirror_ubuntu-hirsute-kernel.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_device.c
index 53b9d86da596af4118774a02edc5e75b56e4d701..2ff43a3d52fc25238bde54242edd03d3c54a911e 100644 (file)
@@ -3209,13 +3209,13 @@ int amdgpu_device_init(struct amdgpu_device *adev,
        r = amdgpu_device_get_job_timeout_settings(adev);
        if (r) {
                dev_err(adev->dev, "invalid lockup_timeout parameter syntax\n");
-               return r;
+               goto failed_unmap;
        }
 
        /* early init functions */
        r = amdgpu_device_ip_early_init(adev);
        if (r)
-               return r;
+               goto failed_unmap;
 
        /* doorbell bar mapping and doorbell index init*/
        amdgpu_device_doorbell_init(adev);
@@ -3419,6 +3419,10 @@ failed:
        if (boco)
                vga_switcheroo_fini_domain_pm_ops(adev->dev);
 
+failed_unmap:
+       iounmap(adev->rmmio);
+       adev->rmmio = NULL;
+
        return r;
 }