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, jnair@caviumnetworks.com, dave.martin@arm.com Subject: Re: [PATCH v2 03/20] arm64: capabilities: Move errata processing code Date: Wed, 7 Feb 2018 10:37:47 +0000 [thread overview] Message-ID: <20180207103746.GT5862@e103592.cambridge.arm.com> (raw) In-Reply-To: <20180131182807.32134-4-suzuki.poulose@arm.com> On Wed, Jan 31, 2018 at 06:27:50PM +0000, Suzuki K Poulose wrote: > We have errata work around processing code in cpu_errata.c, > which calls back into helpers defined in cpufeature.c. Now > that we are going to make the handling of capabilities > generic, by adding the information to each capability, > move the errata work around specific processing code. > No functional changes. > > Cc: Dave Martin <dave.martin@arm.com> > Cc: Will Deacon <will.deacon@arm.com> > Cc: Marc Zyngier <marc.zyngier@arm.com> > Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> Reviewed-by: Dave Martin <Dave.Martin@arm.com> > --- > arch/arm64/include/asm/cpufeature.h | 7 ------- > arch/arm64/kernel/cpu_errata.c | 33 ------------------------------ > arch/arm64/kernel/cpufeature.c | 40 +++++++++++++++++++++++++++++++++++-- > 3 files changed, 38 insertions(+), 42 deletions(-) > > diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h > index f46eb7d1625f..7925e40c6ded 100644 > --- a/arch/arm64/include/asm/cpufeature.h > +++ b/arch/arm64/include/asm/cpufeature.h > @@ -238,15 +238,8 @@ static inline bool id_aa64pfr0_sve(u64 pfr0) > } > > void __init setup_cpu_features(void); > - > -void update_cpu_capabilities(const struct arm64_cpu_capabilities *caps, > - const char *info); > -void enable_cpu_capabilities(const struct arm64_cpu_capabilities *caps); > void check_local_cpu_capabilities(void); > > -void update_cpu_errata_workarounds(void); > -void __init enable_errata_workarounds(void); > -void verify_local_cpu_errata_workarounds(void); > > u64 read_sanitised_ftr_reg(u32 id); > > diff --git a/arch/arm64/kernel/cpu_errata.c b/arch/arm64/kernel/cpu_errata.c > index e34bee500692..9de0ee5d73c0 100644 > --- a/arch/arm64/kernel/cpu_errata.c > +++ b/arch/arm64/kernel/cpu_errata.c > @@ -366,36 +366,3 @@ const struct arm64_cpu_capabilities arm64_errata[] = { > { > } > }; > - > -/* > - * The CPU Errata work arounds are detected and applied at boot time > - * and the related information is freed soon after. If the new CPU requires > - * an errata not detected at boot, fail this CPU. > - */ > -void verify_local_cpu_errata_workarounds(void) > -{ > - const struct arm64_cpu_capabilities *caps = arm64_errata; > - > - for (; caps->matches; caps++) { > - if (cpus_have_cap(caps->capability)) { > - 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", > - smp_processor_id(), > - caps->desc ? : "an erratum"); > - cpu_die_early(); > - } > - } > -} > - > -void update_cpu_errata_workarounds(void) > -{ > - update_cpu_capabilities(arm64_errata, "enabling workaround for"); > -} > - > -void __init enable_errata_workarounds(void) > -{ > - enable_cpu_capabilities(arm64_errata); > -} > diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c > index ef3cc48bc925..f0cd165c75e9 100644 > --- a/arch/arm64/kernel/cpufeature.c > +++ b/arch/arm64/kernel/cpufeature.c > @@ -503,6 +503,9 @@ static void __init init_cpu_ftr_reg(u32 sys_reg, u64 new) > reg->user_mask = user_mask; > } > > +extern const struct arm64_cpu_capabilities arm64_errata[]; > +static void update_cpu_errata_workarounds(void); > + > void __init init_cpu_features(struct cpuinfo_arm64 *info) > { > /* Before we start using the tables, make sure it is sorted */ > @@ -1181,7 +1184,7 @@ static bool __this_cpu_has_cap(const struct arm64_cpu_capabilities *cap_array, > return false; > } > > -void update_cpu_capabilities(const struct arm64_cpu_capabilities *caps, > +static void update_cpu_capabilities(const struct arm64_cpu_capabilities *caps, > const char *info) > { > for (; caps->matches; caps++) { > @@ -1207,7 +1210,7 @@ static int __enable_cpu_capability(void *arg) > * Run through the enabled capabilities and enable() it on all active > * CPUs > */ > -void __init enable_cpu_capabilities(const struct arm64_cpu_capabilities *caps) > +static void __init enable_cpu_capabilities(const struct arm64_cpu_capabilities *caps) > { > for (; caps->matches; caps++) { > unsigned int num = caps->capability; > @@ -1290,6 +1293,39 @@ static void verify_sve_features(void) > /* Add checks on other ZCR bits here if necessary */ > } > > +/* > + * The CPU Errata work arounds are detected and applied at boot time > + * and the related information is freed soon after. If the new CPU requires > + * an errata not detected at boot, fail this CPU. > + */ > +static void verify_local_cpu_errata_workarounds(void) > +{ > + const struct arm64_cpu_capabilities *caps = arm64_errata; > + > + for (; caps->matches; caps++) { > + if (cpus_have_cap(caps->capability)) { > + 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", > + smp_processor_id(), > + caps->desc ? : "an erratum"); > + cpu_die_early(); > + } > + } > +} > + > +static void update_cpu_errata_workarounds(void) > +{ > + update_cpu_capabilities(arm64_errata, "enabling workaround for"); > +} > + > +static void __init enable_errata_workarounds(void) > +{ > + enable_cpu_capabilities(arm64_errata); > +} > + > /* > * Run through the enabled system capabilities and enable() it on this CPU. > * The capabilities were decided based on the available CPUs at the boot time. > -- > 2.14.3 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Dave.Martin@arm.com (Dave Martin) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 03/20] arm64: capabilities: Move errata processing code Date: Wed, 7 Feb 2018 10:37:47 +0000 [thread overview] Message-ID: <20180207103746.GT5862@e103592.cambridge.arm.com> (raw) In-Reply-To: <20180131182807.32134-4-suzuki.poulose@arm.com> On Wed, Jan 31, 2018 at 06:27:50PM +0000, Suzuki K Poulose wrote: > We have errata work around processing code in cpu_errata.c, > which calls back into helpers defined in cpufeature.c. Now > that we are going to make the handling of capabilities > generic, by adding the information to each capability, > move the errata work around specific processing code. > No functional changes. > > Cc: Dave Martin <dave.martin@arm.com> > Cc: Will Deacon <will.deacon@arm.com> > Cc: Marc Zyngier <marc.zyngier@arm.com> > Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> Reviewed-by: Dave Martin <Dave.Martin@arm.com> > --- > arch/arm64/include/asm/cpufeature.h | 7 ------- > arch/arm64/kernel/cpu_errata.c | 33 ------------------------------ > arch/arm64/kernel/cpufeature.c | 40 +++++++++++++++++++++++++++++++++++-- > 3 files changed, 38 insertions(+), 42 deletions(-) > > diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h > index f46eb7d1625f..7925e40c6ded 100644 > --- a/arch/arm64/include/asm/cpufeature.h > +++ b/arch/arm64/include/asm/cpufeature.h > @@ -238,15 +238,8 @@ static inline bool id_aa64pfr0_sve(u64 pfr0) > } > > void __init setup_cpu_features(void); > - > -void update_cpu_capabilities(const struct arm64_cpu_capabilities *caps, > - const char *info); > -void enable_cpu_capabilities(const struct arm64_cpu_capabilities *caps); > void check_local_cpu_capabilities(void); > > -void update_cpu_errata_workarounds(void); > -void __init enable_errata_workarounds(void); > -void verify_local_cpu_errata_workarounds(void); > > u64 read_sanitised_ftr_reg(u32 id); > > diff --git a/arch/arm64/kernel/cpu_errata.c b/arch/arm64/kernel/cpu_errata.c > index e34bee500692..9de0ee5d73c0 100644 > --- a/arch/arm64/kernel/cpu_errata.c > +++ b/arch/arm64/kernel/cpu_errata.c > @@ -366,36 +366,3 @@ const struct arm64_cpu_capabilities arm64_errata[] = { > { > } > }; > - > -/* > - * The CPU Errata work arounds are detected and applied at boot time > - * and the related information is freed soon after. If the new CPU requires > - * an errata not detected at boot, fail this CPU. > - */ > -void verify_local_cpu_errata_workarounds(void) > -{ > - const struct arm64_cpu_capabilities *caps = arm64_errata; > - > - for (; caps->matches; caps++) { > - if (cpus_have_cap(caps->capability)) { > - 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", > - smp_processor_id(), > - caps->desc ? : "an erratum"); > - cpu_die_early(); > - } > - } > -} > - > -void update_cpu_errata_workarounds(void) > -{ > - update_cpu_capabilities(arm64_errata, "enabling workaround for"); > -} > - > -void __init enable_errata_workarounds(void) > -{ > - enable_cpu_capabilities(arm64_errata); > -} > diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c > index ef3cc48bc925..f0cd165c75e9 100644 > --- a/arch/arm64/kernel/cpufeature.c > +++ b/arch/arm64/kernel/cpufeature.c > @@ -503,6 +503,9 @@ static void __init init_cpu_ftr_reg(u32 sys_reg, u64 new) > reg->user_mask = user_mask; > } > > +extern const struct arm64_cpu_capabilities arm64_errata[]; > +static void update_cpu_errata_workarounds(void); > + > void __init init_cpu_features(struct cpuinfo_arm64 *info) > { > /* Before we start using the tables, make sure it is sorted */ > @@ -1181,7 +1184,7 @@ static bool __this_cpu_has_cap(const struct arm64_cpu_capabilities *cap_array, > return false; > } > > -void update_cpu_capabilities(const struct arm64_cpu_capabilities *caps, > +static void update_cpu_capabilities(const struct arm64_cpu_capabilities *caps, > const char *info) > { > for (; caps->matches; caps++) { > @@ -1207,7 +1210,7 @@ static int __enable_cpu_capability(void *arg) > * Run through the enabled capabilities and enable() it on all active > * CPUs > */ > -void __init enable_cpu_capabilities(const struct arm64_cpu_capabilities *caps) > +static void __init enable_cpu_capabilities(const struct arm64_cpu_capabilities *caps) > { > for (; caps->matches; caps++) { > unsigned int num = caps->capability; > @@ -1290,6 +1293,39 @@ static void verify_sve_features(void) > /* Add checks on other ZCR bits here if necessary */ > } > > +/* > + * The CPU Errata work arounds are detected and applied at boot time > + * and the related information is freed soon after. If the new CPU requires > + * an errata not detected at boot, fail this CPU. > + */ > +static void verify_local_cpu_errata_workarounds(void) > +{ > + const struct arm64_cpu_capabilities *caps = arm64_errata; > + > + for (; caps->matches; caps++) { > + if (cpus_have_cap(caps->capability)) { > + 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", > + smp_processor_id(), > + caps->desc ? : "an erratum"); > + cpu_die_early(); > + } > + } > +} > + > +static void update_cpu_errata_workarounds(void) > +{ > + update_cpu_capabilities(arm64_errata, "enabling workaround for"); > +} > + > +static void __init enable_errata_workarounds(void) > +{ > + enable_cpu_capabilities(arm64_errata); > +} > + > /* > * Run through the enabled system capabilities and enable() it on this CPU. > * The capabilities were decided based on the available CPUs at the boot time. > -- > 2.14.3 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2018-02-07 10:37 UTC|newest] Thread overview: 156+ 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 ` Suzuki K Poulose 2018-01-31 18:27 ` [PATCH v2 01/20] arm64: capabilities: Update prototype for enable call back Suzuki K Poulose 2018-01-31 18:27 ` Suzuki K Poulose 2018-02-07 10:37 ` Dave Martin 2018-02-07 10:37 ` Dave Martin 2018-02-07 11:23 ` Robin Murphy 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-01-31 18:27 ` Suzuki K Poulose 2018-02-07 10:37 ` Dave Martin 2018-02-07 10:37 ` Dave Martin 2018-02-07 14:47 ` Suzuki K Poulose 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-01-31 18:27 ` Suzuki K Poulose 2018-02-07 10:37 ` Dave Martin [this message] 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-01-31 18:27 ` Suzuki K Poulose 2018-02-07 10:37 ` Dave Martin 2018-02-07 10:37 ` Dave Martin 2018-02-07 15:16 ` Suzuki K Poulose 2018-02-07 15:16 ` Suzuki K Poulose 2018-02-07 15:39 ` Dave Martin 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-01-31 18:27 ` Suzuki K Poulose 2018-02-07 10:38 ` Dave Martin 2018-02-07 10:38 ` Dave Martin 2018-02-07 11:31 ` Robin Murphy 2018-02-07 11:31 ` Robin Murphy 2018-02-07 16:53 ` Suzuki K Poulose 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-01-31 18:27 ` Suzuki K Poulose 2018-02-07 10:38 ` Dave Martin 2018-02-07 10:38 ` Dave Martin 2018-02-07 16:56 ` Suzuki K Poulose 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-01-31 18:27 ` Suzuki K Poulose 2018-02-07 10:38 ` Dave Martin 2018-02-07 10:38 ` Dave Martin 2018-02-07 17:01 ` Suzuki K Poulose 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-01-31 18:27 ` Suzuki K Poulose 2018-02-07 10:38 ` Dave Martin 2018-02-07 10:38 ` Dave Martin 2018-02-08 12:10 ` Suzuki K Poulose 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 ` 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 12:12 ` Suzuki K Poulose 2018-02-08 16:10 ` [PATCH 1/2] arm64: capabilities: Allow flexibility in scope Dave Martin 2018-02-08 16:10 ` Dave Martin 2018-02-08 16:31 ` Suzuki K Poulose 2018-02-08 16:31 ` Suzuki K Poulose 2018-02-08 17:32 ` Dave Martin 2018-02-08 17:32 ` Dave Martin 2018-02-09 12:16 ` Suzuki K Poulose 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 ` 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 ` 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 ` 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:16 ` Suzuki K Poulose 2018-02-09 12:19 ` 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-02-09 14:21 ` Dave Martin 2018-01-31 18:27 ` [PATCH v2 09/20] arm64: capabilities: Introduce weak features based on local CPU Suzuki K Poulose 2018-01-31 18:27 ` Suzuki K Poulose 2018-02-07 10:38 ` Dave Martin 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-01-31 18:27 ` Suzuki K Poulose 2018-02-07 10:38 ` Dave Martin 2018-02-07 10:38 ` Dave Martin 2018-02-07 18:15 ` Suzuki K Poulose 2018-02-07 18:15 ` Suzuki K Poulose 2018-02-08 11:05 ` Dave Martin 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-01-31 18:27 ` Suzuki K Poulose 2018-02-07 10:38 ` Dave Martin 2018-02-07 10:38 ` Dave Martin 2018-02-07 18:34 ` Suzuki K Poulose 2018-02-07 18:34 ` Suzuki K Poulose 2018-02-08 11:35 ` Dave Martin 2018-02-08 11:35 ` Dave Martin 2018-02-08 11:43 ` Suzuki K Poulose 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-01-31 18:27 ` Suzuki K Poulose 2018-02-07 10:39 ` Dave Martin 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-01-31 18:28 ` Suzuki K Poulose 2018-02-07 10:39 ` Dave Martin 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-01-31 18:28 ` Suzuki K Poulose 2018-02-07 10:39 ` Dave Martin 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-01-31 18:28 ` Suzuki K Poulose 2018-02-07 10:39 ` Dave Martin 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-01-31 18:28 ` Suzuki K Poulose 2018-02-07 10:39 ` Dave Martin 2018-02-07 10:39 ` Dave Martin 2018-02-08 10:53 ` Suzuki K Poulose 2018-02-08 10:53 ` Suzuki K Poulose 2018-02-08 12:01 ` Dave Martin 2018-02-08 12:01 ` Dave Martin 2018-02-08 12:32 ` Robin Murphy 2018-02-08 12:32 ` Robin Murphy 2018-02-09 10:05 ` Dave Martin 2018-02-09 10:05 ` Dave Martin 2018-02-08 12:04 ` Dave Martin 2018-02-08 12:04 ` Dave Martin 2018-02-08 12:05 ` Suzuki K Poulose 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-01-31 18:28 ` Suzuki K Poulose 2018-02-07 10:39 ` Dave Martin 2018-02-07 10:39 ` Dave Martin 2018-02-08 12:19 ` Suzuki K Poulose 2018-02-08 12:19 ` Suzuki K Poulose 2018-02-08 12:26 ` Marc Zyngier 2018-02-08 12:26 ` Marc Zyngier 2018-02-08 16:58 ` Suzuki K Poulose 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-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-01-31 18:28 ` Suzuki K Poulose 2018-02-07 10:39 ` Dave Martin 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-01-31 18:28 ` Suzuki K Poulose 2018-02-07 10:40 ` Dave Martin 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-01-31 18:28 ` Suzuki K Poulose 2018-02-07 10:40 ` Dave Martin 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=20180207103746.GT5862@e103592.cambridge.arm.com \ --to=dave.martin@arm.com \ --cc=ard.biesheuvel@linaro.org \ --cc=catalin.marinas@arm.com \ --cc=ckadabi@codeaurora.org \ --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=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: linkBe 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.