linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 5/6] powerpc: Macros for saving/restore PPR
@ 2012-09-09 11:43 Haren Myneni
  2012-09-10  4:24 ` Benjamin Herrenschmidt
  0 siblings, 1 reply; 9+ messages in thread
From: Haren Myneni @ 2012-09-09 11:43 UTC (permalink / raw)
  To: benh, paulus, anton, mikey; +Cc: linuxppc-dev


Several macros are defined for saving and restore user defined PPR value.

Signed-off-by: Haren Myneni <haren@us.ibm.com>
---
 arch/powerpc/include/asm/exception-64s.h |   35 ++++++++++++++++++++++++++++++
 arch/powerpc/include/asm/reg.h           |    1 +
 2 files changed, 36 insertions(+)

diff --git a/arch/powerpc/include/asm/exception-64s.h b/arch/powerpc/include/asm/exception-64s.h
index bfd3f1f..618fd18 100644
--- a/arch/powerpc/include/asm/exception-64s.h
+++ b/arch/powerpc/include/asm/exception-64s.h
@@ -62,6 +62,41 @@
 #define EXC_HV	H
 #define EXC_STD
 
+/*
+ * PPR save/restore macros - Used on P7 or later processors
+ */
+#define SAVE_PPR(area, ra, rb)						\
+BEGIN_FTR_SECTION_NESTED(940)						\
+	ld	ra,area+EX_PPR(r13);	/* Read PPR from paca */	\
+	clrrdi	rb,r1,THREAD_SHIFT;	/* thread_info struct */	\
+	std	ra,TI_PPR(rb);		/* Save PPR in thread_info */	\
+END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,940)
+
+#define RESTORE_PPR(ra,rb)						\
+BEGIN_FTR_SECTION_NESTED(941)						\
+	clrrdi	ra,r1,THREAD_SHIFT;					\
+	ld	rb,TI_PPR(ra);		/* Read PPR from thread_info */	\
+	mtspr	SPRN_PPR,rb;		/* Restore PPR */		\
+END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,941)
+
+#define RESTORE_PPR_PACA(area,ra)					\
+BEGIN_FTR_SECTION_NESTED(942)						\
+	ld	ra,area+EX_PPR(r13);					\
+	mtspr	SPRN_PPR,ra;						\
+END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,942)
+
+#define HMT_MEDIUM_NO_PPR						\
+BEGIN_FTR_SECTION_NESTED(944)						\
+	HMT_MEDIUM;							\
+END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,0,944)  /*non P7*/		
+
+#define HMT_MEDIUM_HAS_PPR(area, ra)					\
+BEGIN_FTR_SECTION_NESTED(943)						\
+	mfspr	ra,SPRN_PPR;						\
+	std	ra,area+EX_PPR(r13);					\
+	HMT_MEDIUM;							\
+END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,943) /* P7 */
+
 #define __EXCEPTION_PROLOG_1(area, extra, vec)				\
 	GET_PACA(r13);							\
 	std	r9,area+EX_R9(r13);	/* save r9 - r12 */		\
diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
index 6386086..dff2f89 100644
--- a/arch/powerpc/include/asm/reg.h
+++ b/arch/powerpc/include/asm/reg.h
@@ -284,6 +284,7 @@
 #define SPRN_DBAT6U	0x23C	/* Data BAT 6 Upper Register */
 #define SPRN_DBAT7L	0x23F	/* Data BAT 7 Lower Register */
 #define SPRN_DBAT7U	0x23E	/* Data BAT 7 Upper Register */
+#define SPRN_PPR	0x380	/* SMT Thread status Register */
 
 #define SPRN_DEC	0x016		/* Decrement Register */
 #define SPRN_DER	0x095		/* Debug Enable Regsiter */
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 5/6] powerpc: Macros for saving/restore PPR
  2012-09-09 11:43 [PATCH 5/6] powerpc: Macros for saving/restore PPR Haren Myneni
@ 2012-09-10  4:24 ` Benjamin Herrenschmidt
  2012-09-11  5:18   ` Haren Myneni
  0 siblings, 1 reply; 9+ messages in thread
From: Benjamin Herrenschmidt @ 2012-09-10  4:24 UTC (permalink / raw)
  To: Haren Myneni; +Cc: linuxppc-dev, mikey, paulus, anton

On Sun, 2012-09-09 at 04:43 -0700, Haren Myneni wrote:
> Several macros are defined for saving and restore user defined PPR value.
> 
> Signed-off-by: Haren Myneni <haren@us.ibm.com>
> ---
>  arch/powerpc/include/asm/exception-64s.h |   35 ++++++++++++++++++++++++++++++
>  arch/powerpc/include/asm/reg.h           |    1 +
>  2 files changed, 36 insertions(+)
> 
> diff --git a/arch/powerpc/include/asm/exception-64s.h b/arch/powerpc/include/asm/exception-64s.h
> index bfd3f1f..618fd18 100644
> --- a/arch/powerpc/include/asm/exception-64s.h
> +++ b/arch/powerpc/include/asm/exception-64s.h
> @@ -62,6 +62,41 @@
>  #define EXC_HV	H
>  #define EXC_STD
>  
> +/*
> + * PPR save/restore macros - Used on P7 or later processors
> + */
> +#define SAVE_PPR(area, ra, rb)						\
> +BEGIN_FTR_SECTION_NESTED(940)						\
> +	ld	ra,area+EX_PPR(r13);	/* Read PPR from paca */	\
> +	clrrdi	rb,r1,THREAD_SHIFT;	/* thread_info struct */	\
> +	std	ra,TI_PPR(rb);		/* Save PPR in thread_info */	\
> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,940)

Why the thread info and not the thread struct ?

Cheers,
Ben.

> +#define RESTORE_PPR(ra,rb)						\
> +BEGIN_FTR_SECTION_NESTED(941)						\
> +	clrrdi	ra,r1,THREAD_SHIFT;					\
> +	ld	rb,TI_PPR(ra);		/* Read PPR from thread_info */	\
> +	mtspr	SPRN_PPR,rb;		/* Restore PPR */		\
> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,941)
> +
> +#define RESTORE_PPR_PACA(area,ra)					\
> +BEGIN_FTR_SECTION_NESTED(942)						\
> +	ld	ra,area+EX_PPR(r13);					\
> +	mtspr	SPRN_PPR,ra;						\
> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,942)
> +
> +#define HMT_MEDIUM_NO_PPR						\
> +BEGIN_FTR_SECTION_NESTED(944)						\
> +	HMT_MEDIUM;							\
> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,0,944)  /*non P7*/		
> +
> +#define HMT_MEDIUM_HAS_PPR(area, ra)					\
> +BEGIN_FTR_SECTION_NESTED(943)						\
> +	mfspr	ra,SPRN_PPR;						\
> +	std	ra,area+EX_PPR(r13);					\
> +	HMT_MEDIUM;							\
> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,943) /* P7 */
> +
>  #define __EXCEPTION_PROLOG_1(area, extra, vec)				\
>  	GET_PACA(r13);							\
>  	std	r9,area+EX_R9(r13);	/* save r9 - r12 */		\
> diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
> index 6386086..dff2f89 100644
> --- a/arch/powerpc/include/asm/reg.h
> +++ b/arch/powerpc/include/asm/reg.h
> @@ -284,6 +284,7 @@
>  #define SPRN_DBAT6U	0x23C	/* Data BAT 6 Upper Register */
>  #define SPRN_DBAT7L	0x23F	/* Data BAT 7 Lower Register */
>  #define SPRN_DBAT7U	0x23E	/* Data BAT 7 Upper Register */
> +#define SPRN_PPR	0x380	/* SMT Thread status Register */
>  
>  #define SPRN_DEC	0x016		/* Decrement Register */
>  #define SPRN_DER	0x095		/* Debug Enable Regsiter */

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 5/6] powerpc: Macros for saving/restore PPR
  2012-09-10  4:24 ` Benjamin Herrenschmidt
@ 2012-09-11  5:18   ` Haren Myneni
  2012-09-11  5:37     ` Benjamin Herrenschmidt
  0 siblings, 1 reply; 9+ messages in thread
From: Haren Myneni @ 2012-09-11  5:18 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: linuxppc-dev, mikey, paulus, anton

On 09/09/2012 09:24 PM, Benjamin Herrenschmidt wrote:
> On Sun, 2012-09-09 at 04:43 -0700, Haren Myneni wrote:
>> Several macros are defined for saving and restore user defined PPR value.
>>
>> Signed-off-by: Haren Myneni <haren@us.ibm.com>
>> ---
>>  arch/powerpc/include/asm/exception-64s.h |   35 ++++++++++++++++++++++++++++++
>>  arch/powerpc/include/asm/reg.h           |    1 +
>>  2 files changed, 36 insertions(+)
>>
>> diff --git a/arch/powerpc/include/asm/exception-64s.h b/arch/powerpc/include/asm/exception-64s.h
>> index bfd3f1f..618fd18 100644
>> --- a/arch/powerpc/include/asm/exception-64s.h
>> +++ b/arch/powerpc/include/asm/exception-64s.h
>> @@ -62,6 +62,41 @@
>>  #define EXC_HV	H
>>  #define EXC_STD
>>  
>> +/*
>> + * PPR save/restore macros - Used on P7 or later processors
>> + */
>> +#define SAVE_PPR(area, ra, rb)						\
>> +BEGIN_FTR_SECTION_NESTED(940)						\
>> +	ld	ra,area+EX_PPR(r13);	/* Read PPR from paca */	\
>> +	clrrdi	rb,r1,THREAD_SHIFT;	/* thread_info struct */	\
>> +	std	ra,TI_PPR(rb);		/* Save PPR in thread_info */	\
>> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,940)
> 
> Why the thread info and not the thread struct ?

We can also use thread struct, but the saved ppr is needed as long as
the process is in kernel context. Once the process exits, we do not need
this value - means the kernel or any other command will not be reading
this value. Even the process can change this value later. Need to add
ppr in thread_struct which uses extra 8 bytes for each task.

Whereas thread_info is at the top of stack. No need to allocate extra
memory. Since the saved process PPR value is needed temporarily whenever
the process is in kernel, thought thread_info is proper. Also easy to
read - one less load instruction.

Saving in thread_info:

ld      r4,area+EX_PPR(r13);
clrrdi  r5,r1,THREAD_SHIFT;
std     r4,TI_PPR(r5);

Saving in thread_struct:

 ld      r4,PACACURRENT(r13)
 addi    r5,r4,THREAD
 ld      r4,paca+EX_PPR(r13);
 std     r4,THREAD_PPR(r5)

If you prefer thread_struct, I will change the patch. Please let me know.

Thanks
Haren

> 
> Cheers,
> Ben.
> 
>> +#define RESTORE_PPR(ra,rb)						\
>> +BEGIN_FTR_SECTION_NESTED(941)						\
>> +	clrrdi	ra,r1,THREAD_SHIFT;					\
>> +	ld	rb,TI_PPR(ra);		/* Read PPR from thread_info */	\
>> +	mtspr	SPRN_PPR,rb;		/* Restore PPR */		\
>> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,941)
>> +
>> +#define RESTORE_PPR_PACA(area,ra)					\
>> +BEGIN_FTR_SECTION_NESTED(942)						\
>> +	ld	ra,area+EX_PPR(r13);					\
>> +	mtspr	SPRN_PPR,ra;						\
>> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,942)
>> +
>> +#define HMT_MEDIUM_NO_PPR						\
>> +BEGIN_FTR_SECTION_NESTED(944)						\
>> +	HMT_MEDIUM;							\
>> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,0,944)  /*non P7*/		
>> +
>> +#define HMT_MEDIUM_HAS_PPR(area, ra)					\
>> +BEGIN_FTR_SECTION_NESTED(943)						\
>> +	mfspr	ra,SPRN_PPR;						\
>> +	std	ra,area+EX_PPR(r13);					\
>> +	HMT_MEDIUM;							\
>> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,943) /* P7 */
>> +
>>  #define __EXCEPTION_PROLOG_1(area, extra, vec)				\
>>  	GET_PACA(r13);							\
>>  	std	r9,area+EX_R9(r13);	/* save r9 - r12 */		\
>> diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
>> index 6386086..dff2f89 100644
>> --- a/arch/powerpc/include/asm/reg.h
>> +++ b/arch/powerpc/include/asm/reg.h
>> @@ -284,6 +284,7 @@
>>  #define SPRN_DBAT6U	0x23C	/* Data BAT 6 Upper Register */
>>  #define SPRN_DBAT7L	0x23F	/* Data BAT 7 Lower Register */
>>  #define SPRN_DBAT7U	0x23E	/* Data BAT 7 Upper Register */
>> +#define SPRN_PPR	0x380	/* SMT Thread status Register */
>>  
>>  #define SPRN_DEC	0x016		/* Decrement Register */
>>  #define SPRN_DER	0x095		/* Debug Enable Regsiter */
> 
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 5/6] powerpc: Macros for saving/restore PPR
  2012-09-11  5:18   ` Haren Myneni
@ 2012-09-11  5:37     ` Benjamin Herrenschmidt
  0 siblings, 0 replies; 9+ messages in thread
From: Benjamin Herrenschmidt @ 2012-09-11  5:37 UTC (permalink / raw)
  To: Haren Myneni; +Cc: linuxppc-dev, mikey, paulus, anton

On Mon, 2012-09-10 at 22:18 -0700, Haren Myneni wrote:

> We can also use thread struct, but the saved ppr is needed as long as
> the process is in kernel context. Once the process exits, we do not need
> this value - means the kernel or any other command will not be reading
> this value.
>
>  Even the process can change this value later. Need to add
> ppr in thread_struct which uses extra 8 bytes for each task.

Allright so the real answer is that the thread info is easier to get at
than the thread struct :-) However, the most logical place to put that
stuff is along the lines of the surrounding code... in the pt_regs on
the stack.

It should be fairly easy to carve some space here, for example softe
doesn't have to be 64-bit (it's really one bit, you can make it one
byte, just make sure to adapt the corresponding assembly).

The main issue with that approach is that you then need to audit a bit
to see how pt_regs might be constructed here or there in case you end up
with a 0 (illegal PPR) value in there.

> Whereas thread_info is at the top of stack. No need to allocate extra
> memory. Since the saved process PPR value is needed temporarily whenever
> the process is in kernel, thought thread_info is proper. Also easy to
> read - one less load instruction.

The advantage of pt_regs is that a signal can "peek" at the PPR value
which could be useful for debugging purposes.

> Saving in thread_info:
> 
> ld      r4,area+EX_PPR(r13);
> clrrdi  r5,r1,THREAD_SHIFT;
> std     r4,TI_PPR(r5);
> 
> Saving in thread_struct:
> 
>  ld      r4,PACACURRENT(r13)
>  addi    r5,r4,THREAD
>  ld      r4,paca+EX_PPR(r13);
>  std     r4,THREAD_PPR(r5)
> 
> If you prefer thread_struct, I will change the patch. Please let me know.

Cheers,
Ben.

> Thanks
> Haren
> 
> > 
> > Cheers,
> > Ben.
> > 
> >> +#define RESTORE_PPR(ra,rb)						\
> >> +BEGIN_FTR_SECTION_NESTED(941)						\
> >> +	clrrdi	ra,r1,THREAD_SHIFT;					\
> >> +	ld	rb,TI_PPR(ra);		/* Read PPR from thread_info */	\
> >> +	mtspr	SPRN_PPR,rb;		/* Restore PPR */		\
> >> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,941)
> >> +
> >> +#define RESTORE_PPR_PACA(area,ra)					\
> >> +BEGIN_FTR_SECTION_NESTED(942)						\
> >> +	ld	ra,area+EX_PPR(r13);					\
> >> +	mtspr	SPRN_PPR,ra;						\
> >> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,942)
> >> +
> >> +#define HMT_MEDIUM_NO_PPR						\
> >> +BEGIN_FTR_SECTION_NESTED(944)						\
> >> +	HMT_MEDIUM;							\
> >> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,0,944)  /*non P7*/		
> >> +
> >> +#define HMT_MEDIUM_HAS_PPR(area, ra)					\
> >> +BEGIN_FTR_SECTION_NESTED(943)						\
> >> +	mfspr	ra,SPRN_PPR;						\
> >> +	std	ra,area+EX_PPR(r13);					\
> >> +	HMT_MEDIUM;							\
> >> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,943) /* P7 */
> >> +
> >>  #define __EXCEPTION_PROLOG_1(area, extra, vec)				\
> >>  	GET_PACA(r13);							\
> >>  	std	r9,area+EX_R9(r13);	/* save r9 - r12 */		\
> >> diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
> >> index 6386086..dff2f89 100644
> >> --- a/arch/powerpc/include/asm/reg.h
> >> +++ b/arch/powerpc/include/asm/reg.h
> >> @@ -284,6 +284,7 @@
> >>  #define SPRN_DBAT6U	0x23C	/* Data BAT 6 Upper Register */
> >>  #define SPRN_DBAT7L	0x23F	/* Data BAT 7 Lower Register */
> >>  #define SPRN_DBAT7U	0x23E	/* Data BAT 7 Upper Register */
> >> +#define SPRN_PPR	0x380	/* SMT Thread status Register */
> >>  
> >>  #define SPRN_DEC	0x016		/* Decrement Register */
> >>  #define SPRN_DER	0x095		/* Debug Enable Regsiter */
> > 
> > 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 5/6] powerpc: Macros for saving/restore PPR
  2012-11-27  1:49   ` Haren Myneni
@ 2012-12-11  2:41     ` Michael Ellerman
  0 siblings, 0 replies; 9+ messages in thread
