From: Lee Jones <lee.jones@linaro.org>
To: Guenter Roeck <linux@roeck-us.net>
Cc: linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org,
Linus Walleij <linus.walleij@linaro.org>,
Samuel Ortiz <sameo@linux.intel.com>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v3 12/47] mfd: ab8500-sysctrl: Register with kernel power-off handler
Date: Mon, 3 Nov 2014 17:55:46 +0000 [thread overview]
Message-ID: <20141103175546.GP12011@x1> (raw)
In-Reply-To: <1414425354-10359-13-git-send-email-linux@roeck-us.net>
On Mon, 27 Oct 2014, Guenter Roeck wrote:
> Register with kernel power-off handler instead of setting pm_power_off
> directly. Register with low priority to reflect that the original code
> only sets pm_power_off if it was not already set.
>
> sysctrl_dev is set prior to power-off handler registration, and the
> power-off handler is unregistered prior to clearing sysrctrl_dev.
> It is therefore not necessary to check if sysctrl_dev is NULL in the
> power-off handler, and the check was removed. Setting sysctrl_dev to NULL
> in the remove function was also removed as unnecessary. With those changes,
> devm_register_power_off_handler can be used to register the poeroff handler.
> The now empty remove function was retained since the ab8500_restart function,
> which is currently unused, would likely need some cleanup if it was ever used.
>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Lee Jones <lee.jones@linaro.org>
> Cc: Samuel Ortiz <sameo@linux.intel.com>
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
> ---
> v3:
> - Replace poweroff in all newly introduced variables and in text
> with power_off or power-off as appropriate
> - Replace POWEROFF_PRIORITY_xxx with POWER_OFF_PRIORITY_xxx
> v2:
> - Use define to specify poweroff handler priority
> - Use devm_register_power_off_handler
> - Use dev_warn instead of dev_err
> - Since we use devm_register_power_off_handler,
> we need to check if sysctrl_dev in the poweroff handler to avoid
> a race condition on unload, so this check is no longer removed
>
> drivers/mfd/ab8500-sysctrl.c | 23 ++++++++++++++++-------
> 1 file changed, 16 insertions(+), 7 deletions(-)
Acked-by: Lee Jones <lee.jones@linaro.org>
> diff --git a/drivers/mfd/ab8500-sysctrl.c b/drivers/mfd/ab8500-sysctrl.c
> index 8e0dae5..c49ecaf 100644
> --- a/drivers/mfd/ab8500-sysctrl.c
> +++ b/drivers/mfd/ab8500-sysctrl.c
> @@ -6,6 +6,7 @@
>
> #include <linux/err.h>
> #include <linux/module.h>
> +#include <linux/notifier.h>
> #include <linux/platform_device.h>
> #include <linux/pm.h>
> #include <linux/reboot.h>
> @@ -23,7 +24,8 @@
>
> static struct device *sysctrl_dev;
>
> -static void ab8500_power_off(void)
> +static int ab8500_power_off(struct notifier_block *this, unsigned long unused1,
> + void *unused2)
> {
> sigset_t old;
> sigset_t all;
> @@ -36,7 +38,7 @@ static void ab8500_power_off(void)
>
> if (sysctrl_dev == NULL) {
> pr_err("%s: sysctrl not initialized\n", __func__);
> - return;
> + return NOTIFY_DONE;
> }
>
> /*
> @@ -83,8 +85,15 @@ shutdown:
> AB8500_STW4500CTRL1_SWRESET4500N);
> (void)sigprocmask(SIG_SETMASK, &old, NULL);
> }
> +
> + return NOTIFY_DONE;
> }
>
> +static struct notifier_block ab8500_power_off_nb = {
> + .notifier_call = ab8500_power_off,
> + .priority = POWER_OFF_PRIORITY_LOW,
> +};
> +
> /*
> * Use the AB WD to reset the platform. It will perform a hard
> * reset instead of a soft reset. Write the reset reason to
> @@ -185,6 +194,7 @@ static int ab8500_sysctrl_probe(struct platform_device *pdev)
> struct ab8500 *ab8500 = dev_get_drvdata(pdev->dev.parent);
> struct ab8500_platform_data *plat;
> struct ab8500_sysctrl_platform_data *pdata;
> + int err;
>
> plat = dev_get_platdata(pdev->dev.parent);
>
> @@ -193,8 +203,10 @@ static int ab8500_sysctrl_probe(struct platform_device *pdev)
>
> sysctrl_dev = &pdev->dev;
>
> - if (!pm_power_off)
> - pm_power_off = ab8500_power_off;
> + err = devm_register_power_off_handler(sysctrl_dev,
> + &ab8500_power_off_nb);
> + if (err)
> + dev_warn(&pdev->dev, "Failed to register power-off handler\n");
>
> pdata = plat->sysctrl;
> if (pdata) {
> @@ -228,9 +240,6 @@ static int ab8500_sysctrl_remove(struct platform_device *pdev)
> {
> sysctrl_dev = NULL;
>
> - if (pm_power_off == ab8500_power_off)
> - pm_power_off = NULL;
> -
> return 0;
> }
>
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
WARNING: multiple messages have this Message-ID (diff)
From: lee.jones@linaro.org (Lee Jones)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 12/47] mfd: ab8500-sysctrl: Register with kernel power-off handler
Date: Mon, 3 Nov 2014 17:55:46 +0000 [thread overview]
Message-ID: <20141103175546.GP12011@x1> (raw)
In-Reply-To: <1414425354-10359-13-git-send-email-linux@roeck-us.net>
On Mon, 27 Oct 2014, Guenter Roeck wrote:
> Register with kernel power-off handler instead of setting pm_power_off
> directly. Register with low priority to reflect that the original code
> only sets pm_power_off if it was not already set.
>
> sysctrl_dev is set prior to power-off handler registration, and the
> power-off handler is unregistered prior to clearing sysrctrl_dev.
> It is therefore not necessary to check if sysctrl_dev is NULL in the
> power-off handler, and the check was removed. Setting sysctrl_dev to NULL
> in the remove function was also removed as unnecessary. With those changes,
> devm_register_power_off_handler can be used to register the poeroff handler.
> The now empty remove function was retained since the ab8500_restart function,
> which is currently unused, would likely need some cleanup if it was ever used.
>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Lee Jones <lee.jones@linaro.org>
> Cc: Samuel Ortiz <sameo@linux.intel.com>
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
> ---
> v3:
> - Replace poweroff in all newly introduced variables and in text
> with power_off or power-off as appropriate
> - Replace POWEROFF_PRIORITY_xxx with POWER_OFF_PRIORITY_xxx
> v2:
> - Use define to specify poweroff handler priority
> - Use devm_register_power_off_handler
> - Use dev_warn instead of dev_err
> - Since we use devm_register_power_off_handler,
> we need to check if sysctrl_dev in the poweroff handler to avoid
> a race condition on unload, so this check is no longer removed
>
> drivers/mfd/ab8500-sysctrl.c | 23 ++++++++++++++++-------
> 1 file changed, 16 insertions(+), 7 deletions(-)
Acked-by: Lee Jones <lee.jones@linaro.org>
> diff --git a/drivers/mfd/ab8500-sysctrl.c b/drivers/mfd/ab8500-sysctrl.c
> index 8e0dae5..c49ecaf 100644
> --- a/drivers/mfd/ab8500-sysctrl.c
> +++ b/drivers/mfd/ab8500-sysctrl.c
> @@ -6,6 +6,7 @@
>
> #include <linux/err.h>
> #include <linux/module.h>
> +#include <linux/notifier.h>
> #include <linux/platform_device.h>
> #include <linux/pm.h>
> #include <linux/reboot.h>
> @@ -23,7 +24,8 @@
>
> static struct device *sysctrl_dev;
>
> -static void ab8500_power_off(void)
> +static int ab8500_power_off(struct notifier_block *this, unsigned long unused1,
> + void *unused2)
> {
> sigset_t old;
> sigset_t all;
> @@ -36,7 +38,7 @@ static void ab8500_power_off(void)
>
> if (sysctrl_dev == NULL) {
> pr_err("%s: sysctrl not initialized\n", __func__);
> - return;
> + return NOTIFY_DONE;
> }
>
> /*
> @@ -83,8 +85,15 @@ shutdown:
> AB8500_STW4500CTRL1_SWRESET4500N);
> (void)sigprocmask(SIG_SETMASK, &old, NULL);
> }
> +
> + return NOTIFY_DONE;
> }
>
> +static struct notifier_block ab8500_power_off_nb = {
> + .notifier_call = ab8500_power_off,
> + .priority = POWER_OFF_PRIORITY_LOW,
> +};
> +
> /*
> * Use the AB WD to reset the platform. It will perform a hard
> * reset instead of a soft reset. Write the reset reason to
> @@ -185,6 +194,7 @@ static int ab8500_sysctrl_probe(struct platform_device *pdev)
> struct ab8500 *ab8500 = dev_get_drvdata(pdev->dev.parent);
> struct ab8500_platform_data *plat;
> struct ab8500_sysctrl_platform_data *pdata;
> + int err;
>
> plat = dev_get_platdata(pdev->dev.parent);
>
> @@ -193,8 +203,10 @@ static int ab8500_sysctrl_probe(struct platform_device *pdev)
>
> sysctrl_dev = &pdev->dev;
>
> - if (!pm_power_off)
> - pm_power_off = ab8500_power_off;
> + err = devm_register_power_off_handler(sysctrl_dev,
> + &ab8500_power_off_nb);
> + if (err)
> + dev_warn(&pdev->dev, "Failed to register power-off handler\n");
>
> pdata = plat->sysctrl;
> if (pdata) {
> @@ -228,9 +240,6 @@ static int ab8500_sysctrl_remove(struct platform_device *pdev)
> {
> sysctrl_dev = NULL;
>
> - if (pm_power_off == ab8500_power_off)
> - pm_power_off = NULL;
> -
> return 0;
> }
>
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
next prev parent reply other threads:[~2014-11-03 17:55 UTC|newest]
Thread overview: 130+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-27 15:55 [PATCH v3 00/47] kernel: Add support for power-off handler call chain Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 01/47] " Guenter Roeck
2014-10-28 17:49 ` Pavel Machek
2014-10-27 15:55 ` [PATCH v3 02/47] memory: emif: Use API function to determine power-off capability Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 03/47] hibernate: Call have_kernel_power_off instead of checking pm_power_off Guenter Roeck
2014-10-28 17:50 ` Pavel Machek
2014-10-27 15:55 ` [PATCH v3 04/47] m68k: Replace mach_power_off with pm_power_off Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 06/47] gpio-poweroff: Drop reference to pm_power_off from devicetree bindings Guenter Roeck
[not found] ` <1414425354-10359-1-git-send-email-linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2014-10-27 15:55 ` [PATCH v3 05/47] mfd: as3722: " Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 07/47] qnap-poweroff: " Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 46/47] efi: Register power-off handler with kernel power-off handler Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 08/47] kernel: Move pm_power_off to common code Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 09/47] mfd: palmas: Register with kernel power-off handler Guenter Roeck
2014-11-03 17:56 ` Lee Jones
2014-11-03 17:59 ` Felipe Balbi
2014-11-03 17:59 ` Felipe Balbi
2014-11-03 17:59 ` Felipe Balbi
2014-11-03 18:36 ` Guenter Roeck
2014-11-03 18:36 ` Guenter Roeck
2014-11-03 18:43 ` Felipe Balbi
2014-11-03 18:43 ` Felipe Balbi
2014-11-03 18:43 ` Felipe Balbi
2014-11-03 18:58 ` Guenter Roeck
2014-11-03 18:58 ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 10/47] mfd: axp20x: " Guenter Roeck
2014-11-03 17:56 ` Lee Jones
2014-10-27 15:55 ` [PATCH v3 11/47] mfd: retu: " Guenter Roeck
2014-11-03 17:56 ` Lee Jones
2014-10-27 15:55 ` [PATCH v3 12/47] mfd: ab8500-sysctrl: " Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-11-03 17:55 ` Lee Jones [this message]
2014-11-03 17:55 ` Lee Jones
2014-10-27 15:55 ` [PATCH v3 13/47] mfd: max8907: " Guenter Roeck
2014-11-03 17:56 ` Lee Jones
2014-10-27 15:55 ` [PATCH v3 14/47] mfd: tps80031: " Guenter Roeck
2014-11-03 17:55 ` Lee Jones
2014-10-27 15:55 ` [PATCH v3 15/47] mfd: dm355evm_msp: " Guenter Roeck
2014-11-03 17:55 ` Lee Jones
2014-10-27 15:55 ` [PATCH v3 16/47] mfd: tps6586x: " Guenter Roeck
2014-11-03 17:54 ` Lee Jones
2014-11-03 17:57 ` Felipe Balbi
2014-11-03 17:57 ` Felipe Balbi
2014-11-03 17:57 ` Felipe Balbi
2014-10-27 15:55 ` [PATCH v3 17/47] mfd: tps65910: " Guenter Roeck
2014-11-03 17:54 ` Lee Jones
2014-11-03 17:57 ` Felipe Balbi
2014-11-03 17:57 ` Felipe Balbi
2014-11-03 17:57 ` Felipe Balbi
2014-10-27 15:55 ` [PATCH v3 18/47] mfd: twl4030-power: " Guenter Roeck
2014-11-03 17:54 ` Lee Jones
2014-11-03 17:56 ` Felipe Balbi
2014-11-03 17:56 ` Felipe Balbi
2014-10-27 15:55 ` [PATCH v3 19/47] mfd: rk808: Register power-off handler " Guenter Roeck
2014-11-03 17:53 ` Lee Jones
2014-11-03 19:06 ` Guenter Roeck
2014-11-03 22:42 ` Lee Jones
2014-11-03 22:52 ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 20/47] mfd: rn5t618: " Guenter Roeck
2014-11-03 17:54 ` Lee Jones
2014-10-27 15:55 ` [PATCH v3 21/47] ipmi: Register " Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 22/47] power/reset: restart-poweroff: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 23/47] power/reset: gpio-poweroff: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 24/47] power/reset: as3722-poweroff: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 25/47] power/reset: qnap-poweroff: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 26/47] power/reset: msm-poweroff: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 27/47] power/reset: vexpress-poweroff: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 28/47] power/reset: at91-poweroff: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 29/47] power/reset: ltc2952-poweroff: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 30/47] x86: iris: " Guenter Roeck
2014-11-01 19:41 ` Thomas Gleixner
2014-11-01 21:15 ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 31/47] x86: apm: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 32/47] x86: olpc: Register xo1 power-off handler " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 33/47] staging: nvec: Register " Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 34/47] acpi: Register power-off handler " Guenter Roeck
2014-10-28 0:26 ` Rafael J. Wysocki
2014-10-28 2:10 ` Guenter Roeck
2014-10-28 23:10 ` Rafael J. Wysocki
2014-10-29 2:05 ` Guenter Roeck
2014-10-29 15:13 ` Rafael J. Wysocki
2014-10-27 15:55 ` [PATCH v3 35/47] arm: Register " Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 36/47] arm64: psci: " Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 37/47] avr32: atngw100: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 38/47] ia64: " Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 39/47] m68k: " Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 40/47] mips: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 41/47] sh: " Guenter Roeck
2014-10-27 15:55 ` Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 42/47] x86: lguest: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 43/47] x86: ce4100: " Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 44/47] x86: intel-mid: Drop registration of dummy power-off handlers Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 45/47] x86: pmc_atom: Register power-off handler with kernel power-off handler Guenter Roeck
2014-10-27 15:55 ` [PATCH v3 47/47] kernel: Remove pm_power_off Guenter Roeck
2014-10-28 17:50 ` Pavel Machek
2014-10-27 16:03 ` [PATCH v3 00/47] kernel: Add support for power-off handler call chain Felipe Balbi
2014-10-27 16:03 ` Felipe Balbi
2014-10-27 17:16 ` Guenter Roeck
2014-10-27 17:33 ` Felipe Balbi
2014-10-27 17:33 ` Felipe Balbi
2014-10-27 17:43 ` Johan Hovold
2014-11-03 17:59 ` Felipe Balbi
2014-11-03 17:59 ` Felipe Balbi
2014-11-03 17:59 ` Felipe Balbi
2014-11-03 18:22 ` Guenter Roeck
2014-11-03 18:22 ` Guenter Roeck
2014-11-03 18:28 ` Felipe Balbi
2014-11-03 18:28 ` Felipe Balbi
2014-11-03 18:28 ` Felipe Balbi
2014-11-03 18:49 ` Guenter Roeck
2014-11-03 18:49 ` Guenter Roeck
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=20141103175546.GP12011@x1 \
--to=lee.jones@linaro.org \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=sameo@linux.intel.com \
/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.