mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Dave Martin <Dave.Martin@arm.com>
To: Suzuki K Poulose <Suzuki.Poulose@arm.com>
Cc: mark.rutland@arm.com, ckadabi@codeaurora.org,
	ard.biesheuvel@linaro.org, marc.zyngier@arm.com,
	catalin.marinas@arm.com, will.deacon@arm.com,
	linux-kernel@vger.kernel.org, James Morse <james.morse@arm.com>,
	jnair@caviumnetworks.com, Andre Przywara <andre.przywara@arm.com>,
	Robin Murphy <robin.murphy@arm.com>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 01/16] arm64: capabilities: Update prototype for enable call back
Date: Thu, 25 Jan 2018 15:36:12 +0000	[thread overview]
Message-ID: <20180125153611.GI5862@e103592.cambridge.arm.com> (raw)
In-Reply-To: <5d32970c-ef6b-791b-4140-0e7de37364c8@arm.com>

On Tue, Jan 23, 2018 at 03:38:37PM +0000, Suzuki K Poulose wrote:
> On 23/01/18 14:52, Dave Martin wrote:
> >On Tue, Jan 23, 2018 at 12:27:54PM +0000, Suzuki K Poulose wrote:
> >>From: Dave Martin <dave.martin@arm.com>
> >>
> >>We issue the enable() call back for all CPU hwcaps capabilities
> >>available on the system, on all the CPUs. So far we have ignored
> >>the argument passed to the call back, which had a prototype to
> >>accept a "void *" for use with on_each_cpu() and later with
> >>stop_machine(). However, with commit 0a0d111d40fd1
> >>("arm64: cpufeature: Pass capability structure to ->enable callback"),
> >>there are some users of the argument who wants the matching capability
> >>struct pointer where there are multiple matching criteria for a single
> >>capability. Update the prototype for enable to accept a const pointer.
> >>
> >>Cc: Will Deacon <will.deacon@arm.com>
> >>Cc: Robin Murphy <robin.murphy@arm.com>
> >>Cc: Catalin Marinas <catalin.marinas@arm.com>
> >>Cc: Mark Rutland <mark.rutland@arm.com>
> >>Cc: Andre Przywara <andre.przywara@arm.com>
> >>Cc: James Morse <james.morse@arm.com>
> >>Reviewed-by: Julien Thierry <julien.thierry@arm.com>
> >>Signed-off-by: Dave Martin <dave.martin@arm.com>
> >>[ Rebased to for-next/core converting more users ]
> >>Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
> >>---
> >>  arch/arm64/include/asm/cpufeature.h |  3 ++-
> >>  arch/arm64/include/asm/fpsimd.h     |  4 +++-
> >>  arch/arm64/include/asm/processor.h  |  7 ++++---
> >>  arch/arm64/kernel/cpu_errata.c      | 14 ++++++--------
> >>  arch/arm64/kernel/cpufeature.c      | 16 ++++++++++++----
> >>  arch/arm64/kernel/fpsimd.c          |  3 ++-
> >>  arch/arm64/kernel/traps.c           |  3 ++-
> >>  arch/arm64/mm/fault.c               |  2 +-
> >>  8 files changed, 32 insertions(+), 20 deletions(-)
> >>
> >>diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h
> >>index ac67cfc2585a..cefbd685292c 100644
> >>--- a/arch/arm64/include/asm/cpufeature.h
> >>+++ b/arch/arm64/include/asm/cpufeature.h
> >>@@ -97,7 +97,8 @@ struct arm64_cpu_capabilities {
> >>  	u16 capability;
> >>  	int def_scope;			/* default scope */
> >>  	bool (*matches)(const struct arm64_cpu_capabilities *caps, int scope);
> >>-	int (*enable)(void *);		/* Called on all active CPUs */
> >>+	/* Called on all active CPUs for all  "available" capabilities */
> >
> >Nit: Odd spacing?  Also, "available" doesn't really make sense for errata
> >workarounds.
> >
> 
> Thanks for spotting, will fix it.
> 
> >Maybe applicable would be a better word?
> >
> 
> There is a subtle difference. If there are two entries for a capability,
> with only one of them matches, we end up calling the enable() for both
> the entries. "Applicable" could potentially be misunderstood, leading
> to assumption that the enable() is called only if that "entry" matches,
> which is not true. I accept that "available" doesn't sound any better either.
> 
> 
> >>+	int (*enable)(const struct arm64_cpu_capabilities *caps);

This probably shouldn't be "caps" here: this argument refers a single
capability, not an array.  Also, this shouldn't be any random capability,
but the one corresponding to the enable method:

	cap->enable(cap) 

(i.e., cap1->enable(cap2) is invalid, and the cpufeature framework won't
do that).

> >Alternatively, if the comment is liable to be ambiguous, maybe it would
> >be better to delete it.  The explicit argument type already makes this
> >more self-documenting than previously.
> 
> I think we still need to make it clear that the enable is called on
> all active CPUs. It is not about the argument anymore.
> 
> How about :
> 
> /*
>  * Called on all active CPUs if the capability associated with
>  * this entry is set.
>  */

Maybe, but now we have the new concept of "setting" a capability.

Really, this is enabling the capability for a CPU, not globally, so
maybe it could be renamed to "cpu_enable".

Could we describe the method in terms of what it is required to do,
as well as the circumstances of the call, e.g.:

/*
 * Take the appropriate actions to enable this capability for this cpu.
 * Every time a cpu is booted, this method is called under stop_machine()
 * for each globally enabled capability.
 */

(I'm hoping that "globally enabled" is meaningful wording, though
perhaps not.)

Also, what does the return value of this method mean?

Previously, the return value was ignored, but other patches in this
series might change that.

[...]

Cheers
---Dave

  reply	other threads:[~2018-01-25 15:36 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-23 12:27 [PATCH 00/16] arm64: Rework cpu capabilities handling Suzuki K Poulose
2018-01-23 12:27 ` [PATCH 01/16] arm64: capabilities: Update prototype for enable call back Suzuki K Poulose
2018-01-23 14:52   ` Dave Martin
2018-01-23 15:38     ` Suzuki K Poulose
2018-01-25 15:36       ` Dave Martin [this message]
2018-01-25 16:57         ` Suzuki K Poulose
2018-01-29 16:35           ` Dave Martin
2018-01-23 12:27 ` [PATCH 02/16] arm64: Move errata work around check on boot CPU Suzuki K Poulose
2018-01-23 14:59   ` Dave Martin
2018-01-23 15:07     ` Suzuki K Poulose
2018-01-23 15:11       ` Dave Martin
2018-01-23 12:27 ` [PATCH 03/16] arm64: Move errata capability processing code Suzuki K Poulose
2018-01-23 12:27 ` [PATCH 04/16] arm64: capabilities: Prepare for fine grained capabilities Suzuki K Poulose
2018-01-23 17:33   ` Dave Martin
2018-01-24 18:45     ` Suzuki K Poulose
2018-01-25 13:43       ` Dave Martin
2018-01-25 17:08         ` Suzuki K Poulose
2018-01-25 17:38           ` Dave Martin
2018-01-25 17:33   ` Dave Martin
2018-01-25 17:56     ` Suzuki K Poulose
2018-01-26 10:00       ` Dave Martin
2018-01-26 12:13         ` Suzuki K Poulose
2018-01-23 12:27 ` [PATCH 05/16] arm64: Add flags to check the safety of a capability for late CPU Suzuki K Poulose
2018-01-26 10:10   ` Dave Martin
2018-01-30 11:17     ` Suzuki K Poulose
2018-01-30 14:56       ` Dave Martin
2018-01-30 15:06         ` Suzuki K Poulose
2018-01-23 12:27 ` [PATCH 06/16] arm64: capabilities: Unify the verification Suzuki K Poulose
2018-01-26 11:08   ` Dave Martin
2018-01-26 12:10     ` Suzuki K Poulose
2018-01-29 16:57       ` Dave Martin
2018-01-23 12:28 ` [PATCH 07/16] arm64: capabilities: Filter the entries based on a given type Suzuki K Poulose
2018-01-26 11:22   ` Dave Martin
2018-01-26 12:21     ` Suzuki K Poulose
2018-01-29 17:06       ` Dave Martin
2018-01-23 12:28 ` [PATCH 08/16] arm64: capabilities: Group handling of features and errata Suzuki K Poulose
2018-01-26 11:47   ` Dave Martin
2018-01-26 12:31     ` Suzuki K Poulose
2018-01-29 17:14       ` Dave Martin
2018-01-29 17:22         ` Suzuki K Poulose
2018-01-30 15:06           ` Dave Martin
2018-01-23 12:28 ` [PATCH 09/16] arm64: capabilities: Introduce strict features based on local CPU Suzuki K Poulose
2018-01-26 12:12   ` Dave Martin
2018-01-30 11:25     ` Suzuki K Poulose
2018-01-23 12:28 ` [PATCH 10/16] arm64: Make KPTI strict CPU local feature Suzuki K Poulose
2018-01-26 12:25   ` Dave Martin
2018-01-26 15:46     ` Suzuki K Poulose
2018-01-29 17:24       ` Dave Martin
2018-01-23 12:28 ` [PATCH 11/16] arm64: errata: Clean up midr range helpers Suzuki K Poulose
2018-01-26 13:50   ` Dave Martin
2018-01-23 12:28 ` [PATCH 12/16] arm64: Add helpers for checking CPU MIDR against a range Suzuki K Poulose
2018-01-26 14:08   ` Dave Martin
2018-01-23 12:28 ` [PATCH 13/16] arm64: Add support for checking errata based on a list of MIDRS Suzuki K Poulose
2018-01-26 14:16   ` Dave Martin
2018-01-26 15:57     ` Suzuki K Poulose
2018-01-30 15:16       ` Dave Martin
2018-01-30 15:38         ` Suzuki K Poulose
2018-01-30 15:58           ` Dave Martin
2018-01-23 12:28 ` [PATCH 14/16] arm64: Add MIDR encoding for Arm Cortex-A55 and Cortex-A35 Suzuki K Poulose
2018-01-23 12:28 ` [PATCH 15/16] arm64: Delay enabling hardware DBM feature Suzuki K Poulose
2018-01-26 14:41   ` Dave Martin
2018-01-26 16:05     ` Suzuki K Poulose
2018-01-30 15:22       ` Dave Martin
2018-01-23 12:28 ` [PATCH 16/16] arm64: Add work around for Arm Cortex-A55 Erratum 1024718 Suzuki K Poulose
2018-01-26 15:33   ` Dave Martin
2018-01-26 16:29     ` Suzuki K Poulose
2018-01-30 15:27       ` Dave Martin

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=20180125153611.GI5862@e103592.cambridge.arm.com \
    --to=dave.martin@arm.com \
    --cc=Suzuki.Poulose@arm.com \
    --cc=andre.przywara@arm.com \
    --cc=ard.biesheuvel@linaro.org \
    --cc=catalin.marinas@arm.com \
    --cc=ckadabi@codeaurora.org \
    --cc=james.morse@arm.com \
    --cc=jnair@caviumnetworks.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=robin.murphy@arm.com \
    --cc=will.deacon@arm.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome