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:
committed by
mergify[bot]
parent
b4a8de5d27
commit
adfa3327d4
@ -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",
|
||||||
|
@ -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
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
@ -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)) {
|
||||||
|
@ -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
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
@ -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
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
@ -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
|
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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",
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user