From: Michael Ellerman @ 2012-12-11  2:41 UTC (permalink / raw)
  To: Haren Myneni; +Cc: paulus, anton, Michael Neuling, linuxppc-dev

On Mon, 2012-11-26 at 17:49 -0800, Haren Myneni wrote:
> On 11/22/2012 07:39 PM, Michael Neuling wrote:
> > Haren Myneni <haren@linux.vnet.ibm.com> wrote:
> > 
> >> [PATCH 5/6] powerpc: Macros for saving/restore PPR
> > 
> > Maybe we should change the names 
> >   HTM_MEDIUM_NO_PPR  => HTM_MEDIUM_PPR_DISCARD   and
> >   HTM_MEDIUM_HAS_PPR => HTM_MEDIUM_PPR_SAVE
> > But now I'm heading into bike shedding territory... plus I think I
> > suggested the names you have currently, so I'm feeling a bit dumb now
> > :-)
> 
> No problem, We can change these macro names if HTM_MEDIUM_PPR_DISCARD/
> HTM_MEDIUM_PPR_SAVE gives better description.

Yes, those names are better.

Even though they're macros they act as functions, so they should
preferably be named using a verb.

cheers

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 5/6] powerpc: Macros for saving/restore PPR
@ 2012-12-07  7:50 Haren Myneni
  0 siblings, 0 replies; 9+ messages in thread
From: Haren Myneni @ 2012-12-07  7:50 UTC (permalink / raw)
  To: benh, paulus, anton, michael.neuling, linuxppc-dev

[PATCH 5/6] powerpc: Macros for saving/restore PPR

Several macros are defined for saving and restore user defined PPR value.

Signed-off-by: Haren Myneni <haren@us.ibm.com>
---
 arch/powerpc/include/asm/exception-64s.h |   37 ++++++++++++++++++++++++++++++
 arch/powerpc/include/asm/ppc_asm.h       |   25 ++++++++++++++++++++
 arch/powerpc/include/asm/reg.h           |    1 +
 3 files changed, 63 insertions(+), 0 deletions(-)

diff --git a/arch/powerpc/include/asm/exception-64s.h b/arch/powerpc/include/asm/exception-64s.h
index 3b24ca9..090fcd1 100644
--- a/arch/powerpc/include/asm/exception-64s.h
+++ b/arch/powerpc/include/asm/exception-64s.h
@@ -108,6 +108,43 @@
 #define RESTORE_LR(reg, area)
 #endif
 
+/*
+ * PPR save/restore macros used in exceptions_64s.S  
+ * Used for P7 or later processors
+ */
+#define SAVE_PPR(area, ra, rb)						\
+BEGIN_FTR_SECTION_NESTED(940)						\
+	ld	ra,PACACURRENT(r13);					\
+	ld	rb,area+EX_PPR(r13);	/* Read PPR from paca */	\
+	std	rb,TASKTHREADPPR(ra);					\
+END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,940)
+
+#define RESTORE_PPR_PACA(area, ra)					\
+BEGIN_FTR_SECTION_NESTED(941)						\
+	ld	ra,area+EX_PPR(r13);					\
+	mtspr	SPRN_PPR,ra;						\
+END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,941)
+
+/*
+ * Increase the priority on systems where PPR save/restore is not
+ * implemented/ supported.
+ */
+#define HMT_MEDIUM_PPR_DISCARD						\
+BEGIN_FTR_SECTION_NESTED(942)						\
+	HMT_MEDIUM;							\
+END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,0,942)  /*non P7*/		
+
+/*
+ * Save PPR in paca whenever some register is available to use.
+ * Then increase the priority.
+ */
+#define HMT_MEDIUM_PPR_SAVE(area, ra)					\
+BEGIN_FTR_SECTION_NESTED(943)						\
+	mfspr	ra,SPRN_PPR;						\
+	std	ra,area+EX_PPR(r13);					\
+	HMT_MEDIUM;							\
+END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,943) 
+
 #define __EXCEPTION_PROLOG_1(area, extra, vec)				\
 	GET_PACA(r13);							\
 	std	r9,area+EX_R9(r13);	/* save r9 - r12 */		\
