mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Andi Kleen <andi@firstfloor.org>
To: linux-kernel@vger.kernel.org
Cc: x86@kernel.org, mmarek@suse.cz, linux-kbuild@vger.kernel.org,
	JBeulich@suse.com, akpm@linux-foundation.org,
	Andi Kleen <ak@linux.intel.com>,
	jeremy@goop.org
Subject: [PATCH 53/74] x86, lto, paravirt: Make paravirt thunks global
Date: Sat, 18 Aug 2012 19:56:49 -0700	[thread overview]
Message-ID: <1345345030-22211-54-git-send-email-andi@firstfloor.org> (raw)
In-Reply-To: <1345345030-22211-1-git-send-email-andi@firstfloor.org>

From: Andi Kleen <ak@linux.intel.com>

The paravirt thunks use a hack of using a static reference to a static
function to reference that function from the top level statement.

This assumes that gcc always generates static function names in a specific
format, which is not necessarily true.

Simply make these functions global and asmlinkage. This way the
static __used variables are not needed and everything works.

Changed in paravirt and in all users (Xen and vsmp)

Cc: jeremy@goop.org
Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
 arch/x86/include/asm/paravirt.h |    2 +-
 arch/x86/kernel/vsmp_64.c       |    8 ++++----
 arch/x86/xen/irq.c              |    8 ++++----
 arch/x86/xen/mmu.c              |   16 ++++++++--------
 4 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h
index a0facf3..cc733a6 100644
--- a/arch/x86/include/asm/paravirt.h
+++ b/arch/x86/include/asm/paravirt.h
@@ -804,9 +804,9 @@ static __always_inline void arch_spin_unlock(struct arch_spinlock *lock)
  */
 #define PV_CALLEE_SAVE_REGS_THUNK(func)					\
 	extern typeof(func) __raw_callee_save_##func;			\
