diff mbox

[v6,4/6] watchdog: pnx4008: restart: support "cmd" from userspace

Message ID 1457040025-1108-5-git-send-email-slemieux.tyco@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Sylvain Lemieux March 3, 2016, 9:20 p.m. UTC
From: Sylvain Lemieux <slemieux@tycoint.com>

Added support to verify if a "cmd" is passed from the userspace program rebooting the system;
- if a valid "cmd" is available, handle it;
- If the received "cmd" is not supported, use the default reboot mode.

Signed-off-by: Sylvain Lemieux <slemieux@tycoint.com>
---
Changes from v5 to v6:
- remove typecast.

Changes from v4 to v5:
- no logical change; updated to work with new revision of patch #2.

Changes from v3 to v4:
- none.

Changes from v2 to v3:
- no logical change; updated to work with new revision of patch #2.

Changes from v1 to v2:
- Rename patch title;
  was "arm: lpc32xx: restart: support "cmd" from userspace"
- Add change to "pnx-4008" driver instead of "mach-lpc32xx".

 drivers/watchdog/pnx4008_wdt.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

Comments

Guenter Roeck March 4, 2016, 1:38 p.m. UTC | #1
On 03/03/2016 01:20 PM, Sylvain Lemieux wrote:
> From: Sylvain Lemieux <slemieux@tycoint.com>
>
> Added support to verify if a "cmd" is passed from the userspace program rebooting the system;
> - if a valid "cmd" is available, handle it;
> - If the received "cmd" is not supported, use the default reboot mode.
>
> Signed-off-by: Sylvain Lemieux <slemieux@tycoint.com>
> ---
> Changes from v5 to v6:
> - remove typecast.
>
> Changes from v4 to v5:
> - no logical change; updated to work with new revision of patch #2.
>
> Changes from v3 to v4:
> - none.
>
> Changes from v2 to v3:
> - no logical change; updated to work with new revision of patch #2.
>
> Changes from v1 to v2:
> - Rename patch title;
>    was "arm: lpc32xx: restart: support "cmd" from userspace"
> - Add change to "pnx-4008" driver instead of "mach-lpc32xx".
>
>   drivers/watchdog/pnx4008_wdt.c | 15 +++++++++++++++
>   1 file changed, 15 insertions(+)
>
> diff --git a/drivers/watchdog/pnx4008_wdt.c b/drivers/watchdog/pnx4008_wdt.c
> index 51be66e..4162135 100644
> --- a/drivers/watchdog/pnx4008_wdt.c
> +++ b/drivers/watchdog/pnx4008_wdt.c
> @@ -129,6 +129,21 @@ static int pnx4008_wdt_set_timeout(struct watchdog_device *wdd,
>   static int pnx4008_restart_handler(struct watchdog_device *wdd,
>   				   unsigned long mode, void *cmd)
>   {
> +	const char *boot_cmd = (const char *)cmd;

This typecast is unnecessary.

Guenter

> +
> +	/*
> +	 * Verify if a "cmd" passed from the userspace program rebooting
> +	 * the system; if available, handle it.
> +	 * - For details, see the 'reboot' syscall in kernel/reboot.c
> +	 * - If the received "cmd" is not supported, use the default mode.
> +	 */
> +	if (boot_cmd) {
> +		if (boot_cmd[0] == 'h')
> +			mode = REBOOT_HARD;
> +		else if (boot_cmd[0] == 's')
> +			mode = REBOOT_SOFT;
> +	}
> +
>   	if (mode == REBOOT_SOFT) {
>   		/* Force match output active */
>   		writel(EXT_MATCH0, WDTIM_EMR(wdt_base));
>
Sylvain Lemieux March 4, 2016, 2:52 p.m. UTC | #2
On Fri, 2016-03-04 at 05:38 -0800, Guenter Roeck wrote:
> On 03/03/2016 01:20 PM, Sylvain Lemieux wrote:
> > From: Sylvain Lemieux <slemieux@tycoint.com>
> >
> > Added support to verify if a "cmd" is passed from the userspace program rebooting the system;
> > - if a valid "cmd" is available, handle it;
> > - If the received "cmd" is not supported, use the default reboot mode.
> >
> > Signed-off-by: Sylvain Lemieux <slemieux@tycoint.com>
> > ---
> > Changes from v5 to v6:
> > - remove typecast.
> >
> > Changes from v4 to v5:
> > - no logical change; updated to work with new revision of patch #2.
> >
> > Changes from v3 to v4:
> > - none.
> >
> > Changes from v2 to v3:
> > - no logical change; updated to work with new revision of patch #2.
> >
> > Changes from v1 to v2:
> > - Rename patch title;
> >    was "arm: lpc32xx: restart: support "cmd" from userspace"
> > - Add change to "pnx-4008" driver instead of "mach-lpc32xx".
> >
> >   drivers/watchdog/pnx4008_wdt.c | 15 +++++++++++++++
> >   1 file changed, 15 insertions(+)
> >
> > diff --git a/drivers/watchdog/pnx4008_wdt.c b/drivers/watchdog/pnx4008_wdt.c
> > index 51be66e..4162135 100644
> > --- a/drivers/watchdog/pnx4008_wdt.c
> > +++ b/drivers/watchdog/pnx4008_wdt.c
> > @@ -129,6 +129,21 @@ static int pnx4008_wdt_set_timeout(struct watchdog_device *wdd,
> >   static int pnx4008_restart_handler(struct watchdog_device *wdd,
> >   				   unsigned long mode, void *cmd)
> >   {
> > +	const char *boot_cmd = (const char *)cmd;
> 
> This typecast is unnecessary.
> 
> Guenter

OK; will send a new revision later today.

Sylvain
> 
> > +
> > +	/*
> > +	 * Verify if a "cmd" passed from the userspace program rebooting
> > +	 * the system; if available, handle it.
> > +	 * - For details, see the 'reboot' syscall in kernel/reboot.c
> > +	 * - If the received "cmd" is not supported, use the default mode.
> > +	 */
> > +	if (boot_cmd) {
> > +		if (boot_cmd[0] == 'h')
> > +			mode = REBOOT_HARD;
> > +		else if (boot_cmd[0] == 's')
> > +			mode = REBOOT_SOFT;
> > +	}
> > +
> >   	if (mode == REBOOT_SOFT) {
> >   		/* Force match output active */
> >   		writel(EXT_MATCH0, WDTIM_EMR(wdt_base));
> >
>
diff mbox

Patch

diff --git a/drivers/watchdog/pnx4008_wdt.c b/drivers/watchdog/pnx4008_wdt.c
index 51be66e..4162135 100644
--- a/drivers/watchdog/pnx4008_wdt.c
+++ b/drivers/watchdog/pnx4008_wdt.c
@@ -129,6 +129,21 @@  static int pnx4008_wdt_set_timeout(struct watchdog_device *wdd,
 static int pnx4008_restart_handler(struct watchdog_device *wdd,
 				   unsigned long mode, void *cmd)
 {
+	const char *boot_cmd = (const char *)cmd;
+
+	/*
+	 * Verify if a "cmd" passed from the userspace program rebooting
+	 * the system; if available, handle it.
+	 * - For details, see the 'reboot' syscall in kernel/reboot.c
+	 * - If the received "cmd" is not supported, use the default mode.
+	 */
+	if (boot_cmd) {
+		if (boot_cmd[0] == 'h')
+			mode = REBOOT_HARD;
+		else if (boot_cmd[0] == 's')
+			mode = REBOOT_SOFT;
+	}
+
 	if (mode == REBOOT_SOFT) {
 		/* Force match output active */
 		writel(EXT_MATCH0, WDTIM_EMR(wdt_base));