From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757041AbcBWIqP (ORCPT ); Tue, 23 Feb 2016 03:46:15 -0500 Received: from mout.gmx.net ([212.227.15.18]:53508 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755098AbcBWIqN (ORCPT ); Tue, 23 Feb 2016 03:46:13 -0500 Subject: Re: [PATCH] Input: pwm-beeper - defer pwm config if pwm can sleep To: Dmitry Torokhov References: <56C4735E.6020300@gmx.at> <20160222194639.GD26177@dtor-ws> Cc: Manfred Schlaegl , Luis de Bethencourt , Olivier Sobrie , linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman From: Manfred Schlaegl X-Enigmail-Draft-Status: N1110 Message-ID: <56CC1C4A.7010509@gmx.at> Date: Tue, 23 Feb 2016 09:46:02 +0100 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:38.0) Gecko/20100101 Icedove/38.5.0 MIME-Version: 1.0 In-Reply-To: <20160222194639.GD26177@dtor-ws> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:V0RLIe/JASvQcLGSfw8k8g+pTnmsx4Iyhnv9kACGXFNWA4Nwvqh SHnJ4lK04jCATDoeA4xVs0WJWfR4T+bsj2XreOQgEEXXBBwJgmiso3S21HwcmxqJDHUJ6bx qYfUHdpJ3AnexJcH95ZTBciHpffCZkumxof59zW315ECWWVs2ns7aNcLrhQlgpnL+h6aSo6 j2GVW6yo8hnvQESMMTUhA== X-UI-Out-Filterresults: notjunk:1;V01:K0:D+1RMhLYMq8=:5zZbUfFJvN3XbppBM26LJ+ 1HYRrkMCE9uoFxUATQPPWLzPmeRm5pgdl5cd4bto2s6pv9nytxTrZJ7FvOMu09PbAd4lt+uBc FSBqxTjRj17F3LdjA+qI1TD44AXQJUKtEQz/s2CsvKD3f4GupUg3miftI5nDwiL2ENHy6VGyX zipVonWI71oqvHyYcswhudbFsYR2m/RXpDuEwv2zvuf+cCJVW9nNKPs4c0OBonHTxWRPvc4ec 3tzEVQ95pNkpzZ2Ff7N6wGcPeb93OgdUmk18plCCMSY7ld6e5Y4J61/mX5zRdkSm+YtLuTwkT sXsgvz6zxx9x+CNwZwjRpG95CeeJ5Nb1W2LgnuDN47u1Yj4tId2oi8IzJ+4bfIcAkA9hbJFJS LXKa5Y6daAZl1r2YvcRiDq9oepyDwAm5pS6KIhwaDSyIpXwhhoR+LQQJHtc+rgn8zq+r1SNVr PPKSPlAcx3fbu7g5rmrkzhxK5DkGetD4+NyMP4DxYrhPvcjSV1GJXx+hlZZsYyuTdN8CHFO+g Gh2Imdsjrra5GyyTd1xsG7YMs8BEDkszINl/35sDFEWn1y7C+i4dkhWgiUI2bJ9DRuScNixLx w08fw2cqhFgChE1iBMyuUe/VuBiD8TOiDj41/thhKT1r9p84CdoEp0PDH0Z+l7GsMxDe4sMCS eLXNIBMh9E4/d0ss6OWo+H33epTFqcVekLO8vq20rcbm2EBET+AM54MFfw/yAqJ+tnOpzdzwk uDTJj7ShljIltGnKR4RvNiAb9g5J2H+eKZjfrkpZu1oVcwCmRdYg9ttgdZMSDMEniSSjqtZ3e pf7zrHc Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2016-02-22 20:46, Dmitry Torokhov wrote: > On Wed, Feb 17, 2016 at 02:19:26PM +0100, Manfred Schlaegl wrote: >> If the pwm can sleep defer actions to it using a worker. >> A similar approach was used in leds-pwm (c971ff185) >> >> Trigger: >> On a Freescale i.MX53 based board we ran into "BUG: scheduling while >> atomic" because input_inject_event locks interrupts, but >> imx_pwm_config_v2 sleeps. >> >> Tested on Freescale i.MX53 SoC with 4.5-rc1 and 4.1. >> >> Unmodified applicable to >> * 4.5-rc4 >> * 4.4.1 (stable) >> * 4.3.5 (stable) >> * 4.1.18 (longterm) >> >> Modified applicable to >> * 3.18.27 (longterm) >> >> Signed-off-by: Manfred Schlaegl >> --- >> drivers/input/misc/pwm-beeper.c | 62 +++++++++++++++++++++++++++++------------ >> 1 file changed, 44 insertions(+), 18 deletions(-) >> >> diff --git a/drivers/input/misc/pwm-beeper.c b/drivers/input/misc/pwm-beeper.c >> index f2261ab..c160b5e 100644 >> --- a/drivers/input/misc/pwm-beeper.c >> +++ b/drivers/input/misc/pwm-beeper.c >> @@ -20,21 +20,42 @@ >> #include >> #include >> #include >> +#include >> >> struct pwm_beeper { >> struct input_dev *input; >> struct pwm_device *pwm; >> + struct work_struct work; >> unsigned long period; >> + bool can_sleep; > > I wonder if it is not better to always schedule work, regardless of > whether PWM may sleep or not. > > Thanks. > In my opinion there is no real strong argument to do it this or that way. I decided to do it this way because of following weaker arguments: 1. If pwm can not sleep the behavior stays exactly the same as before 2. The introduced conditions do not really add much complexity to the code 3. It was successfully done the same way in leds-pwm Best regards, Manfred