[RFC 0/5] restart cleanups
Will Deacon
will.deacon at arm.com
Tue Nov 1 15:23:43 EDT 2011
Hi Russell,
On Tue, Nov 01, 2011 at 04:07:31PM +0000, Russell King - ARM Linux wrote:
> This series cleans up some of the restart code for ARM. It doesn't go
> as far as Will's patch set (or even anywhere close to it) mainly because
> of the poor state of the various implementations in various platforms.
Thanks for helping out with this!
> Effectively, the various platforms themselves stand in the way of optimal
> cleanup of this code.
Agreed. I'm hoping that people will complain if we break them by accident.
> Other platforms use arm_pm_restart() to intercept the restart, and
> force the mode to 'g', 'h' or 's'. As the mode already defaults to
> 'h' I don't understand why people felt forcing it in that case was
> necessary. As for the 's' case, this can be done by merely specifying
> ".soft_reboot = 1" in the machine record. We can solve the 'g' case
> by changing .soft_reboot to be a char "restart_mode" argument which
> sets the default restart mode.
Actually, I think we can go as far as deleteing the 'g' mode and using the
GPIO reset as a fallback if we fail in the usual 'h' case. This mode is only
used by mach-pxa, so it would be good to get rid of it.
We can always do this in a later patch series if it gets in the way (I have
a series to clean up the reboot modes already).
> So, this patch set takes us a little way there by cleaning up some of
> the restart code:
>
> 1. remove the useless argument to setup_mm_for_reboot()
I'm definitely in favour of this change, but be aware that I plan to modify
setup_mm_for_reboot in the future to:
(a) Use a static identity mapping so we don't have to pgd_alloc explicitly
[I can't see this affecting anything]
(b) Extend the identity mapping into kernel space, leaving some room for
the kernel image. If this is all called from soft_reboot, which just
does the cpu_reset(addr) afterwards, then we're fine. I have code to
take care of changing stack and switching to the new mapping.
> 5. provide (and use) a function for soft rebooting which includes the
> setup of the MMU tables and call cpu_reset() - and remove the MMU
> setup from the code paths before arch_reset() is called.
This function will probably grow to contain the arm_machine_reset function
body that I have for kexec.
If you're happy with the direction I'd like to take this in, then you can
have my Acked-by tags for patches 1 and 5.
Cheers,
Will
More information about the linux-arm-kernel
mailing list