Hi -

This saves and restores FPU/XMM state when we enter vcore context.

Unfortunately, this is the best I can do for for now: every async
vcore_entry (event/notif, trap, vmexit) will save and restore the
FPU/XMM state.  Save/restore adds about 250 cycles on what is normally a
2850 cycle operation (as measured by tests/interference).

The driver for this is that there are just too many ways that vcore
context code can clobber XMM registers.  Until we sort that out, like
by not calling into glibc at all from VC ctx, we'll have to
save/restore.

This bug (occasional xmm clobber) triggered all sorts of nasty things:
- ssh+scp to VM guests of large files would fail
- ssh connection to VM guests would occasionally die
- Go tests in a VM guest would fail
- Large initramfs's for the guest would fail to unpack
- Plus whatever was happening about a year ago with Kyle and Gan
- Plus whatever was happening about 18 months ago with Mike

Barret


The following changes since commit 88501869ce07386cd7695989ab22fddf3e860b6a:

  Documentation: document running go test with u-root (2017-09-25 13:55:03 
-0400)

are available in the git repository at:

  [email protected]:brho/akaros.git aggressive-fp-save

for you to fetch changes up to 5562ccb05015af83cc7a410e01ac9e6f56256462:

  parlib: Aggressively save and restore the FPU (2017-09-27 11:11:05 -0400)

----------------------------------------------------------------
View this online at:
https://github.com/brho/akaros/compare/88501869ce07...5562ccb05015

----------------------------------------------------------------
Barret Rhoden (3):
      parlib: Add a couple helpers
      Add tests for interference
      parlib: Aggressively save and restore the FPU

 kern/arch/x86/rdtsc_test.c           |  79 ++++++++++++++++++++
 tests/interference.c                 | 138 +++++++++++++++++++++++++++++++++++
 tests/misc-compat.h                  |   8 ++
 user/parlib/include/parlib/uthread.h |   5 ++
 user/parlib/include/parlib/vcore.h   |   6 ++
 user/parlib/uthread.c                |  50 ++++++++++---
 6 files changed, 276 insertions(+), 10 deletions(-)
 create mode 100644 tests/interference.c

-- 
You received this message because you are subscribed to the Google Groups 
"Akaros" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to