On 05/19/20 23:50, Lendacky, Thomas wrote: > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2198 > > Under SEV-ES, a DR7 read or write intercept generates a #VC exception. > The #VC handler must provide special support to the guest for this. On > a DR7 write, the #VC handler must cache the value and issue a VMGEXIT > to notify the hypervisor of the write. However, the #VC handler must > not actually set the value of the DR7 register. On a DR7 read, the #VC > handler must return the cached value of the DR7 register to the guest. > VMGEXIT is not invoked for a DR7 register read. > > To avoid exception recursion, a #VC exception will not try to read and > push the actual debug registers into the EFI_SYSTEM_CONTEXT_X64 struct > and instead push zeroes. The #VC exception handler does not make use of > the debug registers from saved context. > > Cc: Eric Dong <[email protected]> > Cc: Ray Ni <[email protected]> > Cc: Jordan Justen <[email protected]> > Cc: Laszlo Ersek <[email protected]> > Cc: Ard Biesheuvel <[email protected]> > Signed-off-by: Tom Lendacky <[email protected]> > --- > .../Library/VmgExitLib/X64/VmgExitVcHandler.c | 105 ++++++++++++++++++ > .../X64/ExceptionHandlerAsm.nasm | 17 +++ > .../X64/Xcode5ExceptionHandlerAsm.nasm | 17 +++ > 3 files changed, 139 insertions(+)
My brain is mush (the NPF/MMIO patch wasn't easy), so I'll pick up the review at this patch next week. Thanks! Laszlo -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#60155): https://edk2.groups.io/g/devel/message/60155 Mute This Topic: https://groups.io/mt/74336582/21656 Group Owner: [email protected] Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
