From: Alexander Stein <alexander.stein@systec-electronic.com>
To: Zhang Rui <rui.zhang@intel.com>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
Len Brown <len.brown@intel.com>, Pavel Machek <pavel@ucw.cz>,
linux-pm@vger.kernel.org
Subject: Re: PM freeze does not work on AT91
Date: Tue, 15 Jul 2014 14:08:45 +0200 [thread overview]
Message-ID: <1476229.BGchVCyc41@ws-stein> (raw)
In-Reply-To: <1405424155.28592.43.camel@rzhang1-toshiba>
On Tuesday 15 July 2014 19:35:55, Zhang Rui wrote:
> On Tue, 2014-07-15 at 12:00 +0200, Alexander Stein wrote:
> > On Tuesday 15 July 2014 17:31:22, Zhang Rui wrote:
> > > On Tue, 2014-07-15 at 10:07 +0200, Alexander Stein wrote:
> > > > Hi,
> > > >
> > > > I tried using the PM features in linux on my at91sam9263 custom board. Using 'echo mem > state' and 'echo standby > mem' works in general. But when using 'echo freeze > state' I get the following oops.
> > > >
> > > > sh-3.2:/sys/power# echo freeze > state
> > > > [ 22.559000] PM: Syncing filesystems ... done.
> > > > [ 23.073000] Freezing user space processes ... (elapsed 0.001 seconds) done.
> > > > [ 23.092000] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
> > > > [ 23.101000] Unable to handle kernel NULL pointer dereference at virtual address 00000000
> > > > [ 23.109000] pgd = c283c000
> > > > [ 23.112000] [00000000] *pgd=23384831, *pte=00000000, *ppte=00000000
> > > > [ 23.118000] Internal error: Oops: 17 [#1] PREEMPT ARM
> > > > [ 23.118000] Modules linked in:
> > > > [ 23.118000] CPU: 0 PID: 106 Comm: sh Not tainted 3.16.0-rc5+ #3
> > > > [ 23.118000] task: c3369c00 ti: c33e0000 task.ti: c33e0000
> > > > [ 23.118000] PC is at suspend_devices_and_enter+0x6c/0x32c
> > > > [ 23.118000] LR is at pm_suspend+0x160/0x27c
> > > > [ 23.118000] pc : [<c004111c>] lr : [<c004153c>] psr: 60000013
> > > > [ 23.118000] sp : c33e1eb8 ip : 000008e0 fp : 00000000
> > > > [ 23.118000] r10: c280480c r9 : c2804800 r8 : 00000007
> > > > [ 23.118000] r7 : c05527f8 r6 : 00000001 r5 : 00000001 r4 : c056ca00
> > > > [ 23.118000] r3 : 00000000 r2 : 01ffff3f r1 : 60000013 r0 : 00000001
> > > > [ 23.118000] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
> > > > [ 23.118000] Control: 0005317f Table: 2283c000 DAC: 00000015
> > > > [ 23.118000] Process sh (pid: 106, stack limit = 0xc33e01c0)
> > > > [ 23.118000] Stack: (0xc33e1eb8 to 0xc33e2000)
> > > > [ 23.118000] 1ea0: 00000000 c0391454
> > > > [ 23.118000] 1ec0: c049e549 c33e1edc 60000013 c33e1edc 00000000 c056ca00 00000000 00000001
> > > > [ 23.118000] 1ee0: c05527f8 00000007 c2804800 c004153c c055e2bc c3064000 00000007 c282a0c0
> > > > [ 23.118000] 1f00: c33e1f80 c0040304 c3064000 c282a0c0 c282a0c0 c01abd94 00000007 c00f0e54
> > > > [ 23.118000] 1f20: c00f0e18 00000000 00000000 c00f0050 00000000 00000000 c33c93c0 b6fa6000
> > > > [ 23.118000] 1f40: c33e1f80 00000007 00000007 b6fa6000 00000000 c009a19c c33c93c0 b6fa6000
> > > > [ 23.118000] 1f60: 00000007 00000000 00000000 c33c93c0 c33c93c0 00000007 b6fa6000 c009a70c
> > > > [ 23.118000] 1f80: 00000000 00000000 00000007 00000007 b6fa6000 b6f76b38 00000004 c0009764
> > > > [ 23.118000] 1fa0: c33e0000 c0009600 00000007 b6fa6000 00000001 b6fa6000 00000007 00000000
> > > > [ 23.118000] 1fc0: 00000007 b6fa6000 b6f76b38 00000004 00000007 b6fa6000 00000007 00000000
> > > > [ 23.118000] 1fe0: 00000000 be83ba9c b6eaeadc b6f0317c 60000010 00000001 00000000 00000000
> > > > [ 23.118000] [<c004111c>] (suspend_devices_and_enter) from [<c004153c>] (pm_suspend+0x160/0x27c)
> > > > [ 23.118000] [<c004153c>] (pm_suspend) from [<c0040304>] (state_store+0x40/0x68)
> > > > [ 23.118000] [<c0040304>] (state_store) from [<c01abd94>] (kobj_attr_store+0x14/0x20)
> > > > [ 23.118000] [<c01abd94>] (kobj_attr_store) from [<c00f0e54>] (sysfs_kf_write+0x3c/0x48)
> > > > [ 23.118000] [<c00f0e54>] (sysfs_kf_write) from [<c00f0050>] (kernfs_fop_write+0x100/0x158)
> > > > [ 23.118000] [<c00f0050>] (kernfs_fop_write) from [<c009a19c>] (vfs_write+0xb4/0x188)
> > > > [ 23.118000] [<c009a19c>] (vfs_write) from [<c009a70c>] (SyS_write+0x3c/0x7c)
> > > > [ 23.118000] [<c009a70c>] (SyS_write) from [<c0009600>] (ret_fast_syscall+0x0/0x2c)
> > > > [ 23.118000] Code: eafffff3 1afffff2 e59f32ac e5933008 (e5933000)
> > > > [ 23.358000] ---[ end trace 9206ef60cdd758d9 ]---
> > > >
> > > > The systems hangs here now.
> > >
> > > can you please check if the patch below fixes the problem for you?
> > >
> > > thanks,
> > > rui
> > >
> > > From 0617bbe7890aec961828904659cf207fd817a5cf Mon Sep 17 00:00:00 2001
> > > From: Zhang Rui <rui.zhang@intel.com>
> > > Date: Tue, 15 Jul 2014 17:20:16 +0800
> > > Subject: [PATCH] PM: fix a NULL pointer dereference issue
> > >
> > > This patch fixes a NULL pointer dereference issue introduced by
> > > commit 1f0b63866fc1be700260547be8edf8e6f0af37f2.
> > >
> > > Reference: http://marc.info/?l=linux-pm&m=140541182017443&w=2
> > > Signed-off-by: Zhang Rui <rui.zhang@intel.com>
> > > ---
> > > kernel/power/suspend.c | 4 ++--
> > > 1 file changed, 2 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
> > > index 4dd8822..ed35a47 100644
> > > --- a/kernel/power/suspend.c
> > > +++ b/kernel/power/suspend.c
> > > @@ -306,7 +306,7 @@ int suspend_devices_and_enter(suspend_state_t state)
> > > error = suspend_ops->begin(state);
> > > if (error)
> > > goto Close;
> > > - } else if (state == PM_SUSPEND_FREEZE && freeze_ops->begin) {
> > > + } else if (state == PM_SUSPEND_FREEZE && freeze_ops && freeze_ops->begin) {
> > > error = freeze_ops->begin();
> > > if (error)
> > > goto Close;
> > > @@ -335,7 +335,7 @@ int suspend_devices_and_enter(suspend_state_t state)
> > > Close:
> > > if (need_suspend_ops(state) && suspend_ops->end)
> > > suspend_ops->end();
> > > - else if (state == PM_SUSPEND_FREEZE && freeze_ops->end)
> > > + else if (state == PM_SUSPEND_FREEZE && freeze_ops && freeze_ops->end)
> > > freeze_ops->end();
> > >
> > > return error;
> > >
> >
> > Oh, I forgot to add my testing patch which is the same as yours. Nevertheless I've taken your patch and tried again:
> > $ echo freeze > /sys/power/state
> > [ 20.920000] PM: Syncing filesystems ... done.
> > [ 21.391000] Freezing user space processes ... (elapsed 0.001 seconds) done.
> > [ 21.405000] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
> > [ 21.414000] Suspending console(s) (use no_console_suspend to debug)
> >
> > The baord is freezed now here. It doesn't wakeup by GPIO keys, etc.
> >
> This is another problem. In order to be able to wakeup the system from
> freeze state, you need to set IRQF_NO_SUSPEND for the interrupt used by
> the GPIO keys, something like this patch does
> https://lkml.org/lkml/2014/6/18/784
Thanks for the link. I followed the thread to this patch: https://lkml.org/lkml/2014/7/10/627 which is needed for my board to wakeup from freeze with gpio-keys. You can add:
Tested-by: Alexander Stein <alexander.stein@systec-electronic.com>
Thanks and best regards,
Alexander
next prev parent reply other threads:[~2014-07-15 12:11 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-15 8:07 PM freeze does not work on AT91 Alexander Stein
2014-07-15 9:31 ` Zhang Rui
2014-07-15 10:00 ` Alexander Stein
2014-07-15 11:35 ` Zhang Rui
2014-07-15 11:59 ` Rafael J. Wysocki
2014-07-15 12:08 ` Alexander Stein [this message]
2014-07-15 12:35 ` Rafael J. Wysocki
2014-07-15 12:47 ` Rafael J. Wysocki
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=1476229.BGchVCyc41@ws-stein \
--to=alexander.stein@systec-electronic.com \
--cc=len.brown@intel.com \
--cc=linux-pm@vger.kernel.org \
--cc=pavel@ucw.cz \
--cc=rjw@rjwysocki.net \
--cc=rui.zhang@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox