Thread (29 messages) flat view 29 messages, 5 authors, 2011-08-25
STALE5505d

Revision v4 of 9 in this series.

Revisions (9)
  1. v1 [diff vs current]
  2. v2 [diff vs current]
  3. v3 [diff vs current]
  4. v4 [diff vs current]
  5. v4 [diff vs current]
  6. v4 current
  7. v4 [diff vs current]
  8. v4 [diff vs current]
  9. v4 [diff vs current]

[PATCH v4 0/8] MMU disabling code and kexec fixes

From: Will Deacon <hidden>
Date: 2011-08-24 12:42:01

On Wed, Aug 24, 2011 at 01:34:31PM +0100, Jamie Iles wrote:
Hi Will,
Hello Jamie,
On Tue, Aug 23, 2011 at 10:46:44PM +0100, Will Deacon wrote:
quoted
Currently, SMP kexec relies on platform_cpu_kill (a CPU hotplug callback)
doing the right thing. I'm working on a generic SMP soft reboot implementation
but this isn't quite working yet (and my git repo is predictably offline
at the moment so I can't provide a link to the patches).
I've tried this on picoxcell and reboot with arm_machine_reset() works 
nicely, but I couldn't get kexec to work (though it didn't work without 
your patches...).
Ok, thanks for giving it a go though!
With your patches applied I get the following output on booting the new 
kernel:

[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.1.0-rc3+ (jamiei at pulham) (gcc version 4.5.3 20110223 (prerelease) (GCC) ) #40 PREEMPT Wed Aug 24 13:21:06 BST 2011
[    0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387f
[    0.000000] CPU: VIPT aliasing data cache, unknown instruction cache
[    0.000000] Machine: Picochip picoXcell
[    0.000000] bootconsole [earlycon0] enabled
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] Kernel panic - not syncing: ERROR: Failed to allocate 0x1000 bytes below 0x0.
[    0.000000]
[    0.000000] [<c001368c>] (unwind_backtrace+0x0/0xe0) from [<c02c875c>] (panic+0x68/0x1a0)
[    0.000000] [<c02c875c>] (panic+0x68/0x1a0) from [<c03c5180>] (memblock_alloc_base+0x2c/0x34)
[    0.000000] [<c03c5180>] (memblock_alloc_base+0x2c/0x34) from [<c03be894>] (early_alloc.clone.1+0x10/0x28)
[    0.000000] [<c03be894>] (early_alloc.clone.1+0x10/0x28) from [<c03bf2b4>] (paging_init+0x4c4/0x6d0)
[    0.000000] [<c03bf2b4>] (paging_init+0x4c4/0x6d0) from [<c03bca54>] (setup_arch+0x424/0x780)
[    0.000000] [<c03bca54>] (setup_arch+0x424/0x780) from [<c03bb510>] (start_kernel+0xac/0x2e4)
[    0.000000] [<c03bb510>] (start_kernel+0xac/0x2e4) from [<00008040>] (0x8040)

and the allocation that fails appears to be allocating the vectors page.  
Without your patches I don't get any output though so it's a definite 
improvement!
Wahey, that's not bad. If you're starting to boot the new kernel then lots
of the tricky stuff is out of the way.
Note that this is a device tree enabled platform so there is no 
/proc/atags.  I'm happy to test any related patches on our platform, but 
kexec isn't something we really use.
This is almost certainly the problem as the ARM kexec code doesn't have FDT
support afaict, so the new kernel doesn't think it has any memory. Can you
try hardcoding a command line into the kernel image which specifies the
memory layout?

I think the way forward with the kexec work is for me to get it working
solidly on UP platforms (including Thumb-2 and FDT) and then add SMP support
later on.

Will
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help