OvmfPkg/BaseMemEncryptSevLib: remove Flush parameter

BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3275

The Flush parameter is used to provide a hint whether the specified range
is Mmio address. Now that we have a dedicated helper to clear the
memory encryption mask for the Mmio address range, its safe to remove the
Flush parameter from MemEncryptSev{Set,Clear}PageEncMask().

Since the address specified in the MemEncryptSev{Set,Clear}PageEncMask()
points to a system RAM, thus a cache flush is required during the
encryption mask update.

Cc: James Bottomley <jejb@linux.ibm.com>
Cc: Min Xu <min.m.xu@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Erdem Aktas <erdemaktas@google.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Message-Id: <20210519181949.6574-14-brijesh.singh@amd.com>
This commit is contained in:
Brijesh Singh
2021-05-19 13:19:49 -05:00
committed by mergify[bot]
parent b4a8de5d27
commit adfa3327d4
10 changed files with 21 additions and 62 deletions

View File

@ -120,8 +120,7 @@ AmdSevDxeEntryPoint (
Status = MemEncryptSevClearPageEncMask ( Status = MemEncryptSevClearPageEncMask (
0, // Cr3BaseAddress -- use current CR3 0, // Cr3BaseAddress -- use current CR3
MapPagesBase, // BaseAddress MapPagesBase, // BaseAddress
MapPagesCount, // NumPages MapPagesCount // NumPages
TRUE // Flush
); );
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a: MemEncryptSevClearPageEncMask(): %r\n", DEBUG ((DEBUG_ERROR, "%a: MemEncryptSevClearPageEncMask(): %r\n",

View File

@ -100,8 +100,6 @@ MemEncryptSevIsEnabled (
address of a memory region. address of a memory region.
@param[in] NumPages The number of pages from start memory @param[in] NumPages The number of pages from start memory
region. region.
@param[in] Flush Flush the caches before clearing the bit
(mostly TRUE except MMIO addresses)
@retval RETURN_SUCCESS The attributes were cleared for the @retval RETURN_SUCCESS The attributes were cleared for the
memory region. memory region.
@ -114,8 +112,7 @@ EFIAPI
MemEncryptSevClearPageEncMask ( MemEncryptSevClearPageEncMask (
IN PHYSICAL_ADDRESS Cr3BaseAddress, IN PHYSICAL_ADDRESS Cr3BaseAddress,
IN PHYSICAL_ADDRESS BaseAddress, IN PHYSICAL_ADDRESS BaseAddress,
IN UINTN NumPages, IN UINTN NumPages
IN BOOLEAN Flush
); );
/** /**
@ -128,8 +125,6 @@ MemEncryptSevClearPageEncMask (
address of a memory region. address of a memory region.
@param[in] NumPages The number of pages from start memory @param[in] NumPages The number of pages from start memory
region. region.
@param[in] Flush Flush the caches before setting the bit
(mostly TRUE except MMIO addresses)
@retval RETURN_SUCCESS The attributes were set for the memory @retval RETURN_SUCCESS The attributes were set for the memory
region. region.
@ -142,8 +137,7 @@ EFIAPI
MemEncryptSevSetPageEncMask ( MemEncryptSevSetPageEncMask (
IN PHYSICAL_ADDRESS Cr3BaseAddress, IN PHYSICAL_ADDRESS Cr3BaseAddress,
IN PHYSICAL_ADDRESS BaseAddress, IN PHYSICAL_ADDRESS BaseAddress,
IN UINTN NumPages, IN UINTN NumPages
IN BOOLEAN Flush
); );

View File

@ -252,8 +252,7 @@ IoMmuMap (
Status = MemEncryptSevClearPageEncMask ( Status = MemEncryptSevClearPageEncMask (
0, 0,
MapInfo->PlainTextAddress, MapInfo->PlainTextAddress,
MapInfo->NumberOfPages, MapInfo->NumberOfPages
TRUE
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
@ -407,8 +406,7 @@ IoMmuUnmapWorker (
Status = MemEncryptSevSetPageEncMask ( Status = MemEncryptSevSetPageEncMask (
0, 0,
MapInfo->PlainTextAddress, MapInfo->PlainTextAddress,
MapInfo->NumberOfPages, MapInfo->NumberOfPages
TRUE
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {

View File

@ -25,8 +25,6 @@
address of a memory region. address of a memory region.
@param[in] NumPages The number of pages from start memory @param[in] NumPages The number of pages from start memory
region. region.
@param[in] Flush Flush the caches before clearing the bit
(mostly TRUE except MMIO addresses)
@retval RETURN_SUCCESS The attributes were cleared for the @retval RETURN_SUCCESS The attributes were cleared for the
memory region. memory region.
@ -39,8 +37,7 @@ EFIAPI
MemEncryptSevClearPageEncMask ( MemEncryptSevClearPageEncMask (
IN PHYSICAL_ADDRESS Cr3BaseAddress, IN PHYSICAL_ADDRESS Cr3BaseAddress,
IN PHYSICAL_ADDRESS BaseAddress, IN PHYSICAL_ADDRESS BaseAddress,
IN UINTN NumPages, IN UINTN NumPages
IN BOOLEAN Flush
) )
{ {
// //
@ -59,8 +56,6 @@ MemEncryptSevClearPageEncMask (
address of a memory region. address of a memory region.
@param[in] NumPages The number of pages from start memory @param[in] NumPages The number of pages from start memory
region. region.
@param[in] Flush Flush the caches before setting the bit
(mostly TRUE except MMIO addresses)
@retval RETURN_SUCCESS The attributes were set for the memory @retval RETURN_SUCCESS The attributes were set for the memory
region. region.
@ -73,8 +68,7 @@ EFIAPI
MemEncryptSevSetPageEncMask ( MemEncryptSevSetPageEncMask (
IN PHYSICAL_ADDRESS Cr3BaseAddress, IN PHYSICAL_ADDRESS Cr3BaseAddress,
IN PHYSICAL_ADDRESS BaseAddress, IN PHYSICAL_ADDRESS BaseAddress,
IN UINTN NumPages, IN UINTN NumPages
IN BOOLEAN Flush
) )
{ {
// //

View File

@ -27,8 +27,6 @@
address of a memory region. address of a memory region.
@param[in] NumPages The number of pages from start memory @param[in] NumPages The number of pages from start memory
region. region.
@param[in] Flush Flush the caches before clearing the bit
(mostly TRUE except MMIO addresses)
@retval RETURN_SUCCESS The attributes were cleared for the @retval RETURN_SUCCESS The attributes were cleared for the
memory region. memory region.
@ -41,15 +39,13 @@ EFIAPI
MemEncryptSevClearPageEncMask ( MemEncryptSevClearPageEncMask (
IN PHYSICAL_ADDRESS Cr3BaseAddress, IN PHYSICAL_ADDRESS Cr3BaseAddress,
IN PHYSICAL_ADDRESS BaseAddress, IN PHYSICAL_ADDRESS BaseAddress,
IN UINTN NumPages, IN UINTN NumPages
IN BOOLEAN Flush
) )
{ {
return InternalMemEncryptSevSetMemoryDecrypted ( return InternalMemEncryptSevSetMemoryDecrypted (
Cr3BaseAddress, Cr3BaseAddress,
BaseAddress, BaseAddress,
EFI_PAGES_TO_SIZE (NumPages), EFI_PAGES_TO_SIZE (NumPages)
Flush
); );
} }
@ -63,8 +59,6 @@ MemEncryptSevClearPageEncMask (
address of a memory region. address of a memory region.
@param[in] NumPages The number of pages from start memory @param[in] NumPages The number of pages from start memory
region. region.
@param[in] Flush Flush the caches before setting the bit
(mostly TRUE except MMIO addresses)
@retval RETURN_SUCCESS The attributes were set for the memory @retval RETURN_SUCCESS The attributes were set for the memory
region. region.
@ -77,15 +71,13 @@ EFIAPI
MemEncryptSevSetPageEncMask ( MemEncryptSevSetPageEncMask (
IN PHYSICAL_ADDRESS Cr3BaseAddress, IN PHYSICAL_ADDRESS Cr3BaseAddress,
IN PHYSICAL_ADDRESS BaseAddress, IN PHYSICAL_ADDRESS BaseAddress,
IN UINTN NumPages, IN UINTN NumPages
IN BOOLEAN Flush
) )
{ {
return InternalMemEncryptSevSetMemoryEncrypted ( return InternalMemEncryptSevSetMemoryEncrypted (
Cr3BaseAddress, Cr3BaseAddress,
BaseAddress, BaseAddress,
EFI_PAGES_TO_SIZE (NumPages), EFI_PAGES_TO_SIZE (NumPages)
Flush
); );
} }

View File

@ -828,8 +828,6 @@ Done:
@param[in] PhysicalAddress The physical address that is the start @param[in] PhysicalAddress The physical address that is the start
address of a memory region. address of a memory region.
@param[in] Length The length of memory region @param[in] Length The length of memory region
@param[in] Flush Flush the caches before applying the
encryption mask
@retval RETURN_SUCCESS The attributes were cleared for the @retval RETURN_SUCCESS The attributes were cleared for the
memory region. memory region.
@ -842,8 +840,7 @@ EFIAPI
InternalMemEncryptSevSetMemoryDecrypted ( InternalMemEncryptSevSetMemoryDecrypted (
IN PHYSICAL_ADDRESS Cr3BaseAddress, IN PHYSICAL_ADDRESS Cr3BaseAddress,
IN PHYSICAL_ADDRESS PhysicalAddress, IN PHYSICAL_ADDRESS PhysicalAddress,
IN UINTN Length, IN UINTN Length
IN BOOLEAN Flush
) )
{ {
@ -852,7 +849,7 @@ InternalMemEncryptSevSetMemoryDecrypted (
PhysicalAddress, PhysicalAddress,
Length, Length,
ClearCBit, ClearCBit,
Flush TRUE
); );
} }
@ -865,8 +862,6 @@ InternalMemEncryptSevSetMemoryDecrypted (
@param[in] PhysicalAddress The physical address that is the start @param[in] PhysicalAddress The physical address that is the start
address of a memory region. address of a memory region.
@param[in] Length The length of memory region @param[in] Length The length of memory region
@param[in] Flush Flush the caches before applying the
encryption mask
@retval RETURN_SUCCESS The attributes were set for the memory @retval RETURN_SUCCESS The attributes were set for the memory
region. region.
@ -879,8 +874,7 @@ EFIAPI
InternalMemEncryptSevSetMemoryEncrypted ( InternalMemEncryptSevSetMemoryEncrypted (
IN PHYSICAL_ADDRESS Cr3BaseAddress, IN PHYSICAL_ADDRESS Cr3BaseAddress,
IN PHYSICAL_ADDRESS PhysicalAddress, IN PHYSICAL_ADDRESS PhysicalAddress,
IN UINTN Length, IN UINTN Length
IN BOOLEAN Flush
) )
{ {
return SetMemoryEncDec ( return SetMemoryEncDec (
@ -888,7 +882,7 @@ InternalMemEncryptSevSetMemoryEncrypted (
PhysicalAddress, PhysicalAddress,
Length, Length,
SetCBit, SetCBit,
Flush TRUE
); );
} }

View File

@ -42,8 +42,6 @@ InternalGetMemEncryptionAddressMask (
@param[in] PhysicalAddress The physical address that is the start @param[in] PhysicalAddress The physical address that is the start
address of a memory region. address of a memory region.
@param[in] Length The length of memory region @param[in] Length The length of memory region
@param[in] Flush Flush the caches before applying the
encryption mask
@retval RETURN_SUCCESS The attributes were cleared for the @retval RETURN_SUCCESS The attributes were cleared for the
memory region. memory region.
@ -56,8 +54,7 @@ EFIAPI
InternalMemEncryptSevSetMemoryDecrypted ( InternalMemEncryptSevSetMemoryDecrypted (
IN PHYSICAL_ADDRESS Cr3BaseAddress, IN PHYSICAL_ADDRESS Cr3BaseAddress,
IN PHYSICAL_ADDRESS PhysicalAddress, IN PHYSICAL_ADDRESS PhysicalAddress,
IN UINTN Length, IN UINTN Length
IN BOOLEAN Flush
) )
{ {
// //
@ -89,8 +86,7 @@ EFIAPI
InternalMemEncryptSevSetMemoryEncrypted ( InternalMemEncryptSevSetMemoryEncrypted (
IN PHYSICAL_ADDRESS Cr3BaseAddress, IN PHYSICAL_ADDRESS Cr3BaseAddress,
IN PHYSICAL_ADDRESS PhysicalAddress, IN PHYSICAL_ADDRESS PhysicalAddress,
IN UINTN Length, IN UINTN Length
IN BOOLEAN Flush
) )
{ {
// //

View File

@ -58,8 +58,6 @@ InternalGetMemEncryptionAddressMask (
@param[in] PhysicalAddress The physical address that is the start @param[in] PhysicalAddress The physical address that is the start
address of a memory region. address of a memory region.
@param[in] Length The length of memory region @param[in] Length The length of memory region
@param[in] Flush Flush the caches before applying the
encryption mask
@retval RETURN_SUCCESS The attributes were cleared for the @retval RETURN_SUCCESS The attributes were cleared for the
memory region. memory region.
@ -72,8 +70,7 @@ EFIAPI
InternalMemEncryptSevSetMemoryDecrypted ( InternalMemEncryptSevSetMemoryDecrypted (
IN PHYSICAL_ADDRESS Cr3BaseAddress, IN PHYSICAL_ADDRESS Cr3BaseAddress,
IN PHYSICAL_ADDRESS PhysicalAddress, IN PHYSICAL_ADDRESS PhysicalAddress,
IN UINTN Length, IN UINTN Length
IN BOOLEAN Flush
); );
/** /**
@ -85,8 +82,6 @@ InternalMemEncryptSevSetMemoryDecrypted (
@param[in] PhysicalAddress The physical address that is the start @param[in] PhysicalAddress The physical address that is the start
address of a memory region. address of a memory region.
@param[in] Length The length of memory region @param[in] Length The length of memory region
@param[in] Flush Flush the caches before applying the
encryption mask
@retval RETURN_SUCCESS The attributes were set for the memory @retval RETURN_SUCCESS The attributes were set for the memory
region. region.
@ -99,8 +94,7 @@ EFIAPI
InternalMemEncryptSevSetMemoryEncrypted ( InternalMemEncryptSevSetMemoryEncrypted (
IN PHYSICAL_ADDRESS Cr3BaseAddress, IN PHYSICAL_ADDRESS Cr3BaseAddress,
IN PHYSICAL_ADDRESS PhysicalAddress, IN PHYSICAL_ADDRESS PhysicalAddress,
IN UINTN Length, IN UINTN Length
IN BOOLEAN Flush
); );
/** /**

View File

@ -283,8 +283,7 @@ SmmCpuFeaturesSmmRelocationComplete (
Status = MemEncryptSevSetPageEncMask ( Status = MemEncryptSevSetPageEncMask (
0, // Cr3BaseAddress -- use current CR3 0, // Cr3BaseAddress -- use current CR3
MapPagesBase, // BaseAddress MapPagesBase, // BaseAddress
MapPagesCount, // NumPages MapPagesCount // NumPages
TRUE // Flush
); );
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a: MemEncryptSevSetPageEncMask(): %r\n", DEBUG ((DEBUG_ERROR, "%a: MemEncryptSevSetPageEncMask(): %r\n",

View File

@ -72,8 +72,7 @@ AmdSevEsInitialize (
DecryptStatus = MemEncryptSevClearPageEncMask ( DecryptStatus = MemEncryptSevClearPageEncMask (
0, 0,
GhcbBasePa + EFI_PAGES_TO_SIZE (PageCount), GhcbBasePa + EFI_PAGES_TO_SIZE (PageCount),
1, 1
TRUE
); );
ASSERT_RETURN_ERROR (DecryptStatus); ASSERT_RETURN_ERROR (DecryptStatus);
} }