When we want to have UEFI and OS accessing same media , 
Possibilities I see 

1- Patch OS For status check of media (diversion from generic OS), Good case 
will be modify low level driver. 
But we may end up some surprises on synchronization.
 
2- no runtime service for OS . I guess this will not be possible

3- Way the  Vladimir implemented for eMMC, This has risk of losing data in case 
of AC power off. 

4- update hardware with dual view (Ard suggestion) 

Thanks to add, if I missed some option here. 

> 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/


Raspberry follow the different boot scheme.  What I think, Linux running on 
Raspberry/ARM is unware of UEFI boot. 

Copied text 
Stage 1 boot is in the on-chip ROM. Loads Stage 2 in the L2 cache
Stage 2 is bootcode.bin. Enables SDRAM and loads Stage 3
Stage 3 is loader.bin. It knows about the .elf format and loads start.elf
Stage 4: start.elf loads kernel.img. It then also reads config.txt, cmdline.txt 
and bcm2835.dtb If the dtb file exists, it is loaded at 0×100 & kernel @ 0×8000 
If disable_commandline_tags is set it loads kernel @ 0×0 Otherwise it loads 
kernel @ 0×8000 and put ATAGS at 0×100
Stage 5: kernel.img is then run on the ARM

I think up to stage 4, we have GPU . 
Here SD is exclusivity used by UEFI or OS. Any corrections ?  
 

Thanks
Udit

> -----Original Message-----
> From: Pankaj Bansal
> Sent: Wednesday, September 20, 2017 8:22 PM
> To: Andrew Fish <[email protected]>; Udit Kumar <[email protected]>; edk2-
> [email protected]
> Cc: Vladimir Olovyannikov <[email protected]>;
> [email protected]; Ard Biesheuvel <[email protected]>
> Subject: RE: [edk2] Storing Non volatile variables on SD/NAND
> 
> 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

Reply via email to