public inbox for linux-pm@vger.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: David Brownell <david-b@pacbell.net>
Cc: Maxim Levitsky <maximlevitsky@gmail.com>,
	Adrian Bunk <bunk@stusta.de>,
	linux-pm@lists.linux-foundation.org,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	linux-pm@lists.osdl.org,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Tobias Diedrich <ranma+kernel@tdiedrich.de>
Subject: Re: Linux 2.6.21-rc6
Date: Sun, 15 Apr 2007 18:37:39 +0200	[thread overview]
Message-ID: <200704151837.40756.rjw@sisk.pl> (raw)
In-Reply-To: <200704150814.01747.david-b@pacbell.net>

On Sunday, 15 April 2007 17:14, David Brownell wrote:
> On Sunday 15 April 2007 4:16 am, Rafael J. Wysocki wrote:
> > On Sunday, 15 April 2007 10:02, Tobias Diedrich wrote:
> 
> > > > > > Yes, it's a Asus M2N-SLI-Deluxe Mainboard with a Athlon64 3200+
> > > > > > single core CPU.
> 
> And NVidia southbridge, so OHCI not UHCI (plus EHCI) ... one experiment
> would be to disable the EHCI (high speed USB) support in BIOS, to make
> for a simpler hardware configuration, and see if that makes BIOS happier.
> (Or better, just take EHCI out of your Linux config.)  Likewise, taking
> the 8042 drivers out of Linux.
> 
> I wouldn't be surprised if those factors didn't matter, but it'd be good
> to rule them out.

I think the disabling of i8042 support might help.

> > > > With CONFIG_PM_DEBUG=y and CONFIG_DISABLE_CONSOLE_SUSPEND=y I see
> > > > that the second suspend hangs at "i8042 i8042: EARLY resume".
> > > > This is kinda interesting because I'm normally using a USB keyboard
> > > > and sure enough, if I hook up a normal keyboard and disable USB
> > > > legacy support in the BIOS, then suspend to disk works multiple
> > > > times. I'd still rather like to use my USB keyboard though. ;)
> > 
> > Well, I think that when you're using the USB keyboard and the USB legacy
> > support, the i8042 driver thinks it has a keyboard to handle and tries to
> > handle it during the suspend, which fails.  I don't know why it fails during
> > the second suspend, though.
> 
> The "legacy" support in at least some cases involves BIOS having a
> small USB stack -- enough to handle a keyboard or mouse in "boot mode"
> (plus sometimes a USB disk or CDROM) -- and poking the i8042 chip to
> act as if *IT* received the data bytes that really came over USB.

That's what happens here, I think.

> I sure don't know the ins-and-outs of such schemes (ISTR there are
> others), but my guess is that either the 8042 or OHCI got confused,
> at least in conjunction with the lowlevel magic ACPI was doing.

Yes.

> That's all black magic though, as far as I can understand it ...

Well, my theory is the following:

Without the patch, platform_finish() runs before the i8042's .resume() which is
done as though a real keyboard were present, but the ACPI magic is not done
and this confuses the heck out of the controller.  Still, it doesn't go mad at
this point just yet (it probably isn't fully functional either, although we
don't see that, because it's not really used), but next, during the subsequent
suspend, it gets poked while device_power_up() is running and goes belly
up.

