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@xxxxxxx> > Sent: 2019年8月8日 15:16 > To: Zhou1, Tao <Tao.Zhou1@xxxxxxx>; amd-gfx@xxxxxxxxxxxxxxxxxxxxx; > Chen, Guchun <Guchun.Chen@xxxxxxx>; Li, Dennis <Dennis.Li@xxxxxxx>; > Pan, Xinhui <Xinhui.Pan@xxxxxxx>; Clements, John > <John.Clements@xxxxxxx> > Cc: Zhou1, Tao <Tao.Zhou1@xxxxxxx> > 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@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Tao > Zhou > Sent: 2019年8月8日 14:54 > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx; Zhang, Hawking > <Hawking.Zhang@xxxxxxx>; Chen, Guchun <Guchun.Chen@xxxxxxx>; Li, > Dennis <Dennis.Li@xxxxxxx>; Pan, Xinhui <Xinhui.Pan@xxxxxxx>; > Clements, John <John.Clements@xxxxxxx> > Cc: Zhou1, Tao <Tao.Zhou1@xxxxxxx> > 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@xxxxxxx> > --- > 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@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx