Re: [PATCH 13/25] context_tracking: Introduce context_tracking_enabled_cpu()
On Wed, Nov 14, 2018 at 03:45:57AM +0100, Frederic Weisbecker wrote: > This allows us to check if a remote CPU runs context tracking > (ie: is nohz_full). We'll need that to reliably support "nice" > accounting on kcpustat. > > Signed-off-by: Frederic Weisbecker > Cc: Yauheni Kaliuta > Cc: Thomas Gleixner > Cc: Rik van Riel > Cc: Peter Zijlstra > Cc: Wanpeng Li > Cc: Ingo Molnar > --- > include/linux/context_tracking_state.h | 6 ++ > 1 file changed, 6 insertions(+) > > diff --git a/include/linux/context_tracking_state.h > b/include/linux/context_tracking_state.h > index 08f125f..5877177 100644 > --- a/include/linux/context_tracking_state.h > +++ b/include/linux/context_tracking_state.h > @@ -31,6 +31,11 @@ static inline bool context_tracking_enabled(void) > return static_branch_unlikely(_tracking_key); > } > > +static inline bool context_tracking_enabled_cpu(int cpu) > +{ > + return per_cpu(context_tracking.active, cpu); > +} > + > static inline bool context_tracking_enabled_this_cpu(void) > { > return __this_cpu_read(context_tracking.active); Should not the last two be something like: static inline bool context_tracking_enabled_cpu(int cpu) { return context_tracking_enabled() && per_cpu(context_tracking.active, cpu); } static inline bool context_tracking_enabled_this_cpu(void) { return context_tracking_enabled() && __this_cpu_read(context_tracking.active); } Because, afaict, not all callsites first check the static key.
Re: [PATCH 13/25] context_tracking: Introduce context_tracking_enabled_cpu()
On Wed, Nov 14, 2018 at 03:45:57AM +0100, Frederic Weisbecker wrote: > This allows us to check if a remote CPU runs context tracking > (ie: is nohz_full). We'll need that to reliably support "nice" > accounting on kcpustat. > > Signed-off-by: Frederic Weisbecker > Cc: Yauheni Kaliuta > Cc: Thomas Gleixner > Cc: Rik van Riel > Cc: Peter Zijlstra > Cc: Wanpeng Li > Cc: Ingo Molnar > --- > include/linux/context_tracking_state.h | 6 ++ > 1 file changed, 6 insertions(+) > > diff --git a/include/linux/context_tracking_state.h > b/include/linux/context_tracking_state.h > index 08f125f..5877177 100644 > --- a/include/linux/context_tracking_state.h > +++ b/include/linux/context_tracking_state.h > @@ -31,6 +31,11 @@ static inline bool context_tracking_enabled(void) > return static_branch_unlikely(_tracking_key); > } > > +static inline bool context_tracking_enabled_cpu(int cpu) > +{ > + return per_cpu(context_tracking.active, cpu); > +} > + > static inline bool context_tracking_enabled_this_cpu(void) > { > return __this_cpu_read(context_tracking.active); Should not the last two be something like: static inline bool context_tracking_enabled_cpu(int cpu) { return context_tracking_enabled() && per_cpu(context_tracking.active, cpu); } static inline bool context_tracking_enabled_this_cpu(void) { return context_tracking_enabled() && __this_cpu_read(context_tracking.active); } Because, afaict, not all callsites first check the static key.
[PATCH 13/25] context_tracking: Introduce context_tracking_enabled_cpu()
This allows us to check if a remote CPU runs context tracking (ie: is nohz_full). We'll need that to reliably support "nice" accounting on kcpustat. Signed-off-by: Frederic Weisbecker Cc: Yauheni Kaliuta Cc: Thomas Gleixner Cc: Rik van Riel Cc: Peter Zijlstra Cc: Wanpeng Li Cc: Ingo Molnar --- include/linux/context_tracking_state.h | 6 ++ 1 file changed, 6 insertions(+) diff --git a/include/linux/context_tracking_state.h b/include/linux/context_tracking_state.h index 08f125f..5877177 100644 --- a/include/linux/context_tracking_state.h +++ b/include/linux/context_tracking_state.h @@ -31,6 +31,11 @@ static inline bool context_tracking_enabled(void) return static_branch_unlikely(_tracking_key); } +static inline bool context_tracking_enabled_cpu(int cpu) +{ + return per_cpu(context_tracking.active, cpu); +} + static inline bool context_tracking_enabled_this_cpu(void) { return __this_cpu_read(context_tracking.active); @@ -43,6 +48,7 @@ static inline bool context_tracking_in_user(void) #else static inline bool context_tracking_in_user(void) { return false; } static inline bool context_tracking_enabled(void) { return false; } +static inline bool context_tracking_enabled_cpu(int cpu) { return false; } static inline bool context_tracking_enabled_this_cpu(void) { return false; } #endif /* CONFIG_CONTEXT_TRACKING */ -- 2.7.4
[PATCH 13/25] context_tracking: Introduce context_tracking_enabled_cpu()
This allows us to check if a remote CPU runs context tracking (ie: is nohz_full). We'll need that to reliably support "nice" accounting on kcpustat. Signed-off-by: Frederic Weisbecker Cc: Yauheni Kaliuta Cc: Thomas Gleixner Cc: Rik van Riel Cc: Peter Zijlstra Cc: Wanpeng Li Cc: Ingo Molnar --- include/linux/context_tracking_state.h | 6 ++ 1 file changed, 6 insertions(+) diff --git a/include/linux/context_tracking_state.h b/include/linux/context_tracking_state.h index 08f125f..5877177 100644 --- a/include/linux/context_tracking_state.h +++ b/include/linux/context_tracking_state.h @@ -31,6 +31,11 @@ static inline bool context_tracking_enabled(void) return static_branch_unlikely(_tracking_key); } +static inline bool context_tracking_enabled_cpu(int cpu) +{ + return per_cpu(context_tracking.active, cpu); +} + static inline bool context_tracking_enabled_this_cpu(void) { return __this_cpu_read(context_tracking.active); @@ -43,6 +48,7 @@ static inline bool context_tracking_in_user(void) #else static inline bool context_tracking_in_user(void) { return false; } static inline bool context_tracking_enabled(void) { return false; } +static inline bool context_tracking_enabled_cpu(int cpu) { return false; } static inline bool context_tracking_enabled_this_cpu(void) { return false; } #endif /* CONFIG_CONTEXT_TRACKING */ -- 2.7.4