v6 software reset fails on 1176

Jamie Iles jamie at jamieiles.com
Tue Aug 23 13:56:38 EDT 2011


On Tue, Aug 23, 2011 at 06:47:36PM +0100, Will Deacon wrote:
> You need to make sure you call cpu_reset by jumping to its *physical*
> address. If that happens to alias with the virtual address of the kernel, it
> won't currently work but I have a solution to this in my kexec branch.
> 
> You can do something like:
> 
> 	typedef void (*phys_reset_t)(unsigned long);
> 
> 	phys_reset = (phys_reset_t)virt_to_phys(cpu_reset);
> 	phys_reset(0xffff0000);

OK, that makes perfect sense!  I'll give it a go on my hardware tomorrow 
when I'm back in the office.

All of the other mainline users of cpu_reset() just call it directly, so 
I guess they need to do the same thing?

Jamie



More information about the linux-arm-kernel mailing list