LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* Re: 440EP FPU support missing
From: Josh Boyer @ 2005-11-08 22:32 UTC (permalink / raw)
  To: Matt Porter; +Cc: linuxppc-dev, Stefan Roese, linuxppc64-dev
In-Reply-To: <20051108153036.F27232@cox.net>

On Tue, 2005-11-08 at 15:30 -0700, Matt Porter wrote:
> On Tue, Nov 08, 2005 at 06:38:11PM +0100, Stefan Roese wrote:
> > In the current linux version, Bamboo (440EP) won't compile anymore, because of 
> > missing fpu support:
> > 
> > make uImage
> > ...
> >   LD      init/built-in.o
> >   LD      .tmp_vmlinux1
> > arch/ppc/kernel/head_44x.o(.text+0x868): In function `_start':
> > : undefined reference to `KernelFP'
> > make: *** [.tmp_vmlinux1] Error 1
> > 
> > Somehow arch/ppc/kernel/fpu.S has disappeared. :-( I assume, this happened in 
> > the ppc/ppc64 -> powerpc merge. Any thoughts, why this file disappeared and 
> > how to solve this problem (just restore the original file)?
> 
> arch/powerpc/kernel/fpu.S is being used now which doesn't have KernelFP.
> I don't know why the 44x fpu support wasn't using
> kernel_fp_unavailable_exception() before but I must have missed that
> reviewing it.
> 
> Try this patch.

Doesn't this render the 440EP's FPU useless?

josh

^ permalink raw reply

* [PATCH 2.6.14] ppc32: Fix CONFIG_PRINTK=n building
From: Tom Rini @ 2005-11-08 22:36 UTC (permalink / raw)
  To: Andrew Morton, Paul Mackerras, Kumar Gala; +Cc: linuxppc-dev, Matt Mackall

The following patch is needed to allow PRINTK=n to work on ppc32.

Direct calls to printk from asm files can't be magically removed so we
have to do it manually.

Signed-off-by: Tom Rini <trini@kernel.crashing.org>

Index: linux-2.6.14/arch/ppc/kernel/fpu.S
===================================================================
--- linux-2.6.14.orig/arch/ppc/kernel/fpu.S
+++ linux-2.6.14/arch/ppc/kernel/fpu.S
@@ -91,7 +91,9 @@ KernelFP:
 	ori	r3,r3,86f@l
 	mr	r4,r2			/* current */
 	lwz	r5,_NIP(r1)
+#ifdef CONFIG_PRINTK
 	bl	printk
+#endif
 	b	ret_from_except
 86:	.string	"floating point used in kernel (task=%p, pc=%x)\n"
 	.align	4,0
Index: linux-2.6.14/arch/ppc/kernel/head.S
===================================================================
--- linux-2.6.14.orig/arch/ppc/kernel/head.S
+++ linux-2.6.14/arch/ppc/kernel/head.S
@@ -846,7 +846,9 @@ KernelAltiVec:
 	ori	r3,r3,87f@l
 	mr	r4,r2		/* current */
 	lwz	r5,_NIP(r1)
+#ifdef CONFIG_PRINTK
 	bl	printk
+#endif
 	b	ret_from_except
 87:	.string	"AltiVec used in kernel  (task=%p, pc=%x)  \n"
 	.align	4,0
Index: linux-2.6.14/arch/ppc/kernel/head_fsl_booke.S
===================================================================
--- linux-2.6.14.orig/arch/ppc/kernel/head_fsl_booke.S
+++ linux-2.6.14/arch/ppc/kernel/head_fsl_booke.S
@@ -906,7 +906,9 @@ KernelSPE:
 	ori	r3,r3,87f@l
 	mr	r4,r2		/* current */
 	lwz	r5,_NIP(r1)
+#ifdef CONFIG_PRINTK
 	bl	printk
+#endif
 	b	ret_from_except
 87:	.string	"SPE used in kernel  (task=%p, pc=%x)  \n"
 	.align	4,0

-- 
Tom Rini
http://gate.crashing.org/~trini/

^ permalink raw reply

* Re: 440EP FPU support missing
From: Matt Porter @ 2005-11-08 22:46 UTC (permalink / raw)
  To: Stefan Roese, linuxppc-dev, linuxppc64-dev
In-Reply-To: <20051108223202.GA25185@localhost.localdomain>

On Wed, Nov 09, 2005 at 09:32:02AM +1100, David Gibson wrote:
> On Tue, Nov 08, 2005 at 06:38:11PM +0100, Stefan Roese wrote:
> > In the current linux version, Bamboo (440EP) won't compile anymore, because of 
> > missing fpu support:
> > 
> > make uImage
> > ...
> >   LD      init/built-in.o
> >   LD      .tmp_vmlinux1
> > arch/ppc/kernel/head_44x.o(.text+0x868): In function `_start':
> > : undefined reference to `KernelFP'
> > make: *** [.tmp_vmlinux1] Error 1
> > 
> > Somehow arch/ppc/kernel/fpu.S has disappeared. :-( I assume, this happened in 
> > the ppc/ppc64 -> powerpc merge. Any thoughts, why this file disappeared and 
> > how to solve this problem (just restore the original file)?
> 
> It's just moved to arch/powerpc/kernel/fpu.S.  All you should need is
> to tweak the Makefiles so that it's included in your build.

Actually, the version in arch/powerpc/kernel/ is older than the version
removed from arch/ppc/kernel/. It is already being built...see my other
post.

-Matt

^ permalink raw reply

* Re: fix swapping on 8xx?
From: Wolfgang Denk @ 2005-11-08 22:46 UTC (permalink / raw)
  To: Tom Rini; +Cc: David Jander, linuxppc-embedded
In-Reply-To: <20051108210204.GP3839@smtp.west.cox.net>

In message <20051108210204.GP3839@smtp.west.cox.net> you wrote:
>
> > Please do not remove stuff that is needed and used to work (in 2.4).
> 
> Note the bug in question exists in 2.4, and I think really even 2.2.

Hm... as far as I can remember (and see in the change logs) the  only
fix  we  implemented  for our 2.4.25 tree to get swapping on a MPC8xx
working was a set of bad offsets in include/asm-ppc/pgtable.h - see
http://www.denx.de/cgi-bin/gitweb.cgi?p=linuxppc_2_4_devel.git;a=commit;h=e6d7a1c83f9fd5820cdb85389d6a8f2207f3641d

With this change swapping works fine for us - some of  our  customers
have been using this code in production for over two years now.

Best regards,

Wolfgang Denk

-- 
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
Good morning. This is the telephone company. Due  to  repairs,  we're
giving  you  advance notice that your service will be cut off indefi-
nitely at ten o'clock. That's two minutes from now.

^ permalink raw reply

* Re: [PATCH 2.6.14] ppc32: Fix CONFIG_PRINTK=n building
From: Matt Porter @ 2005-11-08 22:48 UTC (permalink / raw)
  To: Tom Rini; +Cc: Andrew Morton, Kumar Gala, Matt Mackall, linuxppc-dev
In-Reply-To: <20051108223631.GR3839@smtp.west.cox.net>

On Tue, Nov 08, 2005 at 03:36:31PM -0700, Tom Rini wrote:
> The following patch is needed to allow PRINTK=n to work on ppc32.
> 
> Direct calls to printk from asm files can't be magically removed so we
> have to do it manually.
> 
> Signed-off-by: Tom Rini <trini@kernel.crashing.org>
> 
> Index: linux-2.6.14/arch/ppc/kernel/fpu.S
> ===================================================================
> --- linux-2.6.14.orig/arch/ppc/kernel/fpu.S

This file doesn't exist in mainline. 2.6.14 is too old as a reference
for ppc patches due to the arch/powerpc/ merge.

-Matt

^ permalink raw reply

* Re: [PATCH 2.6.14] ppc32: Fix CONFIG_PRINTK=n building
From: Matt Mackall @ 2005-11-08 22:39 UTC (permalink / raw)
  To: Tom Rini; +Cc: Andrew Morton, Kumar Gala, linuxppc-dev
In-Reply-To: <20051108223631.GR3839@smtp.west.cox.net>

On Tue, Nov 08, 2005 at 03:36:31PM -0700, Tom Rini wrote:
> The following patch is needed to allow PRINTK=n to work on ppc32.
> 
> Direct calls to printk from asm files can't be magically removed so we
> have to do it manually.
> 
> Signed-off-by: Tom Rini <trini@kernel.crashing.org>

Looks good. 

Acked-by: Matt Mackall <mpm@selenic.com>

-- 
Mathematics is the supreme nostalgia of our time.

^ permalink raw reply

* Re: 440EP FPU support missing
From: Matt Porter @ 2005-11-08 23:02 UTC (permalink / raw)
  To: Josh Boyer; +Cc: linuxppc-dev, Stefan Roese, linuxppc64-dev
In-Reply-To: <1131489174.26096.0.camel@yoda.jdub.homelinux.org>

On Tue, Nov 08, 2005 at 04:32:54PM -0600, Josh Boyer wrote:
> On Tue, 2005-11-08 at 15:30 -0700, Matt Porter wrote:
> > On Tue, Nov 08, 2005 at 06:38:11PM +0100, Stefan Roese wrote:
> > > In the current linux version, Bamboo (440EP) won't compile anymore, because of 
> > > missing fpu support:
> > > 
> > > make uImage
> > > ...
> > >   LD      init/built-in.o
> > >   LD      .tmp_vmlinux1
> > > arch/ppc/kernel/head_44x.o(.text+0x868): In function `_start':
> > > : undefined reference to `KernelFP'
> > > make: *** [.tmp_vmlinux1] Error 1
> > > 
> > > Somehow arch/ppc/kernel/fpu.S has disappeared. :-( I assume, this happened in 
> > > the ppc/ppc64 -> powerpc merge. Any thoughts, why this file disappeared and 
> > > how to solve this problem (just restore the original file)?
> > 
> > arch/powerpc/kernel/fpu.S is being used now which doesn't have KernelFP.
> > I don't know why the 44x fpu support wasn't using
> > kernel_fp_unavailable_exception() before but I must have missed that
> > reviewing it.
> > 
> > Try this patch.
> 
> Doesn't this render the 440EP's FPU useless?
 
Does what render the 440EP's FPU useless? The supplied patch? I
don't think so, the path should be the same as classic PPC.

The patch simply replaces the KernelFP routine that used to be in
arch/ppc/kernel/fpu.S (and was removed inadvertently in the arch/powerpc/
merge) with a kernel_fp_unavailable_exception() call which does the
equivalent and is shared by others.

The exception still loads up the fpu is coming from userspace and
only goes down this path when getting an FP unavailable exception from
kernel space.

-Matt

^ permalink raw reply

* Re: fix swapping on 8xx?
From: Dan Malek @ 2005-11-08 23:20 UTC (permalink / raw)
  To: Wolfgang Denk; +Cc: Tom Rini, David Jander, linuxppc-embedded
In-Reply-To: <20051108224658.98933352B33@atlas.denx.de>


On Nov 8, 2005, at 5:46 PM, Wolfgang Denk wrote:

> Hm... as far as I can remember ....

Yes, your patch looks correct.  I'll just map these changes
on top of the PTEs to verify there aren't some status
bits that we may still incorrectly update.  When I originally
selected the bit positions for the PTEs I didn't properly
consider the usage of the PTE during swap (nor did
I always have the options I wanted :-))

Among everything else I promised, I'll try to get all of these
updates quickly sorted out.

Thanks for all of these pointers to old patches, saves
me time looking them up :-)


	-- Dan

^ permalink raw reply

* Re: [PATCH 2.6.14] ppc32: Fix CONFIG_PRINTK=n building
From: Paul Mackerras @ 2005-11-09  0:56 UTC (permalink / raw)
  To: Tom Rini; +Cc: Andrew Morton, Kumar Gala, Matt Mackall, linuxppc-dev
In-Reply-To: <20051108223631.GR3839@smtp.west.cox.net>

Tom Rini writes:

> The following patch is needed to allow PRINTK=n to work on ppc32.
> 
> Direct calls to printk from asm files can't be magically removed so we
> have to do it manually.

Nak.  We are using arch/powerpc/kernel/fpu.S now (even for ARCH=ppc)
and it doesn't do the printk in assembler.

In general I'd prefer to move the printk calls to C code rather than
adding these ifdefs.

Paul.

^ permalink raw reply

* [PATCH] Merge platform codes
From: Benjamin Herrenschmidt @ 2005-11-09  3:07 UTC (permalink / raw)
  To: linuxppc-dev list, linuxppc64-dev

This patch merges the _MACH_* and PLATFORM_* codes together, and changes
ppc64 to use _machine instead of systemcfg.h. (The later is also moved
to asm-powerpc, it will be renamed & made common in the next patch that
merges the vDSO).
Later, we'll eventually completely get rid of the platform numbers.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

Index: linux-work/arch/powerpc/kernel/asm-offsets.c
===================================================================
--- linux-work.orig/arch/powerpc/kernel/asm-offsets.c	2005-11-08 11:00:17.000000000 +1100
+++ linux-work/arch/powerpc/kernel/asm-offsets.c	2005-11-09 12:00:55.000000000 +1100
@@ -106,7 +106,6 @@
 	DEFINE(ICACHEL1LINESIZE, offsetof(struct ppc64_caches, iline_size));
 	DEFINE(ICACHEL1LOGLINESIZE, offsetof(struct ppc64_caches, log_iline_size));
 	DEFINE(ICACHEL1LINESPERPAGE, offsetof(struct ppc64_caches, ilines_per_page));
-	DEFINE(PLATFORM, offsetof(struct systemcfg, platform));
 	DEFINE(PLATFORM_LPAR, PLATFORM_LPAR);
 
 	/* paca */
Index: linux-work/arch/powerpc/kernel/head_64.S
===================================================================
--- linux-work.orig/arch/powerpc/kernel/head_64.S	2005-11-08 11:00:17.000000000 +1100
+++ linux-work/arch/powerpc/kernel/head_64.S	2005-11-09 12:00:55.000000000 +1100
@@ -28,7 +28,6 @@
 #include <asm/reg.h>
 #include <asm/page.h>
 #include <asm/mmu.h>
-#include <asm/systemcfg.h>
 #include <asm/ppc_asm.h>
 #include <asm/asm-offsets.h>
 #include <asm/bug.h>
@@ -1735,9 +1734,7 @@
 	sc				/* HvCall_setASR */
 #else
 	/* set the ASR */
-	ld	r3,systemcfg@got(r2)	/* r3 = ptr to systemcfg	 */
-	ld	r3,0(r3)
-	lwz	r3,PLATFORM(r3)		/* r3 = platform flags		 */
+	ld	r3,_machine@got(r2)	/* r3 = machine type	 */
 	andi.	r3,r3,PLATFORM_LPAR	/* Test if bit 0 is set (LPAR bit) */
 	beq	98f			/* branch if result is 0  */
 	mfspr	r3,SPRN_PVR
@@ -1899,9 +1896,7 @@
 	/* set the ASR */
 	ld	r3,PACASTABREAL(r13)
 	ori	r4,r3,1			/* turn on valid bit		 */
-	ld	r3,systemcfg@got(r2)	/* r3 = ptr to systemcfg */
-	ld	r3,0(r3)
-	lwz	r3,PLATFORM(r3)		/* r3 = platform flags */
+	ld	r3,_machine@got(r2)	/* r3 = machine type */
 	andi.	r3,r3,PLATFORM_LPAR	/* Test if bit 0 is set (LPAR bit) */
 	beq	98f			/* branch if result is 0  */
 	mfspr	r3,SPRN_PVR
@@ -1919,9 +1914,7 @@
 	mtasr	r4			/* set the stab location	*/
 99:
 	/* Set SDR1 (hash table pointer) */
-	ld	r3,systemcfg@got(r2)	/* r3 = ptr to systemcfg */
-	ld	r3,0(r3)
-	lwz	r3,PLATFORM(r3)		/* r3 = platform flags */
+	ld	r3,_machine@got(r2)	/* r3 = machine */
 	/* Test if bit 0 is set (LPAR bit) */
 	andi.	r3,r3,PLATFORM_LPAR
 	bne	98f			/* branch if result is !0  */
Index: linux-work/arch/powerpc/kernel/prom.c
===================================================================
--- linux-work.orig/arch/powerpc/kernel/prom.c	2005-11-09 11:49:03.000000000 +1100
+++ linux-work/arch/powerpc/kernel/prom.c	2005-11-09 12:00:55.000000000 +1100
@@ -48,9 +48,6 @@
 #include <asm/machdep.h>
 #include <asm/pSeries_reconfig.h>
 #include <asm/pci-bridge.h>
-#ifdef CONFIG_PPC64
-#include <asm/systemcfg.h>
-#endif
 
 #ifdef DEBUG
 #define DBG(fmt...) printk(KERN_ERR fmt)
@@ -391,7 +388,7 @@
 
 #ifdef CONFIG_PPC64
 		/* We offset irq numbers for the u3 MPIC by 128 in PowerMac */
-		if (systemcfg->platform == PLATFORM_POWERMAC && ic && ic->parent) {
+		if (_machine == PLATFORM_POWERMAC && ic && ic->parent) {
 			char *name = get_property(ic->parent, "name", NULL);
 			if (name && !strcmp(name, "u3"))
 				np->intrs[intrcount].line += 128;
@@ -1161,13 +1158,9 @@
 	prop = (u32 *)of_get_flat_dt_prop(node, "linux,platform", NULL);
 	if (prop == NULL)
 		return 0;
-#ifdef CONFIG_PPC64
-	systemcfg->platform = *prop;
-#else
-#ifdef CONFIG_PPC_MULTIPLATFORM
+#if defined(CONFIG_PPC64) || defined(CONFIG_PPC_MULTIPLATFORM)
 	_machine = *prop;
 #endif
-#endif
 
 #ifdef CONFIG_PPC64
 	/* check if iommu is forced on or off */
@@ -1339,9 +1332,6 @@
 	of_scan_flat_dt(early_init_dt_scan_memory, NULL);
 	lmb_enforce_memory_limit(memory_limit);
 	lmb_analyze();
-#ifdef CONFIG_PPC64
-	systemcfg->physicalMemorySize = lmb_phys_mem_size();
-#endif
 	lmb_reserve(0, __pa(klimit));
 
 	DBG("Phys. mem: %lx\n", lmb_phys_mem_size());
@@ -1908,7 +1898,7 @@
 	/* We don't support that function on PowerMac, at least
 	 * not yet
 	 */
-	if (systemcfg->platform == PLATFORM_POWERMAC)
+	if (_machine == PLATFORM_POWERMAC)
 		return -ENODEV;
 
 	/* fix up new node's linux_phandle field */
Index: linux-work/arch/powerpc/kernel/rtas.c
===================================================================
--- linux-work.orig/arch/powerpc/kernel/rtas.c	2005-11-09 11:49:03.000000000 +1100
+++ linux-work/arch/powerpc/kernel/rtas.c	2005-11-09 12:00:55.000000000 +1100
@@ -29,9 +29,6 @@
 #include <asm/delay.h>
 #include <asm/uaccess.h>
 #include <asm/lmb.h>
-#ifdef CONFIG_PPC64
-#include <asm/systemcfg.h>
-#endif
 
 struct rtas_t rtas = {
 	.lock = SPIN_LOCK_UNLOCKED
@@ -671,7 +668,7 @@
 	 * the stop-self token if any
 	 */
 #ifdef CONFIG_PPC64
-	if (systemcfg->platform == PLATFORM_PSERIES_LPAR)
+	if (_machine == PLATFORM_PSERIES_LPAR)
 		rtas_region = min(lmb.rmo_size, RTAS_INSTANTIATE_MAX);
 #endif
 	rtas_rmo_buf = lmb_alloc_base(RTAS_RMOBUF_MAX, PAGE_SIZE, rtas_region);
Index: linux-work/arch/powerpc/kernel/setup-common.c
===================================================================
--- linux-work.orig/arch/powerpc/kernel/setup-common.c	2005-11-09 11:49:03.000000000 +1100
+++ linux-work/arch/powerpc/kernel/setup-common.c	2005-11-09 12:00:55.000000000 +1100
@@ -33,6 +33,7 @@
 #include <asm/io.h>
 #include <asm/prom.h>
 #include <asm/processor.h>
+#include <asm/systemcfg.h>
 #include <asm/pgtable.h>
 #include <asm/smp.h>
 #include <asm/elf.h>
@@ -510,8 +511,8 @@
 	 * On pSeries LPAR, we need to know how many cpus
 	 * could possibly be added to this partition.
 	 */
-	if (systemcfg->platform == PLATFORM_PSERIES_LPAR &&
-				(dn = of_find_node_by_path("/rtas"))) {
+	if (_machine == PLATFORM_PSERIES_LPAR &&
+	    (dn = of_find_node_by_path("/rtas"))) {
 		int num_addr_cell, num_size_cell, maxcpus;
 		unsigned int *ireg;
 
@@ -555,7 +556,7 @@
 			cpu_set(cpu ^ 0x1, cpu_sibling_map[cpu]);
 	}
 
-	systemcfg->processorCount = num_present_cpus();
+	_systemcfg->processorCount = num_present_cpus();
 #endif /* CONFIG_PPC64 */
 }
 #endif /* CONFIG_SMP */
Index: linux-work/arch/powerpc/kernel/setup_64.c
===================================================================
--- linux-work.orig/arch/powerpc/kernel/setup_64.c	2005-11-09 11:49:03.000000000 +1100
+++ linux-work/arch/powerpc/kernel/setup_64.c	2005-11-09 13:25:41.000000000 +1100
@@ -108,6 +108,8 @@
 int boot_cpuid_phys = 0;
 dev_t boot_dev;
 u64 ppc64_pft_size;
+int _machine;
+EXPORT_SYMBOL(_machine);
 
 struct ppc64_caches ppc64_caches;
 EXPORT_SYMBOL_GPL(ppc64_caches);
@@ -254,11 +256,10 @@
 	 * Iterate all ppc_md structures until we find the proper
 	 * one for the current machine type
 	 */
-	DBG("Probing machine type for platform %x...\n",
-	    systemcfg->platform);
+	DBG("Probing machine type for platform %x...\n", _machine);
 
 	for (mach = machines; *mach; mach++) {
-		if ((*mach)->probe(systemcfg->platform))
+		if ((*mach)->probe(_machine))
 			break;
 	}
 	/* What can we do if we didn't find ? */
@@ -315,7 +316,8 @@
 #endif /* CONFIG_SMP || CONFIG_KEXEC */
 
 /*
- * Initialize some remaining members of the ppc64_caches and systemcfg structures
+ * Initialize some remaining members of the ppc64_caches and systemcfg
+ * structures
  * (at least until we get rid of them completely). This is mostly some
  * cache informations about the CPU that will be used by cache flush
  * routines and/or provided to userland
@@ -340,7 +342,7 @@
 			const char *dc, *ic;
 
 			/* Then read cache informations */
-			if (systemcfg->platform == PLATFORM_POWERMAC) {
+			if (_machine == PLATFORM_POWERMAC) {
 				dc = "d-cache-block-size";
 				ic = "i-cache-block-size";
 			} else {
@@ -360,8 +362,8 @@
 				DBG("Argh, can't find dcache properties ! "
 				    "sizep: %p, lsizep: %p\n", sizep, lsizep);
 
-			systemcfg->dcache_size = ppc64_caches.dsize = size;
-			systemcfg->dcache_line_size =
+			_systemcfg->dcache_size = ppc64_caches.dsize = size;
+			_systemcfg->dcache_line_size =
 				ppc64_caches.dline_size = lsize;
 			ppc64_caches.log_dline_size = __ilog2(lsize);
 			ppc64_caches.dlines_per_page = PAGE_SIZE / lsize;
@@ -378,8 +380,8 @@
 				DBG("Argh, can't find icache properties ! "
 				    "sizep: %p, lsizep: %p\n", sizep, lsizep);
 
-			systemcfg->icache_size = ppc64_caches.isize = size;
-			systemcfg->icache_line_size =
+			_systemcfg->icache_size = ppc64_caches.isize = size;
+			_systemcfg->icache_line_size =
 				ppc64_caches.iline_size = lsize;
 			ppc64_caches.log_iline_size = __ilog2(lsize);
 			ppc64_caches.ilines_per_page = PAGE_SIZE / lsize;
@@ -387,10 +389,12 @@
 	}
 
 	/* Add an eye catcher and the systemcfg layout version number */
-	strcpy(systemcfg->eye_catcher, "SYSTEMCFG:PPC64");
-	systemcfg->version.major = SYSTEMCFG_MAJOR;
-	systemcfg->version.minor = SYSTEMCFG_MINOR;
-	systemcfg->processor = mfspr(SPRN_PVR);
+	strcpy(_systemcfg->eye_catcher, "SYSTEMCFG:PPC64");
+	_systemcfg->version.major = SYSTEMCFG_MAJOR;
+	_systemcfg->version.minor = SYSTEMCFG_MINOR;
+	_systemcfg->processor = mfspr(SPRN_PVR);
+	_systemcfg->platform = _machine;
+	_systemcfg->physicalMemorySize = lmb_phys_mem_size();
 
 	DBG(" <- initialize_cache_info()\n");
 }
@@ -479,10 +483,10 @@
 	printk("-----------------------------------------------------\n");
 	printk("ppc64_pft_size                = 0x%lx\n", ppc64_pft_size);
 	printk("ppc64_interrupt_controller    = 0x%ld\n", ppc64_interrupt_controller);
-	printk("systemcfg                     = 0x%p\n", systemcfg);
-	printk("systemcfg->platform           = 0x%x\n", systemcfg->platform);
-	printk("systemcfg->processorCount     = 0x%lx\n", systemcfg->processorCount);
-	printk("systemcfg->physicalMemorySize = 0x%lx\n", systemcfg->physicalMemorySize);
+	printk("systemcfg                     = 0x%p\n", _systemcfg);
+	printk("systemcfg->platform           = 0x%x\n", _systemcfg->platform);
+	printk("systemcfg->processorCount     = 0x%lx\n", _systemcfg->processorCount);
+	printk("systemcfg->physicalMemorySize = 0x%lx\n", _systemcfg->physicalMemorySize);
 	printk("ppc64_caches.dcache_line_size = 0x%x\n",
 			ppc64_caches.dline_size);
 	printk("ppc64_caches.icache_line_size = 0x%x\n",
@@ -564,12 +568,12 @@
 	for (i = 0; i < __NR_syscalls; i++) {
 		if (sys_call_table[i*2] != sys_ni_syscall) {
 			count64++;
-			systemcfg->syscall_map_64[i >> 5] |=
+			_systemcfg->syscall_map_64[i >> 5] |=
 				0x80000000UL >> (i & 0x1f);
 		}
 		if (sys_call_table[i*2+1] != sys_ni_syscall) {
 			count32++;
-			systemcfg->syscall_map_32[i >> 5] |=
+			_systemcfg->syscall_map_32[i >> 5] |=
 				0x80000000UL >> (i & 0x1f);
 		}
 	}
Index: linux-work/arch/powerpc/kernel/smp.c
===================================================================
--- linux-work.orig/arch/powerpc/kernel/smp.c	2005-11-09 11:49:03.000000000 +1100
+++ linux-work/arch/powerpc/kernel/smp.c	2005-11-09 12:00:55.000000000 +1100
@@ -44,6 +44,7 @@
 #include <asm/cputable.h>
 #include <asm/system.h>
 #include <asm/mpic.h>
+#include <asm/systemcfg.h>
 #ifdef CONFIG_PPC64
 #include <asm/paca.h>
 #endif
@@ -368,7 +369,9 @@
 	if (cpu == boot_cpuid)
 		return -EBUSY;
 
-	systemcfg->processorCount--;
+#ifdef CONFIG_PPC64
+	_systemcfg->processorCount--;
+#endif
 	cpu_clear(cpu, cpu_online_map);
 	fixup_irqs(cpu_online_map);
 	return 0;
Index: linux-work/arch/powerpc/kernel/sys_ppc32.c
===================================================================
--- linux-work.orig/arch/powerpc/kernel/sys_ppc32.c	2005-11-01 14:13:52.000000000 +1100
+++ linux-work/arch/powerpc/kernel/sys_ppc32.c	2005-11-09 12:00:55.000000000 +1100
@@ -52,7 +52,6 @@
 #include <asm/semaphore.h>
 #include <asm/time.h>
 #include <asm/mmu_context.h>
-#include <asm/systemcfg.h>
 #include <asm/ppc-pci.h>
 
 /* readdir & getdents */
Index: linux-work/arch/powerpc/kernel/time.c
===================================================================
--- linux-work.orig/arch/powerpc/kernel/time.c	2005-11-09 11:49:03.000000000 +1100
+++ linux-work/arch/powerpc/kernel/time.c	2005-11-09 12:00:55.000000000 +1100
@@ -271,13 +271,13 @@
 	 * tb_to_xs and stamp_xsec values are consistent.  If not, then it
 	 * loops back and reads them again until this criteria is met.
 	 */
-	++(systemcfg->tb_update_count);
+	++(_systemcfg->tb_update_count);
 	smp_wmb();
-	systemcfg->tb_orig_stamp = new_tb_stamp;
-	systemcfg->stamp_xsec = new_stamp_xsec;
-	systemcfg->tb_to_xs = new_tb_to_xs;
+	_systemcfg->tb_orig_stamp = new_tb_stamp;
+	_systemcfg->stamp_xsec = new_stamp_xsec;
+	_systemcfg->tb_to_xs = new_tb_to_xs;
 	smp_wmb();
-	++(systemcfg->tb_update_count);
+	++(_systemcfg->tb_update_count);
 #endif
 }
 
@@ -357,8 +357,9 @@
 				do_gtod.tb_ticks_per_sec = tb_ticks_per_sec;
 				tb_to_xs = divres.result_low;
 				do_gtod.varp->tb_to_xs = tb_to_xs;
-				systemcfg->tb_ticks_per_sec = tb_ticks_per_sec;
-				systemcfg->tb_to_xs = tb_to_xs;
+				_systemcfg->tb_ticks_per_sec =
+					tb_ticks_per_sec;
+				_systemcfg->tb_to_xs = tb_to_xs;
 			}
 			else {
 				printk( "Titan recalibrate: FAILED (difference > 4 percent)\n"
@@ -559,8 +560,8 @@
 	update_gtod(tb_last_jiffy, new_xsec, do_gtod.varp->tb_to_xs);
 
 #ifdef CONFIG_PPC64
-	systemcfg->tz_minuteswest = sys_tz.tz_minuteswest;
-	systemcfg->tz_dsttime = sys_tz.tz_dsttime;
+	_systemcfg->tz_minuteswest = sys_tz.tz_minuteswest;
+	_systemcfg->tz_dsttime = sys_tz.tz_dsttime;
 #endif
 
 	write_sequnlock_irqrestore(&xtime_lock, flags);
@@ -711,11 +712,11 @@
 	do_gtod.varp->tb_to_xs = tb_to_xs;
 	do_gtod.tb_to_us = tb_to_us;
 #ifdef CONFIG_PPC64
-	systemcfg->tb_orig_stamp = tb_last_jiffy;
-	systemcfg->tb_update_count = 0;
-	systemcfg->tb_ticks_per_sec = tb_ticks_per_sec;
-	systemcfg->stamp_xsec = xtime.tv_sec * XSEC_PER_SEC;
-	systemcfg->tb_to_xs = tb_to_xs;
+	_systemcfg->tb_orig_stamp = tb_last_jiffy;
+	_systemcfg->tb_update_count = 0;
+	_systemcfg->tb_ticks_per_sec = tb_ticks_per_sec;
+	_systemcfg->stamp_xsec = xtime.tv_sec * XSEC_PER_SEC;
+	_systemcfg->tb_to_xs = tb_to_xs;
 #endif
 
 	time_freq = 0;
Index: linux-work/arch/ppc64/kernel/asm-offsets.c
===================================================================
--- linux-work.orig/arch/ppc64/kernel/asm-offsets.c	2005-11-08 11:00:17.000000000 +1100
+++ linux-work/arch/ppc64/kernel/asm-offsets.c	2005-11-09 12:00:55.000000000 +1100
@@ -74,7 +74,6 @@
 	DEFINE(ICACHEL1LINESIZE, offsetof(struct ppc64_caches, iline_size));
 	DEFINE(ICACHEL1LOGLINESIZE, offsetof(struct ppc64_caches, log_iline_size));
 	DEFINE(ICACHEL1LINESPERPAGE, offsetof(struct ppc64_caches, ilines_per_page));
-	DEFINE(PLATFORM, offsetof(struct systemcfg, platform));
 	DEFINE(PLATFORM_LPAR, PLATFORM_LPAR);
 
 	/* paca */
Index: linux-work/arch/ppc64/kernel/eeh.c
===================================================================
--- linux-work.orig/arch/ppc64/kernel/eeh.c	2005-11-01 14:13:53.000000000 +1100
+++ linux-work/arch/ppc64/kernel/eeh.c	2005-11-09 12:00:55.000000000 +1100
@@ -32,7 +32,6 @@
 #include <asm/machdep.h>
 #include <asm/rtas.h>
 #include <asm/atomic.h>
-#include <asm/systemcfg.h>
 #include <asm/ppc-pci.h>
 
 #undef DEBUG
@@ -932,11 +931,12 @@
 {
 	struct proc_dir_entry *e;
 
-	if (systemcfg->platform & PLATFORM_PSERIES) {
-		e = create_proc_entry("ppc64/eeh", 0, NULL);
-		if (e)
-			e->proc_fops = &proc_eeh_operations;
-	}
+	if (_machine != PLATFORM_PSERIES && _machine != PLATFORM_PSERIES_LPAR)
+		return 0;
+
+	e = create_proc_entry("ppc64/eeh", 0, NULL);
+	if (e)
+		e->proc_fops = &proc_eeh_operations;
 
 	return 0;
 }
Index: linux-work/arch/ppc64/kernel/head.S
===================================================================
--- linux-work.orig/arch/ppc64/kernel/head.S	2005-11-08 11:00:17.000000000 +1100
+++ linux-work/arch/ppc64/kernel/head.S	2005-11-09 12:00:55.000000000 +1100
@@ -28,7 +28,6 @@
 #include <asm/processor.h>
 #include <asm/page.h>
 #include <asm/mmu.h>
-#include <asm/systemcfg.h>
 #include <asm/ppc_asm.h>
 #include <asm/asm-offsets.h>
 #include <asm/bug.h>
@@ -1735,9 +1734,7 @@
 	sc				/* HvCall_setASR */
 #else
 	/* set the ASR */
-	ld	r3,systemcfg@got(r2)	/* r3 = ptr to systemcfg	 */
-	ld	r3,0(r3)
-	lwz	r3,PLATFORM(r3)		/* r3 = platform flags		 */
+	ld	r3,_machine@got(r2)	/* r3 = machine type	 */
 	andi.	r3,r3,PLATFORM_LPAR	/* Test if bit 0 is set (LPAR bit) */
 	beq	98f			/* branch if result is 0  */
 	mfspr	r3,SPRN_PVR
@@ -1899,9 +1896,7 @@
 	/* set the ASR */
 	ld	r3,PACASTABREAL(r13)
 	ori	r4,r3,1			/* turn on valid bit		 */
-	ld	r3,systemcfg@got(r2)	/* r3 = ptr to systemcfg */
-	ld	r3,0(r3)
-	lwz	r3,PLATFORM(r3)		/* r3 = platform flags */
+	ld	r3,_machine@got(r2)	/* r3 = machine type */
 	andi.	r3,r3,PLATFORM_LPAR	/* Test if bit 0 is set (LPAR bit) */
 	beq	98f			/* branch if result is 0  */
 	mfspr	r3,SPRN_PVR
@@ -1919,9 +1914,7 @@
 	mtasr	r4			/* set the stab location	*/
 99:
 	/* Set SDR1 (hash table pointer) */
-	ld	r3,systemcfg@got(r2)	/* r3 = ptr to systemcfg */
-	ld	r3,0(r3)
-	lwz	r3,PLATFORM(r3)		/* r3 = platform flags */
+	ld	r3,_machine@got(r2)	/* r3 = machine type */
 	/* Test if bit 0 is set (LPAR bit) */
 	andi.	r3,r3,PLATFORM_LPAR
 	bne	98f			/* branch if result is !0  */
Index: linux-work/arch/ppc64/kernel/idle.c
===================================================================
--- linux-work.orig/arch/ppc64/kernel/idle.c	2005-11-09 11:49:03.000000000 +1100
+++ linux-work/arch/ppc64/kernel/idle.c	2005-11-09 12:00:55.000000000 +1100
@@ -26,7 +26,6 @@
 #include <asm/processor.h>
 #include <asm/cputable.h>
 #include <asm/time.h>
-#include <asm/systemcfg.h>
 #include <asm/machdep.h>
 #include <asm/smp.h>
 
Index: linux-work/arch/ppc64/kernel/lparcfg.c
===================================================================
--- linux-work.orig/arch/ppc64/kernel/lparcfg.c	2005-11-08 11:00:17.000000000 +1100
+++ linux-work/arch/ppc64/kernel/lparcfg.c	2005-11-09 12:00:55.000000000 +1100
@@ -35,6 +35,7 @@
 #include <asm/time.h>
 #include <asm/iseries/it_exp_vpd_panel.h>
 #include <asm/prom.h>
+#include <asm/systemcfg.h>
 
 #define MODULE_VERS "1.6"
 #define MODULE_NAME "lparcfg"
@@ -371,7 +372,7 @@
 	lrdrp = (int *)get_property(rtas_node, "ibm,lrdr-capacity", NULL);
 
 	if (lrdrp == NULL) {
-		partition_potential_processors = systemcfg->processorCount;
+		partition_potential_processors = _systemcfg->processorCount;
 	} else {
 		partition_potential_processors = *(lrdrp + 4);
 	}
Index: linux-work/arch/ppc64/kernel/nvram.c
===================================================================
--- linux-work.orig/arch/ppc64/kernel/nvram.c	2005-10-26 12:43:38.000000000 +1000
+++ linux-work/arch/ppc64/kernel/nvram.c	2005-11-09 12:00:55.000000000 +1100
@@ -31,7 +31,6 @@
 #include <asm/rtas.h>
 #include <asm/prom.h>
 #include <asm/machdep.h>
-#include <asm/systemcfg.h>
 
 #undef DEBUG_NVRAM
 
@@ -167,7 +166,7 @@
 	case IOC_NVRAM_GET_OFFSET: {
 		int part, offset;
 
-		if (systemcfg->platform != PLATFORM_POWERMAC)
+		if (_machine != PLATFORM_POWERMAC)
 			return -EINVAL;
 		if (copy_from_user(&part, (void __user*)arg, sizeof(part)) != 0)
 			return -EFAULT;
@@ -450,7 +449,7 @@
 	 * in our nvram, as Apple defined partitions use pretty much
 	 * all of the space
 	 */
-	if (systemcfg->platform == PLATFORM_POWERMAC)
+	if (_machine == PLATFORM_POWERMAC)
 		return -ENOSPC;
 
 	/* see if we have an OS partition that meets our needs.
Index: linux-work/arch/ppc64/kernel/prom.c
===================================================================
--- linux-work.orig/arch/ppc64/kernel/prom.c	2005-11-09 11:49:03.000000000 +1100
+++ linux-work/arch/ppc64/kernel/prom.c	2005-11-09 12:00:55.000000000 +1100
@@ -318,7 +318,7 @@
 		}
 
 		/* We offset irq numbers for the u3 MPIC by 128 in PowerMac */
-		if (systemcfg->platform == PLATFORM_POWERMAC && ic && ic->parent) {
+		if (_machine == PLATFORM_POWERMAC && ic && ic->parent) {
 			char *name = get_property(ic->parent, "name", NULL);
 			if (name && !strcmp(name, "u3"))
 				np->intrs[intrcount].line += 128;
@@ -1065,7 +1065,7 @@
 	prop = (u32 *)of_get_flat_dt_prop(node, "linux,platform", NULL);
 	if (prop == NULL)
 		return 0;
-	systemcfg->platform = *prop;
+	_machine = *prop;
 
 	/* check if iommu is forced on or off */
 	if (of_get_flat_dt_prop(node, "linux,iommu-off", NULL) != NULL)
@@ -1230,11 +1230,8 @@
 	of_scan_flat_dt(early_init_dt_scan_memory, NULL);
 	lmb_enforce_memory_limit(memory_limit);
 	lmb_analyze();
-	systemcfg->physicalMemorySize = lmb_phys_mem_size();
 	lmb_reserve(0, __pa(klimit));
 
-	DBG("Phys. mem: %lx\n", systemcfg->physicalMemorySize);
-
 	/* Reserve LMB regions used by kernel, initrd, dt, etc... */
 	early_reserve_mem();
 
@@ -1753,7 +1750,7 @@
 	/* We don't support that function on PowerMac, at least
 	 * not yet
 	 */
-	if (systemcfg->platform == PLATFORM_POWERMAC)
+	if (_machine == PLATFORM_POWERMAC)
 		return -ENODEV;
 
 	/* fix up new node's linux_phandle field */
Index: linux-work/include/asm-powerpc/firmware.h
===================================================================
--- linux-work.orig/include/asm-powerpc/firmware.h	2005-11-01 14:13:56.000000000 +1100
+++ linux-work/include/asm-powerpc/firmware.h	2005-11-09 13:26:19.000000000 +1100
@@ -43,6 +43,7 @@
 #define FW_FEATURE_ISERIES	(1UL<<21)
 
 enum {
+#ifdef CONFIG_PPC64
 	FW_FEATURE_PSERIES_POSSIBLE = FW_FEATURE_PFT | FW_FEATURE_TCE |
 		FW_FEATURE_SPRG0 | FW_FEATURE_DABR | FW_FEATURE_COPY |
 		FW_FEATURE_ASR | FW_FEATURE_DEBUG | FW_FEATURE_TERM |
@@ -70,6 +71,11 @@
 		FW_FEATURE_ISERIES_ALWAYS &
 #endif
 		FW_FEATURE_POSSIBLE,
+
+#else /* CONFIG_PPC64 */
+	FW_FEATURE_POSSIBLE = 0,
+	FW_FEATURE_ALWAYS = 0,
+#endif
 };
 
 /* This is used to identify firmware features which are available
Index: linux-work/include/asm-powerpc/processor.h
===================================================================
--- linux-work.orig/include/asm-powerpc/processor.h	2005-11-07 10:31:41.000000000 +1100
+++ linux-work/include/asm-powerpc/processor.h	2005-11-09 14:02:41.000000000 +1100
@@ -17,65 +17,71 @@
 #include <linux/compiler.h>
 #include <asm/ptrace.h>
 #include <asm/types.h>
-#ifdef CONFIG_PPC64
-#include <asm/systemcfg.h>
-#endif
 
-#ifdef CONFIG_PPC32
-/* 32-bit platform types */
-/* We only need to define a new _MACH_xxx for machines which are part of
- * a configuration which supports more than one type of different machine.
- * This is currently limited to CONFIG_PPC_MULTIPLATFORM and CHRP/PReP/PMac.
- * -- Tom
+/* We do _not_ want to define new machine types at all, those must die
+ * in favor of using the device-tree
+ * -- BenH.
  */
-#define _MACH_prep	0x00000001
-#define _MACH_Pmac	0x00000002	/* pmac or pmac clone (non-chrp) */
-#define _MACH_chrp	0x00000004	/* chrp machine */
 
-/* see residual.h for these */
+/* Platforms codes (to be obsoleted) */
+#define PLATFORM_PSERIES      0x0100
+#define PLATFORM_PSERIES_LPAR 0x0101
+#define PLATFORM_ISERIES_LPAR 0x0201
+#define PLATFORM_LPAR         0x0001
+#define PLATFORM_POWERMAC     0x0400
+#define PLATFORM_MAPLE        0x0500
+#define PLATFORM_PREP	      0x0600
+#define PLATFORM_CHRP	      0x0700
+#define PLATFORM_CELL         0x1000
+
+/* Compat platform codes for 32 bits */
+#define _MACH_prep	PLATFORM_PREP
+#define _MACH_Pmac	PLATFORM_POWERMAC
+#define _MACH_chrp	PLATFORM_CHRP
+
+/* PREP sub-platform types see residual.h for these */
 #define _PREP_Motorola	0x01	/* motorola prep */
 #define _PREP_Firm	0x02	/* firmworks prep */
 #define _PREP_IBM	0x00	/* ibm prep */
 #define _PREP_Bull	0x03	/* bull prep */
 
-/* these are arbitrary */
+/* CHRP sub-platform types. These are arbitrary */
 #define _CHRP_Motorola	0x04	/* motorola chrp, the cobra */
 #define _CHRP_IBM	0x05	/* IBM chrp, the longtrail and longtrail 2 */
 #define _CHRP_Pegasos	0x06	/* Genesi/bplan's Pegasos and Pegasos2 */
 
+#define platform_is_pseries()	(_machine == PLATFORM_PSERIES || \
+				 _machine == PLATFORM_PSERIES_LPAR)
+#define platform_is_lpar()	(!!(_machine & PLATFORM_LPAR))
+
 #ifdef CONFIG_PPC_MULTIPLATFORM
 extern int _machine;
 
+#ifdef CONFIG_PPC32
+
 /* what kind of prep workstation we are */
 extern int _prep_type;
 extern int _chrp_type;
 
 /*
  * This is used to identify the board type from a given PReP board
- * vendor. Board revision is also made available.
+ * vendor. Board revision is also made available. This will be moved
+ * elsewhere soon
  */
 extern unsigned char ucSystemType;
 extern unsigned char ucBoardRev;
 extern unsigned char ucBoardRevMaj, ucBoardRevMin;
-#else
+
+#endif /* CONFIG_PPC32 */
+
+#else /* CONFIG_PPC_MULTIPLATFORM */
 #define _machine 0
+#define platform_is_pseries()	(0)
+#define platform_is_lpar()	(0)
 #endif /* CONFIG_PPC_MULTIPLATFORM */
-#endif /* CONFIG_PPC32 */
 
-#ifdef CONFIG_PPC64
-/* Platforms supported by PPC64 */
-#define PLATFORM_PSERIES      0x0100
-#define PLATFORM_PSERIES_LPAR 0x0101
-#define PLATFORM_ISERIES_LPAR 0x0201
-#define PLATFORM_LPAR         0x0001
-#define PLATFORM_POWERMAC     0x0400
-#define PLATFORM_MAPLE        0x0500
-#define PLATFORM_CELL         0x1000
 
-/* Compatibility with drivers coming from PPC32 world */
-#define _machine	(systemcfg->platform)
-#define _MACH_Pmac	PLATFORM_POWERMAC
-#endif
+
 
 /*
  * Default implementation of macro that returns current
Index: linux-work/include/asm-ppc64/systemcfg.h
===================================================================
--- linux-work.orig/include/asm-ppc64/systemcfg.h	2005-09-23 12:44:12.000000000 +1000
+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
@@ -1,64 +0,0 @@
-#ifndef _SYSTEMCFG_H
-#define _SYSTEMCFG_H
-
-/* 
- * Copyright (C) 2002 Peter Bergner <bergner@vnet.ibm.com>, IBM
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-/* Change Activity:
- * 2002/09/30 : bergner  : Created
- * End Change Activity 
- */
-
-/*
- * If the major version changes we are incompatible.
- * Minor version changes are a hint.
- */
-#define SYSTEMCFG_MAJOR 1
-#define SYSTEMCFG_MINOR 1
-
-#ifndef __ASSEMBLY__
-
-#include <linux/unistd.h>
-
-#define SYSCALL_MAP_SIZE      ((__NR_syscalls + 31) / 32)
-
-struct systemcfg {
-	__u8  eye_catcher[16];		/* Eyecatcher: SYSTEMCFG:PPC64	0x00 */
-	struct {			/* Systemcfg version numbers	     */
-		__u32 major;		/* Major number			0x10 */
-		__u32 minor;		/* Minor number			0x14 */
-	} version;
-
-	__u32 platform;			/* Platform flags		0x18 */
-	__u32 processor;		/* Processor type		0x1C */
-	__u64 processorCount;		/* # of physical processors	0x20 */
-	__u64 physicalMemorySize;	/* Size of real memory(B)	0x28 */
-	__u64 tb_orig_stamp;		/* Timebase at boot		0x30 */
-	__u64 tb_ticks_per_sec;		/* Timebase tics / sec		0x38 */
-	__u64 tb_to_xs;			/* Inverse of TB to 2^20	0x40 */
-	__u64 stamp_xsec;		/*				0x48 */
-	__u64 tb_update_count;		/* Timebase atomicity ctr	0x50 */
-	__u32 tz_minuteswest;		/* Minutes west of Greenwich	0x58 */
-	__u32 tz_dsttime;		/* Type of dst correction	0x5C */
-	/* next four are no longer used except to be exported to /proc */
-	__u32 dcache_size;		/* L1 d-cache size		0x60 */
-	__u32 dcache_line_size;		/* L1 d-cache line size		0x64 */
-	__u32 icache_size;		/* L1 i-cache size		0x68 */
-	__u32 icache_line_size;		/* L1 i-cache line size		0x6C */
-   	__u32 syscall_map_64[SYSCALL_MAP_SIZE]; /* map of available syscalls 0x70 */
-   	__u32 syscall_map_32[SYSCALL_MAP_SIZE]; /* map of available syscalls */
-};
-
-#ifdef __KERNEL__
-extern struct systemcfg *systemcfg;
-#endif
-
-#endif /* __ASSEMBLY__ */
-
-#endif /* _SYSTEMCFG_H */
Index: linux-work/arch/powerpc/kernel/prom_init.c
===================================================================
--- linux-work.orig/arch/powerpc/kernel/prom_init.c	2005-11-09 11:49:03.000000000 +1100
+++ linux-work/arch/powerpc/kernel/prom_init.c	2005-11-09 12:00:55.000000000 +1100
@@ -111,11 +111,6 @@
 #define prom_debug(x...)
 #endif
 
-#ifdef CONFIG_PPC32
-#define PLATFORM_POWERMAC	_MACH_Pmac
-#define PLATFORM_CHRP		_MACH_chrp
-#endif
-
 
 typedef u32 prom_arg_t;
 
@@ -1996,7 +1991,8 @@
 	/*
 	 * On pSeries, inform the firmware about our capabilities
 	 */
-	if (RELOC(of_platform) & PLATFORM_PSERIES)
+	if (RELOC(of_platform) == PLATFORM_PSERIES ||
+	    RELOC(of_platform) == PLATFORM_PSERIES_LPAR)
 		prom_send_capabilities();
 #endif
 
Index: linux-work/arch/powerpc/kernel/rtas-proc.c
===================================================================
--- linux-work.orig/arch/powerpc/kernel/rtas-proc.c	2005-11-07 10:31:39.000000000 +1100
+++ linux-work/arch/powerpc/kernel/rtas-proc.c	2005-11-09 13:56:02.000000000 +1100
@@ -259,7 +259,7 @@
 {
 	struct proc_dir_entry *entry;
 
-	if (!(systemcfg->platform & PLATFORM_PSERIES))
+	if (_machine != PLATFORM_PSERIES && _machine != PLATFORM_PSERIES_LPAR)
 		return 1;
 
 	rtas_node = of_find_node_by_name(NULL, "rtas");
Index: linux-work/arch/powerpc/kernel/traps.c
===================================================================
--- linux-work.orig/arch/powerpc/kernel/traps.c	2005-11-09 11:49:03.000000000 +1100
+++ linux-work/arch/powerpc/kernel/traps.c	2005-11-09 12:00:55.000000000 +1100
@@ -129,7 +129,7 @@
 	nl = 1;
 #endif
 #ifdef CONFIG_PPC64
-	switch (systemcfg->platform) {
+	switch (_machine) {
 	case PLATFORM_PSERIES:
 		printk("PSERIES ");
 		nl = 1;
Index: linux-work/arch/powerpc/mm/hash_utils_64.c
===================================================================
--- linux-work.orig/arch/powerpc/mm/hash_utils_64.c	2005-11-09 11:49:03.000000000 +1100
+++ linux-work/arch/powerpc/mm/hash_utils_64.c	2005-11-09 12:00:55.000000000 +1100
@@ -165,7 +165,7 @@
 		 * normal insert callback here.
 		 */
 #ifdef CONFIG_PPC_ISERIES
-		if (systemcfg->platform == PLATFORM_ISERIES_LPAR)
+		if (_machine == PLATFORM_ISERIES_LPAR)
 			ret = iSeries_hpte_insert(hpteg, va,
 						  virt_to_abs(paddr),
 						  tmp_mode,
@@ -174,7 +174,7 @@
 		else
 #endif
 #ifdef CONFIG_PPC_PSERIES
-		if (systemcfg->platform & PLATFORM_LPAR)
+		if (_machine & PLATFORM_LPAR)
 			ret = pSeries_lpar_hpte_insert(hpteg, va,
 						       virt_to_abs(paddr),
 						       tmp_mode,
@@ -293,7 +293,7 @@
 	 * Not in the device-tree, let's fallback on known size
 	 * list for 16M capable GP & GR
 	 */
-	if ((systemcfg->platform != PLATFORM_ISERIES_LPAR) &&
+	if ((_machine != PLATFORM_ISERIES_LPAR) &&
 	    cpu_has_feature(CPU_FTR_16M_PAGE))
 		memcpy(mmu_psize_defs, mmu_psize_defaults_gp,
 		       sizeof(mmu_psize_defaults_gp));
@@ -364,7 +364,7 @@
 
 static unsigned long __init htab_get_table_size(void)
 {
-	unsigned long rnd_mem_size, pteg_count;
+	unsigned long mem_size, rnd_mem_size, pteg_count;
 
 	/* If hash size isn't already provided by the platform, we try to
 	 * retreive it from the device-tree. If it's not there neither, we
@@ -376,8 +376,9 @@
 		return 1UL << ppc64_pft_size;
 
 	/* round mem_size up to next power of 2 */
-	rnd_mem_size = 1UL << __ilog2(systemcfg->physicalMemorySize);
-	if (rnd_mem_size < systemcfg->physicalMemorySize)
+	mem_size = lmb_phys_mem_size();
+	rnd_mem_size = 1UL << __ilog2(mem_size);
+	if (rnd_mem_size < mem_size)
 		rnd_mem_size <<= 1;
 
 	/* # pages / 2 */
@@ -410,7 +411,7 @@
 
 	htab_hash_mask = pteg_count - 1;
 
-	if (systemcfg->platform & PLATFORM_LPAR) {
+	if (_machine & PLATFORM_LPAR) {
 		/* Using a hypervisor which owns the htab */
 		htab_address = NULL;
 		_SDR1 = 0; 
Index: linux-work/arch/powerpc/oprofile/op_model_power4.c
===================================================================
--- linux-work.orig/arch/powerpc/oprofile/op_model_power4.c	2005-11-09 11:49:03.000000000 +1100
+++ linux-work/arch/powerpc/oprofile/op_model_power4.c	2005-11-09 12:00:55.000000000 +1100
@@ -233,8 +233,7 @@
 	mmcra = mfspr(SPRN_MMCRA);
 
 	/* Were we in the hypervisor? */
-	if ((systemcfg->platform == PLATFORM_PSERIES_LPAR) &&
-	    (mmcra & MMCRA_SIHV))
+	if (platform_is_lpar() && (mmcra & MMCRA_SIHV))
 		/* function descriptor madness */
 		return *((unsigned long *)hypervisor_bucket);
 
Index: linux-work/arch/powerpc/platforms/pseries/iommu.c
===================================================================
--- linux-work.orig/arch/powerpc/platforms/pseries/iommu.c	2005-11-09 11:49:03.000000000 +1100
+++ linux-work/arch/powerpc/platforms/pseries/iommu.c	2005-11-09 12:00:55.000000000 +1100
@@ -42,7 +42,6 @@
 #include <asm/machdep.h>
 #include <asm/abs_addr.h>
 #include <asm/pSeries_reconfig.h>
-#include <asm/systemcfg.h>
 #include <asm/firmware.h>
 #include <asm/tce.h>
 #include <asm/ppc-pci.h>
@@ -582,7 +581,7 @@
 		return;
 	}
 
-	if (systemcfg->platform & PLATFORM_LPAR) {
+	if (platform_is_lpar()) {
 		if (firmware_has_feature(FW_FEATURE_MULTITCE)) {
 			ppc_md.tce_build = tce_buildmulti_pSeriesLP;
 			ppc_md.tce_free	 = tce_freemulti_pSeriesLP;
Index: linux-work/arch/powerpc/platforms/pseries/pci.c
===================================================================
--- linux-work.orig/arch/powerpc/platforms/pseries/pci.c	2005-11-01 14:13:53.000000000 +1100
+++ linux-work/arch/powerpc/platforms/pseries/pci.c	2005-11-09 12:00:55.000000000 +1100
@@ -123,7 +123,7 @@
 	int i;
 	unsigned int reg;
 
-	if (!(systemcfg->platform & PLATFORM_PSERIES))
+	if (!platform_is_pseries())
 		return;
 
 	printk("Using INTC for W82c105 IDE controller.\n");
Index: linux-work/arch/powerpc/platforms/pseries/reconfig.c
===================================================================
--- linux-work.orig/arch/powerpc/platforms/pseries/reconfig.c	2005-11-08 11:00:17.000000000 +1100
+++ linux-work/arch/powerpc/platforms/pseries/reconfig.c	2005-11-09 12:00:55.000000000 +1100
@@ -408,7 +408,7 @@
 {
 	struct proc_dir_entry *ent;
 
-	if (!(systemcfg->platform & PLATFORM_PSERIES))
+	if (!platform_is_pseries())
 		return 0;
 
 	ent = create_proc_entry("ppc64/ofdt", S_IWUSR, NULL);
Index: linux-work/arch/powerpc/platforms/pseries/rtasd.c
===================================================================
--- linux-work.orig/arch/powerpc/platforms/pseries/rtasd.c	2005-11-07 10:31:39.000000000 +1100
+++ linux-work/arch/powerpc/platforms/pseries/rtasd.c	2005-11-09 12:00:55.000000000 +1100
@@ -482,10 +482,12 @@
 {
 	struct proc_dir_entry *entry;
 
-	/* No RTAS, only warn if we are on a pSeries box  */
+	if (!platform_is_pseries())
+		return 0;
+
+	/* No RTAS */
 	if (rtas_token("event-scan") == RTAS_UNKNOWN_SERVICE) {
-		if (systemcfg->platform & PLATFORM_PSERIES)
-			printk(KERN_INFO "rtasd: no event-scan on system\n");
+		printk(KERN_INFO "rtasd: no event-scan on system\n");
 		return 1;
 	}
 
Index: linux-work/arch/powerpc/platforms/pseries/setup.c
===================================================================
--- linux-work.orig/arch/powerpc/platforms/pseries/setup.c	2005-11-09 11:49:03.000000000 +1100
+++ linux-work/arch/powerpc/platforms/pseries/setup.c	2005-11-09 12:00:55.000000000 +1100
@@ -249,7 +249,7 @@
 		ppc_md.idle_loop = default_idle;
 	}
 
-	if (systemcfg->platform & PLATFORM_LPAR)
+	if (platform_is_lpar())
 		ppc_md.enable_pmcs = pseries_lpar_enable_pmcs;
 	else
 		ppc_md.enable_pmcs = power4_enable_pmcs;
@@ -378,7 +378,7 @@
 
 	fw_feature_init();
 	
-	if (systemcfg->platform & PLATFORM_LPAR)
+	if (platform_is_lpar())
 		hpte_init_lpar();
 	else {
 		hpte_init_native();
@@ -388,7 +388,7 @@
 
 	generic_find_legacy_serial_ports(&physport, &default_speed);
 
-	if (systemcfg->platform & PLATFORM_LPAR)
+	if (platform_is_lpar())
 		find_udbg_vterm();
 	else if (physport) {
 		/* Map the uart for udbg. */
@@ -592,7 +592,7 @@
 
 static int pSeries_pci_probe_mode(struct pci_bus *bus)
 {
-	if (systemcfg->platform & PLATFORM_LPAR)
+	if (platform_is_lpar())
 		return PCI_PROBE_DEVTREE;
 	return PCI_PROBE_NORMAL;
 }
Index: linux-work/arch/powerpc/platforms/pseries/smp.c
===================================================================
--- linux-work.orig/arch/powerpc/platforms/pseries/smp.c	2005-11-07 10:31:39.000000000 +1100
+++ linux-work/arch/powerpc/platforms/pseries/smp.c	2005-11-09 12:00:55.000000000 +1100
@@ -46,6 +46,7 @@
 #include <asm/rtas.h>
 #include <asm/pSeries_reconfig.h>
 #include <asm/mpic.h>
+#include <asm/systemcfg.h>
 
 #include "plpar_wrappers.h"
 
@@ -96,7 +97,7 @@
 	int cpu = smp_processor_id();
 
 	cpu_clear(cpu, cpu_online_map);
-	systemcfg->processorCount--;
+	_systemcfg->processorCount--;
 
 	/*fix boot_cpuid here*/
 	if (cpu == boot_cpuid)
@@ -441,7 +442,7 @@
 	smp_ops->cpu_die = pSeries_cpu_die;
 
 	/* Processors can be added/removed only on LPAR */
-	if (systemcfg->platform == PLATFORM_PSERIES_LPAR)
+	if (platform_is_lpar())
 		pSeries_reconfig_notifier_register(&pSeries_smp_nb);
 #endif
 
Index: linux-work/arch/powerpc/platforms/pseries/xics.c
===================================================================
--- linux-work.orig/arch/powerpc/platforms/pseries/xics.c	2005-11-01 14:13:53.000000000 +1100
+++ linux-work/arch/powerpc/platforms/pseries/xics.c	2005-11-09 12:00:55.000000000 +1100
@@ -545,7 +545,9 @@
 		of_node_put(np);
 	}
 
-	if (systemcfg->platform == PLATFORM_PSERIES) {
+	if (platform_is_lpar())
+		ops = &pSeriesLP_ops;
+	else {
 #ifdef CONFIG_SMP
 		for_each_cpu(i) {
 			int hard_id;
@@ -561,8 +563,6 @@
 #else
 		xics_per_cpu[0] = ioremap(intr_base, intr_size);
 #endif /* CONFIG_SMP */
-	} else if (systemcfg->platform == PLATFORM_PSERIES_LPAR) {
-		ops = &pSeriesLP_ops;
 	}
 
 	xics_8259_pic.enable = i8259_pic.enable;
Index: linux-work/arch/ppc64/kernel/pacaData.c
===================================================================
--- linux-work.orig/arch/ppc64/kernel/pacaData.c	2005-11-08 11:00:17.000000000 +1100
+++ linux-work/arch/ppc64/kernel/pacaData.c	2005-11-09 13:24:34.000000000 +1100
@@ -15,7 +15,7 @@
 #include <asm/processor.h>
 #include <asm/ptrace.h>
 #include <asm/page.h>
-
+#include <asm/systemcfg.h>
 #include <asm/lppaca.h>
 #include <asm/iseries/it_lp_queue.h>
 #include <asm/paca.h>
@@ -24,8 +24,7 @@
 	struct systemcfg	data;
 	u8			page[PAGE_SIZE];
 } systemcfg_store __attribute__((__section__(".data.page.aligned")));
-struct systemcfg *systemcfg = &systemcfg_store.data;
-EXPORT_SYMBOL(systemcfg);
+struct systemcfg *_systemcfg = &systemcfg_store.data;
 
 
 /* This symbol is provided by the linker - let it fill in the paca
Index: linux-work/arch/ppc64/kernel/proc_ppc64.c
===================================================================
--- linux-work.orig/arch/ppc64/kernel/proc_ppc64.c	2005-11-07 10:31:39.000000000 +1100
+++ linux-work/arch/ppc64/kernel/proc_ppc64.c	2005-11-09 12:00:55.000000000 +1100
@@ -53,7 +53,7 @@
 	if (!root)
 		return 1;
 
-	if (!(systemcfg->platform & (PLATFORM_PSERIES | PLATFORM_CELL)))
+	if (!(platform_is_pseries() || _machine == PLATFORM_CELL))
 		return 0;
 
 	if (!proc_mkdir("rtas", root))
@@ -74,7 +74,7 @@
 	if (!pde)
 		return 1;
 	pde->nlink = 1;
-	pde->data = systemcfg;
+	pde->data = _systemcfg;
 	pde->size = PAGE_SIZE;
 	pde->proc_fops = &page_map_fops;
 
Index: linux-work/arch/ppc64/kernel/prom_init.c
===================================================================
--- linux-work.orig/arch/ppc64/kernel/prom_init.c	2005-11-09 11:49:03.000000000 +1100
+++ linux-work/arch/ppc64/kernel/prom_init.c	2005-11-09 12:00:55.000000000 +1100
@@ -1934,7 +1934,8 @@
 	/*
 	 * On pSeries, inform the firmware about our capabilities
 	 */
-	if (RELOC(of_platform) & PLATFORM_PSERIES)
+	if (RELOC(of_platform) == PLATFORM_PSERIES ||
+	    RELOC(of_platform) == PLATFORM_PSERIES_LPAR)
 		prom_send_capabilities();
 
 	/*
Index: linux-work/arch/ppc64/kernel/vdso.c
===================================================================
--- linux-work.orig/arch/ppc64/kernel/vdso.c	2005-11-01 14:13:53.000000000 +1100
+++ linux-work/arch/ppc64/kernel/vdso.c	2005-11-09 12:00:55.000000000 +1100
@@ -34,6 +34,7 @@
 #include <asm/machdep.h>
 #include <asm/cputable.h>
 #include <asm/sections.h>
+#include <asm/systemcfg.h>
 #include <asm/vdso.h>
 
 #undef DEBUG
@@ -179,7 +180,7 @@
 	 * Last page is systemcfg.
 	 */
 	if ((vma->vm_end - address) <= PAGE_SIZE)
-		pg = virt_to_page(systemcfg);
+		pg = virt_to_page(_systemcfg);
 	else
 		pg = virt_to_page(vbase + offset);
 
@@ -604,7 +605,7 @@
 		get_page(pg);
 	}
 
-	get_page(virt_to_page(systemcfg));
+	get_page(virt_to_page(_systemcfg));
 }
 
 int in_gate_area_no_task(unsigned long addr)
Index: linux-work/arch/powerpc/kernel/ppc_ksyms.c
===================================================================
--- linux-work.orig/arch/powerpc/kernel/ppc_ksyms.c	2005-11-07 10:31:39.000000000 +1100
+++ linux-work/arch/powerpc/kernel/ppc_ksyms.c	2005-11-09 13:26:09.000000000 +1100
@@ -188,9 +188,6 @@
 EXPORT_SYMBOL(cuda_request);
 EXPORT_SYMBOL(cuda_poll);
 #endif /* CONFIG_ADB_CUDA */
-#if defined(CONFIG_PPC_MULTIPLATFORM) && defined(CONFIG_PPC32)
-EXPORT_SYMBOL(_machine);
-#endif
 #ifdef CONFIG_PPC_PMAC
 EXPORT_SYMBOL(sys_ctrler);
 #endif
Index: linux-work/arch/powerpc/kernel/setup_32.c
===================================================================
--- linux-work.orig/arch/powerpc/kernel/setup_32.c	2005-11-09 11:49:03.000000000 +1100
+++ linux-work/arch/powerpc/kernel/setup_32.c	2005-11-09 13:25:32.000000000 +1100
@@ -71,6 +71,7 @@
 
 #ifdef CONFIG_PPC_MULTIPLATFORM
 int _machine = 0;
+EXPORT_SYMBOL(_machine);
 
 extern void prep_init(void);
 extern void pmac_init(void);
Index: linux-work/arch/ppc/kernel/ppc_ksyms.c
===================================================================
--- linux-work.orig/arch/ppc/kernel/ppc_ksyms.c	2005-11-07 10:31:39.000000000 +1100
+++ linux-work/arch/ppc/kernel/ppc_ksyms.c	2005-11-09 13:25:57.000000000 +1100
@@ -217,9 +217,6 @@
 EXPORT_SYMBOL(cuda_request);
 EXPORT_SYMBOL(cuda_poll);
 #endif /* CONFIG_ADB_CUDA */
-#ifdef CONFIG_PPC_MULTIPLATFORM
-EXPORT_SYMBOL(_machine);
-#endif
 #ifdef CONFIG_PPC_PMAC
 EXPORT_SYMBOL(sys_ctrler);
 EXPORT_SYMBOL(pmac_newworld);
Index: linux-work/arch/ppc/kernel/setup.c
===================================================================
--- linux-work.orig/arch/ppc/kernel/setup.c	2005-11-01 14:13:53.000000000 +1100
+++ linux-work/arch/ppc/kernel/setup.c	2005-11-09 13:25:15.000000000 +1100
@@ -76,6 +76,7 @@
 
 #ifdef CONFIG_PPC_MULTIPLATFORM
 int _machine = 0;
+EXPORT_SYMBOL(_machine);
 
 extern void prep_init(unsigned long r3, unsigned long r4,
 		unsigned long r5, unsigned long r6, unsigned long r7);
Index: linux-work/arch/ppc64/kernel/pci.c
===================================================================
--- linux-work.orig/arch/ppc64/kernel/pci.c	2005-11-09 11:49:03.000000000 +1100
+++ linux-work/arch/ppc64/kernel/pci.c	2005-11-09 13:04:41.000000000 +1100
@@ -1277,12 +1277,9 @@
 	 * G5 machines... So when something asks for bus 0 io base
 	 * (bus 0 is HT root), we return the AGP one instead.
 	 */
-#ifdef CONFIG_PPC_PMAC
-	if (systemcfg->platform == PLATFORM_POWERMAC &&
-	    machine_is_compatible("MacRISC4"))
+	if (machine_is_compatible("MacRISC4"))
 		if (in_bus == 0)
 			in_bus = 0xf0;
-#endif /* CONFIG_PPC_PMAC */
 
 	/* That syscall isn't quite compatible with PCI domains, but it's
 	 * used on pre-domains setup. We return the first match
Index: linux-work/include/asm-powerpc/systemcfg.h
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ linux-work/include/asm-powerpc/systemcfg.h	2005-11-09 14:03:02.000000000 +1100
@@ -0,0 +1,64 @@
+#ifndef _SYSTEMCFG_H
+#define _SYSTEMCFG_H
+
+/*
+ * Copyright (C) 2002 Peter Bergner <bergner@vnet.ibm.com>, IBM
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+/* Change Activity:
+ * 2002/09/30 : bergner  : Created
+ * End Change Activity
+ */
+
+/*
+ * If the major version changes we are incompatible.
+ * Minor version changes are a hint.
+ */
+#define SYSTEMCFG_MAJOR 1
+#define SYSTEMCFG_MINOR 1
+
+#ifndef __ASSEMBLY__
+
+#include <linux/unistd.h>
+
+#define SYSCALL_MAP_SIZE      ((__NR_syscalls + 31) / 32)
+
+struct systemcfg {
+	__u8  eye_catcher[16];		/* Eyecatcher: SYSTEMCFG:PPC64	0x00 */
+	struct {			/* Systemcfg version numbers	     */
+		__u32 major;		/* Major number			0x10 */
+		__u32 minor;		/* Minor number			0x14 */
+	} version;
+
+	__u32 platform;			/* Platform flags		0x18 */
+	__u32 processor;		/* Processor type		0x1C */
+	__u64 processorCount;		/* # of physical processors	0x20 */
+	__u64 physicalMemorySize;	/* Size of real memory(B)	0x28 */
+	__u64 tb_orig_stamp;		/* Timebase at boot		0x30 */
+	__u64 tb_ticks_per_sec;		/* Timebase tics / sec		0x38 */
+	__u64 tb_to_xs;			/* Inverse of TB to 2^20	0x40 */
+	__u64 stamp_xsec;		/*				0x48 */
+	__u64 tb_update_count;		/* Timebase atomicity ctr	0x50 */
+	__u32 tz_minuteswest;		/* Minutes west of Greenwich	0x58 */
+	__u32 tz_dsttime;		/* Type of dst correction	0x5C */
+	/* next four are no longer used except to be exported to /proc */
+	__u32 dcache_size;		/* L1 d-cache size		0x60 */
+	__u32 dcache_line_size;		/* L1 d-cache line size		0x64 */
+	__u32 icache_size;		/* L1 i-cache size		0x68 */
+	__u32 icache_line_size;		/* L1 i-cache line size		0x6C */
+   	__u32 syscall_map_64[SYSCALL_MAP_SIZE]; /* map of available syscalls 0x70 */
+   	__u32 syscall_map_32[SYSCALL_MAP_SIZE]; /* map of available syscalls */
+};
+
+#ifdef __KERNEL__
+extern struct systemcfg *_systemcfg; /* to be renamed */
+#endif
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* _SYSTEMCFG_H */

^ permalink raw reply

* FW: U-boot linux kernel
From: srideep.devireddy @ 2005-11-09  4:21 UTC (permalink / raw)
  To: linuxppc-embedded

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






Hi,



  I am right now working on MPC 8272 Ads board  to bring up the u-boot
and the linux kernel on it . As I am success full in bringing up the
u-boot . but I am finding it difficult in getting the linux up . As I
downloaded the vmlinux image from montavista linux site for 8272Ads
board and they  tried to tftp to 100000 at u-boot prompt I am not able
to compress the linus kernel image and go further I end up in getting
the following errors...I tried with two images ... VMLINUX.UBOOT is a
different board image but tried it ... but not able to go further..
later I used the Uimage (got it from vmlinux  using mkimage tool in
linux ) montavista image for mpc8272 ... it ended up giving me the
program check exception ...





=> tftp 100000 VMLINUX.UBOOT

Using FCC1 ETHERNET device

TFTP from server 10.0.0.1; our IP address is 10.0.0.2

Filename 'VMLINUX.UBOOT'.

Load address: 0x100000

Loading:
#################################################################


#################################################################

         #########

done

Bytes transferred = 708491 (acf8b hex)

=> bootm 0x100000

## Booting image at 00100000 ...

   Image Name:   Linux-2.4.27-1.3.1-432

   Image Type:   PowerPC Linux Kernel Image (gzip compressed)

   Data Size:    708427 Bytes = 691.8 kB

   Load Address: 00000000

   Entry Point:  00000000

   Verifying Checksum ... OK

   Uncompressing Kernel Image ... OK









=> tftp 100000 uImage

Using FCC1 ETHERNET device

TFTP from server 10.0.0.1; our IP address is 10.0.0.2

Filename 'uImage'.

Load address: 0x100000

Loading:
#################################################################


#################################################################

         ##########################

done

Bytes transferred = 798431 (c2edf hex)

=> bootm 0x100000

## Booting image at 00100000 ...

   Image Name:

   Image Type:   PowerPC Linux Kernel Image (gzip compressed)

   Data Size:    798367 Bytes = 779.7 kB

   Load Address: 00100000

   Entry Point:  00100000

   Verifying Checksum ... OK

   Uncompressing Kernel Image ... OK

NIP: 00100000 XER: 00000000 LR: 03FD14F0 REGS: 03b84bd8 TRAP: 0700 DAR:
03FD7B38MSR: 00083002 EE: 0 PR: 0 FP: 1 ME: 1 IR/DR: 00




GPR00: 00000002 03B84CC8 C02EA000 007FFEB0 00000000 00000000 007FFF00
007FFF13

GPR08: 17D78400 03B8500C 03FF8B30 F0000088 00000000 FFFBFFFF 03FFE000
00000001

GPR16: FFFFFFFF 00100000 00000000 03FF8F7C 03BC5270 00000002 007FFF00
03FFF3AC

GPR24: 00000000 00000000 00000000 00800000 00000000 03B84F6C 03FFE600
007FFEB0

Call backtrace:

Program Check Exception





Best Regards

Srideep







Confidentiality Notice

The information contained in this electronic message and any attachments to this message are intended
for the exclusive use of the addressee(s) and may contain confidential or privileged information. If
you are not the intended recipient, please notify the sender at Wipro or Mailadmin@wipro.com immediately
and destroy all copies of this message and any attachments.

[-- Attachment #2: Type: text/html, Size: 14392 bytes --]

^ permalink raw reply

* Re: [PATCH] Merge platform codes (ignore it)
From: Benjamin Herrenschmidt @ 2005-11-09  7:14 UTC (permalink / raw)
  To: linuxppc-dev list; +Cc: linuxppc64-dev
In-Reply-To: <1131505673.24637.37.camel@gaston>

Ignore it, it has bugs and I'm making it better ... new patch tomorrow.

Ben.

^ permalink raw reply

* [PATCH] ppc: add support for new powerbooks
From: Olof Johansson @ 2005-11-09  7:22 UTC (permalink / raw)
  To: akpm; +Cc: linuxppc-dev

Hi,

This should be ready to go in now; we'll have to do with basic
enablement for now -- touchpad driver can come later.


Thanks,

Olof

---

Enablement patch for the new PowerBooks (late 2005 edition).

This enables the ATA controller, Gigabit ethernet and basic AGP setup.
Bluetooth works out-of-the box after running hid2hci.

Still remaining is to get the touchpad to work, the simple change of
just adding the new USB ids isn't enough.


Signed-off-by: Olof Johansson <olof@lixom.net>


Index: linux-2.6/arch/ppc/platforms/pmac_feature.c
===================================================================
--- linux-2.6.orig/arch/ppc/platforms/pmac_feature.c	2005-11-08 22:06:20.000000000 -0800
+++ linux-2.6/arch/ppc/platforms/pmac_feature.c	2005-11-08 22:06:48.000000000 -0800
@@ -2317,6 +2317,14 @@ static struct pmac_mb_def pmac_mb_defs[]
 		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,
 		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,
 	},
+	{	"PowerBook5,8",			"PowerBook G4 15\"",
+		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,
+		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,
+	},
+	{	"PowerBook5,9",			"PowerBook G4 17\"",
+		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,
+		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,
+	},
 	{	"PowerBook6,1",			"PowerBook G4 12\"",
 		PMAC_TYPE_UNKNOWN_INTREPID,	intrepid_features,
 		PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE,
Index: linux-2.6/drivers/ide/ppc/pmac.c
===================================================================
--- linux-2.6.orig/drivers/ide/ppc/pmac.c	2005-11-08 22:06:22.000000000 -0800
+++ linux-2.6/drivers/ide/ppc/pmac.c	2005-11-08 22:06:48.000000000 -0800
@@ -1667,11 +1667,16 @@ static struct macio_driver pmac_ide_maci
 };
 
 static struct pci_device_id pmac_ide_pci_match[] = {
-	{ PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_UNI_N_ATA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
-	{ PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_IPID_ATA100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
-	{ PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_K2_ATA100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+	{ PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_UNI_N_ATA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+	{ PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_IPID_ATA100,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+	{ PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_K2_ATA100,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
 	{ PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_SH_ATA,
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+	{ PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_IPID2_ATA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
 };
 
 static struct pci_driver pmac_ide_pci_driver = {
Index: linux-2.6/drivers/net/sungem.c
===================================================================
--- linux-2.6.orig/drivers/net/sungem.c	2005-10-27 17:02:08.000000000 -0700
+++ linux-2.6/drivers/net/sungem.c	2005-11-08 22:06:48.000000000 -0800
@@ -128,6 +128,8 @@ static struct pci_device_id gem_pci_tbl[
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
 	{ PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_SH_SUNGEM,
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
+	{ PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_IPID2_GMAC,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
 	{0, }
 };
 
Index: linux-2.6/include/linux/pci_ids.h
===================================================================
--- linux-2.6.orig/include/linux/pci_ids.h	2005-11-08 22:06:25.000000000 -0800
+++ linux-2.6/include/linux/pci_ids.h	2005-11-08 22:06:48.000000000 -0800
@@ -801,6 +803,10 @@
 #define PCI_DEVICE_ID_APPLE_SH_SUNGEM   0x0051
 #define PCI_DEVICE_ID_APPLE_U3L_AGP	0x0058
 #define PCI_DEVICE_ID_APPLE_U3H_AGP	0x0059
+#define PCI_DEVICE_ID_APPLE_IPID2_AGP	0x0066
+#define PCI_DEVICE_ID_APPLE_IPID2_ATA	0x0069
+#define PCI_DEVICE_ID_APPLE_IPID2_FW	0x006a
+#define PCI_DEVICE_ID_APPLE_IPID2_GMAC	0x006b
 #define PCI_DEVICE_ID_APPLE_TIGON3	0x1645
 
 #define PCI_VENDOR_ID_YAMAHA		0x1073
Index: linux-2.6/drivers/char/agp/uninorth-agp.c
===================================================================
--- linux-2.6.orig/drivers/char/agp/uninorth-agp.c	2005-11-08 22:06:21.000000000 -0800
+++ linux-2.6/drivers/char/agp/uninorth-agp.c	2005-11-08 22:06:48.000000000 -0800
@@ -557,6 +557,10 @@ static struct agp_device_ids uninorth_ag
 		.device_id	= PCI_DEVICE_ID_APPLE_U3H_AGP,
 		.chipset_name	= "U3H",
 	},
+	{
+		.device_id	= PCI_DEVICE_ID_APPLE_IPID2_AGP,
+		.chipset_name	= "UniNorth/Intrepid2",
+	},
 };
 
 static int __devinit agp_uninorth_probe(struct pci_dev *pdev,

^ permalink raw reply

* Using SMC on MPC8272 based board
From: Mike Rapoport @ 2005-11-09  7:28 UTC (permalink / raw)
  To: linuxppc-embedded

I have a custom board based on MPC8272 and I don't succeed to enable SMC 
serial port. I'm running Linux 2.6.12.3 with CPM serial drivers from 
2.6.13.2.
When I configure the kernel to use one or two SCCs, with or without 
serial console everything works fine. But if I configure the kernel to 
support SMC serial port, I see nothing at the SMC port.
I've noticed that SMC1 pins are configured at port D (as in MPC8260), 
but MPC8272 has the SMC1 on the port C. I've changed the pins assignment 
to use the port C pins, but it didn't help.
When I enable support for serial console on SCC/SMC port, the system 
hangs when the SMC is enabled.
When I don't enable support for serial console on SCC/SMC port, the 
system boots OK, but there's nothing on the SMC port.

-- 
Sincerely yours,
Mike Rapoport

^ permalink raw reply

* Re: [PATCH] ppc: add support for new powerbooks
From: Benjamin Herrenschmidt @ 2005-11-09  9:00 UTC (permalink / raw)
  To: Olof Johansson; +Cc: akpm, linuxppc-dev
In-Reply-To: <20051109072228.GA7983@pb15.lixom.net>


> Enablement patch for the new PowerBooks (late 2005 edition).
> 
> This enables the ATA controller, Gigabit ethernet and basic AGP setup.
> Bluetooth works out-of-the box after running hid2hci.
> 
> Still remaining is to get the touchpad to work, the simple change of
> just adding the new USB ids isn't enough.
> 
> 
> Signed-off-by: Olof Johansson <olof@lixom.net>

Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

^ permalink raw reply

* Re: 440EP FPU support missing
From: Stefan Roese @ 2005-11-09  9:47 UTC (permalink / raw)
  To: Matt Porter; +Cc: linuxppc-dev, linuxppc64-dev
In-Reply-To: <20051108153036.F27232@cox.net>

On Tuesday 08 November 2005 23:30, Matt Porter wrote:
> On Tue, Nov 08, 2005 at 06:38:11PM +0100, Stefan Roese wrote:
> > Somehow arch/ppc/kernel/fpu.S has disappeared. :-( I assume, this
> > happened in the ppc/ppc64 -> powerpc merge. Any thoughts, why this file
> > disappeared and how to solve this problem (just restore the original
> > file)?
>
> arch/powerpc/kernel/fpu.S is being used now which doesn't have KernelFP.
> I don't know why the 44x fpu support wasn't using
> kernel_fp_unavailable_exception() before but I must have missed that
> reviewing it.
>
> Try this patch.
>
> -Matt
>
> diff --git a/arch/ppc/kernel/head_booke.h b/arch/ppc/kernel/head_booke.h
> index aeb349b..f3d274c 100644
> --- a/arch/ppc/kernel/head_booke.h
> +++ b/arch/ppc/kernel/head_booke.h
> @@ -358,6 +358,6 @@ label:
>  	NORMAL_EXCEPTION_PROLOG;					      \
>  	bne	load_up_fpu;		/* if from user, just load it up */   \
>  	addi	r3,r1,STACK_FRAME_OVERHEAD;				      \
> -	EXC_XFER_EE_LITE(0x800, KernelFP)
> +	EXC_XFER_EE_LITE(0x800, kernel_fp_unavailable_exception)
>
>  #endif /* __HEAD_BOOKE_H__ */

Thanks Matt. That fixes the problem. Please send this patch upstream.

Best regards,
Stefan

^ permalink raw reply

* Platform specific code
From: Joachim Denil @ 2005-11-09  9:57 UTC (permalink / raw)
  To: Linuxppc-dev

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

Dear group,
 
For an internship i have to embed linux to a custom made board. It's based
on IBM powerpc 405gp with 64 MB Ram and 8 MB flash memory, a couple of
serial ports,.
In the arch/ppc/platform tree I probably have to write code for the custom
board. But what does the code has to do. Can someone give me some pointers
to what the code should do? I can't find documentation about it.
 
Thank you,
 
Joachim Denil
Student Karel de Grote Hogeschool Antwerpen. 

[-- Attachment #2: Type: text/html, Size: 4894 bytes --]

^ permalink raw reply

* u-boot + kernel (help required)
From: srideep.devireddy @ 2005-11-09 10:50 UTC (permalink / raw)
  To: linuxppc-embedded

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




Hi ,

  

we were able to get the u-boot up on MPC8272ADS board . We are just
struck up in bringing up the Linux... we get the following errors ..
actually we made a uImage  from vmlinux and tried to tftp and used bootm
100000 , we eneded up with these errors ...actually after the message
Uncompressing Kernel Image ... OK board gets reset .Any help would be
thankfull.





=> tftp 100000 vmlinux.72

Using FCC1 ETHERNET device

TFTP from server 10.0.0.1; our IP address is 10.0.0.2

Filename 'vmlinux.72'.

Load address: 0x100000

Loading:
#################################################################


#################################################################

         #######################

done

Bytes transferred = 782424 (bf058 hex)

=> bootm 100000

## Booting image at 00100000 ...

   Image Name:   Linux-2.4.22

   Image Type:   PowerPC Linux Kernel Image (gzip compressed)

   Data Size:    782360 Bytes = 764 kB

   Load Address: 00000000

   Entry Point:  00000000

   Verifying Checksum ... OK

   Uncompressing Kernel Image ... OK







U-Boot 1.1.1 (Nov  8 2005 - 16:19:13)




MPC8272 Reset Status: Check Stop, External Soft, External Hard




MPC8272 Clock Configuration

 - Bus-to-Core Mult 3.5x, VCO Div 2, 60x Bus Freq  30-85 , Core Freq
100-300

 - dfbrg 1, corecnf 0x1e, busdf 3, cpmdf 1, plldf 0, pllmf 3

 - vco_out  400000000, scc_clk  100000000, brg_clk   25000000

 - cpu_clk  350000000, cpm_clk  200000000, bus_clk  100000000

 - pci_clk   66666666




CPU:   MPC8272 (HiP7 Rev 14, Mask A.0 1K50M) at 350 MHz

Board: Motorola MPC8272ADS

DRAM:  64 MB

FLASH:  8 MB

In:    serial

Out:   serial

Err:   serial

Net:   FCC1 ETHERNET

Hit any key to stop autoboot:  0

=>





Best Regards



Srideep







-----Original Message-----
From: Sakethan Kotta (WT01 - Broadband Networks)
Sent: Tuesday, November 08, 2005 9:45 AM
To: Srideep DeviReddy (WT01 - Broadband Networks)
Cc: sundar raman (WT01 - Broadband Networks)
Subject: RE: Emailing: u-boot



Hi Srideep,



  Nice to here this. Congrats. What was the problem? Please do reply for
this.



U can use "bootp or tftp". We have used "bootp". It has 2 options, one
is loading address & the other one is source file name. If you are not
giving the source address in the command line, bootp will take the
default address. If you don't supply the file name at the command line,
then bootp will take the file from the "DHCP server".



Before doing the TFTP, you need to get the IP Address for the board. For
that you need to run a DHCP server. Board also takes the TFTP server IP
from DHCP and will do the TFTP to down load the file. Make sure that
some 15MB from the starting of the SDRAM should not be used for the
Bootp, as that space will be used for the kernel booting.



Once the file is transferred, u have to execute the "bootm <Address>".
It will boot the kernel.



Regards,

saketh



-----Original Message-----

From: Srideep DeviReddy (WT01 - Broadband Networks)

Sent: Monday, November 07, 2005 4:29 PM

To: Sakethan Kotta (WT01 - Broadband Networks)

Subject: RE: Emailing: u-boot



Hi Saketh ,



     We got u-boot up on MPC8272ADS board, thanks for your help. Right
now we are trying to get linux kernel and get the os up. As suggestion
from you , before we start this . I have a doubt at what location
(address) do we need to do a TFTP .so that when we do a go.. It starts
executing...



Best Regards

Srideep



-----Original Message-----

From: Sakethan Kotta (WT01 - Broadband Networks)

Sent: Friday, October 28, 2005 10:29 AM

To: Srideep DeviReddy (WT01 - Broadband Networks)

Cc: sundar raman (WT01 - Broadband Networks)

Subject: RE: Emailing: u-boot



Hi,



  I have changed the source code and compiled. So you may need the
latest source or map file to sync the GDB with the executable.



With thanks & regards,

saketh



-----Original Message-----

From: Srideep DeviReddy (WT01 - Broadband Networks)

Sent: Friday, October 28, 2005 10:19 AM

To: Sakethan Kotta (WT01 - Broadband Networks)

Cc: sundar raman (WT01 - Broadband Networks)

Subject: RE: Emailing: u-boot



Hi sakethan,



       I tried programming the U-boot.bin on to the flash at 0xfff00000
keeping the jumper pins to 2&3(BCSR) . After programming I changed them
to 1&2(flash) , and tried connecting to serial but still not able to get
u-boot prompt .



  When I try to used gdb and debug we get an error  like given below



(gdb) target remote 10.145.102.120:2001

Remote debugging using 10.145.102.120:2001

0xfff00100 in _start () at /u-boot-1.1.3/cpu/mpc8260/start.S:1046

warning: Source file is more recent than executable.



1046            blr

(gdb) cont

Continuing.



Program received signal SIGSTOP, Stopped (signal).

0xfff00128 in boot_warm () at /u-boot-1.1.3/cpu/mpc8260/start.S:1046

1046            blr

(gdb) d

(gdb) b relocate_code

Breakpoint 1 at 0xff803558: file /u-boot-1.1.3/cpu/mpc8260/start.S, line
1046.

(gdb) cont

Continuing.



Program received signal SIGSTOP, Stopped (signal).

0xfff00124 in boot_warm () at /u-boot-1.1.3/cpu/mpc8260/start.S:1046

1046            blr





I am getting an error in 1046 line of start.S file .



Regards

Srideep



-----Original Message-----

From: Sakethan Kotta (WT01 - Broadband Networks)

Sent: Thursday, October 27, 2005 2:40 PM

To: Srideep DeviReddy (WT01 - Broadband Networks)

Cc: sundar raman (WT01 - Broadband Networks)

Subject: Emailing: u-boot



 

Hi Srideep & Sunadar,



  I have attached a U-Boot.Bin file. Please program this on the ADS
board at address location 0xFFF00000 & keep the jumper J9 for 2&3 pins.
Please do this and let me know the results. This should work fine.



With thanks & regards,

saketh





Confidentiality Notice

The information contained in this electronic message and any attachments to this message are intended
for the exclusive use of the addressee(s) and may contain confidential or privileged information. If
you are not the intended recipient, please notify the sender at Wipro or Mailadmin@wipro.com immediately
and destroy all copies of this message and any attachments.

[-- Attachment #2: Type: text/html, Size: 32449 bytes --]

^ permalink raw reply

* u-boot + kernel (help required)
From: srideep.devireddy @ 2005-11-09 10:55 UTC (permalink / raw)
  To: linuxppc-embedded

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




Hi ,

  

we were able to get the u-boot up on MPC8272ADS board . We are just
struck up in bringing up the Linux... we get the following errors ..
actually we made a uImage  from vmlinux and tried to tftp and used bootm
100000 , we eneded up with these errors ...actually after the message
Uncompressing Kernel Image ... OK board gets reset .Any help would be
thankfull.





=> tftp 100000 vmlinux.72

Using FCC1 ETHERNET device

TFTP from server 10.0.0.1; our IP address is 10.0.0.2

Filename 'vmlinux.72'.

Load address: 0x100000

Loading:
#################################################################


#################################################################

         #######################

done

Bytes transferred = 782424 (bf058 hex)

=> bootm 100000

## Booting image at 00100000 ...

   Image Name:   Linux-2.4.22

   Image Type:   PowerPC Linux Kernel Image (gzip compressed)

   Data Size:    782360 Bytes = 764 kB

   Load Address: 00000000

   Entry Point:  00000000

   Verifying Checksum ... OK

   Uncompressing Kernel Image ... OK







U-Boot 1.1.1 (Nov  8 2005 - 16:19:13)




MPC8272 Reset Status: Check Stop, External Soft, External Hard




MPC8272 Clock Configuration

 - Bus-to-Core Mult 3.5x, VCO Div 2, 60x Bus Freq  30-85 , Core Freq
100-300

 - dfbrg 1, corecnf 0x1e, busdf 3, cpmdf 1, plldf 0, pllmf 3

 - vco_out  400000000, scc_clk  100000000, brg_clk   25000000

 - cpu_clk  350000000, cpm_clk  200000000, bus_clk  100000000

 - pci_clk   66666666




CPU:   MPC8272 (HiP7 Rev 14, Mask A.0 1K50M) at 350 MHz

Board: Motorola MPC8272ADS

DRAM:  64 MB

FLASH:  8 MB

In:    serial

Out:   serial

Err:   serial

Net:   FCC1 ETHERNET

Hit any key to stop autoboot:  0

=>





Best Regards



Srideep






Confidentiality Notice

The information contained in this electronic message and any attachments to this message are intended
for the exclusive use of the addressee(s) and may contain confidential or privileged information. If
you are not the intended recipient, please notify the sender at Wipro or Mailadmin@wipro.com immediately
and destroy all copies of this message and any attachments.

[-- Attachment #2: Type: text/html, Size: 15645 bytes --]

^ permalink raw reply

* Possible improvements  for CPM UART
From: Joakim Tjernlund @ 2005-11-09 11:07 UTC (permalink / raw)
  To: linuxppc-embedded

Parts of these fixes in 2.4 doesn't seem to be in 2.6.
Maybe these are solved diffrently in 2.6 but I can't tell.
At least cpm_uart_console_write could use this.

http://linux.bkbits.net:8080/linux-2.4/diffs/arch/ppc/8xx_io/uart.c@1.23
?nav=3Dindex.html|src/.|src/arch|src/arch/ppc|src/arch/ppc/8xx_io|hist/ar=
c
h/ppc/8xx_io/uart.c

Another small improvement would to change:
#define RX_NUM_FIFO	4
#define RX_BUF_SIZE	32
#define TX_NUM_FIFO	4
#define TX_BUF_SIZE	32
to
#ifndef RX_NUM_FIFO
 #define RX_NUM_FIFO	4
#endif
#ifndef RX_BUF_SIZE
 #define RX_BUF_SIZE	32
#endif
#ifndef TX_NUM_FIFO
 #define TX_NUM_FIFO	4
#endif
#ifndef TX_BUF_SIZE
 #define TX_BUF_SIZE	32
#endif

This will allow custom changes to these constants

 Jocke

^ permalink raw reply

* State of SPI for 2.4.25 kernel?
From: Ron Kellam @ 2005-11-09  6:55 UTC (permalink / raw)
  To: linuxppc-embedded

Help!  I was hoping to use SPI on an MPC8247 running the EDLK 2.4.25
kernel, but as I look into the code, I'm not hopeful...

Can someone fill me in on the state of SPI in the 2.24.xx kernels.
What about under 2.6.xx?  (although I haven't yet brought 2.6.xx up on
the custom board I've got).

I've currently resorted to bit-banging for I2C, as the MPC8260 algo
driver didn't seem to behave on an 8272 family CPU.  I was intending
on also going bit-banging for the SPI, but spi-algo-bit.c seems to be
in a half complete state and won't even compile.

Any info appreciated.

Thanks,
Ron Kellam.

^ permalink raw reply

* Re: Using SMC on MPC8272 based board
From: Vitaly Bordug @ 2005-11-09 13:12 UTC (permalink / raw)
  To: Mike Rapoport; +Cc: linuxppc-embedded list
In-Reply-To: <4371A513.6040409@compulab.co.il>

Mike Rapoport wrote:
> I have a custom board based on MPC8272 and I don't succeed to enable SMC 
> serial port. I'm running Linux 2.6.12.3 with CPM serial drivers from 
> 2.6.13.2.
> When I configure the kernel to use one or two SCCs, with or without 
> serial console everything works fine. But if I configure the kernel to 
> support SMC serial port, I see nothing at the SMC port.
> I've noticed that SMC1 pins are configured at port D (as in MPC8260), 
> but MPC8272 has the SMC1 on the port C. I've changed the pins assignment 
> to use the port C pins, but it didn't help.
> When I enable support for serial console on SCC/SMC port, the system 
> hangs when the SMC is enabled.
> When I don't enable support for serial console on SCC/SMC port, the 
> system boots OK, but there's nothing on the SMC port.
> 

That is because (at least if you use "pure" 8272) the board does have 
SCC1 and SCC4 for UART0 and UART1 respectively. SMC could not be used as 
serial port on this board.

-- 
Sincerely,
Vitaly

^ permalink raw reply

* Re: u-boot + kernel (help required)
From: Vitaly Bordug @ 2005-11-09 13:21 UTC (permalink / raw)
  To: srideep.devireddy; +Cc: linuxppc-embedded
In-Reply-To: <6AD9F6A5F6E096408F0B703773355A075BB210@CHN-SNR-MBX01.wipro.com>

srideep.devireddy@wipro.com wrote:
>  
> 
> Hi ,
> 
>    
> 
> we were able to get the u-boot up on MPC8272ADS board . We are just 
> struck up in bringing up the Linux... we get the following errors .. 
> actually we made a uImage  from vmlinux and tried to tftp and used bootm 
> 100000 , we eneded up with these errors ...actually after the message 
> Uncompressing Kernel Image ... OK board gets reset .Any help would be 
> thankfull.
> 
I can suggest to try the current 2.6, on which 8272 is supported and 
known to work. A problem with binary you got is possibly because of 
configuration incompatibility of your u-boot and kernel binary.


>  
> 
>  
> 
> *=> tftp 100000 vmlinux.72*
> 
> *Using FCC1 ETHERNET device*
> 
> *TFTP from server 10.0.0.1; our IP address is 10.0.0.2*
> 
> *Filename 'vmlinux.72'.*
> 
> *Load address: 0x100000*
> 
> *Loading: #################################################################*
> 
> *         #################################################################*
> 
> *         #######################*
> 
> *done*
> 
> *Bytes transferred = 782424 (bf058 hex)*
> 
> *=> bootm 100000*
> 
> *## Booting image at 00100000 ...*
> 
> *   Image Name:   Linux-2.4.22*
> 
> *   Image Type:   PowerPC Linux Kernel Image (gzip compressed)*
> 
> *   Data Size:    782360 Bytes = 764 kB*
> 
> *   Load Address: 00000000*
> 
> *   Entry Point:  00000000*
> 
> *   Verifying Checksum ... OK*
> 
> *   Uncompressing Kernel Image ... OK*
> 
> *                                                                                
> *
> 
> *                                                                                
> *
> 
> *U-Boot 1.1.1 (Nov  8 2005 - 16:19:13)*
> 
> *                                                                                
> *
> 
> *MPC8272 Reset Status: Check Stop, External Soft, External Hard*
> 
> *                                                                                
> *
> 
> *MPC8272 Clock Configuration*
> 
> * - Bus-to-Core Mult 3.5x, VCO Div 2, 60x Bus Freq  30-85 , Core Freq 
> 100-300*
> 
> * - dfbrg 1, corecnf 0x1e, busdf 3, cpmdf 1, plldf 0, pllmf 3*
> 
> * - vco_out  400000000, scc_clk  100000000, brg_clk   25000000*
> 
> * - cpu_clk  350000000, cpm_clk  200000000, bus_clk  100000000*
> 
> * - pci_clk   66666666*
> 
> *                                                                                
> *
> 
> *CPU:   MPC8272 (HiP7 Rev 14, Mask A.0 1K50M) at 350 MHz*
> 
> *Board: Motorola MPC8272ADS*
> 
> *DRAM:  64 MB*
> 
> *FLASH:  8 MB*
> 
> *In:    serial*
> 
> *Out:   serial*
> 
> *Err:   serial*
> 
> *Net:   FCC1 ETHERNET*
> 
> *Hit any key to stop autoboot:  0*
> 
> *=>*
> 
>  
> 
>  
> 
> Best Regards
> 
>  
> 
> Srideep
> 
>  
> 
> 
> Confidentiality Notice
> 
> The information contained in this electronic message and any attachments 
> to this message are intended
> for the exclusive use of the addressee(s) and may contain confidential 
> or privileged information. If
> you are not the intended recipient, please notify the sender at Wipro or 
> Mailadmin@wipro.com immediately
> and destroy all copies of this message and any attachments.
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded


-- 
Sincerely,
Vitaly

^ permalink raw reply

* [PATCH] ppc32: fix ppc44x fpu build
From: Matt Porter @ 2005-11-09 13:42 UTC (permalink / raw)
  To: akpm; +Cc: linuxppc-dev

Fixes ppc44x fpu support that broke from a bad arch/powerpc merge.
Instead of adding KernelFP back in (which duplicates code) we use
the same kernel fpu unavailable handler as classic PPC processors.

Signed-off-by: Matt Porter <mporter@kernel.crashing.org>

diff --git a/arch/ppc/kernel/head_booke.h b/arch/ppc/kernel/head_booke.h
index aeb349b..f3d274c 100644
--- a/arch/ppc/kernel/head_booke.h
+++ b/arch/ppc/kernel/head_booke.h
@@ -358,6 +358,6 @@ label:
 	NORMAL_EXCEPTION_PROLOG;					      \
 	bne	load_up_fpu;		/* if from user, just load it up */   \
 	addi	r3,r1,STACK_FRAME_OVERHEAD;				      \
-	EXC_XFER_EE_LITE(0x800, KernelFP)
+	EXC_XFER_EE_LITE(0x800, kernel_fp_unavailable_exception)
 
 #endif /* __HEAD_BOOKE_H__ */

^ permalink raw reply related

* Re: 440EP FPU support missing
From: Josh Boyer @ 2005-11-09 16:50 UTC (permalink / raw)
  To: Matt Porter; +Cc: linuxppc-dev, Stefan Roese, linuxppc64-dev
In-Reply-To: <20051108160200.I27232@cox.net>

On Tue, 2005-11-08 at 16:02 -0700, Matt Porter wrote:
> On Tue, Nov 08, 2005 at 04:32:54PM -0600, Josh Boyer wrote:
> > On Tue, 2005-11-08 at 15:30 -0700, Matt Porter wrote:
> > > On Tue, Nov 08, 2005 at 06:38:11PM +0100, Stefan Roese wrote:
> > > > In the current linux version, Bamboo (440EP) won't compile anymore, because of 
> > > > missing fpu support:
> > > > 
> > > > make uImage
> > > > ...
> > > >   LD      init/built-in.o
> > > >   LD      .tmp_vmlinux1
> > > > arch/ppc/kernel/head_44x.o(.text+0x868): In function `_start':
> > > > : undefined reference to `KernelFP'
> > > > make: *** [.tmp_vmlinux1] Error 1
> > > > 
> > > > Somehow arch/ppc/kernel/fpu.S has disappeared. :-( I assume, this happened in 
> > > > the ppc/ppc64 -> powerpc merge. Any thoughts, why this file disappeared and 
> > > > how to solve this problem (just restore the original file)?
> > > 
> > > arch/powerpc/kernel/fpu.S is being used now which doesn't have KernelFP.
> > > I don't know why the 44x fpu support wasn't using
> > > kernel_fp_unavailable_exception() before but I must have missed that
> > > reviewing it.
> > > 
> > > Try this patch.
> > 
> > Doesn't this render the 440EP's FPU useless?
>  
> Does what render the 440EP's FPU useless? The supplied patch? I
> don't think so, the path should be the same as classic PPC.
> 
> The patch simply replaces the KernelFP routine that used to be in
> arch/ppc/kernel/fpu.S (and was removed inadvertently in the arch/powerpc/
> merge) with a kernel_fp_unavailable_exception() call which does the
> equivalent and is shared by others.
> 
> The exception still loads up the fpu is coming from userspace and
> only goes down this path when getting an FP unavailable exception from
> kernel space.

Yes, you're obviously right.  I blame my idiocy on lack of coffee.
Sorry for the noise.

josh

^ 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