public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Russell King <rmk+lkml@arm.linux.org.uk>
To: Richard Purdie <rpurdie@rpsys.net>
Cc: LKML <linux-kernel@vger.kernel.org>, Andrew Morton <akpm@osdl.org>
Subject: Re: 2.6.12-rc6-mm1
Date: Sun, 19 Jun 2005 10:02:26 +0100	[thread overview]
Message-ID: <20050619100226.A6499@flint.arm.linux.org.uk> (raw)
In-Reply-To: <1119144048.7675.101.camel@localhost.localdomain>; from rpurdie@rpsys.net on Sun, Jun 19, 2005 at 02:20:48AM +0100

On Sun, Jun 19, 2005 at 02:20:48AM +0100, Richard Purdie wrote:
> On Sun, 2005-06-19 at 00:18 +0100, Russell King wrote: 
> > Thinking about what's probably happening, I suspect all the ARM suspend
> > and resume code needs to be reworked to save more state.  I'll try to
> > cook up a patch tomorrow to fix it, but I'll need you to provide
> > feedback.
> 
> Ok, thanks. I'm happy to test any fixes/patches.

This should resolve the problem - we now rely on the stack pointer for
each CPU mode to remain constant throughout the running time of the
kernel, which includes across suspend/resume cycles.

--- a/arch/arm/mach-pxa/sleep.S
+++ b/arch/arm/mach-pxa/sleep.S
@@ -38,6 +38,16 @@ ENTRY(pxa_cpu_suspend)
 #endif
 	stmfd	sp!, {r2 - r12, lr}		@ save registers on stack
 
+	@ preserve IRQ, abort and undefined mode stack pointers
+	msr	cpsr_c, #PSR_F_BIT | PSR_I_BIT | IRQ_MODE
+	mov	r4, sp
+	msr	cpsr_c, #PSR_F_BIT | PSR_I_BIT | ABT_MODE
+	mov	r5, sp
+	msr	cpsr_c, #PSR_F_BIT | PSR_I_BIT | UND_MODE
+	mov	r6, sp
+	msr	cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE
+	stmfd	sp!, {r4 - r6}
+
 	@ get coprocessor registers
 	mrc	p14, 0, r3, c6, c0, 0		@ clock configuration, for turbo mode
 	mrc	p15, 0, r4, c15, c1, 0		@ CP access reg
@@ -229,6 +239,17 @@ resume_after_mmu:
 #ifdef CONFIG_XSCALE_CACHE_ERRATA
 	bl	cpu_xscale_proc_init
 #endif
+
+	@ restore IRQ, abort and undefined mode stack pointers
+	ldmfd	sp!, {r4 - r6}
+	msr	cpsr_c, #PSR_F_BIT | PSR_I_BIT | IRQ_MODE
+	mov	sp, r4
+	msr	cpsr_c, #PSR_F_BIT | PSR_I_BIT | ABT_MODE
+	mov	sp, r5
+	msr	cpsr_c, #PSR_F_BIT | PSR_I_BIT | UND_MODE
+	mov	sp, r6
+	msr	cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE
+
 	ldmfd	sp!, {r2, r3}
 #ifndef CONFIG_IWMMXT
 	mar	acc0, r2, r3
--- a/arch/arm/mach-sa1100/sleep.S
+++ b/arch/arm/mach-sa1100/sleep.S
@@ -37,6 +37,16 @@ ENTRY(sa1100_cpu_suspend)
 
 	stmfd	sp!, {r4 - r12, lr}		@ save registers on stack
 
+	@ preserve IRQ, abort and undefined mode stack pointers
+	msr	cpsr_c, #PSR_F_BIT | PSR_I_BIT | IRQ_MODE
+	mov	r4, sp
+	msr	cpsr_c, #PSR_F_BIT | PSR_I_BIT | ABT_MODE
+	mov	r5, sp
+	msr	cpsr_c, #PSR_F_BIT | PSR_I_BIT | UND_MODE
+	mov	r6, sp
+	msr	cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE
+	stmfd	sp!, {r4 - r6}
+
 	@ get coprocessor registers
 	mrc 	p15, 0, r4, c3, c0, 0		@ domain ID
 	mrc 	p15, 0, r5, c2, c0, 0		@ translation table base addr
@@ -210,6 +220,17 @@ sleep_save_sp:
 	.text
 resume_after_mmu:
 	mcr     p15, 0, r1, c15, c1, 2		@ enable clock switching
+
+	@ restore IRQ, abort and undefined mode stack pointers
+	ldmfd	sp!, {r4 - r6}
+	msr	cpsr_c, #PSR_F_BIT | PSR_I_BIT | IRQ_MODE
+	mov	sp, r4
+	msr	cpsr_c, #PSR_F_BIT | PSR_I_BIT | ABT_MODE
+	mov	sp, r5
+	msr	cpsr_c, #PSR_F_BIT | PSR_I_BIT | UND_MODE
+	mov	sp, r6
+	msr	cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE
+
 	ldmfd	sp!, {r4 - r12, pc}		@ return to caller
 
 
> > Please note that you may see other ARM breakage over the next month
> > or so - I'm going to be concentrating on merging ARM SMP support,
> > and whatever bashing other people like yourself can give the kernel
> > will help ensure that problems are picked up quickly.
> 
> In order to assist with that, can you publish these patches somewhere?
> That way, I can apply them against a known good Zaurus kernel tree and
> know straight away if they break anything (diff/patch format would be
> preferable as my Zaurus trees are all patch based).

I'll see what I can do, but I'm going to be working fairly rapidly on
merging this, so expect roughly a patch each day.  Hopefully though,
the later patches will only affect the Integrator platform.

-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:  2.6 Serial core

  reply	other threads:[~2005-06-19  9:02 UTC|newest]

Thread overview: 101+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-06-07 11:29 2.6.12-rc6-mm1 Andrew Morton
2005-06-07 14:24 ` 2.6.12-rc6-mm1 Wolfgang Wander
2005-06-07 14:49   ` 2.6.12-rc6-mm1 Wolfgang Wander
2005-06-07 14:48 ` 2.6.12-rc6-mm1 Brice Goglin
2005-06-07 20:59 ` 2.6.12-rc6-mm1: rio confusion Adrian Bunk
2005-06-07 21:38   ` Matt Porter
2005-06-07 23:15 ` 2.6.12-rc6-mm1 Francois Romieu
2005-06-08  1:59 ` 2.6.12-rc6-mm1 Søren Lott
2005-06-08  5:53   ` 2.6.12-rc6-mm1 Jean Delvare
2005-06-08  7:08     ` 2.6.12-rc6-mm1 Søren Lott
2005-06-09  3:47       ` [lm-sensors] 2.6.12-rc6-mm1 Mark M. Hoffman
2005-06-08 14:22 ` 2.6.12-rc6-mm1 Andy Whitcroft
2005-06-08 20:01   ` 2.6.12-rc6-mm1 Andrew Morton
2005-06-08 23:14     ` 2.6.12-rc6-mm1 Martin J. Bligh
2005-06-08 23:22       ` 2.6.12-rc6-mm1 Andrew Morton
2005-06-08 23:34         ` 2.6.12-rc6-mm1 Martin J. Bligh
2005-06-09  7:17           ` 2.6.12-rc6-mm1 Kirill Korotaev
2005-06-09 13:38             ` 2.6.12-rc6-mm1 Martin J. Bligh
2005-06-10 12:12               ` 2.6.12-rc6-mm1 Kirill Korotaev
2005-06-09  4:27   ` 2.6.12-rc6-mm1 Andrey Panin
2005-06-09 13:12     ` 2.6.12-rc6-mm1 Andy Whitcroft
2005-06-08 14:33 ` BUG in i2c_detach_client Andrew James Wade
2005-06-08 16:21   ` Jean Delvare
2005-06-08 21:26   ` Andrew Morton
2005-06-08 22:56     ` Andrew James Wade
2005-06-08 23:32       ` Andrew Morton
2005-06-09  7:52         ` Jean Delvare
2005-06-09  7:47     ` Jean Delvare
2005-06-09 11:05       ` Andrew James Wade
2005-06-09 13:32       ` Andrew James Wade
2005-06-09 15:57         ` Jean Delvare
2005-06-10  5:58           ` Greg KH
2005-06-10  7:08             ` Jean Delvare
2005-06-11 11:51 ` 2.6.12-rc6-mm1 Benoit Boissinot
2005-06-18 22:39 ` 2.6.12-rc6-mm1 Richard Purdie
2005-06-18 22:44   ` 2.6.12-rc6-mm1 Andrew Morton
2005-06-18 22:57     ` 2.6.12-rc6-mm1 Richard Purdie
2005-06-18 23:11       ` 2.6.12-rc6-mm1 Richard Purdie
2005-06-18 23:18   ` 2.6.12-rc6-mm1 Russell King
2005-06-19  1:20     ` 2.6.12-rc6-mm1 Richard Purdie
2005-06-19  9:02       ` Russell King [this message]
2005-06-19  9:11         ` 2.6.12-rc6-mm1 Russell King
2005-06-19 17:12           ` 2.6.12-rc6-mm1 Richard Purdie
2005-06-19 17:39             ` 2.6.12-rc6-mm1 Russell King
2005-06-19 18:25               ` 2.6.12-rc6-mm1 Richard Purdie
2005-06-19 18:56                 ` 2.6.12-rc6-mm1 Russell King
2005-06-21 13:20 ` 2.6.12-rc6-mm1 Dominik Karall
2005-06-24 21:27   ` 2.6.12-rc6-mm1 Alexey Dobriyan
2005-07-29  4:54   ` 2.6.12-rc6-mm1 Andrew Morton
2005-07-29 13:39     ` 2.6.12-rc6-mm1 Dominik Karall
2005-07-29 18:22       ` 2.6.12-rc6-mm1 Andrew Morton
2005-07-29 21:19         ` 2.6.12-rc6-mm1 Dominik Karall
2005-07-29 21:27           ` 2.6.12-rc6-mm1 Andrew Morton
2005-07-29 21:37             ` 2.6.12-rc6-mm1 Dominik Karall
2005-08-04 19:44               ` 2.6.12-rc6-mm1 Andrew Morton
2005-08-04 22:28                 ` 2.6.12-rc6-mm1 Andrew Morton
2005-08-04 22:44                   ` 2.6.12-rc6-mm1 Dominik Karall
2005-08-05 10:48                   ` [patch] preempt-trace.patch Ingo Molnar
2005-08-05 11:44                     ` Dominik Karall
2005-08-05 15:13                       ` [patch] preempt-trace-fixes.patch Ingo Molnar
2005-08-05 18:14                         ` Dominik Karall
2005-08-05 14:26                     ` [patch] preempt-trace.patch (mono preempt-trace) Dominik Karall
2005-08-05 15:22                       ` Ingo Molnar
2005-08-05 17:58                         ` Dominik Karall
2005-08-05 18:46                           ` Hugh Dickins
2005-08-05 19:23                             ` Dominik Karall
2005-08-05 20:04                               ` Ingo Molnar
2005-08-05 20:48                                 ` Dominik Karall
2005-08-05 18:05                         ` Andrew Morton
2005-08-05 20:08                           ` Ingo Molnar
2005-08-05 20:13                           ` Ingo Molnar
  -- strict thread matches above, loose matches on Subject: below --