diff --git a/arch/powerpc/include/asm/ppc_asm.h b/arch/powerpc/include/asm/ppc_asm.h
index 376e36d..c2d0e58 100644
--- a/arch/powerpc/include/asm/ppc_asm.h
+++ b/arch/powerpc/include/asm/ppc_asm.h
@@ -389,6 +389,31 @@ END_FTR_SECTION_IFCLR(CPU_FTR_601)
 	FTR_SECTION_ELSE_NESTED(848);	\
 	mtocrf (FXM), RS;		\
 	ALT_FTR_SECTION_END_NESTED_IFCLR(CPU_FTR_NOEXECUTE, 848)
+
+/*
+ * PPR restore macros used in entry_64.S
+ * Used for P7 or later processors
+ */
+#define HMT_MEDIUM_LOW_HAS_PPR						\
+BEGIN_FTR_SECTION_NESTED(944)						\
+	HMT_MEDIUM_LOW;							\
+END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,944)
+
+#define SET_DEFAULT_THREAD_PPR(ra, rb)					\
+BEGIN_FTR_SECTION_NESTED(945)						\
+	lis	ra,INIT_PPR@highest;	/* default ppr=3 */		\
+	ld	rb,PACACURRENT(r13);					\
+	sldi	ra,ra,32;	/* 11- 13 bits are used for ppr */	\
+	std	ra,TASKTHREADPPR(rb);					\
+END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,945)
+
+#define RESTORE_PPR(ra, rb)						\
+BEGIN_FTR_SECTION_NESTED(946)						\
+	ld	ra,PACACURRENT(r13);					\
+	ld	rb,TASKTHREADPPR(ra);					\
+	mtspr	SPRN_PPR,rb;	/* Restore PPR */			\
+END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,946)
+
 #endif
 
 /*
diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
index 1b853f7..d395426 100644
--- a/arch/powerpc/include/asm/reg.h
+++ b/arch/powerpc/include/asm/reg.h
@@ -289,6 +289,7 @@
 #define SPRN_DBAT6U	0x23C	/* Data BAT 6 Upper Register */
 #define SPRN_DBAT7L	0x23F	/* Data BAT 7 Lower Register */
 #define SPRN_DBAT7U	0x23E	/* Data BAT 7 Upper Register */
