Nevermind it applies fine after the series you pushed a bit ago today. Cheers, Tom On 25/09/17 12:13 PM, Tom St Denis wrote: > This doesn't apply on top of drm-next I don't know why since "git > status" doesn't report any conflicting files... > > Tom > > On 25/09/17 09:49 AM, Rex Zhu wrote: >> Signed-off-by: Rex Zhu <Rex.Zhu at amd.com> >> >> Change-Id: I3b2fa446fd7e233042794fe3d2fb5cbce903fe2d >> --- >>  drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c    | 30 +-------- >>  drivers/gpu/drm/amd/powerplay/amd_powerplay.c    | 81 >> +++++++++++++---------- >>  drivers/gpu/drm/amd/powerplay/inc/amd_powerplay.h | 5 -- >>  3 files changed, 48 insertions(+), 68 deletions(-) >> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c >> index eb88665..1649b1e 100644 >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c >> @@ -34,24 +34,6 @@ >>  #include "cik_dpm.h" >>  #include "vi_dpm.h" >> -static int amdgpu_create_pp_handle(struct amdgpu_device *adev) >> -{ >> -   struct amd_pp_init pp_init; >> -   struct amd_powerplay *amd_pp; >> -   int ret; >> - >> -   amd_pp = &(adev->powerplay); >> -   pp_init.chip_family = adev->family; >> -   pp_init.chip_id = adev->asic_type; >> -   pp_init.pm_en = (amdgpu_dpm != 0 && !amdgpu_sriov_vf(adev)) ? >> true : false; >> -   pp_init.feature_mask = amdgpu_pp_feature_mask; >> -   pp_init.device = amd_pp->cgs_device; >> -   ret = amd_powerplay_create(&pp_init, &(amd_pp->pp_handle)); >> -   if (ret) >> -       return -EINVAL; >> -   return 0; >> -} >> - >>  static int amdgpu_pp_early_init(void *handle) >>  { >>      struct amdgpu_device *adev = (struct amdgpu_device *)handle; >> @@ -73,8 +55,6 @@ static int amdgpu_pp_early_init(void *handle) >>      case CHIP_VEGA10: >>      case CHIP_RAVEN: >>          amd_pp->cgs_device = amdgpu_cgs_create_device(adev); >> -       if (amdgpu_create_pp_handle(adev)) >> -           return -EINVAL; >>          amd_pp->ip_funcs = &pp_ip_funcs; >>          amd_pp->pp_funcs = &pp_dpm_funcs; >>          break; >> @@ -97,8 +77,6 @@ static int amdgpu_pp_early_init(void *handle) >>              amd_pp->pp_funcs = &ci_dpm_funcs; >>          } else { >>              amd_pp->cgs_device = amdgpu_cgs_create_device(adev); >> -           if (amdgpu_create_pp_handle(adev)) >> -               return -EINVAL; >>              amd_pp->ip_funcs = &pp_ip_funcs; >>              amd_pp->pp_funcs = &pp_dpm_funcs; >>          } >> @@ -117,7 +95,8 @@ static int amdgpu_pp_early_init(void *handle) >>      if (adev->powerplay.ip_funcs->early_init) >>          ret = adev->powerplay.ip_funcs->early_init( >> -                   adev->powerplay.pp_handle); >> +                   amd_pp->cgs_device ? amd_pp->cgs_device : >> +                   amd_pp->pp_handle); >>      if (ret == PP_DPM_DISABLED) { >>          adev->pm.dpm_enabled = false; >> @@ -206,11 +185,8 @@ static void amdgpu_pp_late_fini(void *handle) >>          adev->powerplay.ip_funcs->late_fini( >>                adev->powerplay.pp_handle); >> - >> -   if (adev->powerplay.cgs_device) { >> -       amd_powerplay_destroy(adev->powerplay.pp_handle); >> +   if (adev->powerplay.cgs_device) >>          amdgpu_cgs_destroy_device(adev->powerplay.cgs_device); >> -   } >>  } >>  static int amdgpu_pp_suspend(void *handle) >> diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c >> b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c >> index 5c7415e..7c1a974 100644 >> --- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c >> +++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c >> @@ -50,10 +50,47 @@ static inline int pp_check(struct pp_instance >> *handle) >>      return 0; >>  } >> +static int amd_powerplay_create(struct amd_pp_init *pp_init, >> +               void **handle) >> +{ >> +   struct pp_instance *instance; >> + >> +   if (pp_init == NULL || handle == NULL) >> +       return -EINVAL; >> + >> +   instance = kzalloc(sizeof(struct pp_instance), GFP_KERNEL); >> +   if (instance == NULL) >> +       return -ENOMEM; >> + >> +   instance->pp_valid = PP_VALID; >> +   instance->chip_family = pp_init->chip_family; >> +   instance->chip_id = pp_init->chip_id; >> +   instance->pm_en = pp_init->pm_en; >> +   instance->feature_mask = pp_init->feature_mask; >> +   instance->device = pp_init->device; >> +   mutex_init(&instance->pp_lock); >> +   *handle = instance; >> +   return 0; >> +} >> + >> +static int amd_powerplay_destroy(void *handle) >> +{ >> +   struct pp_instance *instance = (struct pp_instance *)handle; >> + >> +   kfree(instance->hwmgr); >> +   instance->hwmgr = NULL; >> + >> +   kfree(instance); >> +   instance = NULL; >> +   return 0; >> +} >> + >>  static int pp_early_init(void *handle) >>  { >>      int ret; >> -   struct pp_instance *pp_handle = (struct pp_instance *)handle; >> +   struct pp_instance *pp_handle; >> + >> +   pp_handle = cgs_register_pp_handle(handle, amd_powerplay_create); >>      ret = hwmgr_early_init(pp_handle); >>      if (ret) >> @@ -162,6 +199,12 @@ static int pp_late_init(void *handle) >>      return 0; >>  } >> +static void pp_late_fini(void *handle) >> +{ >> +   amd_powerplay_destroy(handle); >> +} >> + >> + >>  static bool pp_is_idle(void *handle) >>  { >>      return false; >> @@ -275,6 +318,7 @@ static int pp_resume(void *handle) >>      .sw_fini = pp_sw_fini, >>      .hw_init = pp_hw_init, >>      .hw_fini = pp_hw_fini, >> +   .late_fini = pp_late_fini, >>      .suspend = pp_suspend, >>      .resume = pp_resume, >>      .is_idle = pp_is_idle, >> @@ -1138,41 +1182,6 @@ static int pp_dpm_switch_power_profile(void >> *handle, >>      .switch_power_profile = pp_dpm_switch_power_profile, >>  }; >> -int amd_powerplay_create(struct amd_pp_init *pp_init, >> -               void **handle) >> -{ >> -   struct pp_instance *instance; >> - >> -   if (pp_init == NULL || handle == NULL) >> -       return -EINVAL; >> - >> -   instance = kzalloc(sizeof(struct pp_instance), GFP_KERNEL); >> -   if (instance == NULL) >> -       return -ENOMEM; >> - >> -   instance->pp_valid = PP_VALID; >> -   instance->chip_family = pp_init->chip_family; >> -   instance->chip_id = pp_init->chip_id; >> -   instance->pm_en = pp_init->pm_en; >> -   instance->feature_mask = pp_init->feature_mask; >> -   instance->device = pp_init->device; >> -   mutex_init(&instance->pp_lock); >> -   *handle = instance; >> -   return 0; >> -} >> - >> -int amd_powerplay_destroy(void *handle) >> -{ >> -   struct pp_instance *instance = (struct pp_instance *)handle; >> - >> -   kfree(instance->hwmgr); >> -   instance->hwmgr = NULL; >> - >> -   kfree(instance); >> -   instance = NULL; >> -   return 0; >> -} >> - >>  int amd_powerplay_reset(void *handle) >>  { >>      struct pp_instance *instance = (struct pp_instance *)handle; >> diff --git a/drivers/gpu/drm/amd/powerplay/inc/amd_powerplay.h >> b/drivers/gpu/drm/amd/powerplay/inc/amd_powerplay.h >> index 437d785..916b6c4 100644 >> --- a/drivers/gpu/drm/amd/powerplay/inc/amd_powerplay.h >> +++ b/drivers/gpu/drm/amd/powerplay/inc/amd_powerplay.h >> @@ -274,11 +274,6 @@ struct amd_powerplay { >>      const struct amd_pm_funcs *pp_funcs; >>  }; >> -int amd_powerplay_create(struct amd_pp_init *pp_init, >> -               void **handle); >> - >> -int amd_powerplay_destroy(void *handle); >> - >>  int amd_powerplay_reset(void *handle); >>  int amd_powerplay_display_configuration_change(void *handle, >> > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx