grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC 0/2] UEFI-based HTTP Boot


From: Michael Chang
Subject: Re: [RFC 0/2] UEFI-based HTTP Boot
Date: Wed, 25 Jan 2017 16:49:53 +0800
User-agent: Mutt/1.5.24 (2015-08-30)

On Wed, Jan 25, 2017 at 11:19:19AM +0300, Andrei Borzenkov wrote:
> On Wed, Jan 25, 2017 at 11:09 AM, Michael Chang <address@hidden> wrote:
> > On Fri, Jan 20, 2017 at 05:50:56PM +0300, Andrei Borzenkov wrote:
> >> On Fri, Jan 20, 2017 at 4:13 AM, Ken Lin <address@hidden> wrote:
> >> > This RFC patchset is stacked on the previous HTTP boot patchset:
> >> > https://lists.gnu.org/archive/html/grub-devel/2016-12/msg00088.html
> >> > It re-uses some code from it, e.g. the DCHPACK
> >> > with vendor_class_identifier=HTTPClient.
> >> >
> >> > Instead of implementing HTTP and HTTPS boot totally from software,
> >> > UEFI firmware already defines APIs for HTTP(s).
> >> > Please check UEFI spec. 2.5 and plus for the detail:
> >> >
> >> > 28.6 EFI HTTP Protocols
> >> >
> >>
> >> Without reviewing patches themselves - we usually prefer to rely on
> >> firmware as little as possible. We already have HTTP support, so what
> >> is missing in grub that requires what amounts to full
> >> re-implementation? Cannot we rather fix our HTTP support instead? This
> >> will automatically benefit all supported platforms, of which EFI is
> >> just one.
> >
> > Nothing wrong in providing firmware based approach in addition to grub's 
> > native
> > stack of getting the similar things done.
> 
> You cannot both shut off all layered protocols on physical adapter and
> makes use of these layered protocols. This will need to implement
> alternative networking stack first.

They don't have to be runtime switch to operate at the same time. Make them
distinct modules, and provid a swith for controlling the image being built. We
already have --native switch in grub2-install to incorporate native disk modules
rather than firmware's.

Thanks,
Michael

> 
> > And there's no prioity for what has
> > to be implemented first imho. Occasionally people would prefer firmware 
> > based
> > stack because they need new features it provides that haven't been worked 
> > out
> > in grub, such as the https or fibre networks, or simply to avoid bug from 
> > grub,
> > like the SNP woes among some UEFI box.
> >
> > Thanks,
> > Michael
> >
> >>
> >> > Then why two implementations? For older UEFI firmwares (UEFI 2.4 and 
> >> > older),
> >> > the HTTP(s) APIs are not available. In the case,
> >> > Grub can fall back to the software-based implementation.
> >> > In the first patch of this patchset, 
> >> > grub-core/net/drivers/efi/efihttp.c:76 to 81
> >> > is the code to query if the HTTP Protocol is supported by the UEFI 
> >> > firmware.
> >> >
> >> > This patchset was tested on QEMU+OVMF and it works flawlessly.
> >> >
> >> > The main goals of this RFC is to ask for opinions and suggestion to make
> >> > the first patch modularized as much as possible.
> >> > In the second patch, there is some codes related TCP re-transmission
> >> > that need to pass by for the HTTP Boot to work.
> >> >
> >> > More details are described in the logs of each patch.
> >> >
> >> >
> >> > Ken Lin (2):
> >> >   net: add efihttp to do HTTP(S) Boot by UEFI HTTP Protocol
> >> >   net: workaround to bypass corruption of the efihttp function pointer
> >> >
> >> >  grub-core/Makefile.core.def         |   1 +
> >> >  grub-core/net/bootp.c               |   6 +
> >> >  grub-core/net/drivers/efi/efihttp.c | 386 
> >> > ++++++++++++++++++++++++++++++++++++
> >> >  grub-core/net/drivers/efi/efinet.c  |   1 +
> >> >  grub-core/net/net.c                 |  39 +++-
> >> >  include/grub/efi/api.h              |  17 ++
> >> >  include/grub/efi/http.h             | 221 +++++++++++++++++++++
> >> >  include/grub/err.h                  |   3 +-
> >> >  include/grub/net.h                  |   1 +
> >> >  9 files changed, 672 insertions(+), 3 deletions(-)
> >> >  create mode 100755 grub-core/net/drivers/efi/efihttp.c
> >> >  create mode 100755 include/grub/efi/http.h
> >> >
> >> > --
> >> > 2.7.4
> >> >
> >> >
> >> > _______________________________________________
> >> > Grub-devel mailing list
> >> > address@hidden
> >> > https://lists.gnu.org/mailman/listinfo/grub-devel
> >>
> >> _______________________________________________
> >> Grub-devel mailing list
> >> address@hidden
> >> https://lists.gnu.org/mailman/listinfo/grub-devel
> >
> > _______________________________________________
> > Grub-devel mailing list
> > address@hidden
> > https://lists.gnu.org/mailman/listinfo/grub-devel
> 
> _______________________________________________
> Grub-devel mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/grub-devel



reply via email to

[Prev in Thread] Current Thread [Next in Thread]