public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Ni, Ruiyu" <ruiyu.ni@Intel.com>
To: Laszlo Ersek <lersek@redhat.com>, edk2-devel@lists.01.org
Cc: Michael Kinney <michael.d.kinney@intel.com>,
	Jiewen Yao <jiewen.yao@intel.com>
Subject: Re: [PATCH] MdeModulePkg/PiSmmIpl: Do not reset SMRAM to UC when CPU driver runs
Date: Tue, 23 Oct 2018 17:21:23 +0800	[thread overview]
Message-ID: <61c42bbb-c446-a342-55b8-94128303e58d@Intel.com> (raw)
In-Reply-To: <c3d1c92b-cb9b-a2be-eebe-cf2e2ac83fe5@redhat.com>

On 10/22/2018 10:30 PM, Laszlo Ersek wrote:
> On 10/22/18 11:03, Ruiyu Ni wrote:
>> Today's PiSmmIpl implementation initially sets SMRAM to WB to speed
>> up the SMM core/modules loading before SMM CPU driver runs.
>> When SMM CPU driver runs, PiSmmIpl resets the SMRAM to UC. It's done
>> in SmmIplDxeDispatchEventNotify(). COMM_BUFFER_SMM_DISPATCH_RESTART
>> is returned from SMM core that SMM CPU driver is just dispatched.
>>
>> Since now the SMRR is widely used to control the SMRAM cache setting.
>> It's not needed to reset the SMRAM to UC anymore.
>>
>> Contributed-under: TianoCore Contribution Agreement 1.1
>> Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
>> Cc: Jiewen Yao <jiewen.yao@intel.com>
>> Cc: Michael Kinney <michael.d.kinney@intel.com>
>> ---
>>   MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c | 13 -------------
>>   1 file changed, 13 deletions(-)
>>
>> diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c
>> index f8cbe1704b..dc0d9a70b0 100644
>> --- a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c
>> +++ b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c
>> @@ -672,19 +672,6 @@ SmmIplDxeDispatchEventNotify (
>>         return;
>>       }
>>   
>> -    //
>> -    // Attempt to reset SMRAM cacheability to UC
>> -    // Assume CPU AP is available at this time
>> -    //
>> -    Status = gDS->SetMemorySpaceAttributes(
>> -                    mSmramCacheBase,
>> -                    mSmramCacheSize,
>> -                    EFI_MEMORY_UC
>> -                    );
>> -    if (EFI_ERROR (Status)) {
>> -      DEBUG ((DEBUG_WARN, "SMM IPL failed to reset SMRAM window to EFI_MEMORY_UC\n"));
>> -    }
>> -
>>       //
>>       // Close all SMRAM ranges to protect SMRAM
>>       //
>>
> 
> I vaguely remember this code from commit b07ea4c198a4 ("MdeModulePkg:
> SmmIplEntry(): don't suppress SMM core startup failure", 2015-05-12). So
> here I'm asking just out of curiosity -- because SMRR is not necessary
> to handle on QEMU/KVM.
> 
> I assume that the original UC setting was part of the SMRAM protection
> that starts at the next line -- the comment is visible in the context,
> saying "Close all SMRAM ranges to protect SMRAM". The commit message
> suggests that explicit SMRR management has now taken that role.
> 
> 
> (1) Can you add more details to the commit message where that explicit
> management happens? I.e., what modules call what library interfaces? I
> believe the relevant APIs are from SmmCpuFeaturesLib.

Yes. SmmCpuFeaturesInitializeProcessor() from SmmCpuFeaturesLib enables 
SMRR

> 
> 
> (2) Also, can you elaborate on "widely"? Does that mean
> 
>    in most edk2 modules for which SMRAM caching is relevant
> 
> or
> 
>    in most edk2-based platform firmware that is shipped in production
> 
> ?

Most (ALL maybe) edk2-based platform firmware that is shipped in production.

> 
> 
> (3) You forgot to mention the bugzilla in the commit message:
> 
>    https://bugzilla.tianocore.org/show_bug.cgi?id=1268
> 
> 
> (4) From commit b07ea4c198a4 that I mention above, it seems that we have
> another instance of this UC setting in the SMM IPL runtime DXE driver;
> namely in the SmmIplEntry() function. Should we remove that too?
> 
> Now, I understand that the situation at that site is different, because
> in that case, we are resetting the cacheability after *failure* to
> launch the SMM Core, so there may have been no chance for any module to
> manage SMRR. And so we have to roll back our own initial WB setting. Do
> I understand that right?

Yes. I don't want to change that piece of code.

> 
> (5) I like that this patch removes a "CPU AP" comment, because the
> comment is misleading. In this context, "CPU AP" means "CPU
> Architectural Protocol" (which underlies
> gDS->SetMemorySpaceAttributes()), and not "Application Processor". It's
> good that the patch removes such a confusing comment.
> 
> However, other potential abuses of the shorthand "CPU AP" remain in the
> code. Would you consider submitting a separate patch that replaces all
> remaining instances of "CPU AP" with "CPU Arch Protocol", in
> "MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c"?

Sure the "AP" also confused me in the beginning. I will post a separate 
patch to change it.

> 
> 
> ... I originally intended to test this patch at once, but given my
> question (4), you might want to modify the code as well, not just the
> commit message, and so I figured I'd postpone the testing until your answer.

Let me check Paul's mail then decide what to do next.

> 
> Thanks!
> Laszlo
> 


-- 
Thanks,
Ray


      parent reply	other threads:[~2018-10-23  9:20 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-22  9:03 [PATCH] MdeModulePkg/PiSmmIpl: Do not reset SMRAM to UC when CPU driver runs Ruiyu Ni
2018-10-22 14:30 ` Laszlo Ersek
2018-10-23  3:12   ` Lohr, Paul A
2018-10-23  9:36     ` Ni, Ruiyu
2018-10-23  9:43       ` Laszlo Ersek
2018-10-29 20:33         ` Lohr, Paul A
2018-10-23  9:21   ` Ni, Ruiyu [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=61c42bbb-c446-a342-55b8-94128303e58d@Intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox