-
Notifications
You must be signed in to change notification settings - Fork 138
Description
Currently, the hyperlight_guest exception handlers are compiled along with the rest of the guest code, and the compiler sometimes introduces floating point/SIMD instructions (e.g. exception handlers use the same memcpy as the rest of the guest, which uses XMM registers on x86-64). Because of this, we currently save and restore the entire floating point and SSE register state on every context switch (see here. This is not ideal, because it makes the context-save large and slow.
Other kernels, like Linux, arrange for most kernel code to be compiled without FPU/SIMD, and in the few cases where it's a good performance tradeoff to use SIMD in the kernel at the cost of the extra overhead, they have kernel_fpu_begin()
/kernel_fpu_end()
. We should figure out a way to compile Hyperlight in a similar configuration, and see if it's a performance improvement to do so.