Re: [PATCH] Fix tosakbd suspend

From: Dmitry
Date: Tue Apr 01 2008 - 17:51:40 EST


Hi,

2008/4/1, Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>:
> On Tue, Apr 01, 2008 at 04:27:38PM +0300, Dmitry wrote:
> > Hi, Dmitry,
> >
> > 2008/4/1, Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>:
> > > Hi Dmitry,
> > >
> > >
> > > On Tue, Apr 01, 2008 at 01:38:01AM +0400, Dmitry Baryshkov wrote:
> > > > Signed-off-by: Dmitry Baryshkov <dbaryshkov@xxxxxxxxx>
> > > > ---
> > > > 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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/