[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