OvmfPkg/VmgExitLib: Implement new VmgExitLib interfaces
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3008 The VmgExitLib library added two new interfaces, VmgSetOffsetValid() and VmgIsOffsetValid(), that must now be implemented in the OvmfPkg version of the library. Implement VmgSetOffsetValid() and VmgIsOffsetValid() and update existing code, that is directly accessing ValidBitmap, to use the new interfaces. Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> Cc: Tom Lendacky <thomas.lendacky@amd.com> Cc: Brijesh Singh <brijesh.singh@amd.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com> Message-Id: <939e9dc375e6085bc67942fe9a00ecd4c6b77ecf.1604685192.git.thomas.lendacky@amd.com>
This commit is contained in:
committed by
mergify[bot]
parent
8a7ca9923e
commit
a13967f2a3
@@ -157,3 +157,57 @@ VmgDone (
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
Marks a field at the specified offset as valid in the GHCB.
|
||||
|
||||
The ValidBitmap area represents the areas of the GHCB that have been marked
|
||||
valid. Set the bit in ValidBitmap for the input offset.
|
||||
|
||||
@param[in, out] Ghcb Pointer to the Guest-Hypervisor Communication Block
|
||||
@param[in] Offset Qword offset in the GHCB to mark valid
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
VmgSetOffsetValid (
|
||||
IN OUT GHCB *Ghcb,
|
||||
IN GHCB_REGISTER Offset
|
||||
)
|
||||
{
|
||||
UINT32 OffsetIndex;
|
||||
UINT32 OffsetBit;
|
||||
|
||||
OffsetIndex = Offset / 8;
|
||||
OffsetBit = Offset % 8;
|
||||
|
||||
Ghcb->SaveArea.ValidBitmap[OffsetIndex] |= (1 << OffsetBit);
|
||||
}
|
||||
|
||||
/**
|
||||
Checks if a specified offset is valid in the GHCB.
|
||||
|
||||
The ValidBitmap area represents the areas of the GHCB that have been marked
|
||||
valid. Return whether the bit in the ValidBitmap is set for the input offset.
|
||||
|
||||
@param[in] Ghcb A pointer to the GHCB
|
||||
@param[in] Offset Qword offset in the GHCB to mark valid
|
||||
|
||||
@retval TRUE Offset is marked valid in the GHCB
|
||||
@retval FALSE Offset is not marked valid in the GHCB
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
VmgIsOffsetValid (
|
||||
IN GHCB *Ghcb,
|
||||
IN GHCB_REGISTER Offset
|
||||
)
|
||||
{
|
||||
UINT32 OffsetIndex;
|
||||
UINT32 OffsetBit;
|
||||
|
||||
OffsetIndex = Offset / 8;
|
||||
OffsetBit = Offset % 8;
|
||||
|
||||
return ((Ghcb->SaveArea.ValidBitmap[OffsetIndex] & (1 << OffsetBit)) != 0);
|
||||
}
|
||||
|
Reference in New Issue
Block a user