Andi Kleen wrote: > On Wednesday 22 March 2006 23:45, Zachary Amsden wrote: > > >> I propose an entirely different approach - use segmentation. >> > > That would require a lot of changes to save/restore the segmentation > register at kernel entry/exit since there is no swapgs on i386. > And will be likely slower there too and also even slow down the > VMI-kernel-no-hypervisor. > There are no changes required to the kernel entry / exit paths. With save/restore segment support in the VMI, reserving one segment for the hypervisor data area is easy. I take it back. There is one required change: kernel_entry: hypervisor_entry_hook sti .... kernel code This hypervisor_entry_hook can be a nop on native hardware, and the following for Xen: push %gs mov CPU_HYPER_SEL, %gs pop %gs:SAVED_USER_GS You already have the IRET / SYSEXIT hooks to restore it on the way back. And now you have a segment reserved that allows you to deal with 16-bit stack segments during the IRET. > Still might be the best option. > > How did that rumoured Xenolinux-over-VMI implementation solve that problem? > !CONFIG_SMP -- as I believe I saw in the latest Xen patches sent out as well?