From: Andrew Fish <afish@apple.com>
To: Udit Kumar <udit.kumar@nxp.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>,
"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
Vladimir Olovyannikov <vladimir.olovyannikov@broadcom.com>,
"Olivier.Martin@arm.com" <Olivier.Martin@arm.com>
Subject: Re: Storing Non volatile variables on SD/NAND
Date: Tue, 19 Sep 2017 22:17:51 -0700 [thread overview]
Message-ID: <4CC33CC2-86D1-490E-A67E-12D751745121@apple.com> (raw)
In-Reply-To: <AM6PR0402MB33349302E9FDFEA6E82D6CBC91610@AM6PR0402MB3334.eurprd04.prod.outlook.com>
> On Sep 19, 2017, at 10:09 PM, Udit Kumar <udit.kumar@nxp.com> wrote:
>
>>> On Sep 19, 2017, at 9:27 PM, Udit Kumar <udit.kumar@nxp.com> wrote:
>>>
>>>
>>>> On 18 September 2017 at 22:28, Udit Kumar <udit.kumar@nxp.com> wrote:
>>>>> Thanks Vladimir,
>>>>> With your design, you did delayed write to eMMC due to sharing with
>>>>> OS. But it works for you:) Say if eMMC controllers offers you a
>>>>> status bit, if eMMC storage is being used for not. Then this could
>>>>> be possible to
>>>> update at run time, both OS/UEFI needs to check and wait if
>>>> controller is being used.
>>>>
>>>> That is the problem right there. The nice thing about a firmware spec
>>>> is that you don't have to care about how it was implemented if you adhere to
>> the API rules.
>>>
>>> Yup, we are fine as long as long UEFI firmware is stored on dedicated media.
>>>
>>>> Imposing additional restrictions (such as requiring the OS to be
>>>> careful about not using the eMMC when it may be in use by the
>>>> firmware) defeats the purpose of using UEFI, since you won't be able to use a
>> generic OS anyway.
>>>>
>>>
>>> Hmm, so far, I haven't come across where UEFI specs says, we need a
>>> separate Storage for firmware. (May be I missed some part of specs)
>>> Irrespective of storage media, we have this problem if OS and UEFI
>>> shares same storage.
>>>
>>
>> Udit,
>>
>> Can you point out the spec that states you can't boot Linux and Windows at the
>> same time on a PC? :)
>>
>> When you write a spec it is not practical do document what is not possible, you
>> can only document the API the rest is implied by the implementation. So for
>> example the UEFI spec does not document why the firmware and OS can't share
>> a hardware device, just like you can't have 2 operating systems running on bare
>> metal at the same time. It is a little like Occam's Razor the reason that the
>> firmware and the OS can not share a hardware device is the mechanics of how
>> to share a hardware device is not defined in the spec, thus it is not part of the
>> API and not possible.
>
> Right, This is left on implementation how to put firmware and OS.
> Ideally, keeping both storage separate is best case, no need to sync between two.
>
> My reply to Ard, was to highlight that in any case (NOR or eMMC /NAND)
> if we are keeping OS and firmware on same storage, we will have same
> issue not limited to eMMC.
>
> For some requirement, if we need to keep firmware and OS on same media,
> Then implementation should make sure there is exclusive access (be it
> NOR controller, SD controller etc).
>
Udit,
Sorry I'm a little swamped on my email right now and might be a little behind on the thread....
Yea the only way to realistically Implement an EFI runtime service in UEFI is to have UEFI own the hardware device. There is no architecture for sharing the device, and the type of device is not really relevant.
Thanks,
Andrew Fish
> Thanks
> Udit
>
>> Thanks,
>>
>> Andrew Fish
>>
>>>>> For sure, some synchronization issues need to be ironed out (or
>>>>> maybe I am
>>>> just dreaming here).
>>>>>
>>>>> On part 2) where you forked VariableRuntime driver , could we think
>>>>> of updating VariableRuntime driver, to support non-XIP or memory
>>>>> mapped
>>>> devices.
>>>>>
>>>>
>>>> I think being able to support non-memorymapped FV volumes for the
>>>> variable store would be a big improvement. This does require changes
>>>> to both the FaultTolerantWrite drivers and the VariableRuntime
>>>> drivers, which both appear in PEI, DXE and SMM flavors, and require
>>>> thorough review due to the security impact bugs have in this layer, so this is a
>> rather large chunk of work to take on.
>>>
>>> Thanks, your list is longer than what I was thinking :-) I think, for
>>> embedded world with UEFI, later or sooner, this will be required.
>>>
>>> Thanks
>>> Udit
>>> _______________________________________________
>>> edk2-devel mailing list
>>> edk2-devel@lists.01.org
>>> https://lists.01.org/mailman/listinfo/edk2-devel
next prev parent reply other threads:[~2017-09-20 5:14 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-18 13:52 Storing Non volatile variables on SD/NAND Udit Kumar
2017-09-18 15:43 ` Ard Biesheuvel
2017-09-18 16:52 ` Vladimir Olovyannikov
2017-09-19 5:28 ` Udit Kumar
2017-09-19 16:38 ` Ard Biesheuvel
2017-09-20 4:27 ` Udit Kumar
2017-09-20 4:47 ` Andrew Fish
2017-09-20 5:09 ` Udit Kumar
2017-09-20 5:17 ` Andrew Fish [this message]
2017-09-20 14:51 ` Pankaj Bansal
2017-09-20 17:34 ` Udit Kumar
2017-09-20 17:39 ` Ard Biesheuvel
2017-09-20 17:39 ` Ard Biesheuvel
2017-09-20 17:46 ` Andrew Fish
2017-10-27 9:35 ` Udit Kumar
2017-10-27 9:37 ` Udit Kumar
2017-10-27 13:20 ` Ard Biesheuvel
2017-10-27 17:46 ` Jeremy Linton
2017-10-28 3:09 ` Udit Kumar
2017-10-30 23:10 ` Jeremy Linton
2017-10-31 4:25 ` Udit Kumar
2017-09-20 17:34 ` Andrew Fish
2017-09-18 20:47 ` Jeremy Linton
2017-09-18 20:53 ` Ard Biesheuvel
2017-09-19 5:27 ` Udit Kumar
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=4CC33CC2-86D1-490E-A67E-12D751745121@apple.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