Reviewed-by: Evan Quan <evan.quan at amd.com> > -----Original Message----- > From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf > Of Rex Zhu > Sent: Monday, March 26, 2018 4:03 PM > To: amd-gfx at lists.freedesktop.org > Cc: Zhu, Rex <Rex.Zhu at amd.com> > Subject: [PATCH v2] drm/amdgpu: Parse module param amdgpu_dpm in > check_arguments > > v2: Patch for sriov-vf case, smu ip block not added to driver on vega, > set dpm_enabled false. > > Change-Id: Ib68ffa14492419df444756b6a75ed7f52ccfb738 > Signed-off-by: Rex Zhu <Rex.Zhu at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 2 +- > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 ++ > drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 2 +- > drivers/gpu/drm/amd/amdgpu/ci_dpm.c | 6 +++--- > drivers/gpu/drm/amd/amdgpu/kv_dpm.c | 6 +++--- > drivers/gpu/drm/amd/amdgpu/si_dpm.c | 6 +++--- > drivers/gpu/drm/amd/amdgpu/soc15.c | 2 ++ > drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c | 4 ++-- > drivers/gpu/drm/amd/powerplay/amd_powerplay.c | 2 +- > 9 files changed, 18 insertions(+), 14 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > index 369beb5..baa64e2 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c > @@ -465,7 +465,7 @@ static ssize_t amdgpu_debugfs_sensor_read(struct > file *f, char __user *buf, > if (size & 3 || *pos & 0x3) > return -EINVAL; > > - if (amdgpu_dpm == 0) > + if (!adev->pm.dpm_enabled) > return -EINVAL; > > /* convert offset to sensor number */ > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > index c51be05..2ba3e30 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@ -862,6 +862,8 @@ static void amdgpu_device_check_arguments(struct > amdgpu_device *adev) > } > > adev->firmware.load_type = amdgpu_ucode_get_load_type(adev, > amdgpu_fw_load_type); > + > + adev->pm.dpm_enabled = amdgpu_dpm ? true : false; > } > > /** > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c > index 7b0ae44..487d39e 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c > @@ -704,7 +704,7 @@ static int amdgpu_info_ioctl(struct drm_device *dev, > void *data, struct drm_file > struct pp_gpu_power query = {0}; > int query_size = sizeof(query); > > - if (amdgpu_dpm == 0) > + if (!adev->pm.dpm_enabled) > return -ENOENT; > > switch (info->sensor_info.type) { > diff --git a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c > b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c > index 47ef3e6..57c6301 100644 > --- a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c > +++ b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c > @@ -6255,7 +6255,7 @@ static int ci_dpm_late_init(void *handle) > int ret; > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > - if (!amdgpu_dpm) > + if (!adev->pm.dpm_enabled) > return 0; > > /* init the sysfs and debugfs files late */ @@ -6299,7 +6299,7 @@ > static int ci_dpm_sw_init(void *handle) > if (ret) > return ret; > > - if (amdgpu_dpm == 0) > + if (!adev->pm.dpm_enabled) > return 0; > > INIT_WORK(&adev->pm.dpm.thermal.work, > amdgpu_dpm_thermal_work_handler); @@ -6344,7 +6344,7 @@ static int > ci_dpm_hw_init(void *handle) > > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > - if (!amdgpu_dpm) { > + if (!adev->pm.dpm_enabled) { > ret = ci_upload_firmware(adev); > if (ret) { > DRM_ERROR("ci_upload_firmware failed\n"); diff -- > git a/drivers/gpu/drm/amd/amdgpu/kv_dpm.c > b/drivers/gpu/drm/amd/amdgpu/kv_dpm.c > index 26ba984..8e0cfca 100644 > --- a/drivers/gpu/drm/amd/amdgpu/kv_dpm.c > +++ b/drivers/gpu/drm/amd/amdgpu/kv_dpm.c > @@ -2974,7 +2974,7 @@ static int kv_dpm_late_init(void *handle) > /* powerdown unused blocks for now */ > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > - if (!amdgpu_dpm) > + if (!adev->pm.dpm_enabled) > return 0; > > kv_dpm_powergate_acp(adev, true); > @@ -3008,7 +3008,7 @@ static int kv_dpm_sw_init(void *handle) > adev->pm.current_mclk = adev->clock.default_mclk; > adev->pm.int_thermal_type = THERMAL_TYPE_NONE; > > - if (amdgpu_dpm == 0) > + if (!adev->pm.dpm_enabled) > return 0; > > INIT_WORK(&adev->pm.dpm.thermal.work, > amdgpu_dpm_thermal_work_handler); @@ -3049,7 +3049,7 @@ static int > kv_dpm_hw_init(void *handle) > int ret; > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > - if (!amdgpu_dpm) > + if (!adev->pm.dpm_enabled) > return 0; > > mutex_lock(&adev->pm.mutex); > diff --git a/drivers/gpu/drm/amd/amdgpu/si_dpm.c > b/drivers/gpu/drm/amd/amdgpu/si_dpm.c > index 672eaff..0423d3c 100644 > --- a/drivers/gpu/drm/amd/amdgpu/si_dpm.c > +++ b/drivers/gpu/drm/amd/amdgpu/si_dpm.c > @@ -7580,7 +7580,7 @@ static int si_dpm_late_init(void *handle) > int ret; > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > - if (!amdgpu_dpm) > + if (!adev->pm.dpm_enabled) > return 0; > > ret = si_set_temperature_range(adev); > @@ -7704,7 +7704,7 @@ static int si_dpm_sw_init(void *handle) > adev->pm.current_mclk = adev->clock.default_mclk; > adev->pm.int_thermal_type = THERMAL_TYPE_NONE; > > - if (amdgpu_dpm == 0) > + if (!adev->pm.dpm_enabled) > return 0; > > ret = si_dpm_init_microcode(adev); > @@ -7750,7 +7750,7 @@ static int si_dpm_hw_init(void *handle) > > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > - if (!amdgpu_dpm) > + if (!adev->pm.dpm_enabled) > return 0; > > mutex_lock(&adev->pm.mutex); > diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c > b/drivers/gpu/drm/amd/amdgpu/soc15.c > index 51cf8a3..6ddc58c 100644 > --- a/drivers/gpu/drm/amd/amdgpu/soc15.c > +++ b/drivers/gpu/drm/amd/amdgpu/soc15.c > @@ -535,6 +535,8 @@ int soc15_set_ip_blocks(struct amdgpu_device *adev) > amdgpu_device_ip_block_add(adev, &psp_v3_1_ip_block); > if (!amdgpu_sriov_vf(adev)) > amdgpu_device_ip_block_add(adev, > &pp_smu_ip_block); > + else > + adev->pm.dpm_enabled = false; > if (adev->enable_virtual_display || amdgpu_sriov_vf(adev)) > amdgpu_device_ip_block_add(adev, > &dce_virtual_ip_block); #if defined(CONFIG_DRM_AMD_DC) diff --git > a/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c > b/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c > index 948bb943..87cbb14 100644 > --- a/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c > +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c > @@ -688,7 +688,7 @@ static int uvd_v4_2_set_powergating_state(void > *handle, > > if (state == AMD_PG_STATE_GATE) { > uvd_v4_2_stop(adev); > - if (adev->pg_flags & AMD_PG_SUPPORT_UVD && > amdgpu_dpm == 0) { > + if (adev->pg_flags & AMD_PG_SUPPORT_UVD && !adev- > >pm.dpm_enabled) { > if (!(RREG32_SMC(ixCURRENT_PG_STATUS) & > > CURRENT_PG_STATUS__UVD_PG_STATUS_MASK)) { > WREG32(mmUVD_PGFSM_CONFIG, > (UVD_PGFSM_CONFIG__UVD_PGFSM_FSM_ADDR_MASK | > @@ -699,7 +699,7 @@ static int uvd_v4_2_set_powergating_state(void > *handle, > } > return 0; > } else { > - if (adev->pg_flags & AMD_PG_SUPPORT_UVD && > amdgpu_dpm == 0) { > + if (adev->pg_flags & AMD_PG_SUPPORT_UVD && !adev- > >pm.dpm_enabled) { > if (RREG32_SMC(ixCURRENT_PG_STATUS) & > > CURRENT_PG_STATUS__UVD_PG_STATUS_MASK) { > WREG32(mmUVD_PGFSM_CONFIG, > (UVD_PGFSM_CONFIG__UVD_PGFSM_FSM_ADDR_MASK | > diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c > b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c > index b91ef11..2a40c30 100644 > --- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c > +++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c > @@ -48,7 +48,7 @@ static int amd_powerplay_create(struct amdgpu_device > *adev) > > hwmgr->adev = adev; > hwmgr->not_vf = !amdgpu_sriov_vf(adev); > - hwmgr->pm_en = (amdgpu_dpm && hwmgr->not_vf) ? true : false; > + hwmgr->pm_en = (adev->pm.dpm_enabled && hwmgr->not_vf) ? > true : false; > hwmgr->device = amdgpu_cgs_create_device(adev); > mutex_init(&hwmgr->smu_lock); > hwmgr->chip_family = adev->family; > -- > 1.9.1 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx