mirror of https://github.com/acidanthera/audk.git
OvmfPkg/BaseMemEncryptSevLib: Maximize Page State Change efficiency
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4654 Similar to the Page State Change optimization added previously, also take into account the possiblity of using the SVSM for PVALIDATE instructions. Conditionally adjust the maximum number of entries based on how many entries the SVSM calling area can support. Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> Cc: Erdem Aktas <erdemaktas@google.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Michael Roth <michael.roth@amd.com> Cc: Min Xu <min.m.xu@intel.com> Acked-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
This commit is contained in:
parent
b505f11f39
commit
18fdffe825
|
@ -18,6 +18,7 @@
|
|||
|
||||
#include <Register/Amd/Ghcb.h>
|
||||
#include <Register/Amd/Msr.h>
|
||||
#include <Register/Amd/Svsm.h>
|
||||
|
||||
#include "SnpPageStateChange.h"
|
||||
|
||||
|
@ -78,6 +79,7 @@ BuildPageStateBuffer (
|
|||
UINTN Index;
|
||||
UINTN IndexMax;
|
||||
UINTN PscIndexMax;
|
||||
UINTN SvsmIndexMax;
|
||||
|
||||
// Clear the page state structure
|
||||
SetMem (Info, InfoSize, 0);
|
||||
|
@ -96,6 +98,11 @@ BuildPageStateBuffer (
|
|||
IndexMax = MIN (IndexMax, PscIndexMax);
|
||||
}
|
||||
|
||||
SvsmIndexMax = (IndexMax / SVSM_PVALIDATE_MAX_ENTRY) * SVSM_PVALIDATE_MAX_ENTRY;
|
||||
if (SvsmIndexMax > 0) {
|
||||
IndexMax = MIN (IndexMax, SvsmIndexMax);
|
||||
}
|
||||
|
||||
//
|
||||
// Populate the page state entry structure
|
||||
//
|
||||
|
|
Loading…
Reference in New Issue