[edk2-devel] [PATCH] UefiCpuPkg/MpInitLib: Allocate a separate SEV-ES AP reset stack area

Lendacky, Thomas thomas.lendacky at amd.com
Fri May 14 14:54:23 UTC 2021


On 5/14/21 8:33 AM, Tom Lendacky wrote:
> On 5/14/21 4:14 AM, Laszlo Ersek wrote:
>> On 05/11/21 22:50, Lendacky, Thomas wrote:
>>> BZ: https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugzilla.tianocore.org%2Fshow_bug.cgi%3Fid%3D3324&data=04%7C01%7Cthomas.lendacky%40amd.com%7C7c28b41e27cc4b9a8b9508d916b8a955%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637565804655837525%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Ixw2PdtFLryJs9KHplJ8bvomtaqjBJF8KuDdWO5ERdw%3D&reserved=0
>>>

...

>>
>>> @@ -220,11 +222,11 @@ GetWakeupBuffer (
>>>          // Need memory under 1MB to be collected here
>>>          //
>>>          WakeupBufferEnd = Hob.ResourceDescriptor->PhysicalStart + Hob.ResourceDescriptor->ResourceLength;
>>> -        if (WakeupBufferEnd > BASE_1MB) {
>>> +        if (WakeupBufferEnd > mWakeupBuffer) {
>>>            //
>>> -          // Wakeup buffer should be under 1MB
>>> +          // Wakeup buffer should be under 1MB and under the previous one
>>>            //
>>> -          WakeupBufferEnd = BASE_1MB;
>>> +          WakeupBufferEnd = mWakeupBuffer;
>>>          }
>>>          while (WakeupBufferEnd > WakeupBufferSize) {
>>>            //
>>
>> (7) Can we use a WakeupBufferLimit helper variable here, and set it like
>> "StartAddress" under (2)?
> 
> Will do.

Actually, WakeupBufferEnd is like a helper variable here, so probably best
to just do:

  if (PcdGetBool (PcdSevEsIsEnabled) &&
      WakeupBufferEnd > mSevEsPeiWakeupBuffer) {
    //
    // SEV-ES Wakeup buffer should be under 1MB and under any previous one
    //
    WakeupBufferEnd = mSevEsPeiWakeupBuffer;
  } else if (WakeupBufferEnd > BASE_1MB) {
    //    
    // Wakeup buffer should be under 1MB
    //    
    WakeupBufferEnd = BASE_1MB;
  }     

which makes for a nice diff:

@@ -220,7 +222,13 @@ GetWakeupBuffer (
         // Need memory under 1MB to be collected here
         //
         WakeupBufferEnd = Hob.ResourceDescriptor->PhysicalStart + Hob.ResourceDescriptor->ResourceLength;
-        if (WakeupBufferEnd > BASE_1MB) {
+        if (PcdGetBool (PcdSevEsIsEnabled) &&
+            WakeupBufferEnd > mSevEsPeiWakeupBuffer) {
+          //
+          // SEV-ES Wakeup buffer should be under 1MB and under any previous one
+          //
+          WakeupBufferEnd = mSevEsPeiWakeupBuffer;
+        } else if (WakeupBufferEnd > BASE_1MB) {
           //
           // Wakeup buffer should be under 1MB
           //

Thanks,
Tom

> 
>>


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#75123): https://edk2.groups.io/g/devel/message/75123
Mute This Topic: https://groups.io/mt/82757192/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-





More information about the edk2-devel-archive mailing list