+#define SPRN_PPR	0x380	/* SMT Thread status Register */
 
 #define SPRN_DEC	0x016		/* Decrement Register */
 #define SPRN_DER	0x095		/* Debug Enable Regsiter */
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 5/6] powerpc: Macros for saving/restore PPR
  2012-11-23  3:39 ` Michael Neuling
@ 2012-11-27  1:49   ` Haren Myneni
  2012-12-11  2:41     ` Michael Ellerman
  0 siblings, 1 reply; 9+ messages in thread
From: Haren Myneni @ 2012-11-27  1:49 UTC (permalink / raw)
  To: Michael Neuling; +Cc: anton, paulus, linuxppc-dev

On 11/22/2012 07:39 PM, Michael Neuling wrote:
> Haren Myneni <haren@linux.vnet.ibm.com> wrote:
> 
>> [PATCH 5/6] powerpc: Macros for saving/restore PPR
>>
>> Several macros are defined for saving and restore user defined PPR value.
>>
>> Signed-off-by: Haren Myneni <haren@us.ibm.com>
>> ---
>>  arch/powerpc/include/asm/exception-64s.h |   29 +++++++++++++++++++++++++++++
>>  arch/powerpc/include/asm/ppc_asm.h       |   25 +++++++++++++++++++++++++
>>  arch/powerpc/include/asm/reg.h           |    1 +
>>  3 files changed, 55 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/powerpc/include/asm/exception-64s.h b/arch/powerpc/include/asm/exception-64s.h
>> index bfd3f1f..880ef7d 100644
>> --- a/arch/powerpc/include/asm/exception-64s.h
>> +++ b/arch/powerpc/include/asm/exception-64s.h
>> @@ -62,6 +62,35 @@
>>  #define EXC_HV	H
>>  #define EXC_STD
>>  
>> +/*
>> + * PPR save/restore macros used in exceptions_64s.S  
>> + * Used for P7 or later processors
>> + */
>> +#define SAVE_PPR(area, ra, rb)						\
>> +BEGIN_FTR_SECTION_NESTED(940)						\
>> +	ld	ra,PACACURRENT(r13);					\
>> +	ld	rb,area+EX_PPR(r13);	/* Read PPR from paca */	\
>> +	std	rb,TASKTHREADPPR(ra);					\
>> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,940)
>> +
>> +#define RESTORE_PPR_PACA(area, ra)					\
>> +BEGIN_FTR_SECTION_NESTED(941)						\
>> +	ld	ra,area+EX_PPR(r13);					\
>> +	mtspr	SPRN_PPR,ra;						\
>> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,941)
>> +
> 
> Can you add some documentation here on why we should use the different
> versions.
> 
> I'm trying to read the next patch and it's not clear to my why some have
> HMT_MEDIUM_NO_PPR and other times HMT_MEDIUM and others
> HTM_MEDIUM_HAS_PPR.
> 
> Looks like HTM_MEDIUM_NO_PPR sets the priority to medium on systems
> where we can't save/restore the PPR, hence it can be called earlier in
> the exception handler before we have free GPRs.  HTM_MEDIUM_HAS_PPR
> saves the priority on systems where it can, and then sets the priority
> to medium.
> 
> Maybe we should change the names 
>   HTM_MEDIUM_NO_PPR  => HTM_MEDIUM_PPR_DISCARD   and
>   HTM_MEDIUM_HAS_PPR => HTM_MEDIUM_PPR_SAVE
> But now I'm heading into bike shedding territory... plus I think I
> suggested the names you have currently, so I'm feeling a bit dumb now
> :-)

No problem, We can change these macro names if HTM_MEDIUM_PPR_DISCARD/
HTM_MEDIUM_PPR_SAVE gives better description.

Right, HTM_MEDIUM_NO_PPR is used on systems where we do not save/restore
PPR. So the behaviour is same as before - just increases the priority.
HTM_MEDIUM_HAS_PPR will be executed on systems where CPU_FTR_HAS_PPR is
enabled. I will write some comments around these macros to make it clear.

We can also name them HMT_MEDIUM_CPU_NO_PPR_SAVE and
HMT_MEDIUM_CPU_HAS_PPR_SAVE since we are enabling PPR save/restore using
CPU_FTR macro.

Otherwise I will follow with your suggestions.


Thanks
Haren

> Mikey
> 
>> +#define HMT_MEDIUM_NO_PPR						\
>> +BEGIN_FTR_SECTION_NESTED(942)						\
>> +	HMT_MEDIUM;							\
>> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,0,942)  /*non P7*/		
>> +
>> +#define HMT_MEDIUM_HAS_PPR(area, ra)					\
>> +BEGIN_FTR_SECTION_NESTED(943)						\
>> +	mfspr	ra,SPRN_PPR;						\
>> +	std	ra,area+EX_PPR(r13);					\
>> +	HMT_MEDIUM;							\
>> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,943) 
>> +
>>  #define __EXCEPTION_PROLOG_1(area, extra, vec)				\
>>  	GET_PACA(r13);							\
>>  	std	r9,area+EX_R9(r13);	/* save r9 - r12 */		\
> 
> 
>> diff --git a/arch/powerpc/include/asm/ppc_asm.h b/arch/powerpc/include/asm/ppc_asm.h
>> index 376e36d..52649cc 100644
>> --- a/arch/powerpc/include/asm/ppc_asm.h
>> +++ b/arch/powerpc/include/asm/ppc_asm.h
>> @@ -389,6 +389,31 @@ END_FTR_SECTION_IFCLR(CPU_FTR_601)
>>  	FTR_SECTION_ELSE_NESTED(848);	\
>>  	mtocrf (FXM), RS;		\
>>  	ALT_FTR_SECTION_END_NESTED_IFCLR(CPU_FTR_NOEXECUTE, 848)
>> +
>> +/*
>> + * PPR restore macros used in entry_64.S
>> + * Used for P7 or later processors
>> + */
>> +#define HMT_MEDIUM_LOW_HAS_PPR						\
>> +BEGIN_FTR_SECTION_NESTED(944)						\
>> +	HMT_MEDIUM_LOW;							\
>> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,944)
>> +
>> +#define SET_DEFAULT_THREAD_PPR(ra, rb)					\
>> +BEGIN_FTR_SECTION_NESTED(945)						\
>> +	lis	ra,0xc;		/* default ppr=3 */			\
>> +	ld	rb,PACACURRENT(r13);					\
>> +	sldi	ra,ra,32;	/* 11- 13 bits are used for ppr */	\
>> +	std	ra,TASKTHREADPPR(rb);					\
>> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,945)
>> +
>> +#define RESTORE_PPR(ra, rb)						\
>> +BEGIN_FTR_SECTION_NESTED(946)						\
>> +	ld	ra,PACACURRENT(r13);					\
>> +	ld	rb,TASKTHREADPPR(ra);					\
>> +	mtspr	SPRN_PPR,rb;	/* Restore PPR */			\
>> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,946)
>> +
>>  #endif
>>  
>>  /*
>> diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
>> index d24c141..1723be3 100644
>> --- a/arch/powerpc/include/asm/reg.h
>> +++ b/arch/powerpc/include/asm/reg.h
>> @@ -287,6 +287,7 @@
>>  #define SPRN_DBAT6U	0x23C	/* Data BAT 6 Upper Register */
>>  #define SPRN_DBAT7L	0x23F	/* Data BAT 7 Lower Register */
>>  #define SPRN_DBAT7U	0x23E	/* Data BAT 7 Upper Register */
>> +#define SPRN_PPR	0x380	/* SMT Thread status Register */
>>  
>>  #define SPRN_DEC	0x016		/* Decrement Register */
>>  #define SPRN_DER	0x095		/* Debug Enable Regsiter */
>> -- 
>> 1.7.1
>>
>>
>>
>> _______________________________________________
>> Linuxppc-dev mailing list
>> Linuxppc-dev@lists.ozlabs.org
>> https://lists.ozlabs.org/listinfo/linuxppc-dev
>>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 5/6] powerpc: Macros for saving/restore PPR
  2012-10-31  6:56 Haren Myneni
@ 2012-11-23  3:39 ` Michael Neuling
  2012-11-27  1:49   ` Haren Myneni
  0 siblings, 1 reply; 9+ messages in thread
From: Michael Neuling @ 2012-11-23  3:39 UTC (permalink / raw)
  To: Haren Myneni; +Cc: anton, paulus, linuxppc-dev

Haren Myneni <haren@linux.vnet.ibm.com> wrote:

> [PATCH 5/6] powerpc: Macros for saving/restore PPR
> 
> Several macros are defined for saving and restore user defined PPR value.
> 
> Signed-off-by: Haren Myneni <haren@us.ibm.com>
> ---
>  arch/powerpc/include/asm/exception-64s.h |   29 +++++++++++++++++++++++++++++
>  arch/powerpc/include/asm/ppc_asm.h       |   25 +++++++++++++++++++++++++
>  arch/powerpc/include/asm/reg.h           |    1 +
>  3 files changed, 55 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/powerpc/include/asm/exception-64s.h b/arch/powerpc/include/asm/exception-64s.h
> index bfd3f1f..880ef7d 100644
> --- a/arch/powerpc/include/asm/exception-64s.h
> +++ b/arch/powerpc/include/asm/exception-64s.h
> @@ -62,6 +62,35 @@
>  #define EXC_HV	H
>  #define EXC_STD
>  
> +/*
> + * PPR save/restore macros used in exceptions_64s.S  
> + * Used for P7 or later processors
> + */
> +#define SAVE_PPR(area, ra, rb)						\
> +BEGIN_FTR_SECTION_NESTED(940)						\
> +	ld	ra,PACACURRENT(r13);					\
> +	ld	rb,area+EX_PPR(r13);	/* Read PPR from paca */	\
> +	std	rb,TASKTHREADPPR(ra);					\
> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,940)
> +
> +#define RESTORE_PPR_PACA(area, ra)					\
> +BEGIN_FTR_SECTION_NESTED(941)						\
> +	ld	ra,area+EX_PPR(r13);					\
> +	mtspr	SPRN_PPR,ra;						\
> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,941)
> +

Can you add some documentation here on why we should use the different
versions.

I'm trying to read the next patch and it's not clear to my why some have
HMT_MEDIUM_NO_PPR and other times HMT_MEDIUM and others
HTM_MEDIUM_HAS_PPR.

Looks like HTM_MEDIUM_NO_PPR sets the priority to medium on systems
where we can't save/restore the PPR, hence it can be called earlier in
the exception handler before we have free GPRs.  HTM_MEDIUM_HAS_PPR
saves the priority on systems where it can, and then sets the priority
to medium.

Maybe we should change the names 
  HTM_MEDIUM_NO_PPR  => HTM_MEDIUM_PPR_DISCARD   and
  HTM_MEDIUM_HAS_PPR => HTM_MEDIUM_PPR_SAVE
But now I'm heading into bike shedding territory... plus I think I
suggested the names you have currently, so I'm feeling a bit dumb now
:-)

Mikey

> +#define HMT_MEDIUM_NO_PPR						\
> +BEGIN_FTR_SECTION_NESTED(942)						\
> +	HMT_MEDIUM;							\
> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,0,942)  /*non P7*/		
> +
> +#define HMT_MEDIUM_HAS_PPR(area, ra)					\
> +BEGIN_FTR_SECTION_NESTED(943)						\
> +	mfspr	ra,SPRN_PPR;						\
> +	std	ra,area+EX_PPR(r13);					\
> +	HMT_MEDIUM;							\
> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,943) 
> +
>  #define __EXCEPTION_PROLOG_1(area, extra, vec)				\
>  	GET_PACA(r13);							\
>  	std	r9,area+EX_R9(r13);	/* save r9 - r12 */		\


> diff --git a/arch/powerpc/include/asm/ppc_asm.h b/arch/powerpc/include/asm/ppc_asm.h
> index 376e36d..52649cc 100644
> --- a/arch/powerpc/include/asm/ppc_asm.h
> +++ b/arch/powerpc/include/asm/ppc_asm.h
> @@ -389,6 +389,31 @@ END_FTR_SECTION_IFCLR(CPU_FTR_601)
>  	FTR_SECTION_ELSE_NESTED(848);	\
>  	mtocrf (FXM), RS;		\
>  	ALT_FTR_SECTION_END_NESTED_IFCLR(CPU_FTR_NOEXECUTE, 848)
> +
> +/*
> + * PPR restore macros used in entry_64.S
> + * Used for P7 or later processors
> + */
> +#define HMT_MEDIUM_LOW_HAS_PPR						\
> +BEGIN_FTR_SECTION_NESTED(944)						\
> +	HMT_MEDIUM_LOW;							\
> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,944)
> +
> +#define SET_DEFAULT_THREAD_PPR(ra, rb)					\
> +BEGIN_FTR_SECTION_NESTED(945)						\
> +	lis	ra,0xc;		/* default ppr=3 */			\
> +	ld	rb,PACACURRENT(r13);					\
> +	sldi	ra,ra,32;	/* 11- 13 bits are used for ppr */	\
> +	std	ra,TASKTHREADPPR(rb);					\
> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,945)
> +
> +#define RESTORE_PPR(ra, rb)						\
> +BEGIN_FTR_SECTION_NESTED(946)						\
> +	ld	ra,PACACURRENT(r13);					\
> +	ld	rb,TASKTHREADPPR(ra);					\
> +	mtspr	SPRN_PPR,rb;	/* Restore PPR */			\
> +END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,946)
> +
>  #endif
>  
>  /*
> diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
> index d24c141..1723be3 100644
> --- a/arch/powerpc/include/asm/reg.h
> +++ b/arch/powerpc/include/asm/reg.h
> @@ -287,6 +287,7 @@
>  #define SPRN_DBAT6U	0x23C	/* Data BAT 6 Upper Register */
>  #define SPRN_DBAT7L	0x23F	/* Data BAT 7 Lower Register */
>  #define SPRN_DBAT7U	0x23E	/* Data BAT 7 Upper Register */
> +#define SPRN_PPR	0x380	/* SMT Thread status Register */
>  
>  #define SPRN_DEC	0x016		/* Decrement Register */
>  #define SPRN_DER	0x095		/* Debug Enable Regsiter */
> -- 
> 1.7.1
> 
> 
> 
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 5/6] powerpc: Macros for saving/restore PPR
@ 2012-10-31  6:56 Haren Myneni
  2012-11-23  3:39 ` Michael Neuling
  0 siblings, 1 reply; 9+ messages in thread
