From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dmitry Subject: Re: [PATCH] Fix tosakbd suspend Date: Wed, 2 Apr 2008 01:51:28 +0400 Message-ID: References: <20080331213801.GA9372@doriath.ww600.siemens.net> <20080401034903.GB18041@anvil.corenet.prv> <20080401144224.GA6436@USFSHXP-002051> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: Received: from py-out-1112.google.com ([64.233.166.179]:36707 "EHLO py-out-1112.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756504AbYDAVva (ORCPT ); Tue, 1 Apr 2008 17:51:30 -0400 Received: by py-out-1112.google.com with SMTP id u52so3340087pyb.10 for ; Tue, 01 Apr 2008 14:51:29 -0700 (PDT) In-Reply-To: <20080401144224.GA6436@USFSHXP-002051> Content-Disposition: inline Sender: linux-input-owner@vger.kernel.org List-Id: linux-input@vger.kernel.org To: Dmitry Torokhov Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org Hi, 2008/4/1, Dmitry Torokhov : > On Tue, Apr 01, 2008 at 04:27:38PM +0300, Dmitry wrote: > > Hi, Dmitry, > > > > 2008/4/1, Dmitry Torokhov : > > > Hi Dmitry, > > > > > > > > > On Tue, Apr 01, 2008 at 01:38:01AM +0400, Dmitry Baryshkov wrote: > > > > Signed-off-by: Dmitry Baryshkov > > > > --- > > > > drivers/input/keyboard/tosakbd.c | 3 +++ > > > > 1 files changed, 3 insertions(+), 0 deletions(-) > > > > > > > > diff --git a/drivers/input/keyboard/tosakbd.c b/drivers/input/keyboard/tosakbd.c > > > > index 3884d1e..306cbe8 100644 > > > > --- a/drivers/input/keyboard/tosakbd.c > > > > +++ b/drivers/input/keyboard/tosakbd.c > > > > @@ -210,6 +210,9 @@ static int tosakbd_suspend(struct platform_device *dev, pm_message_t state) > > > > > > > > del_timer_sync(&tosakbd->timer); > > > > > > > > > > > > > What if interrupt comes here? The whole suspend path seems racy with > > > interrup handler/timer. > > > > What is the best way to fix it? Moving from suspend to suspend_late > > seems to be a hack. > > Should I call a bunch of disable_irq or just introduce an atomic flag? > > > > > How about we take the lock in tosakbd_suspend, set flag indicating that the > picece is suspended, do the discharge and then del_timer_sync()? If you change > tosakbd_scankeyboard() to check for suspend flag and exit as soon as it sees it > it should take care of the most of the issues I think. Something like this: This should do the trick. I'll test the patch tomorrow. -- With best wishes Dmitry