Re: [PATCH] Input: serio - re-add thaw (and add freeze)

From: Pavel Machek
Date: Thu Feb 25 2010 - 02:07:47 EST


On Tue 2010-02-16 09:22:33, Dmitry Torokhov wrote:
> On Tue, Feb 16, 2010 at 04:48:30PM +0000, Alan Jenkins wrote:
> > On 2/4/10, Alan Jenkins <alan-jenkins@xxxxxxxxxxxxxx> wrote:
> > > Dmitry Torokhov wrote:
> > >> On Wed, Feb 03, 2010 at 06:59:54PM +0000, Alan Jenkins wrote:
> > >>
> > >>> 633aae2 "Input: i8042 - switch to using dev_pm_ops"
> > >>> removed handling for PMSG_THAW, causing obscure breakage.
> > >>>
> > >>> It can break if you press keys during hibernation,
> > >>> which causes subsequent keypresses to be lost -
> > >>> so you can't cancel s2disk by pressing backspace -
> > >>> and then just before system poweroff you get
> > >>> "psmouse.c: Failed to deactivate mouse".
> > >>>
> > >>> So let's add the thaw handler back.
> > >>>
> > >>> Also set the freeze handler. It looks like PMSG_FREEZE
> > >>> didn't do anything in the past, but I think that must
> > >>> have been an oversight.
> > >>>
> > >>
> > >> We do not need to do anything special at freeze time that is why there
> > >> wasn't freeze handler. And so thaw should be pretty much noop as well.
> >
> > Ok, so I did some more mindless fiddling. It seems that all it needs
> > is to call the interrupt handler at thaw time.
> >
>
> Yep, this makes more sense. If you happen to press the key(s) while
> interrupts are off the keyboard controller becomes "jammed". Your sign
> off please?

Dmitry wants your Signed-off-by: line, to easily apply the patch.

Pavel

> > Regards
> > Alan
> >
> > diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
> > index d84a36e..b54aee7 100644
> > --- a/drivers/input/serio/i8042.c
> > +++ b/drivers/input/serio/i8042.c
> > @@ -1161,9 +1161,17 @@ static int i8042_pm_restore(struct device *dev)
> > return 0;
> > }
> >
> > +static int i8042_pm_thaw(struct device *dev)
> > +{
> > + i8042_interrupt(0, NULL);
> > +
> > + return 0;
> > +}
> > +
> > static const struct dev_pm_ops i8042_pm_ops = {
> > .suspend = i8042_pm_reset,
> > .resume = i8042_pm_restore,
> > + .thaw = i8042_pm_thaw,
> > .poweroff = i8042_pm_reset,
> > .restore = i8042_pm_restore,
> > };
>

--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
--
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/