LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* Re: 64-bit ppc rwsem
From: Arnd Bergmann @ 2010-08-23 13:44 UTC (permalink / raw)
  To: linuxppc-dev
  Cc: paulus, linux-kernel, sparclinux, akpm, torvalds, David Miller
In-Reply-To: <20100818.222925.233689776.davem@davemloft.net>

On Thursday 19 August 2010, David Miller wrote:
> From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Date: Thu, 19 Aug 2010 15:23:23 +1000
> 
> > Similar here, but using atomic_long_t instead so it works for 32-bit too
> > for me. I suppose we could make that part common indeed.
> > 
> > What about asm-generic/rwsem-atomic.h  or rwsem-cmpxchg.h ?
> 
> Using rwsem-cmpxchg.h sounds best I guess.

The implementation looks good for asm-generic, but there is now an asymmetry
between the spinlock and the atomic_long_t based version.

Maybe we can make them both do the same thing, either of

1. create include/linux/rwsem-cmpxchg.h and add an
   #elif defined(CONFIG_RWSEM_GENERIC_ATOMIC) to include/linux/rwsem.h

2. move include/linux/rwsem-spinlock.h to include/asm-generic/ and
   include that from all architectures that want the spinlock based version.

Further comments:

* Alpha has an optimization for the uniprocessor case, where the atomic
instructions get turned into nonatomic additions. The spinlock based
version uses no locks on UP but disables interrupts for reasons I don't
understand (nothing running at interrupt time should try to access an rwsem).
Should the generic version do the same as Alpha?

* Is there any architecture that would still benefit from having a separate
rwsem implementation? AFAICT all the remaining ones are just variations of
the same concept of using cmpxchg (or xadd in case of x86), which is what
atomics typically end up doing anyway.

	Arnd

^ permalink raw reply

* Re: [PATCH 0/4] Some 47x patches for the powerpc-4xx tree
From: Josh Boyer @ 2010-08-23 12:13 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: linuxppc-dev list, Dave Kleikamp
In-Reply-To: <1282187997.22370.287.camel@pasglop>

On Thu, Aug 19, 2010 at 01:19:57PM +1000, Benjamin Herrenschmidt wrote:
>On Wed, 2010-08-18 at 11:45 -0500, Dave Kleikamp wrote:
>> Sorry!  Forgot to change the subject.
>> 
>> Shaggy
>> 
>> On Wed, 2010-08-18 at 11:44 -0500, Dave Kleikamp wrote:
>> > Josh,
>> > Here are some bug fixes for the powerpc-4xx tree.  It'd be nice if they
>> > could make it into 2.6.46.
>
>Yeah and I'm sure they can make it into 2.6.46... if you want to wait
>that long ! In the meantime, 2.6.36 will do :-)

Added the minor #include fix and sent them your way.

josh

^ permalink raw reply

* Please pull 'merge' branch of 4xx tree
From: Josh Boyer @ 2010-08-23 12:12 UTC (permalink / raw)
  To: benh; +Cc: linuxppc-dev, Dave Kleikamp

Hi Ben,

The changes from Dave for 47x (with minor fix), and a device tree update
for the 460ex SATA driver that has been merged upstream now.  Please
pull.

josh

The following changes since commit
e32e78c5ee8aadef020fbaecbe6fb741ed9029fd:

  powerpc: fix build with make 3.82 (2010-08-09 14:14:05 +1000)

are available in the git repository at:
  ssh://master.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx.git
merge

Dave Kleikamp (4):
      powerpc/47x: Make sure mcsr is cleared before enabling machine
check interrupts
      powerpc/47x: Remove redundant line from cputable.c
      powerpc/4xx: Index interrupt stacks by physical cpu
      powerpc/47x: Add an isync before the tlbivax instruction

Rupjyoti Sarmah (1):
      powerpc/4xx: Device tree update for the 460ex DWC SATA

 arch/powerpc/boot/dts/canyonlands.dts |    8 ++++++++
 arch/powerpc/kernel/cputable.c        |    1 -
 arch/powerpc/kernel/head_44x.S        |    4 ++++
 arch/powerpc/kernel/irq.c             |   16 +++++++++-------
 arch/powerpc/kernel/setup_32.c        |    9 +++++----
 arch/powerpc/mm/tlb_nohash_low.S      |    1 +
 6 files changed, 27 insertions(+), 12 deletions(-)

^ permalink raw reply

* Re: [PATCH/v2] via-pmu: add compat_pmu_ioctl
From: Arnd Bergmann @ 2010-08-23  8:53 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: linuxppc-dev
In-Reply-To: <m2hbimmxai.fsf_-_@igel.home>

On Sunday 22 August 2010, Andreas Schwab wrote:
> The ioctls are actually compatible, but due to historical mistake the
> numbers differ between 32bit and 64bit.
> 
> Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>

Acked-by: Arnd Bergmann <arnd@arndb.de>

^ permalink raw reply

* Re: [PATCH 2/2] rwsem: Move powerpc atomic-long based implementation to asm-generic
From: David Miller @ 2010-08-23  4:39 UTC (permalink / raw)
  To: benh; +Cc: torvalds, paulus, linux-kernel, sparclinux, akpm, linuxppc-dev
In-Reply-To: <1282281295.22370.401.camel@pasglop>

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: Fri, 20 Aug 2010 15:14:55 +1000

> Other architectures who support cmpxchg and atomic_long can
> use that directly.
> 
> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

Acked-by: David S. Miller <davem@davemloft.net>

I'll move sparc64 over to this once it hits Linus's tree.

^ permalink raw reply

* Re: [PATCH] powerpc: remove fpscr use from [kvm_]cvt_{fd,df}
From: Michael Neuling @ 2010-08-23  0:23 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: linuxppc-dev, Paul Mackerras, kvm-ppc
In-Reply-To: <m2hbinzlon.fsf@igel.home>

> Neither lfs nor stfs touch the fpscr, so remove the restore/save of it
> around them.

Do some 32 bit processors need this? 

In 32 bit before the merge, we use to have code that did:

  #if defined(CONFIG_4xx) || defined(CONFIG_E500)
   #define cvt_fd without save/restore fpscr
  #else
   #define cvt_fd with save/restore fpscr
  #end if

Kumar; does this ring any bells?

(The addition of this predates even bitkeeper)

