From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yakir Yang Subject: Re: [PATCH v4 2/4] drm/rockchip: add an common abstracted PSR driver Date: Sun, 24 Jul 2016 15:08:50 +0800 Message-ID: <57946982.7050209@rock-chips.com> References: <1468469704-12440-1-git-send-email-ykk@rock-chips.com> <1468469749-12636-1-git-send-email-ykk@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Sender: linux-samsung-soc-owner@vger.kernel.org To: Doug Anderson Cc: Mark Yao , Inki Dae , Jingoo Han , Heiko Stuebner , Javier Martinez Canillas , =?UTF-8?Q?St=c3=a9phane_Marchesin?= , Sean Paul , Tomasz Figa , David Airlie , Daniel Vetter , Thierry Reding , Krzysztof Kozlowski , Emil Velikov , Dan Carpenter , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , linux-samsung-soc , "open list:ARM/Rockchip SoC..." List-Id: linux-rockchip.vger.kernel.org Doug, On 07/23/2016 12:04 PM, Doug Anderson wrote: > Yakir, > > On Wed, Jul 13, 2016 at 9:15 PM, Yakir Yang wrote: >> +static void psr_set_state(struct psr_drv *psr, enum psr_state state) >> +{ >> + mutex_lock(&psr->state_mutex); >> + >> + if (psr->state == state) { >> + mutex_unlock(&psr->state_mutex); >> + return; >> + } >> + >> + psr->state = state; >> + switch (state) { >> + case PSR_ENABLE: >> + psr->set(psr->encoder, true); >> + break; >> + >> + case PSR_DISABLE: >> + case PSR_FLUSH: >> + psr->set(psr->encoder, false); >> + break; >> + }; >> + >> + mutex_unlock(&psr->state_mutex); >> +} >> + >> +static void psr_flush_handler(unsigned long data) >> +{ >> + struct psr_drv *psr = (struct psr_drv *)data; >> + >> + if (!psr || psr->state != PSR_FLUSH) >> + return; >> + >> + psr_set_state(psr, PSR_ENABLE); > As mentioned in a separate thread, this is probably not OK. > psr_set_state() grabs a mutex and that might sleep. ...but > psr_flush_handler() is a timer. I'm nearly certain that timers can't > sleep. > > I believe this is the source of "sleeping function called from invalid > context" that I've seen at times. Thanks for your reported, i have wrote a patch[0] to fix this problem in my v5. If you're happy to review, that would be great ;) [0]: https://patchwork.kernel.org/patch/9244805/ - Yakir > > -Doug > > >