2023-07-28 17:16:01

by James Morse

[permalink] [raw]
Subject: [PATCH v5 10/24] tick/nohz: Move tick_nohz_full_mask declaration outside the #ifdef

tick_nohz_full_mask lists the CPUs that are nohz_full. This is only
needed when CONFIG_NO_HZ_FULL is defined. tick_nohz_full_cpu() allows
a specific CPU to be tested against the mask, and evaluates to false
when CONFIG_NO_HZ_FULL is not defined.

The resctrl code needs to pick a CPU to run some work on, a new helper
prefers housekeeping CPUs by examining the tick_nohz_full_mask. Hiding
the declaration behind #ifdef CONFIG_NO_HZ_FULL forces all the users to
be behind an ifdef too.

Move the tick_nohz_full_mask declaration, this lets callers drop the
ifdef, and guard access to tick_nohz_full_mask with IS_ENABLED() or
something like tick_nohz_full_cpu().

The definition does not need to be moved as any callers should be
removed at compile time unless CONFIG_NO_HZ_FULL is defined.

Signed-off-by: James Morse <[email protected]>
---
include/linux/tick.h | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/include/linux/tick.h b/include/linux/tick.h
index 9459fef5b857..65af90ca409a 100644
--- a/include/linux/tick.h
+++ b/include/linux/tick.h
@@ -174,9 +174,16 @@ static inline u64 get_cpu_iowait_time_us(int cpu, u64 *unused) { return -1; }
static inline void tick_nohz_idle_stop_tick_protected(void) { }
#endif /* !CONFIG_NO_HZ_COMMON */

+/*
+ * Mask of CPUs that are nohz_full.
+ *
+ * Users should be guarded by CONFIG_NO_HZ_FULL or a tick_nohz_full_cpu()
+ * check.
+ */
+extern cpumask_var_t tick_nohz_full_mask;
+
#ifdef CONFIG_NO_HZ_FULL
extern bool tick_nohz_full_running;
-extern cpumask_var_t tick_nohz_full_mask;

static inline bool tick_nohz_full_enabled(void)
{
--
2.39.2



2023-08-09 23:07:23

by Reinette Chatre

[permalink] [raw]
Subject: Re: [PATCH v5 10/24] tick/nohz: Move tick_nohz_full_mask declaration outside the #ifdef

Hi James,

On 7/28/2023 9:42 AM, James Morse wrote:
> tick_nohz_full_mask lists the CPUs that are nohz_full. This is only
> needed when CONFIG_NO_HZ_FULL is defined. tick_nohz_full_cpu() allows
> a specific CPU to be tested against the mask, and evaluates to false
> when CONFIG_NO_HZ_FULL is not defined.
>
> The resctrl code needs to pick a CPU to run some work on, a new helper
> prefers housekeeping CPUs by examining the tick_nohz_full_mask. Hiding
> the declaration behind #ifdef CONFIG_NO_HZ_FULL forces all the users to
> be behind an ifdef too.
>
> Move the tick_nohz_full_mask declaration, this lets callers drop the
> ifdef, and guard access to tick_nohz_full_mask with IS_ENABLED() or
> something like tick_nohz_full_cpu().
>
> The definition does not need to be moved as any callers should be
> removed at compile time unless CONFIG_NO_HZ_FULL is defined.
>
> Signed-off-by: James Morse <[email protected]>
> ---
> include/linux/tick.h | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)

This is outside of the resctrl area. What is the upstreaming
plan for this patch?

Reinette

2023-09-08 19:32:22

by James Morse

[permalink] [raw]
Subject: Re: [PATCH v5 10/24] tick/nohz: Move tick_nohz_full_mask declaration outside the #ifdef

Hi Reinette,

On 8/25/23 01:43, Reinette Chatre wrote:
> On 8/24/2023 9:55 AM, James Morse wrote:
>> On 09/08/2023 23:34, Reinette Chatre wrote:
>>> On 7/28/2023 9:42 AM, James Morse wrote:
>>>> tick_nohz_full_mask lists the CPUs that are nohz_full. This is only
>>>> needed when CONFIG_NO_HZ_FULL is defined. tick_nohz_full_cpu() allows
>>>> a specific CPU to be tested against the mask, and evaluates to false
>>>> when CONFIG_NO_HZ_FULL is not defined.
>>>>
>>>> The resctrl code needs to pick a CPU to run some work on, a new helper
>>>> prefers housekeeping CPUs by examining the tick_nohz_full_mask. Hiding
>>>> the declaration behind #ifdef CONFIG_NO_HZ_FULL forces all the users to
>>>> be behind an ifdef too.
>>>>
>>>> Move the tick_nohz_full_mask declaration, this lets callers drop the
>>>> ifdef, and guard access to tick_nohz_full_mask with IS_ENABLED() or
>>>> something like tick_nohz_full_cpu().
>>>>
>>>> The definition does not need to be moved as any callers should be
>>>> removed at compile time unless CONFIG_NO_HZ_FULL is defined.

>>> This is outside of the resctrl area. What is the upstreaming
>>> plan for this patch?
>>
>> Once you're happy with the rest of it - we can give the other folk on CC a poke.
>> I'd assume changes to this file also go via tip. It would just need an ack from the
>> relevant person.
>
> At the moment this change is buried within a pile of resctrl
> changes so we need to make sure that folks are not surprised by this
> thinking we are trying to sneak it in. Please note that
> CC is currently missing Frederic Weisbecker.

Oops, fixed.


> I wonder if it may help to change cover letter to be something like
> "x86/resctrl and tick/nohz: Monitor ..." Just an idea.

I think that would be excessive - the subject of the patch already matches what is normal for that file. I'll move the patch to the top of the series as that makes it clearer that there is no dependency on the rest of the series.


Thanks,

James