[PATCH] drm/amd/display: call amdgpu_dm_fini whewn hw_fini.

Deucher, Alexander Alexander.Deucher at amd.com
Wed May 24 13:09:38 UTC 2017


> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf
> Of Rex Zhu
> Sent: Wednesday, May 24, 2017 7:20 AM
> To: amd-gfx at lists.freedesktop.org
> Cc: Zhu, Rex
> Subject: [PATCH] drm/amd/display: call amdgpu_dm_fini whewn hw_fini.
> 
> to free up drm mode_config info.
> 
> fix issue: unload amdgpu, can't load amdgpu again.

+Harry, Andrey

Acked-by: Alex Deucher <alexander.deucher at amd.com>

> 
> Change-Id: I493bc923b039eae69717cbe8a85c8f3f3ea97465
> [drm:drm_debugfs_init [drm]] *ERROR* Cannot create
> /sys/kernel/debug/dri/0
> [drm:drm_minor_register [drm]] *ERROR* DRM: Failed to initialize
> /sys/kernel/debug/dri.
> 
> Signed-off-by: Rex Zhu <Rex.Zhu at amd.com>
> ---
>  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 5 ++---
>  drivers/gpu/drm/amd/display/dc/core/dc.c          | 7 ++++++-
>  2 files changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> index e39aef6..2774f86 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -393,9 +393,8 @@ void amdgpu_dm_fini(struct amdgpu_device *adev)
>  		adev->dm.freesync_module = NULL;
>  	}
>  	/* DC Destroy TODO: Replace destroy DAL */
> -	{
> +	if (adev->dm.dc)
>  		dc_destroy(&adev->dm.dc);
> -	}
>  	return;
>  }
> 
> @@ -488,7 +487,7 @@ static int dm_hw_fini(void *handle)
>  	amdgpu_dm_hpd_fini(adev);
> 
>  	amdgpu_dm_irq_fini(adev);
> -
> +	amdgpu_dm_fini(adev);
>  	return 0;
>  }
> 
> diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c
> b/drivers/gpu/drm/amd/display/dc/core/dc.c
> index 8106e01..8e1b573 100644
> --- a/drivers/gpu/drm/amd/display/dc/core/dc.c
> +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
> @@ -1583,7 +1583,12 @@ enum dc_irq_source dc_interrupt_to_irq_source(
> 
>  void dc_interrupt_set(const struct dc *dc, enum dc_irq_source src, bool
> enable)
>  {
> -	struct core_dc *core_dc = DC_TO_CORE(dc);
> +	struct core_dc *core_dc;
> +
> +	if (dc == NULL)
> +		return;
> +	core_dc = DC_TO_CORE(dc);
> +
>  	dal_irq_service_set(core_dc->res_pool->irqs, src, enable);
>  }
> 
> --
> 1.9.1
> 
> _______________________________________________
> 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