Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752234AbdFPQ7C (ORCPT ); Fri, 16 Jun 2017 12:59:02 -0400 Received: from smtp.domeneshop.no ([194.63.252.55]:40273 "EHLO smtp.domeneshop.no" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750837AbdFPQ7A (ORCPT ); Fri, 16 Jun 2017 12:59:00 -0400 Subject: Re: [PATCH] drm: hdlcd: Update PM code to save/restore console. To: Liviu Dudau , Mali DP Maintainers Cc: DRI devel , LKML References: <20170616135333.27796-1-Liviu.Dudau@arm.com> From: =?UTF-8?Q?Noralf_Tr=c3=b8nnes?= Message-ID: Date: Fri, 16 Jun 2017 18:58:36 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 MIME-Version: 1.0 In-Reply-To: <20170616135333.27796-1-Liviu.Dudau@arm.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1703 Lines: 56 Den 16.06.2017 15.53, skrev Liviu Dudau: > Update the PM code to suspend/resume the fbdev_cma console. > > Signed-off-by: Liviu Dudau > --- > drivers/gpu/drm/arm/hdlcd_drv.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c > index d3da87fbd85a..89cd408cde6f 100644 > --- a/drivers/gpu/drm/arm/hdlcd_drv.c > +++ b/drivers/gpu/drm/arm/hdlcd_drv.c > @@ -13,6 +13,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -435,9 +436,15 @@ static int __maybe_unused hdlcd_pm_suspend(struct device *dev) > return 0; > > drm_kms_helper_poll_disable(drm); > + console_lock(); > + drm_fbdev_cma_set_suspend(hdlcd->fbdev, 1); > + console_unlock(); You can use drm_fbdev_cma_set_suspend_unlocked() instead, it takes the lock for you and can speed up resume if the lock is contented. Noralf. > > hdlcd->state = drm_atomic_helper_suspend(drm); > if (IS_ERR(hdlcd->state)) { > + console_lock(); > + drm_fbdev_cma_set_suspend(hdlcd->fbdev, 0); > + console_unlock(); > drm_kms_helper_poll_enable(drm); > return PTR_ERR(hdlcd->state); > } > @@ -454,8 +461,10 @@ static int __maybe_unused hdlcd_pm_resume(struct device *dev) > return 0; > > drm_atomic_helper_resume(drm, hdlcd->state); > + console_lock(); > + drm_fbdev_cma_set_suspend(hdlcd->fbdev, 0); > + console_unlock(); > drm_kms_helper_poll_enable(drm); > - pm_runtime_set_active(dev); > > return 0; > }