From: "Zeng, Star" <star.zeng@intel.com>
To: Ard Biesheuvel <ard.biesheuvel@linaro.org>,
Laszlo Ersek <lersek@redhat.com>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
"Gao, Liming" <liming.gao@intel.com>,
"Yao, Jiewen" <Jiewen.Yao@intel.com>,
"Zhang, Chao B" <chao.b.zhang@intel.com>,
"Kinney, Michael D" <michael.d.kinney@intel.com>,
star.zeng@intel.com
Subject: Re: [PATCH] MdeModulePkg/VariableSmmRuntimeDxe: Refactor locating Variable Arch Protocol
Date: Thu, 21 Feb 2019 17:33:05 +0800 [thread overview]
Message-ID: <d283153c-145f-f40a-52d4-0845188b1fe8@intel.com> (raw)
In-Reply-To: <CAKv+Gu-z-w9QzgH1gPT4kA4rXz+bpLNdYyCpjTd1RGbO28mXsQ@mail.gmail.com>
On 2019/2/21 17:11, Ard Biesheuvel wrote:
> On Thu, 21 Feb 2019 at 10:04, Laszlo Ersek <lersek@redhat.com> wrote:
>>
>> On 02/20/19 13:23, Ard Biesheuvel wrote:
>>> On Wed, 20 Feb 2019 at 06:53, Jagadeesh Ujja <jagadeesh.ujja@arm.com> wrote:
>>>>
>>>> hi Ard,
>>>> On Tue, Feb 19, 2019 at 6:55 PM Ard Biesheuvel
>>>> <ard.biesheuvel@linaro.org> wrote:
>>>>>
>>>>> Hello Jagadeesh,
>>>>>
>>>>> On Tue, 19 Feb 2019 at 11:47, Jagadeesh Ujja <jagadeesh.ujja@arm.com> wrote:
>>>>>>
>>>>>> In preparation for providing a standalone MM based non-secure variable
>>>>>> runtime driver, factor out some portions that are specific to the
>>>>>> traditional driver, mainly related to locating variable arch protocol
>>>>>> and variable write arch protocol, which are not required to be located
>>>>>> when using standalone MM based secure variable implementation.
>>>>>>
>>>>>
>>>>> While i think this change is correct from a technical perspective, I
>>>>> don't think this is the right approach.
>>>>>
>>>> these changes are mandatory, this is one of the possible solution.
>>>>
>>>>> It was a deliberate decision to expose the MM services in a way that
>>>>> only the producer of the communication protocol is aware of the
>>>>> implementation details, i.e., whether it is backed by tradtional MM or
>>>>> standalone MM.
>>>>>
>>>> can you please provide more details on how "exposing the MM services"
>>>> will help to resolve the issue here. if this helps, definitely i will use that.
>>>>
>>>
>>> Let me rephrase this for the benefit of the MdeModulePkg maintainers,
>>> and ask them their opinion.
>>>
>>> Currently, the DXE runtime driver that produces the architectural
>>> varstore protocols that are based on communication with MM components
>>> living elsewhere, rely on the EFI protocol database for sequencing.
>>> I.e., after dispatch, they wait for certain protocols to be installed
>>> into the DXE protocol database by the SMM drivers before proceeding to
>>> install the variable arch protocols.
>>>
>>> This does not work for standalone MM, since it has no access to the
>>> DXE protocol database, nor is it needed, since it may be assumed that
>>> the MM execution context is fully configured by the time the DXE phase
>>> starts.
>>>
>>> Jagadeesh's proposal is to factor this out, and create two different
>>> .INFs to build the same DXE runtime driver in two different ways. This
>>> defeats the purpose of having an abstract MM communication protocol,
>>> so it is something I would like to avoid. On the other hand, is it not
>>> obvious how to parameterize this requirement in another way.
>>>
>>> For the moment, I could live with putting this into a library, and
>>> leave it up to the platform to ensure the combination of the library
>>> resolution with the driver that produces the MM communicate protocol
>>> is a sane one.
>>>
>>> Any thoughts?
>>
>> I think I'm missing the gist of the library approach; still, would it be
>> possible for affected platforms (i.e. those that depend on standalone
>> MM) to procude the necessary DXE protocols (for unblocking the variable
>> runtime driver) in a platform DXE driver?
>>
>
> Yes, that is the other option: we could create a library that
> unconditionally produces those protocols and hook it into the MM
> communication driver via NULL library class resolution.
>
I am not familiar with standalone MM, either ARM. So may have no much
valuable opinion.
For this case, standalone MM could not install DXE protocols into DXE
protocol database to notify the wrapper (VariableSmmRuntimeDxe), so need
another way to install the DXE protocols, right?
Could standalone MM assume the MM handler for variable is ready when MM
communication driver runs?
If yes, a NULL library instance should work (as a stub to install the
DXE protocols in its constructor). :)
Thanks,
Star
next prev parent reply other threads:[~2019-02-21 9:33 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-19 10:07 [PATCH] MdeModulePkg/VariableSmmRuntimeDxe: Refactor locating Variable Arch Protocol Jagadeesh Ujja
2019-02-19 13:24 ` Ard Biesheuvel
2019-02-20 5:53 ` Jagadeesh Ujja
2019-02-20 12:23 ` Ard Biesheuvel
2019-02-21 9:04 ` Laszlo Ersek
2019-02-21 9:11 ` Ard Biesheuvel
2019-02-21 9:33 ` Zeng, Star [this message]
2019-02-21 9:45 ` Ard Biesheuvel
2019-02-25 8:17 ` Jagadeesh Ujja
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=d283153c-145f-f40a-52d4-0845188b1fe8@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