Hi Petr et al. I coded up something that remotely looks like the discussed patch. I have deviated from your proposals at some important points: 1. I am not allocating the ring1 stack separately, I am allocating it on a ring0 stack. Much simpler code, although non-reentrant/preempt-unsafe. 2. I am disabling the interrupts after all. That's because of the preempt-unsafeness. I pass up the IOPL=1 when necessary, to avoid problems. But I guess also with your technique the interrupts had to be disabled, unless the ring1 stack is per-thread. 3. I am using LAR. Do you really think it can be slower than the whole thing of locating LDT? Let me know if I did something stupid. The patch is attached. I tested (pretty much) everything in it, except probably the "popl %esp" restartability. But that one looks fairly simple and should work. Does this patch look good?