[PATCH 2/2] drm/radeon: remove bapm callbacks
Deucher, Alexander
Alexander.Deucher at amd.com
Thu Apr 23 14:41:34 PDT 2015
> -----Original Message-----
> From: Lucas Stach [mailto:dev at lynxeye.de]
> Sent: Thursday, April 23, 2015 5:28 PM
> To: Deucher, Alexander; Koenig, Christian; David Airlie
> Cc: dri-devel at lists.freedesktop.org
> Subject: [PATCH 2/2] drm/radeon: remove bapm callbacks
>
> Trying to disable BAPM on battery power does not fix the problematic
> Trinity mobile parts. Fixing those probably need a more complex solution,
> like doing a complete reinit of the DPM state. This will take more work
> and most likely it will not be possible to map this to a single callback.
>
> Even worse trying to change the BAPM state mid flight is breaking BAPM
> on Richland mobile parts that are otherwise completely stable with BAPM
> enabled.
Do you have any examples of this? This was added to fix bapm stability on mobile parts and did help on a number of systems. Bapm is disabled by default since it is so problematic on a lot of systems. Ripping all of this out doesn't seem like it will really help anything.
Alex
>
> As there are no users of this hook anymore we can just remove the calling
> infrastructure.
>
> Signed-off-by: Lucas Stach <dev at lynxeye.de>
> ---
> I've did some pretty extensive tests with one of the problematic Trinity
> mobile parts. I was able to figure out a stable config with BAPM enabled
> for this, but unfortunately the power consumption rose quite a bit. So on
> Trinity one has to disable BAPM while on battery power. I found a sequence
Can you elaborate on this? This seems to contradict what the patch does.
> to enable/disable BAPM mid flight without hanging the GPU, but the SMC
> seemed to be stuck after that, as no DPM power level changes were
> happening
> anymore.
> ---
> drivers/gpu/drm/radeon/radeon.h | 2 --
> drivers/gpu/drm/radeon/radeon_asic.c | 1 -
> drivers/gpu/drm/radeon/radeon_asic.h | 1 -
> drivers/gpu/drm/radeon/radeon_pm.c | 4 ----
> drivers/gpu/drm/radeon/trinity_dpm.c | 11 -----------
> 5 files changed, 19 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon.h
> b/drivers/gpu/drm/radeon/radeon.h
> index 33d5a4f..93659d2 100644
> --- a/drivers/gpu/drm/radeon/radeon.h
> +++ b/drivers/gpu/drm/radeon/radeon.h
> @@ -1980,7 +1980,6 @@ struct radeon_asic {
> int (*force_performance_level)(struct radeon_device *rdev,
> enum radeon_dpm_forced_level level);
> bool (*vblank_too_short)(struct radeon_device *rdev);
> void (*powergate_uvd)(struct radeon_device *rdev, bool
> gate);
> - void (*enable_bapm)(struct radeon_device *rdev, bool
> enable);
> void (*fan_ctrl_set_mode)(struct radeon_device *rdev, u32
> mode);
> u32 (*fan_ctrl_get_mode)(struct radeon_device *rdev);
> int (*set_fan_speed_percent)(struct radeon_device *rdev,
> u32 speed);
> @@ -2949,7 +2948,6 @@ static inline void radeon_ring_write(struct
> radeon_ring *ring, uint32_t v)
> #define radeon_dpm_force_performance_level(rdev, l) rdev->asic-
> >dpm.force_performance_level((rdev), (l))
> #define radeon_dpm_vblank_too_short(rdev) rdev->asic-
> >dpm.vblank_too_short((rdev))
> #define radeon_dpm_powergate_uvd(rdev, g) rdev->asic-
> >dpm.powergate_uvd((rdev), (g))
> -#define radeon_dpm_enable_bapm(rdev, e) rdev->asic-
> >dpm.enable_bapm((rdev), (e))
>
> /* Common functions */
> /* AGP */
> diff --git a/drivers/gpu/drm/radeon/radeon_asic.c
> b/drivers/gpu/drm/radeon/radeon_asic.c
> index 2a33e38..fa11abc 100644
> --- a/drivers/gpu/drm/radeon/radeon_asic.c
> +++ b/drivers/gpu/drm/radeon/radeon_asic.c
> @@ -1818,7 +1818,6 @@ static struct radeon_asic trinity_asic = {
> .print_power_state = &trinity_dpm_print_power_state,
> .debugfs_print_current_performance_level =
> &trinity_dpm_debugfs_print_current_performance_level,
> .force_performance_level =
> &trinity_dpm_force_performance_level,
> - .enable_bapm = &trinity_dpm_enable_bapm,
> },
> .pflip = {
> .page_flip = &evergreen_page_flip,
> diff --git a/drivers/gpu/drm/radeon/radeon_asic.h
> b/drivers/gpu/drm/radeon/radeon_asic.h
> index 85d76da..605be51 100644
> --- a/drivers/gpu/drm/radeon/radeon_asic.h
> +++ b/drivers/gpu/drm/radeon/radeon_asic.h
> @@ -673,7 +673,6 @@ void
> trinity_dpm_debugfs_print_current_performance_level(struct
> radeon_device *r
> struct seq_file *m);
> int trinity_dpm_force_performance_level(struct radeon_device *rdev,
> enum radeon_dpm_forced_level
> level);
> -void trinity_dpm_enable_bapm(struct radeon_device *rdev, bool enable);
>
> /* DCE6 - SI */
> void dce6_bandwidth_update(struct radeon_device *rdev);
> diff --git a/drivers/gpu/drm/radeon/radeon_pm.c
> b/drivers/gpu/drm/radeon/radeon_pm.c
> index c1ba83a..a78d146 100644
> --- a/drivers/gpu/drm/radeon/radeon_pm.c
> +++ b/drivers/gpu/drm/radeon/radeon_pm.c
> @@ -74,10 +74,6 @@ void radeon_pm_acpi_event_handler(struct
> radeon_device *rdev)
> rdev->pm.dpm.ac_power = true;
> else
> rdev->pm.dpm.ac_power = false;
> - if (rdev->family == CHIP_ARUBA) {
> - if (rdev->asic->dpm.enable_bapm)
> - radeon_dpm_enable_bapm(rdev, rdev-
> >pm.dpm.ac_power);
> - }
> mutex_unlock(&rdev->pm.mutex);
> } else if (rdev->pm.pm_method == PM_METHOD_PROFILE) {
> if (rdev->pm.profile == PM_PROFILE_AUTO) {
> diff --git a/drivers/gpu/drm/radeon/trinity_dpm.c
> b/drivers/gpu/drm/radeon/trinity_dpm.c
> index 38dacb7..e473455 100644
> --- a/drivers/gpu/drm/radeon/trinity_dpm.c
> +++ b/drivers/gpu/drm/radeon/trinity_dpm.c
> @@ -1069,17 +1069,6 @@ static void trinity_update_requested_ps(struct
> radeon_device *rdev,
> pi->requested_rps.ps_priv = &pi->requested_ps;
> }
>
> -void trinity_dpm_enable_bapm(struct radeon_device *rdev, bool enable)
> -{
> - struct trinity_power_info *pi = trinity_get_pi(rdev);
> -
> - if (pi->enable_bapm) {
> - trinity_acquire_mutex(rdev);
> - trinity_dpm_bapm_enable(rdev, enable);
> - trinity_release_mutex(rdev);
> - }
> -}
> -
> int trinity_dpm_enable(struct radeon_device *rdev)
> {
> struct trinity_power_info *pi = trinity_get_pi(rdev);
> --
> 2.1.0
More information about the dri-devel
mailing list