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: linux-arm-kernel@lists.infradead.org, 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>,
	dave.martin@arm.com
Subject: Re: [PATCH v2 01/20] arm64: capabilities: Update prototype for enable call back
Date: Wed, 7 Feb 2018 10:37:23 +0000	[thread overview]
Message-ID: <20180207103722.GR5862@e103592.cambridge.arm.com> (raw)
In-Reply-To: <20180131182807.32134-2-suzuki.poulose@arm.com>

On Wed, Jan 31, 2018 at 06:27:48PM +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. Clean up the declaration of the call back to make it clear.
> 
>  1) Renamed to cpu_enable(), to imply taking necessary actions on the
>     called CPU for the entry.
>  2) Pass const pointer to the capability, to allow the call back to
>     check the entry. (e.,g to check if any action is needed on the CPU)
>  3) We don't care about the result of the call back, turning this to
>     a void.
> 
> 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, rename call back,
>  drop call back results
> ]
> Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>

Ack for the changes.

Cheers
---Dave

> ---
>  arch/arm64/include/asm/cpufeature.h |  7 ++++++-
>  arch/arm64/include/asm/fpsimd.h     |  4 +++-
>  arch/arm64/include/asm/processor.h  |  7 ++++---
>  arch/arm64/kernel/cpu_errata.c      | 41 +++++++++++++++----------------------
>  arch/arm64/kernel/cpufeature.c      | 33 ++++++++++++++++-------------
>  arch/arm64/kernel/fpsimd.c          |  5 ++---
>  arch/arm64/kernel/traps.c           |  4 ++--
>  arch/arm64/mm/fault.c               |  3 +--
>  8 files changed, 54 insertions(+), 50 deletions(-)
> 
> diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h
> index ac67cfc2585a..f46eb7d1625f 100644
> --- a/arch/arm64/include/asm/cpufeature.h
> +++ b/arch/arm64/include/asm/cpufeature.h
> @@ -97,7 +97,12 @@ 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 */
> +	/*
> +	 * Take the appropriate actions to enable this capability for this CPU.
> +	 * For each successfully booted CPU, this method is called for each
> +	 * globally detected capability.
> +	 */
> +	void (*cpu_enable)(const struct arm64_cpu_capabilities *cap);
>  	union {
>  		struct {	/* To be used for erratum handling only */
>  			u32 midr_model;
> diff --git a/arch/arm64/include/asm/fpsimd.h b/arch/arm64/include/asm/fpsimd.h
> index 8857a0f0d0f7..7623762f7fa6 100644
> --- a/arch/arm64/include/asm/fpsimd.h
> +++ b/arch/arm64/include/asm/fpsimd.h
> @@ -83,7 +83,9 @@ extern void sve_save_state(void *state, u32 *pfpsr);
>  extern void sve_load_state(void const *state, u32 const *pfpsr,
>  			   unsigned long vq_minus_1);
>  extern unsigned int sve_get_vl(void);
> -extern int sve_kernel_enable(void *);
> +
> +struct arm64_cpu_capabilities;
> +extern void sve_kernel_enable(const struct arm64_cpu_capabilities *__unused);
>  
>  extern int __ro_after_init sve_max_vl;
>  
> diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
> index cee4ae25a5d1..83a3d2887ca6 100644
> --- a/arch/arm64/include/asm/processor.h
> +++ b/arch/arm64/include/asm/processor.h
> @@ -34,6 +34,7 @@
>  #include <linux/string.h>
>  
>  #include <asm/alternative.h>
> +#include <asm/cpufeature.h>
>  #include <asm/fpsimd.h>
>  #include <asm/hw_breakpoint.h>
>  #include <asm/lse.h>
> @@ -214,9 +215,9 @@ static inline void spin_lock_prefetch(const void *ptr)
>  
>  #endif
>  
> -int cpu_enable_pan(void *__unused);
> -int cpu_enable_cache_maint_trap(void *__unused);
> -int cpu_clear_disr(void *__unused);
> +void cpu_enable_pan(const struct arm64_cpu_capabilities *__unused);
> +void cpu_enable_cache_maint_trap(const struct arm64_cpu_capabilities *__unused);
> +void cpu_clear_disr(const struct arm64_cpu_capabilities *__unused);
>  
>  /* Userspace interface for PR_SVE_{SET,GET}_VL prctl()s: */
>  #define SVE_SET_VL(arg)	sve_set_current_vl(arg)
> diff --git a/arch/arm64/kernel/cpu_errata.c b/arch/arm64/kernel/cpu_errata.c
> index ed6881882231..e34bee500692 100644
> --- a/arch/arm64/kernel/cpu_errata.c
> +++ b/arch/arm64/kernel/cpu_errata.c
> @@ -53,11 +53,11 @@ has_mismatched_cache_line_size(const struct arm64_cpu_capabilities *entry,
>  		(arm64_ftr_reg_ctrel0.sys_val & arm64_ftr_reg_ctrel0.strict_mask);
>  }
>  
> -static int cpu_enable_trap_ctr_access(void *__unused)
> +static void cpu_enable_trap_ctr_access(
> +	const struct arm64_cpu_capabilities *__unused)
>  {
>  	/* Clear SCTLR_EL1.UCT */
>  	config_sctlr_el1(SCTLR_EL1_UCT, 0);
> -	return 0;
>  }
>  
>  #ifdef CONFIG_HARDEN_BRANCH_PREDICTOR
> @@ -144,17 +144,13 @@ static void  install_bp_hardening_cb(const struct arm64_cpu_capabilities *entry,
>  
>  #include <linux/psci.h>
>  
> -static int enable_psci_bp_hardening(void *data)
> +static void enable_psci_bp_hardening(const struct arm64_cpu_capabilities *entry)
>  {
> -	const struct arm64_cpu_capabilities *entry = data;
> -
>  	if (psci_ops.get_version)
>  		install_bp_hardening_cb(entry,
>  				       (bp_hardening_cb_t)psci_ops.get_version,
>  				       __psci_hyp_bp_inval_start,
>  				       __psci_hyp_bp_inval_end);
> -
> -	return 0;
>  }
>  
>  static void qcom_link_stack_sanitization(void)
> @@ -169,15 +165,12 @@ static void qcom_link_stack_sanitization(void)
>  		     : "=&r" (tmp));
>  }
>  
> -static int qcom_enable_link_stack_sanitization(void *data)
> +static void qcom_enable_link_stack_sanitization(
> +			const struct arm64_cpu_capabilities *entry)
>  {
> -	const struct arm64_cpu_capabilities *entry = data;
> -
>  	install_bp_hardening_cb(entry, qcom_link_stack_sanitization,
>  				__qcom_hyp_sanitize_link_stack_start,
>  				__qcom_hyp_sanitize_link_stack_end);
> -
> -	return 0;
>  }
>  #endif	/* CONFIG_HARDEN_BRANCH_PREDICTOR */
>  
> @@ -204,7 +197,7 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
>  		.desc = "ARM errata 826319, 827319, 824069",
>  		.capability = ARM64_WORKAROUND_CLEAN_CACHE,
>  		MIDR_RANGE(MIDR_CORTEX_A53, 0x00, 0x02),
> -		.enable = cpu_enable_cache_maint_trap,
> +		.cpu_enable = cpu_enable_cache_maint_trap,
>  	},
>  #endif
>  #ifdef CONFIG_ARM64_ERRATUM_819472
> @@ -213,7 +206,7 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
>  		.desc = "ARM errata 819472",
>  		.capability = ARM64_WORKAROUND_CLEAN_CACHE,
>  		MIDR_RANGE(MIDR_CORTEX_A53, 0x00, 0x01),
> -		.enable = cpu_enable_cache_maint_trap,
> +		.cpu_enable = cpu_enable_cache_maint_trap,
>  	},
>  #endif
>  #ifdef CONFIG_ARM64_ERRATUM_832075
> @@ -294,7 +287,7 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
>  		.capability = ARM64_MISMATCHED_CACHE_LINE_SIZE,
>  		.matches = has_mismatched_cache_line_size,
>  		.def_scope = SCOPE_LOCAL_CPU,
> -		.enable = cpu_enable_trap_ctr_access,
> +		.cpu_enable = cpu_enable_trap_ctr_access,
>  	},
>  #ifdef CONFIG_QCOM_FALKOR_ERRATUM_1003
>  	{
> @@ -333,27 +326,27 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
>  	{
>  		.capability = ARM64_HARDEN_BRANCH_PREDICTOR,
>  		MIDR_ALL_VERSIONS(MIDR_CORTEX_A57),
> -		.enable = enable_psci_bp_hardening,
> +		.cpu_enable = enable_psci_bp_hardening,
>  	},
>  	{
>  		.capability = ARM64_HARDEN_BRANCH_PREDICTOR,
>  		MIDR_ALL_VERSIONS(MIDR_CORTEX_A72),
> -		.enable = enable_psci_bp_hardening,
> +		.cpu_enable = enable_psci_bp_hardening,
>  	},
>  	{
>  		.capability = ARM64_HARDEN_BRANCH_PREDICTOR,
>  		MIDR_ALL_VERSIONS(MIDR_CORTEX_A73),
> -		.enable = enable_psci_bp_hardening,
> +		.cpu_enable = enable_psci_bp_hardening,
>  	},
>  	{
>  		.capability = ARM64_HARDEN_BRANCH_PREDICTOR,
>  		MIDR_ALL_VERSIONS(MIDR_CORTEX_A75),
> -		.enable = enable_psci_bp_hardening,
> +		.cpu_enable = enable_psci_bp_hardening,
>  	},
>  	{
>  		.capability = ARM64_HARDEN_BRANCH_PREDICTOR,
>  		MIDR_ALL_VERSIONS(MIDR_QCOM_FALKOR_V1),
> -		.enable = qcom_enable_link_stack_sanitization,
> +		.cpu_enable = qcom_enable_link_stack_sanitization,
>  	},
>  	{
>  		.capability = ARM64_HARDEN_BP_POST_GUEST_EXIT,
> @@ -362,12 +355,12 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
>  	{
>  		.capability = ARM64_HARDEN_BRANCH_PREDICTOR,
>  		MIDR_ALL_VERSIONS(MIDR_BRCM_VULCAN),
> -		.enable = enable_psci_bp_hardening,
> +		.cpu_enable = enable_psci_bp_hardening,
>  	},
>  	{
>  		.capability = ARM64_HARDEN_BRANCH_PREDICTOR,
>  		MIDR_ALL_VERSIONS(MIDR_CAVIUM_THUNDERX2),
> -		.enable = enable_psci_bp_hardening,
> +		.cpu_enable = enable_psci_bp_hardening,
>  	},
>  #endif
>  	{
> @@ -385,8 +378,8 @@ void verify_local_cpu_errata_workarounds(void)
>  
>  	for (; caps->matches; caps++) {
>  		if (cpus_have_cap(caps->capability)) {
> -			if (caps->enable)
> -				caps->enable((void *)caps);
> +			if (caps->cpu_enable)
> +				caps->cpu_enable(caps);
>  		} else if (caps->matches(caps, SCOPE_LOCAL_CPU)) {
>  			pr_crit("CPU%d: Requires work around for %s, not detected"
>  					" at boot time\n",
> diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
> index 4b6f9051cf0c..0b881d9fcde2 100644
> --- a/arch/arm64/kernel/cpufeature.c
> +++ b/arch/arm64/kernel/cpufeature.c
> @@ -894,7 +894,7 @@ static int __init parse_kpti(char *str)
>  __setup("kpti=", parse_kpti);
>  #endif	/* CONFIG_UNMAP_KERNEL_AT_EL0 */
>  
> -static int cpu_copy_el2regs(void *__unused)
> +static void cpu_copy_el2regs(const struct arm64_cpu_capabilities *__unused)
>  {
>  	/*
>  	 * Copy register values that aren't redirected by hardware.
> @@ -906,8 +906,6 @@ static int cpu_copy_el2regs(void *__unused)
>  	 */
>  	if (!alternatives_applied)
>  		write_sysreg(read_sysreg(tpidr_el1), tpidr_el2);
> -
> -	return 0;
>  }
>  
>  static const struct arm64_cpu_capabilities arm64_features[] = {
> @@ -931,7 +929,7 @@ static const struct arm64_cpu_capabilities arm64_features[] = {
>  		.field_pos = ID_AA64MMFR1_PAN_SHIFT,
>  		.sign = FTR_UNSIGNED,
>  		.min_field_value = 1,
> -		.enable = cpu_enable_pan,
> +		.cpu_enable = cpu_enable_pan,
>  	},
>  #endif /* CONFIG_ARM64_PAN */
>  #if defined(CONFIG_AS_LSE) && defined(CONFIG_ARM64_LSE_ATOMICS)
> @@ -979,7 +977,7 @@ static const struct arm64_cpu_capabilities arm64_features[] = {
>  		.capability = ARM64_HAS_VIRT_HOST_EXTN,
>  		.def_scope = SCOPE_SYSTEM,
>  		.matches = runs_at_el2,
> -		.enable = cpu_copy_el2regs,
> +		.cpu_enable = cpu_copy_el2regs,
>  	},
>  	{
>  		.desc = "32-bit EL0 Support",
> @@ -1033,7 +1031,7 @@ static const struct arm64_cpu_capabilities arm64_features[] = {
>  		.field_pos = ID_AA64PFR0_SVE_SHIFT,
>  		.min_field_value = ID_AA64PFR0_SVE,
>  		.matches = has_cpuid_feature,
> -		.enable = sve_kernel_enable,
> +		.cpu_enable = sve_kernel_enable,
>  	},
>  #endif /* CONFIG_ARM64_SVE */
>  #ifdef CONFIG_ARM64_RAS_EXTN
> @@ -1046,7 +1044,7 @@ static const struct arm64_cpu_capabilities arm64_features[] = {
>  		.sign = FTR_UNSIGNED,
>  		.field_pos = ID_AA64PFR0_RAS_SHIFT,
>  		.min_field_value = ID_AA64PFR0_RAS_V1,
> -		.enable = cpu_clear_disr,
> +		.cpu_enable = cpu_clear_disr,
>  	},
>  #endif /* CONFIG_ARM64_RAS_EXTN */
>  	{},
> @@ -1190,6 +1188,15 @@ void update_cpu_capabilities(const struct arm64_cpu_capabilities *caps,
>  	}
>  }
>  
> +
> +static int __enable_cpu_capability(void *arg)
> +{
> +	const struct arm64_cpu_capabilities *cap = arg;
> +
> +	cap->cpu_enable(cap);
> +	return 0;
> +}
> +
>  /*
>   * Run through the enabled capabilities and enable() it on all active
>   * CPUs
> @@ -1205,14 +1212,14 @@ void __init enable_cpu_capabilities(const struct arm64_cpu_capabilities *caps)
>  		/* Ensure cpus_have_const_cap(num) works */
>  		static_branch_enable(&cpu_hwcap_keys[num]);
>  
> -		if (caps->enable) {
> +		if (caps->cpu_enable) {
>  			/*
>  			 * Use stop_machine() as it schedules the work allowing
>  			 * us to modify PSTATE, instead of on_each_cpu() which
>  			 * uses an IPI, giving us a PSTATE that disappears when
>  			 * we return.
>  			 */
> -			stop_machine(caps->enable, (void *)caps, cpu_online_mask);
> +			stop_machine(__enable_cpu_capability, (void *)caps, cpu_online_mask);
>  		}
>  	}
>  }
> @@ -1255,8 +1262,8 @@ verify_local_cpu_features(const struct arm64_cpu_capabilities *caps_list)
>  					smp_processor_id(), caps->desc);
>  			cpu_die_early();
>  		}
> -		if (caps->enable)
> -			caps->enable((void *)caps);
> +		if (caps->cpu_enable)
> +			caps->cpu_enable(caps);
>  	}
>  }
>  
> @@ -1479,10 +1486,8 @@ static int __init enable_mrs_emulation(void)
>  
>  core_initcall(enable_mrs_emulation);
>  
> -int cpu_clear_disr(void *__unused)
> +void cpu_clear_disr(const struct arm64_cpu_capabilities *__unused)
>  {
>  	/* Firmware may have left a deferred SError in this register. */
>  	write_sysreg_s(0, SYS_DISR_EL1);
> -
> -	return 0;
>  }
> diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c
> index 55fb544072f6..35c563536b0c 100644
> --- a/arch/arm64/kernel/fpsimd.c
> +++ b/arch/arm64/kernel/fpsimd.c
> @@ -40,6 +40,7 @@
>  #include <linux/sysctl.h>
>  
>  #include <asm/fpsimd.h>
> +#include <asm/cpufeature.h>
>  #include <asm/cputype.h>
>  #include <asm/simd.h>
>  #include <asm/sigcontext.h>
> @@ -757,12 +758,10 @@ static void __init sve_efi_setup(void)
>   * Enable SVE for EL1.
>   * Intended for use by the cpufeatures code during CPU boot.
>   */
> -int sve_kernel_enable(void *__always_unused p)
> +void sve_kernel_enable(const struct arm64_cpu_capabilities *__always_unused p)
>  {
>  	write_sysreg(read_sysreg(CPACR_EL1) | CPACR_EL1_ZEN_EL1EN, CPACR_EL1);
>  	isb();
> -
> -	return 0;
>  }
>  
>  void __init sve_setup(void)
> diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c
> index bbb0fde2780e..a2f6492b4ea3 100644
> --- a/arch/arm64/kernel/traps.c
> +++ b/arch/arm64/kernel/traps.c
> @@ -38,6 +38,7 @@
>  
>  #include <asm/atomic.h>
>  #include <asm/bug.h>
> +#include <asm/cpufeature.h>
>  #include <asm/daifflags.h>
>  #include <asm/debug-monitors.h>
>  #include <asm/esr.h>
> @@ -374,10 +375,9 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs)
>  	force_signal_inject(SIGILL, ILL_ILLOPC, regs, 0);
>  }
>  
> -int cpu_enable_cache_maint_trap(void *__unused)
> +void cpu_enable_cache_maint_trap(const struct arm64_cpu_capabilities *__unused)
>  {
>  	config_sctlr_el1(SCTLR_EL1_UCI, 0);
> -	return 0;
>  }
>  
>  #define __user_cache_maint(insn, address, res)			\
> diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c
> index 0e671ddf4855..ccfbe979be17 100644
> --- a/arch/arm64/mm/fault.c
> +++ b/arch/arm64/mm/fault.c
> @@ -813,7 +813,7 @@ asmlinkage int __exception do_debug_exception(unsigned long addr,
>  NOKPROBE_SYMBOL(do_debug_exception);
>  
>  #ifdef CONFIG_ARM64_PAN
> -int cpu_enable_pan(void *__unused)
> +void cpu_enable_pan(const struct arm64_cpu_capabilities *__unused)
>  {
>  	/*
>  	 * We modify PSTATE. This won't work from irq context as the PSTATE
> @@ -823,6 +823,5 @@ int cpu_enable_pan(void *__unused)
>  
>  	config_sctlr_el1(SCTLR_EL1_SPAN, 0);
>  	asm(SET_PSTATE_PAN(1));
> -	return 0;
>  }
>  #endif /* CONFIG_ARM64_PAN */
> -- 
> 2.14.3
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2018-02-07 10:37 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-31 18:27 [PATCH v2 00/20] arm64: Rework cpu capabilities handling Suzuki K Poulose
2018-01-31 18:27 ` [PATCH v2 01/20] arm64: capabilities: Update prototype for enable call back Suzuki K Poulose
2018-02-07 10:37   ` Dave Martin [this message]
2018-02-07 11:23   ` Robin Murphy
2018-01-31 18:27 ` [PATCH v2 02/20] arm64: capabilities: Move errata work around check on boot CPU Suzuki K Poulose
2018-02-07 10:37   ` Dave Martin
2018-02-07 14:47     ` Suzuki K Poulose
2018-01-31 18:27 ` [PATCH v2 03/20] arm64: capabilities: Move errata processing code Suzuki K Poulose
2018-02-07 10:37   ` Dave Martin
2018-01-31 18:27 ` [PATCH v2 04/20] arm64: capabilities: Prepare for fine grained capabilities Suzuki K Poulose
2018-02-07 10:37   ` Dave Martin
2018-02-07 15:16     ` Suzuki K Poulose
2018-02-07 15:39       ` Dave Martin
2018-01-31 18:27 ` [PATCH v2 05/20] arm64: capabilities: Add flags to handle the conflicts on late CPU Suzuki K Poulose
2018-02-07 10:38   ` Dave Martin
2018-02-07 11:31     ` Robin Murphy
2018-02-07 16:53       ` Suzuki K Poulose
2018-01-31 18:27 ` [PATCH v2 06/20] arm64: capabilities: Unify the verification Suzuki K Poulose
2018-02-07 10:38   ` Dave Martin
2018-02-07 16:56     ` Suzuki K Poulose
2018-01-31 18:27 ` [PATCH v2 07/20] arm64: capabilities: Filter the entries based on a given mask Suzuki K Poulose
2018-02-07 10:38   ` Dave Martin
2018-02-07 17:01     ` Suzuki K Poulose
2018-01-31 18:27 ` [PATCH v2 08/20] arm64: capabilities: Group handling of features and errata Suzuki K Poulose
2018-02-07 10:38   ` Dave Martin
2018-02-08 12:10     ` Suzuki K Poulose
2018-02-08 12:12       ` [PATCH 1/2] arm64: capabilities: Allow flexibility in scope Suzuki K Poulose
2018-02-08 12:12         ` [PATCH 2/2] arm64: capabilities: Group handling of features and errata workarounds Suzuki K Poulose
2018-02-08 16:10         ` [PATCH 1/2] arm64: capabilities: Allow flexibility in scope Dave Martin
2018-02-08 16:31           ` Suzuki K Poulose
2018-02-08 17:32             ` Dave Martin
2018-02-09 12:16               ` Suzuki K Poulose
2018-02-09 12:16                 ` [PATCH 1/4] arm64: capabilities: Prepare for grouping features and errata work arounds Suzuki K Poulose
2018-02-09 12:16                 ` [PATCH 2/4] arm64: capabilities: Split the processing of " Suzuki K Poulose
2018-02-09 12:16                 ` [PATCH 3/4] arm64: capabilities: Allow features based on local CPU scope Suzuki K Poulose
2018-02-09 12:16                 ` [PATCH 4/4] arm64: capabilities: Group handling of features and errata workarounds Suzuki K Poulose
2018-02-09 12:19                   ` Suzuki K Poulose
2018-02-09 14:21                 ` [PATCH 1/2] arm64: capabilities: Allow flexibility in scope Dave Martin
2018-01-31 18:27 ` [PATCH v2 09/20] arm64: capabilities: Introduce weak features based on local CPU Suzuki K Poulose
2018-02-07 10:38   ` Dave Martin
2018-01-31 18:27 ` [PATCH v2 10/20] arm64: capabilities: Restrict KPTI detection to boot-time CPUs Suzuki K Poulose
2018-02-07 10:38   ` Dave Martin
2018-02-07 18:15     ` Suzuki K Poulose
2018-02-08 11:05       ` Dave Martin
2018-01-31 18:27 ` [PATCH v2 11/20] arm64: capabilities: Add support for features enabled early Suzuki K Poulose
2018-02-07 10:38   ` Dave Martin
2018-02-07 18:34     ` Suzuki K Poulose
2018-02-08 11:35       ` Dave Martin
2018-02-08 11:43         ` Suzuki K Poulose
2018-01-31 18:27 ` [PATCH v2 12/20] arm64: capabilities: Change scope of VHE to Boot CPU feature Suzuki K Poulose
2018-02-07 10:39   ` Dave Martin
2018-01-31 18:28 ` [PATCH v2 13/20] arm64: capabilities: Clean up midr range helpers Suzuki K Poulose
2018-02-07 10:39   ` Dave Martin
2018-01-31 18:28 ` [PATCH v2 14/20] arm64: Add helpers for checking CPU MIDR against a range Suzuki K Poulose
2018-02-07 10:39   ` Dave Martin
2018-01-31 18:28 ` [PATCH v2 15/20] arm64: capabilities: Add support for checks based on a list of MIDRs Suzuki K Poulose
2018-02-07 10:39   ` Dave Martin
2018-01-31 18:28 ` [PATCH v2 16/20] arm64: Handle shared capability entries Suzuki K Poulose
2018-02-07 10:39   ` Dave Martin
2018-02-08 10:53     ` Suzuki K Poulose
2018-02-08 12:01       ` Dave Martin
2018-02-08 12:32         ` Robin Murphy
2018-02-09 10:05           ` Dave Martin
2018-02-08 12:04   ` Dave Martin
2018-02-08 12:05     ` Suzuki K Poulose
2018-01-31 18:28 ` [PATCH v2 17/20] arm64: bp hardening: Allow late CPUs to enable work around Suzuki K Poulose
2018-02-07 10:39   ` Dave Martin
2018-02-08 12:19     ` Suzuki K Poulose
2018-02-08 12:26       ` Marc Zyngier
2018-02-08 16:58         ` Suzuki K Poulose
2018-02-08 17:59           ` Suzuki K Poulose
2018-02-08 17:59             ` Suzuki K Poulose
2018-01-31 18:28 ` [PATCH v2 18/20] arm64: Add MIDR encoding for Arm Cortex-A55 and Cortex-A35 Suzuki K Poulose
2018-02-07 10:39   ` Dave Martin
2018-01-31 18:28 ` [PATCH v2 19/20] arm64: Delay enabling hardware DBM feature Suzuki K Poulose
2018-02-07 10:40   ` Dave Martin
2018-01-31 18:28 ` [PATCH v2 20/20] arm64: Add work around for Arm Cortex-A55 Erratum 1024718 Suzuki K Poulose
2018-02-07 10:40   ` 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=20180207103722.GR5862@e103592.cambridge.arm.com \
    --to=dave.martin@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=suzuki.poulose@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

all inboxes | Powered by JetHome®