On Thu, 7 Apr 2005, Dave Jones wrote:
>
> On Thu, Apr 07, 2005 at 07:47:41AM -0700, Linus Torvalds wrote:
>
> > So the sysenter sequence might as well look like
> >
> > pushl $(__USER_DS)
> > pushl %ebp
> > sti
> > pushfl
> > ..
> >
> > which actually does three protected pushes thanks to the one-instruction
> > "interrupt shadow" after an sti.
>
> Is this guaranteed on every x86 variant (or rather, every one
> that has SEP). ?
Well, since we only need two in this case, we don't care, but yes, it's
supposed to be guaranteed by anything that calls itself an x86.
In fact, we _do_ depend on it in a few other sequences. Notably
sti ; hlt
depends on the fact that an interrupt will always finish _after_ the hlt,
and we'll never halt before the hlt (and then re-execute the hlt after the
interrupt), and in
sti ; iret
where we depend on the fact that we don't get recursive interrupt stacks
(since we at that point have re-enabled the interrupt that happened).
Of course, if some future x86 decides that the interrupt shadow only
matters for special instructions (ie it's not so much a general interrupt
shadow as a "instruction combination"), I don't think Linux would care. I
really think there are only a very few valid sti-combinations, and I
suspect the above two are pretty much it.
(The other "magic" x86 behaviour is loading into the SS register, which
creates a one-cycle black hole after it. Linux shouldn't care, and in fact
nothing should care about it outside of old 16-bit non-protected-mode
programs, so I think that's another one that could be retired eventually)
Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
- References:
- crash in entry.S restore_all, 2.6.12-rc2, x86, PAGEALLOC
- Re: crash in entry.S restore_all, 2.6.12-rc2, x86, PAGEALLOC
- Re: crash in entry.S restore_all, 2.6.12-rc2, x86, PAGEALLOC
- Re: crash in entry.S restore_all, 2.6.12-rc2, x86, PAGEALLOC
- Re: crash in entry.S restore_all, 2.6.12-rc2, x86, PAGEALLOC
- Re: crash in entry.S restore_all, 2.6.12-rc2, x86, PAGEALLOC
- Re: crash in entry.S restore_all, 2.6.12-rc2, x86, PAGEALLOC
- Re: crash in entry.S restore_all, 2.6.12-rc2, x86, PAGEALLOC
- Re: crash in entry.S restore_all, 2.6.12-rc2, x86, PAGEALLOC
- Re: crash in entry.S restore_all, 2.6.12-rc2, x86, PAGEALLOC
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]