linux/arch/powerpc/platforms
Peter Tyser d1d47ec6e6 powerpc/85xx: Fix SMP when "cpu-release-addr" is in lowmem
Recent U-Boot commit 5ccd29c3679b3669b0bde5c501c1aa0f325a7acb caused
the "cpu-release-addr" device tree property to contain the physical RAM
location that secondary cores were spinning at.  Previously, the
"cpu-release-addr" property contained a value referencing the boot page
translation address range of 0xfffffxxx, which then indirectly accessed
RAM.

The "cpu-release-addr" is currently ioremapped and the secondary cores
kicked.  However, due to the recent change in "cpu-release-addr", it
sometimes points to a memory location in low memory that cannot be
ioremapped.  For example on a P2020-based board with 512MB of RAM the
following error occurs on bootup:

  <...>
  mpic: requesting IPIs ...
  __ioremap(): phys addr 0x1ffff000 is RAM lr c05df9a0
  Unable to handle kernel paging request for data at address 0x00000014
  Faulting instruction address: 0xc05df9b0
  Oops: Kernel access of bad area, sig: 11 [#1]
  SMP NR_CPUS=2 P2020 RDB
  Modules linked in:
  <... eventual kernel panic>

Adding logic to conditionally ioremap or access memory directly resolves
the issue.

Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
Signed-off-by: Nate Case <ncase@xes-inc.com>
Reported-by: Dipen Dudhat <B09055@freescale.com>
Tested-by: Dipen Dudhat <B09055@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
2010-02-13 14:23:24 -06:00
..
8xx powerpc/8xx: Fix build breakage with sparse irq changes 2009-10-30 17:21:38 +11:00
40x powerpc/40x: Add support for the ESTeem 195E (PPC405EP) SBC 2009-08-31 09:15:51 -04:00
44x powerpc/44x: Add Eiger AMCC (AppliedMicro) PPC460SX evaluation board support. 2009-08-31 08:24:15 -04:00
52xx Merge branch 'for-33' of git://repo.or.cz/linux-kbuild 2009-12-17 07:23:42 -08:00
82xx powerpc: Fixup last users of irq_chip->typename 2009-11-24 14:32:45 +11:00
83xx powerpc/83xx/suspend: Save and restore SICRL, SICRH and SCCR 2009-12-10 19:56:41 -06:00
85xx powerpc/85xx: Fix SMP when "cpu-release-addr" is in lowmem 2010-02-13 14:23:24 -06:00
86xx powerpc: Make "intspec" pointers in irq_host->xlate() const 2009-12-09 17:10:37 +11:00
512x powerpc: Fixup last users of irq_chip->typename 2009-11-24 14:32:45 +11:00
amigaone kbuild: move utsrelease.h to include/generated 2009-12-12 13:08:15 +01:00
cell powerpc: Use helpers for rlimits 2010-01-15 13:20:08 +11:00
chrp Merge branch 'for-33' of git://repo.or.cz/linux-kbuild 2009-12-17 07:23:42 -08:00
embedded6xx powerpc/gc/wii: Remove get_irq_desc() 2009-12-21 11:12:14 +11:00
iseries powerpc/iseries: Initialise on-stack completion 2010-01-15 13:26:14 +11:00
maple edac: cpc925 MC platform device setup 2009-06-18 13:03:57 -07:00
pasemi locking: Convert __raw_spin* functions to arch_spin* 2009-12-14 23:55:32 +01:00
powermac Merge branch 'for-33' of git://repo.or.cz/linux-kbuild 2009-12-17 07:23:42 -08:00
prep powerpc/kconfig: Kill PPC_MULTIPLATFORM 2009-03-11 17:11:35 +11:00
ps3 powerpc: Fixup last users of irq_chip->typename 2009-11-24 14:32:45 +11:00
pseries powerpc/pseries: Fix kexec regression caused by CPPR tracking 2010-02-08 15:29:19 +11:00
fsl_uli1575.c powerpc/85xx: Add P2020DS board support 2009-05-19 00:50:43 -05:00
Kconfig powerpc/85xx: Kconfig cleanup 2009-11-20 16:45:27 -06:00
Kconfig.cputype Merge branch 'next' of git://git.secretlab.ca/git/linux-2.6 2009-12-16 13:26:53 -08:00
Makefile powerpc/85xx: Kconfig cleanup 2009-11-20 16:45:27 -06:00