Re: [PATCH -v7][RFC]: mutex: implement adaptive spinning

Harvey Harrison
2009-01-08T20:00:10Z

On Thu, 2009-01-08 at 19:33 +0100, Ingo Molnar wrote:
> * Linus Torvalds <torvalds@linux-foundation.org> wrote:

<snip>

> >
> > Ingo - I think we need to remove that crap again. Because gcc gets the
> > inlining horribly horribly wrong. As usual.
>
> Apparently it messes up with asm()s: it doesnt know the contents of the
> asm() and hence it over-estimates the size [based on string heuristics]
> ...

<snip>

> That win is mixed in slowpath and fastpath as well.
>
> I see three options:
>
> - Disable CONFIG_OPTIMIZE_INLINING=y altogether (it's already
> default-off)

I'd like to see this, leave all the heuristics out of it, if I say inline, I
don't mean _maybe_, I mean you'd better damn well inline it. On the other
hand, alpha seems to be hand-disabling the inline means __always_inline
in their arch headers, so if this option is kept, it should be enabled
on alpha as that is the current state of play there and get rid of that
arch-private bit.

>
> - Change the asm() inline markers to something new like asm_inline, which
> defaults to __always_inline.

I'd suggest just making inline always mean __always_inline. And get to
work removing inline from functions in C files. This is probably also the
better choice to keep older gccs producing decent code.

>
> - Just mark all asm() inline markers as __always_inline - realizing that
> these should never ever be out of line.
>
> We might still try the second or third options, as i think we shouldnt go
> back into the business of managing the inline attributes of ~100,000
> kernel functions.

Or just make it clear that inline shouldn't (unless for a very good reason)
_ever_ be used in a .c file.

Cheers,

Harvey