Messages in this thread | | | Date | Mon, 31 Mar 2014 17:17:03 -0700 | Subject | Re: [GIT PULL] x86 LTO changes for v3.15 | From | Linus Torvalds <> |
| |
On Mon, Mar 31, 2014 at 4:03 PM, Andi Kleen <ak@linux.intel.com> wrote: > > However with LTO pretty much all asmlinkages have to become > visible, as they are used by assembler code and we need to > tell that to the compiler, otherwise it'll optimize it away. > > So I abused asmlinkage for this.
I see why you did it, but I suspect it's not really necessary.
As far as I can tell, *most* of our current asmlinkage use is for the system call declarations (both compat and regular), and the actual *definition* of those system calls should pretty much universally use the SYSCALL_DEFINEx() and COMPAT_SYSCALL_DEFINEx() macros.
So what I would propose is:
- don't do the __visible as part of asmlinkage, because it really is conceptually wrong
- add the visible to the SYSCALL_DEFINEx() macros
and after that I strongly suspect that there will be only a handful of cases left that are called from assembly language and that aren't system calls. Things like "printk()" and friends that are really special. They'd need a few manual "__visible" annotations.
> If you prefer to do it explicitely I can send > patches (it would be a very mechanic, long and boring > tree sweep ...).
See above: I can pretty much guarantee that you should *not* need do any crazy automated sweeps. Because you shouldn't need "__visible" at the declarations in the header files, only at the definition of the function, right? So SYSCALL_DEFINEx() really should catch all the normal cases.
Linus
| |