From: James Hogan <james.hogan@imgtec.com>
To: Andrew Bresticker <abrestic@chromium.org>,
Ralf Baechle <ralf@linux-mips.org>
Cc: <linux-mips@linux-mips.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] MIPS: Provide fallback reboot/poweroff/halt implementations
Date: Tue, 24 Mar 2015 14:22:22 +0000 [thread overview]
Message-ID: <5511731E.5000901@imgtec.com> (raw)
In-Reply-To: <1425513563-9897-1-git-send-email-abrestic@chromium.org>
[-- Attachment #1: Type: text/plain, Size: 2017 bytes --]
Hi Andrew,
On 04/03/15 23:59, Andrew Bresticker wrote:
> If a machine-specific hook is not implemented for restart, poweroff,
> or halt, fall back to halting secondary CPUs, disabling interrupts,
> and spinning. In the case of restart, attempt to restart the system
> via do_kernel_restart() (which will call any registered restart
> handlers) before halting.
>
> Signed-off-by: Andrew Bresticker <abrestic@chromium.org>
> ---
> arch/mips/kernel/reset.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/arch/mips/kernel/reset.c b/arch/mips/kernel/reset.c
> index 07fc524..87b1f08 100644
> --- a/arch/mips/kernel/reset.c
> +++ b/arch/mips/kernel/reset.c
> @@ -29,16 +29,36 @@ void machine_restart(char *command)
> {
> if (_machine_restart)
> _machine_restart(command);
> +
> +#ifdef CONFIG_SMP
> + smp_send_stop();
Maybe local_irq_disable should be before smp_send_stop() to avoid
deadlocks (same below)?
See for example commit 44424c34049f41123a3a8b4853822f47f4ff03a2 ("ARM:
7803/1: Fix deadlock scenario with smp_send_stop()").
> +#endif
> + do_kernel_restart(command);
> + pr_emerg("Reboot failed -- System halted\n");
Perhaps we could have a grace period like ARM does here:
> /* Give a grace period for failure to restart of 1s */
> mdelay(1000);
Otherwise with this patch a reboot on Malta usually shows some/all of
this pr_emerg message prior to actually restarting. (Arguably thats a
failing of Malta's _machine_restart not to have a delay... thoughts?).
Cheers
James
> + local_irq_disable();
> + while (1);
> }
>
> void machine_halt(void)
> {
> if (_machine_halt)
> _machine_halt();
> +
> +#ifdef CONFIG_SMP
> + smp_send_stop();
> +#endif
> + local_irq_disable();
> + while (1);
> }
>
> void machine_power_off(void)
> {
> if (pm_power_off)
> pm_power_off();
> +
> +#ifdef CONFIG_SMP
> + smp_send_stop();
> +#endif
> + local_irq_disable();
> + while (1);
> }
>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: James Hogan <james.hogan@imgtec.com>
To: Andrew Bresticker <abrestic@chromium.org>,
Ralf Baechle <ralf@linux-mips.org>
Cc: linux-mips@linux-mips.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] MIPS: Provide fallback reboot/poweroff/halt implementations
Date: Tue, 24 Mar 2015 14:22:22 +0000 [thread overview]
Message-ID: <5511731E.5000901@imgtec.com> (raw)
Message-ID: <20150324142222.J3peScmUUSGR0Gv3Prb0LCwpMSBezi7lZw-X9G-3lIU@z> (raw)
In-Reply-To: <1425513563-9897-1-git-send-email-abrestic@chromium.org>
[-- Attachment #1: Type: text/plain, Size: 2017 bytes --]
Hi Andrew,
On 04/03/15 23:59, Andrew Bresticker wrote:
> If a machine-specific hook is not implemented for restart, poweroff,
> or halt, fall back to halting secondary CPUs, disabling interrupts,
> and spinning. In the case of restart, attempt to restart the system
> via do_kernel_restart() (which will call any registered restart
> handlers) before halting.
>
> Signed-off-by: Andrew Bresticker <abrestic@chromium.org>
> ---
> arch/mips/kernel/reset.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/arch/mips/kernel/reset.c b/arch/mips/kernel/reset.c
> index 07fc524..87b1f08 100644
> --- a/arch/mips/kernel/reset.c
> +++ b/arch/mips/kernel/reset.c
> @@ -29,16 +29,36 @@ void machine_restart(char *command)
> {
> if (_machine_restart)
> _machine_restart(command);
> +
> +#ifdef CONFIG_SMP
> + smp_send_stop();
Maybe local_irq_disable should be before smp_send_stop() to avoid
deadlocks (same below)?
See for example commit 44424c34049f41123a3a8b4853822f47f4ff03a2 ("ARM:
7803/1: Fix deadlock scenario with smp_send_stop()").
> +#endif
> + do_kernel_restart(command);
> + pr_emerg("Reboot failed -- System halted\n");
Perhaps we could have a grace period like ARM does here:
> /* Give a grace period for failure to restart of 1s */
> mdelay(1000);
Otherwise with this patch a reboot on Malta usually shows some/all of
this pr_emerg message prior to actually restarting. (Arguably thats a
failing of Malta's _machine_restart not to have a delay... thoughts?).
Cheers
James
> + local_irq_disable();
> + while (1);
> }
>
> void machine_halt(void)
> {
> if (_machine_halt)
> _machine_halt();
> +
> +#ifdef CONFIG_SMP
> + smp_send_stop();
> +#endif
> + local_irq_disable();
> + while (1);
> }
>
> void machine_power_off(void)
> {
> if (pm_power_off)
> pm_power_off();
> +
> +#ifdef CONFIG_SMP
> + smp_send_stop();
> +#endif
> + local_irq_disable();
> + while (1);
> }
>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2015-03-24 14:22 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-04 23:59 [PATCH] MIPS: Provide fallback reboot/poweroff/halt implementations Andrew Bresticker
2015-03-06 11:08 ` Maciej W. Rozycki
2015-03-24 14:22 ` James Hogan [this message]
2015-03-24 14:22 ` James Hogan
2015-03-24 16:30 ` Andrew Bresticker
2015-03-25 6:12 ` Andrew Bresticker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5511731E.5000901@imgtec.com \
--to=james.hogan@imgtec.com \
--cc=abrestic@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=ralf@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.