From: Guenter Roeck <linux@roeck-us.net>
To: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: linux-kernel@vger.kernel.org, rt@linuxtronix.de,
Wim Van Sebroeck <wim@iguana.be>,
linux-watchdog@vger.kernel.org
Subject: Re: [11/20] watchdog/octeon: Convert to hotplug state machine
Date: Thu, 24 Nov 2016 08:10:55 -0800 [thread overview]
Message-ID: <20161124161054.GA20217@roeck-us.net> (raw)
In-Reply-To: <20161117183541.8588-12-bigeasy@linutronix.de>
On Thu, Nov 17, 2016 at 07:35:32PM +0100, Sebastian Andrzej Siewior wrote:
> Install the callbacks via the state machine and let the core invoke
> the callbacks on the already online CPUs.
>
> Cc: Wim Van Sebroeck <wim@iguana.be>
> Cc: Guenter Roeck <linux@roeck-us.net>
> Cc: linux-watchdog@vger.kernel.org
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
I don't really feel comfortable signing this off without Tested-by:.
Can someone please confirm that this is working as intended ?
Thanks,
Guenter
> ---
> drivers/watchdog/octeon-wdt-main.c | 62 +++++++++-----------------------------
> 1 file changed, 15 insertions(+), 47 deletions(-)
>
> diff --git a/drivers/watchdog/octeon-wdt-main.c b/drivers/watchdog/octeon-wdt-main.c
> index b55981f88a08..529182d7d8a7 100644
> --- a/drivers/watchdog/octeon-wdt-main.c
> +++ b/drivers/watchdog/octeon-wdt-main.c
> @@ -374,7 +374,7 @@ void octeon_wdt_nmi_stage3(u64 reg[32])
> octeon_wdt_write_string("*** Chip soft reset soon ***\r\n");
> }
>
> -static void octeon_wdt_disable_interrupt(int cpu)
> +static int octeon_wdt_cpu_pre_down(unsigned int cpu)
> {
> unsigned int core;
> unsigned int irq;
> @@ -392,9 +392,10 @@ static void octeon_wdt_disable_interrupt(int cpu)
> cvmx_write_csr(CVMX_CIU_WDOGX(core), ciu_wdog.u64);
>
> free_irq(irq, octeon_wdt_poke_irq);
> + return 0;
> }
>
> -static void octeon_wdt_setup_interrupt(int cpu)
> +static int octeon_wdt_cpu_online(unsigned int cpu)
> {
> unsigned int core;
> unsigned int irq;
> @@ -424,25 +425,8 @@ static void octeon_wdt_setup_interrupt(int cpu)
> ciu_wdog.s.len = timeout_cnt;
> ciu_wdog.s.mode = 3; /* 3 = Interrupt + NMI + Soft-Reset */
> cvmx_write_csr(CVMX_CIU_WDOGX(core), ciu_wdog.u64);
> -}
>
> -static int octeon_wdt_cpu_callback(struct notifier_block *nfb,
> - unsigned long action, void *hcpu)
> -{
> - unsigned int cpu = (unsigned long)hcpu;
> -
> - switch (action & ~CPU_TASKS_FROZEN) {
> - case CPU_DOWN_PREPARE:
> - octeon_wdt_disable_interrupt(cpu);
> - break;
> - case CPU_ONLINE:
> - case CPU_DOWN_FAILED:
> - octeon_wdt_setup_interrupt(cpu);
> - break;
> - default:
> - break;
> - }
> - return NOTIFY_OK;
> + return 0;
> }
>
> static int octeon_wdt_ping(struct watchdog_device __always_unused *wdog)
> @@ -531,10 +515,6 @@ static int octeon_wdt_stop(struct watchdog_device *wdog)
> return 0;
> }
>
> -static struct notifier_block octeon_wdt_cpu_notifier = {
> - .notifier_call = octeon_wdt_cpu_callback,
> -};
> -
> static const struct watchdog_info octeon_wdt_info = {
> .options = WDIOF_SETTIMEOUT | WDIOF_MAGICCLOSE | WDIOF_KEEPALIVEPING,
> .identity = "OCTEON",
> @@ -553,6 +533,7 @@ static struct watchdog_device octeon_wdt = {
> .ops = &octeon_wdt_ops,
> };
>
> +static enum cpuhp_state octeon_wdt_online;
> /**
> * Module/ driver initialization.
> *
> @@ -562,7 +543,6 @@ static int __init octeon_wdt_init(void)
> {
> int i;
> int ret;
> - int cpu;
> u64 *ptr;
>
> /*
> @@ -610,14 +590,16 @@ static int __init octeon_wdt_init(void)
>
> cpumask_clear(&irq_enabled_cpus);
>
> - cpu_notifier_register_begin();
> - for_each_online_cpu(cpu)
> - octeon_wdt_setup_interrupt(cpu);
> -
> - __register_hotcpu_notifier(&octeon_wdt_cpu_notifier);
> - cpu_notifier_register_done();
> -
> + ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "watchdog/octeon:online",
> + octeon_wdt_cpu_online, octeon_wdt_cpu_pre_down);
> + if (ret < 0)
> + goto err;
> + octeon_wdt_online = ret;
> return 0;
> +err:
> + cvmx_write_csr(CVMX_MIO_BOOT_LOC_CFGX(0), 0);
> + watchdog_unregister_device(&octeon_wdt);
> + return ret;
> }
>
> /**
> @@ -625,22 +607,8 @@ static int __init octeon_wdt_init(void)
> */
> static void __exit octeon_wdt_cleanup(void)
> {
> - int cpu;
> -
> watchdog_unregister_device(&octeon_wdt);
> -
> - cpu_notifier_register_begin();
> - __unregister_hotcpu_notifier(&octeon_wdt_cpu_notifier);
> -
> - for_each_online_cpu(cpu) {
> - int core = cpu2core(cpu);
> - /* Disable the watchdog */
> - cvmx_write_csr(CVMX_CIU_WDOGX(core), 0);
> - /* Free the interrupt handler */
> - free_irq(OCTEON_IRQ_WDOG0 + core, octeon_wdt_poke_irq);
> - }
> -
> - cpu_notifier_register_done();
> + cpuhp_remove_state(octeon_wdt_online);
>
> /*
> * Disable the boot-bus memory, the code it points to is soon
next prev parent reply other threads:[~2016-11-24 16:10 UTC|newest]
Thread overview: 120+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-17 18:35 cpu hotplug: convert more drivers (batch #5) Sebastian Andrzej Siewior
2016-11-17 18:35 ` [PATCH 01/20] x86/mce/therm_throt: Convert to hotplug state machine Sebastian Andrzej Siewior
2016-11-21 15:46 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior
2016-11-22 22:39 ` tip-bot for Sebastian Andrzej Siewior
2016-11-17 18:35 ` [PATCH 02/20] x86/cpuid: " Sebastian Andrzej Siewior
2016-11-21 15:47 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior
2016-11-22 22:40 ` tip-bot for Sebastian Andrzej Siewior
2016-11-17 18:35 ` [PATCH 03/20] x86/msr: " Sebastian Andrzej Siewior
2016-11-21 15:48 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior
2016-11-22 22:41 ` tip-bot for Sebastian Andrzej Siewior
2016-11-17 18:35 ` [PATCH 04/20] hwmon/coretemp: " Sebastian Andrzej Siewior
2016-11-20 22:30 ` [04/20] " Guenter Roeck
2016-11-21 22:35 ` Sebastian Andrzej Siewior
2016-11-21 15:56 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior
2016-11-21 21:32 ` Guenter Roeck
2016-11-21 21:53 ` Thomas Gleixner
2016-11-17 18:35 ` [PATCH 05/20] hwmon/via-cputemp: Remove pointless CPU check on each CPU Sebastian Andrzej Siewior
2016-11-19 17:23 ` [05/20] " Guenter Roeck
2016-11-19 22:53 ` Sebastian Andrzej Siewior
2016-11-20 3:53 ` Guenter Roeck
2016-11-20 20:34 ` Sebastian Andrzej Siewior
2016-11-17 18:35 ` [PATCH 06/20] hwmon/via-cputemp: Convert to hotplug state machine Sebastian Andrzej Siewior
2016-11-18 15:09 ` [PATCH 06/20 v2] " Sebastian Andrzej Siewior
2016-11-23 15:29 ` [PATCH 06/20] " Guenter Roeck
2016-12-09 11:53 ` Thomas Gleixner
2016-12-09 18:17 ` Guenter Roeck
2016-12-09 18:27 ` Thomas Gleixner
2016-11-17 18:35 ` [PATCH 07/20] pci/xgene-msi: " Sebastian Andrzej Siewior
2016-11-17 18:35 ` Sebastian Andrzej Siewior
2016-11-17 18:35 ` Sebastian Andrzej Siewior
2016-11-21 15:48 ` [tip:smp/hotplug] PCI/xgene-msi: " tip-bot for Sebastian Andrzej Siewior
2016-11-22 22:42 ` tip-bot for Sebastian Andrzej Siewior
2016-11-17 18:35 ` [PATCH 08/20] powercap/intel_rapl: Add missing domain data update on hotplug Sebastian Andrzej Siewior
2016-11-21 15:49 ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2016-11-17 18:35 ` [PATCH 09/20] powercap/intel rapl: Convert to hotplug state machine Sebastian Andrzej Siewior
2016-11-21 15:49 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior
2016-11-17 18:35 ` [PATCH 10/20] powercap/intel_rapl: Cleanup duplicated init code Sebastian Andrzej Siewior
2016-11-21 15:50 ` [tip:smp/hotplug] " tip-bot for Thomas Gleixner
2016-11-17 18:35 ` [PATCH 11/20] watchdog/octeon: Convert to hotplug state machine Sebastian Andrzej Siewior
2016-11-21 15:50 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior
2016-11-22 22:43 ` tip-bot for Sebastian Andrzej Siewior
2016-11-24 16:10 ` Guenter Roeck [this message]
2016-11-17 18:35 ` [PATCH 12/20] net/iucv: " Sebastian Andrzej Siewior
2016-11-21 15:51 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior
2016-11-22 22:43 ` tip-bot for Sebastian Andrzej Siewior
2016-11-23 18:04 ` [PATCH 12/20] " Ursula Braun
2016-11-24 9:10 ` Sebastian Andrzej Siewior
2016-11-24 14:14 ` [PATCH 12/20 v2] " Sebastian Andrzej Siewior
2016-11-24 16:10 ` [PATCH] net/iucv: use explicit clean up labels in iucv_init() Sebastian Andrzej Siewior
2016-11-24 19:57 ` [tip:smp/hotplug] net/iucv: Use " tip-bot for Sebastian Andrzej Siewior
2016-11-28 16:24 ` [PATCH] net/iucv: use " David Miller
2016-11-28 16:31 ` Thomas Gleixner
2016-11-28 16:37 ` [tip:smp/hotplug] net/iucv: Use " tip-bot for Sebastian Andrzej Siewior
2016-11-17 18:35 ` [PATCH 13/20] sched/nohz: Convert to hotplug state machine Sebastian Andrzej Siewior
2016-11-21 15:51 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior
2016-11-22 22:44 ` tip-bot for Sebastian Andrzej Siewior
2016-11-17 18:35 ` [PATCH 14/20] arm/bL_switcher: " Sebastian Andrzej Siewior
2016-11-17 18:35 ` Sebastian Andrzej Siewior
2016-11-21 15:52 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior
2016-11-22 22:44 ` tip-bot for Sebastian Andrzej Siewior
2016-11-17 18:35 ` [PATCH 15/20] ARM/hw_breakpoint: " Sebastian Andrzej Siewior
2016-11-17 18:35 ` Sebastian Andrzej Siewior
2016-11-18 12:04 ` Will Deacon
2016-11-18 12:04 ` Will Deacon
2016-11-18 13:11 ` Thomas Gleixner
2016-11-18 13:11 ` Thomas Gleixner
2016-11-18 13:29 ` Will Deacon
2016-11-18 13:29 ` Will Deacon
2016-11-18 13:42 ` Thomas Gleixner
2016-11-18 13:42 ` Thomas Gleixner
2016-11-18 13:48 ` Will Deacon
2016-11-18 13:48 ` Will Deacon
2016-11-18 13:59 ` Thomas Gleixner
2016-11-18 13:59 ` Thomas Gleixner
2016-11-18 14:11 ` Will Deacon
2016-11-18 14:11 ` Will Deacon
2016-11-21 15:52 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior
2016-11-22 22:45 ` tip-bot for Sebastian Andrzej Siewior
2017-01-02 14:15 ` [PATCH 15/20] " Linus Walleij
2017-01-02 14:15 ` Linus Walleij
2017-01-02 14:34 ` Linus Walleij
2017-01-02 14:34 ` Linus Walleij
2017-01-02 15:00 ` Russell King - ARM Linux
2017-01-02 15:00 ` Russell King - ARM Linux
2017-01-02 20:15 ` Linus Walleij
2017-01-02 20:15 ` Linus Walleij
2017-01-03 9:33 ` Mark Rutland
2017-01-03 9:33 ` Mark Rutland
2017-01-04 11:27 ` Sebastian Andrzej Siewior
2017-01-04 11:27 ` Sebastian Andrzej Siewior
2017-01-04 13:56 ` Mark Rutland
2017-01-04 13:56 ` Mark Rutland
2017-01-04 14:32 ` Will Deacon
2017-01-04 14:32 ` Will Deacon
2017-01-05 15:57 ` Mark Rutland
2017-01-05 15:57 ` Mark Rutland
2017-01-05 15:26 ` Linus Walleij
2017-01-05 15:26 ` Linus Walleij
2017-01-05 17:14 ` Mark Rutland
2017-01-05 17:14 ` Mark Rutland
2016-11-17 18:35 ` [PATCH 16/20] powerpc/sysfs: " Sebastian Andrzej Siewior
2016-11-17 18:35 ` Sebastian Andrzej Siewior
2016-11-21 15:53 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior
2016-11-22 22:45 ` tip-bot for Sebastian Andrzej Siewior
2016-11-17 18:35 ` [PATCH 17/20] sparc/sysfs: " Sebastian Andrzej Siewior
2016-11-17 18:35 ` Sebastian Andrzej Siewior
2016-11-17 18:39 ` David Miller
2016-11-17 18:39 ` David Miller
2016-11-21 15:54 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior
2016-11-22 22:46 ` tip-bot for Sebastian Andrzej Siewior
2016-11-17 18:35 ` [PATCH 18/20] x86/oprofile/nmi: Remove superfluous smp_function_call_single() Sebastian Andrzej Siewior
2016-11-21 15:54 ` [tip:smp/hotplug] " tip-bot for Anna-Maria Gleixner
2016-11-22 22:46 ` tip-bot for Anna-Maria Gleixner
2016-11-17 18:35 ` [PATCH 19/20] x86/oprofile/nmi: Convert to hotplug state machine Sebastian Andrzej Siewior
2016-11-21 15:55 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior
2016-11-22 22:47 ` tip-bot for Sebastian Andrzej Siewior
2016-11-17 18:35 ` [PATCH 20/20] x86/pci/amd-bus: " Sebastian Andrzej Siewior
2016-11-17 18:35 ` Sebastian Andrzej Siewior
2016-11-21 15:55 ` [tip:smp/hotplug] " tip-bot for Sebastian Andrzej Siewior
2016-11-22 22:47 ` tip-bot for Sebastian Andrzej Siewior
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=20161124161054.GA20217@roeck-us.net \
--to=linux@roeck-us.net \
--cc=bigeasy@linutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-watchdog@vger.kernel.org \
--cc=rt@linuxtronix.de \
--cc=wim@iguana.be \
/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.