Re: [GIT PULL] x86 LTO changes for v3.15

From: Linus Torvalds
Date: Mon Mar 31 2014 - 20:17:15 EST


On Mon, Mar 31, 2014 at 4:03 PM, Andi Kleen <ak@xxxxxxxxxxxxxxx> 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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/