[PATCH 1/3] drm/amdgpu: add amdgpu_mmhub_funcs definition

Zhou1, Tao Tao.Zhou1 at amd.com
Thu Aug 8 07:57:56 UTC 2019


Mmhub ras function will be called in amdgpu_ras.c, amdgpu_ras.c should pay no attention to the version of mmhub functions.

Centralize all the functions into callback function structure is a good idea, but this is a another story and needs a huge effort.

Regards,
Tao

> -----Original Message-----
> From: Zhang, Hawking <Hawking.Zhang at amd.com>
> Sent: 2019年8月8日 15:16
> To: Zhou1, Tao <Tao.Zhou1 at amd.com>; amd-gfx at lists.freedesktop.org;
> Chen, Guchun <Guchun.Chen at amd.com>; Li, Dennis <Dennis.Li at amd.com>;
> Pan, Xinhui <Xinhui.Pan at amd.com>; Clements, John
> <John.Clements at amd.com>
> Cc: Zhou1, Tao <Tao.Zhou1 at amd.com>
> Subject: RE: [PATCH 1/3] drm/amdgpu: add amdgpu_mmhub_funcs
> definition
> 
> For mmhub/gfxhub, currently we didn't organize both in callback functions
> structure, instead, we declared all the functions in its header file respectively
> (see mmhub_vxx_x.h/gfxhub_vxx_x.h).
> 
> We'd either centralize all the functions into callback function structure, or
> continue declare the new function in its own header file. Either way seems
> fine to me.
> 
> Regards,
> Hawking
> -----Original Message-----
> From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of Tao
> Zhou
> Sent: 2019年8月8日 14:54
> To: amd-gfx at lists.freedesktop.org; Zhang, Hawking
> <Hawking.Zhang at amd.com>; Chen, Guchun <Guchun.Chen at amd.com>; Li,
> Dennis <Dennis.Li at amd.com>; Pan, Xinhui <Xinhui.Pan at amd.com>;
> Clements, John <John.Clements at amd.com>
> Cc: Zhou1, Tao <Tao.Zhou1 at amd.com>
> Subject: [PATCH 1/3] drm/amdgpu: add amdgpu_mmhub_funcs definition
> 
> add amdgpu_mmhub_funcs definition and initialize it, prepare for mmhub
> ras enablement
> 
> Signed-off-by: Tao Zhou <tao.zhou1 at amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu.h       |  2 ++
>  drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.h | 31
> +++++++++++++++++++++++
>  drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c     | 12 +++++++++
>  drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c   |  9 +++++++
>  drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.h   |  2 ++
>  5 files changed, 56 insertions(+)
>  create mode 100644 drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.h
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index 41f677613ffa..ed1a217e86e4 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -87,6 +87,7 @@
>  #include "amdgpu_discovery.h"
>  #include "amdgpu_mes.h"
>  #include "amdgpu_umc.h"
> +#include "amdgpu_mmhub.h"
> 
>  #define MAX_GPU_INSTANCE		16
> 
> @@ -979,6 +980,7 @@ struct amdgpu_device {
> 
>  	const struct amdgpu_nbio_funcs	*nbio_funcs;
>  	const struct amdgpu_df_funcs	*df_funcs;
> +	const struct amdgpu_mmhub_funcs	*mmhub_funcs;
> 
>  	/* delayed work_func for deferring clockgating during resume */
>  	struct delayed_work     delayed_init_work;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.h
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.h
> new file mode 100644
> index 000000000000..2d75ecfa199b
> --- /dev/null
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.h
> @@ -0,0 +1,31 @@
> +/*
> + * Copyright (C) 2019  Advanced Micro Devices, Inc.
> + *
> + * Permission is hereby granted, free of charge, to any person
> +obtaining a
> + * copy of this software and associated documentation files (the
> +"Software"),
> + * to deal in the Software without restriction, including without
> +limitation
> + * the rights to use, copy, modify, merge, publish, distribute,
> +sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom
> +the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be
> +included
> + * in all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> +EXPRESS
> + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> +MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO
> EVENT
> +SHALL
> + * THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
> OTHER
> +LIABILITY, WHETHER IN
> + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
> OR IN
> + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> THE SOFTWARE.
> + */
> +#ifndef __AMDGPU_MMHUB_H__
> +#define __AMDGPU_MMHUB_H__
> +
> +struct amdgpu_mmhub_funcs {
> +	void (*ras_init)(struct amdgpu_device *adev);
> +	void (*query_ras_error_count)(struct amdgpu_device *adev,
> +					void *ras_error_status);
> +};
> +
> +#endif
> +
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> index a2aa35eb512c..ce8ff7172883 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> @@ -652,6 +652,17 @@ static void gmc_v9_0_set_umc_funcs(struct
> amdgpu_device *adev)
>  	}
>  }
> 
> +static void gmc_v9_0_set_mmhub_funcs(struct amdgpu_device *adev) {
> +	switch (adev->asic_type) {
> +	case CHIP_VEGA20:
> +		adev->mmhub_funcs = &mmhub_v1_0_funcs;
> +		break;
> +	default:
> +		break;
> +	}
> +}
> +
>  static int gmc_v9_0_early_init(void *handle)  {
>  	struct amdgpu_device *adev = (struct amdgpu_device *)handle; @@
> -659,6 +670,7 @@ static int gmc_v9_0_early_init(void *handle)
>  	gmc_v9_0_set_gmc_funcs(adev);
>  	gmc_v9_0_set_irq_funcs(adev);
>  	gmc_v9_0_set_umc_funcs(adev);
> +	gmc_v9_0_set_mmhub_funcs(adev);
> 
>  	adev->gmc.shared_aperture_start = 0x2000000000000000ULL;
>  	adev->gmc.shared_aperture_end =
> diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
> b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
> index 292f3b1cddf2..fa961e0b6f2f 100644
> --- a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
> @@ -584,3 +584,12 @@ void mmhub_v1_0_get_clockgating(struct
> amdgpu_device *adev, u32 *flags)
>  	if (data & ATC_L2_MISC_CG__MEM_LS_ENABLE_MASK)
>  		*flags |= AMD_CG_SUPPORT_MC_LS;
>  }
> +
> +static void mmhub_v1_0_query_ras_error_count(struct amdgpu_device
> *adev,
> +					   void *ras_error_status)
> +{
> +}
> +
> +const struct amdgpu_mmhub_funcs mmhub_v1_0_funcs = {
> +	.query_ras_error_count = mmhub_v1_0_query_ras_error_count, };
> diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.h
> b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.h
> index 0de0fdf98c00..c43319e8f945 100644
> --- a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.h
> +++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.h
> @@ -23,6 +23,8 @@
>  #ifndef __MMHUB_V1_0_H__
>  #define __MMHUB_V1_0_H__
> 
> +extern const struct amdgpu_mmhub_funcs mmhub_v1_0_funcs;
> +
>  u64 mmhub_v1_0_get_fb_location(struct amdgpu_device *adev);  int
> mmhub_v1_0_gart_enable(struct amdgpu_device *adev);  void
> mmhub_v1_0_gart_disable(struct amdgpu_device *adev);
> --
> 2.17.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