-	static void *__##func##__ __used = func;			\
 									\
 	asm(".pushsection .text;"					\
+	    ".globl __raw_callee_save_" #func " ; "			\
 	    "__raw_callee_save_" #func ": "				\
 	    PV_SAVE_ALL_CALLER_REGS					\
 	    "call " #func ";"						\
diff --git a/arch/x86/kernel/vsmp_64.c b/arch/x86/kernel/vsmp_64.c
index 992f890..f393d6d 100644
--- a/arch/x86/kernel/vsmp_64.c
+++ b/arch/x86/kernel/vsmp_64.c
@@ -33,7 +33,7 @@
  * and vice versa.
  */
 
-static unsigned long vsmp_save_fl(void)
+asmlinkage unsigned long vsmp_save_fl(void)
 {
 	unsigned long flags = native_save_fl();
 
@@ -43,7 +43,7 @@ static unsigned long vsmp_save_fl(void)
 }
 PV_CALLEE_SAVE_REGS_THUNK(vsmp_save_fl);
 
-static void vsmp_restore_fl(unsigned long flags)
+asmlinkage void vsmp_restore_fl(unsigned long flags)
 {
 	if (flags & X86_EFLAGS_IF)
 		flags &= ~X86_EFLAGS_AC;
@@ -53,7 +53,7 @@ static void vsmp_restore_fl(unsigned long flags)
 }
 PV_CALLEE_SAVE_REGS_THUNK(vsmp_restore_fl);
 
-static void vsmp_irq_disable(void)
+asmlinkage void vsmp_irq_disable(void)
 {
 	unsigned long flags = native_save_fl();
 
@@ -61,7 +61,7 @@ static void vsmp_irq_disable(void)
 }
 PV_CALLEE_SAVE_REGS_THUNK(vsmp_irq_disable);
 
-static void vsmp_irq_enable(void)
+asmlinkage void vsmp_irq_enable(void)
 {
 	unsigned long flags = native_save_fl();
 
diff --git a/arch/x86/xen/irq.c b/arch/x86/xen/irq.c
index 1573376..3dd8831 100644
--- a/arch/x86/xen/irq.c
+++ b/arch/x86/xen/irq.c
@@ -21,7 +21,7 @@ void xen_force_evtchn_callback(void)
 	(void)HYPERVISOR_xen_version(0, NULL);
 }
 
-static unsigned long xen_save_fl(void)
+asmlinkage unsigned long xen_save_fl(void)
 {
 	struct vcpu_info *vcpu;
 	unsigned long flags;
@@ -39,7 +39,7 @@ static unsigned long xen_save_fl(void)
 }
 PV_CALLEE_SAVE_REGS_THUNK(xen_save_fl);
 
-static void xen_restore_fl(unsigned long flags)
+asmlinkage void xen_restore_fl(unsigned long flags)
 {
 	struct vcpu_info *vcpu;
 
@@ -66,7 +66,7 @@ static void xen_restore_fl(unsigned long flags)
 }
 PV_CALLEE_SAVE_REGS_THUNK(xen_restore_fl);
 
-static void xen_irq_disable(void)
+asmlinkage void xen_irq_disable(void)
 {
 	/* There's a one instruction preempt window here.  We need to
 	   make sure we're don't switch CPUs between getting the vcpu
@@ -77,7 +77,7 @@ static void xen_irq_disable(void)
 }
 PV_CALLEE_SAVE_REGS_THUNK(xen_irq_disable);
 
-static void xen_irq_enable(void)
+asmlinkage void xen_irq_enable(void)
 {
 	struct vcpu_info *vcpu;
 
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
index b65a761..9f82443 100644
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -429,7 +429,7 @@ static pteval_t iomap_pte(pteval_t val)
 	return val;
 }
 
-static pteval_t xen_pte_val(pte_t pte)
+asmlinkage pteval_t xen_pte_val(pte_t pte)
 {
 	pteval_t pteval = pte.pte;
 #if 0
@@ -446,7 +446,7 @@ static pteval_t xen_pte_val(pte_t pte)
 }
 PV_CALLEE_SAVE_REGS_THUNK(xen_pte_val);
 
-static pgdval_t xen_pgd_val(pgd_t pgd)
+asmlinkage pgdval_t xen_pgd_val(pgd_t pgd)
 {
 	return pte_mfn_to_pfn(pgd.pgd);
 }
@@ -477,7 +477,7 @@ void xen_set_pat(u64 pat)
 	WARN_ON(pat != 0x0007010600070106ull);
 }
 
-static pte_t xen_make_pte(pteval_t pte)
+asmlinkage pte_t xen_make_pte(pteval_t pte)
 {
 	phys_addr_t addr = (pte & PTE_PFN_MASK);
 #if 0
@@ -512,14 +512,14 @@ static pte_t xen_make_pte(pteval_t pte)
 }
 PV_CALLEE_SAVE_REGS_THUNK(xen_make_pte);
 
-static pgd_t xen_make_pgd(pgdval_t pgd)
+asmlinkage pgd_t xen_make_pgd(pgdval_t pgd)
 {
 	pgd = pte_pfn_to_mfn(pgd);
 	return native_make_pgd(pgd);
 }
 PV_CALLEE_SAVE_REGS_THUNK(xen_make_pgd);
 
-static pmdval_t xen_pmd_val(pmd_t pmd)
+asmlinkage pmdval_t xen_pmd_val(pmd_t pmd)
 {
 	return pte_mfn_to_pfn(pmd.pmd);
 }
@@ -578,7 +578,7 @@ static void xen_pmd_clear(pmd_t *pmdp)
 }
 #endif	/* CONFIG_X86_PAE */
 
-static pmd_t xen_make_pmd(pmdval_t pmd)
+asmlinkage pmd_t xen_make_pmd(pmdval_t pmd)
 {
 	pmd = pte_pfn_to_mfn(pmd);
 	return native_make_pmd(pmd);
@@ -586,13 +586,13 @@ static pmd_t xen_make_pmd(pmdval_t pmd)
 PV_CALLEE_SAVE_REGS_THUNK(xen_make_pmd);
 
 #if PAGETABLE_LEVELS == 4
-static pudval_t xen_pud_val(pud_t pud)
+asmlinkage pudval_t xen_pud_val(pud_t pud)
 {
 	return pte_mfn_to_pfn(pud.pud);
 }
 PV_CALLEE_SAVE_REGS_THUNK(xen_pud_val);
 
-static pud_t xen_make_pud(pudval_t pud)
+asmlinkage pud_t xen_make_pud(pudval_t pud)
 {
 	pud = pte_pfn_to_mfn(pud);
 
-- 
1.7.7.6


  parent reply	other threads:[~2012-08-19  3:01 UTC|newest]

Thread overview: 128+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-19  2:55 RFC: Link Time Optimization support for the kernel Andi Kleen
2012-08-19  2:55 ` [PATCH 01/74] Add __visible Andi Kleen
2012-08-19  2:55 ` [PATCH 02/74] sections: Make all standard section identifiers __visible Andi Kleen
2012-08-19  2:55 ` [PATCH 03/74] sections: Make external kallsyms tables __visible Andi Kleen
2012-08-19  7:53   ` Jan Beulich
2012-08-19 15:29     ` Andi Kleen
2012-08-19  2:56 ` [PATCH 04/74] sections: Add __visible to ia64 sections Andi Kleen
2012-08-19  2:56 ` [PATCH 05/74] sections: Add __visible to m68k sections Andi Kleen
2012-08-19  2:56 ` [PATCH 06/74] sections: Add __visible to powerpc sections Andi Kleen
2012-08-19  2:56 ` [PATCH 07/74] sections: Add __visible to sh sections Andi Kleen
2012-08-19  2:56 ` [PATCH 08/74] sections: Add __visible to tile sections Andi Kleen
2012-08-19  2:56 ` [PATCH 09/74] sections: Add __visible to x86 sections Andi Kleen
2012-08-19  2:56 ` [PATCH 10/74] sections: Add __visible to drivers/{base,pci} sections Andi Kleen
2012-08-19  2:56 ` [PATCH 11/74] sections: Add __visible to rapidio sections Andi Kleen
2012-08-19  2:56 ` [PATCH 12/74] sections: Add __visible to jump_label sections Andi Kleen
2012-08-19  2:56 ` [PATCH 13/74] sections: Add __visible to init/* sections Andi Kleen
2012-08-19  2:56 ` [PATCH 14/74] sections: Add __visible to kernel/* sections Andi Kleen
2012-08-19  2:56 ` [PATCH 15/74] sections: Add __visible to kernel/trace/* sections Andi Kleen
2012-08-19  2:56 ` [PATCH 16/74] sections: Add __visible to lib/* sections Andi Kleen
2012-08-19  2:56 ` [PATCH 17/74] lto: Make asmlinkage __visible Andi Kleen
2012-08-19  2:56 ` [PATCH 18/74] lto, wan/sbni: Make inline assembler symbols visible and assembler global Andi Kleen
2012-08-19  2:56 ` [PATCH 19/74] x86, lto: Add missing asmlinkages and __visible Andi Kleen
2012-08-19  2:56 ` [PATCH 20/74] x86, lto: Change dotraplinkage into __visible on 32bit Andi Kleen
2012-09-01 14:44   ` Michal Marek
2012-08-19  2:56 ` [PATCH 21/74] lto: Make lockdep_sys_exit asmlinkage Andi Kleen
2012-08-19  2:56 ` [PATCH 22/74] lto: Change kernel_execve to asmlinkage for all architectures Andi Kleen
2012-08-19  2:56 ` [PATCH 23/74] lto, mutex: Mark __visible Andi Kleen
2012-08-19  2:56 ` [PATCH 24/74] lto: Mark do_exit asmlinkage Andi Kleen
2012-08-19  2:56 ` [PATCH 25/74] x86, lto: Fix sys_call_table type in asm/syscall.h v2 Andi Kleen
2012-08-19  2:56 ` [PATCH 26/74] lto, sound: Fix export symbols for !CONFIG_MODULES Andi Kleen
2012-08-20  8:30   ` Takashi Iwai
2012-08-20  9:45     ` Andi Kleen
2012-08-20  9:53       ` Takashi Iwai
2012-08-19  2:56 ` [PATCH 27/74] lto: Mark EXPORT_SYMBOL symbols __visible Andi Kleen
2012-08-20  6:54   ` Rusty Russell
2012-08-20  9:49     ` Andi Kleen
2012-08-19  2:56 ` [PATCH 28/74] lto: Make ksymtab and kcrctab symbols and __this_module __visible Andi Kleen
2012-08-19  2:56 ` [PATCH 29/74] x86, lto: Make amd.c vide visible Andi Kleen
2012-08-19  2:56 ` [PATCH 30/74] x86, lto: Fix AMD K6 indirect call check Andi Kleen
2012-08-19  2:56 ` [PATCH 31/74] x86, lto: Make various variables used by assembler code __visible Andi Kleen
2012-08-19  2:56 ` [PATCH 32/74] lto, PNP: Fix the inline assembler to use asmlinkage symbols Andi Kleen
2012-08-19  2:56 ` [PATCH 33/74] x86, lto, apm: Make APM data structure used from assembler visible Andi Kleen
2012-08-19  2:56 ` [PATCH 34/74] x86, lto, lguest: Fix C functions used by inline assembler Andi Kleen
2012-08-19  2:56 ` [PATCH 35/74] lto, crypto, aes: mark AES tables __visible Andi Kleen
2012-08-20  8:21   ` Herbert Xu
2012-08-19  2:56 ` [PATCH 36/74] lto, crypto, camelia: Make camelia tables used by assembler __visible Andi Kleen
2012-08-20  8:21   ` Herbert Xu
2012-08-19  2:56 ` [PATCH 37/74] lto, KVM: Don't assume asm statements end up in the same assembler file Andi Kleen
2012-08-19  8:59   ` Avi Kivity
2012-08-19 15:09     ` Andi Kleen
2012-08-19 15:12       ` Avi Kivity
2012-08-19 15:20         ` Andi Kleen
2012-08-19  2:56 ` [PATCH 38/74] lto, watchdog/hpwdt.c: Make assembler label global Andi Kleen
2012-08-22 19:25   ` Wim Van Sebroeck
2012-08-22 20:11     ` Mingarelli, Thomas
2012-08-19  2:56 ` [PATCH 39/74] x86, lto: Mark vdso variables __visible Andi Kleen
2012-08-19  2:56 ` [PATCH 40/74] lto, powerpc: Disable LTO for the powerpc VDSO Andi Kleen
2012-08-19  2:56 ` [PATCH 41/74] x86, lto: Disable LTO for the x86 VDSO Andi Kleen
2012-08-19  2:56 ` [PATCH 42/74] lto, raid: disable LTO for the Altivec RAID code Andi Kleen
2012-08-19  2:56 ` [PATCH 43/74] lto, workaround: Disable LTO for sys_ni to work around alias bugs Andi Kleen
2012-08-19  2:56 ` [PATCH 44/74] lto: Mark functions used by the vsyscall init code visible Andi Kleen
2012-09-01 15:26   ` Michal Marek
2012-09-01 17:16     ` Andi Kleen
2012-09-01 17:26       ` Andi Kleen
2012-08-19  2:56 ` [PATCH 45/74] lto: Mark rwsem functions that can be called from assembler asmlinkage Andi Kleen
2012-08-19  2:56 ` [PATCH 46/74] x86, lto: Disable fancy hweight optimizations for LTO Andi Kleen
2012-08-19  8:28   ` Jan Beulich
2012-08-19 15:15     ` Andi Kleen
2012-08-20 10:57       ` Jan Beulich
2012-08-20 11:18         ` Andi Kleen
2012-08-20 12:38           ` Jan Beulich
2012-08-20  9:15   ` Avi Kivity
2012-08-20  9:42     ` Andi Kleen
2012-08-19  2:56 ` [PATCH 47/74] x86, lto: Fix kprobes " Andi Kleen
2012-08-19  2:56 ` [PATCH 48/74] x86, lto: Use inline assembler instead of global register variable to get sp Andi Kleen
2012-08-19  8:37   ` Jan Beulich
2012-08-19 15:18     ` Andi Kleen
2012-08-19  2:56 ` [PATCH 49/74] x86, lto, paravirt: Add __visible/asmlinkage to xen paravirt ops Andi Kleen
2012-08-19  2:56 ` [PATCH 50/74] x86, lto: Make empty_zero_page __visible for LTO Andi Kleen
2012-08-19  2:56 ` [PATCH 51/74] x86, lto, efi: Mark the efi variable used from assembler __visible Andi Kleen
2012-08-19  2:56 ` [PATCH 52/74] x86, lto, paravirt: Don't rely on local assembler labels Andi Kleen
2012-08-19  8:26   ` Jeremy Fitzhardinge
2012-08-19  2:56 ` Andi Kleen [this message]
2012-08-19  8:27   ` [PATCH 53/74] x86, lto, paravirt: Make paravirt thunks global Jeremy Fitzhardinge
2012-08-19 15:25     ` Andi Kleen
2012-08-19  2:56 ` [PATCH 54/74] x86, lto, vdso: Don't duplicate vvar address variables Andi Kleen
2012-08-20 17:47   ` Andrew Lutomirski
2012-08-19  2:56 ` [PATCH 55/74] lto, workaround: Add workaround for initcall reordering Andi Kleen
2012-08-19  8:46   ` Jan Beulich
2012-08-19 15:01     ` Andi Kleen
2012-08-20 11:00       ` Jan Beulich
2012-08-19  2:56 ` [PATCH 56/74] lto, workaround: Add workaround for missing LTO symbols in igb Andi Kleen
2012-08-22  8:43   ` Arnd Bergmann
2012-08-22 12:36     ` Andi Kleen
2012-08-19  2:56 ` [PATCH 57/74] lto, workaround: Add workaround for LTO build problem in pvrusb2-audio Andi Kleen
2012-08-19  2:56 ` [PATCH 58/74] lto, workaround: Work around LTO compiler problem in atheros driver Andi Kleen
2012-08-19  2:56 ` [PATCH 59/74] lto: Handle LTO common symbols in module loader Andi Kleen
2012-08-19  8:53   ` Jan Beulich
2012-08-19 15:23     ` Andi Kleen
2012-08-19  2:56 ` [PATCH 60/74] lto, Kbuild, bloat-o-meter: fix static detection Andi Kleen
2012-08-19  2:56 ` [PATCH 61/74] Kbuild, lto: Drop .number postfixes in modpost Andi Kleen
2012-08-19  2:56 ` [PATCH 62/74] Kbuild, lto: add ld-version and ld-ifversion macros Andi Kleen
2012-08-19  2:56 ` [PATCH 63/74] Kbuild, lto: Print correct info messages for vmlinux link Andi Kleen
2012-08-19  2:57 ` [PATCH 64/74] Kbuild, lto: Add a gcc-ld script to let run gcc as ld Andi Kleen
2012-08-19  2:57 ` [PATCH 65/74] Kbuild, lto: Disable LTO for asm-offsets.c Andi Kleen
2012-08-19  2:57 ` [PATCH 66/74] Kbuild, lto: Handle basic LTO in modpost Andi Kleen
2012-08-19  2:57 ` [PATCH 67/74] Kbuild, lto: Add Link Time Optimization support Andi Kleen
2012-08-19  2:57 ` [PATCH 68/74] Kbuild, lto: Add LTO build Documentation Andi Kleen
2012-08-19  2:57 ` [PATCH 69/74] lto: Increase kallsyms max symbol length Andi Kleen
2012-08-19  2:57 ` [PATCH 70/74] Kbuild, lto: Handle longer symbols in kallsyms.c Andi Kleen
2012-08-19  2:57 ` [PATCH 71/74] lto, kprobes: Use KSYM_NAME_LEN to size identifier buffers Andi Kleen
2012-08-21  4:44   ` Ananth N Mavinakayanahalli
2012-08-19  2:57 ` [PATCH 72/74] lto: Mark spinlocks noinline when inline spinlocks are disabled Andi Kleen
2012-08-19  2:57 ` [PATCH 73/74] lto, module: Warn about modules that are not fully LTOed Andi Kleen
2012-08-19  2:57 ` [PATCH 74/74] lto, workaround: Mark do_futex noinline to prevent clobbering ebp Andi Kleen
2012-08-23  0:17   ` H. Peter Anvin
2012-08-23  2:14     ` H. Peter Anvin
2012-08-23  2:29     ` Andi Kleen
2012-08-23  3:14       ` H. Peter Anvin
2012-08-20  7:48 ` RFC: Link Time Optimization support for the kernel Ingo Molnar
2012-08-20 10:10   ` Andi Kleen
2012-08-21  7:49     ` Ingo Molnar
2012-08-21 14:05       ` Don Zickus
2012-08-21 14:26       ` Avi Kivity
2012-08-21 17:02       ` Andi Kleen
2012-08-23 15:02         ` Jan Hubicka
2012-08-22  8:58 ` Arnd Bergmann
2012-08-22 12:35   ` Andi Kleen

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=1345345030-22211-54-git-send-email-andi@firstfloor.org \
    --to=andi@firstfloor.org \
    --cc=JBeulich@suse.com \
    --cc=ak@linux.intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=jeremy@goop.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mmarek@suse.cz \
    --cc=x86@kernel.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

Powered by JetHome