All of lore.kernel.org
 help / color / mirror / Atom feed
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
> 

  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.