2005-06-07 23:50 2.6.12-rc6-mm1 Martin J. Bligh
2005-06-07 23:56 ` 2.6.12-rc6-mm1 Andrew Morton
2005-06-08  0:02   ` 2.6.12-rc6-mm1 Christoph Lameter
2005-06-08  0:08     ` 2.6.12-rc6-mm1 Andrew Morton
2005-06-08  3:17       ` 2.6.12-rc6-mm1 Nick Piggin
2005-06-08  3:33         ` 2.6.12-rc6-mm1 Con Kolivas
2005-06-08  3:50           ` 2.6.12-rc6-mm1 Nick Piggin
2005-06-08 14:15       ` 2.6.12-rc6-mm1 Martin J. Bligh
2005-06-09 23:56       ` 2.6.12-rc6-mm1 Martin J. Bligh
2005-06-10  7:02         ` 2.6.12-rc6-mm1 Ingo Molnar
2005-06-10 12:03           ` 2.6.12-rc6-mm1 Con Kolivas
2005-06-10 14:19             ` 2.6.12-rc6-mm1 Con Kolivas
2005-06-10 23:14               ` 2.6.12-rc6-mm1 J.A. Magallon
2005-06-10 23:59                 ` 2.6.12-rc6-mm1 Con Kolivas
2005-06-11  0:18                   ` 2.6.12-rc6-mm1 Con Kolivas
2005-06-11  0:32                   ` 2.6.12-rc6-mm1 J.A. Magallon
2005-06-11  0:48                     ` 2.6.12-rc6-mm1 Con Kolivas
2005-06-11  0:52                       ` 2.6.12-rc6-mm1 Con Kolivas
2005-06-10 23:50               ` 2.6.12-rc6-mm1 Martin J. Bligh
2005-06-11  4:14                 ` 2.6.12-rc6-mm1 Martin J. Bligh
2005-06-11  5:22                   ` 2.6.12-rc6-mm1 Con Kolivas
2005-06-11  5:56                     ` 2.6.12-rc6-mm1 Martin J. Bligh
2005-06-11 20:13                     ` 2.6.12-rc6-mm1 Martin J. Bligh
2005-06-11 22:20                       ` 2.6.12-rc6-mm1 Con Kolivas
2005-06-11 23:27                         ` 2.6.12-rc6-mm1 Martin J. Bligh
2005-06-11 23:47                           ` 2.6.12-rc6-mm1 Con Kolivas
2005-06-12  0:23                             ` 2.6.12-rc6-mm1 Martin J. Bligh
2005-06-12  5:19                               ` 2.6.12-rc6-mm1 Con Kolivas
2005-06-09  1:58     ` 2.6.12-rc6-mm1 Lee Revell
2005-06-08  0:02   ` 2.6.12-rc6-mm1 Martin J. Bligh

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=20050619100226.A6499@flint.arm.linux.org.uk \
    --to=rmk+lkml@arm.linux.org.uk \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rpurdie@rpsys.net \
    /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