Re: Sysenter crash with Nested Task Bit set

From: Benjamin LaHaise
Date: Mon Sep 18 2006 - 12:13:28 EST


On Mon, Sep 18, 2006 at 05:29:23PM +0200, Andi Kleen wrote:
> > - asm volatile("pushl %%ebp\n\t" \
> > + asm volatile("pushfl\n\t" /* Save flags */ \
> > + "pushl %%ebp\n\t" \
>
> We used to do that pushfl/popfl some time ago, but Ben removed it because
> it was slow on P4. Ok, nobody thought of that case back then.

It's the pushfl that will be slow on any OoO CPU, as it has dependancies on
any previous instructions that modified the flags, which ends up bringing
all of the memory ordering dependancies into play. Doing a popfl to set the
flags to some known value is much less expensive.

-ben
--
"Time is of no importance, Mr. President, only life is important."
Don't Email: <dont@xxxxxxxxx>.
-
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/