[PATCH] drm/amdgpu: release exclusive mode after hw_init if no kfd

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Oct 30, 2017 at 9:57 AM, Pixel Ding <Pixel.Ding at amd.com> wrote:
> From: pding <Pixel.Ding at amd.com>
>
> Move kfd probe prior to device init. Release exclusive mode
> after hw_init if kfd is not enabled.
>
> Signed-off-by: pding <Pixel.Ding at amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 3 +++
>  drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c    | 5 +++--
>  2 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 400dfaa..e46ec51 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -1716,6 +1716,9 @@ static int amdgpu_init(struct amdgpu_device *adev)
>                 adev->ip_blocks[i].status.hw = true;
>         }
>
> +       if (amdgpu_sriov_vf(adev) && !adev->kfd)
> +               amdgpu_virt_release_full_gpu(adev, true);
> +
>         return 0;
>  }
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> index 3e9760d..e91907c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> @@ -138,6 +138,8 @@ int amdgpu_driver_load_kms(struct drm_device *dev, unsigned long flags)
>             !pci_is_thunderbolt_attached(dev->pdev))
>                 flags |= AMD_IS_PX;
>
> +       amdgpu_amdkfd_device_probe(adev);
> +
>         /* amdgpu_device_init should report only fatal error
>          * like memory allocation failure or iomapping failure,
>          * or memory manager initialization failure, it must
> @@ -170,7 +172,6 @@ int amdgpu_driver_load_kms(struct drm_device *dev, unsigned long flags)
>                                 "Error during ACPI methods call\n");
>         }
>
> -       amdgpu_amdkfd_device_probe(adev);
>         amdgpu_amdkfd_device_init(adev);
>
>         if (amdgpu_device_is_px(dev)) {
> @@ -182,7 +183,7 @@ int amdgpu_driver_load_kms(struct drm_device *dev, unsigned long flags)
>                 pm_runtime_put_autosuspend(dev->dev);
>         }
>
> -       if (amdgpu_sriov_vf(adev))
> +       if (amdgpu_sriov_vf(adev) && adev->kfd)
>                 amdgpu_virt_release_full_gpu(adev, true);
>
>  out:
> --
> 2.9.5
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx

The amdkfd probe function uses the pdev field inside adev. That field
is initialized in device init, so you can't call amdkfd probe before
that function.
Oded


[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux