audk/MdePkg/Library/BaseLib/X64
Tom Lendacky f8422f1e0b MdePkg/BaseLib: Add support for the VMGEXIT instruction
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2198

VMGEXIT is a new instruction used for Hypervisor/Guest communication when
running as an SEV-ES guest. A VMGEXIT will cause an automatic exit (AE)
to occur, resulting in a #VMEXIT with an exit code value of 0x403.

Since SEV-ES is only supported in X64, provide the necessary X64 support
to execute the VMGEXIT instruction, which is coded as "rep vmmcall". For
IA32, since "vmmcall" is not supported in NASM 32-bit mode and VMGEXIT
should never be called, provide a stub implementation that is identical
to CpuBreakpoint().

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Regression-tested-by: Laszlo Ersek <lersek@redhat.com>
2020-08-16 16:45:42 +00:00
..
CpuBreakpoint.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
CpuBreakpoint.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
CpuId.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
CpuIdEx.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
CpuPause.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
DisableCache.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
DisableInterrupts.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
DisablePaging64.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
EnableCache.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
EnableDisableInterrupts.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
EnableInterrupts.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
FlushCacheLine.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
FxRestore.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
FxSave.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
GccInline.c MdePkg/BaseLib: Break out IA32/X64 GCC inline privileged functions 2020-07-15 05:25:21 +00:00
GccInlinePriv.c MdePkg/BaseLib: Break out IA32/X64 GCC inline privileged functions 2020-07-15 05:25:21 +00:00
Invd.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
Lfence.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
LongJump.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
Monitor.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
Mwait.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
Non-existing.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
RdRand.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadCr0.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadCr2.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadCr3.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadCr4.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadCs.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadDr0.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadDr1.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadDr2.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadDr3.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadDr4.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadDr5.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadDr6.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadDr7.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadDs.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadEflags.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadEs.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadFs.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadGdtr.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadGs.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadIdtr.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadLdtr.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadMm0.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadMm1.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadMm2.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadMm3.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadMm4.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadMm5.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadMm6.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadMm7.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadMsr64.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadMsr64.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadPmc.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadSs.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadTr.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ReadTsc.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
SetJump.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
SwitchStack.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
Thunk16.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
VmgExit.nasm MdePkg/BaseLib: Add support for the VMGEXIT instruction 2020-08-16 16:45:42 +00:00
Wbinvd.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteCr0.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteCr2.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteCr3.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteCr4.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteDr0.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteDr1.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteDr2.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteDr3.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteDr4.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteDr5.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteDr6.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteDr7.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteGdtr.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteIdtr.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteLdtr.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteMm0.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteMm1.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteMm2.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteMm3.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteMm4.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteMm5.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteMm6.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteMm7.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteMsr64.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteMsr64.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteTr.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
XGetBv.nasm MdePkg/BaseLib: Add support for the XGETBV instruction 2020-08-16 16:45:42 +00:00