From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Wang Dongsheng-B40534 <B40534@freescale.com>
Cc: Wood Scott-B07421 <B07421@freescale.com>,
"johannes@sipsolutions.net" <johannes@sipsolutions.net>,
"anton@enomsg.org" <anton@enomsg.org>,
"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>
Subject: Re: [PATCH 1/2] powerpc: add Book E support to 64-bit hibernation
Date: Wed, 10 Jul 2013 19:51:33 +1000 [thread overview]
Message-ID: <1373449893.19894.18.camel@pasglop> (raw)
In-Reply-To: <ABB05CD9C9F68C46A5CEDC7F15439259FBEC41@039-SN2MPN1-022.039d.mgd.msft.net>
On Wed, 2013-07-10 at 09:41 +0000, Wang Dongsheng-B40534 wrote:
> Hi scott,
>
> Could you apply this patch?
There were a numbre of comments, were there addressed ? Do you need to
save all the SPRGs for example ?
Ben.
> Thanks.
>
> -dongsheng
>
> > -----Original Message-----
> > From: Wang Dongsheng-B40534
> > Sent: Sunday, June 09, 2013 6:38 PM
> > To: benh@kernel.crashing.org
> > Cc: johannes@sipsolutions.net; anton@enomsg.org; Wood Scott-B07421;
> > galak@kernel.crashing.org; linuxppc-dev@lists.ozlabs.org; Wang Dongsheng-
> > B40534
> > Subject: [PATCH 1/2] powerpc: add Book E support to 64-bit hibernation
> >
> > Update the 64-bit hibernation code to support Book E CPUs.
> > Some registers and instructions are not defined for Book3e
> > (SDR reg, tlbia instruction).
> >
> > SDR: Storage Description Register. Book3S and Book3E have different
> > address translation mode, we do not need HTABORG & HTABSIZE to
> > translate virtual address to real address.
> >
> > More registers are saved in BookE-64bit.(TCR, SPRGx, ...)
> >
> > Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
> > ---
> > * History:
> > * Wood Scott(A): Please investigate the issue of whether we are loading
> > * kernel module code in this step
> > * R: Kernel will allocate the memory for module code segment and data
> > * segment. First allocate a memory, and copy the umod to hdr members
> > * of the struct load_info. Due to the temporary assigned module
> > belongs
> > * to the kernel space, so it belongs to the kernel data.
> > *
> > * The kernel of all data will be saved when hibernation suspend. So
> > * the module which has already been inserted will be saved.
> >
> > arch/powerpc/kernel/swsusp_asm64.S | 64
> > ++++++++++++++++++++++++++++++++++++--
> > 1 file changed, 62 insertions(+), 2 deletions(-)
> >
> > diff --git a/arch/powerpc/kernel/swsusp_asm64.S
> > b/arch/powerpc/kernel/swsusp_asm64.S
> > index 86ac1d9..608e4ceb 100644
> > --- a/arch/powerpc/kernel/swsusp_asm64.S
> > +++ b/arch/powerpc/kernel/swsusp_asm64.S
> > @@ -46,10 +46,29 @@
> > #define SL_r29 0xe8
> > #define SL_r30 0xf0
> > #define SL_r31 0xf8
> > -#define SL_SIZE SL_r31+8
> > +#define SL_SPRG0 0x100
> > +#define SL_SPRG1 0x108
> > +#define SL_SPRG2 0x110
> > +#define SL_SPRG3 0x118
> > +#define SL_SPRG4 0x120
> > +#define SL_SPRG5 0x128
> > +#define SL_SPRG6 0x130
> > +#define SL_SPRG7 0x138
> > +#define SL_TCR 0x140
> > +#define SL_SIZE SL_TCR+8
> >
> > /* these macros rely on the save area being
> > * pointed to by r11 */
> > +
> > +#define SAVE_SPR(register) \
> > + mfspr r0,SPRN_##register ;\
> > + std r0,SL_##register(r11)
> > +#define RESTORE_SPR(register) \
> > + ld r0,SL_##register(r11) ;\
> > + mtspr SPRN_##register,r0
> > +#define RESTORE_SPRG(n) \
> > + ld r0,SL_SPRG##n(r11) ;\
> > + mtsprg n,r0
> > #define SAVE_SPECIAL(special) \
> > mf##special r0 ;\
> > std r0, SL_##special(r11)
> > @@ -103,8 +122,21 @@ _GLOBAL(swsusp_arch_suspend)
> > SAVE_REGISTER(r30)
> > SAVE_REGISTER(r31)
> > SAVE_SPECIAL(MSR)
> > - SAVE_SPECIAL(SDR1)
> > SAVE_SPECIAL(XER)
> > +#ifdef CONFIG_PPC_BOOK3S_64
> > + SAVE_SPECIAL(SDR1)
> > +#else
> > + SAVE_SPR(TCR)
> > + /* Save SPRGs */
> > + SAVE_SPR(SPRG0)
> > + SAVE_SPR(SPRG1)
> > + SAVE_SPR(SPRG2)
> > + SAVE_SPR(SPRG3)
> > + SAVE_SPR(SPRG4)
> > + SAVE_SPR(SPRG5)
> > + SAVE_SPR(SPRG6)
> > + SAVE_SPR(SPRG7)
> > +#endif
> >
> > /* we push the stack up 128 bytes but don't store the
> > * stack pointer on the stack like a real stackframe */
> > @@ -151,6 +183,7 @@ copy_page_loop:
> > bne+ copyloop
> > nothing_to_copy:
> >
> > +#ifdef CONFIG_PPC_BOOK3S_64
> > /* flush caches */
> > lis r3, 0x10
> > mtctr r3
> > @@ -167,6 +200,7 @@ nothing_to_copy:
> > sync
> >
> > tlbia
> > +#endif
> >
> > ld r11,swsusp_save_area_ptr@toc(r2)
> >
> > @@ -208,16 +242,42 @@ nothing_to_copy:
> > RESTORE_REGISTER(r29)
> > RESTORE_REGISTER(r30)
> > RESTORE_REGISTER(r31)
> > +
> > +#ifdef CONFIG_PPC_BOOK3S_64
> > /* can't use RESTORE_SPECIAL(MSR) */
> > ld r0, SL_MSR(r11)
> > mtmsrd r0, 0
> > RESTORE_SPECIAL(SDR1)
> > +#else
> > + /* Save SPRGs */
> > + RESTORE_SPRG(0)
> > + RESTORE_SPRG(1)
> > + RESTORE_SPRG(2)
> > + RESTORE_SPRG(3)
> > + RESTORE_SPRG(4)
> > + RESTORE_SPRG(5)
> > + RESTORE_SPRG(6)
> > + RESTORE_SPRG(7)
> > +
> > + RESTORE_SPECIAL(MSR)
> > +
> > + /* Restore TCR and clear any pending bits in TSR. */
> > + RESTORE_SPR(TCR)
> > + lis r0, (TSR_ENW | TSR_WIS | TSR_DIS | TSR_FIS)@h
> > + mtspr SPRN_TSR,r0
> > +
> > + /* Kick decrementer */
> > + li r0,1
> > + mtdec r0
> > +#endif
> > RESTORE_SPECIAL(XER)
> >
> > sync
> >
> > addi r1,r1,-128
> > +#ifdef CONFIG_PPC_BOOK3S_64
> > bl slb_flush_and_rebolt
> > +#endif
> > bl do_after_copyback
> > addi r1,r1,128
> >
> > --
> > 1.8.0
>
next prev parent reply other threads:[~2013-07-10 9:51 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-09 10:37 [PATCH 1/2] powerpc: add Book E support to 64-bit hibernation Wang Dongsheng
2013-06-09 10:37 ` [PATCH 2/2] powerpc/hibernate: add restore mmu context after resume Wang Dongsheng
2013-07-10 10:11 ` Wang Dongsheng-B40534
2013-07-10 21:42 ` Scott Wood
2013-07-12 4:04 ` Wang Dongsheng-B40534
2013-07-12 21:54 ` Scott Wood
2013-07-12 23:06 ` Benjamin Herrenschmidt
2013-08-07 9:55 ` Wang Dongsheng-B40534
2013-06-12 22:03 ` [PATCH 1/2] powerpc: add Book E support to 64-bit hibernation Scott Wood
2013-06-13 9:55 ` Wang Dongsheng-B40534
2013-06-13 16:51 ` Scott Wood
2013-06-17 5:54 ` Wang Dongsheng-B40534
2013-06-18 0:01 ` Scott Wood
2013-06-18 0:17 ` Benjamin Herrenschmidt
2013-06-18 0:22 ` Scott Wood
2013-06-18 1:29 ` Benjamin Herrenschmidt
2013-07-10 9:41 ` Wang Dongsheng-B40534
2013-07-10 9:51 ` Benjamin Herrenschmidt [this message]
2013-07-10 10:05 ` Wang Dongsheng-B40534
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=1373449893.19894.18.camel@pasglop \
--to=benh@kernel.crashing.org \
--cc=B07421@freescale.com \
--cc=B40534@freescale.com \
--cc=anton@enomsg.org \
--cc=johannes@sipsolutions.net \
--cc=linuxppc-dev@lists.ozlabs.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 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.