1. We clear FS/GS before changing TLS entries and switching LDT, as
otherwise the hypervisor will fail to restore thread-local values on
return to the guest kernel and we take a slow exception path.
@@ -647,6 +647,8 @@ struct task_struct fastcall * __switch_t
*/
savesegment(fs, prev->fs);
savesegment(gs, prev->gs);
+ clearsegment(fs);
+ clearsegment(gs);
Really not needed. Think about it. You can even speed up Xen. I'm glad the native operation here is a nop, but it should be hypervisor_clearsegment or xen_clearsegment if you really want to keep it.