* Re: Next April 28: boot failure on PowerPC with SLQB
From: Nick Piggin @ 2009-04-30 11:18 UTC (permalink / raw)
To: Stephen Rothwell
Cc: Christoph Lameter, linux-kernel, linuxppc-dev, Pekka Enberg,
linux-next
In-Reply-To: <20090430210004.05a61841.sfr@canb.auug.org.au>
On Thu, Apr 30, 2009 at 09:00:04PM +1000, Stephen Rothwell wrote:
> Hi Pekka, Nick,
>
> On Thu, 30 Apr 2009 13:38:04 +0300 Pekka Enberg <penberg@cs.helsinki.fi> wrote:
> >
> > Stephen, does this patch fix all the boot problems for you as well?
>
> Unfortunately not, I am still getting this:
>
> Memory: 1967708k/2097152k available (9836k kernel code, 129444k reserved, 1440k data, 8422k bss, 2092k init)
> Calibrating delay loop... 1021.95 BogoMIPS (lpj=2043904)
> Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
> Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
> Mount-cache hash table entries: 256
> Unable to handle kernel paging request for data at address 0x00000008
> Faulting instruction address: 0xc00000000010ea18
> Oops: Kernel access of bad area, sig: 11 [#1]
> SMP NR_CPUS=128 NUMA pSeries
> Modules linked in:
> NIP: c00000000010ea18 LR: c00000000010e9e8 CTR: 0000000000000001
> REGS: c000000000b07690 TRAP: 0300 Not tainted (2.6.30-rc3-autokern1)
> MSR: 8000000000009032 <EE,ME,IR,DR> CR: 48000082 XER: 00000005
> DAR: 0000000000000008, DSISR: 0000000042000000
> TASK = c0000000009d55d0[0] 'swapper' THREAD: c000000000b04000 CPU: 0
> GPR00: c00000007e001030 c000000000b07910 c000000000b05588 c000000000b4a680
> GPR04: c00000007e001000 c0000000009d5f18 0000000000000002 c0000000009d5f18
> GPR08: 000000000000001a 0000000000000001 0000000000000000 0000000000000001
> GPR12: 0000000088000084 c000000000b53280 0000000000000000 0000000003500000
> GPR16: c0000000006c8f70 c0000000006c76e8 0000000000000000 00000000003d8800
> GPR20: 0000000003cc7d90 c0000000007c7d90 0000000000000010 0000000000000000
> GPR24: c000000000b656f0 f000000003347488 c000000000b4a680 f000000003347488
> GPR28: c00000007e001180 c00000007e001000 c000000000a6f010 f0000000033474a8
> NIP [c00000000010ea18] .__slab_alloc_page+0x380/0x3dc
> LR [c00000000010e9e8] .__slab_alloc_page+0x350/0x3dc
> Call Trace:
> [c000000000b07910] [c00000000010e9e8] .__slab_alloc_page+0x350/0x3dc (unreliable)
> [c000000000b079d0] [c00000000010f408] .__remote_slab_alloc+0x60/0x138
> [c000000000b07a80] [c000000000110d40] .__kmalloc_track_caller+0xb4/0x23c
> [c000000000b07b30] [c0000000000ec6e8] .kstrdup+0x4c/0x8c
> [c000000000b07bd0] [c000000000136f88] .alloc_vfsmnt+0xb0/0x178
> [c000000000b07c70] [c00000000011cb80] .vfs_kern_mount+0x40/0xf8
> [c000000000b07d10] [c0000000007ae460] .sysfs_init+0x90/0x108
> [c000000000b07db0] [c0000000007ad058] .mnt_init+0xbc/0x254
> [c000000000b07e50] [c0000000007aca00] .vfs_caches_init+0x150/0x184
> [c000000000b07ee0] [c000000000790a30] .start_kernel+0x418/0x484
> [c000000000b07f90] [c000000000008368] .start_here_common+0x1c/0x34
> Instruction dump:
> 60000000 e93d0040 e97d0028 381d0030 7fa4eb78 e95d0030 7f43d378 39290001
> 396b0001 f93d0040 f97d0028 f95b0020 <fbea0008> fbfd0030 f81f0008 4bfffb59
> ---[ end trace 31fd0ba7d8756001 ]---
>
> This is back to what I got before Nick's first patch.
>
> This partition has 2G of memory on node 1 (nothing in node 0) starting at
> address 0. The kernel is using 64k pages.
OK thanks. So I think we have 2 problems. One with MAX_ORDER <= 9
that is fixed by the previous patch, and another which is probably
due to having no memory on node 0 which I will take another look
at now.
We can merge the previous patch now, though.
> Let me now if I can tell you anything else or try something.
Thanks,
Nick
^ permalink raw reply
* Re: Next April 28: boot failure on PowerPC with SLQB
From: Pekka Enberg @ 2009-04-30 11:10 UTC (permalink / raw)
To: Stephen Rothwell
Cc: Nick Piggin, Christoph Lameter, linux-kernel, linuxppc-dev,
linux-next
In-Reply-To: <20090430210004.05a61841.sfr@canb.auug.org.au>
On Thu, Apr 30, 2009 at 2:00 PM, Stephen Rothwell <sfr@canb.auug.org.au> wr=
ote:
> Hi Pekka, Nick,
>
> On Thu, 30 Apr 2009 13:38:04 +0300 Pekka Enberg <penberg@cs.helsinki.fi> =
wrote:
>>
>> Stephen, does this patch fix all the boot problems for you as well?
>
> Unfortunately not, I am still getting this:
>
> Memory: 1967708k/2097152k available (9836k kernel code, 129444k reserved,=
1440k data, 8422k bss, 2092k init)
> Calibrating delay loop... 1021.95 BogoMIPS (lpj=3D2043904)
> Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
> Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
> Mount-cache hash table entries: 256
> Unable to handle kernel paging request for data at address 0x00000008
> Faulting instruction address: 0xc00000000010ea18
> Oops: Kernel access of bad area, sig: 11 [#1]
> SMP NR_CPUS=3D128 NUMA pSeries
> Modules linked in:
> NIP: c00000000010ea18 LR: c00000000010e9e8 CTR: 0000000000000001
> REGS: c000000000b07690 TRAP: 0300 =A0 Not tainted =A0(2.6.30-rc3-autokern=
1)
> MSR: 8000000000009032 <EE,ME,IR,DR> =A0CR: 48000082 =A0XER: 00000005
> DAR: 0000000000000008, DSISR: 0000000042000000
> TASK =3D c0000000009d55d0[0] 'swapper' THREAD: c000000000b04000 CPU: 0
> GPR00: c00000007e001030 c000000000b07910 c000000000b05588 c000000000b4a68=
0
> GPR04: c00000007e001000 c0000000009d5f18 0000000000000002 c0000000009d5f1=
8
> GPR08: 000000000000001a 0000000000000001 0000000000000000 000000000000000=
1
> GPR12: 0000000088000084 c000000000b53280 0000000000000000 000000000350000=
0
> GPR16: c0000000006c8f70 c0000000006c76e8 0000000000000000 00000000003d880=
0
> GPR20: 0000000003cc7d90 c0000000007c7d90 0000000000000010 000000000000000=
0
> GPR24: c000000000b656f0 f000000003347488 c000000000b4a680 f00000000334748=
8
> GPR28: c00000007e001180 c00000007e001000 c000000000a6f010 f0000000033474a=
8
> NIP [c00000000010ea18] .__slab_alloc_page+0x380/0x3dc
> LR [c00000000010e9e8] .__slab_alloc_page+0x350/0x3dc
> Call Trace:
> [c000000000b07910] [c00000000010e9e8] .__slab_alloc_page+0x350/0x3dc (unr=
eliable)
> [c000000000b079d0] [c00000000010f408] .__remote_slab_alloc+0x60/0x138
> [c000000000b07a80] [c000000000110d40] .__kmalloc_track_caller+0xb4/0x23c
> [c000000000b07b30] [c0000000000ec6e8] .kstrdup+0x4c/0x8c
> [c000000000b07bd0] [c000000000136f88] .alloc_vfsmnt+0xb0/0x178
> [c000000000b07c70] [c00000000011cb80] .vfs_kern_mount+0x40/0xf8
> [c000000000b07d10] [c0000000007ae460] .sysfs_init+0x90/0x108
> [c000000000b07db0] [c0000000007ad058] .mnt_init+0xbc/0x254
> [c000000000b07e50] [c0000000007aca00] .vfs_caches_init+0x150/0x184
> [c000000000b07ee0] [c000000000790a30] .start_kernel+0x418/0x484
> [c000000000b07f90] [c000000000008368] .start_here_common+0x1c/0x34
> Instruction dump:
> 60000000 e93d0040 e97d0028 381d0030 7fa4eb78 e95d0030 7f43d378 39290001
> 396b0001 f93d0040 f97d0028 f95b0020 <fbea0008> fbfd0030 f81f0008 4bfffb59
> ---[ end trace 31fd0ba7d8756001 ]---
>
> This is back to what I got before Nick's first patch.
>
> This partition has 2G of memory on node 1 (nothing in node 0) starting at
> address 0. =A0The kernel is using 64k pages.
>
> Let me now if I can tell you anything else or try something.
I'm no good in reading ppc oopses but I'd guess we're trying to
allocate memory on node 0 that doesn't have any of the necessary data
structures set up?
Btw, Nick, I applied the patch already:
http://git.kernel.org/?p=3Dlinux/kernel/git/penberg/slab-2.6.git;a=3Dcommit=
;h=3D908fdd91ff07a2cb5fb316060f302c22080a23c9
so any fixes for Stephen's case needs to be on top of that.
Pekka
^ permalink raw reply
* Re: Next April 28: boot failure on PowerPC with SLQB
From: Stephen Rothwell @ 2009-04-30 11:00 UTC (permalink / raw)
To: Pekka Enberg
Cc: Nick Piggin, Christoph Lameter, linux-kernel, linuxppc-dev,
linux-next
In-Reply-To: <1241087884.19252.5.camel@penberg-laptop>
[-- Attachment #1: Type: text/plain, Size: 3134 bytes --]
Hi Pekka, Nick,
On Thu, 30 Apr 2009 13:38:04 +0300 Pekka Enberg <penberg@cs.helsinki.fi> wrote:
>
> Stephen, does this patch fix all the boot problems for you as well?
Unfortunately not, I am still getting this:
Memory: 1967708k/2097152k available (9836k kernel code, 129444k reserved, 1440k data, 8422k bss, 2092k init)
Calibrating delay loop... 1021.95 BogoMIPS (lpj=2043904)
Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
Mount-cache hash table entries: 256
Unable to handle kernel paging request for data at address 0x00000008
Faulting instruction address: 0xc00000000010ea18
Oops: Kernel access of bad area, sig: 11 [#1]
SMP NR_CPUS=128 NUMA pSeries
Modules linked in:
NIP: c00000000010ea18 LR: c00000000010e9e8 CTR: 0000000000000001
REGS: c000000000b07690 TRAP: 0300 Not tainted (2.6.30-rc3-autokern1)
MSR: 8000000000009032 <EE,ME,IR,DR> CR: 48000082 XER: 00000005
DAR: 0000000000000008, DSISR: 0000000042000000
TASK = c0000000009d55d0[0] 'swapper' THREAD: c000000000b04000 CPU: 0
GPR00: c00000007e001030 c000000000b07910 c000000000b05588 c000000000b4a680
GPR04: c00000007e001000 c0000000009d5f18 0000000000000002 c0000000009d5f18
GPR08: 000000000000001a 0000000000000001 0000000000000000 0000000000000001
GPR12: 0000000088000084 c000000000b53280 0000000000000000 0000000003500000
GPR16: c0000000006c8f70 c0000000006c76e8 0000000000000000 00000000003d8800
GPR20: 0000000003cc7d90 c0000000007c7d90 0000000000000010 0000000000000000
GPR24: c000000000b656f0 f000000003347488 c000000000b4a680 f000000003347488
GPR28: c00000007e001180 c00000007e001000 c000000000a6f010 f0000000033474a8
NIP [c00000000010ea18] .__slab_alloc_page+0x380/0x3dc
LR [c00000000010e9e8] .__slab_alloc_page+0x350/0x3dc
Call Trace:
[c000000000b07910] [c00000000010e9e8] .__slab_alloc_page+0x350/0x3dc (unreliable)
[c000000000b079d0] [c00000000010f408] .__remote_slab_alloc+0x60/0x138
[c000000000b07a80] [c000000000110d40] .__kmalloc_track_caller+0xb4/0x23c
[c000000000b07b30] [c0000000000ec6e8] .kstrdup+0x4c/0x8c
[c000000000b07bd0] [c000000000136f88] .alloc_vfsmnt+0xb0/0x178
[c000000000b07c70] [c00000000011cb80] .vfs_kern_mount+0x40/0xf8
[c000000000b07d10] [c0000000007ae460] .sysfs_init+0x90/0x108
[c000000000b07db0] [c0000000007ad058] .mnt_init+0xbc/0x254
[c000000000b07e50] [c0000000007aca00] .vfs_caches_init+0x150/0x184
[c000000000b07ee0] [c000000000790a30] .start_kernel+0x418/0x484
[c000000000b07f90] [c000000000008368] .start_here_common+0x1c/0x34
Instruction dump:
60000000 e93d0040 e97d0028 381d0030 7fa4eb78 e95d0030 7f43d378 39290001
396b0001 f93d0040 f97d0028 f95b0020 <fbea0008> fbfd0030 f81f0008 4bfffb59
---[ end trace 31fd0ba7d8756001 ]---
This is back to what I got before Nick's first patch.
This partition has 2G of memory on node 1 (nothing in node 0) starting at
address 0. The kernel is using 64k pages.
Let me now if I can tell you anything else or try something.
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply
* Re: Next April 28: boot failure on PowerPC with SLQB
From: Pekka Enberg @ 2009-04-30 10:38 UTC (permalink / raw)
To: Nick Piggin
Cc: Stephen Rothwell, Christoph Lameter, linux-kernel, linuxppc-dev,
linux-next
In-Reply-To: <20090430103528.GA6900@wotan.suse.de>
On Thu, 2009-04-30 at 12:35 +0200, Nick Piggin wrote:
> On Thu, Apr 30, 2009 at 03:17:12PM +0530, Sachin Sant wrote:
> > Nick Piggin wrote:
> > >Hmm, forget that. Actually my last patch had a silly mistake because I
> > >forgot MAX_ORDER shift is applied to PAGE_SIZE, rather than 1. So
> > >kmalloc(PAGE_SIZE) was failing as too large.
> > >
> > >This patch should do the trick I hope.
> > >
> > Yes this patch fixed the issue for me. Thanks Nick.
>
> Thanks very much for reporting and testing.
>
> Pekka, can you apply this patch please?
Sure. Sachin, can I add a "Reported-by" and "Tested-by" tags from you to
the patch description?
Stephen, does this patch fix all the boot problems for you as well?
> --
> SLQB: fix slab calculation
>
> SLQB didn't consider MAX_ORDER when defining which sizes of kmalloc
> slabs to create. It panics at boot if it tries to create a cache
> which exceeds MAX_ORDER-1.
Nit: this _really_ needs a pointer to the discussion or bit more details
on the issue. But I can fix that when I merge the patch.
>
> Signed-off-by: Nick Piggin <npiggin@suse.de>
> ---
> include/linux/slqb_def.h | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> Index: linux-2.6/include/linux/slqb_def.h
> ===================================================================
> --- linux-2.6.orig/include/linux/slqb_def.h
> +++ linux-2.6/include/linux/slqb_def.h
> @@ -172,7 +172,8 @@ struct kmem_cache {
> #endif
>
> #define KMALLOC_SHIFT_LOW ilog2(KMALLOC_MIN_SIZE)
> -#define KMALLOC_SHIFT_SLQB_HIGH (PAGE_SHIFT + 9)
> +#define KMALLOC_SHIFT_SLQB_HIGH (PAGE_SHIFT + \
> + ((9 <= (MAX_ORDER - 1)) ? 9 : (MAX_ORDER - 1)))
>
> extern struct kmem_cache kmalloc_caches[KMALLOC_SHIFT_SLQB_HIGH + 1];
> extern struct kmem_cache kmalloc_caches_dma[KMALLOC_SHIFT_SLQB_HIGH + 1];
^ permalink raw reply
* Re: Next April 28: boot failure on PowerPC with SLQB
From: Nick Piggin @ 2009-04-30 10:35 UTC (permalink / raw)
To: Sachin Sant
Cc: Stephen Rothwell, Christoph Lameter, linux-kernel, linuxppc-dev,
Pekka Enberg, linux-next
In-Reply-To: <49F973A0.8070106@in.ibm.com>
On Thu, Apr 30, 2009 at 03:17:12PM +0530, Sachin Sant wrote:
> Nick Piggin wrote:
> >Hmm, forget that. Actually my last patch had a silly mistake because I
> >forgot MAX_ORDER shift is applied to PAGE_SIZE, rather than 1. So
> >kmalloc(PAGE_SIZE) was failing as too large.
> >
> >This patch should do the trick I hope.
> >
> Yes this patch fixed the issue for me. Thanks Nick.
Thanks very much for reporting and testing.
Pekka, can you apply this patch please?
--
SLQB: fix slab calculation
SLQB didn't consider MAX_ORDER when defining which sizes of kmalloc
slabs to create. It panics at boot if it tries to create a cache
which exceeds MAX_ORDER-1.
Signed-off-by: Nick Piggin <npiggin@suse.de>
---
include/linux/slqb_def.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: linux-2.6/include/linux/slqb_def.h
===================================================================
--- linux-2.6.orig/include/linux/slqb_def.h
+++ linux-2.6/include/linux/slqb_def.h
@@ -172,7 +172,8 @@ struct kmem_cache {
#endif
#define KMALLOC_SHIFT_LOW ilog2(KMALLOC_MIN_SIZE)
-#define KMALLOC_SHIFT_SLQB_HIGH (PAGE_SHIFT + 9)
+#define KMALLOC_SHIFT_SLQB_HIGH (PAGE_SHIFT + \
+ ((9 <= (MAX_ORDER - 1)) ? 9 : (MAX_ORDER - 1)))
extern struct kmem_cache kmalloc_caches[KMALLOC_SHIFT_SLQB_HIGH + 1];
extern struct kmem_cache kmalloc_caches_dma[KMALLOC_SHIFT_SLQB_HIGH + 1];
^ permalink raw reply
* Re: Next April 28: boot failure on PowerPC with SLQB
From: Sachin Sant @ 2009-04-30 9:47 UTC (permalink / raw)
To: Nick Piggin
Cc: Stephen Rothwell, Christoph Lameter, linux-kernel, linuxppc-dev,
Pekka Enberg, linux-next
In-Reply-To: <20090430064127.GF23746@wotan.suse.de>
Nick Piggin wrote:
> Hmm, forget that. Actually my last patch had a silly mistake because I
> forgot MAX_ORDER shift is applied to PAGE_SIZE, rather than 1. So
> kmalloc(PAGE_SIZE) was failing as too large.
>
> This patch should do the trick I hope.
>
Yes this patch fixed the issue for me. Thanks Nick.
Regards
-Sachin
> Thanks,
> Nick
> ---
> include/linux/slqb_def.h | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> Index: linux-2.6/include/linux/slqb_def.h
> ===================================================================
> --- linux-2.6.orig/include/linux/slqb_def.h
> +++ linux-2.6/include/linux/slqb_def.h
> @@ -172,7 +172,8 @@ struct kmem_cache {
> #endif
>
> #define KMALLOC_SHIFT_LOW ilog2(KMALLOC_MIN_SIZE)
> -#define KMALLOC_SHIFT_SLQB_HIGH (PAGE_SHIFT + 9)
> +#define KMALLOC_SHIFT_SLQB_HIGH (PAGE_SHIFT + \
> + ((9 <= (MAX_ORDER - 1)) ? 9 : (MAX_ORDER - 1)))
>
> extern struct kmem_cache kmalloc_caches[KMALLOC_SHIFT_SLQB_HIGH + 1];
> extern struct kmem_cache kmalloc_caches_dma[KMALLOC_SHIFT_SLQB_HIGH + 1];
> --
> To unsubscribe from this list: send the line "unsubscribe linux-next" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>
--
---------------------------------
Sachin Sant
IBM Linux Technology Center
India Systems and Technology Labs
Bangalore, India
---------------------------------
^ permalink raw reply
* Re: [PATCH] [MTD] ofpart: Partitions at same address cannot have thesame name v3
From: Ricardo Ribalda Delgado @ 2009-04-30 8:26 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: Scott Wood, linuxppc-dev, David.Woodhouse
In-Reply-To: <D18D3A18-4388-4F0E-A688-BF375F9C7AB0@kernel.crashing.org>
Hello
>
> Ah! =A0After writing my original reply, I read the documentation,
> and this had me confused.
>
> 4b08e14 looks wrong to me. =A0It also didn't update the documentation.
So, what shall we do, revert 4b08e14 or apply this patch changing the
name to "linux,mtd,partition" or similar.... ?
Regards
--=20
Ricardo Ribalda
http://www.eps.uam.es/~rribalda/
^ permalink raw reply
* [PATCH 4/4] powerpc: Add 2.06 tlbie mnemonics
From: Michael Neuling @ 2009-04-30 6:58 UTC (permalink / raw)
To: Michael Neuling, Paul Mackerras, Benjamin Herrenschmidt
Cc: linuxppc-dev, Milton Miller
In-Reply-To: <1241074681.528764.881549582503.qpush@pale>
From: Milton Miller <miltonm@bga.com>
This adds the PowerPC 2.06 tlbie mnemonics and keeps backwards
compatibilty for CPUs before 2.06.
Only useful for bare metal systems.
Signed-off-by: Milton Miller <miltonm@bga.com>
Signed-off-by: Michael Neuling <mikey@neuling.org>
---
arch/powerpc/include/asm/mmu.h | 5 +++++
arch/powerpc/include/asm/ppc-opcode.h | 4 ++++
arch/powerpc/kernel/cputable.c | 6 ++++--
arch/powerpc/mm/hash_native_64.c | 13 +++++++++++--
4 files changed, 24 insertions(+), 4 deletions(-)
Index: linux-2.6-ozlabs/arch/powerpc/include/asm/mmu.h
===================================================================
--- linux-2.6-ozlabs.orig/arch/powerpc/include/asm/mmu.h
+++ linux-2.6-ozlabs/arch/powerpc/include/asm/mmu.h
@@ -52,6 +52,11 @@
*/
#define MMU_FTR_NEED_DTLB_SW_LRU ASM_CONST(0x00200000)
+/* This indicates that the processor uses the ISA 2.06 server tlbie
+ * mnemonics
+ */
+#define MMU_FTR_TLBIE_206 ASM_CONST(0x00400000)
+
#ifndef __ASSEMBLY__
#include <asm/cputable.h>
Index: linux-2.6-ozlabs/arch/powerpc/include/asm/ppc-opcode.h
===================================================================
--- linux-2.6-ozlabs.orig/arch/powerpc/include/asm/ppc-opcode.h
+++ linux-2.6-ozlabs/arch/powerpc/include/asm/ppc-opcode.h
@@ -45,12 +45,14 @@
#define PPC_INST_STSWI 0x7c0005aa
#define PPC_INST_STSWX 0x7c00052a
#define PPC_INST_STXVD2X 0x7c000798
+#define PPC_INST_TLBIE 0x7c000264
#define PPC_INST_TLBILX 0x7c000024
#define PPC_INST_WAIT 0x7c00007c
/* macros to insert fields into opcodes */
#define __PPC_RA(a) (((a) & 0x1f) << 16)
#define __PPC_RB(b) (((b) & 0x1f) << 11)
+#define __PPC_RS(s) (((s) & 0x1f) << 21)
#define __PPC_XS(s) ((((s) & 0x1f) << 21) | (((s) & 0x20) >> 5))
#define __PPC_T_TLB(t) (((t) & 0x3) << 21)
#define __PPC_WC(w) (((w) & 0x3) << 21)
@@ -72,6 +74,8 @@
#define PPC_TLBILX_VA(a, b) PPC_TLBILX(3, a, b)
#define PPC_WAIT(w) stringify_in_c(.long PPC_INST_WAIT | \
__PPC_WC(w))
+#define PPC_TLBIE(lp,a) stringify_in_c(.long PPC_INST_TLBIE | \
+ __PPC_RB(a) | __PPC_RS(lp))
/*
* Define what the VSX XX1 form instructions will look like, then add
Index: linux-2.6-ozlabs/arch/powerpc/kernel/cputable.c
===================================================================
--- linux-2.6-ozlabs.orig/arch/powerpc/kernel/cputable.c
+++ linux-2.6-ozlabs/arch/powerpc/kernel/cputable.c
@@ -425,7 +425,8 @@ static struct cpu_spec __initdata cpu_sp
.cpu_name = "POWER7 (architected)",
.cpu_features = CPU_FTRS_POWER7,
.cpu_user_features = COMMON_USER_POWER7,
- .mmu_features = MMU_FTR_HPTE_TABLE,
+ .mmu_features = MMU_FTR_HPTE_TABLE |
+ MMU_FTR_TLBIE_206,
.icache_bsize = 128,
.dcache_bsize = 128,
.machine_check = machine_check_generic,
@@ -438,7 +439,8 @@ static struct cpu_spec __initdata cpu_sp
.cpu_name = "POWER7 (raw)",
.cpu_features = CPU_FTRS_POWER7,
.cpu_user_features = COMMON_USER_POWER7,
- .mmu_features = MMU_FTR_HPTE_TABLE,
+ .mmu_features = MMU_FTR_HPTE_TABLE |
+ MMU_FTR_TLBIE_206,
.icache_bsize = 128,
.dcache_bsize = 128,
.num_pmcs = 6,
Index: linux-2.6-ozlabs/arch/powerpc/mm/hash_native_64.c
===================================================================
--- linux-2.6-ozlabs.orig/arch/powerpc/mm/hash_native_64.c
+++ linux-2.6-ozlabs/arch/powerpc/mm/hash_native_64.c
@@ -27,6 +27,7 @@
#include <asm/cputable.h>
#include <asm/udbg.h>
#include <asm/kexec.h>
+#include <asm/ppc-opcode.h>
#ifdef DEBUG_LOW
#define DBG_LOW(fmt...) udbg_printf(fmt)
@@ -49,14 +50,21 @@ static inline void __tlbie(unsigned long
case MMU_PAGE_4K:
va &= ~0xffful;
va |= ssize << 8;
- asm volatile("tlbie %0,0" : : "r" (va) : "memory");
+ asm volatile(ASM_MMU_FTR_IFCLR("tlbie %0,0", PPC_TLBIE(%1,%0),
+ %2)
+ : : "r" (va), "r"(0), "i" (MMU_FTR_TLBIE_206)
+ : "memory");
break;
default:
penc = mmu_psize_defs[psize].penc;
va &= ~((1ul << mmu_psize_defs[psize].shift) - 1);
va |= penc << 12;
va |= ssize << 8;
- asm volatile("tlbie %0,1" : : "r" (va) : "memory");
+ va |= 1; /* L */
+ asm volatile(ASM_MMU_FTR_IFCLR("tlbie %0,1", PPC_TLBIE(%1,%0),
+ %2)
+ : : "r" (va), "r"(0), "i" (MMU_FTR_TLBIE_206)
+ : "memory");
break;
}
}
@@ -80,6 +88,7 @@ static inline void __tlbiel(unsigned lon
va &= ~((1ul << mmu_psize_defs[psize].shift) - 1);
va |= penc << 12;
va |= ssize << 8;
+ va |= 1; /* L */
asm volatile(".long 0x7c000224 | (%0 << 11) | (1 << 21)"
: : "r"(va) : "memory");
break;
^ permalink raw reply
* [PATCH 2/4] powerpc: Move VSX load/stores into ppc-opcode.h
From: Michael Neuling @ 2009-04-30 6:58 UTC (permalink / raw)
To: Michael Neuling, Paul Mackerras, Benjamin Herrenschmidt
Cc: linuxppc-dev, Milton Miller
In-Reply-To: <1241074681.528764.881549582503.qpush@pale>
Cleans up the VSX load/store instructions by moving them into
ppc-opcode.h.
Signed-off-by: Michael Neuling <mikey@neuling.org>
---
arch/powerpc/include/asm/ppc-opcode.h | 13 +++++++++++++
arch/powerpc/include/asm/ppc_asm.h | 10 ----------
2 files changed, 13 insertions(+), 10 deletions(-)
Index: linux-2.6-ozlabs/arch/powerpc/include/asm/ppc-opcode.h
===================================================================
--- linux-2.6-ozlabs.orig/arch/powerpc/include/asm/ppc-opcode.h
+++ linux-2.6-ozlabs/arch/powerpc/include/asm/ppc-opcode.h
@@ -25,6 +25,7 @@
#define PPC_INST_LSWI 0x7c0004aa
#define PPC_INST_LSWX 0x7c00042a
#define PPC_INST_LWSYNC 0x7c2004ac
+#define PPC_INST_LXVD2X 0x7c000698
#define PPC_INST_MCRXR 0x7c000400
#define PPC_INST_MCRXR_MASK 0xfc0007fe
#define PPC_INST_MFSPR_PVR 0x7c1f42a6
@@ -43,12 +44,14 @@
#define PPC_INST_STSWI 0x7c0005aa
#define PPC_INST_STSWX 0x7c00052a
+#define PPC_INST_STXVD2X 0x7c000798
#define PPC_INST_TLBILX 0x7c000024
#define PPC_INST_WAIT 0x7c00007c
/* macros to insert fields into opcodes */
#define __PPC_RA(a) (((a) & 0x1f) << 16)
#define __PPC_RB(b) (((b) & 0x1f) << 11)
+#define __PPC_XS(s) ((((s) & 0x1f) << 21) | (((s) & 0x20) >> 5))
#define __PPC_T_TLB(t) (((t) & 0x3) << 21)
#define __PPC_WC(w) (((w) & 0x3) << 21)
@@ -70,4 +73,14 @@
#define PPC_WAIT(w) stringify_in_c(.long PPC_INST_WAIT | \
__PPC_WC(w))
+/*
+ * Define what the VSX XX1 form instructions will look like, then add
+ * the 128 bit load store instructions based on that.
+ */
+#define VSX_XX1(s, a, b) (__PPC_XS(s) | __PPC_RA(a) | __PPC_RB(b))
+#define STXVD2X(s, a, b) stringify_in_c(.long PPC_INST_STXVD2X | \
+ VSX_XX1((s), (a), (b)))
+#define LXVD2X(s, a, b) stringify_in_c(.long PPC_INST_LXVD2X | \
+ VSX_XX1((s), (a), (b)))
+
#endif /* _ASM_POWERPC_PPC_OPCODE_H */
Index: linux-2.6-ozlabs/arch/powerpc/include/asm/ppc_asm.h
===================================================================
--- linux-2.6-ozlabs.orig/arch/powerpc/include/asm/ppc_asm.h
+++ linux-2.6-ozlabs/arch/powerpc/include/asm/ppc_asm.h
@@ -76,16 +76,6 @@ END_FTR_SECTION_IFCLR(CPU_FTR_PURR);
REST_10GPRS(22, base)
#endif
-/*
- * Define what the VSX XX1 form instructions will look like, then add
- * the 128 bit load store instructions based on that.
- */
-#define VSX_XX1(xs, ra, rb) (((xs) & 0x1f) << 21 | ((ra) << 16) | \
- ((rb) << 11) | (((xs) >> 5)))
-
-#define STXVD2X(xs, ra, rb) .long (0x7c000798 | VSX_XX1((xs), (ra), (rb)))
-#define LXVD2X(xs, ra, rb) .long (0x7c000698 | VSX_XX1((xs), (ra), (rb)))
-
#define SAVE_2GPRS(n, base) SAVE_GPR(n, base); SAVE_GPR(n+1, base)
#define SAVE_4GPRS(n, base) SAVE_2GPRS(n, base); SAVE_2GPRS(n+2, base)
#define SAVE_8GPRS(n, base) SAVE_4GPRS(n, base); SAVE_4GPRS(n+4, base)
^ permalink raw reply
* [PATCH 3/4] powerpc: Enable MMU feature sections for inline asm
From: Michael Neuling @ 2009-04-30 6:58 UTC (permalink / raw)
To: Michael Neuling, Paul Mackerras, Benjamin Herrenschmidt
Cc: linuxppc-dev, Milton Miller
In-Reply-To: <1241074681.528764.881549582503.qpush@pale>
From: Milton Miller <miltonm@bga.com>
powerpc: Enable MMU feature sections for inline asm
This adds the ability to do MMU feature sections for inline asm.
Signed-off-by: Milton Miller <miltonm@bga.com>
Signed-off-by: Michael Neuling <mikey@neuling.org>
---
arch/powerpc/include/asm/feature-fixups.h | 25 ++++++++++++++++++++-----
1 file changed, 20 insertions(+), 5 deletions(-)
Index: linux-2.6-ozlabs/arch/powerpc/include/asm/feature-fixups.h
===================================================================
--- linux-2.6-ozlabs.orig/arch/powerpc/include/asm/feature-fixups.h
+++ linux-2.6-ozlabs/arch/powerpc/include/asm/feature-fixups.h
@@ -8,8 +8,6 @@
* 2 of the License, or (at your option) any later version.
*/
-#ifdef __ASSEMBLY__
-
/*
* Feature section common macros
*
@@ -23,10 +21,12 @@
/* 64 bits kernel, 32 bits code (ie. vdso32) */
#define FTR_ENTRY_LONG .llong
#define FTR_ENTRY_OFFSET .long 0xffffffff; .long
+#elif defined(CONFIG_PPC64)
+#define FTR_ENTRY_LONG .llong
+#define FTR_ENTRY_OFFSET .llong
#else
-/* 64 bit kernel 64 bit code, or 32 bit kernel 32 bit code */
-#define FTR_ENTRY_LONG PPC_LONG
-#define FTR_ENTRY_OFFSET PPC_LONG
+#define FTR_ENTRY_LONG .long
+#define FTR_ENTRY_OFFSET .long
#endif
#define START_FTR_SECTION(label) label##1:
@@ -141,6 +141,21 @@ label##5: \
#define ALT_FW_FTR_SECTION_END_IFCLR(msk) \
ALT_FW_FTR_SECTION_END_NESTED_IFCLR(msk, 97)
+#ifndef __ASSEMBLY__
+
+#define ASM_MMU_FTR_IF(section_if, section_else, msk, val) \
+ stringify_in_c(BEGIN_MMU_FTR_SECTION) \
+ section_if "; " \
+ stringify_in_c(MMU_FTR_SECTION_ELSE) \
+ section_else "; " \
+ stringify_in_c(ALT_MMU_FTR_SECTION_END((msk), (val)))
+
+#define ASM_MMU_FTR_IFSET(section_if, section_else, msk) \
+ ASM_MMU_FTR_IF(section_if, section_else, (msk), (msk))
+
+#define ASM_MMU_FTR_IFCLR(section_if, section_else, msk) \
+ ASM_MMU_FTR_IF(section_if, section_else, (msk), 0)
+
#endif /* __ASSEMBLY__ */
/* LWSYNC feature sections */
^ permalink raw reply
* [PATCH 1/4] powerpc: Cleanup macros in ppc-opcode.h
From: Michael Neuling @ 2009-04-30 6:58 UTC (permalink / raw)
To: Michael Neuling, Paul Mackerras, Benjamin Herrenschmidt
Cc: linuxppc-dev, Milton Miller
In-Reply-To: <1241074681.528764.881549582503.qpush@pale>
Make macros more braces happy.
Signed-off-by: Michael Neuling <mikey@neuling.org>
---
arch/powerpc/include/asm/ppc-opcode.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
Index: linux-2.6-ozlabs/arch/powerpc/include/asm/ppc-opcode.h
===================================================================
--- linux-2.6-ozlabs.orig/arch/powerpc/include/asm/ppc-opcode.h
+++ linux-2.6-ozlabs/arch/powerpc/include/asm/ppc-opcode.h
@@ -47,10 +47,10 @@
#define PPC_INST_WAIT 0x7c00007c
/* macros to insert fields into opcodes */
-#define __PPC_RA(a) ((a & 0x1f) << 16)
-#define __PPC_RB(b) ((b & 0x1f) << 11)
-#define __PPC_T_TLB(t) ((t & 0x3) << 21)
-#define __PPC_WC(w) ((w & 0x3) << 21)
+#define __PPC_RA(a) (((a) & 0x1f) << 16)
+#define __PPC_RB(b) (((b) & 0x1f) << 11)
+#define __PPC_T_TLB(t) (((t) & 0x3) << 21)
+#define __PPC_WC(w) (((w) & 0x3) << 21)
/* Deal with instructions that older assemblers aren't aware of */
#define PPC_DCBAL(a, b) stringify_in_c(.long PPC_INST_DCBAL | \
^ permalink raw reply
* [PATCH 0/4] powerpc: tlbie implementation for PowerPC ISA 2.06 and cleanups for ppc-opcode.h
From: Michael Neuling @ 2009-04-30 6:58 UTC (permalink / raw)
To: Michael Neuling, Paul Mackerras, Benjamin Herrenschmidt
Cc: linuxppc-dev, Milton Miller
In-Reply-To: <23749.1241051084@neuling.org>
These patches implement the tlbie instruction for PowerPC ISA 2.06 and a few cleanups for ppc-opcode.h
Signed-off-by: Michael Neuling <mikey@neuling.org>
---
Fixed coding style for moved VSX instructions.
Correctly alphabetized the newly added instructions.
^ permalink raw reply
* [2.6.29] MPC8560 Powerpc Port linux-2.6.29
From: Deepak Gaur @ 2009-04-30 6:51 UTC (permalink / raw)
To: linuxppc-dev
In-Reply-To: <20090430032937.M98987@cdotd.ernet.in>
Hello all
I have a custom board with MPC8560 and 1GB DDR SDRAM. I am trying to port linux - 2.6.29
on this board. The U-BOOT is already ported on the board and is working.
The OS uImage is stored in code flash at address 0xe0000000 and OS is booted by U-BOOT
While OS do boot but after some prints weired errors start showing up. Rootfile system
is NFS based . I have checked the register values with Hardware person using Trace32
emulator and they are as expected.
----------------------------------------------------------------------------------------
FLASH: 32.5 MB
L2: 256 KB enabled
In: serial
Out: serial
Err: serial
Net: TSEC1, TSEC2
Hit any key to stop autoboot: 0
WARNING: adjusting available memory to 30000000
## Booting kernel from Legacy Image at e0000000 ...
Image Name: Linux-2.6.29
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 1451400 Bytes = 1.4 MB
Load Address: 00400000
Entry Point: 004005a8
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Using MPC85xx ADS machine description
Memory CAM mapping: CAM0=256Mb, CAM1=256Mb, CAM2=256Mb residual: 256Mb
Linux version 2.6.29 (deepak@Localhost) (gcc version 3.4.3 (MontaVista
3.4.3-25.0.96.0600665 2006-05-179Found FSL PCI host bridge at 0x00000000a0008000.
Firmware bus number: 0->0
PCI host bridge /pci@a0008000 (primary) ranges:
MEM 0x0000000080000000..0x000000009fffffff -> 0x0000000080000000
IO 0x00000000a2000000..0x00000000a2ffffff -> 0x0000000000000000
Zone PFN ranges:
DMA 0x00000000 -> 0x00030000
Normal 0x00030000 -> 0x00030000
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
0: 0x00000000 -> 0x00030000
MMU: Allocated 1088 bytes of context maps for 255 contexts
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 195072
Kernel command line: console=ttyCPM0,9600 root=/dev/nfs rw nfsroot=rootpath ip=dhcp
mpic: Setting up MPIC " OpenPIC " version 1.2 at a0040000, max 1 CPUs
mpic: ISU size: 56, shift: 6, mask: 3f
mpic: Initializing for 56 sources
PID hash table entries: 4096 (order: 12, 16384 bytes)
clocksource: timebase mult[79364d9] shift[22] registered
console [ttyCPM0] enabled
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
BUG: Bad page state in process swapper pfn:2fc69
page:c0d0ed20 flags:(null) count:0 mapcount:-524288 mapping:(null) index:0
Call Trace:
[c02dbef0] [c0007a84] show_stack+0x48/0x174 (unreliable)
[c02dbf20] [c006fa14] bad_page+0x9c/0x160
[c02dbf40] [c0071564] __free_pages_ok+0x2c8/0x3a8
[c02dbf70] [c02a9788] free_all_bootmem_core+0x1a4/0x240
[c02dbfa0] [c02a4544] mem_init+0x64/0x178
[c02dbfc0] [c029a67c] start_kernel+0x1d0/0x2a8
[c02dbff0] [c00003b4] skpinv+0x2dc/0x318
BUG: Bad page state in process swapper pfn:2fc8f
page:c0d0f1e0 flags:(null) count:0 mapcount:7799008 mapping:(null) index:0
Call Trace:
[c02dbef0] [c0007a84] show_stack+0x48/0x174 (unreliable)
[c02dbf20] [c006fa14] bad_page+0x9c/0x160
[c02dbf40] [c0071564] __free_pages_ok+0x2c8/0x3a8
[c02dbf70] [c02a9788] free_all_bootmem_core+0x1a4/0x240
[c02dbfa0] [c02a4544] mem_init+0x64/0x178
[c02dbfc0] [c029a67c] start_kernel+0x1d0/0x2a8
[c02dbff0] [c00003b4] skpinv+0x2dc/0x318
BUG: Bad page state in process swapper pfn:2fcc4
page:c0d0f880 flags:(null) count:0 mapcount:7799040 mapping:(null) index:0
Call Trace:
[c02dbef0] [c0007a84] show_stack+0x48/0x174 (unreliable)
[c02dbf20] [c006fa14] bad_page+0x9c/0x160
[c02dbf40] [c0071564] __free_pages_ok+0x2c8/0x3a8
[c02dbf70] [c02a9788] free_all_bootmem_core+0x1a4/0x240
[c02dbfa0] [c02a4544] mem_init+0x64/0x178
[c02dbfc0] [c029a67c] start_kernel+0x1d0/0x2a8
[c02dbff0] [c00003b4] skpinv+0x2dc/0x318
BUG: Bad page state in process swapper pfn:2fce8
--------------------------------------------------------------------------------------
Can anyone kindly help me in understanding the issue.
with regards,
Deepak Gaur
------- End of Forwarded Message -------
Deepak Gaur
^ permalink raw reply
* Re: Next April 28: boot failure on PowerPC with SLQB
From: Sachin Sant @ 2009-04-30 6:42 UTC (permalink / raw)
To: Nick Piggin
Cc: Stephen Rothwell, Christoph Lameter, linux-kernel, linuxppc-dev,
Pekka Enberg, linux-next
In-Reply-To: <20090430060300.GD23746@wotan.suse.de>
Nick Piggin wrote:
> On Thu, Apr 30, 2009 at 11:06:36AM +0530, Sachin Sant wrote:
>
> Hmm, OK. Can you post the disassembly of your pidmap_init please?
>
Here is the information.
Unable to handle kernel paging request for data at address 0x00000010
Faulting instruction address: 0xc0000000007d0404
cpu 0x0: Vector: 300 (Data Access) at [c000000000a23bd0]
pc: c0000000007d0404: .pidmap_init+0x28/0x88
lr: c0000000007b0bbc: .start_kernel+0x458/0x51c
sp: c000000000a23e50
msr: 8000000000009032
dar: 10
dsisr: 40000000
current = 0xc000000000955fc0
paca = 0xc000000000af2400
pid = 0, comm = swapper
enter ? for help
[c000000000a23ee0] c0000000007b0bbc .start_kernel+0x458/0x51c
[c000000000a23f90] c0000000000083d8 .start_here_common+0x1c/0x44
0:mon> ls .pidmap_init
.pidmap_init: c0000000007d03dc
0:mon> di c0000000007d03dc
c0000000007d03dc fbc1fff0 std r30,-16(r1)
c0000000007d03e0 ebc2b1a8 ld r30,-20056(r2)
c0000000007d03e4 39200010 li r9,16
c0000000007d03e8 7c0802a6 mflr r0
c0000000007d03ec fba1ffe8 std r29,-24(r1)
c0000000007d03f0 f8010010 std r0,16(r1)
c0000000007d03f4 38000001 li r0,1
c0000000007d03f8 ebbe8008 ld r29,-32760(r30)
c0000000007d03fc f821ff71 stdu r1,-144(r1)
c0000000007d0400 f93d0010 std r9,16(r29)
c0000000007d0404 7d6048a8 ldarx r11,0,r9
c0000000007d0408 7d6b0378 or r11,r11,r0
c0000000007d040c 7d6049ad stdcx. r11,0,r9
c0000000007d0410 40c2fff4 bne- c0000000007d0404 # .pidmap_init+0x28/0x88
c0000000007d0414 381d0008 addi r0,r29,8
c0000000007d0418 7d200028 lwarx r9,0,r0
0:mon>
c0000000007d041c 3129ffff addic r9,r9,-1
c0000000007d0420 7d20012d stwcx. r9,0,r0
c0000000007d0424 40c2fff4 bne- c0000000007d0418 # .pidmap_init+0x3c/0x88
c0000000007d0428 3cc00004 lis r6,4
c0000000007d042c e87e8010 ld r3,-32752(r30)
c0000000007d0430 38800050 li r4,80
c0000000007d0434 60c62000 ori r6,r6,8192
c0000000007d0438 38a00008 li r5,8
c0000000007d043c 38e00000 li r7,0
c0000000007d0440 4b9716d9 bl c000000000141b18 # .kmem_cache_create+0x0/0x2a0
c0000000007d0444 60000000 nop
c0000000007d0448 38210090 addi r1,r1,144
c0000000007d044c f87d0098 std r3,152(r29)
c0000000007d0450 e8010010 ld r0,16(r1)
c0000000007d0454 eba1ffe8 ld r29,-24(r1)
c0000000007d0458 7c0803a6 mtlr r0
0:mon> r
R00 = 0000000000000001 R16 = 00000000014f3150
R01 = c000000000a23e50 R17 = 0000000000000000
R02 = c000000000a17690 R18 = c0000000007f3150
R03 = 000000000000001f R19 = 0000000002f1fc90
R04 = 0000000000000000 R20 = c0000000007f3168
R05 = ffffffffffffffff R21 = c000000000725e2f
R06 = 00000000007974d4 R22 = 00000000007bb977
R07 = 800000000c9b2cc0 R23 = 0000000002f1fc90
R08 = 0000000000000000 R24 = 0000000002f1fc90
R09 = 0000000000000010 R25 = c0000000007f3208
R10 = 0000000000000000 R26 = 0000000000d00000
R11 = c00000000095b0f8 R27 = c000000000b73b10
R12 = 0000000028000082 R28 = c0000000007f0458
R13 = c000000000af2400 R29 = c00000000095db00
R14 = c0000000007f3218 R30 = c00000000098d5f0
R15 = c000000000705c32 R31 = 0000000003c90000
pc = c0000000007d0404 .pidmap_init+0x28/0x88
lr = c0000000007b0bbc .start_kernel+0x458/0x51c
msr = 8000000000009032 cr = 28000084
ctr = 0000000000136f8c xer = 0000000000000010 trap = 300
dar = 0000000000000010 dsisr = 40000000
0:mon> di %pc
c0000000007d0404 7d6048a8 ldarx r11,0,r9
c0000000007d0408 7d6b0378 or r11,r11,r0
c0000000007d040c 7d6049ad stdcx. r11,0,r9
c0000000007d0410 40c2fff4 bne- c0000000007d0404 # .pidmap_init+0x28/0x88
c0000000007d0414 381d0008 addi r0,r29,8
c0000000007d0418 7d200028 lwarx r9,0,r0
c0000000007d041c 3129ffff addic r9,r9,-1
c0000000007d0420 7d20012d stwcx. r9,0,r0
c0000000007d0424 40c2fff4 bne- c0000000007d0418 # .pidmap_init+0x3c/0x88
c0000000007d0428 3cc00004 lis r6,4
c0000000007d042c e87e8010 ld r3,-32752(r30)
c0000000007d0430 38800050 li r4,80
c0000000007d0434 60c62000 ori r6,r6,8192
c0000000007d0438 38a00008 li r5,8
c0000000007d043c 38e00000 li r7,0
c0000000007d0440 4b9716d9 bl c000000000141b18 # .kmem_cache_create+0x0/0x2a0
0:mon>
Thanks
-Sachin
--
---------------------------------
Sachin Sant
IBM Linux Technology Center
India Systems and Technology Labs
Bangalore, India
---------------------------------
^ permalink raw reply
* Re: Next April 28: boot failure on PowerPC with SLQB
From: Nick Piggin @ 2009-04-30 6:41 UTC (permalink / raw)
To: Sachin Sant
Cc: Stephen Rothwell, Christoph Lameter, linux-kernel, linuxppc-dev,
Pekka Enberg, linux-next
In-Reply-To: <49F938E4.2030703@in.ibm.com>
On Thu, Apr 30, 2009 at 11:06:36AM +0530, Sachin Sant wrote:
> Nick Piggin wrote:
> >Well kmalloc is failing. It should not be though, even if the
> >current node is offline, it should be able to fall back to other
> >nodes. Stephen's trace indicates the same thing.
> >
> >Could you try the following patch please, and capture the output
> >it generates?
> With this patch i don't get any extra information other that what is
> already reported.
> Have attached the boot log captured using loglevel=8 mminit_loglevel=4
> options.
Hmm, forget that. Actually my last patch had a silly mistake because I
forgot MAX_ORDER shift is applied to PAGE_SIZE, rather than 1. So
kmalloc(PAGE_SIZE) was failing as too large.
This patch should do the trick I hope.
Thanks,
Nick
---
include/linux/slqb_def.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: linux-2.6/include/linux/slqb_def.h
===================================================================
--- linux-2.6.orig/include/linux/slqb_def.h
+++ linux-2.6/include/linux/slqb_def.h
@@ -172,7 +172,8 @@ struct kmem_cache {
#endif
#define KMALLOC_SHIFT_LOW ilog2(KMALLOC_MIN_SIZE)
-#define KMALLOC_SHIFT_SLQB_HIGH (PAGE_SHIFT + 9)
+#define KMALLOC_SHIFT_SLQB_HIGH (PAGE_SHIFT + \
+ ((9 <= (MAX_ORDER - 1)) ? 9 : (MAX_ORDER - 1)))
extern struct kmem_cache kmalloc_caches[KMALLOC_SHIFT_SLQB_HIGH + 1];
extern struct kmem_cache kmalloc_caches_dma[KMALLOC_SHIFT_SLQB_HIGH + 1];
^ permalink raw reply
* Re: [PATCH 1/2] Add support for Designware SATA controller driver
From: Benjamin Herrenschmidt @ 2009-04-30 6:05 UTC (permalink / raw)
To: Feng Kan; +Cc: linuxppc-dev, linuxppc-embedded
In-Reply-To: <1241041345-19479-1-git-send-email-fkan@amcc.com>
On Wed, 2009-04-29 at 14:42 -0700, Feng Kan wrote:
> Signed-off-by: Feng Kan <fkan@amcc.com>
> ---
> drivers/ata/Kconfig | 76 +-
> drivers/ata/Makefile | 1 +
> drivers/ata/sata_dwc.c | 2047 ++++++++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 2091 insertions(+), 33 deletions(-)
> create mode 100644 drivers/ata/sata_dwc.c
>
> diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
> index 0bcf264..5321e47 100644
> --- a/drivers/ata/Kconfig
> +++ b/drivers/ata/Kconfig
> @@ -72,56 +72,66 @@ config SATA_FSL
>
> If unsure, say N.
>
> -config ATA_SFF
> - bool "ATA SFF support"
> - default y
Hi Feng !
Nice to see this driver finally submitted !
However, it should be sent to the linux-ide mailing list in order to be
reviewed by the right people (though you should keep linuxppc-dev on
CC).
Also, I think you want to avoid that Kconfig churn, just add your option
as a drop-in, don't re-arrange half of the file while at it :-)
Cheers,
Ben.
^ permalink raw reply
* Re: Next April 28: boot failure on PowerPC with SLQB
From: Nick Piggin @ 2009-04-30 6:03 UTC (permalink / raw)
To: Sachin Sant
Cc: Stephen Rothwell, Christoph Lameter, linux-kernel, linuxppc-dev,
Pekka Enberg, linux-next
In-Reply-To: <49F938E4.2030703@in.ibm.com>
On Thu, Apr 30, 2009 at 11:06:36AM +0530, Sachin Sant wrote:
> Nick Piggin wrote:
> >Well kmalloc is failing. It should not be though, even if the
> >current node is offline, it should be able to fall back to other
> >nodes. Stephen's trace indicates the same thing.
> >
> >Could you try the following patch please, and capture the output
> >it generates?
> With this patch i don't get any extra information other that what is
> already reported.
> Have attached the boot log captured using loglevel=8 mminit_loglevel=4
> options.
Hmm, OK. Can you post the disassembly of your pidmap_init please?
^ permalink raw reply
* [PATCH] powerpc: Fix setting of oprofile cpu type
From: Benjamin Herrenschmidt @ 2009-04-30 5:39 UTC (permalink / raw)
To: linuxppc-dev
commit 2657dd4e301d4841ed67a4fac7d145ad8f3e1b28 introduced a
bug where we would now always override the "real" oprofile CPU
type with the "compatible" one provided by a pseudo-PVR in the
device-tree which is incorrect and breaks oprofile on all current
configs since the "compatible" ones aren't yet recognized.
This fixes it.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---
Bug hit 2.6.29 too. I'll send this to Linus and Greg tomorrow unless
somebody thinks it's wrong. I've tested on POWER6 and verified the
bug and the fix.
arch/powerpc/kernel/cputable.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- linux-work.orig/arch/powerpc/kernel/cputable.c 2009-04-30 14:22:30.000000000 +1000
+++ linux-work/arch/powerpc/kernel/cputable.c 2009-04-30 14:22:41.000000000 +1000
@@ -1833,8 +1833,8 @@ static void __init setup_cpu_spec(unsign
* and, in that case, keep the current value for
* oprofile_cpu_type.
*/
- if (old.oprofile_cpu_type == NULL)
- t->oprofile_cpu_type = s->oprofile_cpu_type;
+ if (old.oprofile_cpu_type != NULL)
+ t->oprofile_cpu_type = old.oprofile_cpu_type;
}
*PTRRELOC(&cur_cpu_spec) = &the_cpu_spec;
^ permalink raw reply
* Re: Next April 28: boot failure on PowerPC with SLQB
From: Sachin Sant @ 2009-04-30 5:36 UTC (permalink / raw)
To: Nick Piggin
Cc: Stephen Rothwell, Christoph Lameter, linux-kernel, linuxppc-dev,
Pekka Enberg, linux-next
In-Reply-To: <20090430041146.GB23746@wotan.suse.de>
[-- Attachment #1: Type: text/plain, Size: 637 bytes --]
Nick Piggin wrote:
> Well kmalloc is failing. It should not be though, even if the
> current node is offline, it should be able to fall back to other
> nodes. Stephen's trace indicates the same thing.
>
> Could you try the following patch please, and capture the output
> it generates?
With this patch i don't get any extra information other that what is
already reported.
Have attached the boot log captured using loglevel=8 mminit_loglevel=4
options.
Thanks
-Sachin
--
---------------------------------
Sachin Sant
IBM Linux Technology Center
India Systems and Technology Labs
Bangalore, India
---------------------------------
[-- Attachment #2: slqb-trace --]
[-- Type: text/plain, Size: 12285 bytes --]
Using 007bb8f8 bytes for initrd buffer
Please wait, loading kernel...
Allocated 01100000 bytes for kernel @ 00d00000
Elf64 kernel loaded...
Loading ramdisk...
ramdisk loaded 007bb8f8 @ 034d0000
OF stdout device is: /vdevice/vty@30000000
Preparing to boot Linux version 2.6.30-rc3-next-20090429-slqb (root@llm62) (gcc version 4.3.2 [gcc-4_3-branch revision 141291] (SUSE Linux) ) #4 SMP Thu Apr 30 10:52:00 IST 2009
Calling ibm,client-architecture... done
command line: root=/dev/sda5 sysrq=1 insmod=sym53c8xx insmod=ipr crashkernel=512M-:256M loglevel=8 mminit_loglevel=4
memory layout at init:
alloc_bottom : 0000000003c90000
alloc_top : 0000000008000000
alloc_top_hi : 0000000008000000
rmo_top : 0000000008000000
ram_top : 0000000008000000
instantiating rtas at 0x00000000074e0000... done
boot cpu hw idx 0000000000000000
starting cpu hw idx 0000000000000002... done
copying OF device tree...
Building dt strings...
Building dt structure...
Device tree strings 0x0000000003ca0000 -> 0x0000000003ca15d3
Device tree struct 0x0000000003cb0000 -> 0x0000000003cd0000
Calling quiesce...
returning from prom_init
Crash kernel location must be 0x2000000
Reserving 256MB of memory at 32MB for crashkernel (System RAM: 4096MB)
Phyp-dump disabled at boot time
Using pSeries machine description
Page orders: linear mapping = 16, virtual = 16, io = 12
Using 1TB segments
Found initrd at 0xc0000000034d0000:0xc000000003c8b8f8
console [udbg0] enabled
Partition configured for 4 cpus.
CPU maps initialized for 2 threads per core
(thread shift is 1)
Starting Linux PPC64 #4 SMP Thu Apr 30 10:52:00 IST 2009
-----------------------------------------------------
ppc64_pft_size = 0x1a
physicalMemorySize = 0x100000000
htab_hash_mask = 0x7ffff
-----------------------------------------------------
Initializing cgroup subsys cpuset
Initializing cgroup subsys cpu
Linux version 2.6.30-rc3-next-20090429-slqb (root@llm62) (gcc version 4.3.2 [gcc-4_3-branch revision 141291] (SUSE Linux) ) #4 SMP Thu Apr 30 10:52:00 IST 2009
[boot]0012 Setup Arch
mminit::memory_register Entering add_active_range(0, 0x0, 0x800) 0 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x800, 0xc00) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xc00, 0x1000) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x1000, 0x1400) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x1400, 0x1800) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x1800, 0x1c00) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x1c00, 0x2000) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x2000, 0x2400) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x2400, 0x2800) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x2800, 0x2c00) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x2c00, 0x3000) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x3000, 0x3400) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x3400, 0x3800) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x3800, 0x3c00) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x3c00, 0x4000) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x4000, 0x4400) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x4400, 0x4800) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x4800, 0x4c00) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x4c00, 0x5000) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x5000, 0x5400) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x5400, 0x5800) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x5800, 0x5c00) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x5c00, 0x6000) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x6000, 0x6400) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x6400, 0x6800) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x6800, 0x6c00) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x6c00, 0x7000) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x7000, 0x7400) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x7400, 0x7800) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x7800, 0x7c00) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x7c00, 0x8000) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x8000, 0x8400) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x8400, 0x8800) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x8800, 0x8c00) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x8c00, 0x9000) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x9000, 0x9400) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x9400, 0x9800) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x9800, 0x9c00) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0x9c00, 0xa000) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xa000, 0xa400) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xa400, 0xa800) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xa800, 0xac00) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xac00, 0xb000) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xb000, 0xb400) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xb400, 0xb800) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xb800, 0xbc00) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xbc00, 0xc000) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xc000, 0xc400) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xc400, 0xc800) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xc800, 0xcc00) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xcc00, 0xd000) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xd000, 0xd400) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xd400, 0xd800) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xd800, 0xdc00) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xdc00, 0xe000) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xe000, 0xe400) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xe400, 0xe800) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xe800, 0xec00) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xec00, 0xf000) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xf000, 0xf400) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xf400, 0xf800) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xf800, 0xfc00) 1 entries of 256 used
mminit::memory_register Entering add_active_range(0, 0xfc00, 0x10000) 1 entries of 256 used
Node 0 Memory: 0x0-0x100000000
EEH: No capable adapters found
PPC64 nvram contains 15360 bytes
Using shared processor idle loop
Zone PFN ranges:
DMA 0x00000000 -> 0x00010000
Normal 0x00010000 -> 0x00010000
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
0: 0x00000000 -> 0x00010000
mminit::pageflags_layout_widths Section 20 Node 4 Zone 2 Flags 23
mminit::pageflags_layout_shifts Section 20 Node 4 Zone 2
mminit::pageflags_layout_offsets Section 44 Node 40 Zone 38
mminit::pageflags_layout_zoneid Zone ID: 38 -> 44
mminit::pageflags_layout_usage location: 64 -> 38 unused 38 -> 23 flags 23 -> 0
On node 0 totalpages: 65536
DMA zone: 64 pages used for memmap
DMA zone: 0 pages reserved
DMA zone: 65472 pages, LIFO batch:1
mminit::memmap_init Initialising map node 0 zone 0 pfns 0 -> 65536
[boot]0015 Setup Done
mminit::zonelist general 0:DMA = 0:DMA
mminit::zonelist thisnode 0:DMA = 0:DMA
Built 1 zonelists in Node order, mobility grouping on. Total pages: 65472
Policy zone: DMA
Kernel command line: root=/dev/sda5 sysrq=1 insmod=sym53c8xx insmod=ipr crashkernel=512M-:256M loglevel=8 mminit_loglevel=4
Experimental hierarchical RCU implementation.
RCU-based detection of stalled CPUs is enabled.
Experimental hierarchical RCU init done.
NR_IRQS:512
[boot]0020 XICS Init
[boot]0021 XICS Done
pic: no ISA interrupt controller
PID hash table entries: 4096 (order: 12, 32768 bytes)
time_init: decrementer frequency = 512.000000 MHz
time_init: processor frequency = 4704.000000 MHz
clocksource: timebase mult[7d0000] shift[22] registered
clockevent: decrementer mult[8312] shift[16] cpu[0]
Console: colour dummy device 80x25
console handover: boot [udbg0] -> real [hvc0]
allocated 2621440 bytes of page_cgroup
please try cgroup_disable=memory option if you don't want
freeing bootmem node 0
Memory: 3882688k/4194304k available (8320k kernel code, 311616k reserved, 2048k data, 4285k bss, 448k init)
Calibrating delay loop... 1022.36 BogoMIPS (lpj=5111808)
Unable to handle kernel paging request for data at address 0x00000010
Faulting instruction address: 0xc0000000007d03ec
Oops: Kernel access of bad area, sig: 11 [#1]
SMP NR_CPUS=1024 DEBUG_PAGEALLOC NUMA pSeries
Modules linked in:
NIP: c0000000007d03ec LR: c0000000007b0bbc CTR: 0000000000136f8c
REGS: c000000000a23bd0 TRAP: 0300 Not tainted (2.6.30-rc3-next-20090429-slqb)
MSR: 8000000000009032 <EE,ME,IR,DR> CR: 28000084 XER: 00000010
DAR: 0000000000000010, DSISR: 0000000040000000
TASK = c000000000955fc0[0] 'swapper' THREAD: c000000000a20000 CPU: 0
GPR00: 0000000000000001 c000000000a23e50 c000000000a17690 000000000000001f
GPR04: 0000000000000000 ffffffffffffffff 0000000000783db6 800000000c9b2cc0
GPR08: 0000000000000000 0000000000000010 0000000000000000 c00000000095b0f8
GPR12: 0000000028000082 c000000000af2400 c0000000007f3200 c000000000705c32
GPR16: 00000000014f3138 0000000000000000 c0000000007f3138 0000000002f1fc90
GPR20: c0000000007f3150 c000000000725e2f 00000000007bb8f8 0000000002f1fc90
GPR24: 0000000002f1fc90 c0000000007f31f0 0000000000d00000 c000000000b73b10
GPR28: c0000000007f0440 c00000000095db00 c00000000098d5f0 0000000003c90000
NIP [c0000000007d03ec] .pidmap_init+0x28/0x88
LR [c0000000007b0bbc] .start_kernel+0x458/0x51c
Call Trace:
[c000000000a23e50] [c000000000a23ee0] init_thread_union+0x3ee0/0x4000 (unreliable)
[c000000000a23ee0] [c0000000007b0bbc] .start_kernel+0x458/0x51c
[c000000000a23f90] [c0000000000083d8] .start_here_common+0x1c/0x44
Instruction dump:
ebc1fff0 4e800020 fbc1fff0 ebc2b1a8 39200010 7c0802a6 fba1ffe8 f8010010
38000001 ebbe8008 f821ff71 f93d0010 <7d6048a8> 7d6b0378 7d6049ad 40c2fff4
---[ end trace 31fd0ba7d8756001 ]---
Kernel panic - not syncing: Attempted to kill the idle task!
Call Trace:
[c000000000a23820] [c000000000011700] .show_stack+0x6c/0x16c (unreliable)
[c000000000a238d0] [c00000000056228c] .panic+0x80/0x1a8
[c000000000a23960] [c00000000008dfa4] .do_exit+0x98/0x73c
[c000000000a23a40] [c0000000000293f4] .die+0x280/0x284
[c000000000a23ae0] [c000000000032700] .bad_page_fault+0xb8/0xd4
[c000000000a23b60] [c000000000005798] handle_page_fault+0x3c/0x5c
--- Exception: 300 at .pidmap_init+0x28/0x88
LR = .start_kernel+0x458/0x51c
[c000000000a23e50] [c000000000a23ee0] init_thread_union+0x3ee0/0x4000 (unreliable)
[c000000000a23ee0] [c0000000007b0bbc] .start_kernel+0x458/0x51c
[c000000000a23f90] [c0000000000083d8] .start_here_common+0x1c/0x44
Rebooting in 180 seconds..
^ permalink raw reply
* Re: [MTD] ofpart: Partitions at same address cannot have the same name
From: David Woodhouse @ 2009-04-30 5:32 UTC (permalink / raw)
To: Benjamin Herrenschmidt
Cc: Ricardo Ribalda Delgado, linuxppc-dev@ozlabs.org,
linuxppc-embedded@ozlabs.org
In-Reply-To: <1241061577.29501.1.camel@pasglop>
On Thu, 2009-04-30 at 04:19 +0100, Benjamin Herrenschmidt wrote:
>
> I fail to see the point of this "special" partition in the first
> place...
>
> Things would make more sense if you had a full flash device
> whose child nodes are the partitions.
That's the model I think I want to move to, and which I was toying with
in http://git.infradead.org/users/dwmw2/mtd-sysfs.git (I haven't done it
yet, but it's logically the next step after what I've already done).
--
David Woodhouse Open Source Technology Centre
David.Woodhouse@intel.com Intel Corporation
^ permalink raw reply
* [PATCH] Move dtc and libfdt sources from arch/powerpc/boot to scripts/dtc
From: David Gibson @ 2009-04-30 5:25 UTC (permalink / raw)
To: Linus Torvalds
Cc: Andrew Morton, monstr, linux-kernel, linuxppc-dev, Paul Mackerras,
Michal Simek
The powerpc kernel always requires an Open Firmware like device tree
to supply device information. On systems without OF, this comes from
a flattened device tree blob. This blob is usually generated by dtc,
a tool which compiles a text description of the device tree into the
flattened format used by the kernel. Sometimes, the bootwrapper makes
small changes to the pre-compiled device tree blob (e.g. filling in
the size of RAM). To do this it uses the libfdt library.
Because these are only used on powerpc, the code for both these tools
is included under arch/powerpc/boot (these were imported and are
periodically updated from the upstream dtc tree).
However, the microblaze architecture, currently being prepared for
merging to mainline also uses dtc to produce device tree blobs. A few
other archs have also mentioned some interest in using dtc.
Therefore, this patch moves dtc and libfdt from arch/powerpc into
scripts, where it can be used by any architecture.
The vast bulk of this patch is a literal move, the rest is adjusting
the various Makefiles to use dtc and libfdt correctly from their new
locations.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
arch/powerpc/Kconfig | 4 +
arch/powerpc/boot/Makefile | 67 +++++++-------------
arch/powerpc/boot/simpleboot.c | 2 +-
scripts/Makefile | 1 +
scripts/dtc/Makefile | 54 ++++++++++++++++
.../boot/dtc-src => scripts/dtc}/Makefile.dtc | 0
.../powerpc/boot/dtc-src => scripts/dtc}/checks.c | 0
{arch/powerpc/boot/dtc-src => scripts/dtc}/data.c | 0
.../boot/dtc-src => scripts/dtc}/dtc-lexer.l | 0
.../dtc}/dtc-lexer.lex.c_shipped | 0
.../dtc}/dtc-parser.tab.c_shipped | 0
.../dtc}/dtc-parser.tab.h_shipped | 0
.../boot/dtc-src => scripts/dtc}/dtc-parser.y | 0
{arch/powerpc/boot/dtc-src => scripts/dtc}/dtc.c | 0
{arch/powerpc/boot/dtc-src => scripts/dtc}/dtc.h | 0
.../boot/dtc-src => scripts/dtc}/flattree.c | 0
.../powerpc/boot/dtc-src => scripts/dtc}/fstree.c | 0
.../boot => scripts/dtc}/libfdt/Makefile.libfdt | 0
{arch/powerpc/boot => scripts/dtc}/libfdt/fdt.c | 0
{arch/powerpc/boot => scripts/dtc}/libfdt/fdt.h | 0
{arch/powerpc/boot => scripts/dtc}/libfdt/fdt_ro.c | 0
{arch/powerpc/boot => scripts/dtc}/libfdt/fdt_rw.c | 0
.../boot => scripts/dtc}/libfdt/fdt_strerror.c | 0
{arch/powerpc/boot => scripts/dtc}/libfdt/fdt_sw.c | 0
.../powerpc/boot => scripts/dtc}/libfdt/fdt_wip.c | 0
{arch/powerpc/boot => scripts/dtc}/libfdt/libfdt.h | 0
.../dtc-src => scripts/dtc/libfdt}/libfdt_env.h | 0
.../boot => scripts/dtc}/libfdt/libfdt_internal.h | 0
.../boot/dtc-src => scripts/dtc}/livetree.c | 0
.../powerpc/boot/dtc-src => scripts/dtc}/srcpos.c | 0
.../powerpc/boot/dtc-src => scripts/dtc}/srcpos.h | 0
.../boot/dtc-src => scripts/dtc}/treesource.c | 0
.../boot/dtc-src => scripts/dtc}/version_gen.h | 0
33 files changed, 83 insertions(+), 45 deletions(-)
create mode 100644 scripts/dtc/Makefile
rename {arch/powerpc/boot/dtc-src => scripts/dtc}/Makefile.dtc (100%)
rename {arch/powerpc/boot/dtc-src => scripts/dtc}/checks.c (100%)
rename {arch/powerpc/boot/dtc-src => scripts/dtc}/data.c (100%)
rename {arch/powerpc/boot/dtc-src => scripts/dtc}/dtc-lexer.l (100%)
rename {arch/powerpc/boot/dtc-src => scripts/dtc}/dtc-lexer.lex.c_shipped (100%)
rename {arch/powerpc/boot/dtc-src => scripts/dtc}/dtc-parser.tab.c_shipped (100%)
rename {arch/powerpc/boot/dtc-src => scripts/dtc}/dtc-parser.tab.h_shipped (100%)
rename {arch/powerpc/boot/dtc-src => scripts/dtc}/dtc-parser.y (100%)
rename {arch/powerpc/boot/dtc-src => scripts/dtc}/dtc.c (100%)
rename {arch/powerpc/boot/dtc-src => scripts/dtc}/dtc.h (100%)
rename {arch/powerpc/boot/dtc-src => scripts/dtc}/flattree.c (100%)
rename {arch/powerpc/boot/dtc-src => scripts/dtc}/fstree.c (100%)
rename {arch/powerpc/boot => scripts/dtc}/libfdt/Makefile.libfdt (100%)
rename {arch/powerpc/boot => scripts/dtc}/libfdt/fdt.c (100%)
rename {arch/powerpc/boot => scripts/dtc}/libfdt/fdt.h (100%)
rename {arch/powerpc/boot => scripts/dtc}/libfdt/fdt_ro.c (100%)
rename {arch/powerpc/boot => scripts/dtc}/libfdt/fdt_rw.c (100%)
rename {arch/powerpc/boot => scripts/dtc}/libfdt/fdt_strerror.c (100%)
rename {arch/powerpc/boot => scripts/dtc}/libfdt/fdt_sw.c (100%)
rename {arch/powerpc/boot => scripts/dtc}/libfdt/fdt_wip.c (100%)
rename {arch/powerpc/boot => scripts/dtc}/libfdt/libfdt.h (100%)
rename {arch/powerpc/boot/dtc-src => scripts/dtc/libfdt}/libfdt_env.h (100%)
rename {arch/powerpc/boot => scripts/dtc}/libfdt/libfdt_internal.h (100%)
rename {arch/powerpc/boot/dtc-src => scripts/dtc}/livetree.c (100%)
rename {arch/powerpc/boot/dtc-src => scripts/dtc}/srcpos.c (100%)
rename {arch/powerpc/boot/dtc-src => scripts/dtc}/srcpos.h (100%)
rename {arch/powerpc/boot/dtc-src => scripts/dtc}/treesource.c (100%)
rename {arch/powerpc/boot/dtc-src => scripts/dtc}/version_gen.h (100%)
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 4c78045..a0d1146 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -181,6 +181,10 @@ config SYS_SUPPORTS_APM_EMULATION
default y if PMAC_APM_EMU
bool
+config DTC
+ bool
+ default y
+
config DEFAULT_UIMAGE
bool
help
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index 4458abb..8da2bf9 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -33,7 +33,7 @@ ifeq ($(call cc-option-yn, -fstack-protector),y)
BOOTCFLAGS += -fno-stack-protector
endif
-BOOTCFLAGS += -I$(obj) -I$(srctree)/$(obj) -I$(srctree)/$(src)/libfdt
+BOOTCFLAGS += -I$(obj) -I$(srctree)/$(obj)
DTS_FLAGS ?= -p 1024
@@ -53,9 +53,14 @@ zliblinuxheader := zlib.h zconf.h zutil.h
$(addprefix $(obj)/,$(zlib) cuboot-c2k.o gunzip_util.o main.o prpmc2800.o): \
$(addprefix $(obj)/,$(zliblinuxheader)) $(addprefix $(obj)/,$(zlibheader))
-src-libfdt := fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c
+libfdt := fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c
+libfdtheader := fdt.h libfdt.h libfdt_internal.h
+
+$(addprefix $(obj)/,$(libfdt) libfdt-wrapper.o simpleboot.o): \
+ $(addprefix $(obj)/,$(libfdtheader))
+
src-wlib := string.S crt0.S crtsavres.S stdio.c main.c \
- $(addprefix libfdt/,$(src-libfdt)) libfdt-wrapper.c \
+ $(libfdt) libfdt-wrapper.c \
ns16550.c serial.c simple_alloc.c div64.S util.S \
gunzip_util.c elf_util.c $(zlib) devtree.c oflib.c ofconsole.c \
4xx.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c bamboo.c \
@@ -96,6 +101,12 @@ $(addprefix $(obj)/,$(zlibheader)): $(obj)/%: $(srctree)/lib/zlib_inflate/%
$(addprefix $(obj)/,$(zliblinuxheader)): $(obj)/%: $(srctree)/include/linux/%
$(call cmd,copy_zliblinuxheader)
+quiet_cmd_copy_libfdt = COPY $@
+ cmd_copy_libfdt = cp $< $@
+
+$(addprefix $(obj)/,$(libfdt) $(libfdtheader)): $(obj)/%: $(srctree)/scripts/dtc/libfdt/%
+ $(call cmd,copy_libfdt)
+
$(obj)/empty.c:
@touch $@
@@ -103,6 +114,7 @@ $(obj)/zImage.lds $(obj)/zImage.coff.lds $(obj)/zImage.ps3.lds: $(obj)/%: $(srct
@cp $< $@
clean-files := $(zlib) $(zlibheader) $(zliblinuxheader) \
+ $(libfdt) $(libfdtheader) \
empty.c zImage.coff.lds zImage.ps3.lds zImage.lds
quiet_cmd_bootcc = BOOTCC $@
@@ -114,6 +126,8 @@ quiet_cmd_bootas = BOOTAS $@
quiet_cmd_bootar = BOOTAR $@
cmd_bootar = $(CROSS32AR) -cr $@.$$$$ $(filter-out FORCE,$^); mv $@.$$$$ $@
+$(obj-libfdt): $(obj)/%.o: $(srctree)/scripts/dtc/libfdt/%.c FORCE
+ $(call if_changed_dep,bootcc)
$(patsubst %.c,%.o, $(filter %.c, $(src-boot))): %.o: %.c FORCE
$(Q)mkdir -p $(dir $@)
$(call if_changed_dep,bootcc)
@@ -124,7 +138,7 @@ $(patsubst %.S,%.o, $(filter %.S, $(src-boot))): %.o: %.S FORCE
$(obj)/wrapper.a: $(obj-wlib) FORCE
$(call if_changed,bootar)
-hostprogs-y := addnote addRamDisk hack-coff mktree dtc
+hostprogs-y := addnote addRamDisk hack-coff mktree
targets += $(patsubst $(obj)/%,%,$(obj-boot) wrapper.a)
extra-y := $(obj)/wrapper.a $(obj-plat) $(obj)/empty.o \
@@ -133,47 +147,10 @@ extra-y := $(obj)/wrapper.a $(obj-plat) $(obj)/empty.o \
dtstree := $(srctree)/$(src)/dts
wrapper :=$(srctree)/$(src)/wrapper
-wrapperbits := $(extra-y) $(addprefix $(obj)/,addnote hack-coff mktree dtc) \
+wrapperbits := $(extra-y) $(addprefix $(obj)/,addnote hack-coff mktree) \
$(wrapper) FORCE
#############
-# Bits for building dtc
-# DTC_GENPARSER := 1 # Uncomment to rebuild flex/bison output
-
-dtc-objs := dtc.o flattree.o fstree.o data.o livetree.o treesource.o srcpos.o checks.o
-dtc-objs += dtc-lexer.lex.o dtc-parser.tab.o
-dtc-objs := $(addprefix dtc-src/, $(dtc-objs))
-
-# prerequisites on generated files needs to be explicit
-$(obj)/dtc-src/dtc-parser.tab.o: $(obj)/dtc-src/dtc-parser.tab.c $(obj)/dtc-src/dtc-parser.tab.h
-$(obj)/dtc-src/dtc-lexer.lex.o: $(obj)/dtc-src/dtc-lexer.lex.c $(obj)/dtc-src/dtc-parser.tab.h
-
-HOSTCFLAGS += -I$(src)/dtc-src/ -I$(src)/libfdt/
-
-targets += dtc-src/dtc-parser.tab.c
-targets += dtc-src/dtc-lexer.lex.c
-
-clean-files += dtc-src/dtc-parser.tab.h
-
-ifdef DTC_GENPARSER
-BISON = bison
-FLEX = flex
-
-quiet_cmd_bison = BISON $@
- cmd_bison = $(BISON) -o$@ -d $<; cp $@ $@_shipped
-quiet_cmd_flex = FLEX $@
- cmd_flex = $(FLEX) -o$@ $<; cp $@ $@_shipped
-
-$(obj)/dtc-src/dtc-parser.tab.c: $(src)/dtc-src/dtc-parser.y FORCE
- $(call if_changed,bison)
-
-$(obj)/dtc-src/dtc-parser.tab.h: $(obj)/dtc-src/dtc-parser.tab.c
-
-$(obj)/dtc-src/dtc-lexer.lex.c: $(src)/dtc-src/dtc-lexer.l FORCE
- $(call if_changed,flex)
-endif
-
-#############
# Bits for building various flavours of zImage
ifneq ($(CROSS32_COMPILE),)
@@ -347,8 +324,10 @@ $(obj)/treeImage.%: vmlinux $(obj)/%.dtb $(wrapperbits)
$(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb)
# Rule to build device tree blobs
-$(obj)/%.dtb: $(dtstree)/%.dts $(obj)/dtc
- $(obj)/dtc -O dtb -o $(obj)/$*.dtb -b 0 $(DTS_FLAGS) $(dtstree)/$*.dts
+DTC = $(objtree)/scripts/dtc/dtc
+
+$(obj)/%.dtb: $(dtstree)/%.dts
+ $(DTC) -O dtb -o $(obj)/$*.dtb -b 0 $(DTS_FLAGS) $(dtstree)/$*.dts
# If there isn't a platform selected then just strip the vmlinux.
ifeq (,$(image-y))
diff --git a/arch/powerpc/boot/simpleboot.c b/arch/powerpc/boot/simpleboot.c
index c58a0da..21cd480 100644
--- a/arch/powerpc/boot/simpleboot.c
+++ b/arch/powerpc/boot/simpleboot.c
@@ -19,7 +19,7 @@
#include "types.h"
#include "io.h"
#include "stdio.h"
-#include "libfdt/libfdt.h"
+#include <libfdt.h>
BSS_STACK(4*1024);
diff --git a/scripts/Makefile b/scripts/Makefile
index aafdf06..9dd5b25 100644
--- a/scripts/Makefile
+++ b/scripts/Makefile
@@ -21,6 +21,7 @@ hostprogs-y += unifdef
subdir-$(CONFIG_MODVERSIONS) += genksyms
subdir-y += mod
subdir-$(CONFIG_SECURITY_SELINUX) += selinux
+subdir-$(CONFIG_DTC) += dtc
# Let clean descend into subdirs
subdir- += basic kconfig package selinux
diff --git a/scripts/dtc/Makefile b/scripts/dtc/Makefile
new file mode 100644
index 0000000..01cdb36
--- /dev/null
+++ b/scripts/dtc/Makefile
@@ -0,0 +1,54 @@
+# scripts/dtc makefile
+
+hostprogs-y := dtc
+always := $(hostprogs-y)
+
+dtc-objs := dtc.o flattree.o fstree.o data.o livetree.o treesource.o \
+ srcpos.o checks.o
+dtc-objs += dtc-lexer.lex.o dtc-parser.tab.o
+
+# Source files need to get at the userspace version of libfdt_env.h to compile
+
+HOSTCFLAGS_DTC := -I$(src) -I$(src)/libfdt
+
+HOSTCFLAGS_checks.o := $(HOSTCFLAGS_DTC)
+HOSTCFLAGS_data.o := $(HOSTCFLAGS_DTC)
+HOSTCFLAGS_dtc.o := $(HOSTCFLAGS_DTC)
+HOSTCFLAGS_flattree.o := $(HOSTCFLAGS_DTC)
+HOSTCFLAGS_fstree.o := $(HOSTCFLAGS_DTC)
+HOSTCFLAGS_livetree.o := $(HOSTCFLAGS_DTC)
+HOSTCFLAGS_srcpos.o := $(HOSTCFLAGS_DTC)
+HOSTCFLAGS_treesource.o := $(HOSTCFLAGS_DTC)
+
+HOSTCFLAGS_dtc-lexer.lex.o := $(HOSTCFLAGS_DTC)
+HOSTCFLAGS_dtc-parser.tab.o := $(HOSTCFLAGS_DTC)
+
+# dependencies on generated files need to be listed explicitly
+$(obj)/dtc-parser.tab.o: $(obj)/dtc-parser.tab.c $(obj)/dtc-parser.tab.h
+$(obj)/dtc-lexer.lex.o: $(obj)/dtc-lexer.lex.c $(obj)/dtc-parser.tab.h
+
+targets += dtc-parser.tab.c dtc-lexer.lex.c
+
+clean-files += dtc-parser.tab.h
+
+# GENERATE_PARSER := 1 # Uncomment to rebuild flex/bison output
+
+ifdef GENERATE_PARSER
+
+BISON = bison
+FLEX = flex
+
+quiet_cmd_bison = BISON $@
+ cmd_bison = $(BISON) -o$@ -d $<; cp $@ $@_shipped
+quiet_cmd_flex = FLEX $@
+ cmd_flex = $(FLEX) -o$@ $<; cp $@ $@_shipped
+
+$(obj)/dtc-parser.tab.c: $(src)/dtc-parser.y FORCE
+ $(call if_changed,bison)
+
+$(obj)/dtc-parser.tab.h: $(obj)/dtc-parser.tab.c
+
+$(obj)/dtc-lexer.lex.c: $(src)/dtc-lexer.l FORCE
+ $(call if_changed,flex)
+
+endif
diff --git a/arch/powerpc/boot/dtc-src/Makefile.dtc b/scripts/dtc/Makefile.dtc
similarity index 100%
rename from arch/powerpc/boot/dtc-src/Makefile.dtc
rename to scripts/dtc/Makefile.dtc
diff --git a/arch/powerpc/boot/dtc-src/checks.c b/scripts/dtc/checks.c
similarity index 100%
rename from arch/powerpc/boot/dtc-src/checks.c
rename to scripts/dtc/checks.c
diff --git a/arch/powerpc/boot/dtc-src/data.c b/scripts/dtc/data.c
similarity index 100%
rename from arch/powerpc/boot/dtc-src/data.c
rename to scripts/dtc/data.c
diff --git a/arch/powerpc/boot/dtc-src/dtc-lexer.l b/scripts/dtc/dtc-lexer.l
similarity index 100%
rename from arch/powerpc/boot/dtc-src/dtc-lexer.l
rename to scripts/dtc/dtc-lexer.l
diff --git a/arch/powerpc/boot/dtc-src/dtc-lexer.lex.c_shipped b/scripts/dtc/dtc-lexer.lex.c_shipped
similarity index 100%
rename from arch/powerpc/boot/dtc-src/dtc-lexer.lex.c_shipped
rename to scripts/dtc/dtc-lexer.lex.c_shipped
diff --git a/arch/powerpc/boot/dtc-src/dtc-parser.tab.c_shipped b/scripts/dtc/dtc-parser.tab.c_shipped
similarity index 100%
rename from arch/powerpc/boot/dtc-src/dtc-parser.tab.c_shipped
rename to scripts/dtc/dtc-parser.tab.c_shipped
diff --git a/arch/powerpc/boot/dtc-src/dtc-parser.tab.h_shipped b/scripts/dtc/dtc-parser.tab.h_shipped
similarity index 100%
rename from arch/powerpc/boot/dtc-src/dtc-parser.tab.h_shipped
rename to scripts/dtc/dtc-parser.tab.h_shipped
diff --git a/arch/powerpc/boot/dtc-src/dtc-parser.y b/scripts/dtc/dtc-parser.y
similarity index 100%
rename from arch/powerpc/boot/dtc-src/dtc-parser.y
rename to scripts/dtc/dtc-parser.y
diff --git a/arch/powerpc/boot/dtc-src/dtc.c b/scripts/dtc/dtc.c
similarity index 100%
rename from arch/powerpc/boot/dtc-src/dtc.c
rename to scripts/dtc/dtc.c
diff --git a/arch/powerpc/boot/dtc-src/dtc.h b/scripts/dtc/dtc.h
similarity index 100%
rename from arch/powerpc/boot/dtc-src/dtc.h
rename to scripts/dtc/dtc.h
diff --git a/arch/powerpc/boot/dtc-src/flattree.c b/scripts/dtc/flattree.c
similarity index 100%
rename from arch/powerpc/boot/dtc-src/flattree.c
rename to scripts/dtc/flattree.c
diff --git a/arch/powerpc/boot/dtc-src/fstree.c b/scripts/dtc/fstree.c
similarity index 100%
rename from arch/powerpc/boot/dtc-src/fstree.c
rename to scripts/dtc/fstree.c
diff --git a/arch/powerpc/boot/libfdt/Makefile.libfdt b/scripts/dtc/libfdt/Makefile.libfdt
similarity index 100%
rename from arch/powerpc/boot/libfdt/Makefile.libfdt
rename to scripts/dtc/libfdt/Makefile.libfdt
diff --git a/arch/powerpc/boot/libfdt/fdt.c b/scripts/dtc/libfdt/fdt.c
similarity index 100%
rename from arch/powerpc/boot/libfdt/fdt.c
rename to scripts/dtc/libfdt/fdt.c
diff --git a/arch/powerpc/boot/libfdt/fdt.h b/scripts/dtc/libfdt/fdt.h
similarity index 100%
rename from arch/powerpc/boot/libfdt/fdt.h
rename to scripts/dtc/libfdt/fdt.h
diff --git a/arch/powerpc/boot/libfdt/fdt_ro.c b/scripts/dtc/libfdt/fdt_ro.c
similarity index 100%
rename from arch/powerpc/boot/libfdt/fdt_ro.c
rename to scripts/dtc/libfdt/fdt_ro.c
diff --git a/arch/powerpc/boot/libfdt/fdt_rw.c b/scripts/dtc/libfdt/fdt_rw.c
similarity index 100%
rename from arch/powerpc/boot/libfdt/fdt_rw.c
rename to scripts/dtc/libfdt/fdt_rw.c
diff --git a/arch/powerpc/boot/libfdt/fdt_strerror.c b/scripts/dtc/libfdt/fdt_strerror.c
similarity index 100%
rename from arch/powerpc/boot/libfdt/fdt_strerror.c
rename to scripts/dtc/libfdt/fdt_strerror.c
diff --git a/arch/powerpc/boot/libfdt/fdt_sw.c b/scripts/dtc/libfdt/fdt_sw.c
similarity index 100%
rename from arch/powerpc/boot/libfdt/fdt_sw.c
rename to scripts/dtc/libfdt/fdt_sw.c
diff --git a/arch/powerpc/boot/libfdt/fdt_wip.c b/scripts/dtc/libfdt/fdt_wip.c
similarity index 100%
rename from arch/powerpc/boot/libfdt/fdt_wip.c
rename to scripts/dtc/libfdt/fdt_wip.c
diff --git a/arch/powerpc/boot/libfdt/libfdt.h b/scripts/dtc/libfdt/libfdt.h
similarity index 100%
rename from arch/powerpc/boot/libfdt/libfdt.h
rename to scripts/dtc/libfdt/libfdt.h
diff --git a/arch/powerpc/boot/dtc-src/libfdt_env.h b/scripts/dtc/libfdt/libfdt_env.h
similarity index 100%
rename from arch/powerpc/boot/dtc-src/libfdt_env.h
rename to scripts/dtc/libfdt/libfdt_env.h
diff --git a/arch/powerpc/boot/libfdt/libfdt_internal.h b/scripts/dtc/libfdt/libfdt_internal.h
similarity index 100%
rename from arch/powerpc/boot/libfdt/libfdt_internal.h
rename to scripts/dtc/libfdt/libfdt_internal.h
diff --git a/arch/powerpc/boot/dtc-src/livetree.c b/scripts/dtc/livetree.c
similarity index 100%
rename from arch/powerpc/boot/dtc-src/livetree.c
rename to scripts/dtc/livetree.c
diff --git a/arch/powerpc/boot/dtc-src/srcpos.c b/scripts/dtc/srcpos.c
similarity index 100%
rename from arch/powerpc/boot/dtc-src/srcpos.c
rename to scripts/dtc/srcpos.c
diff --git a/arch/powerpc/boot/dtc-src/srcpos.h b/scripts/dtc/srcpos.h
similarity index 100%
rename from arch/powerpc/boot/dtc-src/srcpos.h
rename to scripts/dtc/srcpos.h
diff --git a/arch/powerpc/boot/dtc-src/treesource.c b/scripts/dtc/treesource.c
similarity index 100%
rename from arch/powerpc/boot/dtc-src/treesource.c
rename to scripts/dtc/treesource.c
diff --git a/arch/powerpc/boot/dtc-src/version_gen.h b/scripts/dtc/version_gen.h
similarity index 100%
rename from arch/powerpc/boot/dtc-src/version_gen.h
rename to scripts/dtc/version_gen.h
--
1.6.2.3
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
^ permalink raw reply related
* Re: [PATCH] rapidio: add common mapping APIs for RapidIO memory access
From: Li Yang @ 2009-04-30 5:10 UTC (permalink / raw)
To: David Miller; +Cc: zw, netdev, linux-kernel, linuxppc-dev, akpm
In-Reply-To: <20090428.043929.171852977.davem@davemloft.net>
On Tue, Apr 28, 2009 at 7:39 PM, David Miller <davem@davemloft.net> wrote:
>
> Please number your patches. :-/
>
> There is no way for anyone to be able to tell in what order
> your changes should be applied.
Sorry for that. I thought I have added -n when doing the
git-format-patch, but it turns out not the case. :( Will double check
next time.
- Leo
^ permalink raw reply
* Re: [PATCH 4/6] powerpc/qe: update QE Serial Number
From: Kumar Gala @ 2009-04-30 4:35 UTC (permalink / raw)
To: Haiying Wang; +Cc: linuxppc-dev
In-Reply-To: <1241028883630-git-send-email-Haiying.Wang@freescale.com>
On Apr 29, 2009, at 1:14 PM, Haiying Wang wrote:
> The latest QE chip may have more Serial Number(SNUM)s of thread to
> use. We will
> get the number of SNUMs from device tree by reading the new property
> "num-snums"
> , and set 28 as the default number of SNUMs so that it is compatible
> with the
> old QE chips' device trees which don't have this new property.
> The macro QE_NUM_OF_SNUM is defined as the maximum number in QE snum
> table which
> is 256.
> Also we update the snum_init[] array with 18 more new SNUMs which are
> confirmed to be useful on new chip.
>
> Signed-off-by: Haiying Wang <Haiying.Wang@freescale.com>
> ---
> .../powerpc/dts-bindings/fsl/cpm_qe/qe.txt | 1 +
> arch/powerpc/include/asm/qe.h | 3 +-
> arch/powerpc/sysdev/qe_lib/qe.c | 47 +++++++++++
> +++++++--
> 3 files changed, 46 insertions(+), 5 deletions(-)
how about updating the existing .dts for this as well. (One patch w/
this and # riscs is fine).
- k
^ permalink raw reply
* Re: [PATCH 2/6] powerpc/qe: update risc allocation for QE
From: Kumar Gala @ 2009-04-30 4:34 UTC (permalink / raw)
To: Haiying Wang; +Cc: linuxppc-dev
In-Reply-To: <12410288792524-git-send-email-Haiying.Wang@freescale.com>
On Apr 29, 2009, at 1:14 PM, Haiying Wang wrote:
> Change the RISC allocation to macros instead of enum, add function
> to read the
> number of risc engines from the new property "num-riscs" under qe
> node in dts.
> Add new property "num-riscs" description in qe.txt
>
> Signed-off-by: Haiying Wang <Haiying.Wang@freescale.com>
> ---
> .../powerpc/dts-bindings/fsl/cpm_qe/qe.txt | 1 +
> arch/powerpc/include/asm/qe.h | 18 ++++++++----
> arch/powerpc/sysdev/qe_lib/qe.c | 28 +++++++++++
> +++++++++
> 3 files changed, 41 insertions(+), 6 deletions(-)
This patch is fine, how about one that updates the exist device tree's
w/QE for this new property
- k
^ permalink raw reply
* Re: [PATCH 1/2] Add support for Designware SATA controller driver
From: Stephen Rothwell @ 2009-04-30 4:30 UTC (permalink / raw)
To: Feng Kan; +Cc: linuxppc-dev
In-Reply-To: <1241041345-19479-1-git-send-email-fkan@amcc.com>
[-- Attachment #1: Type: text/plain, Size: 1894 bytes --]
On Wed, 29 Apr 2009 14:42:25 -0700 Feng Kan <fkan@amcc.com> wrote:
>
> Signed-off-by: Feng Kan <fkan@amcc.com>
> ---
> drivers/ata/Kconfig | 76 +-
> drivers/ata/Makefile | 1 +
> drivers/ata/sata_dwc.c | 2047 ++++++++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 2091 insertions(+), 33 deletions(-)
> create mode 100644 drivers/ata/sata_dwc.c
>
> diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
> index 0bcf264..5321e47 100644
> --- a/drivers/ata/Kconfig
> +++ b/drivers/ata/Kconfig
> @@ -72,56 +72,66 @@ config SATA_FSL
>
> If unsure, say N.
>
> -config ATA_SFF
> - bool "ATA SFF support"
> - default y
> +config SATA_DWC
> + tristate "DesignWare Cores SATA support"
> + depends on 460EX
> help
> - This option adds support for ATA controllers with SFF
> - compliant or similar programming interface.
> + This option enables support for the Synopsys DesignWare Cores SATA
> + controller.
> + It can be found on the AMCC 460EX.
>
> - SFF is the legacy IDE interface that has been around since
> - the dawn of time. Almost all PATA controllers have an
> - SFF interface. Many SATA controllers have an SFF interface
> - when configured into a legacy compatibility mode.
> + If unsure, say N.
>
> - For users with exclusively modern controllers like AHCI,
> - Silicon Image 3124, or Marvell 6440, you may choose to
> - disable this uneeded SFF support.
> +config ATA_SFF
> +bool "ATA SFF support"
> +default y
> +help
> + This option adds support for ATA controllers with SFF
> + compliant or similar programming interface.
You seem to have reformatted some of this file (hopefully)
unintentionally ...
And the linuxppc-embedded mailing list has gone away.
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox