From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: "Pallipadi, Venkatesh" <venkatesh.pallipadi@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Johannes Stezenbach <js@sig21.net>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"davej@redhat.com" <davej@redhat.com>,
"pavel@ucw.cz" <pavel@ucw.cz>,
"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
"lenb@kernel.org" <lenb@kernel.org>,
"arjan@infradead.org" <arjan@infradead.org>,
"tglx@linutronix.de" <tglx@linutronix.de>,
benh@kernel.crashing.org
Subject: Re: 2.6.30: hibernation/swsusp lockup due to acpi-cpufreq
Date: Tue, 16 Jun 2009 23:39:59 +0200 [thread overview]
Message-ID: <200906162340.00384.rjw@sisk.pl> (raw)
In-Reply-To: <1245187090.4534.7423.camel@localhost.localdomain>
On Tuesday 16 June 2009, Pallipadi, Venkatesh wrote:
> On Tue, 2009-06-16 at 14:09 -0700, Andrew Morton wrote:
> > On Tue, 16 Jun 2009 22:40:39 +0200
> >
> > Johannes Stezenbach <js@sig21.net> wrote:
> > > On Tue, Jun 16, 2009 at 01:25:58PM -0700, Pallipadi, Venkatesh wrote:
> > > > Can you try the patch below (your changes + a warnon). That should
> > > > give the stack trace with successful suspend-resume.
> > > >
> > > > acpi-cpufreq will not directly disable interrupt and call these
> > > > routines. So, it will be interesting to see how we are ending up in
> > > > this state.
> > >
> > > Yes, I actually had the same idea and just did it ;-)
> > > I also found this:
> > > http://lkml.org/lkml/2007/7/17/674
> > >
> > > ------------[ cut here ]------------
> > > WARNING: at kernel/up.c:18 smp_call_function_single+0x45/0x60()
> > > Hardware name: 2373Y4M
> > > Modules linked in: ath5k mac80211 cfg80211 uhci_hcd ehci_hcd
> > > Pid: 4139, comm: bash Not tainted 2.6.30 #8
> > > Call Trace:
> > > [<c011ea0d>] warn_slowpath_common+0x60/0x90
> > > [<c010d86c>] ? do_drv_read+0x0/0x31
> > > [<c011ea4a>] warn_slowpath_null+0xd/0x10
> > > [<c013acc1>] smp_call_function_single+0x45/0x60
> > > [<c010d4e5>] get_cur_val+0x62/0x6c
> > > [<c010d72f>] get_cur_freq_on_cpu+0x35/0x58
> > > [<c03786e9>] cpufreq_suspend+0x76/0xd9
> > > [<c0136c3b>] ? clockevents_notify+0x1e/0x68
> > > [<c02ff570>] sysdev_suspend+0x4e/0x182
> > > [<c013fd28>] hibernation_snapshot+0x89/0x16b
> > > [<c013fe99>] hibernate+0x8f/0x147
> > > [<c013ec82>] ? state_store+0x0/0xa2
> > > [<c013ecd7>] state_store+0x55/0xa2
> > > [<c013ec82>] ? state_store+0x0/0xa2
> > > [<c024dff5>] kobj_attr_store+0x1a/0x22
> > > [<c01a7164>] sysfs_write_file+0xb4/0xdf
> > > [<c01a70b0>] ? sysfs_write_file+0x0/0xdf
> > > [<c0170cf2>] vfs_write+0x8a/0x12c
> > > [<c0170e2d>] sys_write+0x3b/0x60
> > > [<c01028f4>] sysenter_do_call+0x12/0x26
> > > ---[ end trace 1c2172bce3982a59 ]---
> >
> > Right, so it's the suspend-must-disable-local-interrupts thing. Again.
> > create_image()'s local_irq_disable().
> >
> > It was wrong to call work_on_cpu() with lcoal interrupts disabled, and
> > it's now wrong to call smp_call_function_single() with local interrupts
> > disabled. It's just that smp_call_function_single() warns while
> > work_on_cpu() didn't.
> >
> > That all explains the warning But afaik we still don't know why your
> > machine actually failed. Perhaps it is a side-efect of emitting the
> > warning when the console is in a weird state?
> >
> > So.. what to do? Possibly we could hack cpufreq to not use
> > smp_call_function_single() if the call is to be done on the local CPU.
> > But SMP might still be broken - if it really does want to do a cross-cpu
> > call.
>
> We surely do not need cross CPU cal at this point as all secondary cpus
> will be offline at this point.
>
> > Why does cpufreq need to do a cross-CPU get_cur_freq_on_cpu() call at
> > suspend time _anyway_? Surely cpufreq knows the target CPU's frequency
> > from its internal in-main-memory state?
>
> That was what I was wondering as well. Looks like this part of
> cpufreq_suspend came from
>
> commit 42d4dc3f4e1ec1396371aac89d0dccfdd977191b
> Author: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Date: Fri Apr 29 07:40:12 2005 -0700
>
> [PATCH] Add suspend method to cpufreq core
>
> In order to properly fix some issues with cpufreq vs. sleep on
> PowerBooks, I had to add a suspend callback to the pmac_cpufreq
> driver.
> I must force a switch to full speed before sleep and I switch back
> to
> previous speed on resume.
>
> I also added a driver flag to disable the warnings in suspend/resume
> since it is expected in this case to have different speed (and I
> want it
> to fixup the jiffies properly).
>
> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Signed-off-by: Andrew Morton <akpm@osdl.org>
> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
>
>
>
> benh: Do you think we still need this cpufreq_driver->get() and return
> error on (!cur_freq || !cpu_policy->cur) stuff?
> May be we should all the checks only if CPUFREQ_PM_NO_WARN is set?
In fact, we need to do this entire thing differently.
The basic problem is that cpufreq_suspend() is a sysdev thing, so it will
always be called with iterrupts off and *only* for CPU0. So, it looks like
the majority of things we do there is just unnecessary (at least).
Best,
Rafael
next prev parent reply other threads:[~2009-06-16 21:39 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-15 23:27 2.6.30: hibernation/swsusp lockup due to acpi-cpufreq Johannes Stezenbach
2009-06-16 0:16 ` Rafael J. Wysocki
2009-06-16 14:22 ` Johannes Stezenbach
2009-06-16 18:55 ` Andrew Morton
2009-06-16 19:57 ` Johannes Stezenbach
2009-06-16 20:25 ` Pallipadi, Venkatesh
2009-06-16 20:40 ` Johannes Stezenbach
2009-06-16 21:09 ` Andrew Morton
2009-06-16 21:18 ` Pallipadi, Venkatesh
2009-06-16 21:39 ` Rafael J. Wysocki [this message]
2009-06-16 22:44 ` Johannes Stezenbach
2009-06-16 20:44 ` Johannes Stezenbach
-- strict thread matches above, loose matches on Subject: below --
2009-07-04 2:32 mfwitten
[not found] <cNtMS-6Iq-11@gated-at.bofh.it>
[not found] ` <cNuzd-7VN-3@gated-at.bofh.it>
[not found] ` <cNHPT-3kB-1@gated-at.bofh.it>
[not found] ` <cNM3f-1ty-29@gated-at.bofh.it>
[not found] ` <cNMZg-2ZR-17@gated-at.bofh.it>
[not found] ` <cNNsg-3U5-3@gated-at.bofh.it>
[not found] ` <cNNLx-4kf-5@gated-at.bofh.it>
[not found] ` <cNOeG-5cB-23@gated-at.bofh.it>
[not found] ` <cNOok-5pJ-11@gated-at.bofh.it>
[not found] ` <cNOy0-5C5-23@gated-at.bofh.it>
2009-07-04 18:09 ` Michael Witten
2009-07-04 21:29 ` Rafael J. Wysocki
2009-07-06 21:20 ` Pallipadi, Venkatesh
2009-07-06 21:39 ` Rafael J. Wysocki
2009-07-06 22:16 ` Pallipadi, Venkatesh
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=200906162340.00384.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=akpm@linux-foundation.org \
--cc=arjan@infradead.org \
--cc=benh@kernel.crashing.org \
--cc=davej@redhat.com \
--cc=js@sig21.net \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pavel@ucw.cz \
--cc=tglx@linutronix.de \
--cc=venkatesh.pallipadi@intel.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.