Mikey
> 
> Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
> ---
>  arch/powerpc/include/asm/kvm_fpu.h       |    4 +-
>  arch/powerpc/include/asm/system.h        |    4 +-
>  arch/powerpc/kernel/align.c              |    4 +-
>  arch/powerpc/kernel/fpu.S                |   10 -------
>  arch/powerpc/kvm/book3s_paired_singles.c |   44 +++++++++++++---------------
-
>  arch/powerpc/kvm/fpu.S                   |    8 -----
>  6 files changed, 26 insertions(+), 48 deletions(-)
> 
> diff --git a/arch/powerpc/include/asm/kvm_fpu.h b/arch/powerpc/include/asm/kv
m_fpu.h
> index c3d4f05..92daae1 100644
> --- a/arch/powerpc/include/asm/kvm_fpu.h
> +++ b/arch/powerpc/include/asm/kvm_fpu.h
> @@ -82,7 +82,7 @@ FPD_THREE_IN(fmadd)
>  FPD_THREE_IN(fnmsub)
>  FPD_THREE_IN(fnmadd)
>  
> -extern void kvm_cvt_fd(u32 *from, u64 *to, u64 *fpscr);
> -extern void kvm_cvt_df(u64 *from, u32 *to, u64 *fpscr);
> +extern void kvm_cvt_fd(u32 *from, u64 *to);
> +extern void kvm_cvt_df(u64 *from, u32 *to);
>  
>  #endif
> diff --git a/arch/powerpc/include/asm/system.h b/arch/powerpc/include/asm/sys
tem.h
> index 6c294ac..0b3fe78 100644
> --- a/arch/powerpc/include/asm/system.h
> +++ b/arch/powerpc/include/asm/system.h
> @@ -154,8 +154,8 @@ extern void enable_kernel_spe(void);
>  extern void giveup_spe(struct task_struct *);
>  extern void load_up_spe(struct task_struct *);
>  extern int fix_alignment(struct pt_regs *);
> -extern void cvt_fd(float *from, double *to, struct thread_struct *thread);
> -extern void cvt_df(double *from, float *to, struct thread_struct *thread);
> +extern void cvt_fd(float *from, double *to);
> +extern void cvt_df(double *from, float *to);
>  
>  #ifndef CONFIG_SMP
>  extern void discard_lazy_cpu_state(void);
> diff --git a/arch/powerpc/kernel/align.c b/arch/powerpc/kernel/align.c
> index b876e98..8184ee9 100644
> --- a/arch/powerpc/kernel/align.c
> +++ b/arch/powerpc/kernel/align.c
> @@ -889,7 +889,7 @@ int fix_alignment(struct pt_regs *regs)
>  #ifdef CONFIG_PPC_FPU
>  			preempt_disable();
>  			enable_kernel_fp();
> -			cvt_df(&data.dd, (float *)&data.v[4], &current->thread)
;
> +			cvt_df(&data.dd, (float *)&data.v[4]);
>  			preempt_enable();
>  #else
>  			return 0;
> @@ -933,7 +933,7 @@ int fix_alignment(struct pt_regs *regs)
>  #ifdef CONFIG_PPC_FPU
>  		preempt_disable();
>  		enable_kernel_fp();
> -		cvt_fd((float *)&data.v[4], &data.dd, &current->thread);
> +		cvt_fd((float *)&data.v[4], &data.dd);
>  		preempt_enable();
>  #else
>  		return 0;
> diff --git a/arch/powerpc/kernel/fpu.S b/arch/powerpc/kernel/fpu.S
> index fc8f5b1..e86c040 100644
> --- a/arch/powerpc/kernel/fpu.S
> +++ b/arch/powerpc/kernel/fpu.S
> @@ -163,24 +163,14 @@ END_FTR_SECTION_IFSET(CPU_FTR_VSX)
>  /*
>   * These are used in the alignment trap handler when emulating
>   * single-precision loads and stores.
> - * We restore and save the fpscr so the task gets the same result
> - * and exceptions as if the cpu had performed the load or store.
>   */
>  
>  _GLOBAL(cvt_fd)
> -	lfd	0,THREAD_FPSCR(r5)	/* load up fpscr value */
> -	MTFSF_L(0)
>  	lfs	0,0(r3)
>  	stfd	0,0(r4)
> -	mffs	0
> -	stfd	0,THREAD_FPSCR(r5)	/* save new fpscr value */
>  	blr
>  
>  _GLOBAL(cvt_df)
> -	lfd	0,THREAD_FPSCR(r5)	/* load up fpscr value */
> -	MTFSF_L(0)
>  	lfd	0,0(r3)
>  	stfs	0,0(r4)
> -	mffs	0
> -	stfd	0,THREAD_FPSCR(r5)	/* save new fpscr value */
>  	blr
> diff --git a/arch/powerpc/kvm/book3s_paired_singles.c b/arch/powerpc/kvm/book
3s_paired_singles.c
> index 474f2e2..35a701f 100644
> --- a/arch/powerpc/kvm/book3s_paired_singles.c
> +++ b/arch/powerpc/kvm/book3s_paired_singles.c
> @@ -159,7 +159,7 @@
>  
>  static inline void kvmppc_sync_qpr(struct kvm_vcpu *vcpu, int rt)
>  {
> -	kvm_cvt_df(&vcpu->arch.fpr[rt], &vcpu->arch.qpr[rt], &vcpu->arch.fpscr)
;
> +	kvm_cvt_df(&vcpu->arch.fpr[rt], &vcpu->arch.qpr[rt]);
>  }
>  
>  static void kvmppc_inject_pf(struct kvm_vcpu *vcpu, ulong eaddr, bool is_sto
re)
> @@ -204,7 +204,7 @@ static int kvmppc_emulate_fpr_load(struct kvm_run *run, s
truct kvm_vcpu *vcpu,
>  	/* put in registers */
>  	switch (ls_type) {
>  	case FPU_LS_SINGLE:
> -		kvm_cvt_fd((u32*)tmp, &vcpu->arch.fpr[rs], &vcpu->arch.fpscr);
> +		kvm_cvt_fd((u32*)tmp, &vcpu->arch.fpr[rs]);
>  		vcpu->arch.qpr[rs] = *((u32*)tmp);
>  		break;
>  	case FPU_LS_DOUBLE:
> @@ -230,7 +230,7 @@ static int kvmppc_emulate_fpr_store(struct kvm_run *run, 
struct kvm_vcpu *vcpu,
>  
>  	switch (ls_type) {
>  	case FPU_LS_SINGLE:
> -		kvm_cvt_df(&vcpu->arch.fpr[rs], (u32*)tmp, &vcpu->arch.fpscr);
> +		kvm_cvt_df(&vcpu->arch.fpr[rs], (u32*)tmp);
>  		val = *((u32*)tmp);
>  		len = sizeof(u32);
>  		break;
> @@ -296,7 +296,7 @@ static int kvmppc_emulate_psq_load(struct kvm_run *run, s
truct kvm_vcpu *vcpu,
>  	emulated = EMULATE_DONE;
>  
>  	/* put in registers */
> -	kvm_cvt_fd(&tmp[0], &vcpu->arch.fpr[rs], &vcpu->arch.fpscr);
> +	kvm_cvt_fd(&tmp[0], &vcpu->arch.fpr[rs]);
>  	vcpu->arch.qpr[rs] = tmp[1];
>  
>  	dprintk(KERN_INFO "KVM: PSQ_LD [0x%x, 0x%x] at 0x%lx (%d)\n", tmp[0],
> @@ -314,7 +314,7 @@ static int kvmppc_emulate_psq_store(struct kvm_run *run, 
struct kvm_vcpu *vcpu,
>  	u32 tmp[2];
>  	int len = w ? sizeof(u32) : sizeof(u64);
>  
> -	kvm_cvt_df(&vcpu->arch.fpr[rs], &tmp[0], &vcpu->arch.fpscr);
> +	kvm_cvt_df(&vcpu->arch.fpr[rs], &tmp[0]);
>  	tmp[1] = vcpu->arch.qpr[rs];
>  
>  	r = kvmppc_st(vcpu, &addr, len, tmp, true);
> @@ -516,9 +516,9 @@ static int kvmppc_ps_three_in(struct kvm_vcpu *vcpu, bool
 rc,
>  	WARN_ON(rc);
>  
>  	/* PS0 */
> -	kvm_cvt_df(&fpr[reg_in1], &ps0_in1, &vcpu->arch.fpscr);
> -	kvm_cvt_df(&fpr[reg_in2], &ps0_in2, &vcpu->arch.fpscr);
> -	kvm_cvt_df(&fpr[reg_in3], &ps0_in3, &vcpu->arch.fpscr);
> +	kvm_cvt_df(&fpr[reg_in1], &ps0_in1);
> +	kvm_cvt_df(&fpr[reg_in2], &ps0_in2);
> +	kvm_cvt_df(&fpr[reg_in3], &ps0_in3);
>  
>  	if (scalar & SCALAR_LOW)
>  		ps0_in2 = qpr[reg_in2];
> @@ -529,7 +529,7 @@ static int kvmppc_ps_three_in(struct kvm_vcpu *vcpu, bool
 rc,
>  			  ps0_in1, ps0_in2, ps0_in3, ps0_out);
>  
>  	if (!(scalar & SCALAR_NO_PS0))
> -		kvm_cvt_fd(&ps0_out, &fpr[reg_out], &vcpu->arch.fpscr);
> +		kvm_cvt_fd(&ps0_out, &fpr[reg_out]);
>  
>  	/* PS1 */
>  	ps1_in1 = qpr[reg_in1];
> @@ -566,12 +566,12 @@ static int kvmppc_ps_two_in(struct kvm_vcpu *vcpu, bool
 rc,
>  	WARN_ON(rc);
>  
>  	/* PS0 */
> -	kvm_cvt_df(&fpr[reg_in1], &ps0_in1, &vcpu->arch.fpscr);
> +	kvm_cvt_df(&fpr[reg_in1], &ps0_in1);
>  
>  	if (scalar & SCALAR_LOW)
>  		ps0_in2 = qpr[reg_in2];
>  	else
> -		kvm_cvt_df(&fpr[reg_in2], &ps0_in2, &vcpu->arch.fpscr);
> +		kvm_cvt_df(&fpr[reg_in2], &ps0_in2);
>  
>  	func(&vcpu->arch.fpscr, &ps0_out, &ps0_in1, &ps0_in2);
>  
> @@ -579,7 +579,7 @@ static int kvmppc_ps_two_in(struct kvm_vcpu *vcpu, bool r
c,
>  		dprintk(KERN_INFO "PS2 ps0 -> f(0x%x, 0x%x) = 0x%x\n",
>  				  ps0_in1, ps0_in2, ps0_out);
>  
> -		kvm_cvt_fd(&ps0_out, &fpr[reg_out], &vcpu->arch.fpscr);
> +		kvm_cvt_fd(&ps0_out, &fpr[reg_out]);
>  	}
>  
>  	/* PS1 */
> @@ -615,13 +615,13 @@ static int kvmppc_ps_one_in(struct kvm_vcpu *vcpu, bool
 rc,
>  	WARN_ON(rc);
>  
>  	/* PS0 */
> -	kvm_cvt_df(&fpr[reg_in], &ps0_in, &vcpu->arch.fpscr);
> +	kvm_cvt_df(&fpr[reg_in], &ps0_in);
>  	func(&vcpu->arch.fpscr, &ps0_out, &ps0_in);
>  
>  	dprintk(KERN_INFO "PS1 ps0 -> f(0x%x) = 0x%x\n",
>  			  ps0_in, ps0_out);
>  
> -	kvm_cvt_fd(&ps0_out, &fpr[reg_out], &vcpu->arch.fpscr);
> +	kvm_cvt_fd(&ps0_out, &fpr[reg_out]);
>  
>  	/* PS1 */
>  	ps1_in = qpr[reg_in];
> @@ -671,7 +671,7 @@ int kvmppc_emulate_paired_single(struct kvm_run *run, str
uct kvm_vcpu *vcpu)
>  #ifdef DEBUG
>  	for (i = 0; i < ARRAY_SIZE(vcpu->arch.fpr); i++) {
>  		u32 f;
> -		kvm_cvt_df(&vcpu->arch.fpr[i], &f, &vcpu->arch.fpscr);
> +		kvm_cvt_df(&vcpu->arch.fpr[i], &f);
>  		dprintk(KERN_INFO "FPR[%d] = 0x%x / 0x%llx    QPR[%d] = 0x%x\n"
,
>  			i, f, vcpu->arch.fpr[i], i, vcpu->arch.qpr[i]);
>  	}
> @@ -796,8 +796,7 @@ int kvmppc_emulate_paired_single(struct kvm_run *run, str
uct kvm_vcpu *vcpu)
>  			vcpu->arch.fpr[ax_rd] = vcpu->arch.fpr[ax_ra];
>  			/* vcpu->arch.qpr[ax_rd] = vcpu->arch.fpr[ax_rb]; */
>  			kvm_cvt_df(&vcpu->arch.fpr[ax_rb],
> -				   &vcpu->arch.qpr[ax_rd],
> -				   &vcpu->arch.fpscr);
> +				   &vcpu->arch.qpr[ax_rd]);
>  			break;
>  		case OP_4X_PS_MERGE01:
>  			WARN_ON(rcomp);
> @@ -808,19 +807,16 @@ int kvmppc_emulate_paired_single(struct kvm_run *run, s
truct kvm_vcpu *vcpu)
>  			WARN_ON(rcomp);
>  			/* vcpu->arch.fpr[ax_rd] = vcpu->arch.qpr[ax_ra]; */
>  			kvm_cvt_fd(&vcpu->arch.qpr[ax_ra],
> -				   &vcpu->arch.fpr[ax_rd],
> -				   &vcpu->arch.fpscr);
> +				   &vcpu->arch.fpr[ax_rd]);
>  			/* vcpu->arch.qpr[ax_rd] = vcpu->arch.fpr[ax_rb]; */
>  			kvm_cvt_df(&vcpu->arch.fpr[ax_rb],
> -				   &vcpu->arch.qpr[ax_rd],
> -				   &vcpu->arch.fpscr);
> +				   &vcpu->arch.qpr[ax_rd]);
>  			break;
>  		case OP_4X_PS_MERGE11:
>  			WARN_ON(rcomp);
>  			/* vcpu->arch.fpr[ax_rd] = vcpu->arch.qpr[ax_ra]; */
>  			kvm_cvt_fd(&vcpu->arch.qpr[ax_ra],
> -				   &vcpu->arch.fpr[ax_rd],
> -				   &vcpu->arch.fpscr);
> +				   &vcpu->arch.fpr[ax_rd]);
>  			vcpu->arch.qpr[ax_rd] = vcpu->arch.qpr[ax_rb];
>  			break;
>  		}
> @@ -1255,7 +1251,7 @@ int kvmppc_emulate_paired_single(struct kvm_run *run, s
truct kvm_vcpu *vcpu)
>  #ifdef DEBUG
>  	for (i = 0; i < ARRAY_SIZE(vcpu->arch.fpr); i++) {
>  		u32 f;
> -		kvm_cvt_df(&vcpu->arch.fpr[i], &f, &vcpu->arch.fpscr);
> +		kvm_cvt_df(&vcpu->arch.fpr[i], &f);
>  		dprintk(KERN_INFO "FPR[%d] = 0x%x\n", i, f);
>  	}
>  #endif
> diff --git a/arch/powerpc/kvm/fpu.S b/arch/powerpc/kvm/fpu.S
> index cb34bbe..bf68d59 100644
> --- a/arch/powerpc/kvm/fpu.S
> +++ b/arch/powerpc/kvm/fpu.S
> @@ -273,19 +273,11 @@ FPD_THREE_IN(fnmsub)
>  FPD_THREE_IN(fnmadd)
>  
>  _GLOBAL(kvm_cvt_fd)
> -	lfd	0,0(r5)			/* load up fpscr value */
> -	MTFSF_L(0)
>  	lfs	0,0(r3)
>  	stfd	0,0(r4)
> -	mffs	0
> -	stfd	0,0(r5)			/* save new fpscr value */
>  	blr
>  
>  _GLOBAL(kvm_cvt_df)
> -	lfd	0,0(r5)			/* load up fpscr value */
> -	MTFSF_L(0)
>  	lfd	0,0(r3)
>  	stfs	0,0(r4)
> -	mffs	0
> -	stfd	0,0(r5)			/* save new fpscr value */
>  	blr
> -- 
> 1.7.2.2
> 
> 
> -- 
> Andreas Schwab, schwab@linux-m68k.org
> GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
> "And now for something completely different."
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
> 

^ permalink raw reply

* Re: [PATCH] powerpc: mtmsrd not defined
From: Sean MacLennan @ 2010-08-22 22:48 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: linuxppc-dev
In-Reply-To: <1282516494.22370.440.camel@pasglop>

On Mon, 23 Aug 2010 08:34:54 +1000
Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote:

> I'd rather have a macro somewhere in ppc_asm.h (MTMSR ?) that does the
> right thing. We might even already have one...

We do.... here is a new, improved patch.

Replace the BOOK3S_64 specific mtmsrd with the generic MTMSRD macro.

Signed-off-by: Sean MacLennan <smaclennan@pikatech.com>
---
diff --git a/arch/powerpc/lib/ldstfp.S b/arch/powerpc/lib/ldstfp.S
index f644863..ce818a5 100644
--- a/arch/powerpc/lib/ldstfp.S
+++ b/arch/powerpc/lib/ldstfp.S
@@ -81,7 +81,7 @@ _GLOBAL(do_lfs)
 	mfmsr	r6
 	ori	r7,r6,MSR_FP
 	cmpwi	cr7,r3,0
-	mtmsrd	r7
+	MTMSRD(r7)
 	isync
 	beq	cr7,1f
 	stfd	fr0,STKFRM-16(r1)
@@ -93,7 +93,7 @@ _GLOBAL(do_lfs)
 	lfd	fr0,STKFRM-16(r1)
 4:	PPC_LL	r0,STKFRM+PPC_LR_STKOFF(r1)
 	mtlr	r0
-	mtmsrd	r6
+	MTMSRD(r6)
 	isync
 	mr	r3,r9
 	addi	r1,r1,STKFRM
@@ -108,7 +108,7 @@ _GLOBAL(do_lfd)
 	mfmsr	r6
 	ori	r7,r6,MSR_FP
 	cmpwi	cr7,r3,0
-	mtmsrd	r7
+	MTMSRD(r7)
 	isync
 	beq	cr7,1f
 	stfd	fr0,STKFRM-16(r1)
@@ -120,7 +120,7 @@ _GLOBAL(do_lfd)
 	lfd	fr0,STKFRM-16(r1)
 4:	PPC_LL	r0,STKFRM+PPC_LR_STKOFF(r1)
 	mtlr	r0
-	mtmsrd	r6
+	MTMSRD(r6)
 	isync
 	mr	r3,r9
 	addi	r1,r1,STKFRM
@@ -135,7 +135,7 @@ _GLOBAL(do_stfs)
 	mfmsr	r6
 	ori	r7,r6,MSR_FP
 	cmpwi	cr7,r3,0
-	mtmsrd	r7
+	MTMSRD(r7)
 	isync
 	beq	cr7,1f
 	stfd	fr0,STKFRM-16(r1)
@@ -147,7 +147,7 @@ _GLOBAL(do_stfs)
 	lfd	fr0,STKFRM-16(r1)
 4:	PPC_LL	r0,STKFRM+PPC_LR_STKOFF(r1)
 	mtlr	r0
-	mtmsrd	r6
+	MTMSRD(r6)
 	isync
 	mr	r3,r9
 	addi	r1,r1,STKFRM
@@ -162,7 +162,7 @@ _GLOBAL(do_stfd)
 	mfmsr	r6
 	ori	r7,r6,MSR_FP
 	cmpwi	cr7,r3,0
-	mtmsrd	r7
+	MTMSRD(r7)
 	isync
 	beq	cr7,1f
 	stfd	fr0,STKFRM-16(r1)
@@ -174,7 +174,7 @@ _GLOBAL(do_stfd)
 	lfd	fr0,STKFRM-16(r1)
 4:	PPC_LL	r0,STKFRM+PPC_LR_STKOFF(r1)
 	mtlr	r0
-	mtmsrd	r6
+	MTMSRD(r6)
 	isync
 	mr	r3,r9
 	addi	r1,r1,STKFRM
@@ -229,7 +229,7 @@ _GLOBAL(do_lvx)
 	oris	r7,r6,MSR_VEC@h
 	cmpwi	cr7,r3,0
 	li	r8,STKFRM-16
-	mtmsrd	r7
+	MTMSRD(r7)
 	isync
 	beq	cr7,1f
 	stvx	vr0,r1,r8
@@ -241,7 +241,7 @@ _GLOBAL(do_lvx)
 	lvx	vr0,r1,r8
 4:	PPC_LL	r0,STKFRM+PPC_LR_STKOFF(r1)
 	mtlr	r0
-	mtmsrd	r6
+	MTMSRD(r6)
 	isync
 	mr	r3,r9
 	addi	r1,r1,STKFRM
@@ -257,7 +257,7 @@ _GLOBAL(do_stvx)
 	oris	r7,r6,MSR_VEC@h
 	cmpwi	cr7,r3,0
 	li	r8,STKFRM-16
-	mtmsrd	r7
+	MTMSRD(r7)
 	isync
 	beq	cr7,1f
 	stvx	vr0,r1,r8
@@ -269,7 +269,7 @@ _GLOBAL(do_stvx)
 	lvx	vr0,r1,r8
 4:	PPC_LL	r0,STKFRM+PPC_LR_STKOFF(r1)
 	mtlr	r0
-	mtmsrd	r6
+	MTMSRD(r6)
 	isync
 	mr	r3,r9
 	addi	r1,r1,STKFRM
@@ -325,7 +325,7 @@ _GLOBAL(do_lxvd2x)
 	oris	r7,r6,MSR_VSX@h
 	cmpwi	cr7,r3,0
 	li	r8,STKFRM-16
-	mtmsrd	r7
+	MTMSRD(r7)
 	isync
 	beq	cr7,1f
 	STXVD2X(0,r1,r8)
@@ -337,7 +337,7 @@ _GLOBAL(do_lxvd2x)
 	LXVD2X(0,r1,r8)
 4:	PPC_LL	r0,STKFRM+PPC_LR_STKOFF(r1)
 	mtlr	r0
-	mtmsrd	r6
+	MTMSRD(r6)
 	isync
 	mr	r3,r9
 	addi	r1,r1,STKFRM
@@ -353,7 +353,7 @@ _GLOBAL(do_stxvd2x)
 	oris	r7,r6,MSR_VSX@h
 	cmpwi	cr7,r3,0
 	li	r8,STKFRM-16
-	mtmsrd	r7
+	MTMSRD(r7)
 	isync
 	beq	cr7,1f
 	STXVD2X(0,r1,r8)
@@ -365,7 +365,7 @@ _GLOBAL(do_stxvd2x)
 	LXVD2X(0,r1,r8)
 4:	PPC_LL	r0,STKFRM+PPC_LR_STKOFF(r1)
 	mtlr	r0
-	mtmsrd	r6
+	MTMSRD(r6)
 	isync
 	mr	r3,r9
 	addi	r1,r1,STKFRM



Cheers,
   Sean

^ permalink raw reply related

* Re: [PATCH] powerpc: mtmsrd not defined
From: Benjamin Herrenschmidt @ 2010-08-22 22:34 UTC (permalink / raw)
  To: Sean MacLennan; +Cc: linuxppc-dev
In-Reply-To: <20100822180958.6305f5b1@lappy.seanm.ca>

On Sun, 2010-08-22 at 18:09 -0400, Sean MacLennan wrote:
> Let's try a patch to get the ball rolling. 
> 
> ldstfp.S does not compile if mtmsrd not defined. But is it only defined
> for BOOK3S_64. This defines mtmsrd to be mtmsr on all but BOOK3S_64.
> This solves the compile problem... but I am not sure how to test it.
> 
> I am also not sure if this is the best place to define it. If the
> mapping of mtmsrd to mtmsr is correct, maybe it should be in asm/reg.h?

I'd rather have a macro somewhere in ppc_asm.h (MTMSR ?) that does the
right thing. We might even already have one...

Cheers,
Ben.

> Signed-off-by: Sean MacLennan <smaclennan@pikatech.com>
> ---
> diff --git a/arch/powerpc/lib/ldstfp.S b/arch/powerpc/lib/ldstfp.S
> index f644863..df8a03b 100644
> --- a/arch/powerpc/lib/ldstfp.S
> +++ b/arch/powerpc/lib/ldstfp.S
> @@ -17,6 +17,10 @@
>  #include <asm/asm-offsets.h>
>  #include <linux/errno.h>
>  
> +#ifndef CONFIG_PPC_BOOK3S_64
> +#define mtmsrd mtmsr
> +#endif
> +
>  #define STKFRM	(PPC_MIN_STKFRM + 16)
>  
>  	.macro	extab	instr,handler
> 
> Cheers,
>    Sean
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev

^ permalink raw reply

* [PATCH] powerpc: mtmsrd not defined
From: Sean MacLennan @ 2010-08-22 22:09 UTC (permalink / raw)
  To: linuxppc-dev

Let's try a patch to get the ball rolling. 

ldstfp.S does not compile if mtmsrd not defined. But is it only defined
for BOOK3S_64. This defines mtmsrd to be mtmsr on all but BOOK3S_64.
This solves the compile problem... but I am not sure how to test it.

I am also not sure if this is the best place to define it. If the
mapping of mtmsrd to mtmsr is correct, maybe it should be in asm/reg.h?

Signed-off-by: Sean MacLennan <smaclennan@pikatech.com>
---
diff --git a/arch/powerpc/lib/ldstfp.S b/arch/powerpc/lib/ldstfp.S
index f644863..df8a03b 100644
--- a/arch/powerpc/lib/ldstfp.S
+++ b/arch/powerpc/lib/ldstfp.S
@@ -17,6 +17,10 @@
 #include <asm/asm-offsets.h>
 #include <linux/errno.h>
 
+#ifndef CONFIG_PPC_BOOK3S_64
+#define mtmsrd mtmsr
+#endif
+
 #define STKFRM	(PPC_MIN_STKFRM + 16)
 
 	.macro	extab	instr,handler

Cheers,
   Sean

^ permalink raw reply related

* Re: [PATCH 00/26] KVM: PPC: Mid-August patch queue
From: Avi Kivity @ 2010-08-22 16:46 UTC (permalink / raw)
  To: Alexander Graf; +Cc: linuxppc-dev, KVM list, kvm-ppc
In-Reply-To: <1282053481-18787-1-git-send-email-agraf@suse.de>

  On 08/17/2010 04:57 PM, Alexander Graf wrote:
> Howdy,
>
> This is my local patch queue with stuff that has accumulated over the last
> weeks on KVM for PPC with some last minute fixes, speedups and debugging help
> that I needed for the KVM Forum ;-).
>
> The highlights of this set are:
>
>    - Converted most important debug points to tracepoints
>    - Flush less PTEs (speedup)
>    - Go back to our own hash (less duplicates)
>    - Make SRs guest settable (speedup for 32 bit guests)
>    - Remove r30/r31 restrictions from PV hooks (speedup!)
>    - Fix random breakages
>    - Fix random guest stalls
>    - 440GP host support (Thanks Hollis!)
>
> Keep in mind that this is the first version that is stable on PPC32 hosts.
> All versions prior to this could occupy otherwise used segment entries and
> thus crash your machine :-).
>
> After finally meeting Avi again, we also agreed to give pulls a try. So
> here we go - this is my tree online:
>
>   arch/powerpc/include/asm/kvm_book3s.h |   25 ++--
>   arch/powerpc/include/asm/kvm_para.h   |    3 +
>   arch/powerpc/kernel/asm-offsets.c     |    1 +
>   arch/powerpc/kernel/kvm.c             |  144 ++++++++++++++++++---
>   arch/powerpc/kernel/kvm_emul.S        |   75 +++++++++--
>   arch/powerpc/kvm/44x.c                |    3 +-
>   arch/powerpc/kvm/44x_tlb.c            |    1 +
>   arch/powerpc/kvm/book3s.c             |   54 ++++----
>   arch/powerpc/kvm/book3s_32_mmu.c      |   83 +++++++------
>   arch/powerpc/kvm/book3s_32_mmu_host.c |   67 ++++++----
>   arch/powerpc/kvm/book3s_64_mmu_host.c |   59 +++------
>   arch/powerpc/kvm/book3s_emulate.c     |   48 +++-----
>   arch/powerpc/kvm/book3s_mmu_hpte.c    |   38 ++----
>   arch/powerpc/kvm/booke.c              |    8 +-
>   arch/powerpc/kvm/powerpc.c            |    5 +-
>   arch/powerpc/kvm/trace.h              |  230 +++++++++++++++++++++++++++++++++
>   16 files changed, 614 insertions(+), 230 deletions(-)

   Documentation/kvm/ppc-pv.txt +++++++++++++++++++++++++++

?

-- 
error compiling committee.c: too many arguments to function

^ permalink raw reply

* Re: [PATCH 13/26] KVM: PPC: Add feature bitmap for magic page
From: Avi Kivity @ 2010-08-22 16:42 UTC (permalink / raw)
  To: Alexander Graf; +Cc: linuxppc-dev, KVM list, kvm-ppc
In-Reply-To: <1282053481-18787-14-git-send-email-agraf@suse.de>

  On 08/17/2010 04:57 PM, Alexander Graf wrote:
> We will soon add SR PV support to the shared page, so we need some
> infrastructure that allows the guest to query for features KVM exports.
>
> This patch adds a second return value to the magic mapping that
> indicated to the guest which features are available.
>

You need to make that feature controllable from userspace, to allow 
new->old save/restore.

-- 
error compiling committee.c: too many arguments to function

^ permalink raw reply

* [PATCH/v2] via-pmu: add compat_pmu_ioctl
From: Andreas Schwab @ 2010-08-22 16:23 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: linuxppc-dev
In-Reply-To: <201008221333.50575.arnd@arndb.de>

The ioctls are actually compatible, but due to historical mistake the
numbers differ between 32bit and 64bit.

Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
---
 drivers/macintosh/via-pmu.c |   42 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 42 insertions(+), 0 deletions(-)

diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c
index 35bc273..2d17e76 100644
--- a/drivers/macintosh/via-pmu.c
+++ b/drivers/macintosh/via-pmu.c
@@ -45,6 +45,7 @@
 #include <linux/syscalls.h>
 #include <linux/suspend.h>
 #include <linux/cpu.h>
+#include <linux/compat.h>
 #include <asm/prom.h>
 #include <asm/machdep.h>
 #include <asm/io.h>
@@ -2349,11 +2350,52 @@ static long pmu_unlocked_ioctl(struct file *filp,
 	return ret;
 }
 
+#ifdef CONFIG_COMPAT
+#define PMU_IOC_GET_BACKLIGHT32	_IOR('B', 1, compat_size_t)
+#define PMU_IOC_SET_BACKLIGHT32	_IOW('B', 2, compat_size_t)
+#define PMU_IOC_GET_MODEL32	_IOR('B', 3, compat_size_t)
+#define PMU_IOC_HAS_ADB32	_IOR('B', 4, compat_size_t)
+#define PMU_IOC_CAN_SLEEP32	_IOR('B', 5, compat_size_t)
+#define PMU_IOC_GRAB_BACKLIGHT32 _IOR('B', 6, compat_size_t)
+
+static long compat_pmu_ioctl (struct file *filp, u_int cmd, u_long arg)
+{
+	switch (cmd) {
+	case PMU_IOC_SLEEP:
+		break;
+	case PMU_IOC_GET_BACKLIGHT32:
+		cmd = PMU_IOC_GET_BACKLIGHT;
+		break;
+	case PMU_IOC_SET_BACKLIGHT32:
+		cmd = PMU_IOC_SET_BACKLIGHT;
+		break;
+	case PMU_IOC_GET_MODEL32:
+		cmd = PMU_IOC_GET_MODEL;
+		break;
+	case PMU_IOC_HAS_ADB32:
+		cmd = PMU_IOC_HAS_ADB;
+		break;
+	case PMU_IOC_CAN_SLEEP32:
+		cmd = PMU_IOC_CAN_SLEEP;
+		break;
+	case PMU_IOC_GRAB_BACKLIGHT32:
+		cmd = PMU_IOC_GRAB_BACKLIGHT;
+		break;
+	default:
+		return -ENOIOCTLCMD;
+	}
+	return pmu_unlocked_ioctl(filp, cmd, (unsigned long)compat_ptr(arg));
+}
+#endif
+
 static const struct file_operations pmu_device_fops = {
 	.read		= pmu_read,
 	.write		= pmu_write,
 	.poll		= pmu_fpoll,
 	.unlocked_ioctl	= pmu_unlocked_ioctl,
+#ifdef CONFIG_COMPAT
+	.compat_ioctl	= compat_pmu_ioctl,
+#endif
 	.open		= pmu_open,
 	.release	= pmu_release,
 };
-- 
1.7.2.2


-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply related

* Re: [PATCH] pmu: add compat_pmu_ioctl
From: Arnd Bergmann @ 2010-08-22 11:33 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: Andreas Schwab
In-Reply-To: <m2lj7zzm6w.fsf@igel.home>

On Saturday 21 August 2010 23:32:23 Andreas Schwab wrote:
> The ioctls are actually compatible, but due to historical mistake the
> numbers differ between 32bit and 64bit.

Looks good to me, but

> +#ifdef CONFIG_COMPAT
> +#define PMU_IOC_GET_BACKLIGHT32	_IOR('B', 1, u32)
> +#define PMU_IOC_SET_BACKLIGHT32	_IOW('B', 2, u32)
> +#define PMU_IOC_GET_MODEL32	_IOR('B', 3, u32)
> +#define PMU_IOC_HAS_ADB32	_IOR('B', 4, u32)
> +#define PMU_IOC_CAN_SLEEP32	_IOR('B', 5, u32)
> +#define PMU_IOC_GRAB_BACKLIGHT32 _IOR('B', 6, u32)

It would be nicer to use compat_size_t instead of u32 for annotation
purposes. Obviously both of them are defined as unsigned int, so
that is no functional change.

> +	return pmu_unlocked_ioctl(filp, cmd, arg);

This should ideally use "(unsigned long)compat_ptr(arg)" instead of
just arg. Also doesn't matter on powerpc, but it's better to do
it the strict way.

	Arnd

^ permalink raw reply

* Problems with compiling ldstfp.S
From: Sean MacLennan @ 2010-08-22  6:00 UTC (permalink / raw)
  To: linuxppc-dev

The new file ldstfp.S is getting pulled in on the Warp due to
CONFIG_KPROBES, but does not compile:

  AS      arch/powerpc/lib/ldstfp.o
arch/powerpc/lib/ldstfp.S: Assembler messages:
arch/powerpc/lib/ldstfp.S:84: Error: Unrecognized opcode: `mtmsrd'
arch/powerpc/lib/ldstfp.S:96: Error: Unrecognized opcode: `mtmsrd'
arch/powerpc/lib/ldstfp.S:111: Error: Unrecognized opcode: `mtmsrd'
arch/powerpc/lib/ldstfp.S:123: Error: Unrecognized opcode: `mtmsrd'
arch/powerpc/lib/ldstfp.S:138: Error: Unrecognized opcode: `mtmsrd'
arch/powerpc/lib/ldstfp.S:150: Error: Unrecognized opcode: `mtmsrd'
arch/powerpc/lib/ldstfp.S:165: Error: Unrecognized opcode: `mtmsrd'
arch/powerpc/lib/ldstfp.S:177: Error: Unrecognized opcode: `mtmsrd'
make[1]: *** [arch/powerpc/lib/ldstfp.o] Error 1

The Warp has a 440EP processor which does have floating point. But it
looks like mtmsrd is only defined for PPC64.

I would hate to lose KPROBES, it has been a huge help.

Cheers,
   Sean

^ permalink raw reply

* [PATCH] powerpc: remove fpscr use from [kvm_]cvt_{fd,df}
From: Andreas Schwab @ 2010-08-21 21:43 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: kvm-ppc

Neither lfs nor stfs touch the fpscr, so remove the restore/save of it
around them.

Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
---
 arch/powerpc/include/asm/kvm_fpu.h       |    4 +-
 arch/powerpc/include/asm/system.h        |    4 +-
 arch/powerpc/kernel/align.c              |    4 +-
 arch/powerpc/kernel/fpu.S                |   10 -------
 arch/powerpc/kvm/book3s_paired_singles.c |   44 +++++++++++++----------------
 arch/powerpc/kvm/fpu.S                   |    8 -----
 6 files changed, 26 insertions(+), 48 deletions(-)

diff --git a/arch/powerpc/include/asm/kvm_fpu.h b/arch/powerpc/include/asm/kvm_fpu.h
index c3d4f05..92daae1 100644
--- a/arch/powerpc/include/asm/kvm_fpu.h
+++ b/arch/powerpc/include/asm/kvm_fpu.h
@@ -82,7 +82,7 @@ FPD_THREE_IN(fmadd)
 FPD_THREE_IN(fnmsub)
 FPD_THREE_IN(fnmadd)
 
-extern void kvm_cvt_fd(u32 *from, u64 *to, u64 *fpscr);
-extern void kvm_cvt_df(u64 *from, u32 *to, u64 *fpscr);
+extern void kvm_cvt_fd(u32 *from, u64 *to);
+extern void kvm_cvt_df(u64 *from, u32 *to);
 
 #endif
diff --git a/arch/powerpc/include/asm/system.h b/arch/powerpc/include/asm/system.h
index 6c294ac..0b3fe78 100644
--- a/arch/powerpc/include/asm/system.h
+++ b/arch/powerpc/include/asm/system.h
@@ -154,8 +154,8 @@ extern void enable_kernel_spe(void);
 extern void giveup_spe(struct task_struct *);
 extern void load_up_spe(struct task_struct *);
 extern int fix_alignment(struct pt_regs *);
-extern void cvt_fd(float *from, double *to, struct thread_struct *thread);
-extern void cvt_df(double *from, float *to, struct thread_struct *thread);
+extern void cvt_fd(float *from, double *to);
+extern void cvt_df(double *from, float *to);
 
 #ifndef CONFIG_SMP
 extern void discard_lazy_cpu_state(void);
diff --git a/arch/powerpc/kernel/align.c b/arch/powerpc/kernel/align.c
index b876e98..8184ee9 100644
--- a/arch/powerpc/kernel/align.c
+++ b/arch/powerpc/kernel/align.c
@@ -889,7 +889,7 @@ int fix_alignment(struct pt_regs *regs)
 #ifdef CONFIG_PPC_FPU
 			preempt_disable();
 			enable_kernel_fp();
-			cvt_df(&data.dd, (float *)&data.v[4], &current->thread);
+			cvt_df(&data.dd, (float *)&data.v[4]);
 			preempt_enable();
 #else
 			return 0;
@@ -933,7 +933,7 @@ int fix_alignment(struct pt_regs *regs)
 #ifdef CONFIG_PPC_FPU
 		preempt_disable();
 		enable_kernel_fp();
-		cvt_fd((float *)&data.v[4], &data.dd, &current->thread);
+		cvt_fd((float *)&data.v[4], &data.dd);
 		preempt_enable();
 #else
 		return 0;
diff --git a/arch/powerpc/kernel/fpu.S b/arch/powerpc/kernel/fpu.S
index fc8f5b1..e86c040 100644
--- a/arch/powerpc/kernel/fpu.S
+++ b/arch/powerpc/kernel/fpu.S
@@ -163,24 +163,14 @@ END_FTR_SECTION_IFSET(CPU_FTR_VSX)
 /*
  * These are used in the alignment trap handler when emulating
  * single-precision loads and stores.
- * We restore and save the fpscr so the task gets the same result
- * and exceptions as if the cpu had performed the load or store.
  */
 
 _GLOBAL(cvt_fd)
-	lfd	0,THREAD_FPSCR(r5)	/* load up fpscr value */
-	MTFSF_L(0)
 	lfs	0,0(r3)
 	stfd	0,0(r4)
-	mffs	0
-	stfd	0,THREAD_FPSCR(r5)	/* save new fpscr value */
 	blr
 
 _GLOBAL(cvt_df)
-	lfd	0,THREAD_FPSCR(r5)	/* load up fpscr value */
-	MTFSF_L(0)
 	lfd	0,0(r3)
 	stfs	0,0(r4)
-	mffs	0
-	stfd	0,THREAD_FPSCR(r5)	/* save new fpscr value */
 	blr
diff --git a/arch/powerpc/kvm/book3s_paired_singles.c b/arch/powerpc/kvm/book3s_paired_singles.c
index 474f2e2..35a701f 100644
--- a/arch/powerpc/kvm/book3s_paired_singles.c
+++ b/arch/powerpc/kvm/book3s_paired_singles.c
@@ -159,7 +159,7 @@
 
 static inline void kvmppc_sync_qpr(struct kvm_vcpu *vcpu, int rt)
 {
-	kvm_cvt_df(&vcpu->arch.fpr[rt], &vcpu->arch.qpr[rt], &vcpu->arch.fpscr);
+	kvm_cvt_df(&vcpu->arch.fpr[rt], &vcpu->arch.qpr[rt]);
 }
 
 static void kvmppc_inject_pf(struct kvm_vcpu *vcpu, ulong eaddr, bool is_store)
@@ -204,7 +204,7 @@ static int kvmppc_emulate_fpr_load(struct kvm_run *run, struct kvm_vcpu *vcpu,
 	/* put in registers */
 	switch (ls_type) {
 	case FPU_LS_SINGLE:
-		kvm_cvt_fd((u32*)tmp, &vcpu->arch.fpr[rs], &vcpu->arch.fpscr);
+		kvm_cvt_fd((u32*)tmp, &vcpu->arch.fpr[rs]);
 		vcpu->arch.qpr[rs] = *((u32*)tmp);
 		break;
 	case FPU_LS_DOUBLE:
@@ -230,7 +230,7 @@ static int kvmppc_emulate_fpr_store(struct kvm_run *run, struct kvm_vcpu *vcpu,
 
 	switch (ls_type) {
 	case FPU_LS_SINGLE:
-		kvm_cvt_df(&vcpu->arch.fpr[rs], (u32*)tmp, &vcpu->arch.fpscr);
+		kvm_cvt_df(&vcpu->arch.fpr[rs], (u32*)tmp);
 		val = *((u32*)tmp);
 		len = sizeof(u32);
 		break;
@@ -296,7 +296,7 @@ static int kvmppc_emulate_psq_load(struct kvm_run *run, struct kvm_vcpu *vcpu,
 	emulated = EMULATE_DONE;
 
 	/* put in registers */
-	kvm_cvt_fd(&tmp[0], &vcpu->arch.fpr[rs], &vcpu->arch.fpscr);
+	kvm_cvt_fd(&tmp[0], &vcpu->arch.fpr[rs]);
 	vcpu->arch.qpr[rs] = tmp[1];
 
 	dprintk(KERN_INFO "KVM: PSQ_LD [0x%x, 0x%x] at 0x%lx (%d)\n", tmp[0],
@@ -314,7 +314,7 @@ static int kvmppc_emulate_psq_store(struct kvm_run *run, struct kvm_vcpu *vcpu,
 	u32 tmp[2];
 	int len = w ? sizeof(u32) : sizeof(u64);
 
-	kvm_cvt_df(&vcpu->arch.fpr[rs], &tmp[0], &vcpu->arch.fpscr);
+	kvm_cvt_df(&vcpu->arch.fpr[rs], &tmp[0]);
 	tmp[1] = vcpu->arch.qpr[rs];
 
 	r = kvmppc_st(vcpu, &addr, len, tmp, true);
@@ -516,9 +516,9 @@ static int kvmppc_ps_three_in(struct kvm_vcpu *vcpu, bool rc,
 	WARN_ON(rc);
 
 	/* PS0 */
-	kvm_cvt_df(&fpr[reg_in1], &ps0_in1, &vcpu->arch.fpscr);
-	kvm_cvt_df(&fpr[reg_in2], &ps0_in2, &vcpu->arch.fpscr);
-	kvm_cvt_df(&fpr[reg_in3], &ps0_in3, &vcpu->arch.fpscr);
+	kvm_cvt_df(&fpr[reg_in1], &ps0_in1);
+	kvm_cvt_df(&fpr[reg_in2], &ps0_in2);
+	kvm_cvt_df(&fpr[reg_in3], &ps0_in3);
 
 	if (scalar & SCALAR_LOW)
 		ps0_in2 = qpr[reg_in2];
@@ -529,7 +529,7 @@ static int kvmppc_ps_three_in(struct kvm_vcpu *vcpu, bool rc,
 			  ps0_in1, ps0_in2, ps0_in3, ps0_out);
 
 	if (!(scalar & SCALAR_NO_PS0))
-		kvm_cvt_fd(&ps0_out, &fpr[reg_out], &vcpu->arch.fpscr);
+		kvm_cvt_fd(&ps0_out, &fpr[reg_out]);
 
 	/* PS1 */
 	ps1_in1 = qpr[reg_in1];
@@ -566,12 +566,12 @@ static int kvmppc_ps_two_in(struct kvm_vcpu *vcpu, bool rc,
 	WARN_ON(rc);
 
 	/* PS0 */
-	kvm_cvt_df(&fpr[reg_in1], &ps0_in1, &vcpu->arch.fpscr);
+	kvm_cvt_df(&fpr[reg_in1], &ps0_in1);
 
 	if (scalar & SCALAR_LOW)
 		ps0_in2 = qpr[reg_in2];
 	else
-		kvm_cvt_df(&fpr[reg_in2], &ps0_in2, &vcpu->arch.fpscr);
+		kvm_cvt_df(&fpr[reg_in2], &ps0_in2);
 
 	func(&vcpu->arch.fpscr, &ps0_out, &ps0_in1, &ps0_in2);
 
@@ -579,7 +579,7 @@ static int kvmppc_ps_two_in(struct kvm_vcpu *vcpu, bool rc,
 		dprintk(KERN_INFO "PS2 ps0 -> f(0x%x, 0x%x) = 0x%x\n",
 				  ps0_in1, ps0_in2, ps0_out);
 
-		kvm_cvt_fd(&ps0_out, &fpr[reg_out], &vcpu->arch.fpscr);
+		kvm_cvt_fd(&ps0_out, &fpr[reg_out]);
 	}
 
 	/* PS1 */
@@ -615,13 +615,13 @@ static int kvmppc_ps_one_in(struct kvm_vcpu *vcpu, bool rc,
 	WARN_ON(rc);
 
 	/* PS0 */
-	kvm_cvt_df(&fpr[reg_in], &ps0_in, &vcpu->arch.fpscr);
+	kvm_cvt_df(&fpr[reg_in], &ps0_in);
 	func(&vcpu->arch.fpscr, &ps0_out, &ps0_in);
 
 	dprintk(KERN_INFO "PS1 ps0 -> f(0x%x) = 0x%x\n",
 			  ps0_in, ps0_out);
 
-	kvm_cvt_fd(&ps0_out, &fpr[reg_out], &vcpu->arch.fpscr);
+	kvm_cvt_fd(&ps0_out, &fpr[reg_out]);
 
 	/* PS1 */
 	ps1_in = qpr[reg_in];
@@ -671,7 +671,7 @@ int kvmppc_emulate_paired_single(struct kvm_run *run, struct kvm_vcpu *vcpu)
 #ifdef DEBUG
 	for (i = 0; i < ARRAY_SIZE(vcpu->arch.fpr); i++) {
 		u32 f;
-		kvm_cvt_df(&vcpu->arch.fpr[i], &f, &vcpu->arch.fpscr);
+		kvm_cvt_df(&vcpu->arch.fpr[i], &f);
 		dprintk(KERN_INFO "FPR[%d] = 0x%x / 0x%llx    QPR[%d] = 0x%x\n",
 			i, f, vcpu->arch.fpr[i], i, vcpu->arch.qpr[i]);
 	}
@@ -796,8 +796,7 @@ int kvmppc_emulate_paired_single(struct kvm_run *run, struct kvm_vcpu *vcpu)
 			vcpu->arch.fpr[ax_rd] = vcpu->arch.fpr[ax_ra];
 			/* vcpu->arch.qpr[ax_rd] = vcpu->arch.fpr[ax_rb]; */
 			kvm_cvt_df(&vcpu->arch.fpr[ax_rb],
-				   &vcpu->arch.qpr[ax_rd],
-				   &vcpu->arch.fpscr);
+				   &vcpu->arch.qpr[ax_rd]);
 			break;
 		case OP_4X_PS_MERGE01:
 			WARN_ON(rcomp);
@@ -808,19 +807,16 @@ int kvmppc_emulate_paired_single(struct kvm_run *run, struct kvm_vcpu *vcpu)
 			WARN_ON(rcomp);
 			/* vcpu->arch.fpr[ax_rd] = vcpu->arch.qpr[ax_ra]; */
 			kvm_cvt_fd(&vcpu->arch.qpr[ax_ra],
-				   &vcpu->arch.fpr[ax_rd],
-				   &vcpu->arch.fpscr);
+				   &vcpu->arch.fpr[ax_rd]);
 			/* vcpu->arch.qpr[ax_rd] = vcpu->arch.fpr[ax_rb]; */
 			kvm_cvt_df(&vcpu->arch.fpr[ax_rb],
-				   &vcpu->arch.qpr[ax_rd],
-				   &vcpu->arch.fpscr);
+				   &vcpu->arch.qpr[ax_rd]);
 			break;
 		case OP_4X_PS_MERGE11:
 			WARN_ON(rcomp);
 			/* vcpu->arch.fpr[ax_rd] = vcpu->arch.qpr[ax_ra]; */
 			kvm_cvt_fd(&vcpu->arch.qpr[ax_ra],
-				   &vcpu->arch.fpr[ax_rd],
-				   &vcpu->arch.fpscr);
+				   &vcpu->arch.fpr[ax_rd]);
 			vcpu->arch.qpr[ax_rd] = vcpu->arch.qpr[ax_rb];
 			break;
 		}
@@ -1255,7 +1251,7 @@ int kvmppc_emulate_paired_single(struct kvm_run *run, struct kvm_vcpu *vcpu)
 #ifdef DEBUG
 	for (i = 0; i < ARRAY_SIZE(vcpu->arch.fpr); i++) {
 		u32 f;
-		kvm_cvt_df(&vcpu->arch.fpr[i], &f, &vcpu->arch.fpscr);
+		kvm_cvt_df(&vcpu->arch.fpr[i], &f);
 		dprintk(KERN_INFO "FPR[%d] = 0x%x\n", i, f);
 	}
 #endif
diff --git a/arch/powerpc/kvm/fpu.S b/arch/powerpc/kvm/fpu.S
index cb34bbe..bf68d59 100644
--- a/arch/powerpc/kvm/fpu.S
+++ b/arch/powerpc/kvm/fpu.S
@@ -273,19 +273,11 @@ FPD_THREE_IN(fnmsub)
 FPD_THREE_IN(fnmadd)
 
 _GLOBAL(kvm_cvt_fd)
-	lfd	0,0(r5)			/* load up fpscr value */
-	MTFSF_L(0)
 	lfs	0,0(r3)
 	stfd	0,0(r4)
-	mffs	0
-	stfd	0,0(r5)			/* save new fpscr value */
 	blr
 
 _GLOBAL(kvm_cvt_df)
-	lfd	0,0(r5)			/* load up fpscr value */
-	MTFSF_L(0)
 	lfd	0,0(r3)
 	stfs	0,0(r4)
-	mffs	0
-	stfd	0,0(r5)			/* save new fpscr value */
 	blr
-- 
1.7.2.2


-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply related

* [PATCH] pmu: add compat_pmu_ioctl
From: Andreas Schwab @ 2010-08-21 21:32 UTC (permalink / raw)
  To: linuxppc-dev

The ioctls are actually compatible, but due to historical mistake the
numbers differ between 32bit and 64bit.

Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
---
 drivers/macintosh/via-pmu.c |   41 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 41 insertions(+), 0 deletions(-)

diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c
index 35bc273..610f247 100644
--- a/drivers/macintosh/via-pmu.c
+++ b/drivers/macintosh/via-pmu.c
@@ -2349,11 +2349,52 @@ static long pmu_unlocked_ioctl(struct file *filp,
 	return ret;
 }
 
+#ifdef CONFIG_COMPAT
+#define PMU_IOC_GET_BACKLIGHT32	_IOR('B', 1, u32)
+#define PMU_IOC_SET_BACKLIGHT32	_IOW('B', 2, u32)
+#define PMU_IOC_GET_MODEL32	_IOR('B', 3, u32)
+#define PMU_IOC_HAS_ADB32	_IOR('B', 4, u32)
+#define PMU_IOC_CAN_SLEEP32	_IOR('B', 5, u32)
+#define PMU_IOC_GRAB_BACKLIGHT32 _IOR('B', 6, u32)
+
+static long compat_pmu_ioctl (struct file *filp, u_int cmd, u_long arg)
+{
+	switch (cmd) {
+	case PMU_IOC_SLEEP:
+		break;
+	case PMU_IOC_GET_BACKLIGHT32:
+		cmd = PMU_IOC_GET_BACKLIGHT;
+		break;
+	case PMU_IOC_SET_BACKLIGHT32:
+		cmd = PMU_IOC_SET_BACKLIGHT;
+		break;
+	case PMU_IOC_GET_MODEL32:
+		cmd = PMU_IOC_GET_MODEL;
+		break;
+	case PMU_IOC_HAS_ADB32:
+		cmd = PMU_IOC_HAS_ADB;
+		break;
+	case PMU_IOC_CAN_SLEEP32:
+		cmd = PMU_IOC_CAN_SLEEP;
+		break;
+	case PMU_IOC_GRAB_BACKLIGHT32:
+		cmd = PMU_IOC_GRAB_BACKLIGHT;
+		break;
+	default:
+		return -ENOIOCTLCMD;
+	}
+	return pmu_unlocked_ioctl(filp, cmd, arg);
+}
+#endif
+
 static const struct file_operations pmu_device_fops = {
 	.read		= pmu_read,
 	.write		= pmu_write,
 	.poll		= pmu_fpoll,
 	.unlocked_ioctl	= pmu_unlocked_ioctl,
+#ifdef CONFIG_COMPAT
+	.compat_ioctl	= compat_pmu_ioctl,
+#endif
 	.open		= pmu_open,
 	.release	= pmu_release,
 };
-- 
1.7.2.2


-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply related

* Re: How to build the kernel without any optimization?
From: Nicholas Mc Guire @ 2010-08-21  7:31 UTC (permalink / raw)
  To: Shawn Jin; +Cc: ppcdev
In-Reply-To: <AANLkTinb9yJk10yE2nAT_exNaANHyFbAH59LOM=Jy7Oz@mail.gmail.com>

On Fri, 20 Aug 2010, Shawn Jin wrote:

> Hi,
> 
> I'm tracing the execution of ds1307_probe() and find that some of
> variables or function arguments cannot be printed in gdb because they
> are optimized out or not in the current context. This really gives
> some headache. Is there a way to build the kernel without any
> optimization? What gcc option shall I disable or add?
> 
> I already added the following to arch/powerpc/Makefile.
> 
> # Prevent GDB from jumping around in the code when trying to single step
> ifeq ($(CONFIG_DEBUG_KERNEL),y)
> KBUILD_CFLAGS           += -fno-schedule-insns -fno-schedule-insns2
> endif
>

much of the kernel can not be build without optimization - what you 
can do though is slectively try to disable optimization for specific
files by putting 

 CFLAGS_REMOVE_objfilenam.o = -SOME_OPT

in the Makefile. I think that is safer than what you did above as this would
always depend on the order of options that ultimately get passed to gcc.

hofrat 

^ permalink raw reply

* How to build the kernel without any optimization?
From: Shawn Jin @ 2010-08-21  6:59 UTC (permalink / raw)
  To: ppcdev

Hi,

I'm tracing the execution of ds1307_probe() and find that some of
variables or function arguments cannot be printed in gdb because they
are optimized out or not in the current context. This really gives
some headache. Is there a way to build the kernel without any
optimization? What gcc option shall I disable or add?

I already added the following to arch/powerpc/Makefile.

# Prevent GDB from jumping around in the code when trying to single step
ifeq ($(CONFIG_DEBUG_KERNEL),y)
KBUILD_CFLAGS           += -fno-schedule-insns -fno-schedule-insns2
endif

Thanks,
-Shawn.

^ permalink raw reply

* [PATCH] hvc_console: fix dropping of characters when output byte channel is full
From: Timur Tabi @ 2010-08-20 18:45 UTC (permalink / raw)
  To: linuxppc-dev, linux-kernel, benh, kumar.gala, amit.shah

hvc_console_print() calls the HVC client driver's put_chars() callback
to write some characters to the console.  If the callback returns 0, that
indicates that no characters were written (perhaps the output buffer is
full), but hvc_console_print() treats that as an error and discards the
rest of the buffer.

So change hvc_console_print() to just loop and call put_chars() again if it
returns a 0 return code.

This change makes hvc_console_print() behave more like hvc_push(), which
does check for a 0 return code and re-schedules itself.

Signed-off-by: Timur Tabi <timur@freescale.com>
---
 drivers/char/hvc_console.c |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/drivers/char/hvc_console.c b/drivers/char/hvc_console.c
index fa27d16..b4deffd 100644
--- a/drivers/char/hvc_console.c
+++ b/drivers/char/hvc_console.c
@@ -3,6 +3,7 @@
  * Copyright (C) 2001 Paul Mackerras <paulus@au.ibm.com>, IBM
  * Copyright (C) 2004 Benjamin Herrenschmidt <benh@kernel.crashing.org>, IBM Corp.
  * Copyright (C) 2004 IBM Corporation
+ * Copyright 2009 Freescale Semiconductor, Inc.
  *
  * Additional Author(s):
  *  Ryan S. Arnold <rsa@us.ibm.com>
@@ -141,6 +142,7 @@ static void hvc_console_print(struct console *co, const char *b,
 	char c[N_OUTBUF] __ALIGNED__;
 	unsigned i = 0, n = 0;
 	int r, donecr = 0, index = co->index;
+	unsigned int timeout = 1000000; /* Keep trying for up to one second */
 
 	/* Console access attempt outside of acceptable console range. */
 	if (index >= MAX_NR_HVC_CONSOLES)
@@ -152,6 +154,10 @@ static void hvc_console_print(struct console *co, const char *b,
 
 	while (count > 0 || i > 0) {
 		if (count > 0 && i < sizeof(c)) {
+			/* If the local buffer (c) is not full, then copy some
+			 * bytes from the input buffer to it. We stop when the
+			 * local buffer is full. \n is converted to \r\n.
+			 */
 			if (b[n] == '\n' && !donecr) {
 				c[i++] = '\r';
 				donecr = 1;
@@ -162,14 +168,25 @@ static void hvc_console_print(struct console *co, const char *b,
 			}
 		} else {
 			r = cons_ops[index]->put_chars(vtermnos[index], c, i);
-			if (r <= 0) {
+			if (r < 0) {
 				/* throw away chars on error */
 				i = 0;
 			} else if (r > 0) {
 				i -= r;
 				if (i > 0)
 					memmove(c, c+r, i);
+			} else {
+				/* If r == 0, then the client driver didn't do
+				 * anything, so wait 1us and try again.  If we
+				 * time out, then just exit.
+				 */
+				if (!--timeout)
+					return;
+				udelay(1);
+				continue;
 			}
+			/* Reset the timeout */
+			timeout = 1000000;
 		}
 	}
 }
-- 
1.7.0.1

^ permalink raw reply related

* [PATCH] Documentation: fix ozlabs.org mailing list address
From: Stephen Rothwell @ 2010-08-20  9:56 UTC (permalink / raw)
  To: Linus; +Cc: ppc-dev

This list moved to lists.ozlabs.org quite some time ago.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---
 Documentation/powerpc/hvcs.txt |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/Documentation/powerpc/hvcs.txt b/Documentation/powerpc/hvcs.txt
index f93462c..6d8be34 100644
--- a/Documentation/powerpc/hvcs.txt
+++ b/Documentation/powerpc/hvcs.txt
@@ -560,7 +560,7 @@ The proper channel for reporting bugs is either through the Linux OS
 distribution company that provided your OS or by posting issues to the
 PowerPC development mailing list at:
 
-linuxppc-dev@ozlabs.org
+linuxppc-dev@lists.ozlabs.org
 
 This request is to provide a documented and searchable public exchange
 of the problems and solutions surrounding this driver for the benefit of
-- 
1.7.1

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

^ permalink raw reply related

* [PATCH] MAINTAINERS: Fix ozlabs.org mailing list addresses
From: Stephen Rothwell @ 2010-08-20  9:52 UTC (permalink / raw)
  To: Linus; +Cc: cbe-oss-dev, lguest, ppc-dev, Christoph Hellwig

All these lists moved to lists.ozlabs.org quite a while ago.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---
 MAINTAINERS |   56 ++++++++++++++++++++++++++++----------------------------
 1 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index b5b8baa..433f353 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -456,7 +456,7 @@ F:	drivers/infiniband/hw/amso1100/
 
 AOA (Apple Onboard Audio) ALSA DRIVER
 M:	Johannes Berg <johannes@sipsolutions.net>
-L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
 L:	alsa-devel@alsa-project.org (moderated for non-subscribers)
 S:	Maintained
 F:	sound/aoa/
@@ -1472,8 +1472,8 @@ F:	include/linux/can/platform/
 
 CELL BROADBAND ENGINE ARCHITECTURE
 M:	Arnd Bergmann <arnd@arndb.de>
-L:	linuxppc-dev@ozlabs.org
-L:	cbe-oss-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
+L:	cbe-oss-dev@lists.ozlabs.org
 W:	http://www.ibm.com/developerworks/power/cell/
 S:	Supported
 F:	arch/powerpc/include/asm/cell*.h
@@ -2371,13 +2371,13 @@ F:	include/linux/fb.h
 FREESCALE DMA DRIVER
 M:	Li Yang <leoli@freescale.com>
 M:	Zhang Wei <zw@zh-kernel.org>
-L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
 S:	Maintained
 F:	drivers/dma/fsldma.*
 
 FREESCALE I2C CPM DRIVER
 M:	Jochen Friedrich <jochen@scram.de>
-L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
 L:	linux-i2c@vger.kernel.org
 S:	Maintained
 F:	drivers/i2c/busses/i2c-cpm.c
@@ -2393,7 +2393,7 @@ F:	drivers/video/imxfb.c
 FREESCALE SOC FS_ENET DRIVER
 M:	Pantelis Antoniou <pantelis.antoniou@gmail.com>
 M:	Vitaly Bordug <vbordug@ru.mvista.com>
-L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
 L:	netdev@vger.kernel.org
 S:	Maintained
 F:	drivers/net/fs_enet/
@@ -2401,7 +2401,7 @@ F:	include/linux/fs_enet_pd.h
 
 FREESCALE QUICC ENGINE LIBRARY
 M:	Timur Tabi <timur@freescale.com>
-L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
 S:	Supported
 F:	arch/powerpc/sysdev/qe_lib/
 F:	arch/powerpc/include/asm/*qe.h
@@ -2409,27 +2409,27 @@ F:	arch/powerpc/include/asm/*qe.h
 FREESCALE USB PERIPHERAL DRIVERS
 M:	Li Yang <leoli@freescale.com>
 L:	linux-usb@vger.kernel.org
-L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
 S:	Maintained
 F:	drivers/usb/gadget/fsl*
 
 FREESCALE QUICC ENGINE UCC ETHERNET DRIVER
 M:	Li Yang <leoli@freescale.com>
 L:	netdev@vger.kernel.org
-L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
 S:	Maintained
 F:	drivers/net/ucc_geth*
 
 FREESCALE QUICC ENGINE UCC UART DRIVER
 M:	Timur Tabi <timur@freescale.com>
-L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
 S:	Supported
 F:	drivers/serial/ucc_uart.c
 
 FREESCALE SOC SOUND DRIVERS
 M:	Timur Tabi <timur@freescale.com>
 L:	alsa-devel@alsa-project.org (moderated for non-subscribers)
-L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
 S:	Supported
 F:	sound/soc/fsl/fsl*
 F:	sound/soc/fsl/mpc8610_hpcd.c
@@ -2564,7 +2564,7 @@ F:	mm/memory-failure.c
 F:	mm/hwpoison-inject.c
 
 HYPERVISOR VIRTUAL CONSOLE DRIVER
-L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
 S:	Odd Fixes
 F:	drivers/char/hvc_*
 
@@ -3476,7 +3476,7 @@ F:	drivers/usb/misc/legousbtower.c
 
 LGUEST
 M:	Rusty Russell <rusty@rustcorp.com.au>
-L:	lguest@ozlabs.org
+L:	lguest@lists.ozlabs.org
 W:	http://lguest.ozlabs.org/
 S:	Maintained
 F:	Documentation/lguest/
@@ -3495,7 +3495,7 @@ LINUX FOR POWERPC (32-BIT AND 64-BIT)
 M:	Benjamin Herrenschmidt <benh@kernel.crashing.org>
 M:	Paul Mackerras <paulus@samba.org>
 W:	http://www.penguinppc.org/
-L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
 Q:	http://patchwork.ozlabs.org/project/linuxppc-dev/list/
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc.git
 S:	Supported
@@ -3505,14 +3505,14 @@ F:	arch/powerpc/
 LINUX FOR POWER MACINTOSH
 M:	Benjamin Herrenschmidt <benh@kernel.crashing.org>
 W:	http://www.penguinppc.org/
-L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
 S:	Maintained
 F:	arch/powerpc/platforms/powermac/
 F:	drivers/macintosh/
 
 LINUX FOR POWERPC EMBEDDED MPC5XXX
 M:	Grant Likely <grant.likely@secretlab.ca>
-L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
 T:	git git://git.secretlab.ca/git/linux-2.6.git
 S:	Maintained
 F:	arch/powerpc/platforms/512x/
@@ -3522,7 +3522,7 @@ LINUX FOR POWERPC EMBEDDED PPC4XX
 M:	Josh Boyer <jwboyer@linux.vnet.ibm.com>
 M:	Matt Porter <mporter@kernel.crashing.org>
 W:	http://www.penguinppc.org/
-L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx.git
 S:	Maintained
 F:	arch/powerpc/platforms/40x/
@@ -3531,7 +3531,7 @@ F:	arch/powerpc/platforms/44x/
 LINUX FOR POWERPC EMBEDDED XILINX VIRTEX
 M:	Grant Likely <grant.likely@secretlab.ca>
 W:	http://wiki.secretlab.ca/index.php/Linux_on_Xilinx_Virtex
-L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
 T:	git git://git.secretlab.ca/git/linux-2.6.git
 S:	Maintained
 F:	arch/powerpc/*/*virtex*
@@ -3541,20 +3541,20 @@ LINUX FOR POWERPC EMBEDDED PPC8XX
 M:	Vitaly Bordug <vitb@kernel.crashing.org>
 M:	Marcelo Tosatti <marcelo@kvack.org>
 W:	http://www.penguinppc.org/
-L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
 S:	Maintained
 F:	arch/powerpc/platforms/8xx/
 
 LINUX FOR POWERPC EMBEDDED PPC83XX AND PPC85XX
 M:	Kumar Gala <galak@kernel.crashing.org>
 W:	http://www.penguinppc.org/
-L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
 S:	Maintained
 F:	arch/powerpc/platforms/83xx/
 
 LINUX FOR POWERPC PA SEMI PWRFICIENT
 M:	Olof Johansson <olof@lixom.net>
-L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
 S:	Maintained
 F:	arch/powerpc/platforms/pasemi/
 F:	drivers/*/*pasemi*
@@ -4601,14 +4601,14 @@ F:	drivers/ata/sata_promise.*
 PS3 NETWORK SUPPORT
 M:	Geoff Levand <geoff@infradead.org>
 L:	netdev@vger.kernel.org
-L:	cbe-oss-dev@ozlabs.org
+L:	cbe-oss-dev@lists.ozlabs.org
 S:	Maintained
 F:	drivers/net/ps3_gelic_net.*
 
 PS3 PLATFORM SUPPORT
 M:	Geoff Levand <geoff@infradead.org>
-L:	linuxppc-dev@ozlabs.org
-L:	cbe-oss-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
+L:	cbe-oss-dev@lists.ozlabs.org
 S:	Maintained
 F:	arch/powerpc/boot/ps3*
 F:	arch/powerpc/include/asm/lv1call.h
@@ -4622,7 +4622,7 @@ F:	sound/ppc/snd_ps3*
 
 PS3VRAM DRIVER
 M:	Jim Paris <jim@jtan.com>
-L:	cbe-oss-dev@ozlabs.org
+L:	cbe-oss-dev@lists.ozlabs.org
 S:	Maintained
 F:	drivers/block/ps3vram.c
 
@@ -5068,7 +5068,7 @@ F:	drivers/mmc/host/sdhci.*
 
 SECURE DIGITAL HOST CONTROLLER INTERFACE, OPEN FIRMWARE BINDINGS (SDHCI-OF)
 M:	Anton Vorontsov <avorontsov@ru.mvista.com>
-L:	linuxppc-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
 L:	linux-mmc@vger.kernel.org
 S:	Maintained
 F:	drivers/mmc/host/sdhci-of.*
@@ -5485,8 +5485,8 @@ F:	drivers/net/spider_net*
 
 SPU FILE SYSTEM
 M:	Jeremy Kerr <jk@ozlabs.org>
-L:	linuxppc-dev@ozlabs.org
-L:	cbe-oss-dev@ozlabs.org
+L:	linuxppc-dev@lists.ozlabs.org
+L:	cbe-oss-dev@lists.ozlabs.org
 W:	http://www.ibm.com/developerworks/power/cell/
 S:	Supported
 F:	Documentation/filesystems/spufs.txt
-- 
1.7.1

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

^ permalink raw reply related

* Re: cc'ing old list
From: Stephen Rothwell @ 2010-08-20  9:52 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: ppc-dev
In-Reply-To: <20100820083658.GA26181@lst.de>

[-- Attachment #1: Type: text/plain, Size: 404 bytes --]

Hi Christoph,

On Fri, 20 Aug 2010 10:36:58 +0200 Christoph Hellwig <hch@lst.de> wrote:
>
> On Fri, Aug 20, 2010 at 01:26:42PM +1000, Stephen Rothwell wrote:
> > Yes, I do know that the kernel MAINTAINERS file has the old address. :-(
> 
> Time to fix it..

Yeah. Patch on its way ...

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

^ permalink raw reply

* Re: cc'ing old list
From: Christoph Hellwig @ 2010-08-20  8:36 UTC (permalink / raw)
  To: Stephen Rothwell; +Cc: ppc-dev
In-Reply-To: <20100820132642.2d413666.sfr@canb.auug.org.au>

On Fri, Aug 20, 2010 at 01:26:42PM +1000, Stephen Rothwell wrote:
> Yes, I do know that the kernel MAINTAINERS file has the old address. :-(

Time to fix it..

^ permalink raw reply

* Re: [PATCH v2 0/3] Misc. bug fixes for ppc32
From: Simon Horman @ 2010-08-20  8:27 UTC (permalink / raw)
  To: Matthew McClintock
  Cc: muvarov, linuxppc-dev, Kumar Gala, kexec,
	Sebastian Andrzej Siewior
In-Reply-To: <1282193811-23098-1-git-send-email-msm@freescale.com>

On Wed, Aug 18, 2010 at 11:56:48PM -0500, Matthew McClintock wrote:
> This patch series fixes a few issues I have discovered with my previous
> patch series. Nothing new has been added.

Thanks, all applied.

^ permalink raw reply

* Re: [PATCH v4] powerpc/mpc8xxx_gpio.c: extend the driver to support mpc512x gpios
From: Peter Korsgaard @ 2010-08-20  7:00 UTC (permalink / raw)
  To: Anatolij Gustschin; +Cc: linuxppc-dev, Wolfgang Denk, Detlev Zundel
In-Reply-To: <1281333528-20694-1-git-send-email-agust@denx.de>

>>>>> "Anatolij" == Anatolij Gustschin <agust@denx.de> writes:

 Anatolij> The GPIO controller of MPC512x is slightly different from
 Anatolij> 8xxx GPIO controllers. The register interface is the same
 Anatolij> except the external interrupt control register. The MPC512x
 Anatolij> GPIO controller differentiates between four interrupt event
 Anatolij> types and therefore provides two interrupt control registers,
 Anatolij> GPICR1 and GPICR2. GPIO[0:15] interrupt event types are
 Anatolij> configured in GPICR1 register, GPIO[16:31] - in GPICR2 register.

 Anatolij> This patch adds MPC512x speciffic set_type() callback and
 Anatolij> updates config file and comments. Additionally the gpio chip
 Anatolij> registration function is changed to use for_each_matching_node()
 Anatolij> preventing multiple registration if a node claimes compatibility
 Anatolij> with another gpio controller type.

 Anatolij> Signed-off-by: Anatolij Gustschin <agust@denx.de>

Sorry, was away on holiday.

Acked-by: Peter Korsgaard <jacmet@sunsite.dk>

-- 
Bye, Peter Korsgaard

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox