BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4169
The previous TDX MmioExit doesn't handle the Mmio instructions correctly in some scenarios. This patch-set refactors the implementation to fix the issues. Before the refactoring, common X86 instruction codes in CcExitVcHandler.c are moved to separate files (CcInstruction.h / CcInstruction.c) so that these codes can be re-used in TDX. Code: https://github.com/mxu9/edk2/tree/TdxMmioExit.v2 v2 changes: - Add CpuDeadLoop () after each TDVMCALL(HALT) in VE handler. Because TDVMCALL(HALT) is not trusted. - Other minor changes such as deleting ASSERT in VE handler. Because any error in VE handler will trigger CpuDeadLoop (). So ASSERT is not needed any more. Cc: Erdem Aktas <[email protected]> Cc: James Bottomley <[email protected]> Cc: Jiewen Yao <[email protected]> Cc: Gerd Hoffmann <[email protected]> Cc: Tom Lendacky <[email protected]> Cc: Ryan Afranji <[email protected]> Reported-by: Ryan Afranji <[email protected]> Signed-off-by: Min Xu <[email protected]> Min M Xu (2): OvmfPkg/CcExitLib: Move common X86 instruction code to separate file OvmfPkg/CcExitLib: Refactor TDX MmioExit OvmfPkg/Library/CcExitLib/CcExitLib.inf | 1 + OvmfPkg/Library/CcExitLib/CcExitVcHandler.c | 697 +++----------------- OvmfPkg/Library/CcExitLib/CcExitVeHandler.c | 525 ++++++++++----- OvmfPkg/Library/CcExitLib/CcInstruction.c | 454 +++++++++++++ OvmfPkg/Library/CcExitLib/CcInstruction.h | 197 ++++++ OvmfPkg/Library/CcExitLib/SecCcExitLib.inf | 1 + 6 files changed, 1098 insertions(+), 777 deletions(-) create mode 100644 OvmfPkg/Library/CcExitLib/CcInstruction.c create mode 100644 OvmfPkg/Library/CcExitLib/CcInstruction.h -- 2.29.2.windows.2 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#98207): https://edk2.groups.io/g/devel/message/98207 Mute This Topic: https://groups.io/mt/96166746/21656 Group Owner: [email protected] Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
