Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 18 Nov 2018 01:08:11 +0000
From:      bugzilla-noreply@freebsd.org
To:        virtualization@FreeBSD.org
Subject:   [Bug 230773] [bhyve] GDT limit needs reset on VMX exit
Message-ID:  <bug-230773-27103-LYPJ6xJ9iW@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-230773-27103@https.bugs.freebsd.org/bugzilla/>
References:  <bug-230773-27103@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D230773

--- Comment #6 from commit-hook@freebsd.org ---
A commit references this bug:

Author: jhb
Date: Sun Nov 18 01:07:37 UTC 2018
New revision: 340545
URL: https://svnweb.freebsd.org/changeset/base/340545

Log:
  MFC 339312,339364: Restore more descriptors during VM exits.

  339312:
  Fully restore the GDTR, IDTR, and LDTR after VT-x VM exits.

  The VT-x VMCS only stores the base address of the GDTR and IDTR.  As a
  result, VM exits use a fixed limit of 0xffff for the host GDTR and
  IDTR losing the smaller limits set in when the initial GDT is loaded
  on each CPU during boot.  Explicitly save and restore the full GDTR
  and IDTR contents around VM entries and exits to restore the correct
  limit.

  Similarly, explicitly save and restore the LDT selector.  VM exits
  always clear the host LDTR as if the LDT was loaded with a NULL
  selector and a userspace hypervisor is probably using a NULL selector
  anyway, but save and restore the LDT explicitly just to be safe.

  339364:
  Reload the LDT selector after an AMD-v #VMEXIT.

  cpu_switch() always reloads the LDT, so this can only affect the
  hypervisor process itself.  Fix this by explicitly reloading the host
  LDT selector after each #VMEXIT.  The stock bhyve process on FreeBSD
  never uses a custom LDT, so this change is cosmetic.

  PR:           230773

Changes:
_U  stable/11/
  stable/11/sys/amd64/include/cpufunc.h
  stable/11/sys/amd64/vmm/amd/svm.c
  stable/11/sys/amd64/vmm/intel/vmx.c

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-230773-27103-LYPJ6xJ9iW>