Pankaj, We understand the use cases. We just don't have a good solution for the spec that is OS, Firmware, and hardware agnostic.
Thanks, Andrew Fish > On Sep 20, 2017, at 7:51 AM, Pankaj Bansal <[email protected]> wrote: > > This use case also arises for single-board systems like raspberry-pi, which > do not have an onboard flash. > The boot firmware/bootloader as well as operating system are loaded from SD > card. > https://www.raspberrypi.org/documentation/configuration/config-txt/ > > Thanks & Regards, > Pankaj Bansal > > -----Original Message----- > From: edk2-devel [mailto:[email protected]] On Behalf Of Andrew > Fish > Sent: Wednesday, September 20, 2017 10:48 AM > To: Udit Kumar <[email protected]> > Cc: [email protected]; Vladimir Olovyannikov > <[email protected]>; [email protected]; Ard Biesheuvel > <[email protected]> > Subject: Re: [edk2] Storing Non volatile variables on SD/NAND > > >> On Sep 19, 2017, at 10:09 PM, Udit Kumar <[email protected]> wrote: >> >>>> On Sep 19, 2017, at 9:27 PM, Udit Kumar <[email protected]> wrote: >>>> >>>> >>>>> On 18 September 2017 at 22:28, Udit Kumar <[email protected]> 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 >>>> [email protected] >>>> https://lists.01.org/mailman/listinfo/edk2-devel > > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

