From: Valentin Schneider <valentin.schneider@arm.com>
To: Ionela Voinescu <ionela.voinescu@arm.com>
Cc: catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com,
maz@kernel.org, suzuki.poulose@arm.com, sudeep.holla@arm.com,
lukasz.luba@arm.com, dietmar.eggemann@arm.com, rjw@rjwysocki.net,
peterz@infradead.org, mingo@redhat.com,
vincent.guittot@linaro.org, viresh.kumar@linaro.org,
linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org
Subject: Re: [PATCH v4 6/7] arm64: use activity monitors for frequency invariance
Date: Mon, 24 Feb 2020 18:40:38 +0000 [thread overview]
Message-ID: <jhjmu97ygk9.fsf@arm.com> (raw)
In-Reply-To: <20200224141142.25445-7-ionela.voinescu@arm.com>
Ionela Voinescu writes:
> Signed-off-by: Ionela Voinescu <ionela.voinescu@arm.com>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will@kernel.org>
> Cc: Sudeep Holla <sudeep.holla@arm.com>
With the small nits below:
Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
> diff --git a/arch/arm64/kernel/topology.c b/arch/arm64/kernel/topology.c
> index fa9528dfd0ce..7606cbd63517 100644
> --- a/arch/arm64/kernel/topology.c
> +++ b/arch/arm64/kernel/topology.c
> +
> +static inline int
That should be bool, seeing what it returns.
> +enable_policy_freq_counters(int cpu, cpumask_var_t valid_cpus)
> +{
> + struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
> +
> + if (!policy) {
> + pr_debug("CPU%d: No cpufreq policy found.\n", cpu);
> + return false;
> + }
> +
> + if (cpumask_subset(policy->related_cpus, valid_cpus))
> + cpumask_or(amu_fie_cpus, policy->related_cpus,
> + amu_fie_cpus);
> +
> + cpufreq_cpu_put(policy);
> +
> + return true;
> +}
> diff --git a/drivers/base/arch_topology.c b/drivers/base/arch_topology.c
> index 1eb81f113786..1ab2b7503d63 100644
> --- a/drivers/base/arch_topology.c
> +++ b/drivers/base/arch_topology.c
> @@ -29,6 +29,14 @@ void arch_set_freq_scale(struct cpumask *cpus, unsigned long cur_freq,
> unsigned long scale;
> int i;
>
> + /*
> + * If the use of counters for FIE is enabled, just return as we don't
> + * want to update the scale factor with information from CPUFREQ.
> + * Instead the scale factor will be updated from arch_scale_freq_tick.
> + */
> + if (arch_cpu_freq_counters(cpus))
> + return;
> +
> scale = (cur_freq << SCHED_CAPACITY_SHIFT) / max_freq;
>
> for_each_cpu(i, cpus)
> diff --git a/include/linux/topology.h b/include/linux/topology.h
> index eb2fe6edd73c..397aad6ae163 100644
> --- a/include/linux/topology.h
> +++ b/include/linux/topology.h
> @@ -227,5 +227,12 @@ static inline const struct cpumask *cpu_cpu_mask(int cpu)
> return cpumask_of_node(cpu_to_node(cpu));
> }
>
> +#ifndef arch_cpu_freq_counters
> +static __always_inline
> +bool arch_cpu_freq_counters(struct cpumask *cpus)
> +{
> + return false;
> +}
> +#endif
>
Apologies for commenting on this only now, I had missed it in my earlier
round of review.
I would've liked to keep this contained within arm64 stuff until we agreed
on a more generic counter-driven FIE interface, but seems like we can't evade
it due to the arch_topology situation.
Would it make sense to relocate this stub to arch_topology.h instead, at
least for the time being? That way the only non-arm64 changes are condensed
in arch_topology (even if it doesn't change much in terms of header files,
since topology.h imports arch_topology.h)
> #endif /* _LINUX_TOPOLOGY_H */
WARNING: multiple messages have this Message-ID (diff)
From: Valentin Schneider <valentin.schneider@arm.com>
To: Ionela Voinescu <ionela.voinescu@arm.com>
Cc: mark.rutland@arm.com, maz@kernel.org, suzuki.poulose@arm.com,
peterz@infradead.org, catalin.marinas@arm.com,
linux-pm@vger.kernel.org, linux-doc@vger.kernel.org,
rjw@rjwysocki.net, linux-kernel@vger.kernel.org,
mingo@redhat.com, viresh.kumar@linaro.org,
linux-arm-kernel@lists.infradead.org, sudeep.holla@arm.com,
will@kernel.org, dietmar.eggemann@arm.com, lukasz.luba@arm.com
Subject: Re: [PATCH v4 6/7] arm64: use activity monitors for frequency invariance
Date: Mon, 24 Feb 2020 18:40:38 +0000 [thread overview]
Message-ID: <jhjmu97ygk9.fsf@arm.com> (raw)
In-Reply-To: <20200224141142.25445-7-ionela.voinescu@arm.com>
Ionela Voinescu writes:
> Signed-off-by: Ionela Voinescu <ionela.voinescu@arm.com>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will@kernel.org>
> Cc: Sudeep Holla <sudeep.holla@arm.com>
With the small nits below:
Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
> diff --git a/arch/arm64/kernel/topology.c b/arch/arm64/kernel/topology.c
> index fa9528dfd0ce..7606cbd63517 100644
> --- a/arch/arm64/kernel/topology.c
> +++ b/arch/arm64/kernel/topology.c
> +
> +static inline int
That should be bool, seeing what it returns.
> +enable_policy_freq_counters(int cpu, cpumask_var_t valid_cpus)
> +{
> + struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
> +
> + if (!policy) {
> + pr_debug("CPU%d: No cpufreq policy found.\n", cpu);
> + return false;
> + }
> +
> + if (cpumask_subset(policy->related_cpus, valid_cpus))
> + cpumask_or(amu_fie_cpus, policy->related_cpus,
> + amu_fie_cpus);
> +
> + cpufreq_cpu_put(policy);
> +
> + return true;
> +}
> diff --git a/drivers/base/arch_topology.c b/drivers/base/arch_topology.c
> index 1eb81f113786..1ab2b7503d63 100644
> --- a/drivers/base/arch_topology.c
> +++ b/drivers/base/arch_topology.c
> @@ -29,6 +29,14 @@ void arch_set_freq_scale(struct cpumask *cpus, unsigned long cur_freq,
> unsigned long scale;
> int i;
>
> + /*
> + * If the use of counters for FIE is enabled, just return as we don't
> + * want to update the scale factor with information from CPUFREQ.
> + * Instead the scale factor will be updated from arch_scale_freq_tick.
> + */
> + if (arch_cpu_freq_counters(cpus))
> + return;
> +
> scale = (cur_freq << SCHED_CAPACITY_SHIFT) / max_freq;
>
> for_each_cpu(i, cpus)
> diff --git a/include/linux/topology.h b/include/linux/topology.h
> index eb2fe6edd73c..397aad6ae163 100644
> --- a/include/linux/topology.h
> +++ b/include/linux/topology.h
> @@ -227,5 +227,12 @@ static inline const struct cpumask *cpu_cpu_mask(int cpu)
> return cpumask_of_node(cpu_to_node(cpu));
> }
>
> +#ifndef arch_cpu_freq_counters
> +static __always_inline
> +bool arch_cpu_freq_counters(struct cpumask *cpus)
> +{
> + return false;
> +}
> +#endif
>
Apologies for commenting on this only now, I had missed it in my earlier
round of review.
I would've liked to keep this contained within arm64 stuff until we agreed
on a more generic counter-driven FIE interface, but seems like we can't evade
it due to the arch_topology situation.
Would it make sense to relocate this stub to arch_topology.h instead, at
least for the time being? That way the only non-arm64 changes are condensed
in arch_topology (even if it doesn't change much in terms of header files,
since topology.h imports arch_topology.h)
> #endif /* _LINUX_TOPOLOGY_H */
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-02-24 18:40 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-24 14:11 [PATCH v4 0/7] arm64: ARMv8.4 Activity Monitors support Ionela Voinescu
2020-02-24 14:11 ` Ionela Voinescu
2020-02-24 14:11 ` [PATCH v4 1/7] arm64: add support for the AMU extension v1 Ionela Voinescu
2020-02-24 14:11 ` Ionela Voinescu
2020-02-24 18:39 ` Valentin Schneider
2020-02-24 18:39 ` Valentin Schneider
2020-02-24 14:11 ` [PATCH v4 2/7] arm64: trap to EL1 accesses to AMU counters from EL0 Ionela Voinescu
2020-02-24 14:11 ` Ionela Voinescu
2020-02-24 14:11 ` [PATCH v4 3/7] arm64/kvm: disable access to AMU registers from kvm guests Ionela Voinescu
2020-02-24 14:11 ` Ionela Voinescu
2020-02-24 14:11 ` [PATCH v4 4/7] Documentation: arm64: document support for the AMU extension Ionela Voinescu
2020-02-24 14:11 ` Ionela Voinescu
2020-02-24 14:11 ` [PATCH v4 5/7] cpufreq: add function to get the hardware max frequency Ionela Voinescu
2020-02-24 14:11 ` Ionela Voinescu
2020-02-24 18:44 ` Valentin Schneider
2020-02-24 18:44 ` Valentin Schneider
2020-02-24 14:11 ` [PATCH v4 6/7] arm64: use activity monitors for frequency invariance Ionela Voinescu
2020-02-24 14:11 ` Ionela Voinescu
2020-02-24 18:40 ` Valentin Schneider [this message]
2020-02-24 18:40 ` Valentin Schneider
2020-02-25 9:59 ` Lukasz Luba
2020-02-25 9:59 ` Lukasz Luba
2020-02-26 10:18 ` Ionela Voinescu
2020-02-26 10:18 ` Ionela Voinescu
2020-02-26 9:51 ` Pavan Kondeti
2020-02-26 9:51 ` Pavan Kondeti
2020-02-26 10:22 ` Ionela Voinescu
2020-02-26 10:22 ` Ionela Voinescu
2020-02-24 14:11 ` [PATCH v4 7/7] clocksource/drivers/arm_arch_timer: validate arch_timer_rate Ionela Voinescu
2020-02-24 14:11 ` Ionela Voinescu
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=jhjmu97ygk9.fsf@arm.com \
--to=valentin.schneider@arm.com \
--cc=catalin.marinas@arm.com \
--cc=dietmar.eggemann@arm.com \
--cc=ionela.voinescu@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=lukasz.luba@arm.com \
--cc=mark.rutland@arm.com \
--cc=maz@kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rjw@rjwysocki.net \
--cc=sudeep.holla@arm.com \
--cc=suzuki.poulose@arm.com \
--cc=vincent.guittot@linaro.org \
--cc=viresh.kumar@linaro.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.