> > Dmitry, could you please have a look?
> > 
> > > And I can now confirm that unpatched 2.6.21-rc6 works fine as long
> > > as USB legacy support is disabled (however without legacy support I
> > > can't use the USB keyboard to control grub).
> > 
> > I think using the 'shutdown' mode of suspend would be better.  There's a little
> > point in using 'platform' on desktop systems anyway.
> > 
> > Frankly, I don't know what to do about it.  If we move platform_finish() after
> > device_resume(), some systems may be broken ...
> 
> What I'm curious about is exactly why the patch matters.  What ACPI
> magic is being invoked to confuse, or unconfuse, those controllers?

I think the patch helps, because it makes the ACPI magic be done while the
i8042's .resume() is being executed.

Which makes me think the following patch might help:

 drivers/input/serio/i8042.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Index: linux-2.6.21-rc6/drivers/input/serio/i8042.c
===================================================================
--- linux-2.6.21-rc6.orig/drivers/input/serio/i8042.c	2007-04-07 12:15:19.000000000 +0200
+++ linux-2.6.21-rc6/drivers/input/serio/i8042.c	2007-04-15 18:30:01.000000000 +0200
@@ -846,7 +846,8 @@ static long i8042_panic_blink(long count
 static int i8042_suspend(struct platform_device *dev, pm_message_t state)
 {
 	if (dev->dev.power.power_state.event != state.event) {
-		if (state.event == PM_EVENT_SUSPEND)
+		if (state.event == PM_EVENT_SUSPEND
+		    || state.event == PM_EVENT_PRETHAW)
 			i8042_controller_reset();
 
 		dev->dev.power.power_state = state;

  reply	other threads:[~2007-04-15 16:37 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <Pine.LNX.4.64.0704051944230.6730@woody.linux-foundation.org>
     [not found] ` <20070413212954.GA2545@melchior.yamamaya.is-a-geek.org>
2007-04-13 23:50   ` Linux 2.6.21-rc6 Adrian Bunk
2007-04-14  6:50     ` Tobias Diedrich
2007-04-14  8:16     ` Tobias Diedrich
2007-04-14  9:05       ` Rafael J. Wysocki
2007-04-14 10:32         ` Tobias Diedrich
2007-04-14 12:26       ` Adrian Bunk
2007-04-14 12:09     ` Tobias Diedrich
2007-04-14 12:24       ` Tobias Diedrich
2007-04-14 12:31         ` Tobias Diedrich
2007-04-14 13:00           ` Adrian Bunk
2007-04-14 18:28             ` Rafael J. Wysocki
2007-04-14 19:56               ` Tobias Diedrich
2007-04-14 20:23                 ` Rafael J. Wysocki
2007-04-14 20:25                   ` Adrian Bunk
2007-04-14 20:38                     ` Rafael J. Wysocki
2007-04-14 21:35                   ` Tobias Diedrich
2007-04-14 21:58                     ` Rafael J. Wysocki
2007-04-15  7:38                       ` Tobias Diedrich
2007-04-15  8:02                         ` Tobias Diedrich
2007-04-15 11:16                           ` Rafael J. Wysocki
2007-04-15 14:19                             ` Dmitry Torokhov
2007-04-15 15:52                               ` Rafael J. Wysocki
2007-04-15 18:50                                 ` Tobias Diedrich
2007-04-15 19:37                                   ` Rafael J. Wysocki
2007-04-15 15:14                             ` David Brownell
2007-04-15 16:37                               ` Rafael J. Wysocki [this message]
2007-04-15 17:53                                 ` David Brownell
2007-04-15 19:40                                 ` [linux-pm] " Tobias Diedrich
2007-04-15 19:54                                   ` Rafael J. Wysocki
2007-04-25 17:14                                     ` [linux-pm] " Tobias Diedrich
2007-04-25 19:36                                       ` Rafael J. Wysocki
2007-04-25 20:09                                         ` [linux-pm] " Tobias Diedrich
2007-04-14  0:38 ` [3/3] 2.6.21-rc6: known regressions Adrian Bunk
2007-04-14  1:57   ` Antonino A. Daplas
2007-04-15 16:26     ` Marcus Better
2007-04-15 23:08       ` Antonino A. Daplas
2007-04-16  6:23         ` Marcus Better
2007-04-16  6:45           ` Antonino A. Daplas
2007-04-17  8:17             ` Marcus Better
2007-04-17  9:27               ` Antonino A. Daplas
2007-04-17 11:54                 ` Marcus Better
2007-04-24 15:33               ` Pavel Machek
2007-04-14  7:40   ` Dave Jones
2007-04-15 17:15   ` Jeff Chua

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200704151837.40756.rjw@sisk.pl \
    --to=rjw@sisk.pl \
    --cc=bunk@stusta.de \
    --cc=david-b@pacbell.net \
    --cc=dmitry.torokhov@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=linux-pm@lists.osdl.org \
    --cc=maximlevitsky@gmail.com \
    --cc=ranma+kernel@tdiedrich.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox