public inbox for linux-pm@vger.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Jan Scholz <scholz@fias.uni-frankfurt.de>
Cc: Adrian Bunk <bunk@kernel.org>,
	linux-kernel@vger.kernel.org, Ingo Molnar <mingo@elte.hu>,
	pm list <linux-pm@lists.linux-foundation.org>
Subject: Re: [regression, bisected] adb trackpad disappears after suspend to ram
Date: Wed, 3 Jun 2009 12:02:27 +0200	[thread overview]
Message-ID: <200906031202.28916.rjw@sisk.pl> (raw)
In-Reply-To: <877hzv8txp.fsf@scholz.fias.uni-frankfurt.de>


[-- Attachment #1.1: Type: text/plain, Size: 4309 bytes --]

On Tuesday 02 June 2009, Jan Scholz wrote:
> "Rafael J. Wysocki" <rjw@sisk.pl> writes:
> 
> > On Monday 01 June 2009, Jan Scholz wrote:
> >> "Rafael J. Wysocki" <rjw@sisk.pl> writes:
> >> 
> >> > On Friday 29 May 2009, Jan Scholz wrote:
> >> >> Benjamin Herrenschmidt <benh@kernel.crashing.org> writes:
> >> >> 
> >> >> >> We are too late in the cycle to revert this commit and it really is needed to
> >> >> >> fix a more serious issue.  Nevertheless knowing that it caused the problem to
> >> >> >> appear on your system is also important.
> >> >> >> 
> >> >> >> Ben, do you have an idea what may be going on here?  Does __disable_irq() mask
> >> >> >> the interrupt on this platform?
> >> >> >
> >> >> > I suppose so :-) I'll have to check what's going on, it's not
> >> >> > immediately clear to me.
> >> >> >
> >> >> > Cheers,
> >> >> > Ben.
> >> >> >
> >> >> >> 
> >> >> >> I'd like to see a boot log, preferably containing a suspend-resume in which
> >> >> >> the problem was reproduced.
> >> >> 
> >> >> Here is a log from booting, through several suspend cycles, until the
> >> >> trackpad disappeared. The first few suspends were done while X was
> >> >> running but from the console. As you can tell from lines like
> >> >>    May 28 23:51:26 [kernel] adb devices: [2]: 2 c4 [3]: 3 1 [7]: 7 1f
> >> >> the trackpad was still present. The last suspend was done from within X,
> >> >> here the trackpad did not make it.
> >> >>    May 28 23:58:09 [kernel] adb devices: [2]: 2 c4 [7]: 7 1f
> >> >> However, there have been cases, although not in this log, were the
> >> >> trackpad has been alive even when suspending from within X.
> >> >
> >> > This means the problem is probably timing-related.
> >> >
> >> > Can you please try to comment out suspend_device_irqs() and
> >> > resume_device_irqs()  in drivers/base/power/main.c and see if that changes
> >> > anything?  It's not entirely safe (well, that's why the calls are there after
> >> > all), but hopefully the box won't hang during this test.
> >> >
> >> 
> >> Tried that against v2.6.30-rc7 and it seems to fix the issue. I did ~10
> >> suspend-resume cycles from the console (which worked just like before)
> >> and ~20 cycles from within X and the trackpad is still alive.
> >
> > So, it seems we lose and interrupt during resume and that confuses the
> > ADB controller driver or something like this.  Do you use the keyboard or
> > the trackpad as a wake-up device?
> 
> I do the wakeup by pressing keys on the keyboard. I'd try wakeup via the
> trackpad's button, but I have no idea how to activate that.
> 
> > Please additionally try to go back to the original code, put
> > 'sleepy_trackpad = 1' at the beginning of do_adb_reset_bus() in
> > drivers/macintosh/adb.c and see if the problem is reproducible with that.
> 
> Tried this, but it does not help.
> 
> What I haven't noticed before is, that even if the trackpad already
> disappeared, an additional suspend-resume cycle from the console brought
> it back to life every time. Sometimes this worked from within X as well,
> just not with such a high probability as from the console.
> However, this is independent from 'sleepy_trackpad = 1'. 

OK, the patch is below, but I haven't had the opportunity to test it yet.

Can you please check if it helps, on top of 2.6.30-rc8?

Best,
Rafael

---
 kernel/irq/manage.c |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

Index: linux-2.6/kernel/irq/manage.c
===================================================================
--- linux-2.6.orig/kernel/irq/manage.c
+++ linux-2.6/kernel/irq/manage.c
@@ -187,9 +187,9 @@ static inline int setup_affinity(unsigne
 void __disable_irq(struct irq_desc *desc, unsigned int irq, bool suspend)
 {
 	if (suspend) {
-		if (!desc->action || (desc->action->flags & IRQF_TIMER))
-			return;
-		desc->status |= IRQ_SUSPENDED;
+		if (desc->action && !(desc->action->flags & IRQF_TIMER))
+			desc->status |= IRQ_SUSPENDED | IRQ_DISABLED;
+		return;
 	}
 
 	if (!desc->depth++) {
@@ -250,8 +250,12 @@ EXPORT_SYMBOL(disable_irq);
 
 void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume)
 {
-	if (resume)
+	if (resume) {
 		desc->status &= ~IRQ_SUSPENDED;
+		if (!desc->depth)
+			desc->status &= ~IRQ_DISABLED;
+		return;
+	}
 
 	switch (desc->depth) {
 	case 0:

[-- Attachment #1.2: Type: text/html, Size: 7043 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



  parent reply	other threads:[~2009-06-03 10:02 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <878wkl6vce.fsf@scholz.fias.uni-frankfurt.de>
     [not found] ` <87prdt3bgb.fsf@scholz.fias.uni-frankfurt.de>
2009-05-28 16:58   ` [regression, bisected] adb trackpad disappears after suspend to ram Rafael J. Wysocki
     [not found]   ` <200905281858.37729.rjw@sisk.pl>
2009-05-28 22:23     ` Benjamin Herrenschmidt
     [not found]     ` <1243549422.17903.10.camel@pasglop>
2009-05-28 22:39       ` Jan Scholz
     [not found]       ` <87tz34n97p.fsf@scholz.fias.uni-frankfurt.de>
2009-05-29 18:10         ` Rafael J. Wysocki
     [not found]         ` <200905292010.10615.rjw@sisk.pl>
2009-06-01 13:44           ` Jan Scholz
     [not found]           ` <87fxekxe3w.fsf@scholz.fias.uni-frankfurt.de>
2009-06-01 16:36             ` Rafael J. Wysocki
     [not found]             ` <200906011836.15507.rjw@sisk.pl>
2009-06-01 22:34               ` Jan Scholz
     [not found]               ` <877hzv8txp.fsf@scholz.fias.uni-frankfurt.de>
2009-06-01 22:42                 ` Rafael J. Wysocki
     [not found]                 ` <200906020042.37036.rjw@sisk.pl>
2009-06-01 22:52                   ` Benjamin Herrenschmidt
2009-06-03 10:02                 ` Rafael J. Wysocki [this message]
2009-06-03 12:18                   ` Jan Scholz
     [not found]                   ` <877hzty0hm.fsf@scholz.fias.uni-frankfurt.de>
2009-06-03 20:00                     ` Rafael J. Wysocki
2009-06-03 20:20                       ` Rafael J. Wysocki
2009-06-03 22:17                         ` Jan Scholz
2009-09-23  3:32                       ` Benjamin Herrenschmidt
2009-09-23 13:38                         ` Rafael J. Wysocki
     [not found]                         ` <200909231538.51227.rjw@sisk.pl>
2009-09-23 21:28                           ` Benjamin Herrenschmidt
2009-09-23 23:12                           ` Jan Scholz
     [not found]                           ` <1253741332.7103.324.camel@pasglop>
2009-10-07 17:10                             ` Jan Scholz
2009-10-07 20:18                               ` Rafael J. Wysocki
2009-06-02  4:49               ` Benjamin Herrenschmidt

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=200906031202.28916.rjw@sisk.pl \
    --to=rjw@sisk.pl \
    --cc=bunk@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=mingo@elte.hu \
    --cc=scholz@fias.uni-frankfurt.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