From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: Jiri Slaby <jslaby@suse.cz>
Cc: "mingo@redhat.com" <mingo@redhat.com>,
"tglx@linutronix.de" <tglx@linutronix.de>,
"hpa@zytor.com" <hpa@zytor.com>,
"x86@kernel.org" <x86@kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Matt Fleming <matt@codeblueprint.co.uk>,
"linux-efi@vger.kernel.org" <linux-efi@vger.kernel.org>,
xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v4 19/27] x86: assembly, make some functions local
Date: Mon, 2 Oct 2017 13:48:26 +0100 [thread overview]
Message-ID: <CAKv+Gu9C88ToAx+8KcGacUECo7ExnTTBmibEjpB2WkfFvjoZvw@mail.gmail.com> (raw)
In-Reply-To: <20171002091246.28432-19-jslaby@suse.cz>
On 2 October 2017 at 10:12, Jiri Slaby <jslaby@suse.cz> wrote:
> There is a couple of assembly functions, which are invoked only locally
> in the file they are defined. In C, we mark them "static". In assembly,
> annotate them using SYM_{FUNC,CODE}_START_LOCAL (and switch their
> ENDPROC to SYM_{FUNC,CODE}_END too). Whether FUNC or CODE depends on
> ENDPROC/END for a particular function (C or non-C).
>
I wasn't cc'ed on the cover letter, so I am missing the rationale of
replacing ENTRY/ENDPROC with other macros.
> Signed-off-by: Jiri Slaby <jslaby@suse.cz>
> Cc: "H. Peter Anvin" <hpa@zytor.com>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: x86@kernel.org
> Cc: Matt Fleming <matt@codeblueprint.co.uk>
> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Cc: linux-efi@vger.kernel.org
> Cc: xen-devel@lists.xenproject.org
> ---
> arch/x86/boot/compressed/efi_thunk_64.S | 8 ++++----
> arch/x86/entry/entry_64.S | 25 +++++++++++++------------
> arch/x86/lib/copy_page_64.S | 4 ++--
> arch/x86/lib/memcpy_64.S | 12 ++++++------
> arch/x86/lib/memset_64.S | 8 ++++----
> arch/x86/platform/efi/efi_thunk_64.S | 12 ++++++------
> arch/x86/xen/xen-pvh.S | 4 ++--
> 7 files changed, 37 insertions(+), 36 deletions(-)
>
> diff --git a/arch/x86/boot/compressed/efi_thunk_64.S b/arch/x86/boot/compressed/efi_thunk_64.S
> index 86528f120962..c072711d8d62 100644
> --- a/arch/x86/boot/compressed/efi_thunk_64.S
> +++ b/arch/x86/boot/compressed/efi_thunk_64.S
> @@ -98,12 +98,12 @@ ENTRY(efi64_thunk)
> ret
> ENDPROC(efi64_thunk)
>
> -ENTRY(efi_exit32)
> +SYM_FUNC_START_LOCAL(efi_exit32)
> movq func_rt_ptr(%rip), %rax
> push %rax
> mov %rdi, %rax
> ret
> -ENDPROC(efi_exit32)
> +SYM_FUNC_END(efi_exit32)
>
> .code32
> /*
> @@ -111,7 +111,7 @@ ENDPROC(efi_exit32)
> *
> * The stack should represent the 32-bit calling convention.
> */
> -ENTRY(efi_enter32)
> +SYM_FUNC_START_LOCAL(efi_enter32)
> movl $__KERNEL_DS, %eax
> movl %eax, %ds
> movl %eax, %es
> @@ -171,7 +171,7 @@ ENTRY(efi_enter32)
> btsl $X86_CR0_PG_BIT, %eax
> movl %eax, %cr0
> lret
> -ENDPROC(efi_enter32)
> +SYM_FUNC_END(efi_enter32)
>
> .data
> .balign 8
> diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
> index 509504db0e2a..ff4964dac2dc 100644
> --- a/arch/x86/entry/entry_64.S
> +++ b/arch/x86/entry/entry_64.S
> @@ -324,7 +324,7 @@ opportunistic_sysret_failed:
> jmp restore_c_regs_and_iret
> END(entry_SYSCALL_64)
>
> -ENTRY(stub_ptregs_64)
> +SYM_CODE_START_LOCAL(stub_ptregs_64)
> /*
> * Syscalls marked as needing ptregs land here.
> * If we are on the fast path, we need to save the extra regs,
> @@ -349,7 +349,7 @@ ENTRY(stub_ptregs_64)
>
> 1:
> jmp *%rax /* Called from C */
> -END(stub_ptregs_64)
> +SYM_CODE_END(stub_ptregs_64)
>
> .macro ptregs_stub func
> ENTRY(ptregs_\func)
> @@ -976,7 +976,8 @@ idtentry hypervisor_callback xen_do_hypervisor_callback has_error_code=0
> * existing activation in its critical region -- if so, we pop the current
> * activation and restart the handler using the previous one.
> */
> -ENTRY(xen_do_hypervisor_callback) /* do_hypervisor_callback(struct *pt_regs) */
> +/* do_hypervisor_callback(struct *pt_regs) */
> +SYM_CODE_START_LOCAL(xen_do_hypervisor_callback)
>
> /*
> * Since we don't modify %rdi, evtchn_do_upall(struct *pt_regs) will
> @@ -994,7 +995,7 @@ ENTRY(xen_do_hypervisor_callback) /* do_hypervisor_callback(struct *pt_regs) */
> call xen_maybe_preempt_hcall
> #endif
> jmp error_exit
> -END(xen_do_hypervisor_callback)
> +SYM_CODE_END(xen_do_hypervisor_callback)
>
> /*
> * Hypervisor uses this for application faults while it executes.
> @@ -1078,7 +1079,7 @@ idtentry machine_check has_error_code=0 paranoid=1 do_sym=*machine_check_vec
> * Use slow, but surefire "are we in kernel?" check.
> * Return: ebx=0: need swapgs on exit, ebx=1: otherwise
> */
> -ENTRY(paranoid_entry)
> +SYM_CODE_START_LOCAL(paranoid_entry)
> UNWIND_HINT_FUNC
> cld
> SAVE_C_REGS 8
> @@ -1092,7 +1093,7 @@ ENTRY(paranoid_entry)
> SWAPGS
> xorl %ebx, %ebx
> 1: ret
> -END(paranoid_entry)
> +SYM_CODE_END(paranoid_entry)
>
> /*
> * "Paranoid" exit path from exception stack. This is invoked
> @@ -1106,7 +1107,7 @@ END(paranoid_entry)
> *
> * On entry, ebx is "no swapgs" flag (1: don't need swapgs, 0: need it)
> */
> -ENTRY(paranoid_exit)
> +SYM_CODE_START_LOCAL(paranoid_exit)
> UNWIND_HINT_REGS
> DISABLE_INTERRUPTS(CLBR_ANY)
> TRACE_IRQS_OFF_DEBUG
> @@ -1122,13 +1123,13 @@ paranoid_exit_restore:
> RESTORE_C_REGS
> REMOVE_PT_GPREGS_FROM_STACK 8
> INTERRUPT_RETURN
> -END(paranoid_exit)
> +SYM_CODE_END(paranoid_exit)
>
> /*
> * Save all registers in pt_regs, and switch gs if needed.
> * Return: EBX=0: came from user mode; EBX=1: otherwise
> */
> -ENTRY(error_entry)
> +SYM_CODE_START_LOCAL(error_entry)
> UNWIND_HINT_FUNC
> cld
> SAVE_C_REGS 8
> @@ -1205,7 +1206,7 @@ ENTRY(error_entry)
> mov %rax, %rsp
> decl %ebx
> jmp .Lerror_entry_from_usermode_after_swapgs
> -END(error_entry)
> +SYM_CODE_END(error_entry)
>
>
> /*
> @@ -1213,14 +1214,14 @@ END(error_entry)
> * 1: already in kernel mode, don't need SWAPGS
> * 0: user gsbase is loaded, we need SWAPGS and standard preparation for return to usermode
> */
> -ENTRY(error_exit)
> +SYM_CODE_START_LOCAL(error_exit)
> UNWIND_HINT_REGS
> DISABLE_INTERRUPTS(CLBR_ANY)
> TRACE_IRQS_OFF
> testl %ebx, %ebx
> jnz retint_kernel
> jmp retint_user
> -END(error_exit)
> +SYM_CODE_END(error_exit)
>
> /* Runs on exception stack */
> /* XXX: broken on Xen PV */
> diff --git a/arch/x86/lib/copy_page_64.S b/arch/x86/lib/copy_page_64.S
> index e8508156c99d..e1ee50bc161a 100644
> --- a/arch/x86/lib/copy_page_64.S
> +++ b/arch/x86/lib/copy_page_64.S
> @@ -20,7 +20,7 @@ ENTRY(copy_page)
> ENDPROC(copy_page)
> EXPORT_SYMBOL(copy_page)
>
> -ENTRY(copy_page_regs)
> +SYM_FUNC_START_LOCAL(copy_page_regs)
> subq $2*8, %rsp
> movq %rbx, (%rsp)
> movq %r12, 1*8(%rsp)
> @@ -85,4 +85,4 @@ ENTRY(copy_page_regs)
> movq 1*8(%rsp), %r12
> addq $2*8, %rsp
> ret
> -ENDPROC(copy_page_regs)
> +SYM_FUNC_END(copy_page_regs)
> diff --git a/arch/x86/lib/memcpy_64.S b/arch/x86/lib/memcpy_64.S
> index 4911b1c61aa8..728703c47d58 100644
> --- a/arch/x86/lib/memcpy_64.S
> +++ b/arch/x86/lib/memcpy_64.S
> @@ -27,7 +27,7 @@
> * rax original destination
> */
> SYM_FUNC_START_ALIAS(__memcpy)
> -ENTRY(memcpy)
> +SYM_FUNC_START_LOCAL(memcpy)
> ALTERNATIVE_2 "jmp memcpy_orig", "", X86_FEATURE_REP_GOOD, \
> "jmp memcpy_erms", X86_FEATURE_ERMS
>
> @@ -39,7 +39,7 @@ ENTRY(memcpy)
> movl %edx, %ecx
> rep movsb
> ret
> -ENDPROC(memcpy)
> +SYM_FUNC_END(memcpy)
> SYM_FUNC_END_ALIAS(__memcpy)
> EXPORT_SYMBOL(memcpy)
> EXPORT_SYMBOL(__memcpy)
> @@ -48,14 +48,14 @@ EXPORT_SYMBOL(__memcpy)
> * memcpy_erms() - enhanced fast string memcpy. This is faster and
> * simpler than memcpy. Use memcpy_erms when possible.
> */
> -ENTRY(memcpy_erms)
> +SYM_FUNC_START_LOCAL(memcpy_erms)
> movq %rdi, %rax
> movq %rdx, %rcx
> rep movsb
> ret
> -ENDPROC(memcpy_erms)
> +SYM_FUNC_END(memcpy_erms)
>
> -ENTRY(memcpy_orig)
> +SYM_FUNC_START_LOCAL(memcpy_orig)
> movq %rdi, %rax
>
> cmpq $0x20, %rdx
> @@ -180,7 +180,7 @@ ENTRY(memcpy_orig)
>
> .Lend:
> retq
> -ENDPROC(memcpy_orig)
> +SYM_FUNC_END(memcpy_orig)
>
> #ifndef CONFIG_UML
> /*
> diff --git a/arch/x86/lib/memset_64.S b/arch/x86/lib/memset_64.S
> index 0d3a1d341e60..c63ae9987612 100644
> --- a/arch/x86/lib/memset_64.S
> +++ b/arch/x86/lib/memset_64.S
> @@ -58,16 +58,16 @@ EXPORT_SYMBOL(__memset)
> *
> * rax original destination
> */
> -ENTRY(memset_erms)
> +SYM_FUNC_START_LOCAL(memset_erms)
> movq %rdi,%r9
> movb %sil,%al
> movq %rdx,%rcx
> rep stosb
> movq %r9,%rax
> ret
> -ENDPROC(memset_erms)
> +SYM_FUNC_END(memset_erms)
>
> -ENTRY(memset_orig)
> +SYM_FUNC_START_LOCAL(memset_orig)
> movq %rdi,%r10
>
> /* expand byte value */
> @@ -138,4 +138,4 @@ ENTRY(memset_orig)
> subq %r8,%rdx
> jmp .Lafter_bad_alignment
> .Lfinal:
> -ENDPROC(memset_orig)
> +SYM_FUNC_END(memset_orig)
> diff --git a/arch/x86/platform/efi/efi_thunk_64.S b/arch/x86/platform/efi/efi_thunk_64.S
> index ff85d28c50f2..d18697df1fe9 100644
> --- a/arch/x86/platform/efi/efi_thunk_64.S
> +++ b/arch/x86/platform/efi/efi_thunk_64.S
> @@ -66,7 +66,7 @@ ENDPROC(efi64_thunk)
> *
> * This function must be invoked with a 1:1 mapped stack.
> */
> -ENTRY(__efi64_thunk)
> +SYM_FUNC_START_LOCAL(__efi64_thunk)
> movl %ds, %eax
> push %rax
> movl %es, %eax
> @@ -113,14 +113,14 @@ ENTRY(__efi64_thunk)
> or %rcx, %rax
> 1:
> ret
> -ENDPROC(__efi64_thunk)
> +SYM_FUNC_END(__efi64_thunk)
>
> -ENTRY(efi_exit32)
> +SYM_FUNC_START_LOCAL(efi_exit32)
> movq func_rt_ptr(%rip), %rax
> push %rax
> mov %rdi, %rax
> ret
> -ENDPROC(efi_exit32)
> +SYM_FUNC_END(efi_exit32)
>
> .code32
> /*
> @@ -128,7 +128,7 @@ ENDPROC(efi_exit32)
> *
> * The stack should represent the 32-bit calling convention.
> */
> -ENTRY(efi_enter32)
> +SYM_FUNC_START_LOCAL(efi_enter32)
> movl $__KERNEL_DS, %eax
> movl %eax, %ds
> movl %eax, %es
> @@ -144,7 +144,7 @@ ENTRY(efi_enter32)
> pushl %eax
>
> lret
> -ENDPROC(efi_enter32)
> +SYM_FUNC_END(efi_enter32)
>
> .data
> .balign 8
> diff --git a/arch/x86/xen/xen-pvh.S b/arch/x86/xen/xen-pvh.S
> index 1b78837bad06..ba5aad3b3d6a 100644
> --- a/arch/x86/xen/xen-pvh.S
> +++ b/arch/x86/xen/xen-pvh.S
> @@ -54,7 +54,7 @@
> * charge of setting up it's own stack, GDT and IDT.
> */
>
> -ENTRY(pvh_start_xen)
> +SYM_CODE_START_LOCAL(pvh_start_xen)
> cld
>
> lgdt (_pa(gdt))
> @@ -133,7 +133,7 @@ ENTRY(pvh_start_xen)
>
> ljmp $__BOOT_CS, $_pa(startup_32)
> #endif
> -END(pvh_start_xen)
> +SYM_CODE_END(pvh_start_xen)
>
> .section ".init.data","aw"
> .balign 8
> --
> 2.14.2
>
next prev parent reply other threads:[~2017-10-02 12:48 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-02 9:12 [PATCH v4 01/27] linkage: new macros for assembler symbols Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 02/27] x86: assembly, use DATA_SIMPLE for data Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 03/27] x86: assembly, annotate relocate_kernel Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 04/27] x86: entry, annotate THUNKs Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 05/27] x86: assembly, annotate local pseudo-functions Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 06/27] x86: crypto, annotate local functions Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 07/27] x86: boot, " Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 08/27] x86: assembly, annotate aliases Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 09/27] x86: entry, annotate interrupt symbols properly Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 10/27] x86: head, annotate data appropriatelly Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 11/27] x86: boot, " Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 12/27] x86: um, " Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 13/27] x86: xen-pvh, " Jiri Slaby
2017-10-02 16:49 ` Boris Ostrovsky
2017-10-02 9:12 ` [PATCH v4 14/27] x86: purgatory, start using annotations Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 15/27] x86: assembly, do not annotate functions by GLOBAL Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 16/27] x86: assembly, use SYM_CODE_INNER_LABEL_NOALIGN instead of GLOBAL Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 17/27] x86: realmode, use SYM_DATA_* " Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 18/27] x86: assembly, remove GLOBAL macro Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 19/27] x86: assembly, make some functions local Jiri Slaby
2017-10-02 12:48 ` Ard Biesheuvel [this message]
2017-10-04 7:22 ` Jiri Slaby
2017-10-04 7:33 ` Ard Biesheuvel
2017-10-06 12:53 ` Jiri Slaby
2017-10-06 13:21 ` Mark Rutland
2017-10-25 14:21 ` Jiri Slaby
2017-10-25 14:46 ` Mark Rutland
2017-10-06 14:01 ` Ard Biesheuvel
2017-10-25 14:18 ` Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 20/27] x86: ftrace, mark function_hook as function Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 21/27] x86_64: assembly, add ENDs to some functions and relabel with SYM_CODE_* Jiri Slaby
2017-10-02 16:59 ` Boris Ostrovsky
2017-10-02 9:12 ` [PATCH v4 22/27] x86_64: assembly, change all ENTRY+END to SYM_CODE_* Jiri Slaby
2017-10-02 18:13 ` Boris Ostrovsky
2017-10-02 9:12 ` [PATCH v4 23/27] x86_64: assembly, change all ENTRY+ENDPROC to SYM_FUNC_* Jiri Slaby
2017-10-02 12:30 ` Rafael J. Wysocki
2017-10-02 18:16 ` Boris Ostrovsky
2017-10-02 9:12 ` [PATCH v4 24/27] x86_32: assembly, add ENDs to some functions and relabel with SYM_CODE_* Jiri Slaby
2017-10-02 18:16 ` Boris Ostrovsky
2017-10-03 0:26 ` Rafael J. Wysocki
2017-10-02 9:12 ` [PATCH v4 25/27] x86_32: assembly, change all ENTRY+END to SYM_CODE_* Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 26/27] x86_32: assembly, change all ENTRY+ENDPROC to SYM_FUNC_* Jiri Slaby
2017-10-02 9:12 ` [PATCH v4 27/27] x86: assembly, replace WEAK uses Jiri Slaby
2017-10-06 15:23 ` [PATCH v4 01/27] linkage: new macros for assembler symbols Josh Poimboeuf
2017-10-25 14:20 ` Jiri Slaby
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=CAKv+Gu9C88ToAx+8KcGacUECo7ExnTTBmibEjpB2WkfFvjoZvw@mail.gmail.com \
--to=ard.biesheuvel@linaro.org \
--cc=hpa@zytor.com \
--cc=jslaby@suse.cz \
--cc=linux-efi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matt@codeblueprint.co.uk \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
--cc=xen-devel@lists.xenproject.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 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®