From: Mark Rutland <mark.rutland@arm.com>
To: Douglas Anderson <dianders@chromium.org>
Cc: Petr Mladek <pmladek@suse.com>,
Andrew Morton <akpm@linux-foundation.org>,
Matthias Kaehlcke <mka@chromium.org>,
kgdb-bugreport@lists.sourceforge.net,
Stephane Eranian <eranian@google.com>,
mpe@ellerman.id.au, Tzung-Bi Shih <tzungbi@chromium.org>,
Daniel Thompson <daniel.thompson@linaro.org>,
linuxppc-dev@lists.ozlabs.org, Sumit Garg <sumit.garg@linaro.org>,
npiggin@gmail.com, davem@davemloft.net,
Marc Zyngier <maz@kernel.org>, Stephen Boyd <swboyd@chromium.org>,
sparclinux@vger.kernel.org, christophe.leroy@csgroup.eu,
Catalin Marinas <catalin.marinas@arm.com>,
ravi.v.shankar@intel.com, Randy Dunlap <rdunlap@infradead.org>,
Pingfan Liu <kernelfans@gmail.com>,
Guenter Roeck <groeck@chromium.org>,
Lecopzer Chen <lecopzer.chen@mediatek.com>,
Ian Rogers <irogers@google.com>,
ito-yuichi@fujitsu.com, ricardo.neri@intel.com,
linux-arm-kernel@lists.infradead.org,
linux-perf-users@vger.kernel.org, Will Deacon <will@kernel.org>,
Chen-Yu Tsai <wens@csie.org>,
linux-kernel@vger.kernel.org,
Masayoshi Mizuma <msys.mizuma@gmail.com>,
Andi Kleen <ak@linux.intel.com>
Subject: Re: [PATCH v5 15/18] watchdog/perf: Add a weak function for an arch to detect if perf can use NMIs
Date: Mon, 12 Jun 2023 11:33:41 +0100 [thread overview]
Message-ID: <ZIb0hd8djM+jJviF@FVFF77S0Q05N> (raw)
In-Reply-To: <20230519101840.v5.15.Ic55cb6f90ef5967d8aaa2b503a4e67c753f64d3a@changeid>
On Fri, May 19, 2023 at 10:18:39AM -0700, Douglas Anderson wrote:
> On arm64, NMI support needs to be detected at runtime. Add a weak
> function to the perf hardlockup detector so that an architecture can
> implement it to detect whether NMIs are available.
>
> Signed-off-by: Douglas Anderson <dianders@chromium.org>
> ---
> While I won't object to this patch landing, I consider it part of the
> arm64 perf hardlockup effort. I would be OK with the earlier patches
> in the series landing and then not landing ${SUBJECT} patch nor
> anything else later.
FWIW, everything prior to this looks fine to me, so I reckon it'd be worth
splitting the series here and getting the buddy lockup detector in first, to
avoid a log-jam on all the subsequent NMI bits.
Thanks,
Mark.
> I'll also note that, as an alternative to this, it would be nice if we
> could figure out how to make perf_event_create_kernel_counter() fail
> on arm64 if NMIs aren't available. Maybe we could add a "must_use_nmi"
> element to "struct perf_event_attr"?
>
> (no changes since v4)
>
> Changes in v4:
> - ("Add a weak function for an arch to detect ...") new for v4.
>
> include/linux/nmi.h | 1 +
> kernel/watchdog_perf.c | 12 +++++++++++-
> 2 files changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/include/linux/nmi.h b/include/linux/nmi.h
> index 47db14e7da52..eb616fc07c85 100644
> --- a/include/linux/nmi.h
> +++ b/include/linux/nmi.h
> @@ -210,6 +210,7 @@ static inline bool trigger_single_cpu_backtrace(int cpu)
>
> #ifdef CONFIG_HARDLOCKUP_DETECTOR_PERF
> u64 hw_nmi_get_sample_period(int watchdog_thresh);
> +bool arch_perf_nmi_is_available(void);
> #endif
>
> #if defined(CONFIG_HARDLOCKUP_CHECK_TIMESTAMP) && \
> diff --git a/kernel/watchdog_perf.c b/kernel/watchdog_perf.c
> index 349fcd4d2abc..8ea00c4a24b2 100644
> --- a/kernel/watchdog_perf.c
> +++ b/kernel/watchdog_perf.c
> @@ -234,12 +234,22 @@ void __init hardlockup_detector_perf_restart(void)
> }
> }
>
> +bool __weak __init arch_perf_nmi_is_available(void)
> +{
> + return true;
> +}
> +
> /**
> * watchdog_hardlockup_probe - Probe whether NMI event is available at all
> */
> int __init watchdog_hardlockup_probe(void)
> {
> - int ret = hardlockup_detector_event_create();
> + int ret;
> +
> + if (!arch_perf_nmi_is_available())
> + return -ENODEV;
> +
> + ret = hardlockup_detector_event_create();
>
> if (ret) {
> pr_info("Perf NMI watchdog permanently disabled\n");
> --
> 2.40.1.698.g37aff9b760-goog
>
WARNING: multiple messages have this Message-ID (diff)
From: Mark Rutland <mark.rutland@arm.com>
To: Douglas Anderson <dianders@chromium.org>
Cc: Ian Rogers <irogers@google.com>,
ito-yuichi@fujitsu.com,
Lecopzer Chen <lecopzer.chen@mediatek.com>,
ravi.v.shankar@intel.com,
Catalin Marinas <catalin.marinas@arm.com>,
ricardo.neri@intel.com, Stephane Eranian <eranian@google.com>,
sparclinux@vger.kernel.org, Guenter Roeck <groeck@chromium.org>,
Will Deacon <will@kernel.org>,
Daniel Thompson <daniel.thompson@linaro.org>,
Andi Kleen <ak@linux.intel.com>, Marc Zyngier <maz@kernel.org>,
Chen-Yu Tsai <wens@csie.org>,
Matthias Kaehlcke <mka@chromium.org>,
kgdb-bugreport@lists.sourceforge.net,
Masayoshi Mizuma <msys.mizuma@gmail.com>,
Petr Mladek <pmladek@suse.com>,
Tzung-Bi Shih <tzungbi@chromium.org>,
npiggin@gmail.com, Stephen Boyd <swboyd@chromium.org>,
Pingfan Liu <kernelfans@gmail.com>,
linux-arm-kernel@lists.infradead.org,
Sumit Garg <sumit.garg@linaro.org>,
Randy Dunlap <rdunlap@infradead.org>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
linuxppc-dev@lists.ozlabs.o rg, davem@davemloft.net
Subject: Re: [PATCH v5 15/18] watchdog/perf: Add a weak function for an arch to detect if perf can use NMIs
Date: Mon, 12 Jun 2023 11:33:41 +0100 [thread overview]
Message-ID: <ZIb0hd8djM+jJviF@FVFF77S0Q05N> (raw)
In-Reply-To: <20230519101840.v5.15.Ic55cb6f90ef5967d8aaa2b503a4e67c753f64d3a@changeid>
On Fri, May 19, 2023 at 10:18:39AM -0700, Douglas Anderson wrote:
> On arm64, NMI support needs to be detected at runtime. Add a weak
> function to the perf hardlockup detector so that an architecture can
> implement it to detect whether NMIs are available.
>
> Signed-off-by: Douglas Anderson <dianders@chromium.org>
> ---
> While I won't object to this patch landing, I consider it part of the
> arm64 perf hardlockup effort. I would be OK with the earlier patches
> in the series landing and then not landing ${SUBJECT} patch nor
> anything else later.
FWIW, everything prior to this looks fine to me, so I reckon it'd be worth
splitting the series here and getting the buddy lockup detector in first, to
avoid a log-jam on all the subsequent NMI bits.
Thanks,
Mark.
> I'll also note that, as an alternative to this, it would be nice if we
> could figure out how to make perf_event_create_kernel_counter() fail
> on arm64 if NMIs aren't available. Maybe we could add a "must_use_nmi"
> element to "struct perf_event_attr"?
>
> (no changes since v4)
>
> Changes in v4:
> - ("Add a weak function for an arch to detect ...") new for v4.
>
> include/linux/nmi.h | 1 +
> kernel/watchdog_perf.c | 12 +++++++++++-
> 2 files changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/include/linux/nmi.h b/include/linux/nmi.h
> index 47db14e7da52..eb616fc07c85 100644
> --- a/include/linux/nmi.h
> +++ b/include/linux/nmi.h
> @@ -210,6 +210,7 @@ static inline bool trigger_single_cpu_backtrace(int cpu)
>
> #ifdef CONFIG_HARDLOCKUP_DETECTOR_PERF
> u64 hw_nmi_get_sample_period(int watchdog_thresh);
> +bool arch_perf_nmi_is_available(void);
> #endif
>
> #if defined(CONFIG_HARDLOCKUP_CHECK_TIMESTAMP) && \
> diff --git a/kernel/watchdog_perf.c b/kernel/watchdog_perf.c
> index 349fcd4d2abc..8ea00c4a24b2 100644
> --- a/kernel/watchdog_perf.c
> +++ b/kernel/watchdog_perf.c
> @@ -234,12 +234,22 @@ void __init hardlockup_detector_perf_restart(void)
> }
> }
>
> +bool __weak __init arch_perf_nmi_is_available(void)
> +{
> + return true;
> +}
> +
> /**
> * watchdog_hardlockup_probe - Probe whether NMI event is available at all
> */
> int __init watchdog_hardlockup_probe(void)
> {
> - int ret = hardlockup_detector_event_create();
> + int ret;
> +
> + if (!arch_perf_nmi_is_available())
> + return -ENODEV;
> +
> + ret = hardlockup_detector_event_create();
>
> if (ret) {
> pr_info("Perf NMI watchdog permanently disabled\n");
> --
> 2.40.1.698.g37aff9b760-goog
>
next prev parent reply other threads:[~2023-06-12 10:50 UTC|newest]
Thread overview: 113+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-19 17:18 [PATCH v5 00/18] watchdog/hardlockup: Add the buddy hardlockup detector Douglas Anderson
2023-05-19 17:18 ` [PATCH v5 18/18] arm64: Enable perf events based hard lockup detector Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` [PATCH v5 00/18] watchdog/hardlockup: Add the buddy hardlockup detector Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` [PATCH v5 01/18] watchdog/perf: Define dummy watchdog_update_hrtimer_threshold() on correct config Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` [PATCH v5 02/18] watchdog/perf: More properly prevent false positives with turbo modes Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-23 9:35 ` Petr Mladek
2023-05-23 9:35 ` Petr Mladek
2023-05-23 9:35 ` Petr Mladek
2023-05-19 17:18 ` [PATCH v5 03/18] watchdog: remove WATCHDOG_DEFAULT Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` [PATCH v5 04/18] watchdog/hardlockup: change watchdog_nmi_enable() to void Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` [PATCH v5 05/18] watchdog/perf: Ensure CPU-bound context when creating hardlockup detector event Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` [PATCH v5 06/18] watchdog/hardlockup: Add comments to touch_nmi_watchdog() Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-23 9:58 ` Petr Mladek
2023-05-23 9:58 ` Petr Mladek
2023-05-23 9:58 ` Petr Mladek
2023-05-19 17:18 ` [PATCH v5 07/18] watchdog/perf: Rename watchdog_hld.c to watchdog_perf.c Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` [PATCH v5 08/18] watchdog/hardlockup: Move perf hardlockup checking/panic to common watchdog.c Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-23 11:45 ` Petr Mladek
2023-05-23 11:45 ` Petr Mladek
2023-05-23 11:45 ` Petr Mladek
2023-05-19 17:18 ` [PATCH v5 09/18] watchdog/hardlockup: Style changes to watchdog_hardlockup_check() / is_hardlockup() Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` [PATCH v5 10/18] watchdog/hardlockup: Add a "cpu" param to watchdog_hardlockup_check() Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-23 16:02 ` Petr Mladek
2023-05-23 16:02 ` Petr Mladek
2023-05-23 16:02 ` Petr Mladek
2023-05-23 16:34 ` Doug Anderson
2023-05-23 16:34 ` Doug Anderson
2023-05-23 16:34 ` Doug Anderson
2023-05-24 11:36 ` Petr Mladek
2023-05-24 11:36 ` Petr Mladek
2023-05-24 11:36 ` Petr Mladek
2023-05-19 17:18 ` [PATCH v5 11/18] watchdog/hardlockup: Move perf hardlockup watchdog petting to watchdog.c Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-24 13:07 ` Petr Mladek
2023-05-24 13:07 ` Petr Mladek
2023-05-24 13:07 ` Petr Mladek
2023-05-19 17:18 ` [PATCH v5 12/18] watchdog/hardlockup: Rename some "NMI watchdog" constants/function Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-24 13:38 ` Petr Mladek
2023-05-24 13:38 ` Petr Mladek
2023-05-24 13:38 ` Petr Mladek
2023-05-25 23:33 ` Doug Anderson
2023-05-25 23:33 ` Doug Anderson
2023-05-25 23:33 ` Doug Anderson
2023-05-19 17:18 ` [PATCH v5 13/18] watchdog/hardlockup: Have the perf hardlockup use __weak functions more cleanly Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-24 13:59 ` Petr Mladek
2023-05-24 13:59 ` Petr Mladek
2023-05-24 13:59 ` Petr Mladek
2023-05-24 19:38 ` Doug Anderson
2023-05-24 19:38 ` Doug Anderson
2023-05-24 19:38 ` Doug Anderson
2023-05-26 14:44 ` Petr Mladek
2023-05-26 14:44 ` Petr Mladek
2023-05-26 14:44 ` Petr Mladek
2023-05-19 17:18 ` [PATCH v5 14/18] watchdog/hardlockup: detect hard lockups using secondary (buddy) CPUs Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-25 16:26 ` Petr Mladek
2023-05-25 16:26 ` Petr Mladek
2023-05-25 16:26 ` Petr Mladek
2023-05-25 20:08 ` Doug Anderson
2023-05-25 20:08 ` Doug Anderson
2023-05-25 20:08 ` Doug Anderson
2023-05-26 12:29 ` Petr Mladek
2023-05-26 12:29 ` Petr Mladek
2023-05-26 12:29 ` Petr Mladek
2023-05-19 17:18 ` [PATCH v5 15/18] watchdog/perf: Add a weak function for an arch to detect if perf can use NMIs Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-26 12:36 ` Petr Mladek
2023-05-26 12:36 ` Petr Mladek
2023-05-26 12:36 ` Petr Mladek
2023-06-12 10:33 ` Mark Rutland [this message]
2023-06-12 10:33 ` Mark Rutland
2023-06-12 13:55 ` Doug Anderson
2023-06-12 13:55 ` Doug Anderson
2023-06-12 13:55 ` Doug Anderson
2023-06-12 13:59 ` Mark Rutland
2023-06-12 13:59 ` Mark Rutland
2023-06-12 13:59 ` Mark Rutland
2023-05-19 17:18 ` [PATCH v5 16/18] watchdog/perf: Adapt the watchdog_perf interface for async model Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` [PATCH v5 17/18] arm64: add hw_nmi_get_sample_period for preparation of lockup detector Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
2023-05-19 17:18 ` Douglas Anderson
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=ZIb0hd8djM+jJviF@FVFF77S0Q05N \
--to=mark.rutland@arm.com \
--cc=ak@linux.intel.com \
--cc=akpm@linux-foundation.org \
--cc=catalin.marinas@arm.com \
--cc=christophe.leroy@csgroup.eu \
--cc=daniel.thompson@linaro.org \
--cc=davem@davemloft.net \
--cc=dianders@chromium.org \
--cc=eranian@google.com \
--cc=groeck@chromium.org \
--cc=irogers@google.com \
--cc=ito-yuichi@fujitsu.com \
--cc=kernelfans@gmail.com \
--cc=kgdb-bugreport@lists.sourceforge.net \
--cc=lecopzer.chen@mediatek.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=maz@kernel.org \
--cc=mka@chromium.org \
--cc=mpe@ellerman.id.au \
--cc=msys.mizuma@gmail.com \
--cc=npiggin@gmail.com \
--cc=pmladek@suse.com \
--cc=ravi.v.shankar@intel.com \
--cc=rdunlap@infradead.org \
--cc=ricardo.neri@intel.com \
--cc=sparclinux@vger.kernel.org \
--cc=sumit.garg@linaro.org \
--cc=swboyd@chromium.org \
--cc=tzungbi@chromium.org \
--cc=wens@csie.org \
--cc=will@kernel.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.