[PATCH 2/2] drm/amdgpu: Fix null point errro

Alex Deucher alexdeucher at gmail.com
Fri Oct 19 21:01:02 UTC 2018


On Thu, Oct 18, 2018 at 11:47 PM Zhou, David(ChunMing)
<David1.Zhou at amd.com> wrote:
>
> A minor suggestion, not sure if it's proper, Can we insert these callback checking to func? I know these func could be defined as a macro, can we change them to function definition?

I think we already do something similar with the other dpm macros.
Either way, the series is:
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

>
> David
>
> > -----Original Message-----
> > From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of Rex
> > Zhu
> > Sent: Friday, October 19, 2018 10:51 AM
> > To: amd-gfx at lists.freedesktop.org
> > Cc: Zhu, Rex <Rex.Zhu at amd.com>
> > Subject: [PATCH 2/2] drm/amdgpu: Fix null point errro
> >
> > need to check adev->powerplay.pp_funcs first, becasue from AI, the smu ip
> > may be disabled by user, and the pp_handle is null in this case.
> >
> > Signed-off-by: Rex Zhu <Rex.Zhu at amd.com>
> > ---
> >  drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c    | 6 ++++--
> >  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 1 +
> >  drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c    | 2 +-
> >  drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c    | 2 +-
> >  drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c     | 6 ++++--
> >  5 files changed, 11 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
> > b/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
> > index 297a549..0a4fba1 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
> > @@ -135,7 +135,8 @@ static int acp_poweroff(struct generic_pm_domain
> > *genpd)
> >        * 2. power off the acp tiles
> >        * 3. check and enter ulv state
> >        */
> > -             if (adev->powerplay.pp_funcs->set_powergating_by_smu)
> > +             if (adev->powerplay.pp_funcs &&
> > +                     adev->powerplay.pp_funcs-
> > >set_powergating_by_smu)
> >                       amdgpu_dpm_set_powergating_by_smu(adev,
> > AMD_IP_BLOCK_TYPE_ACP, true);
> >       }
> >       return 0;
> > @@ -517,7 +518,8 @@ static int acp_set_powergating_state(void *handle,
> >       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
> >       bool enable = state == AMD_PG_STATE_GATE ? true : false;
> >
> > -     if (adev->powerplay.pp_funcs->set_powergating_by_smu)
> > +     if (adev->powerplay.pp_funcs &&
> > +             adev->powerplay.pp_funcs->set_powergating_by_smu)
> >               amdgpu_dpm_set_powergating_by_smu(adev,
> > AMD_IP_BLOCK_TYPE_ACP, enable);
> >
> >       return 0;
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> > b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> > index 4fca67a..7dad682 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> > @@ -1783,6 +1783,7 @@ static int amdgpu_device_set_pg_state(struct
> > amdgpu_device *adev, enum amd_power
> >                   adev->ip_blocks[i].version->type ==
> > AMD_IP_BLOCK_TYPE_VCE ||
> >                   adev->ip_blocks[i].version->type ==
> > AMD_IP_BLOCK_TYPE_VCN ||
> >                   adev->ip_blocks[i].version->type ==
> > AMD_IP_BLOCK_TYPE_ACP) &&
> > +                 adev->powerplay.pp_funcs &&
> >                   adev->powerplay.pp_funcs->set_powergating_by_smu) {
> >                       if (!adev->ip_blocks[i].status.valid) {
> >
> >       amdgpu_dpm_set_powergating_by_smu(adev, adev-
> > >ip_blocks[i].version->type, state == AMD_PG_STATE_GATE ?
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> > b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> > index 790fd54..1a656b8 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> > @@ -392,7 +392,7 @@ void amdgpu_gfx_off_ctrl(struct amdgpu_device
> > *adev, bool enable)
> >       if (!(adev->powerplay.pp_feature & PP_GFXOFF_MASK))
> >               return;
> >
> > -     if (!adev->powerplay.pp_funcs->set_powergating_by_smu)
> > +     if (!adev->powerplay.pp_funcs ||
> > +!adev->powerplay.pp_funcs->set_powergating_by_smu)
> >               return;
> >
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
> > b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
> > index 14649f8..fd23ba1 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
> > @@ -280,7 +280,7 @@ void mmhub_v1_0_update_power_gating(struct
> > amdgpu_device *adev,
> >               return;
> >
> >       if (enable && adev->pg_flags & AMD_PG_SUPPORT_MMHUB) {
> > -             if (adev->powerplay.pp_funcs->set_powergating_by_smu)
> > +             if (adev->powerplay.pp_funcs &&
> > +adev->powerplay.pp_funcs->set_powergating_by_smu)
> >                       amdgpu_dpm_set_powergating_by_smu(adev,
> > AMD_IP_BLOCK_TYPE_GMC, true);
> >
> >       }
> > diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> > b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> > index 2e8365d..d97e6a2 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> > @@ -1595,7 +1595,8 @@ static int sdma_v4_0_hw_init(void *handle)
> >       int r;
> >       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
> >
> > -     if (adev->asic_type == CHIP_RAVEN && adev->powerplay.pp_funcs-
> > >set_powergating_by_smu)
> > +     if (adev->asic_type == CHIP_RAVEN && adev->powerplay.pp_funcs
> > &&
> > +                     adev->powerplay.pp_funcs-
> > >set_powergating_by_smu)
> >               amdgpu_dpm_set_powergating_by_smu(adev,
> > AMD_IP_BLOCK_TYPE_SDMA, false);
> >
> >       sdma_v4_0_init_golden_registers(adev);
> > @@ -1615,7 +1616,8 @@ static int sdma_v4_0_hw_fini(void *handle)
> >       sdma_v4_0_ctx_switch_enable(adev, false);
> >       sdma_v4_0_enable(adev, false);
> >
> > -     if (adev->asic_type == CHIP_RAVEN && adev->powerplay.pp_funcs-
> > >set_powergating_by_smu)
> > +     if (adev->asic_type == CHIP_RAVEN && adev->powerplay.pp_funcs
> > +                     && adev->powerplay.pp_funcs-
> > >set_powergating_by_smu)
> >               amdgpu_dpm_set_powergating_by_smu(adev,
> > AMD_IP_BLOCK_TYPE_SDMA, true);
> >
> >       return 0;
> > --
> > 1.9.1
> >
> > _______________________________________________
> > amd-gfx mailing list
> > amd-gfx at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/amd-gfx
> _______________________________________________
> 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