audk/MdePkg/Library/BaseLib/Ia32
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
..
ARShiftU64.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ARShiftU64.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07: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.c 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.c 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.c 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.c 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.c 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
DisablePaging32.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
DisablePaging32.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
DivS64x64Remainder.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
DivU64x32.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
DivU64x32.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
DivU64x32Remainder.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
DivU64x32Remainder.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
DivU64x64Remainder.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
EnableCache.c 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.c 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.c 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
EnablePaging32.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
EnablePaging32.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
EnablePaging64.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
FlushCacheLine.c 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.c 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.c 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
InternalSwitchStack.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
InternalSwitchStack.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
Invd.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
Invd.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
LRotU64.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
LRotU64.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
LShiftU64.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
LShiftU64.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
ModU64x32.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
ModU64x32.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
Monitor.c 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
MultU64x32.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
MultU64x32.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
MultU64x64.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
MultU64x64.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
Mwait.c 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
RRotU64.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
RRotU64.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
RShiftU64.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
RShiftU64.nasm 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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
SwapBytes64.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
SwapBytes64.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.c MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
Wbinvd.nasm MdePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:13 -07:00
WriteCr0.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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.c 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