2021-11-16 06:15:45

by Zqiang

[permalink] [raw]
Subject: [PATCH V2] watchdog: ignore nohz_full cores in new cpumask

If the nohz_full is enabled, when update watchdog_mask, the
nohz_full cores should be ignored.

Signed-off-by: Zqiang <[email protected]>
---
v1->v2:
if watchdog_cpumask became empty, set housekeeping_cpumask.

kernel/watchdog.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/kernel/watchdog.c b/kernel/watchdog.c
index ad912511a0c0..6f0c5528b399 100644
--- a/kernel/watchdog.c
+++ b/kernel/watchdog.c
@@ -628,7 +628,9 @@ void lockup_detector_soft_poweroff(void)
static void proc_watchdog_update(void)
{
/* Remove impossible cpus to keep sysctl output clean. */
- cpumask_and(&watchdog_cpumask, &watchdog_cpumask, cpu_possible_mask);
+ cpumask_and(&watchdog_cpumask, &watchdog_cpumask, housekeeping_cpumask(HK_FLAG_TIMER));
+ if (cpumask_empty(&watchdog_cpumask))
+ cpumask_copy(&watchdog_cpumask, housekeeping_cpumask(HK_FLAG_TIMER));
lockup_detector_reconfigure();
}

--
2.17.1



2021-11-17 17:03:34

by Frederic Weisbecker

[permalink] [raw]
Subject: Re: [PATCH V2] watchdog: ignore nohz_full cores in new cpumask

On Tue, Nov 16, 2021 at 02:15:36PM +0800, Zqiang wrote:
> If the nohz_full is enabled, when update watchdog_mask, the
> nohz_full cores should be ignored.
>
> Signed-off-by: Zqiang <[email protected]>

I don't know, I guess it can still be useful to have the lockup detector
available to debug some issues in nohz_full.

Those who override the cpumask should know what they are doing,
but you can still print a warning when a nohz_full CPU is included in
the range.

Thanks.

> ---
> v1->v2:
> if watchdog_cpumask became empty, set housekeeping_cpumask.
>
> kernel/watchdog.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/watchdog.c b/kernel/watchdog.c
> index ad912511a0c0..6f0c5528b399 100644
> --- a/kernel/watchdog.c
> +++ b/kernel/watchdog.c
> @@ -628,7 +628,9 @@ void lockup_detector_soft_poweroff(void)
> static void proc_watchdog_update(void)
> {
> /* Remove impossible cpus to keep sysctl output clean. */
> - cpumask_and(&watchdog_cpumask, &watchdog_cpumask, cpu_possible_mask);
> + cpumask_and(&watchdog_cpumask, &watchdog_cpumask, housekeeping_cpumask(HK_FLAG_TIMER));
> + if (cpumask_empty(&watchdog_cpumask))
> + cpumask_copy(&watchdog_cpumask, housekeeping_cpumask(HK_FLAG_TIMER));
> lockup_detector_reconfigure();
> }
>
> --
> 2.17.1
>