From: "Alex Bennée" <alex.bennee@linaro.org>
To: Dave Martin <Dave.Martin@arm.com>
Cc: Christoffer Dall <cdall@kernel.org>,
Ard Biesheuvel <ard.biesheuvel@linaro.org>,
Marc Zyngier <marc.zyngier@arm.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>,
kvmarm@lists.cs.columbia.edu,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v10 13/18] arm64/sve: Move sve_pffr() to fpsimd.h and make inline
Date: Thu, 24 May 2018 11:20:59 +0100 [thread overview]
Message-ID: <8736yhtkvo.fsf@linaro.org> (raw)
In-Reply-To: <1527005119-6842-14-git-send-email-Dave.Martin@arm.com>
Dave Martin <Dave.Martin@arm.com> writes:
> In order to make sve_save_state()/sve_load_state() more easily
> reusable and to get rid of a potential branch on context switch
> critical paths, this patch makes sve_pffr() inline and moves it to
> fpsimd.h.
>
> <asm/processor.h> must be included in fpsimd.h in order to make
> this work, and this creates an #include cycle that is tricky to
> avoid without modifying core code, due to the way the PR_SVE_*()
> prctl helpers are included in the core prctl implementation.
>
> Instead of breaking the cycle, this patch defers inclusion of
> <asm/fpsimd.h> in <asm/processor.h> until the point where it is
> actually needed: i.e., immediately before the prctl definitions.
>
> No functional change.
>
> Signed-off-by: Dave Martin <Dave.Martin@arm.com>
> Acked-by: Catalin Marinas <catalin.marinas@arm.com>
> Acked-by: Marc Zyngier <marc.zyngier@arm.com>
> ---
> arch/arm64/include/asm/fpsimd.h | 13 +++++++++++++
> arch/arm64/include/asm/processor.h | 3 ++-
> arch/arm64/kernel/fpsimd.c | 12 ------------
> 3 files changed, 15 insertions(+), 13 deletions(-)
>
> diff --git a/arch/arm64/include/asm/fpsimd.h b/arch/arm64/include/asm/fpsimd.h
> index fb60b22..fa92747 100644
> --- a/arch/arm64/include/asm/fpsimd.h
> +++ b/arch/arm64/include/asm/fpsimd.h
> @@ -18,6 +18,8 @@
>
> #include <asm/ptrace.h>
> #include <asm/errno.h>
> +#include <asm/processor.h>
> +#include <asm/sigcontext.h>
>
> #ifndef __ASSEMBLY__
>
> @@ -61,6 +63,17 @@ extern void sve_flush_cpu_state(void);
> /* Maximum VL that SVE VL-agnostic software can transparently support */
> #define SVE_VL_ARCH_MAX 0x100
>
> +/* Offset of FFR in the SVE register dump */
> +static inline size_t sve_ffr_offset(int vl)
> +{
> + return SVE_SIG_FFR_OFFSET(sve_vq_from_vl(vl)) - SVE_SIG_REGS_OFFSET;
> +}
> +
> +static inline void *sve_pffr(struct thread_struct *thread)
> +{
> + return (char *)thread->sve_state + sve_ffr_offset(thread->sve_vl);
> +}
> +
> 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);
> diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
> index f902b6d..ebaadb1 100644
> --- a/arch/arm64/include/asm/processor.h
> +++ b/arch/arm64/include/asm/processor.h
> @@ -40,7 +40,6 @@
>
> #include <asm/alternative.h>
> #include <asm/cpufeature.h>
> -#include <asm/fpsimd.h>
> #include <asm/hw_breakpoint.h>
> #include <asm/lse.h>
> #include <asm/pgtable-hwdef.h>
> @@ -245,6 +244,8 @@ 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);
>
> +#include <asm/fpsimd.h>
> +
You really need a one-liner comment to note why the include is in a
funny place to save someone just moving it back and then getting really
confused. Maybe:
/* included just in time to avoid circular inclusion issues */
#include <asm/fpsimd.h>
It still seems weird to me though :-/
Otherwise:
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
--
Alex Bennée
_______________________________________________
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: alex.bennee@linaro.org (Alex Bennée)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v10 13/18] arm64/sve: Move sve_pffr() to fpsimd.h and make inline
Date: Thu, 24 May 2018 11:20:59 +0100 [thread overview]
Message-ID: <8736yhtkvo.fsf@linaro.org> (raw)
In-Reply-To: <1527005119-6842-14-git-send-email-Dave.Martin@arm.com>
Dave Martin <Dave.Martin@arm.com> writes:
> In order to make sve_save_state()/sve_load_state() more easily
> reusable and to get rid of a potential branch on context switch
> critical paths, this patch makes sve_pffr() inline and moves it to
> fpsimd.h.
>
> <asm/processor.h> must be included in fpsimd.h in order to make
> this work, and this creates an #include cycle that is tricky to
> avoid without modifying core code, due to the way the PR_SVE_*()
> prctl helpers are included in the core prctl implementation.
>
> Instead of breaking the cycle, this patch defers inclusion of
> <asm/fpsimd.h> in <asm/processor.h> until the point where it is
> actually needed: i.e., immediately before the prctl definitions.
>
> No functional change.
>
> Signed-off-by: Dave Martin <Dave.Martin@arm.com>
> Acked-by: Catalin Marinas <catalin.marinas@arm.com>
> Acked-by: Marc Zyngier <marc.zyngier@arm.com>
> ---
> arch/arm64/include/asm/fpsimd.h | 13 +++++++++++++
> arch/arm64/include/asm/processor.h | 3 ++-
> arch/arm64/kernel/fpsimd.c | 12 ------------
> 3 files changed, 15 insertions(+), 13 deletions(-)
>
> diff --git a/arch/arm64/include/asm/fpsimd.h b/arch/arm64/include/asm/fpsimd.h
> index fb60b22..fa92747 100644
> --- a/arch/arm64/include/asm/fpsimd.h
> +++ b/arch/arm64/include/asm/fpsimd.h
> @@ -18,6 +18,8 @@
>
> #include <asm/ptrace.h>
> #include <asm/errno.h>
> +#include <asm/processor.h>
> +#include <asm/sigcontext.h>
>
> #ifndef __ASSEMBLY__
>
> @@ -61,6 +63,17 @@ extern void sve_flush_cpu_state(void);
> /* Maximum VL that SVE VL-agnostic software can transparently support */
> #define SVE_VL_ARCH_MAX 0x100
>
> +/* Offset of FFR in the SVE register dump */
> +static inline size_t sve_ffr_offset(int vl)
> +{
> + return SVE_SIG_FFR_OFFSET(sve_vq_from_vl(vl)) - SVE_SIG_REGS_OFFSET;
> +}
> +
> +static inline void *sve_pffr(struct thread_struct *thread)
> +{
> + return (char *)thread->sve_state + sve_ffr_offset(thread->sve_vl);
> +}
> +
> 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);
> diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
> index f902b6d..ebaadb1 100644
> --- a/arch/arm64/include/asm/processor.h
> +++ b/arch/arm64/include/asm/processor.h
> @@ -40,7 +40,6 @@
>
> #include <asm/alternative.h>
> #include <asm/cpufeature.h>
> -#include <asm/fpsimd.h>
> #include <asm/hw_breakpoint.h>
> #include <asm/lse.h>
> #include <asm/pgtable-hwdef.h>
> @@ -245,6 +244,8 @@ 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);
>
> +#include <asm/fpsimd.h>
> +
You really need a one-liner comment to note why the include is in a
funny place to save someone just moving it back and then getting really
confused. Maybe:
/* included just in time to avoid circular inclusion issues */
#include <asm/fpsimd.h>
It still seems weird to me though :-/
Otherwise:
Reviewed-by: Alex Benn?e <alex.bennee@linaro.org>
--
Alex Benn?e
next prev parent reply other threads:[~2018-05-24 10:20 UTC|newest]
Thread overview: 138+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-22 16:05 [PATCH v10 00/18] KVM: arm64: Optimise FPSIMD context switching Dave Martin
2018-05-22 16:05 ` Dave Martin
2018-05-22 16:05 ` [PATCH v10 01/18] arm64: fpsimd: Fix TIF_FOREIGN_FPSTATE after invalidating cpu regs Dave Martin
2018-05-22 16:05 ` Dave Martin
2018-05-23 11:33 ` Christoffer Dall
2018-05-23 11:33 ` Christoffer Dall
2018-05-23 13:44 ` Alex Bennée
2018-05-23 13:44 ` Alex Bennée
2018-05-23 13:46 ` Catalin Marinas
2018-05-23 13:46 ` Catalin Marinas
2018-05-22 16:05 ` [PATCH v10 02/18] thread_info: Add update_thread_flag() helpers Dave Martin
2018-05-22 16:05 ` Dave Martin
2018-05-23 13:46 ` Alex Bennée
2018-05-23 13:46 ` Alex Bennée
2018-05-23 13:57 ` Dave Martin
2018-05-23 13:57 ` Dave Martin
2018-05-23 14:35 ` Alex Bennée
2018-05-23 14:35 ` Alex Bennée
2018-05-22 16:05 ` [PATCH v10 03/18] arm64: Use update{,_tsk}_thread_flag() Dave Martin
2018-05-22 16:05 ` Dave Martin
2018-05-23 13:48 ` Alex Bennée
2018-05-23 13:48 ` Alex Bennée
2018-05-22 16:05 ` [PATCH v10 04/18] KVM: arm/arm64: Introduce kvm_arch_vcpu_run_pid_change Dave Martin
2018-05-22 16:05 ` Dave Martin
2018-05-23 14:34 ` Alex Bennée
2018-05-23 14:34 ` Alex Bennée
2018-05-23 14:40 ` Dave Martin
2018-05-23 14:40 ` Dave Martin
2018-05-24 8:11 ` Christoffer Dall
2018-05-24 8:11 ` Christoffer Dall
2018-05-24 9:18 ` Alex Bennée
2018-05-24 9:18 ` Alex Bennée
2018-05-24 10:04 ` Dave Martin
2018-05-24 10:04 ` Dave Martin
2018-05-22 16:05 ` [PATCH v10 05/18] KVM: arm64: Convert lazy FPSIMD context switch trap to C Dave Martin
2018-05-22 16:05 ` Dave Martin
2018-05-23 19:35 ` Alex Bennée
2018-05-23 19:35 ` Alex Bennée
2018-05-24 8:12 ` Christoffer Dall
2018-05-24 8:12 ` Christoffer Dall
2018-05-24 8:54 ` Dave Martin
2018-05-24 8:54 ` Dave Martin
2018-05-24 9:14 ` Alex Bennée
2018-05-24 9:14 ` Alex Bennée
2018-05-22 16:05 ` [PATCH v10 06/18] arm64: fpsimd: Generalise context saving for non-task contexts Dave Martin
2018-05-22 16:05 ` Dave Martin
2018-05-23 20:15 ` Alex Bennée
2018-05-23 20:15 ` Alex Bennée
2018-05-24 9:03 ` Dave Martin
2018-05-24 9:03 ` Dave Martin
2018-05-24 9:41 ` Alex Bennée
2018-05-24 9:41 ` Alex Bennée
2018-05-22 16:05 ` [PATCH v10 07/18] arm64: fpsimd: Eliminate task->mm checks Dave Martin
2018-05-22 16:05 ` Dave Martin
2018-05-23 11:48 ` Christoffer Dall
2018-05-23 11:48 ` Christoffer Dall
2018-05-23 13:31 ` Dave Martin
2018-05-23 13:31 ` Dave Martin
2018-05-23 14:56 ` Catalin Marinas
2018-05-23 14:56 ` Catalin Marinas
2018-05-23 15:03 ` Dave Martin
2018-05-23 15:03 ` Dave Martin
2018-05-23 16:42 ` Catalin Marinas
2018-05-23 16:42 ` Catalin Marinas
2018-05-24 8:33 ` Christoffer Dall
2018-05-24 8:33 ` Christoffer Dall
2018-05-24 9:16 ` Alex Bennée
2018-05-24 9:16 ` Alex Bennée
2018-05-24 9:50 ` Dave Martin
2018-05-24 9:50 ` Dave Martin
2018-05-24 10:06 ` Christoffer Dall
2018-05-24 10:06 ` Christoffer Dall
2018-05-24 14:37 ` Dave Martin
2018-05-24 14:37 ` Dave Martin
2018-05-25 9:00 ` Christoffer Dall
2018-05-25 9:00 ` Christoffer Dall
2018-05-25 9:45 ` Dave Martin
2018-05-25 9:45 ` Dave Martin
2018-05-25 11:28 ` Christoffer Dall
2018-05-25 11:28 ` Christoffer Dall
2018-05-24 9:19 ` Alex Bennée
2018-05-24 9:19 ` Alex Bennée
2018-05-22 16:05 ` [PATCH v10 08/18] arm64/sve: Refactor user SVE trap maintenance for external use Dave Martin
2018-05-22 16:05 ` Dave Martin
2018-05-23 20:16 ` Alex Bennée
2018-05-23 20:16 ` Alex Bennée
2018-05-22 16:05 ` [PATCH v10 09/18] KVM: arm64: Repurpose vcpu_arch.debug_flags for general-purpose flags Dave Martin
2018-05-22 16:05 ` Dave Martin
2018-05-24 9:21 ` Alex Bennée
2018-05-24 9:21 ` Alex Bennée
2018-05-22 16:05 ` [PATCH v10 10/18] KVM: arm64: Optimise FPSIMD handling to reduce guest/host thrashing Dave Martin
2018-05-22 16:05 ` Dave Martin
2018-05-24 10:09 ` Alex Bennée
2018-05-24 10:09 ` Alex Bennée
2018-05-24 10:18 ` Dave Martin
2018-05-24 10:18 ` Dave Martin
2018-05-22 16:05 ` [PATCH v10 11/18] arm64/sve: Move read_zcr_features() out of cpufeature.h Dave Martin
2018-05-22 16:05 ` Dave Martin
2018-05-24 10:12 ` Alex Bennée
2018-05-24 10:12 ` Alex Bennée
2018-05-22 16:05 ` [PATCH v10 12/18] arm64/sve: Switch sve_pffr() argument from task to thread Dave Martin
2018-05-22 16:05 ` Dave Martin
2018-05-24 10:12 ` Alex Bennée
2018-05-24 10:12 ` Alex Bennée
2018-05-22 16:05 ` [PATCH v10 13/18] arm64/sve: Move sve_pffr() to fpsimd.h and make inline Dave Martin
2018-05-22 16:05 ` Dave Martin
2018-05-24 10:20 ` Alex Bennée [this message]
2018-05-24 10:20 ` Alex Bennée
2018-05-24 11:22 ` Dave Martin
2018-05-24 11:22 ` Dave Martin
2018-05-22 16:05 ` [PATCH v10 14/18] KVM: arm64: Save host SVE context as appropriate Dave Martin
2018-05-22 16:05 ` Dave Martin
2018-05-23 14:59 ` Catalin Marinas
2018-05-23 14:59 ` Catalin Marinas
2018-05-24 9:11 ` Christoffer Dall
2018-05-24 9:11 ` Christoffer Dall
2018-05-24 14:49 ` Alex Bennée
2018-05-24 14:49 ` Alex Bennée
2018-05-22 16:05 ` [PATCH v10 15/18] KVM: arm64: Remove eager host SVE state saving Dave Martin
2018-05-22 16:05 ` Dave Martin
2018-05-24 14:54 ` Alex Bennée
2018-05-24 14:54 ` Alex Bennée
2018-05-22 16:05 ` [PATCH v10 16/18] KVM: arm64: Remove redundant *exit_code changes in fpsimd_guest_exit() Dave Martin
2018-05-22 16:05 ` Dave Martin
2018-05-24 9:11 ` Christoffer Dall
2018-05-24 9:11 ` Christoffer Dall
2018-05-24 15:02 ` Alex Bennée
2018-05-24 15:02 ` Alex Bennée
2018-05-22 16:05 ` [PATCH v10 17/18] KVM: arm64: Fold redundant exit code checks out of fixup_guest_exit() Dave Martin
2018-05-22 16:05 ` Dave Martin
2018-05-24 9:12 ` Christoffer Dall
2018-05-24 9:12 ` Christoffer Dall
2018-05-24 15:06 ` Alex Bennée
2018-05-24 15:06 ` Alex Bennée
2018-05-22 16:05 ` [PATCH v10 18/18] KVM: arm64: Invoke FPSIMD context switch trap from C Dave Martin
2018-05-22 16:05 ` Dave Martin
2018-05-24 15:09 ` Alex Bennée
2018-05-24 15:09 ` Alex Bennée
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=8736yhtkvo.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=Dave.Martin@arm.com \
--cc=ard.biesheuvel@linaro.org \
--cc=catalin.marinas@arm.com \
--cc=cdall@kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=marc.zyngier@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 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.