[V2 07/11] drm/amdgpu: request/release full gpu access if device is vf
Deucher, Alexander
Alexander.Deucher at amd.com
Tue Jan 10 15:37:09 UTC 2017
> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf
> Of Xiangliang Yu
> Sent: Tuesday, January 10, 2017 5:01 AM
> To: amd-gfx at lists.freedesktop.org
> Cc: Yu, Xiangliang
> Subject: [V2 07/11] drm/amdgpu: request/release full gpu access if device is
> vf
>
> For gpu vf device, first need to request full gpu access before
> accessing gpu registers, and release full gpu access after the
> access is done.
>
> Signed-off-by: Xiangliang Yu <Xiangliang.Yu at amd.com>
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 9 +++++++++
> drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 6 ++++++
> 2 files changed, 15 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 9a2fd3e..03d28a1 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -1330,6 +1330,12 @@ static int amdgpu_early_init(struct
> amdgpu_device *adev)
> return -EINVAL;
> }
>
> + if (amdgpu_sriov_vf(adev)) {
> + r = amdgpu_virt_request_full_gpu(adev, true);
> + if (r)
> + return r;
> + }
> +
> for (i = 0; i < adev->num_ip_blocks; i++) {
> if ((amdgpu_ip_block_mask & (1 << i)) == 0) {
> DRM_ERROR("disabled ip block: %d\n", i);
> @@ -1523,6 +1529,9 @@ static int amdgpu_fini(struct amdgpu_device
> *adev)
> adev->ip_blocks[i].status.late_initialized = false;
> }
>
> + if (amdgpu_sriov_vf(adev))
> + amdgpu_virt_release_full_gpu(adev, false);
> +
> return 0;
> }
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> index 47bc8e1..eb228c7 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> @@ -60,6 +60,9 @@ int amdgpu_driver_unload_kms(struct drm_device
> *dev)
> if (adev->rmmio == NULL)
> goto done_free;
>
> + if (amdgpu_sriov_vf(adev))
> + amdgpu_virt_request_full_gpu(adev, false);
> +
> if (amdgpu_device_is_px(dev)) {
> pm_runtime_get_sync(dev->dev);
> pm_runtime_forbid(dev->dev);
> @@ -139,6 +142,9 @@ int amdgpu_driver_load_kms(struct drm_device
> *dev, unsigned long flags)
> pm_runtime_put_autosuspend(dev->dev);
> }
>
> + if (amdgpu_sriov_vf(adev))
> + amdgpu_virt_release_full_gpu(adev, true);
> +
> out:
> if (r) {
> /* balance pm_runtime_get_sync in
> amdgpu_driver_unload_kms */
> --
> 2.7.4
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
More information about the amd-gfx
mailing list