From: Haren Myneni @ 2012-10-31  6:56 UTC (permalink / raw)
  To: benh, paulus, anton, mikey; +Cc: linuxppc-dev

[PATCH 5/6] powerpc: Macros for saving/restore PPR

Several macros are defined for saving and restore user defined PPR value.

Signed-off-by: Haren Myneni <haren@us.ibm.com>
---
 arch/powerpc/include/asm/exception-64s.h |   29 +++++++++++++++++++++++++++++
 arch/powerpc/include/asm/ppc_asm.h       |   25 +++++++++++++++++++++++++
 arch/powerpc/include/asm/reg.h           |    1 +
 3 files changed, 55 insertions(+), 0 deletions(-)

diff --git a/arch/powerpc/include/asm/exception-64s.h b/arch/powerpc/include/asm/exception-64s.h
index bfd3f1f..880ef7d 100644
--- a/arch/powerpc/include/asm/exception-64s.h
+++ b/arch/powerpc/include/asm/exception-64s.h
@@ -62,6 +62,35 @@
 #define EXC_HV	H
 #define EXC_STD
 
+/*
+ * PPR save/restore macros used in exceptions_64s.S  
+ * Used for P7 or later processors
+ */
+#define SAVE_PPR(area, ra, rb)						\
+BEGIN_FTR_SECTION_NESTED(940)						\
+	ld	ra,PACACURRENT(r13);					\
+	ld	rb,area+EX_PPR(r13);	/* Read PPR from paca */	\
+	std	rb,TASKTHREADPPR(ra);					\
+END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,940)
+
+#define RESTORE_PPR_PACA(area, ra)					\
+BEGIN_FTR_SECTION_NESTED(941)						\
+	ld	ra,area+EX_PPR(r13);					\
+	mtspr	SPRN_PPR,ra;						\
+END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,941)
+
+#define HMT_MEDIUM_NO_PPR						\
+BEGIN_FTR_SECTION_NESTED(942)						\
+	HMT_MEDIUM;							\
+END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,0,942)  /*non P7*/		
+
+#define HMT_MEDIUM_HAS_PPR(area, ra)					\
+BEGIN_FTR_SECTION_NESTED(943)						\
+	mfspr	ra,SPRN_PPR;						\
+	std	ra,area+EX_PPR(r13);					\
+	HMT_MEDIUM;							\
+END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,943) 
+
 #define __EXCEPTION_PROLOG_1(area, extra, vec)				\
 	GET_PACA(r13);							\
 	std	r9,area+EX_R9(r13);	/* save r9 - r12 */		\
