Re: [PATCH][RFC] perf/x86: avoid false-positives hard lockup

From: Peter Zijlstra
Date: Thu Oct 10 2019 - 05:46:54 EST


On Thu, Oct 10, 2019 at 04:41:38PM +0800, Li RongQing wrote:
> if perf counter is used as nmi watchdog, and twice nmi in soft
> watchdog sample period will trigger hard lockup
>
> make sure left time is not less than soft watchdog period by
> compared with 3/5 period to skip forward, since soft watchdog
> sample period is 2/5 of watchdog_thresh, nmi watchdog sample
> period, computed by set_sample_period
>
> Signed-off-by: Li RongQing <lirongqing@xxxxxxxxx>
> ---
> arch/x86/events/core.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c
> index 7b21455d7504..1f5309456d4c 100644
> --- a/arch/x86/events/core.c
> +++ b/arch/x86/events/core.c
> @@ -1196,7 +1196,11 @@ int x86_perf_event_set_period(struct perf_event *event)
> /*
> * If we are way outside a reasonable range then just skip forward:
> */
> +#ifdef CONFIG_HARDLOCKUP_DETECTOR_PERF
> + if (unlikely(left <= -(period * 3 / 5))) {
> +#else
> if (unlikely(left <= -period)) {
> +#endif

NAK. This is 100% the wrong place to do anything like that.