From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932922AbcE0JMV (ORCPT ); Fri, 27 May 2016 05:12:21 -0400 Received: from mout.gmx.net ([212.227.15.19]:64452 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932654AbcE0JMS (ORCPT ); Fri, 27 May 2016 05:12:18 -0400 Subject: Re: [PATCH] Input: pwm-beeper - fix: scheduling while atomic To: Dmitry Torokhov References: <56C4735E.6020300@gmx.at> <20160222194639.GD26177@dtor-ws> <20160512121852.GB26824@ulmo.ba.sec> <5735F4E3.20008@gmx.at> <573C8761.9070601@gmx.at> <20160520165918.GE14951@dtor-ws> <574411B5.2010407@gmx.at> <20160526003615.GE22369@dtor-ws> <57480B5C.7080409@gmx.at> Cc: Thierry Reding , 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: <57480F45.7070106@gmx.at> Date: Fri, 27 May 2016 11:11:33 +0200 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:38.0) Gecko/20100101 Icedove/38.8.0 MIME-Version: 1.0 In-Reply-To: <57480B5C.7080409@gmx.at> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:50VyrXjwn5OusRf44jjzKv11QteUd0jCuT36TjS7CyG3c4Ba93i Im/nNvH9iHrjfA/D3JYdqXN4Hp1S5q/SO6Ur6EAndyGs9tdhNtj1qVtEGXnNR34VQ79nQMu hAcM/2sigSI8Te7crS3f2Al/NeWgkpOEKL9DfzGVelfcBxZfntl/2FK1KHP9tC6bFbzRK+1 tChm1wpyfHHEYupLZvS1A== X-UI-Out-Filterresults: notjunk:1;V01:K0:PQvYcNvMmtE=:G120LvrAeUM92MviaJhE9p 628VZeF8FDBPgZJCQG0ywSTfM94eJtAVA24ycw++eByoiZPNwECBpzF6+7v+xRdCqXkHLHtan kQtGf2iYsr9+A15ZCqrSJf9scOtZPJoSD18TVKkUJoObkZBahpmVK+uzxotWBhfDibevckLTb 9muYaN2h3T479YrZ2mypyeS5JwcQ8MJMFt60it2NcoUSkAz7t3f0g2W+fRqv6LyFwflEN7RDF NQLgcwlTnkLEklLCQK/HV1h8LAubQfCOU4f8sGtUAwhr1yelUIAlwZxOou4eGryjs6b7kvQBf mPscVeEK2pbW70nxELH8Wjse+632m/PBB7nwHxyhVdzXc1cwi1egzXzXEGmwp6kt5FOI2AlPk DxcraCNlxNp+CWm0xXa2nVJhn2fqN4iwwl3y5G3TUdc/cyWWAiw0c5mXLu3NM5cD8yE22GgYQ cfDCYtEPe8i9ZU99o3k5XAb0mVZ7Di/a9E+JJnYXFWg9R1pmN+3IBDsWZqLeSRDnH+owVXblR Aqp7cqoErpO9dUDveBktKLelUkX/P2CMkzjwVufewo1R49oluLhgS9ou9BoCgcakUtJ48DNk1 nk6OD+oVnz2mVBSpEt/Ii0S+bn0s7koaEG3/VH9Dj4g5kNLzdvZK2xRcagBhI3GQZuPwEtRCO 1sXjOGrLpOEUpqcU1qcW+N1cGPWrvBOk5ZZjbu/CH9rqNbbJBGyj7Zoxue+pDcqIL0+8EF6Gt P/cGNXpQadDoRB5Xb8rn2JdhyDWhwyV4iRCzJQ83mVqrHZuIP1HPYH2xG6tgF3Bh9ScERDj2h nLTTfdu Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2016-05-27 10:54, Manfred Schlaegl wrote: > > Ok. Thanks for clarification. > I will send a patch with the modifications you suggested before. > > The following patch will also have some slight modifications in line numbers to make it apply after > cfae56f18 (input: misc: pwm-beeper: Explicitly apply PWM config extracted from pwm_args). > > best regards, > Manfred > While testing the patch I found another problem. calling pwm_config(beeper->pwm, period / 2, period) with periode=0 leads to [ 199.964836] Division by zero in kernel. [ 199.964875] CPU: 0 PID: 277 Comm: kworker/0:1 Not tainted 4.6.0-general-1-11011-g928f0cf #24 [ 199.964887] Hardware name: Freescale i.MX53 (Device Tree Support) [ 199.964925] Workqueue: events pwm_beeper_work [ 199.964937] Backtrace: [ 199.964970] [] (dump_backtrace) from [] (show_stack+0x18/0x1c) [ 199.964980] r6:00000000 r5:ce9fed9c r4:00000000 r3:00000000 [ 199.965018] [] (show_stack) from [] (dump_stack+0x20/0x28) [ 199.965037] [] (dump_stack) from [] (__div0+0x18/0x20) [ 199.965053] [] (__div0) from [] (Ldiv0+0x8/0x14) [ 199.965080] [] (imx_pwm_config_v2) from [] (imx_pwm_config+0x68/0x88) [ 199.965088] r9:00000000 r8:ceabf2c0 r7:00000000 r6:00000000 r5:ceabf440 r4:ce9fed9c [ 199.965121] [] (imx_pwm_config) from [] (pwm_apply_state+0xfc/0x188) [ 199.965129] r9:00000000 r8:cedd9a00 r7:00000000 r6:ceabf2e0 r5:ce9f7ec0 r4:ceabf2c0 [ 199.965164] [] (pwm_apply_state) from [] (__pwm_beeper_set+0x60/0xd8) [ 199.965172] r7:00000000 r6:ceabf2c0 r5:00000000 r4:cea92e80 [ 199.965200] [] (__pwm_beeper_set) from [] (pwm_beeper_work+0x14/0x18) [ 199.965209] r7:ce9da998 r6:c0908a80 r5:cea92e88 r4:ce9da980 [ 199.965240] [] (pwm_beeper_work) from [] (process_one_work+0x1f4/0x334) [ 199.965255] [] (process_one_work) from [] (worker_thread+0x330/0x4ac) [ 199.965264] r10:00000000 r9:00000008 r8:c0908a94 r7:ce9da998 r6:c0908a80 r5:c0908a80 [ 199.965289] r4:ce9da980 [ 199.965311] [] (worker_thread) from [] (kthread+0xe4/0xf8) [ 199.965319] r10:00000000 r9:00000000 r8:00000000 r7:c0131a94 r6:ce9da980 r5:00000000 [ 199.965342] r4:cea7d900 r3:ce9f6000 [ 199.965364] [] (kthread) from [] (ret_from_fork+0x14/0x3c) [ 199.965372] r7:00000000 r6:00000000 r5:c0136224 r4:cea7d900 I modified the patch, so that pwm_config is called only with periode >0 - pwm_config(beeper->pwm, period / 2, period); - - if (period == 0) - pwm_disable(beeper->pwm); - else + if (period) { + pwm_config(beeper->pwm, period / 2, period); pwm_enable(beeper->pwm); + } else + pwm_disable(beeper->pwm); I will send the corrected patch shortly. Best regards, Manfred