diff --git a/arch/powerpc/include/asm/ppc_asm.h b/arch/powerpc/include/asm/ppc_asm.h
index 376e36d..52649cc 100644
--- a/arch/powerpc/include/asm/ppc_asm.h
+++ b/arch/powerpc/include/asm/ppc_asm.h
@@ -389,6 +389,31 @@ END_FTR_SECTION_IFCLR(CPU_FTR_601)
 	FTR_SECTION_ELSE_NESTED(848);	\
 	mtocrf (FXM), RS;		\
 	ALT_FTR_SECTION_END_NESTED_IFCLR(CPU_FTR_NOEXECUTE, 848)
+
+/*
+ * PPR restore macros used in entry_64.S
+ * Used for P7 or later processors
+ */
+#define HMT_MEDIUM_LOW_HAS_PPR						\
+BEGIN_FTR_SECTION_NESTED(944)						\
+	HMT_MEDIUM_LOW;							\
+END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,944)
+
+#define SET_DEFAULT_THREAD_PPR(ra, rb)					\
+BEGIN_FTR_SECTION_NESTED(945)						\
+	lis	ra,0xc;		/* default ppr=3 */			\
+	ld	rb,PACACURRENT(r13);					\
+	sldi	ra,ra,32;	/* 11- 13 bits are used for ppr */	\
+	std	ra,TASKTHREADPPR(rb);					\
+END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,945)
+
+#define RESTORE_PPR(ra, rb)						\
+BEGIN_FTR_SECTION_NESTED(946)						\
+	ld	ra,PACACURRENT(r13);					\
+	ld	rb,TASKTHREADPPR(ra);					\
+	mtspr	SPRN_PPR,rb;	/* Restore PPR */			\
+END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,946)
+
 #endif
 
 /*
diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
index d24c141..1723be3 100644
--- a/arch/powerpc/include/asm/reg.h
+++ b/arch/powerpc/include/asm/reg.h
@@ -287,6 +287,7 @@
 #define SPRN_DBAT6U	0x23C	/* Data BAT 6 Upper Register */
 #define SPRN_DBAT7L	0x23F	/* Data BAT 7 Lower Register */
 #define SPRN_DBAT7U	0x23E	/* Data BAT 7 Upper Register */
+#define SPRN_PPR	0x380	/* SMT Thread status Register */
 
 #define SPRN_DEC	0x016		/* Decrement Register */
 #define SPRN_DER	0x095		/* Debug Enable Regsiter */
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2012-12-11  2:41 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-09-09 11:43 [PATCH 5/6] powerpc: Macros for saving/restore PPR Haren Myneni
2012-09-10  4:24 ` Benjamin Herrenschmidt
2012-09-11  5:18   ` Haren Myneni
2012-09-11  5:37     ` Benjamin Herrenschmidt
2012-10-31  6:56 Haren Myneni
2012-11-23  3:39 ` Michael Neuling
2012-11-27  1:49   ` Haren Myneni
2012-12-11  2:41     ` Michael Ellerman
2012-12-07  7:50 Haren Myneni

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).