From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH v5] ARM hibernation / suspend-to-disk (fwd)
Date: Thu, 16 Jun 2011 22:31:28 +0100 [thread overview]
Message-ID: <20110616213128.GC32629@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <alpine.DEB.2.00.1106151349520.11405@localhost6.localdomain6>
On Wed, Jun 15, 2011 at 02:35:26PM +0100, Frank Hofmann wrote:
> this change is perfect; with this, the hibernation support code turns
> into the attached.
Should I assume that's an ack for all the patches?
> That's both better and simpler to perform a full suspend/resume cycle
> (via resetting in the cpu_suspend "finisher") after the snapshot image
> has been created, instead of shoehorning a return into this.
It's now not soo difficult to have an error code returned from the
finisher function - the only thing we have to make sure is that
the cpu_do_suspend helper just saves state and does not make any
state changes.
We can then do this, which makes it possible for the finisher to
return, and we propagate its return value. We also ensure that a
path through from cpu_resume will result in a zero return value
from cpu_suspend.
This isn't an invitation for people to make the S2RAM path return
after they time out waiting for suspend to happen - that's potentially
dangerous because in that case the suspend may happen while we're
resuming devices which wouldn't be nice.
diff -u b/arch/arm/kernel/sleep.S b/arch/arm/kernel/sleep.S
--- b/arch/arm/kernel/sleep.S
+++ b/arch/arm/kernel/sleep.S
@@ -12,7 +12,6 @@
* r1 = v:p offset
* r2 = suspend function arg0
* r3 = suspend function
- * Note: does not return until system resumes
*/
ENTRY(cpu_suspend)
stmfd sp!, {r4 - r11, lr}
@@ -26,7 +25,7 @@
#endif
mov r6, sp @ current virtual SP
sub sp, sp, r5 @ allocate CPU state on stack
- mov r0, sp @ save pointer
+ mov r0, sp @ save pointer to CPU save block
add ip, ip, r1 @ convert resume fn to phys
stmfd sp!, {r1, r6, ip} @ save v:p, virt SP, phys resume fn
ldr r5, =sleep_save_sp
@@ -55,10 +54,17 @@
#else
bl __cpuc_flush_kern_all
#endif
+ adr lr, BSYM(cpu_suspend_abort)
ldmfd sp!, {r0, pc} @ call suspend fn
ENDPROC(cpu_suspend)
.ltorg
+cpu_suspend_abort:
+ ldmia sp!, {r1 - r3} @ pop v:p, virt SP, phys resume fn
+ mov sp, r2
+ ldmfd sp!, {r4 - r11, pc}
+ENDPROC(cpu_suspend_abort)
+
/*
* r0 = control register value
* r1 = v:p offset (preserved by cpu_do_resume)
@@ -88,6 +94,7 @@
cpu_resume_after_mmu:
str r5, [r2, r4, lsl #2] @ restore old mapping
mcr p15, 0, r0, c1, c0, 0 @ turn on D-cache
+ mov r0, #0 @ return zero on success
ldmfd sp!, {r4 - r11, pc}
ENDPROC(cpu_resume_after_mmu)
next prev parent reply other threads:[~2011-06-16 21:31 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-13 12:04 [RFC PATCH v5] ARM hibernation / suspend-to-disk (fwd) Frank Hofmann
2011-06-13 12:26 ` Russell King - ARM Linux
2011-06-13 12:40 ` Frank Hofmann
2011-06-13 13:20 ` Frank Hofmann
2011-06-13 13:56 ` Dave Martin
2011-06-13 15:34 ` Frank Hofmann
2011-06-13 16:11 ` Frank Hofmann
2011-06-13 16:44 ` Russell King - ARM Linux
2011-06-15 13:35 ` Frank Hofmann
2011-06-16 21:31 ` Russell King - ARM Linux [this message]
2011-06-20 12:32 ` Frank Hofmann
2011-06-21 14:35 ` Russell King - ARM Linux
2011-06-29 14:52 ` Matthieu CASTET
2011-06-29 15:14 ` Frank Hofmann
2011-06-29 20:08 ` Will Deacon
2011-07-05 12:37 ` Matthieu CASTET
[not found] ` <2C577202CB5719438D4E9608C565CB2C01B69D7F@NL-EXC-07.intra.local>
2011-07-05 17:09 ` Matthieu CASTET
2011-09-30 7:48 ` Barry Song
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=20110616213128.GC32629@n2100.arm.linux.org.uk \
--to=linux@arm.linux.org.uk \
--cc=linux-arm-kernel@lists.infradead.org \
/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;
as well as URLs for NNTP newsgroup(s).