RE: [added to the 4.1 stable tree] drm/radeon: disable runtime pm on PX laptops without dGPU power control

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----Original Message-----
> From: Sasha Levin [mailto:sasha.levin@xxxxxxxxxx]
> Sent: Sunday, April 17, 2016 5:52 AM
> To: stable@xxxxxxxxxxxxxxx; stable-commits@xxxxxxxxxxxxxxx
> Cc: Deucher, Alexander; Sasha Levin
> Subject: [added to the 4.1 stable tree] drm/radeon: disable runtime pm on
> PX laptops without dGPU power control
> 
> From: Alex Deucher <alexander.deucher@xxxxxxx>
> 
> This patch has been added to the 4.1 stable tree. If you have any
> objections, please let us know.
> 
> ===============
> 
> [ Upstream commit e64c952efb8e0c15ae82cec8e455ab4910690ef1 ]
> 
> Some PX laptops don't provide an ACPI method to control dGPU power.  On
> those systems, the driver is responsible for handling the dGPU power
> state.  Disable runtime PM on them until support for this is implemented.
> 
> Reviewed-by: Michel Dänzer <michel.daenzer@xxxxxxx>
> Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Sasha Levin <sasha.levin@xxxxxxxxxx>

Please do not apply this.  there have been regressions reported.

Thanks,

Alex

> ---
>  drivers/gpu/drm/radeon/radeon_atpx_handler.c | 8 ++++----
>  drivers/gpu/drm/radeon/radeon_device.c       | 8 +++++++-
>  2 files changed, 11 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/radeon/radeon_atpx_handler.c
> b/drivers/gpu/drm/radeon/radeon_atpx_handler.c
> index 8bc7d0b..1523cf9 100644
> --- a/drivers/gpu/drm/radeon/radeon_atpx_handler.c
> +++ b/drivers/gpu/drm/radeon/radeon_atpx_handler.c
> @@ -62,6 +62,10 @@ bool radeon_has_atpx(void) {
>  	return radeon_atpx_priv.atpx_detected;
>  }
> 
> +bool radeon_has_atpx_dgpu_power_cntl(void) {
> +	return radeon_atpx_priv.atpx.functions.power_cntl;
> +}
> +
>  /**
>   * radeon_atpx_call - call an ATPX method
>   *
> @@ -141,10 +145,6 @@ static void radeon_atpx_parse_functions(struct
> radeon_atpx_functions *f, u32 mas
>   */
>  static int radeon_atpx_validate(struct radeon_atpx *atpx)
>  {
> -	/* make sure required functions are enabled */
> -	/* dGPU power control is required */
> -	atpx->functions.power_cntl = true;
> -
>  	if (atpx->functions.px_params) {
>  		union acpi_object *info;
>  		struct atpx_px_params output;
> diff --git a/drivers/gpu/drm/radeon/radeon_device.c
> b/drivers/gpu/drm/radeon/radeon_device.c
> index 604c44d..9cbdd8a 100644
> --- a/drivers/gpu/drm/radeon/radeon_device.c
> +++ b/drivers/gpu/drm/radeon/radeon_device.c
> @@ -103,6 +103,12 @@ static const char radeon_family_name[][16] = {
>  	"LAST",
>  };
> 
> +#if defined(CONFIG_VGA_SWITCHEROO)
> +bool radeon_has_atpx_dgpu_power_cntl(void);
> +#else
> +static inline bool radeon_has_atpx_dgpu_power_cntl(void) { return false; }
> +#endif
> +
>  #define RADEON_PX_QUIRK_DISABLE_PX  (1 << 0)
>  #define RADEON_PX_QUIRK_LONG_WAKEUP (1 << 1)
> 
> @@ -1427,7 +1433,7 @@ int radeon_device_init(struct radeon_device
> *rdev,
>  	 * ignore it */
>  	vga_client_register(rdev->pdev, rdev, NULL,
> radeon_vga_set_decode);
> 
> -	if (rdev->flags & RADEON_IS_PX)
> +	if ((rdev->flags & RADEON_IS_PX) &&
> radeon_has_atpx_dgpu_power_cntl())
>  		runtime = true;
>  	vga_switcheroo_register_client(rdev->pdev,
> &radeon_switcheroo_ops, runtime);
>  	if (runtime)
> --
> 2.5.0

��.n��������+%������w��{.n�����������ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]